Anyway... Id REALLY like to get my PLIB client going here, but I spent
like 3 weeks just to get the animations working, and the current way I
do it looks like a workaround to me...
Now, I have bad crashes happening on a regular bases, and I know it has
to do with refcount.
Basicly, I call a removeKid in my Objects destructor (cause the object
has an ssgSelector node attached to it) and I get a crash.
Here it is:
_free_dbg_lk(void * 0x05dfc300, int 1) line 1066 + 60 bytes
_free_dbg(void * 0x05dfc300, int 1) line 1001 + 13 bytes
free(void * 0x05dfc300) line 956 + 11 bytes
operator delete(void * 0x05dfc300) line 7 + 9 bytes
3DCLIENTD! ssgSelector::~ssgSelector(void) + 78 bytes
3DCLIENTD! ssgSelector::`vector deleting destructor'(unsigned int) + 22
bytes
3DCLIENTD! ssgDeRefDelete(class ssgBase *) + 89 bytes
3DCLIENTD! ssgKidList::removeEntity(unsigned int) + 84 bytes
3DCLIENTD! ssgKidList::removeEntity(class ssgEntity *) + 41 bytes
3DCLIENTD! ssgBranch::removeKid(class ssgEntity *) + 41 bytes
3DCLIENTD! ssgBranch::removeAllKids(void) + 54 bytes
3DCLIENTD! ssgBranch::~ssgBranch(void) + 59 bytes
3DCLIENTD! ssgBranch::`vector deleting destructor'(unsigned int) + 22
bytes
3DCLIENTD! ssgDeRefDelete(class ssgBase *) + 89 bytes
3DCLIENTD! ssgKidList::removeEntity(unsigned int) + 84 bytes
3DCLIENTD! ssgKidList::removeEntity(class ssgEntity *) + 41 bytes
3DCLIENTD! ssgBranch::removeKid(class ssgEntity *) + 41 bytes
3DCLIENTD! ssgBranch::removeAllKids(void) + 54 bytes
3DCLIENTD! ssgBranch::~ssgBranch(void) + 59 bytes
3DCLIENTD! ssgSelector::~ssgSelector(void) + 96 bytes
3DCLIENTD! ssgSelector::`vector deleting destructor'(unsigned int) + 22
bytes
3DCLIENTD! ssgDeRefDelete(class ssgBase *) + 89 bytes
3DCLIENTD! ssgKidList::removeEntity(unsigned int) + 84 bytes
3DCLIENTD! ssgKidList::removeEntity(class ssgEntity *) + 41 bytes
3DCLIENTD! ssgBranch::removeKid(class ssgEntity *) + 41 bytes
3DCLIENTD! ssgBranch::removeAllKids(void) + 54 bytes
3DCLIENTD! ssgBranch::~ssgBranch(void) + 59 bytes
3DCLIENTD! ssgBaseTransform::~ssgBaseTransform(void) + 31 bytes
3DCLIENTD! ssgTransform::~ssgTransform(void) + 31 bytes
3DCLIENTD! ssgTransform::`scalar deleting destructor'(unsigned int) + 22
bytes
3DCLIENTD! ssgDeRefDelete(class ssgBase *) + 89 bytes
3DCLIENTD! ssgKidList::removeEntity(unsigned int) + 84 bytes
3DCLIENTD! ssgKidList::removeEntity(class ssgEntity *) + 41 bytes
3DCLIENTD! ssgBranch::removeKid(class ssgEntity *) + 41 bytes
PLibObject::~PLibObject() line 108
The code for the destructor:
if (m_Anim)
renderer->scene->removeKid (m_Anim);
scene is valid, m_Anim is valid.
I see no reason for it to crash, anyway. Also, I dont get why its
starting to delete stuff down the row. On loading the model I ref()
every object one time so it doesnt get deleted, and then I finally clone
the ssgSelector that I get from the ASE loader. Somehow, the cloning
seems to be a real problem child. I did already fix a few bugs in my
code, where cloning just didnt work.
And as the documentation for PLIB is virtually non existant, I am having
real problems finding solutions on my own....
If anyone can tell, I am a little bit in a bad mood right now, having
spent another 5 hours of my life inside the PLIB source code, not
finding what I was looking for anyway. :)
Anyway, the fire particle system also doesnt work. I copied it straight
over to my code, and it doesnt work in the best case, and in the worst
case it crashes instantly. I have no clue why this could happen, or what
I could be doing wrong, and I didnt find any API or docs about it
either... HELP!
Ralf Pietersz
|