yuriythebest
25-08-2008 21:18:51
yuriythebest
25-08-2008 21:18:51
walaber
26-08-2008 01:37:59
yuriythebest
26-08-2008 02:02:02
only call init() once, when the scene is created... then just call drawLines() each frame.
yuriythebest
26-08-2008 18:42:50
yuriythebest
27-08-2008 02:48:40
#include "ogreNewttest2.h"
#include "ExampleFrameListener.h"
#include <OgreNewt.h>
OgreNewt::BasicFrameListener;
//-------------------------------------------------------------------------------------
ogreNewttest2App::ogreNewttest2App(void)
{
mWorld = new OgreNewt::World();
}
//-------------------------------------------------------------------------------------
ogreNewttest2App::~ogreNewttest2App(void)
{
delete mWorld;
}
//-------------------------------------------------------------------------------------
void ogreNewttest2App::createScene(void)
{
// Set ambient light
mSceneMgr->setAmbientLight(ColourValue(0.5, 0.5, 0.5));
// Create a light
Light* l = mSceneMgr->createLight("MainLight");
l->setPosition(20,80,50);
mCamera->setPosition(0,0,20);
SceneNode* node = mSceneMgr->getRootSceneNode()->createChildSceneNode();
Entity* ent = mSceneMgr->createEntity("terrain", "terrain.mesh" );
node->attachObject( ent );
ent->setMaterialName("terrainMaterial123");
OgreNewt::Collision* col;
// rigid body.
col = new OgreNewt::CollisionPrimitives::ConvexHull(mWorld, node);
OgreNewt::Body* bod = new OgreNewt::Body( mWorld, col );
bod->attachToNode( node );
Ogre::Vector3 size(10.0,1.0,10.0);
// CYLINDER BODY
// cylinder with a radius of 0.5, height of 1.3
size = Ogre::Vector3( 1.3, 0.5, 0.5 );
node = mSceneMgr->getRootSceneNode()->createChildSceneNode();
ent = mSceneMgr->createEntity("cylinder_body", "cylinder.mesh" );
node->attachObject( ent );
node->setScale( size );
// rigid body.
col = new OgreNewt::CollisionPrimitives::Cylinder( mWorld, 0.5, 1.3 );
bod = new OgreNewt::Body( mWorld, col );
bod->attachToNode( node );
Ogre::Real mass = 10.0;
Ogre::Vector3 inertia = OgreNewt::MomentOfInertia::CalcCylinderSolid( mass, 0.5, 1.3 );
bod->setMassMatrix( mass, inertia );
// initial position
bod->setPositionOrientation( Ogre::Vector3(-2,30,2), Ogre::Quaternion::IDENTITY );
delete col;
bod->setStandardForceCallback();
OgreNewt::Debugger::getSingleton().init(mSceneMgr);
OgreNewt::Debugger::getSingleton().showLines(mWorld);
}
void ogreNewttest2App::createFrameListener()
{
mFrameListener = new ExampleFrameListener( mWindow, mCamera );
mRoot->addFrameListener( mFrameListener );
mOgreNewtListener = new OgreNewt::BasicFrameListener( mWindow, mSceneMgr, mWorld, 120 );
mRoot->addFrameListener( mOgreNewtListener );
}
bool ogreNewttest2App::frameStarted(const FrameEvent& evt){
OgreNewt::Debugger::getSingleton().showLines(mWorld);
return BaseApplication::frameStarted(evt);
}
yuriythebest
27-08-2008 02:52:23