![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2004 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: entityCollision.h,v $ $Revision: 1.8 $ $State: Exp $ 00007 *******************************************************************************/ 00008 #ifndef entityCollision_H_ 00009 #define entityCollision_H_ 00010 00013 00014 #include "vrfobjcore/collision.h" 00015 #include <matrix/vlVector.h> 00016 #include "vrfobjcore/vrfObjMgr.h" 00017 #include <vlutil/vlSmartPointers.h> 00018 00019 class DtString; 00020 00024 #include "vrfobjcore/vrfobjcoreDefines.h" 00025 class DT_DLL_vrfobjcore DtEntityCollision : public DtCollision 00026 { 00027 00028 public: 00029 00031 DtEntityCollision(DtSimManager& simManager, 00032 DtEntityIdentifier entityID, 00033 double distanceSquared); 00034 00036 virtual ~DtEntityCollision(); 00037 00039 virtual DtCollisionObjectType collisionType() const; 00040 00041 DtEntityCollision(const DtEntityCollision& original); 00042 00043 DtEntityCollision& operator=(const DtEntityCollision& original); 00044 00045 bool operator==(const DtCollision& collision) const; 00046 bool operator!=(const DtCollision& collision) const; 00047 00048 bool operator==(const DtEntityCollision& collision) const; 00049 bool operator!=(const DtEntityCollision& collision) const; 00050 00053 bool valid() const; 00054 00055 DtEntityIdentifier obstructionEntityID() const ; 00056 00057 void setObstructionEntityID(const DtEntityIdentifier& entityID); 00058 00059 DtVector obstructionLocation() const; 00060 00061 DtVector obstructionVelocity() const; 00062 00063 const Dt3dBoundingVolume& obstructionBoundingVolume() const; 00064 Dt3dBoundingVolume& obstructionBoundingVolume(); 00065 00066 void setDistanceSquared(double distanceSquared); 00067 double distanceSquared() const; 00073 void addDistance(double extraDistance); 00074 00075 virtual const DtDcm& obstructionLocalOrientationMatrix(); 00076 00077 bool testInvariant() const; 00078 00079 void setSimulationManager(DtSimManager& simManager); 00080 00081 DtSimManager* simulationManager(); 00082 const DtSimManager* simulationManager() const; 00083 00084 static void objectAboutToBeRemovedCallback(DtVrfObject* object, void* usr); 00085 virtual void processObjectAboutToBeRemoved(DtVrfObject* object); 00086 00087 protected: 00088 DtEntityIdentifier myObstructionEntityID; 00089 00091 DtSimManager* mySimulationManager; 00092 00094 static Dt3dBoundingVolume nullBoundingVolume; 00095 00096 private: 00098 mutable DtVrfObject* myObject; 00099 00100 double myDistanceSquared; 00101 }; 00102 00103 typedef DtBoost::shared_ptr<DtEntityCollision> DtEntityCollisionSharedPtr; 00104 00105 #endif 00106