#ifndef NX_PHYSICS_NXSPRINGANDDAMPEREFFECTORDESC
#define NX_PHYSICS_NXSPRINGANDDAMPEREFFECTORDESC
/*----------------------------------------------------------------------------*\
|
| Public Interface to NovodeX Technology
|
| www.novodex.com
|
\*----------------------------------------------------------------------------*/
/** \addtogroup physics
@{
*/
#include "Nxp.h"
class NxActor;
/* TODO: This is not yet/anymore used for anything useful!! */
/**
\brief Desc class for NxSpringAndDamperEffector.
Example
\include NxSpringAndDamperEffector_Create.cpp
@see NxSpringAndDamperEffector
*/
class NxSpringAndDamperEffectorDesc
{
public:
/**
\brief Constructor sets to default.
*/
NX_INLINE NxSpringAndDamperEffectorDesc();
/**
\brief (re)sets the structure to the default.
*/
NX_INLINE void setToDefault();
/**
\brief Returns true if the descriptor is valid.
\return true if the current settings are valid
*/
NX_INLINE bool isValid() const;
/**
\brief First attached body.
Default: NULL
Platform:
\li PC SW: Yes
\li PPU : No
\li PS3 : Yes
\li XB360: Yes
@see NxSpringAndDampererEffector.setBodies()
*/
NxActor* body1;
/**
\brief Second attached body.
Default: NULL
Platform:
\li PC SW: Yes
\li PPU : No
\li PS3 : Yes
\li XB360: Yes
@see NxSpringAndDampererEffector.setBodies()
*/
NxActor* body2;
/**
\brief First attachment point.
Range: position vector
Default: Zero
Platform:
\li PC SW: Yes
\li PPU : No
\li PS3 : Yes
\li XB360: Yes
@see NxSpringAndDampererEffector.setBodies()
*/
NxVec3 pos1;
/**
\brief Second attachment point.
Range: position vector
Default: Zero
Platform:
\li PC SW: Yes
\li PPU : No
\li PS3 : Yes
\li XB360: Yes
@see NxSpringAndDampererEffector.setBodies()
*/
NxVec3 pos2;
//linear spring parameters:
/**
\brief
Range: [0,springDistRelaxed]
Default: 0
Platform:
\li PC SW: Yes
\li PPU : No
\li PS3 : Yes
\li XB360: Yes
@see NxSpringAndDampererEffector.setLinearSpring() NxSpringAndDampererEffector.getLinearSpring()
*/
NxReal springDistCompressSaturate;
/**
\brief
Range: [springDistCompressSaturate,springDistStretchSaturate]
Default: 0
Platform:
\li PC SW: Yes
\li PPU : No
\li PS3 : Yes
\li XB360: Yes
@see NxSpringAndDampererEffector.setLinearSpring() NxSpringAndDampererEffector.getLinearSpring()
*/
NxReal springDistRelaxed;
/**
\brief
Range: [springDistCompressSaturate,inf)
Default: 0
Platform:
\li PC SW: Yes
\li PPU : No
\li PS3 : Yes
\li XB360: Yes
@see NxSpringAndDampererEffector.setLinearSpring() NxSpringAndDampererEffector.getLinearSpring()
*/
NxReal springDistStretchSaturate;
/**
\brief
Range: [0,inf)
Default: 0
Platform:
\li PC SW: Yes
\li PPU : No
\li PS3 : Yes
\li XB360: Yes
@see NxSpringAndDampererEffector.setLinearSpring() NxSpringAndDampererEffector.getLinearSpring()
*/
NxReal springMaxCompressForce;
/**
\brief
Range: [0,inf)
Default: 0
Platform:
\li PC SW: Yes
\li PPU : No
\li PS3 : Yes
\li XB360: Yes
@see NxSpringAndDampererEffector.setLinearSpring() NxSpringAndDampererEffector.getLinearSpring()
*/
NxReal springMaxStretchForce;
//linear damper parameters:
/**
\brief
Range: (-inf,0]
Default: 0
Platform:
\li PC SW: Yes
\li PPU : No
\li PS3 : Yes
\li XB360: Yes
@see NxSpringAndDampererEffector.setLinearDamper() NxSpringAndDampererEffector.getLinearDamper()
*/
NxReal damperVelCompressSaturate;
/**
\brief
Range: [0,inf)
Default: 0
Platform:
\li PC SW: Yes
\li PPU : No
\li PS3 : Yes
\li XB360: Yes
@see NxSpringAndDampererEffector.setLinearDamper() NxSpringAndDampererEffector.getLinearDamper()
*/
NxReal damperVelStretchSaturate;
/**
\brief
Range: [0,inf)
Default: 0
Platform:
\li PC SW: Yes
\li PPU : No
\li PS3 : Yes
\li XB360: Yes
@see NxSpringAndDampererEffector.setLinearDamper() NxSpringAndDampererEffector.getLinearDamper()
*/
NxReal damperMaxCompressForce;
/**
\brief
Range: [0,inf)
Default: 0
Platform:
\li PC SW: Yes
\li PPU : No
\li PS3 : Yes
\li XB360: Yes
@see NxSpringAndDampererEffector.setLinearDamper() NxSpringAndDampererEffector.getLinearDamper()
*/
NxReal damperMaxStretchForce;
};
NX_INLINE NxSpringAndDamperEffectorDesc::NxSpringAndDamperEffectorDesc() //constructor sets to default
{
setToDefault();
}
NX_INLINE void NxSpringAndDamperEffectorDesc::setToDefault()
{
body1 = NULL;
body2 = NULL;
pos1.zero();
pos2.zero();
springDistCompressSaturate = 0;
springDistRelaxed = 0;
springDistStretchSaturate = 0;
springMaxCompressForce = 0;
springMaxStretchForce = 0;
damperVelCompressSaturate = 0;
damperVelStretchSaturate = 0;
damperMaxCompressForce = 0;
damperMaxStretchForce = 0;
}
NX_INLINE bool NxSpringAndDamperEffectorDesc::isValid() const
{
return true;
}
/** @} */
#endif
//AGCOPYRIGHTBEGIN
///////////////////////////////////////////////////////////////////////////
// Copyright © 2005 AGEIA Technologies.
// All rights reserved. www.ageia.com
///////////////////////////////////////////////////////////////////////////
//AGCOPYRIGHTEND