| 48 | class ElementSim; |
| 49 | |
| 50 | class ActorSim : public Ps::UserAllocated |
| 51 | { |
| 52 | friend class Scene; // the scene is allowed to set the scene array index |
| 53 | friend class Interaction; |
| 54 | PX_NOCOPY(ActorSim) |
| 55 | |
| 56 | public: |
| 57 | enum ActivityChangeInfoFlag |
| 58 | { |
| 59 | AS_PART_OF_CREATION = (1 << 0), |
| 60 | AS_PART_OF_ISLAND_GEN = (1 << 1) |
| 61 | }; |
| 62 | |
| 63 | ActorSim(Scene&, ActorCore&); |
| 64 | virtual ~ActorSim(); |
| 65 | |
| 66 | // Get the scene the actor resides in |
| 67 | PX_FORCE_INLINE Scene& getScene() const { return mScene; } |
| 68 | |
| 69 | // Get the number of interactions connected to the actor |
| 70 | PX_FORCE_INLINE PxU32 getActorInteractionCount() const { return mInteractions.size(); } |
| 71 | |
| 72 | // Get an iterator to the interactions connected to the actor |
| 73 | PX_FORCE_INLINE Interaction** getActorInteractions() const { return mInteractions.begin(); } |
| 74 | |
| 75 | // Get first element in the actor (linked list) |
| 76 | PX_FORCE_INLINE ElementSim* getElements_() { return mFirstElement; } |
| 77 | PX_FORCE_INLINE const ElementSim* getElements_() const { return mFirstElement; } |
| 78 | |
| 79 | PX_FORCE_INLINE PxU32 getElementCount() const { return mElementCount; } |
| 80 | |
| 81 | // Get the type ID of the actor |
| 82 | PX_FORCE_INLINE PxActorType::Enum getActorType() const { return mCore.getActorCoreType(); } |
| 83 | |
| 84 | // Returns true if the actor is a dynamic rigid body (including articulation links) |
| 85 | PX_FORCE_INLINE bool isDynamicRigid() const { const PxActorType::Enum type = getActorType(); return type == PxActorType::eRIGID_DYNAMIC || type == PxActorType::eARTICULATION_LINK; } |
| 86 | |
| 87 | void onElementAttach(ElementSim& element); |
| 88 | void onElementDetach(ElementSim& element); |