All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
VehicleRenderablesModel.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "VectorMath.h"
6 #include "Rendering.h"
7 #include <string>
8 #include <vector>
9 
10 namespace Eegeo
11 {
12  namespace Traffic
13  {
15  {
16  Eegeo::v3 right;
17  Eegeo::v3 up;
18  Eegeo::v3 forward;
19  Eegeo::dv3 ecefPosition;
20  std::string vehicleMeshId;
21  float alpha;
22  float boundsRadius;
23  float distToCameraSq;
24  float scale;
25  };
26 
28  {
29  public:
30 
31  typedef std::vector<VehicleRenderdata> TVehicleRenderables;
32  typedef TVehicleRenderables::const_iterator TRenderableIter;
33 
35 
37 
38  TRenderableIter Begin() { return m_renderables.begin(); }
39  TRenderableIter End() { return m_renderables.end(); }
40 
41  void Preallocate(int numVehicles);
42  void CalculateFlattenedPositionInPlace(const dv3& initialPosition, dv3& out_flattenedPosition);
43  void Submit(const Eegeo::dv3& position,
44  const Eegeo::v3& forward,
45  const Eegeo::v3& localY,
46  const std::string& meshId,
47  float alpha,
48  float maxDrawDistanceSq,
49  float boundsRadius,
50  float scale,
51  const dv3& cameraEcefLocation);
52 
53  TVehicleRenderables GetRenderables() const { return m_renderables; }
54  void Clear();
55 
56  private:
57 
58  TVehicleRenderables m_renderables;
59 
60  Rendering::EnvironmentFlatteningService& m_environmentFlatteningService;
61  };
62  }
63 }