I have read all the topics about remove() drop() and meshcache but I could not find the best way in my
projects on which I am working on. I have got one FILE.3ds and I wanna make an instance or something like
'checkpoints' ( when I go through FILE.3ds it disappear from the scene ). I want to display some ( about
10-15 objects 3D into my scene from FILE.3ds. I don't want to do somethnig like this :
Code: Select all
scene::IAnimatedMesh* deer = smgr->getMesh("media/FILE.3ds");
scene::IAnimatedMesh* deer1 = smgr->getMesh("media/FILE1.3ds");
scene::IAnimatedMesh* deer2 = smgr->getMesh("media/FILE2.3ds");
ISceneNode* node_deer; // = {0};The code below let me go to check if my camera's positionis near the object 3D :
Code: Select all
bool zone(vector3df& pos, float size, ICameraSceneNode* cam, ISceneNode* node_deer) // y=0
{
const core::vector3df& kamera = cam->getPosition();
if ( abs_(kamera.X-pos.X)<size && abs_(kamera.Z-pos.Z)<size )
{
node_deer->remove();
//node_deer->setVisible(); // ?????????????????
return true;
}
else return false;
}
(... part of the code ...)
Code: Select all
scene::IAnimatedMesh* deer = smgr->getMesh("media/FILE.3ds");
ISceneNode* node_deer = 0;
if (deer)
{
node_deer=smgr->addMeshSceneNode(deer->getMesh(0));
node_deer->setScale(vector3df(4,4,4));
node_deer->setPosition(core::vector3df(100,5,2000));
/* should I setID ? to each node_deer ?? */
// node_deer->getID();
// node_deer->drop();
}
Code: Select all
bool zone(vector3df& pos, float size, ICameraSceneNode* cam, ISceneNode* node_deer)Code: Select all
while(intro->run() && fin1==false)
{
if (intro->isWindowActive())
{
driver->beginScene(true, true, video::SColor(0,0,0,0));
smgr->drawAll();
zone(vector3df(100,5,2000),1,camera,node_deer);
env->drawAll();
driver->endScene();
}
}Professional ) shows me that stack of node_deer is corupted and suggest me to look on the return 0; on
the last code line. I tried something like these examples below :
Code: Select all
scene::IAnimatedMesh* deer = smgr->getMesh("media/FILE1.3ds");
ISceneNode* node_deer[3];
if (deer)
{
node_deer[1]=smgr->addMeshSceneNode(deer->getMesh(0));
node_deer[1]->setScale(vector3df(4,4,4));
node_deer[1]->setPosition(core::vector3df(40,5,2000));
}Code: Select all
for (int i=0; i<=3; ++i);
node_deer[i]->remove();as I wrote above.
I really appreciate your help

