mirror of
https://github.com/TES3MP/TES3MP.git
synced 2025-09-27 15:11:36 -04:00
Clean up
This commit is contained in:
parent
d3bf3812a4
commit
5938e19362
@ -279,13 +279,15 @@ bool RenderingManager::rotateObject( const MWWorld::Ptr &ptr, Ogre::Vector3 &rot
|
|||||||
Ogre::Quaternion zref(Ogre::Radian(-ptr.getRefData().getPosition().rot[2]), Ogre::Vector3::UNIT_Z);
|
Ogre::Quaternion zref(Ogre::Radian(-ptr.getRefData().getPosition().rot[2]), Ogre::Vector3::UNIT_Z);
|
||||||
|
|
||||||
Ogre::Quaternion newo = adjust ? (xr * yr * zr) * (xref*yref*zref) : xr * yr * zr;
|
Ogre::Quaternion newo = adjust ? (xr * yr * zr) * (xref*yref*zref) : xr * yr * zr;
|
||||||
Ogre::Radian ax,ay,az;
|
|
||||||
Ogre::Matrix3 mat;
|
Ogre::Matrix3 mat;
|
||||||
newo.ToRotationMatrix(mat);
|
newo.ToRotationMatrix(mat);
|
||||||
|
Ogre::Radian ax,ay,az;
|
||||||
mat.ToEulerAnglesXYZ(ax,ay,az);
|
mat.ToEulerAnglesXYZ(ax,ay,az);
|
||||||
rot.x = -ax.valueRadians();
|
rot.x = -ax.valueRadians();
|
||||||
rot.y = -ay.valueRadians();
|
rot.y = -ay.valueRadians();
|
||||||
rot.z = -az.valueRadians();
|
rot.z = -az.valueRadians();
|
||||||
|
|
||||||
ptr.getRefData().getBaseNode()->setOrientation(newo);
|
ptr.getRefData().getBaseNode()->setOrientation(newo);
|
||||||
}
|
}
|
||||||
else if(isPlayer)
|
else if(isPlayer)
|
||||||
|
@ -13,18 +13,9 @@
|
|||||||
#include <boost/lexical_cast.hpp>
|
#include <boost/lexical_cast.hpp>
|
||||||
#include <boost/format.hpp>
|
#include <boost/format.hpp>
|
||||||
|
|
||||||
#define BIT(x) (1<<(x))
|
|
||||||
|
|
||||||
namespace OEngine {
|
namespace OEngine {
|
||||||
namespace Physic
|
namespace Physic
|
||||||
{
|
{
|
||||||
enum collisiontypes {
|
|
||||||
COL_NOTHING = 0, //<Collide with nothing
|
|
||||||
COL_WORLD = BIT(0), //<Collide with world objects
|
|
||||||
COL_ACTOR_INTERNAL = BIT(1), //<Collide internal capsule
|
|
||||||
COL_ACTOR_EXTERNAL = BIT(2), //<collide with external capsule
|
|
||||||
COL_RAYCASTING = BIT(3)
|
|
||||||
};
|
|
||||||
|
|
||||||
PhysicActor::PhysicActor(const std::string &name, const std::string &mesh, PhysicEngine *engine, const Ogre::Vector3 &position, const Ogre::Quaternion &rotation, float scale)
|
PhysicActor::PhysicActor(const std::string &name, const std::string &mesh, PhysicEngine *engine, const Ogre::Vector3 &position, const Ogre::Quaternion &rotation, float scale)
|
||||||
: mName(name), mEngine(engine), mMesh(mesh), mBoxScaledTranslation(0,0,0), mBoxRotationInverse(0,0,0,0)
|
: mName(name), mEngine(engine), mMesh(mesh), mBoxScaledTranslation(0,0,0), mBoxRotationInverse(0,0,0,0)
|
||||||
@ -314,7 +305,7 @@ namespace Physic
|
|||||||
|
|
||||||
mHeightFieldMap [name] = hf;
|
mHeightFieldMap [name] = hf;
|
||||||
|
|
||||||
dynamicsWorld->addRigidBody(body,COL_WORLD,COL_WORLD|COL_ACTOR_INTERNAL|COL_ACTOR_EXTERNAL);
|
dynamicsWorld->addRigidBody(body,CollisionType_World,CollisionType_World|CollisionType_ActorInternal|CollisionType_ActorExternal);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PhysicEngine::removeHeightField(int x, int y)
|
void PhysicEngine::removeHeightField(int x, int y)
|
||||||
@ -401,11 +392,11 @@ namespace Physic
|
|||||||
return;
|
return;
|
||||||
if(body->mCollide)
|
if(body->mCollide)
|
||||||
{
|
{
|
||||||
dynamicsWorld->addRigidBody(body,COL_WORLD,COL_WORLD|COL_ACTOR_INTERNAL|COL_ACTOR_EXTERNAL);
|
dynamicsWorld->addRigidBody(body,CollisionType_World,CollisionType_World|CollisionType_ActorInternal|CollisionType_ActorExternal);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
dynamicsWorld->addRigidBody(body,COL_RAYCASTING,COL_RAYCASTING|COL_WORLD);
|
dynamicsWorld->addRigidBody(body,CollisionType_Raycasting,CollisionType_Raycasting|CollisionType_World);
|
||||||
}
|
}
|
||||||
body->setActivationState(DISABLE_DEACTIVATION);
|
body->setActivationState(DISABLE_DEACTIVATION);
|
||||||
if(addToMap){
|
if(addToMap){
|
||||||
@ -539,7 +530,7 @@ namespace Physic
|
|||||||
|
|
||||||
float d1 = 10000.;
|
float d1 = 10000.;
|
||||||
btCollisionWorld::ClosestRayResultCallback resultCallback1(from, to);
|
btCollisionWorld::ClosestRayResultCallback resultCallback1(from, to);
|
||||||
resultCallback1.m_collisionFilterMask = COL_WORLD|COL_RAYCASTING;
|
resultCallback1.m_collisionFilterMask = CollisionType_World|CollisionType_Raycasting;
|
||||||
dynamicsWorld->rayTest(from, to, resultCallback1);
|
dynamicsWorld->rayTest(from, to, resultCallback1);
|
||||||
if (resultCallback1.hasHit())
|
if (resultCallback1.hasHit())
|
||||||
{
|
{
|
||||||
@ -549,7 +540,7 @@ namespace Physic
|
|||||||
}
|
}
|
||||||
|
|
||||||
btCollisionWorld::ClosestRayResultCallback resultCallback2(from, to);
|
btCollisionWorld::ClosestRayResultCallback resultCallback2(from, to);
|
||||||
resultCallback2.m_collisionFilterMask = COL_ACTOR_INTERNAL|COL_ACTOR_EXTERNAL;
|
resultCallback2.m_collisionFilterMask = CollisionType_ActorInternal|CollisionType_ActorExternal;
|
||||||
dynamicsWorld->rayTest(from, to, resultCallback2);
|
dynamicsWorld->rayTest(from, to, resultCallback2);
|
||||||
float d2 = 10000.;
|
float d2 = 10000.;
|
||||||
if (resultCallback2.hasHit())
|
if (resultCallback2.hasHit())
|
||||||
@ -568,12 +559,12 @@ namespace Physic
|
|||||||
std::vector< std::pair<float, std::string> > PhysicEngine::rayTest2(btVector3& from, btVector3& to)
|
std::vector< std::pair<float, std::string> > PhysicEngine::rayTest2(btVector3& from, btVector3& to)
|
||||||
{
|
{
|
||||||
MyRayResultCallback resultCallback1;
|
MyRayResultCallback resultCallback1;
|
||||||
resultCallback1.m_collisionFilterMask = COL_WORLD|COL_RAYCASTING;
|
resultCallback1.m_collisionFilterMask = CollisionType_World|CollisionType_Raycasting;
|
||||||
dynamicsWorld->rayTest(from, to, resultCallback1);
|
dynamicsWorld->rayTest(from, to, resultCallback1);
|
||||||
std::vector< std::pair<float, const btCollisionObject*> > results = resultCallback1.results;
|
std::vector< std::pair<float, const btCollisionObject*> > results = resultCallback1.results;
|
||||||
|
|
||||||
MyRayResultCallback resultCallback2;
|
MyRayResultCallback resultCallback2;
|
||||||
resultCallback2.m_collisionFilterMask = COL_ACTOR_INTERNAL|COL_ACTOR_EXTERNAL;
|
resultCallback2.m_collisionFilterMask = CollisionType_ActorInternal|CollisionType_ActorExternal;
|
||||||
dynamicsWorld->rayTest(from, to, resultCallback2);
|
dynamicsWorld->rayTest(from, to, resultCallback2);
|
||||||
std::vector< std::pair<float, const btCollisionObject*> > actorResults = resultCallback2.results;
|
std::vector< std::pair<float, const btCollisionObject*> > actorResults = resultCallback2.results;
|
||||||
|
|
||||||
|
@ -43,6 +43,14 @@ namespace Physic
|
|||||||
class PhysicEngine;
|
class PhysicEngine;
|
||||||
class RigidBody;
|
class RigidBody;
|
||||||
|
|
||||||
|
enum CollisionType {
|
||||||
|
CollisionType_Nothing = 0, //<Collide with nothing
|
||||||
|
CollisionType_World = 1<<0, //<Collide with world objects
|
||||||
|
CollisionType_ActorInternal = 1<<1, //<Collide internal capsule Still Used?
|
||||||
|
CollisionType_ActorExternal = 1<<2, //<collide with external capsule Still used?
|
||||||
|
CollisionType_Raycasting = 1<<3 //Still used?
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*This is just used to be able to name objects.
|
*This is just used to be able to name objects.
|
||||||
*/
|
*/
|
||||||
|
@ -8,8 +8,6 @@
|
|||||||
|
|
||||||
#include "physic.hpp"
|
#include "physic.hpp"
|
||||||
|
|
||||||
#define BIT(x) (1<<(x))
|
|
||||||
|
|
||||||
enum traceWorldType
|
enum traceWorldType
|
||||||
{
|
{
|
||||||
collisionWorldTrace = 1,
|
collisionWorldTrace = 1,
|
||||||
@ -17,22 +15,6 @@ enum traceWorldType
|
|||||||
bothWorldTrace = collisionWorldTrace | pickWorldTrace
|
bothWorldTrace = collisionWorldTrace | pickWorldTrace
|
||||||
};
|
};
|
||||||
|
|
||||||
enum collaborativePhysicsType
|
|
||||||
{
|
|
||||||
No_Physics = 0, // Both are empty (example: statics you can walk through, like tall grass)
|
|
||||||
Only_Collision = 1, // This object only has collision physics but no pickup physics (example: statics)
|
|
||||||
Only_Pickup = 2, // This object only has pickup physics but no collision physics (example: items dropped on the ground)
|
|
||||||
Both_Physics = 3 // This object has both kinds of physics (example: activators)
|
|
||||||
};
|
|
||||||
|
|
||||||
enum collisiontypes {
|
|
||||||
COL_NOTHING = 0, //<Collide with nothing
|
|
||||||
COL_WORLD = BIT(0), //<Collide with world objects
|
|
||||||
COL_ACTOR_INTERNAL = BIT(1), //<Collide internal capsule
|
|
||||||
COL_ACTOR_EXTERNAL = BIT(2), //<collide with external capsule
|
|
||||||
COL_RAYCASTING = BIT(3)
|
|
||||||
};
|
|
||||||
|
|
||||||
void newtrace(traceResults *results, const Ogre::Vector3& start, const Ogre::Vector3& end, const Ogre::Vector3& BBHalfExtents, bool isInterior, OEngine::Physic::PhysicEngine *enginePass) //Traceobj was a Aedra Object
|
void newtrace(traceResults *results, const Ogre::Vector3& start, const Ogre::Vector3& end, const Ogre::Vector3& BBHalfExtents, bool isInterior, OEngine::Physic::PhysicEngine *enginePass) //Traceobj was a Aedra Object
|
||||||
{
|
{
|
||||||
const btVector3 btstart(start.x, start.y, start.z + BBHalfExtents.z);
|
const btVector3 btstart(start.x, start.y, start.z + BBHalfExtents.z);
|
||||||
@ -45,7 +27,7 @@ void newtrace(traceResults *results, const Ogre::Vector3& start, const Ogre::Vec
|
|||||||
const btTransform to(btrot, btend);
|
const btTransform to(btrot, btend);
|
||||||
|
|
||||||
btCollisionWorld::ClosestConvexResultCallback newTraceCallback(btstart, btend);
|
btCollisionWorld::ClosestConvexResultCallback newTraceCallback(btstart, btend);
|
||||||
newTraceCallback.m_collisionFilterMask = COL_WORLD|COL_RAYCASTING;
|
newTraceCallback.m_collisionFilterMask = OEngine::Physic::CollisionType_World|OEngine::Physic::CollisionType_Raycasting;
|
||||||
|
|
||||||
enginePass->dynamicsWorld->convexSweepTest(&newshape, from, to, newTraceCallback);
|
enginePass->dynamicsWorld->convexSweepTest(&newshape, from, to, newTraceCallback);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user