Sorry for the delay in continuing with that discussion, I wait for qe they are still willing the they help me..
well... this problem is something sinister, I am working in a small game, using the engine Irrlicht and in the following codeline the error appear:
#include <windows.h>
#define sleep(x) Sleep(1 * (x))
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "irrlicht.h"
#pragma comment(lib, "Irrlicht.lib")
using namespace irr;
using namespace core;
using namespace scene;
using namespace video;
using namespace io;
using namespace gui;
namespce Cente
{
class FluxoProg
{
...
}
namespace Cente3D
{
//colisão
ITriangleSelector* seletor;
...
class AtorLocal : public Cente::FluxoProg
{
public:
AtorLocal(const wchar_t* nome, bool sexo, int altura, IrrlichtDevice* dispositivo,
ISceneManager* gerCena) : zdirection(0),ydirection(0)
{
disp=dispositivo;
cena=gerCena;
nodo=0;
camDist=164.0f;
//inicia variaveis
tam=0.5f;
tamInicial=tam;
if(!sexo)
{
ator=gerCena->getMesh("media/mulherTex2.X");
}
else
{
ator=gerCena->getMesh("media/homem.X");
}
if(ator)
{
nodo=gerCena->addAnimatedMeshSceneNode(ator);
nodo->setID((s32)ProgRede::idCliLocal);
nodo->setPosition(vector3df(50.0f, 50.0f, 1000.0f));
nodo->setName(nome);
//animação
/* nodo->setAnimationSpeed(4);
nodo->setLoopMode(true);
nodo->setFrameLoop();
*/
//aparencia e textura
nodo->setMaterialType(EMT_TRANSPARENT_ALPHA_CHANNEL);
if(altura==1)//estatura pequena
{
tam-=0.1f;
tam=tamInicial*tam/tamInicial;
nodo->setScale(vector3df(tam,tam,tam));
}
if(altura==2)//estatura normal
{
nodo->setScale(vector3df(tam,tam,tam));
}
if(altura==3)//estatura alta
{
tam+=0.1f;
tam=tamInicial*tam/tamInicial;//0.5*0.6/0.5
nodo->setScale(vector3df(tam,tam,tam));
}
}
aabbox3d<f32> box=nodo->getBoundingBox();
vector3df raio=box.MaxEdge-box.getCenter();
visaoNodo=gerCena->addTestSceneNode(10.0f);
visaoNodo->setName(L"cubo");
visaoNodo->setPosition(vector3df(0.0f, 0.0f, 10.0f));
cameraNodo1P=gerCena->addCameraSceneNode(nodo, vector3df(nodo->getPosition().X-20.0f,
nodo->getPosition().Y+180.0f*tam/tamInicial,
nodo->getPosition().Z));
cameraNodo1P->setFOV(90.0f*180.0f/GRAD_PI2);
cameraNodo=gerCena->addCameraSceneNode(0);
cameraNodo->setFOV(90.0f*180.0f/GRAD_PI2);
//colisao
seletorAtor=seletor;
ISceneNodeAnimator* nodoAnim = cena->createCollisionResponseAnimator(seletorAtor, nodo,
vector3df(raio.X,
raio.Y,
raio.Z),
vector3df(0.0f,-1.0f,0.0f),
vector3df(0.0f,-raio.Y,0.0f));
nodo->addAnimator(nodoAnim);
nodoAnim->drop();
ISceneNodeAnimator* cameraAnim = cena->createCollisionResponseAnimator(seletorAtor, cameraNodo,
vector3df(3,3,3),
vector3df(0,0,0),
vector3df(0,0,0));
cameraNodo->addAnimator(cameraAnim);
cameraAnim->drop();
}
private:
IAnimatedMesh* ator;
ICameraSceneNode* cameraNodo;
ICameraSceneNode* cameraNodo1P;
ISceneManager* cena;
IrrlichtDevice* disp;
ISceneNodeAnimator* cameraAnim;
ISceneNodeAnimator* nodoAnim;
ISceneNode* nodo;
ISceneNode* visaoNodo;
ISceneNode* selectedSceneNode;
ISceneNode* lastSelectedSceneNode;
ITriangleSelector* seletorAtor;
float tam,
tamInicial,
zdirection,
ydirection,
camDist;
...
}
...
...
...
class MapaCtrl : public FluxoProg
{
public:
MapaCtrl(const c8* nivel, const c8* pacote, const c8* caminho, ISceneManager* cena,
IrrlichtDevice* dispositivo, IVideoDriver* vDriver)
{
gerCena=cena;
disp=dispositivo;
driver=vDriver;
seletor=0;
nivelNodo = 0;
if (pacote!="")
{
char caminhoPacote[1024];
strcpy(caminhoPacote, caminho);
strcat(caminhoPacote, pacote);
dispositivo->getFileSystem()->addZipFileArchive(caminhoPacote);
nivelMalha = cena->getMesh(nivel);
if (nivelMalha)
{
nivelNodo = cena->addOctTreeSceneNode(nivelMalha->getMesh(0));
nivelNodo->setScale(vector3df(10,10,10));
nivelNodo->setPosition(core::vector3df(0.0f,-9000.0f,0.0f));
nivelNodo->setName(L"cenario");
}
//colisão
seletorMapa = cena->createOctTreeTriangleSelector(nivelMalha->getMesh(0), nivelNodo, 128); //the chash is in that line!!!
nivelNodo->setTriangleSelector(seletorMapa);
seletorMapa->drop();
seletor=seletorMapa;
cena->addLightSceneNode(0, core::vector3df(-60,100,400),
video::SColorf(1.0f,1.0f,1.0f,1.0f), 600.0f);
cena->addLightSceneNode(0, core::vector3df(60,100,-400),
video::SColorf(1.0f,1.0f,1.0f,1.0f), 600.0f);
};
~MapaCtrl()
{
};
private:
ISceneManager* gerCena;
IrrlichtDevice* disp;
IVideoDriver* driver;
ISceneNode* nivelNodo;
IAnimatedMesh* nivelMalha;
ITriangleSelector* seletorMapa;
...
};
}// namespace Cente3D
}//namespace Cente