PxRigidDynamic.h
Go to the documentation of this file.00001 // This code contains NVIDIA Confidential Information and is disclosed to you 00002 // under a form of NVIDIA software license agreement provided separately to you. 00003 // 00004 // Notice 00005 // NVIDIA Corporation and its licensors retain all intellectual property and 00006 // proprietary rights in and to this software and related documentation and 00007 // any modifications thereto. Any use, reproduction, disclosure, or 00008 // distribution of this software and related documentation without an express 00009 // license agreement from NVIDIA Corporation is strictly prohibited. 00010 // 00011 // ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES 00012 // NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO 00013 // THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT, 00014 // MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE. 00015 // 00016 // Information and code furnished is believed to be accurate and reliable. 00017 // However, NVIDIA Corporation assumes no responsibility for the consequences of use of such 00018 // information or for any infringement of patents or other rights of third parties that may 00019 // result from its use. No license is granted by implication or otherwise under any patent 00020 // or patent rights of NVIDIA Corporation. Details are subject to change without notice. 00021 // This code supersedes and replaces all information previously supplied. 00022 // NVIDIA Corporation products are not authorized for use as critical 00023 // components in life support devices or systems without express written approval of 00024 // NVIDIA Corporation. 00025 // 00026 // Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. 00027 // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. 00028 // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. 00029 00030 00031 #ifndef PX_PHYSICS_NX_RIGIDDYNAMIC 00032 #define PX_PHYSICS_NX_RIGIDDYNAMIC 00033 00037 #include "PxRigidBody.h" 00038 00039 #if !PX_DOXYGEN 00040 namespace physx 00041 { 00042 #endif 00043 00044 00050 struct PxRigidDynamicLockFlag 00051 { 00052 enum Enum 00053 { 00054 eLOCK_LINEAR_X = (1 << 0), 00055 eLOCK_LINEAR_Y = (1 << 1), 00056 eLOCK_LINEAR_Z = (1 << 2), 00057 eLOCK_ANGULAR_X = (1 << 3), 00058 eLOCK_ANGULAR_Y = (1 << 4), 00059 eLOCK_ANGULAR_Z = (1 << 5) 00060 }; 00061 }; 00062 00063 typedef PxFlags<PxRigidDynamicLockFlag::Enum, PxU16> PxRigidDynamicLockFlags; 00064 PX_FLAGS_OPERATORS(PxRigidDynamicLockFlag::Enum, PxU16) 00065 00066 00083 class PxRigidDynamic : public PxRigidBody 00084 { 00085 public: 00086 // Runtime modifications 00087 00088 00089 /************************************************************************************************/ 00117 virtual void setKinematicTarget(const PxTransform& destination) = 0; 00118 00127 virtual bool getKinematicTarget(PxTransform& target) const = 0; 00128 00129 /************************************************************************************************/ 00144 virtual void setLinearDamping(PxReal linDamp) = 0; 00145 00153 virtual PxReal getLinearDamping() const = 0; 00154 00168 virtual void setAngularDamping(PxReal angDamp) = 0; 00169 00177 virtual PxReal getAngularDamping() const = 0; 00178 00179 /************************************************************************************************/ 00201 virtual void setMaxAngularVelocity(PxReal maxAngVel) = 0; 00202 00210 virtual PxReal getMaxAngularVelocity() const = 0; 00211 00212 /************************************************************************************************/ 00250 virtual bool isSleeping() const = 0; 00251 00252 00264 virtual void setSleepThreshold(PxReal threshold) = 0; 00265 00273 virtual PxReal getSleepThreshold() const = 0; 00274 00288 virtual void setStabilizationThreshold(PxReal threshold) = 0; 00289 00299 virtual PxReal getStabilizationThreshold() const = 0; 00300 00301 00311 virtual PxRigidDynamicLockFlags getRigidDynamicLockFlags() const = 0; 00312 00326 virtual void setRigidDynamicLockFlag(PxRigidDynamicLockFlag::Enum flag, bool value) = 0; 00327 virtual void setRigidDynamicLockFlags(PxRigidDynamicLockFlags flags) = 0; 00328 00329 00330 00351 virtual void setWakeCounter(PxReal wakeCounterValue) = 0; 00352 00360 virtual PxReal getWakeCounter() const = 0; 00361 00376 virtual void wakeUp() = 0; 00377 00392 virtual void putToSleep() = 0; 00393 00394 /************************************************************************************************/ 00395 00414 virtual void setSolverIterationCounts(PxU32 minPositionIters, PxU32 minVelocityIters = 1) = 0; 00415 00421 virtual void getSolverIterationCounts(PxU32& minPositionIters, PxU32& minVelocityIters) const = 0; 00422 00442 virtual PxReal getContactReportThreshold() const = 0; 00443 00453 virtual void setContactReportThreshold(PxReal threshold) = 0; 00454 00455 virtual const char* getConcreteTypeName() const { return "PxRigidDynamic"; } 00456 00457 protected: 00458 PX_INLINE PxRigidDynamic(PxType concreteType, PxBaseFlags baseFlags) : PxRigidBody(concreteType, baseFlags) {} 00459 PX_INLINE PxRigidDynamic(PxBaseFlags baseFlags) : PxRigidBody(baseFlags) {} 00460 virtual ~PxRigidDynamic() {} 00461 virtual bool isKindOf(const char* name) const { return !::strcmp("PxRigidDynamic", name) || PxRigidBody::isKindOf(name); } 00462 00463 }; 00464 00465 #if !PX_DOXYGEN 00466 } // namespace physx 00467 #endif 00468 00470 #endif
Copyright © 2008-2017 NVIDIA Corporation, 2701 San Tomas Expressway, Santa Clara, CA 95050 U.S.A. All rights reserved. www.nvidia.com