ClementM
03-02-2009 13:08:14
--------------See my last post----------------
hi,
I'am a beginner with NxOgre, and i try to put addForce to a body, but my body don't move...
This is my code:
I don't know why there is not effect...
Please help me
Thanks a lot
hi,
I'am a beginner with NxOgre, and i try to put addForce to a body, but my body don't move...
This is my code:
#include "..\include\Tutoriel1App.h"
class MonCallback: public GroupCallback::InheritedCallback {
public:
void onStartTouch(Actor* Actor1, Actor* Actor2, ContactStream* cs) {
//MessageBox( NULL, "-= Entered onStartTouch Callback! =-","", MB_OK | MB_ICONERROR | MB_TASKMODAL);
}
void onEndTouch(Actor* Actor1, Actor* Actor2, ContactStream* cs) {
MessageBox( NULL, "-= Entered onEndTouch Callback! =-","", MB_OK | MB_ICONERROR | MB_TASKMODAL);
if (Actor2->getName() == "Cube2_body") {
//Actor2->addForce(Vector3(0,NxMath::rand(500,1000),0));
Actor2->addTorque(0,1,0);
}
}
void onTouch(Actor* Actor1, Actor* Actor2, ContactStream* cs) {
//MessageBox( NULL, "-= Entered onTouch Callback! =-","", MB_OK | MB_ICONERROR | MB_TASKMODAL);
}
};
Tutoriel1App::Tutoriel1App(void)
{
}
Tutoriel1App::~Tutoriel1App(void)
{
}
bool Tutoriel1App::frameStarted(const FrameEvent &evt)
{
}
bool Tutoriel1App::frameEnded(const FrameEvent &evt)
{
}
void Tutoriel1App::createScene(void)
{
//Light
mSceneMgr->setAmbientLight(ColourValue(1.0f,1.0f,1.0f));
light = mSceneMgr->createLight( "Light1" );
light->setType( Light::LT_SPOTLIGHT);
light->setPosition( Ogre::Vector3(0,620,0));
light->setDiffuseColour( 1.0, 1.0, 1.0 );
light->setSpecularColour( 1.0, 1.0, 1.0 );
mSceneMgr->setShadowTechnique(SHADOWTYPE_STENCIL_ADDITIVE) ;
mSceneMgr->setShadowColour(ColourValue(0, 0, 0));
//Camera
mCamera->setPosition(0,0,500);
mCamera->pitch(Degree(15));
//NxOgre
World* mWorld = new NxOgre::World("FrameListener: Yes, time-controller:ogre, log: none");
Scene* mScene=mWorld->createScene("My Scene",mSceneMgr,"gravity: yes, floor: yes, controller: accumulator, renderer: ogre");
mScene->setGravity(Vector3(0,-100,0));
NxOgre::ActorGroup * mJaune;
NxOgre::ActorGroup * mVert;
NxOgre::ActorGroup * mPlan;
//Creation des ActorGroupes
mJaune=mScene->createActorGroup("jaune");
mVert=mScene->createActorGroup("vert");
mPlan=mScene->createActorGroup("plan");
//Parametres
ActorParams mParams;
//Cube jaune Ogre
c = new Cube(100,100,100);
ent1 = mSceneMgr->createEntity("Cube1_entity","cube.mesh");
node1 = mSceneMgr->getRootSceneNode()->createChildSceneNode("Cube1_Node");
ent1->setMaterialName("Template/yellow");
node1->attachObject(ent1);
node1->rotate(Ogre::Vector3(1,1,1),Ogre::Radian(45));
NodeRenderableParams nrp1;
nrp1.setToDefault();
nrp1.mIdentifierUsage = NxOgre::NodeRenderableParams::IU_Use;
nrp1.mIdentifier = node1->getName();
mParams.mMass = 100;
mParams.mGroupAsName = "jaune";
NxOgre::Body * body_jaune = mScene->createBody("Cube1_body",c,NxOgre::Pose(NxOgre::float3(50,250,0)),nrp1,mParams);
//Cube vert Ogre
c = new Cube(100,100,100);
ent2 = mSceneMgr->createEntity("Cube2_entity","cube.mesh");
node2 = mSceneMgr->getRootSceneNode()->createChildSceneNode("Cube2_Node");
ent2->setMaterialName("Template/green");
node2->attachObject(ent2);
nrp1.setToDefault();
nrp1.mIdentifierUsage = NxOgre::NodeRenderableParams::IU_Use;
nrp1.mIdentifier = node2->getName();
mParams.mMass = 0;
mParams.mGroupAsName = "vert";
NxOgre::Body * body_vert = mScene->createBody("Cube2_body",c,NxOgre::Pose(NxOgre::float3(-20,0,0)),nrp1,mParams);
//Callback
MonCallback * mCallback = new MonCallback();
mPlan->setCallback(mCallback);
mJaune->setCallback(mCallback);
mJaune->setCollisionCallback(mVert, NX_NOTIFY_ALL, true);
mPlan->setCollisionCallback(mJaune, NX_NOTIFY_ALL, true);
}
I don't know why there is not effect...
Please help me
Thanks a lot