Nasty Item bug
by James Moliere · in Torque 3D Professional · 10/03/2009 (11:26 am) · 27 replies
Hello,
I created a project with the 'Full' template and created the following code below. For a shape I downloaded a coke can -- a collada file from google's shape 3dwarehouse from http://sketchup.google.com/3dwarehouse.
When I ran the code and simply shoot the can, the game locks up.
--------------------------------------------------
datablock ItemData(CanData)
{
shapefile="~/../art/shapes/Tent/models/can.dae";
};
%can = new Item(Can)
{
dataBlock=CanData;
position = "16.8606 14.9146 240.618";
//scale = ".1 .1 .1";
//rotate =true;
//static = false;
//collideable=true;
};
//function Can::onCollision(%this, %obj, %col)
//{
// echo("got collision");
//}
-------------------------------------------------
I created a project with the 'Full' template and created the following code below. For a shape I downloaded a coke can -- a collada file from google's shape 3dwarehouse from http://sketchup.google.com/3dwarehouse.
When I ran the code and simply shoot the can, the game locks up.
--------------------------------------------------
datablock ItemData(CanData)
{
shapefile="~/../art/shapes/Tent/models/can.dae";
};
%can = new Item(Can)
{
dataBlock=CanData;
position = "16.8606 14.9146 240.618";
//scale = ".1 .1 .1";
//rotate =true;
//static = false;
//collideable=true;
};
//function Can::onCollision(%this, %obj, %col)
//{
// echo("got collision");
//}
-------------------------------------------------
#2
Your suggestion implies that I do something like this in the projectile.cpp file...
const U32 Projectile::csmDynamicCollisionMask =
PlayerObjectType |
VehicleObjectType|
ItemObjectType |
DamagableItemObjectType;
... unfortunately the problem didn't go away.
When I pause the process in VC++ I get the following stack display (I added '-' to indicate a new line below)
>- Test5_DEBUG.dll!Convex::getType() Line 195 + 0x12 bytes C++
- Test5_DEBUG.dll!TerrainBlock::buildConvex(const Box3F & box={...}, Convex * convex=0x059304b4) Line 382 + 0xb bytes C++
- Test5_DEBUG.dll!Convex::updateWorkingList(const Box3F & box={...}, const unsigned int colMask=16957484) Line 452 + 0x32 bytes C++
- Test5_DEBUG.dll!Item::updateWorkingCollisionSet(const unsigned int mask=16957484, const float dt=0.032000002) Line 483 C++
- Test5_DEBUG.dll!Item::processTick(const Move * move=0x00000000) Line 380 C++
- Test5_DEBUG.dll!ServerProcessList::onTickObject(ProcessObject * pobj=0x0592ff34) Line 390 C++
- Test5_DEBUG.dll!ProcessList::advanceObjects() Line 234 C++
- Test5_DEBUG.dll!ServerProcessList::advanceObjects() Line 401 C++
- Test5_DEBUG.dll!ProcessList::onAdvanceObjects() Line 103 + 0x19 bytes C++
- Test5_DEBUG.dll!ProcessList::advanceTime(unsigned int timeDelta=98) Line 202 + 0xd bytes C++
- Test5_DEBUG.dll!serverProcess(unsigned int timeDelta=98) Line 222 + 0xe bytes C++
- Test5_DEBUG.dll!processTimeEvent(int elapsedTime=98) Line 114 + 0x9 bytes C++
- Test5_DEBUG.dll!fastdelegate::FastDelegate1<int,void>::InvokeStaticFunction(int p1=98) Line 1021 + 0xe bytes C++
Test5_DEBUG.dll!fastdelegate::FastDelegate1<int,void>::operator()(int p1=98) Line 993 + 0x1a bytes C++
Test5_DEBUG.dll!Signal<void __cdecl(int)>::trigger(int a=98) Line 323 + 0x17 bytes C++
Test5_DEBUG.dll!Journal::Call<Signal<void __cdecl(int)>,int>(Signal<void __cdecl(int)> * obj=0x024830d0, void (int)* method=0x10578d3d, int a=98) Line 541 + 0xa8 bytes C++
Test5_DEBUG.dll!JournaledSignal<void __cdecl(int)>::trigger(int a=98) Line 52 + 0x12 bytes C++
Test5_DEBUG.dll!TimeManager::_updateTime() Line 30 C++
Test5_DEBUG.dll!fastdelegate::FastDelegate0<void>::operator()() Line 908 + 0x16 bytes C++
Test5_DEBUG.dll!Signal<void __cdecl(void)>::trigger() Line 312 + 0x13 bytes C++
Test5_DEBUG.dll!Process::processEvents() Line 62 C++
Test5_DEBUG.dll!StandardMainLoop::doMainLoop() Line 538 + 0x5 bytes C++
Test5_DEBUG.dll!torque_enginetick() Line 78 + 0x5 bytes C++
Test5_DEBUG.dll!TorqueMain(int argc=2, const char * * argv=0x00e70428) Line 369 + 0x5 bytes C++
Test5_DEBUG.dll!torque_winmain(HINSTANCE__ * hInstance=0x00400000, HINSTANCE__ * __formal=0x00000000, char * lpszCmdLine=0x00151f2a, HINSTANCE__ * __formal=0x00000000) Line 423 + 0x17 bytes C++
Test5_DEBUG.exe!WinMain(HINSTANCE__ * hInstance=0x00400000, HINSTANCE__ * hPrevInstance=0x00000000, char * lpszCmdLine=0x00151f2a, int nCommandShow=1) Line 47 + 0x16 bytes C++
Test5_DEBUG.exe!__tmainCRTStartup() Line 324 + 0x35 bytes C
Test5_DEBUG.exe!WinMainCRTStartup() Line 196 C
kernel32.dll!7c817077()
[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]
10/03/2009 (4:58 pm)
Picasso,Your suggestion implies that I do something like this in the projectile.cpp file...
const U32 Projectile::csmDynamicCollisionMask =
PlayerObjectType |
VehicleObjectType|
ItemObjectType |
DamagableItemObjectType;
... unfortunately the problem didn't go away.
When I pause the process in VC++ I get the following stack display (I added '-' to indicate a new line below)
>- Test5_DEBUG.dll!Convex::getType() Line 195 + 0x12 bytes C++
- Test5_DEBUG.dll!TerrainBlock::buildConvex(const Box3F & box={...}, Convex * convex=0x059304b4) Line 382 + 0xb bytes C++
- Test5_DEBUG.dll!Convex::updateWorkingList(const Box3F & box={...}, const unsigned int colMask=16957484) Line 452 + 0x32 bytes C++
- Test5_DEBUG.dll!Item::updateWorkingCollisionSet(const unsigned int mask=16957484, const float dt=0.032000002) Line 483 C++
- Test5_DEBUG.dll!Item::processTick(const Move * move=0x00000000) Line 380 C++
- Test5_DEBUG.dll!ServerProcessList::onTickObject(ProcessObject * pobj=0x0592ff34) Line 390 C++
- Test5_DEBUG.dll!ProcessList::advanceObjects() Line 234 C++
- Test5_DEBUG.dll!ServerProcessList::advanceObjects() Line 401 C++
- Test5_DEBUG.dll!ProcessList::onAdvanceObjects() Line 103 + 0x19 bytes C++
- Test5_DEBUG.dll!ProcessList::advanceTime(unsigned int timeDelta=98) Line 202 + 0xd bytes C++
- Test5_DEBUG.dll!serverProcess(unsigned int timeDelta=98) Line 222 + 0xe bytes C++
- Test5_DEBUG.dll!processTimeEvent(int elapsedTime=98) Line 114 + 0x9 bytes C++
- Test5_DEBUG.dll!fastdelegate::FastDelegate1<int,void>::InvokeStaticFunction(int p1=98) Line 1021 + 0xe bytes C++
Test5_DEBUG.dll!fastdelegate::FastDelegate1<int,void>::operator()(int p1=98) Line 993 + 0x1a bytes C++
Test5_DEBUG.dll!Signal<void __cdecl(int)>::trigger(int a=98) Line 323 + 0x17 bytes C++
Test5_DEBUG.dll!Journal::Call<Signal<void __cdecl(int)>,int>(Signal<void __cdecl(int)> * obj=0x024830d0, void (int)* method=0x10578d3d, int a=98) Line 541 + 0xa8 bytes C++
Test5_DEBUG.dll!JournaledSignal<void __cdecl(int)>::trigger(int a=98) Line 52 + 0x12 bytes C++
Test5_DEBUG.dll!TimeManager::_updateTime() Line 30 C++
Test5_DEBUG.dll!fastdelegate::FastDelegate0<void>::operator()() Line 908 + 0x16 bytes C++
Test5_DEBUG.dll!Signal<void __cdecl(void)>::trigger() Line 312 + 0x13 bytes C++
Test5_DEBUG.dll!Process::processEvents() Line 62 C++
Test5_DEBUG.dll!StandardMainLoop::doMainLoop() Line 538 + 0x5 bytes C++
Test5_DEBUG.dll!torque_enginetick() Line 78 + 0x5 bytes C++
Test5_DEBUG.dll!TorqueMain(int argc=2, const char * * argv=0x00e70428) Line 369 + 0x5 bytes C++
Test5_DEBUG.dll!torque_winmain(HINSTANCE__ * hInstance=0x00400000, HINSTANCE__ * __formal=0x00000000, char * lpszCmdLine=0x00151f2a, HINSTANCE__ * __formal=0x00000000) Line 423 + 0x17 bytes C++
Test5_DEBUG.exe!WinMain(HINSTANCE__ * hInstance=0x00400000, HINSTANCE__ * hPrevInstance=0x00000000, char * lpszCmdLine=0x00151f2a, int nCommandShow=1) Line 47 + 0x16 bytes C++
Test5_DEBUG.exe!__tmainCRTStartup() Line 324 + 0x35 bytes C
Test5_DEBUG.exe!WinMainCRTStartup() Line 196 C
kernel32.dll!7c817077()
[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]
#3
the code gets stuck in an infinite loop within the following code -- I added a 'counter' and 'Con::print' to demonstrate the infinite loop
#include "console/console.h"
...
int counter = 0;
for (CollisionWorkingList* itr = wl.wLink.mNext; itr != &wl; itr = itr->wLink.mNext)
{
counter ++;
if (itr->mConvex->getType() == TerrainConvexType &&
static_cast<TerrainConvex*>(itr->mConvex)->squareId == sid) {
cc = itr->mConvex;
break;
}
Con::printf("counter value: %d, %d, %d", counter, itr->mConvex->getType(), static_cast<TerrainConvex*>(itr->mConvex)->squareId);
}
At this time I don't know how to fix it because I'm still a bit of a noob with Torque.
10/03/2009 (6:58 pm)
To add to the info above, after opening the file terrCollision.cpp and scrolled down to the method 'void TerrainBlock::buildConvex(const Box3F& box,Convex* convex)'the code gets stuck in an infinite loop within the following code -- I added a 'counter' and 'Con::print' to demonstrate the infinite loop
#include "console/console.h"
...
int counter = 0;
for (CollisionWorkingList* itr = wl.wLink.mNext; itr != &wl; itr = itr->wLink.mNext)
{
counter ++;
if (itr->mConvex->getType() == TerrainConvexType &&
static_cast<TerrainConvex*>(itr->mConvex)->squareId == sid) {
cc = itr->mConvex;
break;
}
Con::printf("counter value: %d, %d, %d", counter, itr->mConvex->getType(), static_cast<TerrainConvex*>(itr->mConvex)->squareId);
}
At this time I don't know how to fix it because I'm still a bit of a noob with Torque.
#4
I used HealthKitSmall datablock (health.cs) for it, with scale 10 10 10,because it was too small.
I works for me, i couldn't repruduce the bug.
10/04/2009 (5:37 am)
I downloaded cokecan2.daeI used HealthKitSmall datablock (health.cs) for it, with scale 10 10 10,because it was too small.
I works for me, i couldn't repruduce the bug.
#5
Here is a copy of my project
http://www.molamini.com/torque3d/Test5.zip
My hands are up in the air as to why your project isn't failing. You will need to navigate around some walls to find the large spinning can (can.dae).
James Moliere
10/04/2009 (11:59 pm)
Picasso,Here is a copy of my project
http://www.molamini.com/torque3d/Test5.zip
My hands are up in the air as to why your project isn't failing. You will need to navigate around some walls to find the large spinning can (can.dae).
James Moliere
#6
I created another project named Test6.zip at the URL http://www.molamini.com/torque3d/Test6.zip
...click 'Empty Terrain' (the one with all the sand in the display) and run the code. You should see a car spinning around waiting to be shot. Once shot, the engine should lock up -- spin forever.
To my surprise, the new project's C++ code (in Test6.zip) has some of the code I put into Test5.zip. To clarify what I'm saying, when I create a new project from a 'Full template', the Torque code seems to be clean -- no code from a previous project -- but in C++, the code is not as pristine as I expected. It seems to have incorporated C++ code from my previous project -- I wasn't expecting this at all. I'm now starting to wonder if I had created a 'Full template' from the previous C++ code release. Where is the C++ code for a new project coming from when 'Full template' is selected?
How does one clear the C++ cache where the previous code does not get incorporated into a new project?
10/05/2009 (1:32 am)
Picasso,I created another project named Test6.zip at the URL http://www.molamini.com/torque3d/Test6.zip
...click 'Empty Terrain' (the one with all the sand in the display) and run the code. You should see a car spinning around waiting to be shot. Once shot, the engine should lock up -- spin forever.
To my surprise, the new project's C++ code (in Test6.zip) has some of the code I put into Test5.zip. To clarify what I'm saying, when I create a new project from a 'Full template', the Torque code seems to be clean -- no code from a previous project -- but in C++, the code is not as pristine as I expected. It seems to have incorporated C++ code from my previous project -- I wasn't expecting this at all. I'm now starting to wonder if I had created a 'Full template' from the previous C++ code release. Where is the C++ code for a new project coming from when 'Full template' is selected?
How does one clear the C++ cache where the previous code does not get incorporated into a new project?
#7
I got a clue on how the C++ code is used with Torque3D. Just to make sure, I re-installed Torque3D SDK 1.0. I built the C++ using VS 2005 and ran the 'Empty Terrain'. I had to shoot the car (instead of a can -- it's in the code in Test6.zip) a few times while trying a few different angles and voila, the engine locked up and the CPU hit 100% and nothing happened. You may not see a lockup on the first shot. Try getting closer to the car and shoot -- I had success when shooting the rear-end (at the barycenter) of the car.
James
10/05/2009 (2:42 am)
Picasso,I got a clue on how the C++ code is used with Torque3D. Just to make sure, I re-installed Torque3D SDK 1.0. I built the C++ using VS 2005 and ran the 'Empty Terrain'. I had to shoot the car (instead of a can -- it's in the code in Test6.zip) a few times while trying a few different angles and voila, the engine locked up and the CPU hit 100% and nothing happened. You may not see a lockup on the first shot. Try getting closer to the car and shoot -- I had success when shooting the rear-end (at the barycenter) of the car.
James
#9
1.First one is AABB to AABB collision.
In the item datablock use collideable=false;
2.Abnormal program termination.
It is caused by creating dynamically the item on heap very early.
gameCore.cs
Put this code at the end of
function GameCore::onClientEnterGame(%game, %client)
{ ... }
10/05/2009 (5:43 am)
Two problems:1.First one is AABB to AABB collision.
In the item datablock use collideable=false;
2.Abnormal program termination.
It is caused by creating dynamically the item on heap very early.
%can = new Item(Can)
{
dataBlock=CanData;
position = "16.8606 14.9146 240.618";
//scale = ".1 .1 .1";
rotate =true;
static = false;
collideable=false;
};gameCore.cs
Put this code at the end of
function GameCore::onClientEnterGame(%game, %client)
{ ... }
#10
Is the recommendation in your previous post a solution to the problem? I can repeat the problem even with your suggestions.
James
10/05/2009 (10:45 am)
Picasso,Is the recommendation in your previous post a solution to the problem? I can repeat the problem even with your suggestions.
James
#11
In gameCore.cs use this:
In health.cs replace
shapeFile = "art/shapes/items/patch/healthpatch.dts";
with
shapefile="~/../art/shapes/buggy/buggy.dts";
Now i can not reproduce the bug.
It seems you should possess an oncollision callback.
10/05/2009 (2:14 pm)
Sorry about it,i didn't have enough time for testing,i decided it is solved.In gameCore.cs use this:
%can = new Item(Can)
{
className = "HealthPatch";
dataBlock = HealthKitPatch;
position = "16.8606 14.9146 240.618";
mass = 2;
friction = 1;
elasticity = 0.3;
emap = true;
collideable=true;
};In health.cs replace
shapeFile = "art/shapes/items/patch/healthpatch.dts";
with
shapefile="~/../art/shapes/buggy/buggy.dts";
Now i can not reproduce the bug.
It seems you should possess an oncollision callback.
#12
10/05/2009 (2:19 pm)
This one seems to happen randomly. It's cropped up in a couple situations for a few people here and there (in regards to shooting thrown/dropped items) but I've never been able to reproduce it.
#13
I used the file 'healthpatch.dts' but made all the changes you suggested for the Item object. Unfortunately I'm still able to reproduce the problem.
James
10/05/2009 (5:29 pm)
Picasso,I used the file 'healthpatch.dts' but made all the changes you suggested for the Item object. Unfortunately I'm still able to reproduce the problem.
James
#14
For the folks who can not make the error occur, I wrote the following code change so there will be many items to shoot at.
Replace the following code in
'C:TorqueTorque 3D 2009 SDK 1.0My Projectstest10gamescriptsserver'
-------------------------------
%can = new Item(Can)
{
className = "HealthPatch";
dataBlock = HealthKitPatch;
position = "16.8606 14.9146 240.618";
mass = 2;
friction = 1;
elasticity = 0.3;
emap = true;
collideable=true;
};
-------------------------------------
with ...
File: C:TorqueTorque 3D 2009 SDK 1.0My Projectstest10gamescriptsservergameCore.cs
------------------------------------
for (%i=0;%i<10;%i++)
{
for (%j=0;%j<10;%j++)
{
%x = 16.8606+5*%i;
%y = 14.9146+5*%j;
%str = %x@" "@%y@ " 240.618";
echo (%str);
%can = new Item()
{
className = "HealthPatch";
dataBlock = HealthKitPatch;
//dataBlock=CanData;
// position = "16.8606"*i @" 14.9146"*j @ " 240.618";
position = %str; //"16.8606"*i @" 14.9146"*j @ " 240.618";
//scale = ".1 .1 .1";
rotate =true;
static = false;
collideable=false;
};
}
}
---------------------------------
To use the buggy as a target -- It's much easier to hit, change the shapeFile from healthpatch.dts to buggy.dts in the following file.
change file 'C:TorqueTorque 3D 2009 SDK 1.0My Projects<project name>gameartdatablockshealth.cs'
----------------------------------
datablock ItemData(HealthKitPatch)
{
// Mission editor category, this datablock will show up in the
// specified category under the "shapes" root category.
category = "Health";
className = "HealthPatch";
// Basic Item properties
//shapeFile = "art/shapes/items/patch/healthpatch.dts";
//the buggy is larger and easier to shoot at...
shapefile="~/../art/shapes/buggy/buggy.dts";
mass = 2;
friction = 1;
elasticity = 0.3;
emap = true;
// Dynamic properties defined by the scripts
pickupName = "a health patch";
repairAmount = 50;
};
--------------------------------------------------
...I did have to get close to the cars and shoot them.
10/05/2009 (10:15 pm)
Picasso,For the folks who can not make the error occur, I wrote the following code change so there will be many items to shoot at.
Replace the following code in
'C:TorqueTorque 3D 2009 SDK 1.0My Projectstest10gamescriptsserver'
-------------------------------
%can = new Item(Can)
{
className = "HealthPatch";
dataBlock = HealthKitPatch;
position = "16.8606 14.9146 240.618";
mass = 2;
friction = 1;
elasticity = 0.3;
emap = true;
collideable=true;
};
-------------------------------------
with ...
File: C:TorqueTorque 3D 2009 SDK 1.0My Projectstest10gamescriptsservergameCore.cs
------------------------------------
for (%i=0;%i<10;%i++)
{
for (%j=0;%j<10;%j++)
{
%x = 16.8606+5*%i;
%y = 14.9146+5*%j;
%str = %x@" "@%y@ " 240.618";
echo (%str);
%can = new Item()
{
className = "HealthPatch";
dataBlock = HealthKitPatch;
//dataBlock=CanData;
// position = "16.8606"*i @" 14.9146"*j @ " 240.618";
position = %str; //"16.8606"*i @" 14.9146"*j @ " 240.618";
//scale = ".1 .1 .1";
rotate =true;
static = false;
collideable=false;
};
}
}
---------------------------------
To use the buggy as a target -- It's much easier to hit, change the shapeFile from healthpatch.dts to buggy.dts in the following file.
change file 'C:TorqueTorque 3D 2009 SDK 1.0My Projects<project name>gameartdatablockshealth.cs'
----------------------------------
datablock ItemData(HealthKitPatch)
{
// Mission editor category, this datablock will show up in the
// specified category under the "shapes" root category.
category = "Health";
className = "HealthPatch";
// Basic Item properties
//shapeFile = "art/shapes/items/patch/healthpatch.dts";
//the buggy is larger and easier to shoot at...
shapefile="~/../art/shapes/buggy/buggy.dts";
mass = 2;
friction = 1;
elasticity = 0.3;
emap = true;
// Dynamic properties defined by the scripts
pickupName = "a health patch";
repairAmount = 50;
};
--------------------------------------------------
...I did have to get close to the cars and shoot them.
#15
10/06/2009 (2:02 pm)
I really hope this bug is fairly high priority. I could never release a game knowing this bug is looming.
#16
First of all don't use complex objects (complex hierarchy) for items.
Instead do simple objects setup,according to the documentation for item uses.
For instance : base,start1,..... simple hierarchies.
Second - the real problem:
I managed to produce it just like you did.
It is due to the swept box/box test.
In other words if you generate a lot of items,you should care to distance their AABB dynamic boxes each other.
It is not a bug itself, it is how swept collision works.
When i replaced your models with mine ... all problems went out.
So in your case do it with a working item object.
Then take care each of them is at decent distance.
If you want them to be close each other,it will require another logical algorithm.
10/06/2009 (3:30 pm)
James,let me explain the problem:First of all don't use complex objects (complex hierarchy) for items.
Instead do simple objects setup,according to the documentation for item uses.
For instance : base,start1,..... simple hierarchies.
Second - the real problem:
I managed to produce it just like you did.
It is due to the swept box/box test.
In other words if you generate a lot of items,you should care to distance their AABB dynamic boxes each other.
It is not a bug itself, it is how swept collision works.
When i replaced your models with mine ... all problems went out.
So in your case do it with a working item object.
Then take care each of them is at decent distance.
If you want them to be close each other,it will require another logical algorithm.
#17
Can you provide a link to where you said,
"Instead do simple objects setup,according to the documentation for item uses."
...I'm having a real disappointment with the Torque3D documentation. It's as if TorqueScript is the least important component of the whole program. I have spent hours trying to find a reference to Torque Objects to see what properties they have and their heirarchy only to find stuff for TGEA or TGE -- which may not be up to date.
Which model works for you? I have not seen a model successfully pass. The healthpatch.dts file failed just as well as anything else. If you can't publish a working model, e-mail me a copy to my personal e-mail address.
Thanks!
James
10/06/2009 (3:50 pm)
Picasso,Can you provide a link to where you said,
"Instead do simple objects setup,according to the documentation for item uses."
...I'm having a real disappointment with the Torque3D documentation. It's as if TorqueScript is the least important component of the whole program. I have spent hours trying to find a reference to Torque Objects to see what properties they have and their heirarchy only to find stuff for TGEA or TGE -- which may not be up to date.
Which model works for you? I have not seen a model successfully pass. The healthpatch.dts file failed just as well as anything else. If you can't publish a working model, e-mail me a copy to my personal e-mail address.
Thanks!
James
#18
docs.garagegames.com/artist/official/3D%20Studio%20Max/Reference.html
Also the TGEA and TGE documentations are up to date. Old models that were created five years ago and more are still recognized and working in T3D.
T3D is just some kind more powerful than TGEA and TGE because it gives one more method to get your models in it (via COLLADA).
So I told you... get a simple shape, do items with it , delimit them so that there is some distance between them and engine will stop to crash.
P.S. I believe you can make a sample object yourself easily. If you can't give your e-mail and I will do one for you.
10/06/2009 (4:02 pm)
In fact I can't send you any of my objects but this link to the artist's documentation must help you do one like a simple teapot yourselfdocs.garagegames.com/artist/official/3D%20Studio%20Max/Reference.html
Also the TGEA and TGE documentations are up to date. Old models that were created five years ago and more are still recognized and working in T3D.
T3D is just some kind more powerful than TGEA and TGE because it gives one more method to get your models in it (via COLLADA).
So I told you... get a simple shape, do items with it , delimit them so that there is some distance between them and engine will stop to crash.
P.S. I believe you can make a sample object yourself easily. If you can't give your e-mail and I will do one for you.
#19
Thanks for the link.
I never tried this with simple cubes or spheres. I'll try them tonight.
Thanks for helping me on this. I'll certainly let this post know if I get a failure.
James
10/06/2009 (4:15 pm)
Picasso,Thanks for the link.
I never tried this with simple cubes or spheres. I'll try them tonight.
Thanks for helping me on this. I'll certainly let this post know if I get a failure.
James
#20
To solve this you can simply change some values of the variables in the ProjectileData of your weapon. In rocketLauncher.cs :
So you will need to prevent all the items from being shot and the best place to do it eliminate item collision with projectiles and don't apply any impulses on items in code.
10/06/2009 (4:40 pm)
By the way I found something interesting. I am talking about the strange engine slowdown when you shoot at items. It is not a crash , but slowdown. If you wait a few seconds it will repair. Anyway it is due to the impulse that the projectile applies to the item. All this stuff requires a complex calculation to produce the physics of the shot item.To solve this you can simply change some values of the variables in the ProjectileData of your weapon. In rocketLauncher.cs :
directDamage = 1; //30 by default radiusDamage = 1; //30 by default damageRadius = 1; //5 by default areaImpulse = 1; //2500 by defaultThis will lead to another problem with your game at all because almost nobody will get shot :)))
So you will need to prevent all the items from being shot and the best place to do it eliminate item collision with projectiles and don't apply any impulses on items in code.
Torque Owner Ivan Mandzhukov
Liman3D