Raw File
DrawScenarioSimChar.h
#pragma once
#include <memory>
#include <GL/glew.h>

#include "DrawScenarioSimInteractive.h"
#include "ScenarioSimChar.h"
#include "sim/CharTracer.h"

class cShader;
class cSkyBox;
class cPostProcessor;
class cTextureDesc;
class cShadowMap;
class cGBuffer;

class cDrawScenarioSimChar : public cDrawScenarioSimInteractive
{
public:
	EIGEN_MAKE_ALIGNED_OPERATOR_NEW

	cDrawScenarioSimChar(cCamera& cam);
	virtual ~cDrawScenarioSimChar();

	virtual void Init();
	virtual void ParseArgs(const cArgParser& parser);

	virtual void Reset();
	virtual void Clear();
	virtual void Update(double time_elapsed);
	virtual void Keyboard(unsigned char key, int x, int y);
	virtual void MouseClick(int button, int state, double x, double y);
	virtual void MouseMove(double x, double y);
	virtual void Reshape(int w, int h);

	virtual std::string BuildTextInfoStr() const;
	virtual void Shutdown();

	std::string GetName() const;

protected:
	std::shared_ptr<cScenarioSimChar> mScene;
	cArgParser mArgParser;
	bool mDrawInfo;
	bool mDrawPoliInfo;
	bool mDrawFeatures;
	bool mDrawPolicyPlots;

	bool mEnableTrace;
	cCharTracer mTracer;
	std::vector<int> mTraceHandles;
	tVector mCamDelta;

	virtual void BuildScene();
	virtual tVector GetCamTrackPos() const;
	virtual tVector GetCamStillPos() const;

	virtual void UpdateTracer(double time_elapsed);

	virtual void InitTracer();
	virtual int AddCharTrace(const std::shared_ptr<cSimCharacter>& character,
								const tVectorArr& cols);
	virtual void ToggleTrace();

	virtual void DrawScene();
	virtual void DrawGrid() const;
	virtual void DrawGroundMainScene();
	virtual void DrawCharacterMainScene();
	virtual void DrawObjsMainScene();
	virtual void DrawGround() const;
	virtual void DrawCharacter() const;
	virtual void DrawTrace() const;
	virtual void DrawObjs() const;

	virtual tVector GetVisOffset() const;
	virtual tVector GetLineColor() const;
	virtual tVector GetGroundColor() const;

	virtual void DrawInfo() const;
	virtual void DrawCoM() const;
	virtual void DrawTorque() const;
	virtual void DrawPerturbs() const;
	virtual void DrawCtrlInfo() const;
	virtual void DrawPoliInfo() const;
	virtual void DrawFeatures() const;
	virtual void DrawPolicyPlots() const;

	virtual const std::shared_ptr<cScenarioSimChar>& GetScene() const;

	virtual std::string GetOutputCharFile() const;
	virtual void OutputCharState(const std::string& out_file) const;

	virtual void SpawnProjectile();
	virtual void SpawnBigProjectile();
};
back to top