/*==LICENSE==* CyanWorlds.com Engine - MMOG client, server and tools Copyright (C) 2011 Cyan Worlds, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . You can contact Cyan Worlds, Inc. by email legal@cyan.com or by snail mail at: Cyan Worlds, Inc. 14617 N Newport Hwy Mead, WA 99021 *==LICENSE==*/ // //#ifndef plPlayerModifier_inc //#define plPlayerModifier_inc // //#include "../pnModifier/plSingleModifier.h" //#include "../pnSceneObject/plSimulationInterface.h" //#include "hsMatrix44.h" // //class plControlEventMsg; // //namespace Havok { // class Vector3; //} // //class plPlayerModifier : public plSingleModifier //{ //protected: // // enum // { // kWantsToSpawn = 0, // kTimerSet, // kHasSpawned, // kNeedsLocalSetup // }; // // struct spawnPt // { // hsPoint3 pt; // hsScalar dist; // }; // // static hsScalar fTurnRate; // // static hsScalar fAcceleration; // static hsScalar fDeceleration; // static hsScalar fMaxVelocity; // hsScalar fCurSpeed; // // // double fLastTime; // hsMatrix44 fDesiredMatrix; // // hsPoint3 fDesiredPosition; // hsPoint3 fFacingTarget; // bool bUseDesiredFacing; // bool bUseDesiredMatrix; // bool bIgnoreDesiredMatrix; // // hsScalar fRotationScalar; // hsTArray fSpawnPoints; // // void IAdjustVelocity(hsScalar adjAccelRate, // hsScalar adjDecelRate, // hsVector3* dir, // hsVector3* vel, // hsScalar maxSpeed, // hsScalar distToGoal, // double elapsedTime); // // hsScalar IClampVelocity(hsVector3* vel, hsScalar maxSpeed, double elapsedTime); // hsBool32 IShouldDecelerate(hsScalar decelSpeed, hsScalar curSpeed, hsScalar distToGoal); // // hsBool HasMovementFlag(int f) const { return fMoveFlags.IsBitSet(f); } // void SetMovementFlag(int f) { fMoveFlags.SetBit(f); } // void ClearMovementFlag(int which) { fMoveFlags.ClearBit( which ); } // // hsBitVector fMoveFlags; // hsBitVector fFlags; // // void WarpToSpawnPoint() { SetFlag( kWantsToSpawn ); } // // hsBool bMoving; // // void IApplyForce(plSimulationInterface::plSimpleForce type, const Havok::Vector3 &vec); // void IDoLocalSetup(plSceneObject*); // void IMakeUsListener( plSceneObject *so ); // //public: // plPlayerModifier(); // virtual ~plPlayerModifier(); // // CLASSNAME_REGISTER( plPlayerModifier ); // GETINTERFACE_ANY( plPlayerModifier, plSingleModifier ); // // virtual hsBool MsgReceive(plMessage* msg); // virtual void AddTarget(plSceneObject* so); // virtual void RemoveTarget(plSceneObject* so); // // hsBool HandleControlInput(plControlEventMsg* pMsg); // virtual hsBool IEval(double secs, hsScalar del, UInt32 dirty); // // void SetMoving(hsBool b); // hsBool IsMoving() { return bMoving; } // // hsBool HasFlag(int f) const { return fFlags.IsBitSet(f); } // void SetFlag(int f) { fFlags.SetBit(f); } // void ClearFlag(int which) { fFlags.ClearBit( which ); } // // static void SetTurnRate(float f) {fTurnRate = f;} // static void SetAcceleration(float f) {fAcceleration = f;} // static void SetDeceleration(float f) {fDeceleration = f;} // static void SetVelocity(float f) {fMaxVelocity = f;} // // //}; // //#endif plPlayerModifier_inc