class IAvatarObserver { public: virtual void AffineMotion(CAvatar* pAvatar, const D3DXVECTOR3& v3Position, const D3DXQUATERNION& qFacing, const D3DXMATRIX& matAffine)=0; virtual void StateChange(CAvatar* pEngine, const DWORD dwState)=0; };class IAvatar { public: virtual ~IAvatar()=0; //Observation public: virtual HRESULT AddObserver(IAvatarObserver* pObserver)=0; virtual HRESULT RemoveObserver(IAvatarObserver* pObserver)=0; //Identitification public: virtual const GUID& GetID()=0; virtual const wchar_t* GetName()=0; virtual const DWORD Hash()=0; //Movement public: virtual void Update(D3DXVECTOR3, D3DXQUATERNION)=0; virtual BOOL HasMoved()=0; virtual BOOL HasTurned()=0; virtual operator D3DXVECTOR3()=0; //returns current positon (Center) virtual operator D3DXQUATERNION()=0; //returns current Facing direction virtual operator D3DXMATRIX()=0; //return current affine matrix virtual void MoveAhead (float fElapsed_sec)=0; virtual void MoveBack (float fElapsed_sec)=0; virtual void MoveLeft (float fElapsed_sec)=0; virtual void MoveRight (float fElapsed_sec)=0; virtual void MoveUp (float fElapsed_sec)=0; virtual void MoveDown (float fElapsed_sec)=0; virtual float SetLinearSpeed(float fSpeed_mps); //returns actual speed virtual void TurnLeft (float fElapsed_sec)=0; virtual void TurnRight (float fElapsed_sec)=0; virtual void TurnUp (float fElapsed_sec)=0; virtual void TurnDown (float fElapsed_sec)=0; virtual void RollLeft (float fElapsed_sec)=0; virtual void RollRight (float fElapsed_sec)=0; virtual float SetRotationSpeed(float fSpeed_rps); //returns actual speed //Physics public: //Linear Mechanics virtual void ApplyForce(D3DXVECTOR3 v3Force_N, float fDuration_sec)=0; virtual void ApplyImpulse(D3DXVECTOR3 v3Impulse_Ns)=0; //Rotation Mechanics virtual void ApplyTorque(D3DXQUATERNION qMoment); float fMass_kg; D3DXVECTOR3& v3Velocity_mps; D3DXVECTOR3& v3Acceleration_mpsps; D3DXVECTOR3& v3Jerk_mpspsps; float fRotationalInertia_forgot; //slug*ft²? D3DXQUATERNION qRotationalVelocity_rps; D3DXQUATERNION qRotationalAcceleratio_rpsps; D3DXQUATERNION qRotationalJerk_rpspsps; };
Well, I''ve worked on the Avatar a little more, and this is what I have so far. Has anyone done anything with physics yet?
Magmai Kai Holmlor
- The disgruntled & disillusioned
- The trade-off between price and quality does not exist in Japan. Rather, the idea that high quality brings on cost reduction is widely accepted.-- Tajima & Matsubara