-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathphysics_shadow.h
49 lines (38 loc) · 1.59 KB
/
physics_shadow.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
// $NoKeywords: $
//=============================================================================//
#ifndef PHYSICS_SHADOW_H
#define PHYSICS_SHADOW_H
#pragma once
class CPhysicsObject;
class IPhysicsShadowController;
class IPhysicsPlayerController;
extern IPhysicsShadowController *CreateShadowController( CPhysicsObject *pObject, bool allowTranslation, bool allowRotation );
extern IPhysicsPlayerController *CreatePlayerController( CPhysicsObject *pObject );
extern void DestroyPlayerController( IPhysicsPlayerController *pController );
extern void ComputeController( IVP_U_Float_Point ¤tSpeed, const IVP_U_Float_Point &delta, const IVP_U_Float_Point &maxSpeed, float scaleDelta, float damping );
#include "ivp_physics.hxx"
struct shadowcontrol_params_t
{
shadowcontrol_params_t()
{
lastPosition.set_to_zero();
lastImpulse.set_to_zero();
}
IVP_U_Point targetPosition;
IVP_U_Quat targetRotation;
IVP_U_Point lastPosition; // estimate for where the object should be, used to compute error for teleport
IVP_U_Float_Point lastImpulse; // Impulse applied last frame
float maxAngular;
float maxDampAngular;
float maxSpeed;
float maxDampSpeed;
float dampFactor;
float teleportDistance;
};
float ComputeShadowControllerHL( CPhysicsObject *pObject, const hlshadowcontrol_params_t ¶ms, float secondsToArrival, float dt );
float ComputeShadowControllerIVP( IVP_Real_Object *pivp, shadowcontrol_params_t ¶ms, float secondsToArrival, float dt );
#endif // PHYSICS_SHADOW_H