PhysX SDK 3.2 API Reference: PxConstraint.h Source File

PhysX SDK 3.2 API

PxConstraint.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_PHYSICS_NX_CONSTRAINT
00032 #define PX_PHYSICS_NX_CONSTRAINT
00033 
00038 #include "PxPhysX.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 PxConstraintConnector;
00050 
00057 struct PxConstraintShaderTable
00058 {
00059     enum
00060     {
00061         eMAX_SOLVERPREPSPU_BYTESIZE=19056
00062     };
00063 
00064     enum
00065     {
00066         eMAX_SOLVERPRPEP_DATASIZE=364
00067     };
00068 
00069     PxConstraintSolverPrep          solverPrep;                 //< solver constraint generation function
00070     void*                           solverPrepSpu;              //< spu-optimized solver constraint generation function
00071     PxU32                           solverPrepSpuByteSize;      //< code size of the spu-optimized solver constraint generation function
00072     PxConstraintProject             project;                    //< constraint projection function
00073     PxConstraintVisualize           visualize;                  //< constraint visualization function
00074 };
00075 
00076 
00083 class PxConstraint : public PxSerializable
00084 {
00085 public:
00086     virtual void                release()                                                       = 0;
00087 
00095     virtual PxScene*            getScene()                                              const   = 0;
00096 
00106     virtual void                getActors(PxRigidActor*& actor0, PxRigidActor*& actor1) const   = 0;
00107 
00108 
00118     virtual void                setActors(PxRigidActor* actor0, PxRigidActor* actor1)           = 0;
00119 
00124     virtual void                markDirty()                                                     = 0;
00125 
00133     virtual void                setFlags(PxConstraintFlags flags)                               = 0;
00134 
00142     virtual PxConstraintFlags   getFlags()                                              const   = 0;
00143 
00150     virtual void                getForce(PxVec3& linear, PxVec3& angular)               const   = 0;
00151 
00152 
00162     virtual void                setBreakForce(PxReal linear, PxReal angular)                    = 0;
00163 
00171     virtual void                getBreakForce(PxReal& linear, PxReal& angular)      const   = 0;
00172 
00183     virtual void*               getExternalReference(PxU32& typeID)                             = 0;
00184 
00193     virtual void                setConstraintFunctions(PxConstraintConnector& connector,
00194                                                        const PxConstraintShaderTable& shaders)      = 0;
00195 
00196     virtual     const char*     getConcreteTypeName() const                 {   return "PxConstraint"; }
00197 
00198 protected:
00199                                 PxConstraint()                                          {}
00200                                 PxConstraint(PxRefResolver& v) :    PxSerializable(v)   {}
00201     virtual                     ~PxConstraint() {}
00202     virtual     bool            isKindOf(const char* name)  const       {   return !strcmp("PxConstraint", name) || PxSerializable::isKindOf(name);     }
00203 
00204 };
00205 
00206 #ifndef PX_DOXYGEN
00207 } // namespace physx
00208 #endif
00209 
00211 #endif


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