PxArticulationBase.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-2018 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_ARTICULATION_BASE
00032 #define PX_PHYSICS_NX_ARTICULATION_BASE
00033 
00036 #include "PxPhysXConfig.h"
00037 #include "common/PxBase.h"
00038 
00039 #if !PX_DOXYGEN
00040 namespace physx
00041 {
00042 #endif
00043 
00044     
00045     class PxArticulationImpl;
00046 
00057     class PxArticulationBase : public PxBase
00058     {
00059     public:
00060 
00061         enum Enum
00062         {
00063             eReducedCoordinate = 0,
00064             eMaximumCoordinate = 1
00065         };
00066 
00074         virtual     PxScene*        getScene()  const = 0;
00075 
00092         virtual     void                setSolverIterationCounts(PxU32 minPositionIters, PxU32 minVelocityIters = 1) = 0;
00093 
00099         virtual     void                getSolverIterationCounts(PxU32 & minPositionIters, PxU32 & minVelocityIters) const = 0;
00100 
00133         virtual     bool                isSleeping() const = 0;
00134 
00144         virtual     void                setSleepThreshold(PxReal threshold) = 0;
00145 
00153         virtual     PxReal              getSleepThreshold() const = 0;
00154 
00168         virtual     void                setStabilizationThreshold(PxReal threshold) = 0;
00169 
00179         virtual     PxReal              getStabilizationThreshold() const = 0;
00180 
00196         virtual     void                setWakeCounter(PxReal wakeCounterValue) = 0;
00197 
00205         virtual     PxReal              getWakeCounter() const = 0;
00206 
00218         virtual     void                wakeUp() = 0;
00219 
00231         virtual     void                putToSleep() = 0;
00232 
00245         virtual         PxArticulationLink*         createLink(PxArticulationLink* parent, const PxTransform& pose) = 0;
00246 
00247 
00252         virtual     PxU32           getNbLinks() const = 0;
00253 
00267         virtual     PxU32                           getLinks(PxArticulationLink** userBuffer, PxU32 bufferSize, PxU32 startIndex = 0) const = 0;
00268 
00269 
00280         virtual     void            setName(const char* name) = 0;
00281 
00289         virtual     const char*     getName()           const = 0;
00290 
00300         virtual     PxBounds3       getWorldBounds(float inflation = 1.01f) const = 0;
00301 
00309         virtual     PxAggregate*    getAggregate() const = 0;
00310 
00311         virtual     PxArticulationImpl* getImpl() = 0;
00312 
00313         virtual const PxArticulationImpl* getImpl() const = 0;
00314 
00315         virtual     PxArticulationBase::Enum getType() const = 0;
00316 
00317         void*                       userData;   
00318 
00319         virtual                     ~PxArticulationBase() {}
00320 
00321     protected:
00322         PX_INLINE                   PxArticulationBase(PxType concreteType, PxBaseFlags baseFlags) : PxBase(concreteType, baseFlags) {}
00323         PX_INLINE                   PxArticulationBase(PxBaseFlags baseFlags) : PxBase(baseFlags) {}
00324 public:
00325         virtual PxArticulationJointBase* createArticulationJoint(PxArticulationLink& parent,
00326             const PxTransform& parentFrame,
00327             PxArticulationLink& child,
00328             const PxTransform& childFrame) = 0;
00329         virtual void                     releaseArticulationJoint(PxArticulationJointBase* joint) = 0;
00330     };
00331 
00332 #if !PX_DOXYGEN
00333 } // namespace physx
00334 #endif
00335 
00337 #endif


Copyright © 2008-2018 NVIDIA Corporation, 2701 San Tomas Expressway, Santa Clara, CA 95050 U.S.A. All rights reserved. www.nvidia.com