All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
IVehicle.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "VectorMathDecl.h"
6 #include "Traffic.h"
7 #include <string>
8 #include <vector>
9 
10 namespace Eegeo
11 {
12  namespace Traffic
13  {
14  class IVehicle
15  {
16  public:
17  IVehicle() : isDebugVehicle(false) { }
18  virtual ~IVehicle() {};
19 
20  virtual const Eegeo::dv3& GetWorldPosition() const = 0;
21  virtual const Eegeo::v3& GetForwardsVector() const = 0;
22  virtual const std::string& GetFullModelNodeName() const = 0;
23  virtual float Alpha() = 0;
24  virtual TrafficSimulationCell* GetNextCell() = 0;
25  virtual bool GetInitialised() = 0;
26  virtual void ClearNextCell() = 0;
27  virtual void Update(float elapsedSeconds, float speedMultiplier, const dv3& ecefInterestPoint) = 0;
28  virtual void Initialise(const dv3& ecefInterestPoint) = 0;
29  virtual bool VehicleMarkedToRemove() = 0;
30  virtual void FadeOutThenDestroyVehicle() = 0;
31  virtual bool IsPlayingDeathCeremony() = 0;
32 
33  virtual bool IsUnderground() const = 0;
34  virtual bool NeedsUndergroundCheck() = 0;
35  virtual void SetIsUnderground(bool isUnderground) = 0;
36 
37  virtual bool CanCollide() const = 0;
38 
39  virtual float GetBoundsRadius() const = 0;
40  virtual float GetScale() const = 0;
41 
42  virtual float GetCollisionRadius() const = 0;
43  virtual void SetModelNodeNameSuffix(const std::string &suffix) = 0;
44 
45  virtual const std::vector<IVehicle*>& GetChildVehicles() const { return m_childVehicles; }
46  bool isDebugVehicle;
47  protected:
48  std::vector<IVehicle*> m_childVehicles;
49  };
50  }
51 }