Fixing Salmon Engine bugs
This commit is contained in:
1 parent
5720f8322b
commit
24427045ba
13 files changed
+500
-451
No files matched your search
@@ -55,6 +55,8 @@ public:
|
||||
|
||||
void Draw();
|
||||
|
||||
TDataTriangleList& GetDataTriangleList();
|
||||
|
||||
friend class TFlexModelManager;
|
||||
};
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -111,16 +111,19 @@ public:
|
||||
virtual void UpdateQuick() { }
|
||||
//To process input - this method is called more frequently than Update()
|
||||
|
||||
virtual void OuterOnTapDown(vec2 p);
|
||||
|
||||
virtual void OuterOnTapUp(vec2 p);
|
||||
|
||||
virtual void OuterOnMove(vec2 shift);
|
||||
|
||||
virtual void InnerOnTapDown(vec2 p) { }
|
||||
|
||||
virtual void InnerOnTapUp(vec2 p) { }
|
||||
|
||||
virtual void InnerOnMove(vec2 shift) { }
|
||||
//To do on mouse move (with or without pressed buttons)
|
||||
|
||||
virtual void OnMouseDown(TMouseState& mouseState) { }
|
||||
//To do on mouse up (with or without pressed buttons)
|
||||
|
||||
virtual void OnMouseUp(TMouseState& mouseState) { }
|
||||
//To do on mouse down (with or without pressed buttons)
|
||||
//Be careful - even when user "upped" button, in mouseState this button appears as pressed
|
||||
virtual void OnMouseMove(TMouseState& mouseState) { } //Windows only
|
||||
|
||||
virtual void OnMouseWheel(short int delta) { }
|
||||
//To do on mouse wheel move
|
||||
|
||||
@@ -51,15 +51,6 @@ public:
|
||||
virtual void UpdateQuick() { };
|
||||
//To process input - this method is called more frequently than Update()
|
||||
|
||||
virtual void OnMouseMove(TMouseState& mouseState) { }
|
||||
//To do on mouse move (with or without pressed buttons)
|
||||
|
||||
virtual void OnMouseDown(TMouseState& mouseState) { }
|
||||
//To do on mouse up (with or without pressed buttons)
|
||||
|
||||
virtual void OnMouseUp(TMouseState& mouseState) { }
|
||||
//To do on mouse down (with or without pressed buttons)
|
||||
//Be careful - even when user "upped" button, in mouseState this button appears as pressed
|
||||
|
||||
virtual void OnMouseWheel(short int delta) { }
|
||||
//To do on mouse wheel move
|
||||
|
||||
@@ -3,11 +3,10 @@
|
||||
|
||||
#include "include/Utils/Utils.h"
|
||||
|
||||
#pragma warning(disable: 4503) //ololo, DisctionariesMap expands into looong boolshit
|
||||
|
||||
namespace SE
|
||||
{
|
||||
|
||||
|
||||
typedef boost::variant<
|
||||
std::shared_ptr<TBindableVar<int>>,
|
||||
std::shared_ptr<TBindableVar<float>>,
|
||||
|
||||
@@ -74,6 +74,8 @@ mat4 MultMatrixMatrix(const mat4& m1, const mat4& m2);
|
||||
|
||||
bool IsFloatEqual(float a, float b);
|
||||
|
||||
bool LineCouldCrossTriangle(const vec3& a, const vec3& b, const TSmpTriangle& tr); //overall test
|
||||
|
||||
int LineCrossTriangle(const vec3& a, const vec3& b, const TSmpTriangle& tr);
|
||||
|
||||
int LineCrossTriangle(const vec3& a, const vec3& b, const TSmpTriangle& tr, vec3& CrossPoint);
|
||||
|
||||
@@ -34,7 +34,7 @@ public:
|
||||
tvec2<TYPENAME> operator+(const tvec2<TYPENAME>& a) const;
|
||||
tvec2<TYPENAME>& operator-=(const tvec2<TYPENAME>& vc);
|
||||
tvec2<TYPENAME> operator-(const tvec2<TYPENAME>& a) const;
|
||||
tvec2<TYPENAME>& operator-();
|
||||
tvec2<TYPENAME> operator-();
|
||||
tvec2<TYPENAME>& operator*=(TYPENAME c);
|
||||
};
|
||||
|
||||
@@ -70,7 +70,7 @@ public:
|
||||
tvec3<TYPENAME1>& operator-=(const tvec3<TYPENAME1>& vc);
|
||||
tvec3<TYPENAME1> operator+(const tvec3<TYPENAME1>& a) const;
|
||||
tvec3<TYPENAME1> operator-(const tvec3<TYPENAME1>& a) const;
|
||||
tvec3<TYPENAME1>& operator-();
|
||||
tvec3<TYPENAME1> operator-();
|
||||
tvec3<TYPENAME1>& operator*=(TYPENAME1 c);
|
||||
tvec3<TYPENAME1> operator*(const tmat3<TYPENAME1>& mt) const; //MultRowMatrix()
|
||||
};
|
||||
@@ -114,6 +114,7 @@ typedef tvec4<float> vec4;
|
||||
|
||||
|
||||
vec4 InverseQuat(const vec4& q);
|
||||
vec4 NormalizeQuat(const vec4& q);
|
||||
|
||||
|
||||
template<typename TYPENAME1>
|
||||
@@ -279,12 +280,14 @@ inline tvec2<TYPENAME> tvec2<TYPENAME>::operator-(const tvec2<TYPENAME>& a) cons
|
||||
}
|
||||
|
||||
template<typename TYPENAME>
|
||||
inline tvec2<TYPENAME>& tvec2<TYPENAME>::operator-()
|
||||
inline tvec2<TYPENAME> tvec2<TYPENAME>::operator-()
|
||||
{
|
||||
v[0] = -v[0];
|
||||
v[1] = -v[1];
|
||||
tvec2<TYPENAME> r = *this;
|
||||
|
||||
return *this;
|
||||
r.v[0] = -v[0];
|
||||
r.v[1] = -v[1];
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
template<typename TYPENAME>
|
||||
@@ -440,13 +443,15 @@ inline tvec3<TYPENAME1> tvec3<TYPENAME1>::operator-(const tvec3<TYPENAME1>& a) c
|
||||
}
|
||||
|
||||
template<typename TYPENAME1>
|
||||
inline tvec3<TYPENAME1>& tvec3<TYPENAME1>::operator-()
|
||||
inline tvec3<TYPENAME1> tvec3<TYPENAME1>::operator-()
|
||||
{
|
||||
v[0] = -v[0];
|
||||
v[1] = -v[1];
|
||||
v[2] = -v[2];
|
||||
tvec3<TYPENAME1> r = *this;
|
||||
|
||||
return *this;
|
||||
r.v[0] = -v[0];
|
||||
r.v[1] = -v[1];
|
||||
r.v[2] = -v[2];
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
template<typename TYPENAME1>
|
||||
@@ -732,14 +737,14 @@ inline vec4 InverseQuat(const vec4& q)
|
||||
{
|
||||
float n;
|
||||
vec4 r;
|
||||
n = (q.v[0]*q.v[0]+q.v[1]*q.v[1]+q.v[2]*q.v[2]);
|
||||
n = (q.v[0]*q.v[0]+q.v[1]*q.v[1]+q.v[2]*q.v[2]+q.v[3]*q.v[3]);
|
||||
|
||||
if (n!=0.0f)
|
||||
{
|
||||
r.v[0] = -q.v[0] / n;
|
||||
r.v[1] = -q.v[1] / n;
|
||||
r.v[2] = -q.v[2] / n;
|
||||
r.v[3] = q.v[3];
|
||||
r.v[3] = q.v[3] / n;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -751,6 +756,26 @@ inline vec4 InverseQuat(const vec4& q)
|
||||
|
||||
return r;
|
||||
|
||||
}
|
||||
|
||||
inline vec4 NormalizeQuat(const vec4& q)
|
||||
{
|
||||
float n;
|
||||
|
||||
vec4 r;
|
||||
|
||||
n = (q.v[0]*q.v[0]+q.v[1]*q.v[1]+q.v[2]*q.v[2]+q.v[3]*q.v[3]);
|
||||
|
||||
if (n!=0.0f)
|
||||
{
|
||||
r.v[0] = q.v[0] / n;
|
||||
r.v[1] = q.v[1] / n;
|
||||
r.v[2] = q.v[2] / n;
|
||||
r.v[3] = q.v[3] / n;
|
||||
}
|
||||
|
||||
return r;
|
||||
|
||||
}
|
||||
//========== mat2 ===========
|
||||
|
||||
|
||||
Reference in new issue
Block a user