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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
//=============================================================================
// Copyright (C) 2002 Radical Entertainment Ltd. All rights reserved.
//
// File: worldcollisionsolveragent.h
//
// Description: Blahblahblah
//
// History: 6/14/2002 + Created -- TBJ
//
//=============================================================================
#ifndef WORLDCOLLISIONSOLVERAGENT_H
#define WORLDCOLLISIONSOLVERAGENT_H
//========================================
// Nested Includes
//========================================
#include <simcollision/impulsebasedcollisionsolver.hpp>
//========================================
// Forward References
//========================================
class RedBrickCollisionSolverAgent;
using namespace sim;
//=============================================================================
//
// Synopsis: Blahblahblah
//
//=============================================================================
class WorldCollisionSolverAgent
:
public CollisionSolverAgent
{
public:
virtual void ResetCollisionFlags() {};
};
class WorldCollisionSolverAgentManager
:
public CollisionSolverAgent
{
public:
WorldCollisionSolverAgentManager();
~WorldCollisionSolverAgentManager();
// the key method to override
Solving_Answer PreCollisionEvent(Collision& inCollision, int inPass);
Solving_Answer TestImpulse(rmt::Vector& mImpulse, Collision& inCollision);
Solving_Answer TestCache(SimState* inSimState, int inIndex);
Solving_Answer EndObjectCollision(SimState* inSimState, int inIndex);
// need to override this so that the sim library version doesn't automatically
// switch from ai to sim ctrl when objects are hit
// this method allows to trigger sounds, animation and modify the objects state.
Solving_Answer CollisionEvent( SimState* inSimStateA, int indexA,
SimState* inSimStateB, int indexB,
const rmt::Vector& inPos, float inDvN, float inDvT,
SimulatedObject** simA, SimulatedObject** simB);
void ResetCollisionFlags();
private:
//Prevent wasteful constructor creation.
WorldCollisionSolverAgentManager( const WorldCollisionSolverAgent& worldcollisionsolveragent );
WorldCollisionSolverAgentManager& operator=( const WorldCollisionSolverAgentManager& worldcollisionsolveragent );
static const int NUM_SOLVERS = 1;
WorldCollisionSolverAgent* mpCollisionSolverAgentArray[ NUM_SOLVERS ];
};
#endif //WORLDCOLLISIONSOLVERAGENT_H
|