OSDN Git Service

Fixes
authorryan <>
Thu, 25 Nov 2010 06:55:00 +0000 (06:55 +0000)
committerryan <>
Thu, 25 Nov 2010 06:55:00 +0000 (06:55 +0000)
ogrebullet/Collisions/src/OgreBulletCollisionsObject.cpp
ogrebullet/Dynamics/src/OgreBulletDynamicsRigidBody.cpp
src/sbs/camera.cpp
src/sbs/mesh.cpp
src/sbs/sbs.cpp

index aba1f21..60e34b1 100644 (file)
@@ -69,8 +69,8 @@ namespace OgreBulletCollisions
         if (mRootNode)
         {
             showDebugShape(false);
-            //mShapeNode->detachObject (this);
-            //mRootNode->removeAndDestroyChild (mShapeNode->getName ());
+            mShapeNode->detachObject (this);
+            mRootNode->removeAndDestroyChild (mShapeNode->getName ());
             //mRootNode->getParentSceneNode ()->removeAndDestroyChild (mRootNode->getName ());
         }
 
@@ -138,8 +138,8 @@ namespace OgreBulletCollisions
         mShape = shape;
 
         mRootNode = mWorld->getSceneManager()->getRootSceneNode()->createChildSceneNode(mName);
-        //mShapeNode = mRootNode->createChildSceneNode(mName + "Shape");
-        //mShapeNode->attachObject(this);
+        mShapeNode = mRootNode->createChildSceneNode(mName + "Shape");
+        mShapeNode->attachObject(this);
 
         mObject->setCollisionShape(shape->getBulletShape());
         showDebugShape(mWorld->getShowDebugShapes()); 
index ce41c25..c1a31e6 100644 (file)
@@ -68,8 +68,8 @@ namespace OgreBulletDynamics
         mState = new ObjectState(this);
 
         mRootNode = node;
-        //mShapeNode = mRootNode->createChildSceneNode(mName + "Node");
-        //mShapeNode->attachObject(this);
+        mShapeNode = mRootNode->createChildSceneNode(mName + "Node");
+        mShapeNode->attachObject(this);
 
         mShape = shape;
         showDebugShape(mWorld->getShowDebugShapes());
@@ -98,8 +98,8 @@ namespace OgreBulletDynamics
 
         mRootNode = node;
 
-        //mShapeNode = mRootNode->createChildSceneNode(mName + "Node");
-        //mShapeNode->attachObject(this);
+        mShapeNode = mRootNode->createChildSceneNode(mName + "Node");
+        mShapeNode->attachObject(this);
 
         mShape = shape;
         showDebugShape(mWorld->getShowDebugShapes());
index 6d5ef39..5aa7820 100644 (file)
@@ -107,9 +107,8 @@ Camera::Camera(Ogre::Camera *camera)
        mShape = new OgreBulletCollisions::BoxCollisionShape(bounds);
        mBody = new OgreBulletDynamics::RigidBody("Camera", sbs->mWorld);
        mBody->setShape(CameraNode, mShape, 0.1, 0.5, 1);
-       mBody->setSleepingThresholds(0, 0);
-       mBody->setAngularFactor(0, 0, 0);
-       //mBody->setStaticShape(mShape, 0.1, 0.5);
+       mBody->setSleepingThresholds(0, 0); //prevent object from deactivating
+       mBody->setAngularFactor(0, 0, 0); //prevent other objects from affecting this object's rotation
        EnableCollisions(sbs->GetConfigBool("Skyscraper.SBS.Camera.EnableCollisions", true));
 }
 
@@ -210,24 +209,14 @@ void Camera::UpdateCameraFloor()
 bool Camera::Move(Ogre::Vector3 vector, float speed)
 {
        //moves the camera in a relative amount specified by a vector
-       //SetPosition(Ogre::Vector3(GetPosition().x + (vector.x * speed), GetPosition().y + (vector.y * speed), GetPosition().z + (vector.z * speed)));
        //CameraNode->translate(sbs->ToRemote(vector * speed), Ogre::Node::TS_LOCAL);
 
        //multiply vector with object's orientation, and flip X axis
        vector = mBody->getWorldOrientation() * vector * Ogre::Vector3(-1, 1, 1);
-       //vector.x *= CameraNode->getLocalAxes()[2][0];
-       //vector.y *= CameraNode->getLocalAxes()[2][1];
-       //vector.z *= CameraNode->getLocalAxes()[2][2];
 
        if (vector != Ogre::Vector3::ZERO)
-       {
                mBody->setLinearVelocity(sbs->ToRemote(vector));
-               /*if (vector.y == 0)
-                       mBody->setLinearVelocity((mBody->getLinearVelocity() * Ogre::Vector3(0, 1, 0)) + sbs->ToRemote(vector));
-               else
-                       mBody->setLinearVelocity((mBody->getLinearVelocity() * Ogre::Vector3(1, 0, 1)) + sbs->ToRemote(vector));
-                       */
-       }
+
        return true;
 }
 
@@ -245,6 +234,7 @@ void Camera::Rotate(const Ogre::Vector3 &vector, float speed)
 void Camera::RotateLocal(const Ogre::Vector3 &vector, float speed)
 {
        //rotates the camera in a relative amount in local camera space
+
        mBody->setAngularVelocity(Ogre::Vector3(0, -vector.y, 0));
        CameraNode->pitch(Ogre::Degree(vector.x * speed),  Ogre::Node::TS_LOCAL);
        //CameraNode->yaw(Ogre::Degree(-vector.y * speed),  Ogre::Node::TS_WORLD);
index e2f5c7d..ef3e2f7 100644 (file)
@@ -694,7 +694,7 @@ MeshObject::MeshObject(Object* parent, const char *name, const char *filename, f
 
        enabled = true;
        //mShape = 0;
-       //mBody = 0;
+       mBody = 0;
        //mObject = 0;
 
        std::string buffer;
index 8a3102f..39ddf96 100644 (file)
@@ -440,7 +440,8 @@ void SBS::MainLoop()
        running_time = (GetRunTime() / 1000.0) - start_time;
 
        //update physics
-       mWorld->stepSimulation(GetElapsedTime());
+       float step = float(GetElapsedTime()) / 1000.0;
+       mWorld->stepSimulation(step, 1);
 
        //limit the elapsed value to prevent major slowdowns during debugging
        if (elapsed > 0.5)
@@ -547,7 +548,7 @@ bool SBS::Initialize(Ogre::RenderWindow* mRenderWindow, Ogre::SceneManager* mSce
                soundsys->set3DSettings(1.0, 3.28, 1.0);
 
        //set up physics
-       mWorld = new OgreBulletDynamics::DynamicsWorld(mSceneManager, Ogre::AxisAlignedBox(Ogre::Vector3(-10000, -10000, -10000), Ogre::Vector3(10000, 10000, 10000)), Ogre::Vector3(0, 0, 0), true, false, 32768);
+       mWorld = new OgreBulletDynamics::DynamicsWorld(mSceneManager, Ogre::AxisAlignedBox(Ogre::Vector3(-10000, -10000, -10000), Ogre::Vector3(10000, 10000, 10000)), Ogre::Vector3(0, 0, 0), true, false, 32766);
 
        /*debugDrawer = new OgreBulletCollisions::DebugDrawer();
        debugDrawer->setDrawWireframe(true);