BsPhysics.h 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #pragma once
  4. #include "BsCorePrerequisites.h"
  5. #include "BsModule.h"
  6. #include "BsVector3.h"
  7. #include "BsQuaternion.h"
  8. namespace BansheeEngine
  9. {
  10. class BS_CORE_EXPORT Physics : public Module<Physics>
  11. {
  12. public:
  13. Physics();
  14. virtual ~Physics() { }
  15. virtual void update() = 0;
  16. virtual SPtr<PhysicsMaterial> createMaterial(float staticFriction, float dynamicFriction, float restitution) = 0;
  17. virtual SPtr<Rigidbody> createRigidbody(const Vector3& position, const Quaternion& rotation) = 0;
  18. virtual SPtr<BoxCollider> createBoxCollider(float extentX, float extentY, float extentZ,
  19. const Vector3& position, const Quaternion& rotation) = 0;
  20. virtual SPtr<SphereCollider> createSphereCollider(float radius,
  21. const Vector3& position, const Quaternion& rotation) = 0;
  22. virtual SPtr<PlaneCollider> createPlaneCollider(const Vector3& position, const Quaternion& rotation) = 0;
  23. virtual SPtr<CapsuleCollider> createCapsuleCollider(float radius, float halfHeight,
  24. const Vector3& position, const Quaternion& rotation) = 0;
  25. void toggleCollision(UINT64 groupA, UINT64 groupB, bool enabled);
  26. bool isCollisionEnabled(UINT64 groupA, UINT64 groupB) const;
  27. static const UINT64 CollisionMapSize = 64;
  28. protected:
  29. mutable Mutex mMutex;
  30. bool mCollisionMap[CollisionMapSize][CollisionMapSize];
  31. };
  32. /** Provides easier access to Physics. */
  33. BS_CORE_EXPORT Physics& gPhysics();
  34. }