BsPhysicsMesh.cpp 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #include "Physics/BsPhysicsMesh.h"
  4. #include "Private/RTTI/BsPhysicsMeshRTTI.h"
  5. #include "Resources/BsResources.h"
  6. #include "Physics/BsPhysics.h"
  7. namespace bs
  8. {
  9. PhysicsMesh::PhysicsMesh(const SPtr<MeshData>& meshData, PhysicsMeshType type)
  10. :mInitMeshData(meshData), mType(type)
  11. {
  12. // Derived class is responsible for initializing mInternal
  13. }
  14. PhysicsMeshType PhysicsMesh::getType() const
  15. {
  16. return mInternal->mType;
  17. }
  18. SPtr<MeshData> PhysicsMesh::getMeshData() const
  19. {
  20. return mInternal->getMeshData();
  21. }
  22. HPhysicsMesh PhysicsMesh::create(const SPtr<MeshData>& meshData, PhysicsMeshType type)
  23. {
  24. SPtr<PhysicsMesh> newMesh = _createPtr(meshData, type);
  25. return static_resource_cast<PhysicsMesh>(gResources()._createResourceHandle(newMesh));
  26. }
  27. SPtr<PhysicsMesh> PhysicsMesh::_createPtr(const SPtr<MeshData>& meshData, PhysicsMeshType type)
  28. {
  29. SPtr<PhysicsMesh> newMesh = gPhysics().createMesh(meshData, type);
  30. newMesh->_setThisPtr(newMesh);
  31. newMesh->initialize();
  32. return newMesh;
  33. }
  34. void PhysicsMesh::initialize()
  35. {
  36. mInitMeshData = nullptr;
  37. Resource::initialize();
  38. }
  39. RTTITypeBase* PhysicsMesh::getRTTIStatic()
  40. {
  41. return PhysicsMeshRTTI::instance();
  42. }
  43. RTTITypeBase* PhysicsMesh::getRTTI() const
  44. {
  45. return getRTTIStatic();
  46. }
  47. FPhysicsMesh::FPhysicsMesh(const SPtr<MeshData>& meshData, PhysicsMeshType type)
  48. :mType(type)
  49. {
  50. }
  51. FPhysicsMesh::~FPhysicsMesh()
  52. {
  53. }
  54. RTTITypeBase* FPhysicsMesh::getRTTIStatic()
  55. {
  56. return FPhysicsMeshRTTI::instance();
  57. }
  58. RTTITypeBase* FPhysicsMesh::getRTTI() const
  59. {
  60. return getRTTIStatic();
  61. }
  62. }