00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef NVBLASTEXTPXACTORIMPL_H
00030 #define NVBLASTEXTPXACTORIMPL_H
00031
00032 #include "NvBlastExtPxActor.h"
00033 #include "NvBlastArray.h"
00034 #include "PxTransform.h"
00035
00036
00037 using namespace physx;
00038
00039 namespace Nv
00040 {
00041 namespace Blast
00042 {
00043
00044
00045
00046 class ExtPxFamilyImpl;
00047
00048 struct PxActorCreateInfo
00049 {
00050 PxTransform m_transform;
00051 PxVec3 m_scale;
00052 PxVec3 m_parentLinearVelocity;
00053 PxVec3 m_parentAngularVelocity;
00054 PxVec3 m_parentCOM;
00055 };
00056
00057
00058 class ExtPxActorImpl final : public ExtPxActor
00059 {
00060 public:
00062
00063 ExtPxActorImpl(ExtPxFamilyImpl* family, TkActor* tkActor, const PxActorCreateInfo& pxActorInfo);
00064
00065 ~ExtPxActorImpl()
00066 {
00067 release();
00068 }
00069
00070 void release();
00071
00072
00074
00075 virtual uint32_t getChunkCount() const override
00076 {
00077 return static_cast<uint32_t>(m_chunkIndices.size());
00078 }
00079
00080 virtual const uint32_t* getChunkIndices() const override
00081 {
00082 return m_chunkIndices.begin();
00083 }
00084
00085 virtual PxRigidDynamic& getPhysXActor() const override
00086 {
00087 return *m_rigidDynamic;
00088 }
00089
00090 virtual TkActor& getTkActor() const override
00091 {
00092 return *m_tkActor;
00093 }
00094
00095 virtual ExtPxFamily& getFamily() const override;
00096
00097
00098 private:
00100
00101 ExtPxFamilyImpl* m_family;
00102 TkActor* m_tkActor;
00103 PxRigidDynamic* m_rigidDynamic;
00104 InlineArray<uint32_t, 4>::type m_chunkIndices;
00105 };
00106
00107
00108
00109 }
00110 }
00111
00112
00113 #endif // ifndef NVBLASTEXTPXACTORIMPL_H