|
@@ -18,7 +18,7 @@ namespace BansheeEngine
|
|
|
virtual void update() = 0;
|
|
virtual void update() = 0;
|
|
|
|
|
|
|
|
virtual SPtr<PhysicsMaterial> createMaterial(float staticFriction, float dynamicFriction, float restitution) = 0;
|
|
virtual SPtr<PhysicsMaterial> createMaterial(float staticFriction, float dynamicFriction, float restitution) = 0;
|
|
|
- virtual SPtr<Rigidbody> createRigidbody(const Vector3& position, const Quaternion& rotation) = 0;
|
|
|
|
|
|
|
+ virtual SPtr<Rigidbody> createRigidbody(const Vector3& position, const Quaternion& rotation, UINT32 priority = 0) = 0;
|
|
|
|
|
|
|
|
virtual SPtr<BoxCollider> createBoxCollider(float extentX, float extentY, float extentZ,
|
|
virtual SPtr<BoxCollider> createBoxCollider(float extentX, float extentY, float extentZ,
|
|
|
const Vector3& position, const Quaternion& rotation) = 0;
|
|
const Vector3& position, const Quaternion& rotation) = 0;
|
|
@@ -33,8 +33,18 @@ namespace BansheeEngine
|
|
|
|
|
|
|
|
static const UINT64 CollisionMapSize = 64;
|
|
static const UINT64 CollisionMapSize = 64;
|
|
|
protected:
|
|
protected:
|
|
|
|
|
+ friend class Rigidbody;
|
|
|
|
|
+
|
|
|
|
|
+ void registerRigidbody(Rigidbody* body, UINT32 priority);
|
|
|
|
|
+ void unregisterRigidbody(UINT32 id, UINT32 priority);
|
|
|
|
|
+ void updatePriority(UINT32 id, UINT32 oldPriority, UINT32 newPriority);
|
|
|
|
|
+
|
|
|
mutable Mutex mMutex;
|
|
mutable Mutex mMutex;
|
|
|
bool mCollisionMap[CollisionMapSize][CollisionMapSize];
|
|
bool mCollisionMap[CollisionMapSize][CollisionMapSize];
|
|
|
|
|
+
|
|
|
|
|
+ Vector<Vector<Rigidbody*>> mRigidbodies;
|
|
|
|
|
+
|
|
|
|
|
+ const static UINT32 MAX_PRIORITY = 128;
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
/** Provides easier access to Physics. */
|
|
/** Provides easier access to Physics. */
|