BsPhysics.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435
  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 = Vector3::ZERO,
  18. const Quaternion& rotation = Quaternion::IDENTITY) = 0;
  19. void toggleCollision(UINT64 groupA, UINT64 groupB, bool enabled);
  20. bool isCollisionEnabled(UINT64 groupA, UINT64 groupB) const;
  21. static const UINT64 CollisionMapSize = 64;
  22. protected:
  23. mutable Mutex mMutex;
  24. bool mCollisionMap[CollisionMapSize][CollisionMapSize];
  25. };
  26. /** Provides easier access to Physics. */
  27. BS_CORE_EXPORT Physics& gPhysics();
  28. }