50 lines
1.6 KiB
C++
50 lines
1.6 KiB
C++
//========= Copyright Valve Corporation, All rights reserved. ============//
|
|
//
|
|
// Purpose:
|
|
//
|
|
//=============================================================================//
|
|
|
|
#ifndef PLAYER_CONTROLLER_H
|
|
#define PLAYER_CONTROLLER_H
|
|
#ifdef _WIN32
|
|
#pragma once
|
|
#endif
|
|
|
|
class IPhysicsPlayerControllerEvent {
|
|
public:
|
|
virtual int ShouldMoveTo(IPhysicsObject *pObject,
|
|
const Vector &position) = 0;
|
|
};
|
|
|
|
class IPhysicsPlayerController {
|
|
public:
|
|
virtual ~IPhysicsPlayerController(void) {}
|
|
|
|
virtual void Update(const Vector &position, const Vector &velocity,
|
|
float secondsToArrival, bool onground,
|
|
IPhysicsObject *ground) = 0;
|
|
virtual void SetEventHandler(IPhysicsPlayerControllerEvent *handler) = 0;
|
|
virtual bool IsInContact(void) = 0;
|
|
virtual void MaxSpeed(const Vector &maxVelocity) = 0;
|
|
|
|
// allows game code to change collision models
|
|
virtual void SetObject(IPhysicsObject *pObject) = 0;
|
|
// UNDONE: Refactor this and shadow controllers into a single
|
|
// class/interface through IPhysicsObject
|
|
virtual int GetShadowPosition(Vector *position, QAngle *angles) = 0;
|
|
virtual void StepUp(float height) = 0;
|
|
virtual void Jump() = 0;
|
|
virtual void GetShadowVelocity(Vector *velocity) = 0;
|
|
virtual IPhysicsObject *GetObject() = 0;
|
|
virtual void GetLastImpulse(Vector *pOut) = 0;
|
|
|
|
virtual void SetPushMassLimit(float maxPushMass) = 0;
|
|
virtual void SetPushSpeedLimit(float maxPushSpeed) = 0;
|
|
|
|
virtual float GetPushMassLimit() = 0;
|
|
virtual float GetPushSpeedLimit() = 0;
|
|
virtual bool WasFrozen() = 0;
|
|
};
|
|
|
|
#endif // PLAYER_CONTROLLER_H
|