PhysX SDK 3.2 API Reference: PxJoint.h Source File

PhysX SDK 3.2 API

PxJoint.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-2012 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_JOINTCONSTRAINT_H
00032 #define PX_JOINTCONSTRAINT_H
00033 
00037 #include "foundation/PxTransform.h"
00038 #include "PxRigidActor.h"
00039 #include "PxConstraintDesc.h"
00040 #include "common/PxSerialFramework.h"
00041 
00042 #ifndef PX_DOXYGEN
00043 namespace physx
00044 {
00045 #endif
00046 
00047 class PxRigidActor;
00048 class PxScene;
00049 class PxPhysics;
00050 class PxConstraint;
00051 
00058 struct PxJointType
00059 {
00060     enum Enum
00061     {
00062         eD6,
00063         eDISTANCE,
00064         eFIXED,
00065         ePRISMATIC,
00066         eREVOLUTE,
00067         eSPHERICAL
00068     };
00069 };
00070 
00071 
00078 struct PxJointActorIndex
00079 {
00080     enum Enum
00081     {
00082         eACTOR0,
00083         eACTOR1,
00084         COUNT,
00085     };
00086 };
00087 
00092 class PxJoint
00093     : public PxSerializable
00094 {
00095 public:
00096 
00108     virtual void                setActors(PxRigidActor* actor0, PxRigidActor* actor1)           = 0;
00109 
00119     virtual void                getActors(PxRigidActor*& actor0, PxRigidActor*& actor1) const   = 0;
00120 
00132     virtual void                setLocalPose(PxJointActorIndex::Enum actor, const PxTransform& localPose) = 0;
00133 
00144     virtual PxTransform         getLocalPose(PxJointActorIndex::Enum actor) const = 0;
00145 
00159     virtual void                setBreakForce(PxReal force, PxReal torque)                      = 0;
00160 
00169     virtual void                getBreakForce(PxReal& force, PxReal& torque)            const   = 0;
00170 
00178     virtual void                setConstraintFlags(PxConstraintFlags flags)                     = 0;
00179 
00188     virtual void                setConstraintFlag(PxConstraintFlag::Type flag, bool value)      = 0;
00189 
00190 
00198     virtual PxConstraintFlags   getConstraintFlags()                                    const   = 0;
00199 
00200 
00209     virtual PxConstraint*       getConstraint()                                         const   = 0;
00210 
00222     virtual void                setName(const char* name)                                       = 0;
00223 
00232     virtual const char*         getName()                                               const   = 0;
00233 
00238     virtual void                release()                                                       = 0;
00239 
00247     virtual PxScene*            getScene()                                              const   = 0;
00248 
00257     virtual PxJointType::Enum   getType()                                               const   = 0;
00258 
00259     void*                       userData;   
00260 
00261                                 PxJoint(PxRefResolver& v)   : PxSerializable(v) {}
00262     static  void                getMetaData(PxSerialStream& stream);
00263 
00264 protected:
00265     virtual ~PxJoint() {}
00266     PxJoint() : userData(NULL)                      {}
00267     virtual bool                isKindOf(const char* name)  const       {   return !strcmp("PxJoint", name) || PxSerializable::isKindOf(name);          }
00268 };
00269 
00270 PX_DEFINE_TYPEINFO(PxFixedJoint,        PxConcreteType::eUSER_FIXED_JOINT);
00271 PX_DEFINE_TYPEINFO(PxRevoluteJoint,     PxConcreteType::eUSER_REVOLUTE_JOINT);
00272 PX_DEFINE_TYPEINFO(PxPrismaticJoint,    PxConcreteType::eUSER_PRISMATIC_JOINT);
00273 PX_DEFINE_TYPEINFO(PxSphericalJoint,    PxConcreteType::eUSER_SPHERICAL_JOINT);
00274 PX_DEFINE_TYPEINFO(PxDistanceJoint,     PxConcreteType::eUSER_DISTANCE_JOINT);
00275 PX_DEFINE_TYPEINFO(PxD6Joint,           PxConcreteType::eUSER_D6_JOINT);
00276 
00277 #ifndef PX_DOXYGEN
00278 } // namespace physx
00279 #endif
00280 
00295 PX_C_EXPORT void PX_CALL_CONV PxSetJointGlobalFrame(physx::PxJoint& joint, const physx::PxVec3* wsAnchor, const physx::PxVec3* wsAxis);
00296 
00298 #endif


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