Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- struct PlayerData: public ShapeBaseData {
- typedef ShapeBaseData Parent;
- enum Constants {
- RecoverDelayBits = 7,
- JumpDelayBits = 7,
- NumSpineNodes = 6,
- ImpactBits = 3,
- NUM_SPLASH_EMITTERS = 3,
- BUBBLE_EMITTER = 2,
- };
- bool renderFirstPerson; ///< Render the player shape in first person
- F32 pickupRadius; ///< Radius around player for items (on server)
- F32 maxTimeScale; ///< Max timeScale for action animations
- F32 minLookAngle; ///< Lowest angle (radians) the player can look
- F32 maxLookAngle; ///< Highest angle (radians) the player can look
- F32 maxFreelookAngle; ///< Max left/right angle the player can look
- /// @name Physics constants
- /// @{
- F32 runForce; ///< Force used to accelerate player
- F32 runEnergyDrain; ///< Energy drain/tick
- F32 minRunEnergy; ///< Minimum energy required to run
- F32 maxForwardSpeed; ///< Maximum forward speed when running
- F32 maxBackwardSpeed; ///< Maximum backward speed when running
- F32 maxSideSpeed; ///< Maximum side speed when running
- F32 maxUnderwaterForwardSpeed; ///< Maximum underwater forward speed when running
- F32 maxUnderwaterBackwardSpeed; ///< Maximum underwater backward speed when running
- F32 maxUnderwaterSideSpeed; ///< Maximum underwater side speed when running
- F32 maxStepHeight; ///< Maximum height the player can step up
- F32 runSurfaceAngle; ///< Maximum angle from vertical in degrees the player can run up
- F32 horizMaxSpeed; ///< Max speed attainable in the horizontal
- F32 horizResistSpeed; ///< Speed at which resistence will take place
- F32 horizResistFactor; ///< Factor of resistence once horizResistSpeed has been reached
- F32 upMaxSpeed; ///< Max vertical speed attainable
- F32 upResistSpeed; ///< Speed at which resistence will take place
- F32 upResistFactor; ///< Factor of resistence once upResistSpeed has been reached
- S32 recoverDelay; ///< # tick
- F32 recoverRunForceScale; ///< RunForce multiplier in recover state
- F32 jumpForce; ///< Force exherted per jump
- F32 jumpEnergyDrain; ///< Energy drained per jump
- F32 minJumpEnergy; ///< Minimum energy required to jump
- F32 minJumpSpeed; ///< Minimum speed needed to jump
- F32 maxJumpSpeed; ///< Maximum speed before the player can no longer jump
- F32 jumpSurfaceAngle; ///< Angle from vertical in degrees where the player can jump
- S32 jumpDelay; ///< Delay time in ticks between jumps
- /// @}
- /// @name Hitboxes
- /// @{
- F32 boxHeadPercentage;
- F32 boxTorsoPercentage;
- S32 boxHeadLeftPercentage;
- S32 boxHeadRightPercentage;
- S32 boxHeadBackPercentage;
- S32 boxHeadFrontPercentage;
- /// @}
- F32 minImpactSpeed; ///< Minimum impact speed required to apply fall damage
- F32 decalOffset;
- F32 groundImpactMinSpeed; ///< Minimum impact speed required to apply fall damage with the ground
- VectorF groundImpactShakeFreq; ///< Frequency in each direction for the camera to shake
- VectorF groundImpactShakeAmp; ///< How much to shake
- F32 groundImpactShakeDuration; ///< How long to shake
- F32 groundImpactShakeFalloff; ///< How fast the shake disapates
- /// Zounds!
- enum Sounds {
- FootSoft,
- FootHard,
- FootMetal,
- FootSnow,
- FootShallowSplash,
- FootWading,
- FootUnderWater,
- FootBubbles,
- MoveBubbles,
- WaterBreath,
- ImpactSoft,
- ImpactHard,
- ImpactMetal,
- ImpactSnow,
- ImpactWaterEasy,
- ImpactWaterMedium,
- ImpactWaterHard,
- ExitWater,
- MaxSounds
- };
- AudioProfile* sound[MaxSounds];
- Point3F boxSize; ///< Width, depth, height
- /// Animation and other data intialized in onAdd
- struct ActionAnimationDef {
- const char* name; ///< Sequence name
- struct Vector {
- F32 x,y,z;
- } dir; ///< Default direction
- };
- struct ActionAnimation {
- const char* name; ///< Sequence name
- S32 sequence; ///< Sequence index
- VectorF dir; ///< Dir of animation ground transform
- F32 speed; ///< Speed in m/s
- bool velocityScale; ///< Scale animation by velocity
- bool death; ///< Are we dying?
- };
- enum {
- // *** WARNING ***
- // These enum values are used to index the ActionAnimationList
- // array instantiated in player.cc
- // The first five are selected in the move state based on velocity
- RootAnim,
- RunForwardAnim,
- BackBackwardAnim,
- SideLeftAnim,
- // These are set explicitly based on player actions
- FallAnim,
- JumpAnim,
- StandJumpAnim,
- LandAnim,
- //
- NumMoveActionAnims = SideLeftAnim + 1,
- NumTableActionAnims = LandAnim + 1,
- NumExtraActionAnims = 512,
- NumActionAnims = NumTableActionAnims + NumExtraActionAnims,
- ActionAnimBits = 9,
- NullAnimation = (1 << ActionAnimBits) - 1
- };
- static ActionAnimationDef ActionAnimationList[NumTableActionAnims];
- ActionAnimation actionList[NumActionAnims];
- U32 actionCount;
- U32 lookAction;
- S32 spineNode[NumSpineNodes];
- S32 pickupDelta; ///< Base off of pcikupRadius
- F32 runSurfaceCos; ///< Angle from vertical in cos(runSurfaceAngle)
- F32 jumpSurfaceCos; ///< Angle from vertical in cos(jumpSurfaceAngle)
- enum Impacts {
- ImpactNone,
- ImpactNormal,
- };
- enum Recoil {
- LightRecoil,
- MediumRecoil,
- HeavyRecoil,
- NumRecoilSequences
- };
- S32 recoilSequence[NumRecoilSequences];
- /// @name Particles
- /// All of the data relating to environmental effects
- /// @{
- ParticleEmitterData * footPuffEmitter;
- S32 footPuffID;
- S32 footPuffNumParts;
- F32 footPuffRadius;
- DecalData* decalData;
- S32 decalID;
- ParticleEmitterData * dustEmitter;
- S32 dustID;
- SplashData* splash;
- S32 splashId;
- F32 splashVelocity;
- F32 splashAngle;
- F32 splashFreqMod;
- F32 splashVelEpsilon;
- F32 bubbleEmitTime;
- F32 medSplashSoundVel;
- F32 hardSplashSoundVel;
- F32 exitSplashSoundVel;
- F32 footSplashHeight;
- ParticleEmitterData* splashEmitterList[NUM_SPLASH_EMITTERS];
- S32 splashEmitterIDList[NUM_SPLASH_EMITTERS];
- /// @}
- //
- DECLARE_CONOBJECT(PlayerData);
- PlayerData();
- bool preload(bool server, char errorBuffer[256]);
- void getGroundInfo(TSShapeInstance*,TSThread*,ActionAnimation*);
- bool isTableSequence(S32 seq);
- bool isJumpAction(U32 action);
- static void initPersistFields();
- virtual void packData(BitStream* stream);
- virtual void unpackData(BitStream* stream);
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement