Fixing Salmon Engine bugs

This commit is contained in:
vladislav.khorev committed 2013-01-23 20:58:15 +00:00
1 parent 5720f8322b
commit 24427045ba
13 files changed
+500 -451

No files matched your search

@@ -14,31 +14,154 @@
namespace SE
{
struct TCameraInterface
{
vec3 CamVec;
vec3 CamShift;
TCameraInterface();
virtual ~TCameraInterface()
{
}
};
struct TPanoramicCamera : public TCameraInterface
{
float CamAlpha;
float CamPhi;
float CamDist;
TPanoramicCamera();
void MoveAlpha(float dAlpha);
void MovePhi(float dPhi);
void MoveDist(float dDist);
void SetAlpha(float alpha);
void MoveForward();
void MoveBackward();
void MoveLeft();
void MoveRight();
void CalcCamVec();
void SetCamView();
};
struct TPitCamera : public TCameraInterface
{
vec4 CameraQuat;
void SetCamView();
void CalcCamVec();
void RotateByQuat(vec4 quat);
};
typedef boost::variant<TPanoramicCamera, TPitCamera> TCamera;
struct TSetCameraViewVisitor : public boost::static_visitor<void>
{
void operator()(TPanoramicCamera& panoramicCamera)
{
panoramicCamera.SetCamView();
}
void operator()(TPitCamera& pitCamera)
{
pitCamera.SetCamView();
}
};
struct TCalcCamVecVisitor : public boost::static_visitor<void>
{
void operator()(TPanoramicCamera& panoramicCamera)
{
panoramicCamera.CalcCamVec();
}
void operator()(TPitCamera& pitCamera)
{
pitCamera.CalcCamVec();
}
};
struct TGetCamVecVisitor : public boost::static_visitor<vec3&>
{
vec3& operator()(TPanoramicCamera& panoramicCamera) const
{
return panoramicCamera.CamVec;
}
vec3& operator()(TPitCamera& pitCamera) const
{
return pitCamera.CamVec;
}
};
struct TGetCamShiftVisitor : public boost::static_visitor<vec3&>
{
vec3& operator()(TPanoramicCamera& panoramicCamera) const
{
return panoramicCamera.CamShift;
}
vec3& operator()(TPitCamera& pitCamera) const
{
return pitCamera.CamShift;
}
};
class TSalmonRendererInterface : public TRendererInterface
{
protected:
/*
float CamAlpha;
float CamPhi;
float CamDist;
vec3 CamShift;
vec3 CamPos; //Do not change - call CalcCamPosVec instead
vec3 CamVec; //Do not change - call CalcCamPosVec instead
vec3 CamShift;*/
mat4 CamModelViewMatrix;
mat4 CamInversedModelViewMatrix;
float GlobalShadowAreaHalfSize;
void CalcCamPosVec();
virtual void DrawQuad(const T2DQuad& quad) = 0;
public:
TCamera CameraMover;
//vec3 CamShift;
vec3 CamPos; //Do not change - call CalcCamPosVec instead
//vec3 CamVec; //Do not change - call CalcCamPosVec instead
vec3 GetCamShift()
{
return boost::apply_visitor(TGetCamShiftVisitor(), CameraMover);
}
vec3 GetCamVec()
{
return boost::apply_visitor(TGetCamVecVisitor(), CameraMover);
}
TSalmonRendererInterface();
virtual void InitOpenGL(int screenWidth, int screenHeight, float matrixWidth, float matrixHeight);
void CalcCamPosVec();
virtual void SetUniforms();
void SetPerspectiveFullScreenViewport();
@@ -59,18 +182,8 @@ public:
void SetGlNegZView();
void MoveAlpha(float dAlpha);
void MovePhi(float dPhi);
void MoveDist(float dDist);
void SetAlpha(float alpha);
vec3 GetCamPos();
void MoveForward();
void MoveBackward();
void MoveLeft();
void MoveRight();
virtual void SwitchToScreen();
virtual void SwitchToFrameBuffer(const std::string& frameName);
void SwitchToCubemapBuffer(const std::string& frameName,cardinal cubeSide);