#if !defined( AFX_TRAINDRAWER_H__6E36062A_EF0B_11D4_ACF7_004095A18133__INCLUDED_ )
#define AFX_TRAINDRAWER_H__6E36062A_EF0B_11D4_ACF7_004095A18133__INCLUDED_
-#include "DEntity.h"
-
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
+#include <list>
+#include "mathlib.h"
+
+#include "irender.h"
+#include "renderable.h"
+
+class DPoint;
+
+class Shader;
+
typedef struct {
- char strName[64];
+ char strName[64];
- vec3_t vOrigin;
+ vec3_t vOrigin;
} controlPoint_t;
typedef struct {
- controlPoint_t point;
+ controlPoint_t point;
- char strControl[64];
- char strTarget[64];
+ char strControl[64];
+ char strTarget[64];
- list<controlPoint_t> m_pointList;
- list<DPoint> m_vertexList;
+ std::list<controlPoint_t> m_pointList;
+ std::list<DPoint> m_vertexList;
- controlPoint_t* pTarget;
+ controlPoint_t *pTarget;
} splinePoint_t;
-class DTrainDrawer :
- public IGL2DWindow,
- public IGL3DWindow
-{
+class DTrainDrawer : public Renderable, public OpenGLRenderable {
private:
-list<splinePoint_t*> m_splineList;
-list<controlPoint_t*> m_pointList;
-int refCount;
+ std::list<splinePoint_t *> m_splineList;
+ std::list<controlPoint_t *> m_pointList;
-bool m_bHooked;
-bool m_bDisplay;
+ bool m_bDisplay;
+ Shader *m_shader_wireframe;
+ Shader *m_shader_solid;
public:
-void UnRegister();
-void Register();
-
-DTrainDrawer();
-virtual ~DTrainDrawer( void );
-
-void Draw3D();
-void Draw2D( VIEWTYPE vt );
-void IncRef() { refCount++; }
-void DecRef() {
- refCount--; if ( refCount <= 0 ) {
- delete this;
- }
-}
-void ClearSplines();
-void ClearPoints();
-void BuildPaths();
-void AddControlPoint( const char* name, vec_t* origin );
-splinePoint_t* AddSplinePoint( const char* name, const char* target, vec_t* origin );
-controlPoint_t* FindControlPoint( const char* name );
+
+ DTrainDrawer();
+
+ virtual ~DTrainDrawer(void);
+
+ void render(RenderStateFlags state) const;
+
+ void renderSolid(Renderer &renderer, const VolumeTest &volume) const;
+
+ void renderWireframe(Renderer &renderer, const VolumeTest &volume) const;
+
+ void constructShaders();
+
+ void destroyShaders();
+
+ void ClearSplines();
+
+ void ClearPoints();
+
+ void BuildPaths();
+
+ void AddControlPoint(const char *name, vec_t *origin);
+
+ splinePoint_t *AddSplinePoint(const char *name, const char *target, vec_t *origin);
+
+ controlPoint_t *FindControlPoint(const char *name);
};
#endif // !defined(AFX_TRAINDRAWER_H__6E36062A_EF0B_11D4_ACF7_004095A18133__INCLUDED_)