From abdb820b09996ed3db61f54159024abafc0b97e5 Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Mon, 10 Feb 2014 11:59:35 +0100 Subject: [PATCH 01/50] Added RotationMatrix for Float3x3 --- Code/OysterMath/LinearMath.h | 11 +++++++++++ Code/OysterMath/OysterMath.cpp | 5 +++++ Code/OysterMath/OysterMath.h | 3 +++ 3 files changed, 19 insertions(+) diff --git a/Code/OysterMath/LinearMath.h b/Code/OysterMath/LinearMath.h index 9b21fc02..18c80cf1 100644 --- a/Code/OysterMath/LinearMath.h +++ b/Code/OysterMath/LinearMath.h @@ -451,6 +451,17 @@ namespace LinearAlgebra3D } } + template + inline ::LinearAlgebra::Matrix3x3 & RotationMatrix( const ::LinearAlgebra::Quaternion &rotationQuaternion, ::LinearAlgebra::Matrix3x3 &targetMem = ::LinearAlgebra::Matrix3x3() ) + { + ::LinearAlgebra::Quaternion conjugate = rotationQuaternion.GetConjugate(); + + targetMem.v[0] = (rotationQuaternion * ::LinearAlgebra::Vector3(1,0,0) * conjugate).imaginary; + targetMem.v[1] = (rotationQuaternion * ::LinearAlgebra::Vector3(0,1,0) * conjugate).imaginary; + targetMem.v[2] = (rotationQuaternion * ::LinearAlgebra::Vector3(0,0,1) * conjugate).imaginary; + return targetMem; + } + template inline ::LinearAlgebra::Matrix4x4 & RotationMatrix( const ::LinearAlgebra::Quaternion &rotationQuaternion, ::LinearAlgebra::Matrix4x4 &targetMem = ::LinearAlgebra::Matrix4x4() ) { diff --git a/Code/OysterMath/OysterMath.cpp b/Code/OysterMath/OysterMath.cpp index bbaccf11..f6b26983 100644 --- a/Code/OysterMath/OysterMath.cpp +++ b/Code/OysterMath/OysterMath.cpp @@ -121,6 +121,11 @@ namespace Oyster { namespace Math3D return ::LinearAlgebra3D::Rotation( angularAxis ); } + Float3x3 & RotationMatrix( const Quaternion &rotationQuaternion, Float3x3 &targetMem ) + { + return ::LinearAlgebra3D::RotationMatrix( rotationQuaternion, targetMem ); + } + Float4x4 & RotationMatrix( const Quaternion &rotationQuaternion, Float4x4 &targetMem ) { return ::LinearAlgebra3D::RotationMatrix( rotationQuaternion, targetMem ); diff --git a/Code/OysterMath/OysterMath.h b/Code/OysterMath/OysterMath.h index 23ee06db..dbc144b8 100644 --- a/Code/OysterMath/OysterMath.h +++ b/Code/OysterMath/OysterMath.h @@ -164,6 +164,9 @@ namespace Oyster { namespace Math3D //! Oyster's native math library specialized /** @todo TODO: add doc */ Quaternion Rotation( const Float4 &angularAxis ); + /** @todo TODO: add doc */ + Float3x3 & RotationMatrix( const Quaternion &rotationQuaternion, Float3x3 &targetMem = Float3x3() ); + /** @todo TODO: add doc */ Float4x4 & RotationMatrix( const Quaternion &rotationQuaternion, Float4x4 &targetMem = Float4x4() ); From da5816564520512bbea8b8099810191af44355fd Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Mon, 10 Feb 2014 12:02:48 +0100 Subject: [PATCH 02/50] Added Basic camera --- .../GameClientState/Camera_Basic.cpp | 105 ++++++++++++++++++ .../GameClientState/Camera_Basic.h | 38 +++++++ 2 files changed, 143 insertions(+) create mode 100644 Code/Game/DanBiasGame/GameClientState/Camera_Basic.cpp create mode 100644 Code/Game/DanBiasGame/GameClientState/Camera_Basic.h diff --git a/Code/Game/DanBiasGame/GameClientState/Camera_Basic.cpp b/Code/Game/DanBiasGame/GameClientState/Camera_Basic.cpp new file mode 100644 index 00000000..fc31545a --- /dev/null +++ b/Code/Game/DanBiasGame/GameClientState/Camera_Basic.cpp @@ -0,0 +1,105 @@ +#include "Camera_Basic.h" + +using namespace ::Oyster::Math3D; + +Camera_Basic::Camera_Basic() +{ + this->translation = this->angularAxis = Float3::null; + this->projection = Float4x4::identity; + this->rotation = Quaternion::identity; + rotationIsOutOfDate = false; +} + +Camera_Basic::Camera_Basic( const Float3 &position, const Float3 &angularAxis, const Float4x4 &projection ) +{ + this->translation = position; + this->angularAxis = angularAxis; + this->projection = projection; + this->rotation = Quaternion::identity; + rotationIsOutOfDate = true; +} + +Camera_Basic::~Camera_Basic() {} + +Camera_Basic & Camera_Basic::operator = ( const Camera_Basic &camera ) +{ + this->translation = camera.translation; + this->angularAxis = camera.angularAxis; + this->projection = camera.projection; + this->rotation = camera.rotation; + rotationIsOutOfDate = camera.rotationIsOutOfDate; + return *this; +} + +void Camera_Basic::SetPosition( const Float3 &translation ) +{ + this->translation = translation; +} + +void Camera_Basic::SetAngular( const Float3 &axis ) +{ + this->angularAxis = axis; + this->rotationIsOutOfDate = true; +} + +void Camera_Basic::SetProjection( const Float4x4 &matrix ) +{ + this->projection = matrix; +} + +void Camera_Basic::SetOrthographicProjection( Float width, Float height, Float nearClip, Float farClip ) +{ + ProjectionMatrix_Orthographic( width, height, nearClip, farClip, this->projection ); +} + +void Camera_Basic::SetPerspectiveProjection( Float verticalFoV, Float aspectRatio, Float nearClip, Float farClip ) +{ + ProjectionMatrix_Perspective( verticalFoV, aspectRatio, nearClip, farClip, this->projection ); +} + +void Camera_Basic::Move( const Float3 &deltaPosition ) +{ + this->translation += deltaPosition; +} + +void Camera_Basic::Rotate( const Float3 &deltaAngularAxis ) +{ + this->angularAxis += deltaAngularAxis; + this->rotationIsOutOfDate = true; +} + +const Quaternion & Camera_Basic::GetRotation() const +{ + if( this->rotationIsOutOfDate ) + { + this->rotation = Rotation( this->angularAxis ); + this->rotationIsOutOfDate = false; + } + + return this->rotation; +} + +Float3x3 & Camera_Basic::GetRotationMatrix( Float3x3 &targetMem ) const +{ + return RotationMatrix( this->rotation, targetMem ); +} + +Float4x4 & Camera_Basic::GetRotationMatrix( Float4x4 &targetMem ) const +{ + return RotationMatrix( this->rotation, targetMem ); +} + +Float4x4 & Camera_Basic::GetViewMatrix( Float4x4 &targetMem ) const +{ + return ViewMatrix( this->GetRotation(), this->translation, targetMem ); +} + +const Float4x4 & Camera_Basic::GetProjectionMatrix() const +{ + return this->projection; +} + +Float4x4 & Camera_Basic::GetViewsProjMatrix( Float4x4 &targetMem ) const +{ + return TransformMatrix( this->projection, this->GetViewMatrix(), targetMem ); +} \ No newline at end of file diff --git a/Code/Game/DanBiasGame/GameClientState/Camera_Basic.h b/Code/Game/DanBiasGame/GameClientState/Camera_Basic.h new file mode 100644 index 00000000..531a3291 --- /dev/null +++ b/Code/Game/DanBiasGame/GameClientState/Camera_Basic.h @@ -0,0 +1,38 @@ +#ifndef CAMERA_BASIC_H +#define CAMERA_BASIC_H + +#include "OysterMath.h" + +class Camera_Basic +{ +public: + Camera_Basic(); + Camera_Basic( const ::Oyster::Math::Float3 &position, const ::Oyster::Math::Float3 &angularAxis, const ::Oyster::Math::Float4x4 &projection ); + virtual ~Camera_Basic(); + + Camera_Basic & operator = ( const Camera_Basic &camera ); + + void SetPosition( const ::Oyster::Math::Float3 &translation ); + void SetAngular( const ::Oyster::Math::Float3 &axis ); + void SetProjection( const ::Oyster::Math::Float4x4 &matrix ); + void SetOrthographicProjection( ::Oyster::Math::Float width, ::Oyster::Math::Float height, ::Oyster::Math::Float nearClip, ::Oyster::Math::Float farClip ); + void SetPerspectiveProjection( ::Oyster::Math::Float verticalFoV, ::Oyster::Math::Float aspectRatio, ::Oyster::Math::Float nearClip, ::Oyster::Math::Float farClip ); + + void Move( const ::Oyster::Math::Float3 &deltaPosition ); + void Rotate( const ::Oyster::Math::Float3 &deltaAngularAxis ); + + const ::Oyster::Math::Quaternion & GetRotation() const; + ::Oyster::Math::Float3x3 & GetRotationMatrix( ::Oyster::Math::Float3x3 &targetMem ) const; + ::Oyster::Math::Float4x4 & GetRotationMatrix( ::Oyster::Math::Float4x4 &targetMem ) const; + ::Oyster::Math::Float4x4 & GetViewMatrix( Oyster::Math::Float4x4 &targetMem = ::Oyster::Math::Float4x4() ) const; + const ::Oyster::Math::Float4x4 & GetProjectionMatrix() const; + ::Oyster::Math::Float4x4 & GetViewsProjMatrix( Oyster::Math::Float4x4 &targetMem = ::Oyster::Math::Float4x4() ) const; + + private: + ::Oyster::Math::Float3 translation, angularAxis; + ::Oyster::Math::Float4x4 projection; + mutable ::Oyster::Math::Quaternion rotation; + mutable bool rotationIsOutOfDate; +}; + +#endif \ No newline at end of file From 800d5d0505b1c57a0c722c4221bfa7312b215516 Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Mon, 10 Feb 2014 13:01:46 +0100 Subject: [PATCH 03/50] Camera_Basic stuff --- Code/Game/DanBiasGame/GameClientState/Camera_Basic.cpp | 8 ++++++++ Code/Game/DanBiasGame/GameClientState/Camera_Basic.h | 1 + Code/OysterMath/OysterMath.h | 1 + 3 files changed, 10 insertions(+) diff --git a/Code/Game/DanBiasGame/GameClientState/Camera_Basic.cpp b/Code/Game/DanBiasGame/GameClientState/Camera_Basic.cpp index fc31545a..6c79fe6a 100644 --- a/Code/Game/DanBiasGame/GameClientState/Camera_Basic.cpp +++ b/Code/Game/DanBiasGame/GameClientState/Camera_Basic.cpp @@ -68,10 +68,18 @@ void Camera_Basic::Rotate( const Float3 &deltaAngularAxis ) this->rotationIsOutOfDate = true; } +Float3 Camera_Basic::GetNormalOf( const Float3 &axis ) const +{ + return WorldAxisOf( this->GetRotation(), axis ); +} + const Quaternion & Camera_Basic::GetRotation() const { if( this->rotationIsOutOfDate ) { + /*Float4 temp; + ::std::fmod( Float4(this->angularAxis, 0.0f) );*/ + this->rotation = Rotation( this->angularAxis ); this->rotationIsOutOfDate = false; } diff --git a/Code/Game/DanBiasGame/GameClientState/Camera_Basic.h b/Code/Game/DanBiasGame/GameClientState/Camera_Basic.h index 531a3291..ca317db0 100644 --- a/Code/Game/DanBiasGame/GameClientState/Camera_Basic.h +++ b/Code/Game/DanBiasGame/GameClientState/Camera_Basic.h @@ -21,6 +21,7 @@ public: void Move( const ::Oyster::Math::Float3 &deltaPosition ); void Rotate( const ::Oyster::Math::Float3 &deltaAngularAxis ); + ::Oyster::Math::Float3 GetNormalOf( const ::Oyster::Math::Float3 &axis ) const; const ::Oyster::Math::Quaternion & GetRotation() const; ::Oyster::Math::Float3x3 & GetRotationMatrix( ::Oyster::Math::Float3x3 &targetMem ) const; ::Oyster::Math::Float4x4 & GetRotationMatrix( ::Oyster::Math::Float4x4 &targetMem ) const; diff --git a/Code/OysterMath/OysterMath.h b/Code/OysterMath/OysterMath.h index dbc144b8..a98663cd 100644 --- a/Code/OysterMath/OysterMath.h +++ b/Code/OysterMath/OysterMath.h @@ -331,6 +331,7 @@ namespace Oyster { namespace Math3D //! Oyster's native math library specialized using ::LinearAlgebra3D::InterpolateOrientation_UsingRigidNlerp; using ::LinearAlgebra3D::InterpolateOrientation_UsingSlerp; using ::LinearAlgebra3D::SnapAngularAxis; + using ::LinearAlgebra3D::WorldAxisOf; } } #endif \ No newline at end of file From 0153be16d50f56ba0658421ef67def925bda363e Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Mon, 10 Feb 2014 13:03:21 +0100 Subject: [PATCH 04/50] Added VS Filter Camera --- Code/Game/DanBiasGame/DanBiasGame.vcxproj | 2 ++ Code/Game/DanBiasGame/DanBiasGame.vcxproj.user | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Code/Game/DanBiasGame/DanBiasGame.vcxproj b/Code/Game/DanBiasGame/DanBiasGame.vcxproj index 01a92481..abb0d4c3 100644 --- a/Code/Game/DanBiasGame/DanBiasGame.vcxproj +++ b/Code/Game/DanBiasGame/DanBiasGame.vcxproj @@ -195,6 +195,7 @@ + @@ -211,6 +212,7 @@ + diff --git a/Code/Game/DanBiasGame/DanBiasGame.vcxproj.user b/Code/Game/DanBiasGame/DanBiasGame.vcxproj.user index 2e28d6f7..4b847ee6 100644 --- a/Code/Game/DanBiasGame/DanBiasGame.vcxproj.user +++ b/Code/Game/DanBiasGame/DanBiasGame.vcxproj.user @@ -1,7 +1,7 @@  - true + false $(OutDir) From 4fb684019c604fa84b56734f822f9a0ce2c8c913 Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Mon, 10 Feb 2014 13:41:37 +0100 Subject: [PATCH 05/50] Added ScalingMatrix function --- Code/OysterMath/LinearMath.h | 19 +++++++++++++++++++ Code/OysterMath/OysterMath.h | 1 + 2 files changed, 20 insertions(+) diff --git a/Code/OysterMath/LinearMath.h b/Code/OysterMath/LinearMath.h index 18c80cf1..0d02616e 100644 --- a/Code/OysterMath/LinearMath.h +++ b/Code/OysterMath/LinearMath.h @@ -392,6 +392,25 @@ namespace LinearAlgebra3D // return ::std::asin( ::LinearAlgebra::Vector4(orientationMatrix.v[1].z, orientationMatrix.v[2].x, orientationMatrix.v[0].y, 0) ); //} + + template + inline ::LinearAlgebra::Matrix4x4 ScalingMatrix( const ::LinearAlgebra::Vector3 &s ) + { + return ::LinearAlgebra::Matrix4x4( s.x, 0, 0, 0, + 0, s.y, 0, 0, + 0, 0, s.z, 0, + 0, 0, 0, 1 ); + } + + template + inline ::LinearAlgebra::Matrix4x4 ScalingMatrix( const ::LinearAlgebra::Vector4 &s ) + { + return ::LinearAlgebra::Matrix4x4( s.x, 0, 0, 0, + 0, s.y, 0, 0, + 0, 0, s.z, 0, + 0, 0, 0, s.w ); + } + template inline ::LinearAlgebra::Matrix4x4 & TranslationMatrix( const ::LinearAlgebra::Vector3 &position, ::LinearAlgebra::Matrix4x4 &targetMem = ::LinearAlgebra::Matrix4x4() ) { diff --git a/Code/OysterMath/OysterMath.h b/Code/OysterMath/OysterMath.h index a98663cd..4449db83 100644 --- a/Code/OysterMath/OysterMath.h +++ b/Code/OysterMath/OysterMath.h @@ -332,6 +332,7 @@ namespace Oyster { namespace Math3D //! Oyster's native math library specialized using ::LinearAlgebra3D::InterpolateOrientation_UsingSlerp; using ::LinearAlgebra3D::SnapAngularAxis; using ::LinearAlgebra3D::WorldAxisOf; + using ::LinearAlgebra3D::ScalingMatrix; } } #endif \ No newline at end of file From 30196aebc2d2d5170c089fc181d31ef5f2f1d1ec Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Mon, 10 Feb 2014 14:30:15 +0100 Subject: [PATCH 06/50] Float3 SnapAngularAxis fix --- Code/OysterMath/LinearMath.h | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Code/OysterMath/LinearMath.h b/Code/OysterMath/LinearMath.h index 0d02616e..107ed470 100644 --- a/Code/OysterMath/LinearMath.h +++ b/Code/OysterMath/LinearMath.h @@ -820,7 +820,7 @@ namespace LinearAlgebra3D { return normalizedAxis * ( vector.Dot(normalizedAxis) ); } template - ::LinearAlgebra::Vector4 & SnapAngularAxis( ::LinearAlgebra::Vector4 &startAngularAxis, const ::LinearAlgebra::Vector4 &localStartNormal, const ::LinearAlgebra::Vector4 &worldEndNormal, ::LinearAlgebra::Vector4 &targetMem = ::LinearAlgebra::Vector4() ) + ::LinearAlgebra::Vector4 & SnapAngularAxis( const ::LinearAlgebra::Vector4 &startAngularAxis, const ::LinearAlgebra::Vector4 &localStartNormal, const ::LinearAlgebra::Vector4 &worldEndNormal, ::LinearAlgebra::Vector4 &targetMem = ::LinearAlgebra::Vector4() ) { ::LinearAlgebra::Vector4 worldStartNormal( WorldAxisOf(Rotation(startAngularAxis.xyz), localStartNormal.xyz), (ScalarType)0 ); targetMem = ::LinearAlgebra::Vector4( worldStartNormal.xyz.Cross(worldEndNormal.xyz), (ScalarType)0); @@ -829,11 +829,12 @@ namespace LinearAlgebra3D } template - ::LinearAlgebra::Vector3 & SnapAngularAxis( ::LinearAlgebra::Vector3 &startAngularAxis, const ::LinearAlgebra::Vector3 &localStartNormal, const ::LinearAlgebra::Vector3 &worldEndNormal, ::LinearAlgebra::Vector3 &targetMem = ::LinearAlgebra::Vector3() ) + ::LinearAlgebra::Vector3 & SnapAngularAxis( const ::LinearAlgebra::Vector3 &startAngularAxis, const ::LinearAlgebra::Vector3 &localStartNormal, const ::LinearAlgebra::Vector3 &worldEndNormal, ::LinearAlgebra::Vector3 &targetMem = ::LinearAlgebra::Vector3() ) { - return targetMem = SnapAngularAxis( ::LinearAlgebra::Vector4(startAngularAxis, (ScalarType)0), - ::LinearAlgebra::Vector4(localStartNormal, (ScalarType)0), - ::LinearAlgebra::Vector4(worldEndNormal, (ScalarType)0) ).xyz; + ::LinearAlgebra::Vector4 worldStartNormal( WorldAxisOf(Rotation(startAngularAxis), localStartNormal), (ScalarType)0 ); + targetMem = ::LinearAlgebra::Vector4( worldStartNormal.xyz.Cross(worldEndNormal), (ScalarType)0); + targetMem *= (ScalarType)::std::acos( ::Utility::Value::Clamp(worldStartNormal.Dot(worldEndNormal), (ScalarType)0, (ScalarType)1) ); + return targetMem += startAngularAxis; } template From 1a86ed23cce82026a8e16119c6474d7f87989ecd Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Mon, 10 Feb 2014 15:19:06 +0100 Subject: [PATCH 07/50] Float3 SnapAngular compile error fix --- Code/OysterMath/LinearMath.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Code/OysterMath/LinearMath.h b/Code/OysterMath/LinearMath.h index 107ed470..2f01dbca 100644 --- a/Code/OysterMath/LinearMath.h +++ b/Code/OysterMath/LinearMath.h @@ -831,8 +831,8 @@ namespace LinearAlgebra3D template ::LinearAlgebra::Vector3 & SnapAngularAxis( const ::LinearAlgebra::Vector3 &startAngularAxis, const ::LinearAlgebra::Vector3 &localStartNormal, const ::LinearAlgebra::Vector3 &worldEndNormal, ::LinearAlgebra::Vector3 &targetMem = ::LinearAlgebra::Vector3() ) { - ::LinearAlgebra::Vector4 worldStartNormal( WorldAxisOf(Rotation(startAngularAxis), localStartNormal), (ScalarType)0 ); - targetMem = ::LinearAlgebra::Vector4( worldStartNormal.xyz.Cross(worldEndNormal), (ScalarType)0); + ::LinearAlgebra::Vector3 worldStartNormal( WorldAxisOf(Rotation(startAngularAxis), localStartNormal) ); + targetMem = worldStartNormal.Cross( worldEndNormal ); targetMem *= (ScalarType)::std::acos( ::Utility::Value::Clamp(worldStartNormal.Dot(worldEndNormal), (ScalarType)0, (ScalarType)1) ); return targetMem += startAngularAxis; } From 77eceaf285e172d174b00b61c4426c1cf2c947a3 Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Mon, 10 Feb 2014 15:19:42 +0100 Subject: [PATCH 08/50] Camera_Basic edits --- .../DanBiasGame/GameClientState/Camera_Basic.cpp | 16 ++++++++++++++-- .../DanBiasGame/GameClientState/Camera_Basic.h | 7 +++++-- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/Code/Game/DanBiasGame/GameClientState/Camera_Basic.cpp b/Code/Game/DanBiasGame/GameClientState/Camera_Basic.cpp index 6c79fe6a..4878f3c4 100644 --- a/Code/Game/DanBiasGame/GameClientState/Camera_Basic.cpp +++ b/Code/Game/DanBiasGame/GameClientState/Camera_Basic.cpp @@ -68,6 +68,16 @@ void Camera_Basic::Rotate( const Float3 &deltaAngularAxis ) this->rotationIsOutOfDate = true; } +const Float3 & Camera_Basic::GetPosition() const +{ + return this->translation; +} + +const Float3 & Camera_Basic::GetAngularAxis() const +{ + return this->angularAxis; +} + Float3 Camera_Basic::GetNormalOf( const Float3 &axis ) const { return WorldAxisOf( this->GetRotation(), axis ); @@ -77,8 +87,10 @@ const Quaternion & Camera_Basic::GetRotation() const { if( this->rotationIsOutOfDate ) { - /*Float4 temp; - ::std::fmod( Float4(this->angularAxis, 0.0f) );*/ + // Maintain rotation resolution by keeping axis within [0, 2pi] (trigonometric methods gets faster too) + Float4 numerator; + ::std::modf( this->angularAxis * (0.5f / pi), numerator.xyz ); + this->angularAxis -= ((2.0f * pi) * numerator).xyz; this->rotation = Rotation( this->angularAxis ); this->rotationIsOutOfDate = false; diff --git a/Code/Game/DanBiasGame/GameClientState/Camera_Basic.h b/Code/Game/DanBiasGame/GameClientState/Camera_Basic.h index ca317db0..c2a65e14 100644 --- a/Code/Game/DanBiasGame/GameClientState/Camera_Basic.h +++ b/Code/Game/DanBiasGame/GameClientState/Camera_Basic.h @@ -21,6 +21,8 @@ public: void Move( const ::Oyster::Math::Float3 &deltaPosition ); void Rotate( const ::Oyster::Math::Float3 &deltaAngularAxis ); + const ::Oyster::Math::Float3 & GetPosition() const; + const ::Oyster::Math::Float3 & GetAngularAxis() const; ::Oyster::Math::Float3 GetNormalOf( const ::Oyster::Math::Float3 &axis ) const; const ::Oyster::Math::Quaternion & GetRotation() const; ::Oyster::Math::Float3x3 & GetRotationMatrix( ::Oyster::Math::Float3x3 &targetMem ) const; @@ -30,8 +32,9 @@ public: ::Oyster::Math::Float4x4 & GetViewsProjMatrix( Oyster::Math::Float4x4 &targetMem = ::Oyster::Math::Float4x4() ) const; private: - ::Oyster::Math::Float3 translation, angularAxis; - ::Oyster::Math::Float4x4 projection; + ::Oyster::Math::Float3 translation; + mutable ::Oyster::Math::Float3 angularAxis; + ::Oyster::Math::Float4x4 projection; mutable ::Oyster::Math::Quaternion rotation; mutable bool rotationIsOutOfDate; }; From b43581856797f352c249e0a6fa14c8203f3fc8a9 Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Mon, 10 Feb 2014 15:19:55 +0100 Subject: [PATCH 09/50] Added Camera_FPS --- Code/Game/DanBiasGame/DanBiasGame.vcxproj | 2 + .../GameClientState/Camera_FPS.cpp | 181 ++++++++++++++++++ .../DanBiasGame/GameClientState/Camera_FPS.h | 61 ++++++ 3 files changed, 244 insertions(+) create mode 100644 Code/Game/DanBiasGame/GameClientState/Camera_FPS.cpp create mode 100644 Code/Game/DanBiasGame/GameClientState/Camera_FPS.h diff --git a/Code/Game/DanBiasGame/DanBiasGame.vcxproj b/Code/Game/DanBiasGame/DanBiasGame.vcxproj index abb0d4c3..cd56f8cf 100644 --- a/Code/Game/DanBiasGame/DanBiasGame.vcxproj +++ b/Code/Game/DanBiasGame/DanBiasGame.vcxproj @@ -197,6 +197,7 @@ + @@ -214,6 +215,7 @@ + diff --git a/Code/Game/DanBiasGame/GameClientState/Camera_FPS.cpp b/Code/Game/DanBiasGame/GameClientState/Camera_FPS.cpp new file mode 100644 index 00000000..f4d46f69 --- /dev/null +++ b/Code/Game/DanBiasGame/GameClientState/Camera_FPS.cpp @@ -0,0 +1,181 @@ +#include "Camera_FPS.h" + +using namespace ::Oyster::Math3D; + +Camera_FPS::Camera_FPS() +{ // this->head is default set to identity uniformprojection at origo + this->pitchUp = 0.0f; + this->headOffset = + this->body.translation = + this->body.angularAxis = Float3( 0.0f ); + this->body.direction = Float3x3::identity; +} + +Camera_FPS::~Camera_FPS() {} + +Camera_FPS & Camera_FPS::operator = ( const Camera_FPS &camera ) +{ + this->head = camera.head; + this->pitchUp = camera.pitchUp; + this->headOffset = camera.headOffset; + this->body.translation = camera.body.translation; + this->body.angularAxis = camera.body.angularAxis; + this->body.direction = camera.body.direction; + return *this; +} + +void Camera_FPS::SetHeadOffset( const Float3 &translation ) +{ + this->head.Move( translation - this->headOffset ); + this->headOffset = translation; +} + +void Camera_FPS::SetPosition( const Float3 &translation ) +{ + this->head.Move( translation - this->body.translation ); + this->body.translation = translation; +} + +void Camera_FPS::SetAngular( const Float3 &axis ) +{ + this->head.SetAngular( axis ); + this->pitchUp = 0.0f; + this->body.angularAxis = axis; +} + +void Camera_FPS::SetProjection( const Float4x4 &matrix ) +{ + this->head.SetProjection( matrix ); +} + +void Camera_FPS::SetOrthographicProjection( Float width, Float height, Float nearClip, Float farClip ) +{ + this->head.SetOrthographicProjection( width, height, nearClip, farClip ); +} + +void Camera_FPS::SetPerspectiveProjection( Float verticalFoV, Float aspectRatio, Float nearClip, Float farClip ) +{ + this->head.SetPerspectiveProjection( verticalFoV, aspectRatio, nearClip, farClip ); +} + +void Camera_FPS::UpdateOrientation() +{ + RotationMatrix( Rotation(this->body.angularAxis), this->body.direction ); + + Float4x4 orientation = Float4x4( Float4(this->body.direction.v[0], 0.0f), + Float4(this->body.direction.v[1], 0.0f), + Float4(this->body.direction.v[2], 0.0f), + Float4(this->body.translation, 1.0f) ); + + this->head.SetPosition( (orientation * Float4(this->headOffset, 1.0f)).xyz ); +} + +void Camera_FPS::SnapUpToNormal( const Float3 &normal ) +{ + SnapAngularAxis( this->body.angularAxis, this->body.direction.v[1], normal, this->body.angularAxis ); + this->head.SetAngular( this->body.angularAxis + this->pitchUp * Float3::standard_unit_x ); +} + +void Camera_FPS::Move( const Float3 &deltaPosition ) +{ + this->head.Move( deltaPosition ); + this->body.translation += deltaPosition; +} + +void Camera_FPS::Rotate( const Float3 &deltaAngularAxis ) +{ + this->head.Rotate( deltaAngularAxis ); + this->body.angularAxis += deltaAngularAxis; +} + +void Camera_FPS::MoveForward( Float distance ) +{ + this->MoveBackward( -distance ); +} + +void Camera_FPS::MoveBackward( Float distance ) +{ + this->Move( distance * this->body.direction.v[2] ); +} + +void Camera_FPS::StrafeRight( Float distance ) +{ + this->Move( distance * this->body.direction.v[0] ); +} + +void Camera_FPS::StrafeLeft( Float distance ) +{ + this->StrafeRight( -distance ); +} + +void Camera_FPS::PitchUp( Float radian ) +{ + this->pitchUp += radian; + this->head.SetAngular( this->body.angularAxis + this->pitchUp * this->body.direction.v[0] ); +} + +void Camera_FPS::PitchDown( Float radian ) +{ + this->PitchDown( -radian ); +} + +void Camera_FPS::YawRight( Float radian ) +{ + this->YawLeft( -radian ); +} + +void Camera_FPS::YawLeft( Float radian ) +{ + this->body.angularAxis += radian * this->body.direction.v[1]; + this->head.SetAngular( this->body.angularAxis + this->pitchUp * this->body.direction.v[0] ); +} + +const Float3 & Camera_FPS::GetHeadOffset() const +{ + return this->headOffset; +} + +const Float3 & Camera_FPS::GetPosition() const +{ + return this->body.translation; +} + +Float4x4 & Camera_FPS::GetViewMatrix( Float4x4 &targetMem ) const +{ + return this->head.GetViewMatrix( targetMem ); +} + +const Float4x4 & Camera_FPS::GetProjectionMatrix() const +{ + return this->head.GetProjectionMatrix(); +} + +Float4x4 & Camera_FPS::GetViewsProjMatrix( Float4x4 &targetMem ) const +{ + return this->head.GetViewsProjMatrix( targetMem ); +} + +Float3 Camera_FPS::GetNormalOf( const Float3 &axis ) const +{ + return this->head.GetNormalOf( axis ); +} + +Float3 Camera_FPS::GetRight() const +{ + return this->body.direction.v[0]; +} + +Float3 Camera_FPS::GetUp() const +{ + return this->body.direction.v[1]; +} + +Float3 Camera_FPS::GetLook() const +{ + return this->head.GetNormalOf( -Float3::standard_unit_z ); +} + +Float3 Camera_FPS::GetForward() const +{ + return -this->body.direction.v[2]; +} \ No newline at end of file diff --git a/Code/Game/DanBiasGame/GameClientState/Camera_FPS.h b/Code/Game/DanBiasGame/GameClientState/Camera_FPS.h new file mode 100644 index 00000000..1a464d7b --- /dev/null +++ b/Code/Game/DanBiasGame/GameClientState/Camera_FPS.h @@ -0,0 +1,61 @@ +#ifndef CAMERA_FPS_H +#define CAMERA_FPS_H + +#include "OysterMath.h" +#include "Camera_Basic.h" + +class Camera_FPS +{ +public: + Camera_FPS(); + virtual ~Camera_FPS(); + + Camera_FPS & operator = ( const Camera_FPS &camera ); + + void SetHeadOffset( const ::Oyster::Math::Float3 &translation ); + void SetPosition( const ::Oyster::Math::Float3 &translation ); + void SetAngular( const ::Oyster::Math::Float3 &axis ); + void SetProjection( const ::Oyster::Math::Float4x4 &matrix ); + void SetOrthographicProjection( ::Oyster::Math::Float width, ::Oyster::Math::Float height, ::Oyster::Math::Float nearClip, ::Oyster::Math::Float farClip ); + void SetPerspectiveProjection( ::Oyster::Math::Float verticalFoV, ::Oyster::Math::Float aspectRatio, ::Oyster::Math::Float nearClip, ::Oyster::Math::Float farClip ); + + void UpdateOrientation(); + + void SnapUpToNormal( const ::Oyster::Math::Float3 &normal ); + + void Move( const ::Oyster::Math::Float3 &deltaPosition ); + void Rotate( const ::Oyster::Math::Float3 &deltaAngularAxis ); + + void MoveForward( ::Oyster::Math::Float distance ); + void MoveBackward( ::Oyster::Math::Float distance ); + void StrafeRight( ::Oyster::Math::Float distance ); + void StrafeLeft( ::Oyster::Math::Float distance ); + + void PitchUp( ::Oyster::Math::Float radian ); + void PitchDown( ::Oyster::Math::Float radian ); + void YawRight( ::Oyster::Math::Float radian ); + void YawLeft( ::Oyster::Math::Float radian ); + + const ::Oyster::Math::Float3 & GetHeadOffset() const; + const ::Oyster::Math::Float3 & GetPosition() const; + ::Oyster::Math::Float4x4 & GetViewMatrix( Oyster::Math::Float4x4 &targetMem = ::Oyster::Math::Float4x4() ) const; + const ::Oyster::Math::Float4x4 & GetProjectionMatrix() const; + ::Oyster::Math::Float4x4 & GetViewsProjMatrix( Oyster::Math::Float4x4 &targetMem = ::Oyster::Math::Float4x4() ) const; + ::Oyster::Math::Float3 GetNormalOf( const ::Oyster::Math::Float3 &axis ) const; + ::Oyster::Math::Float3 GetRight() const; + ::Oyster::Math::Float3 GetUp() const; + ::Oyster::Math::Float3 GetLook() const; + ::Oyster::Math::Float3 GetForward() const; + +private: + Camera_Basic head; + ::Oyster::Math::Float pitchUp; + ::Oyster::Math::Float3 headOffset; + struct + { + ::Oyster::Math::Float3 translation, angularAxis; + ::Oyster::Math::Float3x3 direction; + } body; +}; + +#endif \ No newline at end of file From 1e70640d6e2c0d546fe0288486e14c828586dcff Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Mon, 10 Feb 2014 16:30:47 +0100 Subject: [PATCH 10/50] Premerge not compilable --- .../GameClientState/Camera_FPS.cpp | 2 +- .../DanBiasGame/GameClientState/GameState.cpp | 83 +++++++++++-------- .../DanBiasGame/GameClientState/GameState.h | 10 ++- Code/Game/GameServer/GameServer.vcxproj | 3 + Code/OysterMath/OysterMath.h | 2 +- 5 files changed, 61 insertions(+), 39 deletions(-) diff --git a/Code/Game/DanBiasGame/GameClientState/Camera_FPS.cpp b/Code/Game/DanBiasGame/GameClientState/Camera_FPS.cpp index f4d46f69..d1884cef 100644 --- a/Code/Game/DanBiasGame/GameClientState/Camera_FPS.cpp +++ b/Code/Game/DanBiasGame/GameClientState/Camera_FPS.cpp @@ -116,7 +116,7 @@ void Camera_FPS::PitchUp( Float radian ) void Camera_FPS::PitchDown( Float radian ) { - this->PitchDown( -radian ); + this->PitchUp( -radian ); } void Camera_FPS::YawRight( Float radian ) diff --git a/Code/Game/DanBiasGame/GameClientState/GameState.cpp b/Code/Game/DanBiasGame/GameClientState/GameState.cpp index d8547943..e1b129a3 100644 --- a/Code/Game/DanBiasGame/GameClientState/GameState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/GameState.cpp @@ -4,23 +4,22 @@ #include "C_obj/C_DynamicObj.h" #include #include "NetworkClient.h" -#include "Camera.h" +//#include "Camera.h" #include using namespace DanBias::Client; +using namespace ::Oyster::Math3D; struct GameState::myData { myData(){} - Oyster::Math3D::Float4x4 view; - Oyster::Math3D::Float4x4 proj; + //Oyster::Math3D::Float4x4 view; + //Oyster::Math3D::Float4x4 proj; std::vector object; int modelCount; Oyster::Network::NetworkClient* nwClient; gameStateState state; - - -}privData; +} privData; GameState::GameState(void) { @@ -38,12 +37,12 @@ GameState::~GameState(void) bool GameState::Init(Oyster::Network::NetworkClient* nwClient) { // load models - camera = new Camera; + //camera = new Camera; privData = new myData(); privData->state = gameStateState_loading; privData->nwClient = nwClient; privData->state = LoadGame(); - pitch = 0; + //pitch = 0; return true; } GameState::gameStateState GameState::LoadGame() @@ -203,29 +202,37 @@ bool GameState::LoadModels(std::wstring mapFile) return true; } -bool GameState::InitCamera(Oyster::Math::Float3 startPos) +bool GameState::InitCamera( Oyster::Math::Float3 startPos ) { - Oyster::Math::Float3 dir = Oyster::Math::Float3(0,0,1); - Oyster::Math::Float3 up =Oyster::Math::Float3(0,1,0); - Oyster::Math::Float3 pos = Oyster::Math::Float3(0, 0, 20); + camera.SetHeadOffset( Float3(0.0f, 1.0f, -2.0f) ); - camera->LookAt(pos, dir, up); - camera->SetLens(3.14f/2, 1024/768, 1, 1000); + //Oyster::Math::Float3 dir = Oyster::Math::Float3(0,0,1); + //Oyster::Math::Float3 up =Oyster::Math::Float3(0,1,0); + //Oyster::Math::Float3 pos = Oyster::Math::Float3(0, 0, 20); - privData->proj = Oyster::Math3D::ProjectionMatrix_Perspective(Oyster::Math::pi/4,1024.0f/768.0f,.1f,1000); + camera.SetPerspectiveProjection( Oyster::Math::pi/2.0f, 1024.0f/768.0f, 1.0f, 1000.0f ); + Oyster::Graphics::API::SetProjection( Float4x4(camera.GetProjectionMatrix()) ); // TODO: remove copy wrapper when no longer needed + + //camera->LookAt(pos, dir, up); + //camera->SetLens(3.14f/2, 1024/768, 1, 1000); + + //privData->proj = Oyster::Math3D::ProjectionMatrix_Perspective(Oyster::Math::pi/4,1024.0f/768.0f,.1f,1000); //privData->proj = Oyster::Math3D::ProjectionMatrix_Orthographic(1024, 768, 1, 1000); - Oyster::Graphics::API::SetProjection(privData->proj); - camera->UpdateViewMatrix(); - privData->view = camera->View(); - privData->view = Oyster::Math3D::ViewMatrix_LookAtDirection(Oyster::Math::Float3(0,0,-1),Oyster::Math::Float3(0,1,0),startPos); - privData->view = Oyster::Math3D::OrientationMatrix_LookAtDirection(Oyster::Math::Float3(0,0,-1),Oyster::Math::Float3(0,1,0),startPos); - privData->view = Oyster::Math3D::InverseOrientationMatrix(privData->view); + //Oyster::Graphics::API::SetProjection( privData->proj ); + + //camera->UpdateViewMatrix(); + //privData->view = camera->View(); + //privData->view = Oyster::Math3D::ViewMatrix_LookAtDirection(Oyster::Math::Float3(0,0,-1),Oyster::Math::Float3(0,1,0),startPos); + //privData->view = Oyster::Math3D::OrientationMatrix_LookAtDirection(Oyster::Math::Float3(0,0,-1),Oyster::Math::Float3(0,1,0),startPos); + //privData->view = Oyster::Math3D::InverseOrientationMatrix(privData->view); return true; } + void GameState::setClientId(int id) { myId = id; } + GameClientState::ClientState GameState::Update(float deltaTime, InputClass* KeyInput) { switch (privData->state) @@ -246,7 +253,8 @@ GameClientState::ClientState GameState::Update(float deltaTime, InputClass* KeyI // update objects { readKeyInput(KeyInput); - camera->UpdateViewMatrix(); + camera.UpdateOrientation(); + //camera->UpdateViewMatrix(); } break; @@ -262,10 +270,13 @@ GameClientState::ClientState GameState::Update(float deltaTime, InputClass* KeyI } bool GameState::Render() { - Oyster::Graphics::API::SetView(camera->View()); + Oyster::Graphics::API::SetView( camera.GetViewMatrix() ); + + //Oyster::Graphics::API::SetView(camera->View()); //Oyster::Graphics::API::SetProjection(camera->Proj()); //Oyster::Graphics::API::SetView(privData->view); - Oyster::Graphics::API::SetProjection(privData->proj); + //Oyster::Graphics::API::SetProjection(privData->proj); + Oyster::Graphics::API::NewFrame(); for (unsigned int i = 0; i < privData->object.size(); i++) { @@ -355,18 +366,23 @@ void GameState::readKeyInput(InputClass* KeyInput) //send delta mouse movement if (KeyInput->IsMousePressed()) { - camera->Yaw(-KeyInput->GetYaw()); - camera->Pitch(KeyInput->GetPitch()); - pitch = KeyInput->GetPitch(); - camera->UpdateViewMatrix(); + camera.YawRight( KeyInput->GetYaw() ); + camera.PitchUp( KeyInput->GetPitch() ); + camera.UpdateOrientation(); + + //camera->Yaw(-KeyInput->GetYaw()); + //->Pitch(KeyInput->GetPitch()); + //pitch = KeyInput->GetPitch(); + //camera->UpdateViewMatrix(); GameLogic::Protocol_PlayerLook playerLookDir; - Oyster::Math::Float4 look = camera->GetLook(); + Float4 look = Float4( camera.GetLook(), 0.0f ); + //Float4 look = camera->GetLook(); playerLookDir.lookDirX = look.x; playerLookDir.lookDirY = look.y; playerLookDir.lookDirZ = look.z; playerLookDir.deltaX = -KeyInput->GetYaw(); - privData->nwClient->Send(playerLookDir); + privData->nwClient->Send( playerLookDir ); } // shoot @@ -470,10 +486,8 @@ void GameState::Protocol( ObjPos* pos ) Oyster::Math::Float3 objForward = (Oyster::Math::Float3(world[8], world[9], world[10])); Oyster::Math::Float3 pos = Oyster::Math::Float3(world[12], world[13], world[14]); - Oyster::Math::Float3 cameraLook = camera->GetLook(); - Oyster::Math::Float3 cameraUp = camera->GetUp(); - - + //Oyster::Math::Float3 cameraLook = camera->GetLook(); + //Oyster::Math::Float3 cameraUp = camera->GetUp(); /*Oyster::Math::Float3 newUp = cameraUp.Dot(up); up *= newUp; @@ -481,6 +495,7 @@ void GameState::Protocol( ObjPos* pos ) Oyster::Math::Float3 newLook = up.Cross(right); newLook.Normalize();*/ + camera->setRight(right); camera->setUp(up); camera->setLook(objForward); diff --git a/Code/Game/DanBiasGame/GameClientState/GameState.h b/Code/Game/DanBiasGame/GameClientState/GameState.h index d555134c..8a5fb4ff 100644 --- a/Code/Game/DanBiasGame/GameClientState/GameState.h +++ b/Code/Game/DanBiasGame/GameClientState/GameState.h @@ -3,7 +3,10 @@ #include "GameClientState.h" #include "OysterMath.h" #include -#include "Camera.h" + +//#include "Camera.h" +#include "Camera_FPS.h" + namespace DanBias { namespace Client @@ -24,10 +27,11 @@ private: bool key_strafeLeft; bool key_Shoot; bool key_Jump; - Camera* camera; + Camera_FPS camera; + //Camera* camera; int myId; - float pitch; + //float pitch; struct myData; myData* privData; public: diff --git a/Code/Game/GameServer/GameServer.vcxproj b/Code/Game/GameServer/GameServer.vcxproj index 23bf0eb0..387afb29 100644 --- a/Code/Game/GameServer/GameServer.vcxproj +++ b/Code/Game/GameServer/GameServer.vcxproj @@ -200,6 +200,9 @@ {f10cbc03-9809-4cba-95d8-327c287b18ee} + + {35aea3c0-e0a7-4e1e-88cd-514aa5a442b1} + {b1195bb9-b3a5-47f0-906c-8dea384d1520} diff --git a/Code/OysterMath/OysterMath.h b/Code/OysterMath/OysterMath.h index 4449db83..f0ff076b 100644 --- a/Code/OysterMath/OysterMath.h +++ b/Code/OysterMath/OysterMath.h @@ -165,7 +165,7 @@ namespace Oyster { namespace Math3D //! Oyster's native math library specialized Quaternion Rotation( const Float4 &angularAxis ); /** @todo TODO: add doc */ - Float3x3 & RotationMatrix( const Quaternion &rotationQuaternion, Float3x3 &targetMem = Float3x3() ); + Float3x3 & RotationMatrix( const Quaternion &rotationQuaternion, Float3x3 &targetMem ); /** @todo TODO: add doc */ Float4x4 & RotationMatrix( const Quaternion &rotationQuaternion, Float4x4 &targetMem = Float4x4() ); From d5e85b4258da5d6ab94d33b1a74a7ea482e2c421 Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Tue, 11 Feb 2014 09:32:49 +0100 Subject: [PATCH 11/50] minor refractoring --- .../DanBiasGame/GameClientState/Camera_Basic.cpp | 6 +++--- Code/OysterMath/LinearMath.h | 16 ++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Code/Game/DanBiasGame/GameClientState/Camera_Basic.cpp b/Code/Game/DanBiasGame/GameClientState/Camera_Basic.cpp index 4878f3c4..750cf2de 100644 --- a/Code/Game/DanBiasGame/GameClientState/Camera_Basic.cpp +++ b/Code/Game/DanBiasGame/GameClientState/Camera_Basic.cpp @@ -88,9 +88,9 @@ const Quaternion & Camera_Basic::GetRotation() const if( this->rotationIsOutOfDate ) { // Maintain rotation resolution by keeping axis within [0, 2pi] (trigonometric methods gets faster too) - Float4 numerator; - ::std::modf( this->angularAxis * (0.5f / pi), numerator.xyz ); - this->angularAxis -= ((2.0f * pi) * numerator).xyz; + Float4 integer; + ::std::modf( this->angularAxis * (0.5f / pi), integer.xyz ); + this->angularAxis -= ((2.0f * pi) * integer).xyz; this->rotation = Rotation( this->angularAxis ); this->rotationIsOutOfDate = false; diff --git a/Code/OysterMath/LinearMath.h b/Code/OysterMath/LinearMath.h index 2f01dbca..a6d48eb2 100644 --- a/Code/OysterMath/LinearMath.h +++ b/Code/OysterMath/LinearMath.h @@ -125,17 +125,17 @@ namespace std } /******************************************************************* - * @param numerator of the vector vec - * @return the denomiator of the vector vec. + * @param integer part of the elements in vector vec + * @return the fract part of the elements in vector vec. *******************************************************************/ template - inline ::LinearAlgebra::Vector3 modf( const ::LinearAlgebra::Vector3 &vec, ::LinearAlgebra::Vector3 &numerator ) + inline ::LinearAlgebra::Vector3 modf( const ::LinearAlgebra::Vector3 &vec, ::LinearAlgebra::Vector3 &integer ) { - ::LinearAlgebra::Vector3 denominator; - denominator.x = (ScalarType)modf( vec.x, &numerator.x ); - denominator.y = (ScalarType)modf( vec.y, &numerator.y ); - denominator.z = (ScalarType)modf( vec.z, &numerator.z ); - return denominator; + ::LinearAlgebra::Vector3 fract; + fract.x = (ScalarType)modf( vec.x, &integer.x ); + fract.y = (ScalarType)modf( vec.y, &integer.y ); + fract.z = (ScalarType)modf( vec.z, &integer.z ); + return fract; } /******************************************************************* From 03ab4affb723821149dd4ce1e2a6b8ac582e6ced Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Tue, 11 Feb 2014 13:27:33 +0100 Subject: [PATCH 12/50] Minor fixes --- .../DanBiasGame/GameClientState/GameState.cpp | 116 +++++++++--------- 1 file changed, 57 insertions(+), 59 deletions(-) diff --git a/Code/Game/DanBiasGame/GameClientState/GameState.cpp b/Code/Game/DanBiasGame/GameClientState/GameState.cpp index 7baf6518..51e9ae39 100644 --- a/Code/Game/DanBiasGame/GameClientState/GameState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/GameState.cpp @@ -5,9 +5,9 @@ //#include "Camera.h" #include -using namespace DanBias::Client; +using namespace ::DanBias::Client; using namespace ::Oyster::Math3D; -using namespace Oyster::Math; +using namespace ::Oyster::Math; struct GameState::myData { @@ -29,7 +29,7 @@ GameState::GameState(void) GameState::~GameState(void) { - delete this->camera; + //delete this->camera; delete this->privData; } bool GameState::Init(Oyster::Network::NetworkClient* nwClient) @@ -95,9 +95,9 @@ bool GameState::LoadModels() // add world model ModelInitData modelData; - modelData.position = Oyster::Math::Float3(0,0,0); - modelData.rotation = Oyster::Math::Quaternion::identity; - modelData.scale = Oyster::Math::Float3(2,2,2); + modelData.position = Float3(0,0,0); + modelData.rotation = Quaternion::identity; + modelData.scale = Float3(2,2,2); modelData.modelPath = L"world_earth.dan"; modelData.id = id++; @@ -107,15 +107,15 @@ bool GameState::LoadModels() // add box model - modelData.position = Oyster::Math::Float3(0,0,0); - modelData.rotation = Oyster::Math::Quaternion::identity; - modelData.scale = Oyster::Math::Float3(1,1,1); + modelData.position = Float3(0,0,0); + modelData.rotation = Quaternion::identity; + modelData.scale = Float3(1,1,1); modelData.modelPath = L"crate_colonists.dan"; for(int i =0; i< nrOfBoxex; i ++) { - modelData.position = Oyster::Math::Float3(4,320,0); + modelData.position = Float3(4,320,0); modelData.id = id++; this->dynamicObjects.Push(new C_DynamicObj()); @@ -124,7 +124,7 @@ bool GameState::LoadModels() // add crystal model - modelData.position = Oyster::Math::Float3(10, 301, 0); + modelData.position = Float3(10, 301, 0); modelData.modelPath = L"crystalformation_b.dan"; modelData.id = id++; // load models @@ -132,8 +132,8 @@ bool GameState::LoadModels() this->dynamicObjects[this->dynamicObjects.Size() -1 ]->Init(modelData); // add house model - modelData.position = Oyster::Math::Float3(-50, 290, 0); - //Oyster::Math3D::Float4x4 rot = Oyster::Math3D::RotationMatrix(Oyster::Math::Float3(0 ,Utility::Value::Radian(90.0f), 0)); + modelData.position = Float3(-50, 290, 0); + //Oyster::Math3D::Float4x4 rot = Oyster::Math3D::RotationMatrix(Float3(0 ,Utility::Value::Radian(90.0f), 0)); modelData.visible = true; modelData.modelPath = L"building_corporation.dan"; @@ -144,7 +144,7 @@ bool GameState::LoadModels() // add player model - modelData.position = Oyster::Math::Float3(0, 320, 0); + modelData.position = Float3(0, 320, 0); modelData.modelPath = L"char_still_sizeref.dan"; modelData.id = id++; // load models @@ -152,7 +152,7 @@ bool GameState::LoadModels() this->dynamicObjects[this->dynamicObjects.Size() -1 ]->Init(modelData); // add player model 2 - modelData.position = Oyster::Math::Float3(50, 320, 0); + modelData.position = Float3(50, 320, 0); modelData.modelPath = L"char_still_sizeref.dan"; modelData.id = id++; // load models @@ -160,7 +160,7 @@ bool GameState::LoadModels() this->dynamicObjects[this->dynamicObjects.Size() -1 ]->Init(modelData); // add jumppad - modelData.position = Oyster::Math::Float3(4, 300.3, 0); + modelData.position = Float3(4.0f, 300.3f, 0.0f); modelData.modelPath = L"jumppad_round.dan"; modelData.id = id++; // load models @@ -168,8 +168,8 @@ bool GameState::LoadModels() this->dynamicObjects[this->dynamicObjects.Size() -1 ]->Init(modelData); // add sky sphere - modelData.position = Oyster::Math::Float3(0,0,0); - modelData.scale = Oyster::Math::Float3(800,800,800); + modelData.position = Float3(0,0,0); + modelData.scale = Float3(800,800,800); modelData.modelPath = L"skysphere.dan"; modelData.id = id++; // load models @@ -202,8 +202,8 @@ bool GameState::LoadModels(std::string mapFile) modelData.modelPath.assign(staticObjData->ModelFile.begin(), staticObjData->ModelFile.end()); modelData.visible = true; //modelData.position = ; - //modelData.rotation = Oyster::Math::Quaternion(Oyster::Math::Float3(2,2,-2), 1); - //modelData.scale = Oyster::Math::Float3(2,2,2); + //modelData.rotation = Quaternion(Float3(2,2,-2), 1); + //modelData.scale = Float3(2,2,2); modelData.id = modelId++; this->staticObjects.Push(new C_StaticObj()); @@ -214,8 +214,8 @@ bool GameState::LoadModels(std::string mapFile) { GameLogic::ObjectHeader* dynamicObjData = ((GameLogic::ObjectHeader*)obj); //modelData.position = ; - //modelData.rotation = Oyster::Math::Quaternion(Oyster::Math::Float3(2,2,-2), 1); - //modelData.scale = Oyster::Math::Float3(2,2,2); + //modelData.rotation = Quaternion(Float3(2,2,-2), 1); + //modelData.scale = Float3(2,2,2); modelData.modelPath.assign(dynamicObjData->ModelFile.begin(), dynamicObjData->ModelFile.end()); modelData.visible = true; modelData.id = modelId++; @@ -246,8 +246,8 @@ bool GameState::LoadModels(std::string mapFile) myId += modelId++; // add player model //modelData.position = ; - //modelData.rotation = Oyster::Math::Quaternion(Oyster::Math::Float3(2,2,-2), 1); - //modelData.scale = Oyster::Math::Float3(2,2,2); + //modelData.rotation = Quaternion(Float3(2,2,-2), 1); + //modelData.scale = Float3(2,2,2); modelData.visible = true; @@ -274,25 +274,25 @@ bool GameState::InitCamera( Float3 startPos ) //camera->LookAt(pos, dir, up); //camera->SetLens(3.14f/2, 1024/768, 1, 1000); - camera.SetPerspectiveProjection( Oyster::Math::pi/2.0f, 1024.0f/768.0f, 1.0f, 1000.0f ); + camera.SetPerspectiveProjection( pi/2.0f, 1024.0f/768.0f, 1.0f, 1000.0f ); Oyster::Graphics::API::SetProjection( Float4x4(camera.GetProjectionMatrix()) ); // TODO: remove copy wrapper when no longer needed //camera->LookAt(pos, dir, up); //camera->SetLens(3.14f/2, 1024/768, 1, 1000); - //privData->proj = Oyster::Math3D::ProjectionMatrix_Perspective(Oyster::Math::pi/4,1024.0f/768.0f,.1f,1000); + //privData->proj = Oyster::Math3D::ProjectionMatrix_Perspective(pi/4,1024.0f/768.0f,.1f,1000); //camera->UpdateViewMatrix(); //privData->view = camera->View(); - //privData->view = Oyster::Math3D::ViewMatrix_LookAtDirection(Oyster::Math::Float3(0,0,-1),Oyster::Math::Float3(0,1,0),startPos); - //privData->view = Oyster::Math3D::OrientationMatrix_LookAtDirection(Oyster::Math::Float3(0,0,-1),Oyster::Math::Float3(0,1,0),startPos); + //privData->view = Oyster::Math3D::ViewMatrix_LookAtDirection(Float3(0,0,-1),Float3(0,1,0),startPos); + //privData->view = Oyster::Math3D::OrientationMatrix_LookAtDirection(Float3(0,0,-1),Float3(0,1,0),startPos); //Oyster::Graphics::API::SetProjection(camera->Proj()); //privData->view = Oyster::Math3D::InverseOrientationMatrix(privData->view); return true; } -void GameState::InitiatePlayer(int id, std::wstring modelName, Oyster::Math::Float4x4 world) +void GameState::InitiatePlayer(int id, std::wstring modelName, Float4x4 world) { myId = id; @@ -300,9 +300,9 @@ void GameState::InitiatePlayer(int id, std::wstring modelName, Oyster::Math::Flo C_Object* obj; modelData.visible = true; //modelData.world = world; - modelData.position = Oyster::Math::Float3(world[12], world[13], world[14]); - modelData.rotation = Oyster::Math::Quaternion(Oyster::Math::Float3(0,0,0), 1); - modelData.scale = Oyster::Math::Float3(1,1,1); + modelData.position = Float3(world[12], world[13], world[14]); + modelData.rotation = Quaternion(Float3(0,0,0), 1); + modelData.scale = Float3(1,1,1); modelData.modelPath = modelName; modelData.id = myId; @@ -311,32 +311,30 @@ void GameState::InitiatePlayer(int id, std::wstring modelName, Oyster::Math::Flo this->dynamicObjects[this->dynamicObjects.Size() -1 ]->Init(modelData); - Oyster::Math::Float3 right = Oyster::Math::Float3(world[0], world[1], world[2]); - Oyster::Math::Float3 up = Oyster::Math::Float3(world[4], world[5], world[6]); - Oyster::Math::Float3 objForward = (Oyster::Math::Float3(world[8], world[9], world[10])); - Oyster::Math::Float3 pos = Oyster::Math::Float3(world[12], world[13], world[14]); + Float3 right = Float3(world[0], world[1], world[2]); + Float3 up = Float3(world[4], world[5], world[6]); + Float3 objForward = (Float3(world[8], world[9], world[10])); + Float3 pos = Float3(world[12], world[13], world[14]); - Oyster::Math::Float3 cameraLook = camera->GetLook(); - Oyster::Math::Float3 cameraUp = camera->GetUp(); + //Float3 cameraLook = camera->GetLook(); + //Float3 cameraUp = camera->GetUp(); - - - /*Oyster::Math::Float3 newUp = cameraUp.Dot(up); + /*Float3 newUp = cameraUp.Dot(up); up *= newUp; up.Normalize(); - Oyster::Math::Float3 newLook = up.Cross(right); + Float3 newLook = up.Cross(right); newLook.Normalize();*/ - camera->setRight(right); - camera->setUp(up); - camera->setLook(objForward); + //camera->setRight(right); + //camera->setUp(up); + //camera->setLook(objForward); - up *= 2; - objForward *= -3; - Oyster::Math::Float3 cameraPos = up + pos + objForward; - camera->SetPosition(cameraPos); + //up *= 2; + //objForward *= -3; + //Float3 cameraPos = up + pos + objForward; + //camera->SetPosition(cameraPos); - camera->UpdateViewMatrix(); + //camera->UpdateViewMatrix(); } @@ -568,11 +566,11 @@ void GameState::Protocol(ProtocolStruct* pos) void GameState::Protocol( PlayerPos* pos ) { - //Oyster::Math::Float4x4 world, translate; + //Float4x4 world, translate; - //world = Oyster::Math::Float4x4::identity; - //translate = Oyster::Math::Float4x4::identity; - //translate = Oyster::Math3D::TranslationMatrix(Oyster::Math::Float3(pos->playerPos[0],pos->playerPos[1],pos->playerPos[2])); + //world = Float4x4::identity; + //translate = Float4x4::identity; + //translate = Oyster::Math3D::TranslationMatrix(Float3(pos->playerPos[0],pos->playerPos[1],pos->playerPos[2])); //world = world * translate; ////privData->object[0]->setPos( world ); //for (unsigned int i = 0; i < dynamicObjects.Size(); i++) @@ -583,7 +581,7 @@ void GameState::Protocol( PlayerPos* pos ) void GameState::Protocol( ObjPos* pos ) { - Oyster::Math::Float4x4 world; + Float4x4 world; for(int i = 0; i<16; i++) { world[i] = pos->worldPos[i]; @@ -607,10 +605,10 @@ void GameState::Protocol( ObjPos* pos ) //Float3 cameraLook = camera->GetLook(); //Float3 cameraUp = camera->GetUp(); - /*Oyster::Math::Float3 newUp = cameraUp.Dot(up); + /*Float3 newUp = cameraUp.Dot(up); up *= newUp; up.Normalize(); - Oyster::Math::Float3 newLook = up.Cross(right); + Float3 newLook = up.Cross(right); newLook.Normalize();*/ @@ -620,7 +618,7 @@ void GameState::Protocol( ObjPos* pos ) up *= 1; objForward *= -2; - Oyster::Math::Float3 cameraPos = pos + up + objForward; + Float3 cameraPos = pos + up + objForward; //camera->SetPosition(cameraPos); //camera->UpdateViewMatrix(); @@ -632,7 +630,7 @@ void GameState::Protocol( ObjPos* pos ) void GameState::Protocol( NewObj* newObj ) { - Oyster::Math::Float4x4 world; + Float4x4 world; for(int i = 0; i<16; i++) { world[i] = newObj->worldPos[i]; From 058eada44cb1a9b16534ebca0b384228aec382ad Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Tue, 11 Feb 2014 14:12:14 +0100 Subject: [PATCH 13/50] Added missing include lines --- Code/Game/DanBiasGame/GameClientRecieverFunc.h | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Code/Game/DanBiasGame/GameClientRecieverFunc.h b/Code/Game/DanBiasGame/GameClientRecieverFunc.h index 15b0cdab..0112e2b2 100644 --- a/Code/Game/DanBiasGame/GameClientRecieverFunc.h +++ b/Code/Game/DanBiasGame/GameClientRecieverFunc.h @@ -4,13 +4,16 @@ //WTF!? No headers included??? #include "../DanBiasGame/Include/DanBiasGame.h" #include "../GameProtocols/GeneralProtocols.h" -#include "..\GameProtocols\Protocols.h" +#include "../GameProtocols/Protocols.h" +#include "../Network/NetworkAPI/NetworkClient.h" +#include "GameClientState\GameClientState.h" +#include "GameClientState\GameState.h" + #include namespace DanBias { - - struct GameRecieverObject :public Oyster::Network::NetworkClient + struct GameRecieverObject : public Oyster::Network::NetworkClient { Client::GameClientState* gameClientState; From c3b2c1e912ed377950bb8f9e66e2d3d1dd06d19e Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Tue, 11 Feb 2014 14:13:24 +0100 Subject: [PATCH 14/50] premerge --- .../DanBiasGame/GameClientState/GameState.cpp | 37 ++++++++++++------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/Code/Game/DanBiasGame/GameClientState/GameState.cpp b/Code/Game/DanBiasGame/GameClientState/GameState.cpp index 51e9ae39..05ccd23f 100644 --- a/Code/Game/DanBiasGame/GameClientState/GameState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/GameState.cpp @@ -566,6 +566,9 @@ void GameState::Protocol(ProtocolStruct* pos) void GameState::Protocol( PlayerPos* pos ) { + camera.SetPosition( pos->position ); + camera.SetAngular( pos->angularAxis ); + //Float4x4 world, translate; //world = Float4x4::identity; @@ -581,26 +584,32 @@ void GameState::Protocol( PlayerPos* pos ) void GameState::Protocol( ObjPos* pos ) { - Float4x4 world; - for(int i = 0; i<16; i++) - { - world[i] = pos->worldPos[i]; - } + //Float4x4 world; + //for(int i = 0; i<16; i++) + //{ + // world[i] = pos->worldPos[i]; + //} + //printf("pos for obj %d, ",pos->object_ID ); + for (unsigned int i = 0; i < dynamicObjects.Size(); i++) { if(dynamicObjects[i]->GetId() == pos->object_ID) { + dynamicObjects[i]->setPos( pos->position ); + dynamicObjects[i]->setRot( Quaternion(Float3(pos->rotation), pos->rotation[3]) ); - dynamicObjects[i]->setPos(Float3(world[12], world[13], world[14])); - + //dynamicObjects[i]->setPos(Float3(world[12], world[13], world[14])); if(dynamicObjects[i]->GetId() == myId) // playerobj { - Float3 right = Float3(world[0], world[1], world[2]); - Float3 up = Float3(world[4], world[5], world[6]); - Float3 objForward = Float3(world[8], world[9], world[10]); - Float3 pos = Float3(world[12], world[13], world[14]); + camera.SetPosition( pos->position ); + camera.SetAngular( pos->angularAxis ); + + //Float3 right = Float3(world[0], world[1], world[2]); + //Float3 up = Float3(world[4], world[5], world[6]); + //Float3 objForward = Float3(world[8], world[9], world[10]); + //Float3 pos = Float3(world[12], world[13], world[14]); //Float3 cameraLook = camera->GetLook(); //Float3 cameraUp = camera->GetUp(); @@ -616,9 +625,9 @@ void GameState::Protocol( ObjPos* pos ) //camera->setUp(up); //camera->setLook(objForward); - up *= 1; - objForward *= -2; - Float3 cameraPos = pos + up + objForward; + //up *= 1; + //objForward *= -2; + //Float3 cameraPos = pos + up + objForward; //camera->SetPosition(cameraPos); //camera->UpdateViewMatrix(); From 46d1fa13e13f244358955a21dbb5163d5ddb3d4e Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Tue, 11 Feb 2014 14:14:06 +0100 Subject: [PATCH 15/50] premerge --- Code/Game/DanBiasGame/GameClientState/GameClientState.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Code/Game/DanBiasGame/GameClientState/GameClientState.h b/Code/Game/DanBiasGame/GameClientState/GameClientState.h index 378eeefc..5629a4b6 100644 --- a/Code/Game/DanBiasGame/GameClientState/GameClientState.h +++ b/Code/Game/DanBiasGame/GameClientState/GameClientState.h @@ -20,7 +20,10 @@ public: struct ObjPos :public ProtocolStruct { int object_ID; - float worldPos[16]; + //float worldPos[16]; + float position[3]; + float angularAxis[3]; + float rotation[4]; }; struct NewObj :public ProtocolStruct { @@ -39,7 +42,9 @@ public: }; struct PlayerPos :public ProtocolStruct { - float playerPos[3]; + float position[3]; + float angularAxis[3]; +// float playerPos[3]; }; struct PlayerMove :public ProtocolStruct { From 0f3c5af04af7dc2850f5f2528d0104e905cedbd4 Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Tue, 11 Feb 2014 14:47:57 +0100 Subject: [PATCH 16/50] pre merge --- .../Game/DanBiasGame/GameClientRecieverFunc.h | 19 ++- .../GameClientState/GameClientState.h | 137 +++++++++--------- .../DanBiasGame/GameClientState/GameState.cpp | 6 +- 3 files changed, 90 insertions(+), 72 deletions(-) diff --git a/Code/Game/DanBiasGame/GameClientRecieverFunc.h b/Code/Game/DanBiasGame/GameClientRecieverFunc.h index 0112e2b2..37d504ec 100644 --- a/Code/Game/DanBiasGame/GameClientRecieverFunc.h +++ b/Code/Game/DanBiasGame/GameClientRecieverFunc.h @@ -9,6 +9,7 @@ #include "GameClientState\GameClientState.h" #include "GameClientState\GameState.h" + #include namespace DanBias @@ -101,13 +102,27 @@ namespace DanBias break; case protocol_Gameplay_ObjectPosition: { + // 0: reserved + // 1: objectID + // 2,3,4: position + // 5,6,7,8: rotation quaternion + + GameLogic::Protocol_ObjectPosition data; Client::GameClientState::ObjPos protocolData; protocolData.object_ID = p[1].value.netInt; - for(int i = 0; i< 16; i++) + + for( int i = 0; i < 3; ++i ) { - protocolData.worldPos[i] = p[i+2].value.netFloat; + protocolData.position[i] = p[i+2].value.netFloat; + protocolData.rotation[i] = p[i+5].value.netFloat; } + protocolData.rotation[3] = p[8].value.netFloat; + + //for(int i = 0; i< 16; i++) + //{ + // protocolData.worldPos[i] = p[i+2].value.netFloat; + //} if(dynamic_cast(gameClientState)) ((Client::GameState*)gameClientState)->Protocol(&protocolData); diff --git a/Code/Game/DanBiasGame/GameClientState/GameClientState.h b/Code/Game/DanBiasGame/GameClientState/GameClientState.h index 5629a4b6..183e8174 100644 --- a/Code/Game/DanBiasGame/GameClientState/GameClientState.h +++ b/Code/Game/DanBiasGame/GameClientState/GameClientState.h @@ -5,75 +5,78 @@ #include "L_inputClass.h" #include "NetworkClient.h" -namespace DanBias +namespace DanBias { namespace Client { -namespace Client -{ - -class GameClientState -{ -public: - struct ProtocolStruct + class GameClientState { + public: + struct ProtocolStruct + { + + }; + + struct ObjPos : public ProtocolStruct + { + int object_ID; + //float worldPos[16]; + float position[3]; + float rotation[4]; + }; + + struct NewObj : public ProtocolStruct + { + int object_ID; + char* path; + float worldPos[16]; + }; + + struct RemoveObj : public ProtocolStruct + { + int object_ID; + //particle effect + }; + + struct KeyInput : public ProtocolStruct + { + bool key[6]; + }; + + struct PlayerPos : public ProtocolStruct + { + float position[3]; + float angularAxis[3]; + // float playerPos[3]; + }; + + struct PlayerMove : public ProtocolStruct + { + float playerPos[3]; + }; + + struct PlayerName : public ProtocolStruct + { + char name[255]; + }; + + enum ClientState + { + ClientState_Login, + ClientState_Lobby, + ClientState_Lan, + ClientState_LobbyCreated, + ClientState_Game, + ClientState_Same, + }; + + public: + GameClientState(void); + virtual ~GameClientState(void); + virtual bool Init(Oyster::Network::NetworkClient* nwClient) = 0; + virtual ClientState Update(float deltaTime, InputClass* KeyInput) = 0; + virtual bool Render() = 0; + virtual bool Release() = 0; + virtual void Protocol(ProtocolStruct* protocolStruct) = 0; }; - struct ObjPos :public ProtocolStruct - { - int object_ID; - //float worldPos[16]; - float position[3]; - float angularAxis[3]; - float rotation[4]; - }; - struct NewObj :public ProtocolStruct - { - int object_ID; - char* path; - float worldPos[16]; - }; - struct RemoveObj :public ProtocolStruct - { - int object_ID; - //particle effect - }; - struct KeyInput :public ProtocolStruct - { - bool key[6]; - }; - struct PlayerPos :public ProtocolStruct - { - float position[3]; - float angularAxis[3]; -// float playerPos[3]; - }; - struct PlayerMove :public ProtocolStruct - { - float playerPos[3]; - }; - struct PlayerName :public ProtocolStruct - { - char name[255]; - }; - enum ClientState - { - ClientState_Login, - ClientState_Lobby, - ClientState_Lan, - ClientState_LobbyCreated, - ClientState_Game, - ClientState_Same, - }; - -public: - GameClientState(void); - virtual ~GameClientState(void); - virtual bool Init(Oyster::Network::NetworkClient* nwClient) = 0; - virtual ClientState Update(float deltaTime, InputClass* KeyInput) = 0; - virtual bool Render() = 0; - virtual bool Release() = 0; - virtual void Protocol(ProtocolStruct* protocolStruct) = 0; - -}; -}; -}; +} } #endif \ No newline at end of file diff --git a/Code/Game/DanBiasGame/GameClientState/GameState.cpp b/Code/Game/DanBiasGame/GameClientState/GameState.cpp index 05ccd23f..9759fa09 100644 --- a/Code/Game/DanBiasGame/GameClientState/GameState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/GameState.cpp @@ -566,8 +566,8 @@ void GameState::Protocol(ProtocolStruct* pos) void GameState::Protocol( PlayerPos* pos ) { - camera.SetPosition( pos->position ); - camera.SetAngular( pos->angularAxis ); + //camera.SetPosition( pos->position ); + //camera.SetAngular( pos->angularAxis ); //Float4x4 world, translate; @@ -604,7 +604,7 @@ void GameState::Protocol( ObjPos* pos ) if(dynamicObjects[i]->GetId() == myId) // playerobj { camera.SetPosition( pos->position ); - camera.SetAngular( pos->angularAxis ); + camera.SetAngular( QuaternionToAngularAxis(Quaternion(pos->rotation, pos->rotation[3])).xyz ); //Float3 right = Float3(world[0], world[1], world[2]); //Float3 up = Float3(world[4], world[5], world[6]); From 4d78e30fb84344b491adc188102748ae4cae7e7a Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Wed, 12 Feb 2014 09:02:44 +0100 Subject: [PATCH 17/50] Overhaul of GameState --- Code/DanBias.sln | 890 ++++++++---------- .../Game/DanBiasGame/GameClientRecieverFunc.h | 11 +- .../GameClientState/Camera_FPS.cpp | 4 +- .../GameClientState/GameClientState.h | 57 +- .../DanBiasGame/GameClientState/GameState.cpp | 354 ++++--- .../DanBiasGame/GameClientState/GameState.h | 89 +- Code/Game/GameProtocols/ObjectProtocols.h | 157 +-- .../GameProtocols/ProtocolIdentificationID.h | 1 + Code/Network/NetworkAPI/NetworkClient.cpp | 21 +- Code/Network/NetworkAPI/NetworkClient.h | 5 + 10 files changed, 704 insertions(+), 885 deletions(-) diff --git a/Code/DanBias.sln b/Code/DanBias.sln index 0df8904e..f2bf5f98 100644 --- a/Code/DanBias.sln +++ b/Code/DanBias.sln @@ -5,14 +5,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OysterGraphics", "OysterGra EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OysterMath", "OysterMath\OysterMath.vcxproj", "{F10CBC03-9809-4CBA-95D8-327C287B18EE}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OysterPhysics3D", "OysterPhysics3D\OysterPhysics3D.vcxproj", "{4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Sound", "Sound\Sound.vcxproj", "{34D6295A-00DD-4B1A-8258-97DA2818EC26}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WindowManager", "WindowManager\WindowManager.vcxproj", "{35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Input", "Input\Input.vcxproj", "{7E3990D2-3D94-465C-B58D-64A74B3ECF9B}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Misc", "Misc\Misc.vcxproj", "{2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Network", "Network", "{C27B926E-B3EF-4990-8822-47580E43A0BE}" @@ -23,29 +15,35 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OysterNetworkServer", "Netw EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NetworkDependencies", "Network\NetworkDependencies\NetworkDependencies.vcxproj", "{C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GamePhysics", "GamePhysics\GamePhysics.vcxproj", "{104FA3E9-94D9-4E1D-A941-28A03BC8A095}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Tester", "Tester\Tester.vcxproj", "{1B3BEA4C-CF75-438A-9693-60FB8444BBF3}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Game", "Game", "{B0AFF0DC-5C7E-43DC-9586-CD4E38EB037B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aDanBiasGameLauncher", "Game\aDanBiasGameLauncher\aDanBiasGameLauncher.vcxproj", "{666FEA52-975F-41CD-B224-B19AF3C0ABBA}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DanBiasGame", "Game\DanBiasGame\DanBiasGame.vcxproj", "{2A1BC987-AF42-4500-802D-89CD32FC1309}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Game", "Game", "{20720CA7-795C-45AD-A302-9383A6DD503A}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GameLogic", "Game\GameLogic\GameLogic.vcxproj", "{B1195BB9-B3A5-47F0-906C-8DEA384D1520}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DanBiasLauncher", "Game\DanBiasLauncher\DanBiasLauncher.vcxproj", "{8690FDDF-C5B7-4C42-A337-BD5243F29B85}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NetworkAPI", "Network\NetworkAPI\NetworkAPI.vcxproj", "{460D625F-2AC9-4559-B809-0BA89CEAEDF4}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DanBiasServerLauncher", "Game\DanBiasServerLauncher\DanBiasServerLauncher.vcxproj", "{060B1890-CBF3-4808-BA99-A4776222093B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GameLogic", "Game\GameLogic\GameLogic.vcxproj", "{B1195BB9-B3A5-47F0-906C-8DEA384D1520}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GameProtocols", "Game\GameProtocols\GameProtocols.vcxproj", "{DA2AA800-ED64-4649-8B3B-E7F1E3968B78}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GameServer", "Game\GameServer\GameServer.vcxproj", "{143BD516-20A1-4890-A3E4-F8BFD02220E7}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NetworkAPI", "Network\NetworkAPI\NetworkAPI.vcxproj", "{460D625F-2AC9-4559-B809-0BA89CEAEDF4}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GamePhysics", "GamePhysics\GamePhysics.vcxproj", "{104FA3E9-94D9-4E1D-A941-28A03BC8A095}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Input", "Input\Input.vcxproj", "{7E3990D2-3D94-465C-B58D-64A74B3ECF9B}" +EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OysterPhysics3D", "OysterPhysics3D\OysterPhysics3D.vcxproj", "{4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Sound", "Sound\Sound.vcxproj", "{34D6295A-00DD-4B1A-8258-97DA2818EC26}" -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DanBiasServerLauncher", "Game\DanBiasServerLauncher\DanBiasServerLauncher.vcxproj", "{060B1890-CBF3-4808-BA99-A4776222093B}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GameServer", "Game\GameServer\GameServer.vcxproj", "{143BD516-20A1-4890-A3E4-F8BFD02220E7}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aDanBiasGameLauncher", "Game\aDanBiasGameLauncher\aDanBiasGameLauncher.vcxproj", "{666FEA52-975F-41CD-B224-B19AF3C0ABBA}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WindowManager", "WindowManager\WindowManager.vcxproj", "{35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Physics", "Physics", "{0D86E569-9C74-47F0-BDB2-390C0C9A084B}" EndProject @@ -65,23 +63,19 @@ Global RelWithDebInfo|x64 = RelWithDebInfo|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|Mixed Platforms.ActiveCfg = Release|x64 + {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|Mixed Platforms.Build.0 = Release|x64 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|Win32.ActiveCfg = Debug|Win32 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|Win32.Build.0 = Debug|Win32 - {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|x64.ActiveCfg = Debug|x64 - {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|x64.Build.0 = Debug|x64 + {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|Win32.Deploy.0 = Debug|Win32 + {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|x64.ActiveCfg = Release|x64 + {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|x64.Build.0 = Release|x64 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.MinSizeRel|Win32.ActiveCfg = Release|Win32 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.MinSizeRel|Win32.Build.0 = Release|Win32 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.MinSizeRel|x64.ActiveCfg = Release|x64 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.MinSizeRel|x64.Build.0 = Release|x64 - {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Release|Mixed Platforms.Build.0 = Release|Win32 - {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|Win32.Deploy.0 = Debug|Win32 - {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|x64.ActiveCfg = Release|x64 - {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|x64.Build.0 = Release|x64 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Release|Mixed Platforms.ActiveCfg = Release|x64 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Release|Mixed Platforms.Build.0 = Release|x64 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Release|Win32.ActiveCfg = Release|Win32 @@ -94,20 +88,6 @@ Global {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.RelWithDebInfo|Win32.Build.0 = Release|Win32 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.RelWithDebInfo|x64.ActiveCfg = Release|x64 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.RelWithDebInfo|x64.Build.0 = Release|x64 - {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Debug|Win32.ActiveCfg = Debug|Win32 - {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Debug|Win32.Build.0 = Debug|Win32 - {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Debug|x64.ActiveCfg = Debug|x64 - {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Debug|x64.Build.0 = Debug|x64 - {F10CBC03-9809-4CBA-95D8-327C287B18EE}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 - {F10CBC03-9809-4CBA-95D8-327C287B18EE}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 - {F10CBC03-9809-4CBA-95D8-327C287B18EE}.MinSizeRel|Win32.ActiveCfg = Release|Win32 - {F10CBC03-9809-4CBA-95D8-327C287B18EE}.MinSizeRel|Win32.Build.0 = Release|Win32 - {F10CBC03-9809-4CBA-95D8-327C287B18EE}.MinSizeRel|x64.ActiveCfg = Release|x64 - {F10CBC03-9809-4CBA-95D8-327C287B18EE}.MinSizeRel|x64.Build.0 = Release|x64 - {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Release|Mixed Platforms.Build.0 = Release|Win32 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Debug|Mixed Platforms.ActiveCfg = Release|x64 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Debug|Mixed Platforms.Build.0 = Release|x64 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Debug|Win32.ActiveCfg = Debug|Win32 @@ -115,6 +95,12 @@ Global {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Debug|Win32.Deploy.0 = Debug|Win32 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Debug|x64.ActiveCfg = Release|x64 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Debug|x64.Build.0 = Release|x64 + {F10CBC03-9809-4CBA-95D8-327C287B18EE}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 + {F10CBC03-9809-4CBA-95D8-327C287B18EE}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 + {F10CBC03-9809-4CBA-95D8-327C287B18EE}.MinSizeRel|Win32.ActiveCfg = Release|Win32 + {F10CBC03-9809-4CBA-95D8-327C287B18EE}.MinSizeRel|Win32.Build.0 = Release|Win32 + {F10CBC03-9809-4CBA-95D8-327C287B18EE}.MinSizeRel|x64.ActiveCfg = Release|x64 + {F10CBC03-9809-4CBA-95D8-327C287B18EE}.MinSizeRel|x64.Build.0 = Release|x64 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Release|Mixed Platforms.ActiveCfg = Release|x64 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Release|Mixed Platforms.Build.0 = Release|x64 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Release|Win32.ActiveCfg = Release|Win32 @@ -127,6 +113,343 @@ Global {F10CBC03-9809-4CBA-95D8-327C287B18EE}.RelWithDebInfo|Win32.Build.0 = Release|Win32 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.RelWithDebInfo|x64.ActiveCfg = Release|x64 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.RelWithDebInfo|x64.Build.0 = Release|x64 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|Mixed Platforms.ActiveCfg = Release|x64 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|Mixed Platforms.Build.0 = Release|x64 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|Win32.ActiveCfg = Debug|Win32 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|Win32.Build.0 = Debug|Win32 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|Win32.Deploy.0 = Debug|Win32 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|x64.ActiveCfg = Release|x64 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|x64.Build.0 = Release|x64 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.MinSizeRel|Win32.ActiveCfg = Release|Win32 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.MinSizeRel|Win32.Build.0 = Release|Win32 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.MinSizeRel|x64.ActiveCfg = Release|x64 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.MinSizeRel|x64.Build.0 = Release|x64 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Release|Mixed Platforms.ActiveCfg = Release|x64 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Release|Mixed Platforms.Build.0 = Release|x64 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Release|Win32.ActiveCfg = Release|Win32 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Release|Win32.Build.0 = Release|Win32 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Release|x64.ActiveCfg = Release|x64 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Release|x64.Build.0 = Release|x64 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.RelWithDebInfo|Win32.Build.0 = Release|Win32 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.RelWithDebInfo|x64.ActiveCfg = Release|x64 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.RelWithDebInfo|x64.Build.0 = Release|x64 + {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|Mixed Platforms.ActiveCfg = Release|x64 + {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|Mixed Platforms.Build.0 = Release|x64 + {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|Win32.ActiveCfg = Debug|Win32 + {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|Win32.Build.0 = Debug|Win32 + {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|x64.ActiveCfg = Release|x64 + {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|x64.Build.0 = Release|x64 + {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 + {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.MinSizeRel|Win32.ActiveCfg = Release|Win32 + {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.MinSizeRel|x64.ActiveCfg = Release|x64 + {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Release|Mixed Platforms.ActiveCfg = Release|x64 + {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Release|Mixed Platforms.Build.0 = Release|x64 + {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Release|Win32.ActiveCfg = Release|Win32 + {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Release|Win32.Build.0 = Release|Win32 + {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Release|x64.ActiveCfg = Release|x64 + {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Release|x64.Build.0 = Release|x64 + {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 + {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 + {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.RelWithDebInfo|x64.ActiveCfg = Release|x64 + {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|Mixed Platforms.ActiveCfg = Release|x64 + {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|Mixed Platforms.Build.0 = Release|x64 + {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|Win32.ActiveCfg = Debug|Win32 + {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|Win32.Build.0 = Debug|Win32 + {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|x64.ActiveCfg = Release|x64 + {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|x64.Build.0 = Release|x64 + {6A066806-F43F-4B31-A4E3-57179674F460}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 + {6A066806-F43F-4B31-A4E3-57179674F460}.MinSizeRel|Win32.ActiveCfg = Release|Win32 + {6A066806-F43F-4B31-A4E3-57179674F460}.MinSizeRel|x64.ActiveCfg = Release|x64 + {6A066806-F43F-4B31-A4E3-57179674F460}.Release|Mixed Platforms.ActiveCfg = Release|x64 + {6A066806-F43F-4B31-A4E3-57179674F460}.Release|Mixed Platforms.Build.0 = Release|x64 + {6A066806-F43F-4B31-A4E3-57179674F460}.Release|Win32.ActiveCfg = Release|Win32 + {6A066806-F43F-4B31-A4E3-57179674F460}.Release|Win32.Build.0 = Release|Win32 + {6A066806-F43F-4B31-A4E3-57179674F460}.Release|x64.ActiveCfg = Release|x64 + {6A066806-F43F-4B31-A4E3-57179674F460}.Release|x64.Build.0 = Release|x64 + {6A066806-F43F-4B31-A4E3-57179674F460}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 + {6A066806-F43F-4B31-A4E3-57179674F460}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 + {6A066806-F43F-4B31-A4E3-57179674F460}.RelWithDebInfo|x64.ActiveCfg = Release|x64 + {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|Mixed Platforms.ActiveCfg = Release|x64 + {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|Mixed Platforms.Build.0 = Release|x64 + {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|Win32.ActiveCfg = Debug|Win32 + {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|Win32.Build.0 = Debug|Win32 + {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|x64.ActiveCfg = Release|x64 + {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|x64.Build.0 = Release|x64 + {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 + {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.MinSizeRel|Win32.ActiveCfg = Release|Win32 + {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.MinSizeRel|x64.ActiveCfg = Release|x64 + {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Release|Mixed Platforms.ActiveCfg = Release|x64 + {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Release|Mixed Platforms.Build.0 = Release|x64 + {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Release|Win32.ActiveCfg = Release|Win32 + {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Release|Win32.Build.0 = Release|Win32 + {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Release|x64.ActiveCfg = Release|x64 + {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Release|x64.Build.0 = Release|x64 + {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 + {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 + {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.RelWithDebInfo|x64.ActiveCfg = Release|x64 + {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Debug|Mixed Platforms.ActiveCfg = Release|Win32 + {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Debug|Mixed Platforms.Build.0 = Release|Win32 + {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Debug|Win32.ActiveCfg = Debug|Win32 + {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Debug|Win32.Build.0 = Debug|Win32 + {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Debug|x64.ActiveCfg = Release|Win32 + {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Debug|x64.Build.0 = Release|Win32 + {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.MinSizeRel|Mixed Platforms.ActiveCfg = Debug|Win32 + {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.MinSizeRel|Win32.ActiveCfg = Debug|Win32 + {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.MinSizeRel|x64.ActiveCfg = Debug|Win32 + {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Release|Mixed Platforms.Build.0 = Release|Win32 + {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Release|Win32.ActiveCfg = Release|Win32 + {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Release|Win32.Build.0 = Release|Win32 + {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Release|x64.ActiveCfg = Release|Win32 + {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Release|x64.Build.0 = Release|Win32 + {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 + {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 + {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.RelWithDebInfo|x64.ActiveCfg = Release|Win32 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|Win32.ActiveCfg = Debug|Win32 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|Win32.Build.0 = Debug|Win32 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|x64.ActiveCfg = Debug|x64 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|x64.Build.0 = Debug|x64 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.MinSizeRel|Win32.ActiveCfg = Release|Win32 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.MinSizeRel|Win32.Build.0 = Release|Win32 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.MinSizeRel|x64.ActiveCfg = Release|x64 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.MinSizeRel|x64.Build.0 = Release|x64 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Release|Mixed Platforms.Build.0 = Release|Win32 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Release|Win32.ActiveCfg = Release|Win32 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Release|Win32.Build.0 = Release|Win32 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Release|x64.ActiveCfg = Release|x64 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Release|x64.Build.0 = Release|x64 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.RelWithDebInfo|Win32.Build.0 = Release|Win32 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.RelWithDebInfo|x64.ActiveCfg = Release|x64 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.RelWithDebInfo|x64.Build.0 = Release|x64 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.Debug|Win32.ActiveCfg = Debug|Win32 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.Debug|Win32.Build.0 = Debug|Win32 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.Debug|x64.ActiveCfg = Debug|x64 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.Debug|x64.Build.0 = Debug|x64 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.MinSizeRel|Win32.ActiveCfg = Release|Win32 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.MinSizeRel|Win32.Build.0 = Release|Win32 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.MinSizeRel|x64.ActiveCfg = Release|x64 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.MinSizeRel|x64.Build.0 = Release|x64 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.Release|Mixed Platforms.Build.0 = Release|Win32 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.Release|Win32.ActiveCfg = Release|Win32 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.Release|Win32.Build.0 = Release|Win32 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.Release|x64.ActiveCfg = Release|x64 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.Release|x64.Build.0 = Release|x64 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.RelWithDebInfo|Win32.Build.0 = Release|Win32 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.RelWithDebInfo|x64.ActiveCfg = Release|x64 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.RelWithDebInfo|x64.Build.0 = Release|x64 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Debug|Win32.ActiveCfg = Debug|Win32 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Debug|Win32.Build.0 = Debug|Win32 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Debug|x64.ActiveCfg = Debug|x64 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Debug|x64.Build.0 = Debug|x64 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.MinSizeRel|Win32.ActiveCfg = Release|Win32 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.MinSizeRel|Win32.Build.0 = Release|Win32 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.MinSizeRel|x64.ActiveCfg = Release|x64 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.MinSizeRel|x64.Build.0 = Release|x64 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Release|Mixed Platforms.Build.0 = Release|Win32 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Release|Win32.ActiveCfg = Release|Win32 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Release|Win32.Build.0 = Release|Win32 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Release|x64.ActiveCfg = Release|x64 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Release|x64.Build.0 = Release|x64 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.RelWithDebInfo|Win32.Build.0 = Release|Win32 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.RelWithDebInfo|x64.ActiveCfg = Release|x64 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.RelWithDebInfo|x64.Build.0 = Release|x64 + {060B1890-CBF3-4808-BA99-A4776222093B}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {060B1890-CBF3-4808-BA99-A4776222093B}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {060B1890-CBF3-4808-BA99-A4776222093B}.Debug|Win32.ActiveCfg = Debug|Win32 + {060B1890-CBF3-4808-BA99-A4776222093B}.Debug|Win32.Build.0 = Debug|Win32 + {060B1890-CBF3-4808-BA99-A4776222093B}.Debug|x64.ActiveCfg = Debug|x64 + {060B1890-CBF3-4808-BA99-A4776222093B}.Debug|x64.Build.0 = Debug|x64 + {060B1890-CBF3-4808-BA99-A4776222093B}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 + {060B1890-CBF3-4808-BA99-A4776222093B}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 + {060B1890-CBF3-4808-BA99-A4776222093B}.MinSizeRel|Win32.ActiveCfg = Release|Win32 + {060B1890-CBF3-4808-BA99-A4776222093B}.MinSizeRel|Win32.Build.0 = Release|Win32 + {060B1890-CBF3-4808-BA99-A4776222093B}.MinSizeRel|x64.ActiveCfg = Release|x64 + {060B1890-CBF3-4808-BA99-A4776222093B}.MinSizeRel|x64.Build.0 = Release|x64 + {060B1890-CBF3-4808-BA99-A4776222093B}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {060B1890-CBF3-4808-BA99-A4776222093B}.Release|Mixed Platforms.Build.0 = Release|Win32 + {060B1890-CBF3-4808-BA99-A4776222093B}.Release|Win32.ActiveCfg = Release|Win32 + {060B1890-CBF3-4808-BA99-A4776222093B}.Release|Win32.Build.0 = Release|Win32 + {060B1890-CBF3-4808-BA99-A4776222093B}.Release|x64.ActiveCfg = Release|x64 + {060B1890-CBF3-4808-BA99-A4776222093B}.Release|x64.Build.0 = Release|x64 + {060B1890-CBF3-4808-BA99-A4776222093B}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 + {060B1890-CBF3-4808-BA99-A4776222093B}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 + {060B1890-CBF3-4808-BA99-A4776222093B}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 + {060B1890-CBF3-4808-BA99-A4776222093B}.RelWithDebInfo|Win32.Build.0 = Release|Win32 + {060B1890-CBF3-4808-BA99-A4776222093B}.RelWithDebInfo|x64.ActiveCfg = Release|x64 + {060B1890-CBF3-4808-BA99-A4776222093B}.RelWithDebInfo|x64.Build.0 = Release|x64 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Debug|Win32.ActiveCfg = Debug|Win32 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Debug|Win32.Build.0 = Debug|Win32 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Debug|x64.ActiveCfg = Debug|x64 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Debug|x64.Build.0 = Debug|x64 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.MinSizeRel|Win32.ActiveCfg = Release|Win32 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.MinSizeRel|Win32.Build.0 = Release|Win32 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.MinSizeRel|x64.ActiveCfg = Release|x64 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.MinSizeRel|x64.Build.0 = Release|x64 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Release|Mixed Platforms.Build.0 = Release|Win32 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Release|Win32.ActiveCfg = Release|Win32 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Release|Win32.Build.0 = Release|Win32 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Release|x64.ActiveCfg = Release|x64 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Release|x64.Build.0 = Release|x64 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.RelWithDebInfo|Win32.Build.0 = Release|Win32 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.RelWithDebInfo|x64.ActiveCfg = Release|x64 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.RelWithDebInfo|x64.Build.0 = Release|x64 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Debug|Win32.ActiveCfg = Debug|Win32 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Debug|Win32.Build.0 = Debug|Win32 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Debug|x64.ActiveCfg = Debug|x64 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Debug|x64.Build.0 = Debug|x64 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.MinSizeRel|Win32.ActiveCfg = Release|Win32 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.MinSizeRel|Win32.Build.0 = Release|Win32 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.MinSizeRel|x64.ActiveCfg = Release|x64 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.MinSizeRel|x64.Build.0 = Release|x64 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Release|Mixed Platforms.Build.0 = Release|Win32 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Release|Win32.ActiveCfg = Release|Win32 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Release|Win32.Build.0 = Release|Win32 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Release|x64.ActiveCfg = Release|x64 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Release|x64.Build.0 = Release|x64 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.RelWithDebInfo|Win32.Build.0 = Release|Win32 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.RelWithDebInfo|x64.ActiveCfg = Release|x64 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.RelWithDebInfo|x64.Build.0 = Release|x64 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Debug|Win32.ActiveCfg = Debug|Win32 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Debug|Win32.Build.0 = Debug|Win32 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Debug|x64.ActiveCfg = Debug|x64 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Debug|x64.Build.0 = Debug|x64 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.MinSizeRel|Win32.ActiveCfg = Release|Win32 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.MinSizeRel|Win32.Build.0 = Release|Win32 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.MinSizeRel|x64.ActiveCfg = Release|x64 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.MinSizeRel|x64.Build.0 = Release|x64 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Release|Mixed Platforms.Build.0 = Release|Win32 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Release|Win32.ActiveCfg = Release|Win32 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Release|Win32.Build.0 = Release|Win32 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Release|x64.ActiveCfg = Release|x64 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Release|x64.Build.0 = Release|x64 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.RelWithDebInfo|Win32.Build.0 = Release|Win32 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.RelWithDebInfo|x64.ActiveCfg = Release|x64 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.RelWithDebInfo|x64.Build.0 = Release|x64 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Debug|Win32.ActiveCfg = Debug|Win32 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Debug|Win32.Build.0 = Debug|Win32 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Debug|x64.ActiveCfg = Debug|x64 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Debug|x64.Build.0 = Debug|x64 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.MinSizeRel|Win32.ActiveCfg = Release|Win32 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.MinSizeRel|Win32.Build.0 = Release|Win32 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.MinSizeRel|x64.ActiveCfg = Release|x64 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.MinSizeRel|x64.Build.0 = Release|x64 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Release|Mixed Platforms.Build.0 = Release|Win32 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Release|Win32.ActiveCfg = Release|Win32 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Release|Win32.Build.0 = Release|Win32 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Release|x64.ActiveCfg = Release|x64 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Release|x64.Build.0 = Release|x64 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.RelWithDebInfo|Win32.Build.0 = Release|Win32 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.RelWithDebInfo|x64.ActiveCfg = Release|x64 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.RelWithDebInfo|x64.Build.0 = Release|x64 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Debug|Win32.ActiveCfg = Debug|Win32 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Debug|Win32.Build.0 = Debug|Win32 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Debug|x64.ActiveCfg = Debug|x64 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Debug|x64.Build.0 = Debug|x64 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.MinSizeRel|Win32.ActiveCfg = Release|Win32 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.MinSizeRel|Win32.Build.0 = Release|Win32 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.MinSizeRel|x64.ActiveCfg = Release|x64 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.MinSizeRel|x64.Build.0 = Release|x64 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Release|Mixed Platforms.Build.0 = Release|Win32 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Release|Win32.ActiveCfg = Release|Win32 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Release|Win32.Build.0 = Release|Win32 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Release|x64.ActiveCfg = Release|x64 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Release|x64.Build.0 = Release|x64 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.RelWithDebInfo|Win32.Build.0 = Release|Win32 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.RelWithDebInfo|x64.ActiveCfg = Release|x64 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.RelWithDebInfo|x64.Build.0 = Release|x64 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Debug|Win32.ActiveCfg = Debug|Win32 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Debug|Win32.Build.0 = Debug|Win32 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Debug|x64.ActiveCfg = Debug|x64 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Debug|x64.Build.0 = Debug|x64 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.MinSizeRel|Win32.ActiveCfg = Release|Win32 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.MinSizeRel|Win32.Build.0 = Release|Win32 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.MinSizeRel|x64.ActiveCfg = Release|x64 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.MinSizeRel|x64.Build.0 = Release|x64 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Release|Mixed Platforms.Build.0 = Release|Win32 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Release|Win32.ActiveCfg = Release|Win32 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Release|Win32.Build.0 = Release|Win32 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Release|x64.ActiveCfg = Release|x64 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Release|x64.Build.0 = Release|x64 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.RelWithDebInfo|Win32.Build.0 = Release|Win32 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.RelWithDebInfo|x64.ActiveCfg = Release|x64 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.RelWithDebInfo|x64.Build.0 = Release|x64 {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Debug|Win32.ActiveCfg = Debug|Win32 @@ -199,477 +522,6 @@ Global {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.RelWithDebInfo|Win32.Build.0 = Release|Win32 {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.RelWithDebInfo|x64.ActiveCfg = Release|x64 {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.RelWithDebInfo|x64.Build.0 = Release|x64 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Debug|Win32.ActiveCfg = Debug|Win32 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Debug|Win32.Build.0 = Debug|Win32 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Debug|x64.ActiveCfg = Debug|x64 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Debug|x64.Build.0 = Debug|x64 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.MinSizeRel|Win32.ActiveCfg = Release|Win32 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.MinSizeRel|Win32.Build.0 = Release|Win32 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.MinSizeRel|x64.ActiveCfg = Release|x64 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.MinSizeRel|x64.Build.0 = Release|x64 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Release|Mixed Platforms.Build.0 = Release|Win32 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Release|Win32.ActiveCfg = Release|Win32 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Release|Win32.Build.0 = Release|Win32 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Release|x64.ActiveCfg = Release|x64 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Release|x64.Build.0 = Release|x64 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.RelWithDebInfo|Win32.Build.0 = Release|Win32 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.RelWithDebInfo|x64.ActiveCfg = Release|x64 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.RelWithDebInfo|x64.Build.0 = Release|x64 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|Win32.ActiveCfg = Debug|Win32 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|Win32.Build.0 = Debug|Win32 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|x64.ActiveCfg = Debug|x64 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|x64.Build.0 = Debug|x64 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.MinSizeRel|Win32.ActiveCfg = Release|Win32 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.MinSizeRel|Win32.Build.0 = Release|Win32 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.MinSizeRel|x64.ActiveCfg = Release|x64 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.MinSizeRel|x64.Build.0 = Release|x64 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Release|Mixed Platforms.Build.0 = Release|Win32 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|Mixed Platforms.ActiveCfg = Release|x64 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|Mixed Platforms.Build.0 = Release|x64 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|Win32.ActiveCfg = Debug|Win32 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|Win32.Build.0 = Debug|Win32 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|Win32.Deploy.0 = Debug|Win32 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|x64.ActiveCfg = Release|x64 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|x64.Build.0 = Release|x64 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Release|Mixed Platforms.ActiveCfg = Release|x64 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Release|Mixed Platforms.Build.0 = Release|x64 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Release|Win32.ActiveCfg = Release|Win32 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Release|Win32.Build.0 = Release|Win32 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Release|x64.ActiveCfg = Release|x64 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Release|x64.Build.0 = Release|x64 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.RelWithDebInfo|Win32.Build.0 = Release|Win32 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.RelWithDebInfo|x64.ActiveCfg = Release|x64 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.RelWithDebInfo|x64.Build.0 = Release|x64 - {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|Win32.ActiveCfg = Debug|Win32 - {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|Win32.Build.0 = Debug|Win32 - {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|x64.ActiveCfg = Debug|x64 - {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|x64.Build.0 = Debug|x64 - {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 - {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.MinSizeRel|Win32.ActiveCfg = Release|Win32 - {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.MinSizeRel|x64.ActiveCfg = Release|x64 - {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Release|Mixed Platforms.Build.0 = Release|Win32 - {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|Mixed Platforms.ActiveCfg = Release|x64 - {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|Mixed Platforms.Build.0 = Release|x64 - {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|Win32.ActiveCfg = Debug|Win32 - {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|Win32.Build.0 = Debug|Win32 - {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|x64.ActiveCfg = Release|x64 - {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|x64.Build.0 = Release|x64 - {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Release|Mixed Platforms.ActiveCfg = Release|x64 - {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Release|Mixed Platforms.Build.0 = Release|x64 - {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Release|Win32.ActiveCfg = Release|Win32 - {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Release|Win32.Build.0 = Release|Win32 - {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Release|x64.ActiveCfg = Release|x64 - {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Release|x64.Build.0 = Release|x64 - {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 - {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 - {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.RelWithDebInfo|x64.ActiveCfg = Release|x64 - {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|Win32.ActiveCfg = Debug|Win32 - {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|Win32.Build.0 = Debug|Win32 - {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|x64.ActiveCfg = Debug|x64 - {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|x64.Build.0 = Debug|x64 - {6A066806-F43F-4B31-A4E3-57179674F460}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 - {6A066806-F43F-4B31-A4E3-57179674F460}.MinSizeRel|Win32.ActiveCfg = Release|Win32 - {6A066806-F43F-4B31-A4E3-57179674F460}.MinSizeRel|x64.ActiveCfg = Release|x64 - {6A066806-F43F-4B31-A4E3-57179674F460}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {6A066806-F43F-4B31-A4E3-57179674F460}.Release|Mixed Platforms.Build.0 = Release|Win32 - {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|Mixed Platforms.ActiveCfg = Release|x64 - {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|Mixed Platforms.Build.0 = Release|x64 - {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|Win32.ActiveCfg = Debug|Win32 - {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|Win32.Build.0 = Debug|Win32 - {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|x64.ActiveCfg = Release|x64 - {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|x64.Build.0 = Release|x64 - {6A066806-F43F-4B31-A4E3-57179674F460}.Release|Mixed Platforms.ActiveCfg = Release|x64 - {6A066806-F43F-4B31-A4E3-57179674F460}.Release|Mixed Platforms.Build.0 = Release|x64 - {6A066806-F43F-4B31-A4E3-57179674F460}.Release|Win32.ActiveCfg = Release|Win32 - {6A066806-F43F-4B31-A4E3-57179674F460}.Release|Win32.Build.0 = Release|Win32 - {6A066806-F43F-4B31-A4E3-57179674F460}.Release|x64.ActiveCfg = Release|x64 - {6A066806-F43F-4B31-A4E3-57179674F460}.Release|x64.Build.0 = Release|x64 - {6A066806-F43F-4B31-A4E3-57179674F460}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 - {6A066806-F43F-4B31-A4E3-57179674F460}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 - {6A066806-F43F-4B31-A4E3-57179674F460}.RelWithDebInfo|x64.ActiveCfg = Release|x64 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|Win32.ActiveCfg = Debug|Win32 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|Win32.Build.0 = Debug|Win32 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|x64.ActiveCfg = Debug|x64 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|x64.Build.0 = Debug|x64 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.MinSizeRel|Win32.ActiveCfg = Release|Win32 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.MinSizeRel|x64.ActiveCfg = Release|x64 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Release|Mixed Platforms.Build.0 = Release|Win32 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|Mixed Platforms.ActiveCfg = Release|x64 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|Mixed Platforms.Build.0 = Release|x64 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|Win32.ActiveCfg = Debug|Win32 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|Win32.Build.0 = Debug|Win32 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|x64.ActiveCfg = Release|x64 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|x64.Build.0 = Release|x64 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Release|Mixed Platforms.ActiveCfg = Release|x64 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Release|Mixed Platforms.Build.0 = Release|x64 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Release|Win32.ActiveCfg = Release|Win32 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Release|Win32.Build.0 = Release|Win32 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Release|x64.ActiveCfg = Release|x64 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Release|x64.Build.0 = Release|x64 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.RelWithDebInfo|x64.ActiveCfg = Release|x64 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Debug|Win32.ActiveCfg = Debug|Win32 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Debug|Win32.Build.0 = Debug|Win32 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Debug|x64.ActiveCfg = Debug|x64 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Debug|x64.Build.0 = Debug|x64 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.MinSizeRel|Win32.ActiveCfg = Release|Win32 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.MinSizeRel|Win32.Build.0 = Release|Win32 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.MinSizeRel|x64.ActiveCfg = Release|x64 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.MinSizeRel|x64.Build.0 = Release|x64 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Release|Mixed Platforms.Build.0 = Release|Win32 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Release|Win32.ActiveCfg = Release|Win32 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Release|Win32.Build.0 = Release|Win32 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Release|x64.ActiveCfg = Release|x64 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Release|x64.Build.0 = Release|x64 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.RelWithDebInfo|Win32.Build.0 = Release|Win32 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.RelWithDebInfo|x64.ActiveCfg = Release|x64 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.RelWithDebInfo|x64.Build.0 = Release|x64 - {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Debug|Mixed Platforms.ActiveCfg = Release|Win32 - {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Debug|Mixed Platforms.Build.0 = Release|Win32 - {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Debug|Win32.ActiveCfg = Debug|Win32 - {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Debug|Win32.Build.0 = Debug|Win32 - {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Debug|x64.ActiveCfg = Release|Win32 - {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Debug|x64.Build.0 = Release|Win32 - {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Release|Mixed Platforms.Build.0 = Release|Win32 - {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Release|Win32.ActiveCfg = Release|Win32 - {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Release|Win32.Build.0 = Release|Win32 - {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Release|x64.ActiveCfg = Release|Win32 - {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Release|x64.Build.0 = Release|Win32 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|Win32.ActiveCfg = Debug|Win32 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|Win32.Build.0 = Debug|Win32 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|x64.ActiveCfg = Debug|x64 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|x64.Build.0 = Debug|x64 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Release|Mixed Platforms.Build.0 = Release|Win32 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Release|Win32.ActiveCfg = Release|Win32 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Release|Win32.Build.0 = Release|Win32 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Release|x64.ActiveCfg = Release|x64 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Release|x64.Build.0 = Release|x64 - {2A1BC987-AF42-4500-802D-89CD32FC1309}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {2A1BC987-AF42-4500-802D-89CD32FC1309}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {2A1BC987-AF42-4500-802D-89CD32FC1309}.Debug|Win32.ActiveCfg = Debug|Win32 - {2A1BC987-AF42-4500-802D-89CD32FC1309}.Debug|Win32.Build.0 = Debug|Win32 - {2A1BC987-AF42-4500-802D-89CD32FC1309}.Debug|x64.ActiveCfg = Debug|x64 - {2A1BC987-AF42-4500-802D-89CD32FC1309}.Debug|x64.Build.0 = Debug|x64 - {2A1BC987-AF42-4500-802D-89CD32FC1309}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 - {2A1BC987-AF42-4500-802D-89CD32FC1309}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 - {2A1BC987-AF42-4500-802D-89CD32FC1309}.MinSizeRel|Win32.ActiveCfg = Release|Win32 - {2A1BC987-AF42-4500-802D-89CD32FC1309}.MinSizeRel|Win32.Build.0 = Release|Win32 - {2A1BC987-AF42-4500-802D-89CD32FC1309}.MinSizeRel|x64.ActiveCfg = Release|x64 - {2A1BC987-AF42-4500-802D-89CD32FC1309}.MinSizeRel|x64.Build.0 = Release|x64 - {2A1BC987-AF42-4500-802D-89CD32FC1309}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {2A1BC987-AF42-4500-802D-89CD32FC1309}.Release|Mixed Platforms.Build.0 = Release|Win32 - {2A1BC987-AF42-4500-802D-89CD32FC1309}.Release|Win32.ActiveCfg = Release|Win32 - {2A1BC987-AF42-4500-802D-89CD32FC1309}.Release|Win32.Build.0 = Release|Win32 - {2A1BC987-AF42-4500-802D-89CD32FC1309}.Release|x64.ActiveCfg = Release|x64 - {2A1BC987-AF42-4500-802D-89CD32FC1309}.Release|x64.Build.0 = Release|x64 - {2A1BC987-AF42-4500-802D-89CD32FC1309}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 - {2A1BC987-AF42-4500-802D-89CD32FC1309}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 - {2A1BC987-AF42-4500-802D-89CD32FC1309}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 - {2A1BC987-AF42-4500-802D-89CD32FC1309}.RelWithDebInfo|Win32.Build.0 = Release|Win32 - {2A1BC987-AF42-4500-802D-89CD32FC1309}.RelWithDebInfo|x64.ActiveCfg = Release|x64 - {2A1BC987-AF42-4500-802D-89CD32FC1309}.RelWithDebInfo|x64.Build.0 = Release|x64 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Debug|Win32.ActiveCfg = Debug|Win32 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Debug|Win32.Build.0 = Debug|Win32 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Debug|x64.ActiveCfg = Debug|x64 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Debug|x64.Build.0 = Debug|x64 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.MinSizeRel|Win32.ActiveCfg = Release|Win32 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.MinSizeRel|Win32.Build.0 = Release|Win32 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.MinSizeRel|x64.ActiveCfg = Release|x64 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.MinSizeRel|x64.Build.0 = Release|x64 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Release|Mixed Platforms.Build.0 = Release|Win32 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Release|Win32.ActiveCfg = Release|Win32 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Release|Win32.Build.0 = Release|Win32 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Release|x64.ActiveCfg = Release|x64 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Release|x64.Build.0 = Release|x64 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.RelWithDebInfo|Win32.Build.0 = Release|Win32 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.RelWithDebInfo|x64.ActiveCfg = Release|x64 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.RelWithDebInfo|x64.Build.0 = Release|x64 - {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Debug|Win32.ActiveCfg = Debug|Win32 - {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Debug|Win32.Build.0 = Debug|Win32 - {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Debug|x64.ActiveCfg = Debug|x64 - {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Debug|x64.Build.0 = Debug|x64 - {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 - {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 - {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.MinSizeRel|Win32.ActiveCfg = Release|Win32 - {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.MinSizeRel|Win32.Build.0 = Release|Win32 - {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.MinSizeRel|x64.ActiveCfg = Release|x64 - {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.MinSizeRel|x64.Build.0 = Release|x64 - {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Release|Mixed Platforms.Build.0 = Release|Win32 - {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Release|Win32.ActiveCfg = Release|Win32 - {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Release|Win32.Build.0 = Release|Win32 - {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Release|x64.ActiveCfg = Release|x64 - {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Release|x64.Build.0 = Release|x64 - {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 - {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 - {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 - {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.RelWithDebInfo|Win32.Build.0 = Release|Win32 - {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.RelWithDebInfo|x64.ActiveCfg = Release|x64 - {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.RelWithDebInfo|x64.Build.0 = Release|x64 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Debug|Win32.ActiveCfg = Debug|Win32 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Debug|Win32.Build.0 = Debug|Win32 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Debug|x64.ActiveCfg = Debug|x64 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Debug|x64.Build.0 = Debug|x64 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.MinSizeRel|Win32.ActiveCfg = Release|Win32 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.MinSizeRel|Win32.Build.0 = Release|Win32 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.MinSizeRel|x64.ActiveCfg = Release|x64 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.MinSizeRel|x64.Build.0 = Release|x64 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Release|Mixed Platforms.Build.0 = Release|Win32 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Release|Win32.ActiveCfg = Release|Win32 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Release|Win32.Build.0 = Release|Win32 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Release|x64.ActiveCfg = Release|x64 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Release|x64.Build.0 = Release|x64 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.RelWithDebInfo|Win32.Build.0 = Release|Win32 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.RelWithDebInfo|x64.ActiveCfg = Release|x64 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.RelWithDebInfo|x64.Build.0 = Release|x64 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Debug|Win32.ActiveCfg = Debug|Win32 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Debug|Win32.Build.0 = Debug|Win32 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Debug|x64.ActiveCfg = Debug|x64 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Debug|x64.Build.0 = Debug|x64 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.MinSizeRel|Win32.ActiveCfg = Release|Win32 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.MinSizeRel|Win32.Build.0 = Release|Win32 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.MinSizeRel|x64.ActiveCfg = Release|x64 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.MinSizeRel|x64.Build.0 = Release|x64 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Release|Mixed Platforms.Build.0 = Release|Win32 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Release|Win32.ActiveCfg = Release|Win32 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Release|Win32.Build.0 = Release|Win32 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Release|x64.ActiveCfg = Release|x64 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Release|x64.Build.0 = Release|x64 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.RelWithDebInfo|Win32.Build.0 = Release|Win32 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.RelWithDebInfo|x64.ActiveCfg = Release|x64 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.RelWithDebInfo|x64.Build.0 = Release|x64 - {060B1890-CBF3-4808-BA99-A4776222093B}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {060B1890-CBF3-4808-BA99-A4776222093B}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {060B1890-CBF3-4808-BA99-A4776222093B}.Debug|Win32.ActiveCfg = Debug|Win32 - {060B1890-CBF3-4808-BA99-A4776222093B}.Debug|Win32.Build.0 = Debug|Win32 - {060B1890-CBF3-4808-BA99-A4776222093B}.Debug|x64.ActiveCfg = Debug|x64 - {060B1890-CBF3-4808-BA99-A4776222093B}.Debug|x64.Build.0 = Debug|x64 - {060B1890-CBF3-4808-BA99-A4776222093B}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 - {060B1890-CBF3-4808-BA99-A4776222093B}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 - {060B1890-CBF3-4808-BA99-A4776222093B}.MinSizeRel|Win32.ActiveCfg = Release|Win32 - {060B1890-CBF3-4808-BA99-A4776222093B}.MinSizeRel|Win32.Build.0 = Release|Win32 - {060B1890-CBF3-4808-BA99-A4776222093B}.MinSizeRel|x64.ActiveCfg = Release|x64 - {060B1890-CBF3-4808-BA99-A4776222093B}.MinSizeRel|x64.Build.0 = Release|x64 - {060B1890-CBF3-4808-BA99-A4776222093B}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {060B1890-CBF3-4808-BA99-A4776222093B}.Release|Mixed Platforms.Build.0 = Release|Win32 - {060B1890-CBF3-4808-BA99-A4776222093B}.Release|Win32.ActiveCfg = Release|Win32 - {060B1890-CBF3-4808-BA99-A4776222093B}.Release|Win32.Build.0 = Release|Win32 - {060B1890-CBF3-4808-BA99-A4776222093B}.Release|x64.ActiveCfg = Release|x64 - {060B1890-CBF3-4808-BA99-A4776222093B}.Release|x64.Build.0 = Release|x64 - {060B1890-CBF3-4808-BA99-A4776222093B}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 - {060B1890-CBF3-4808-BA99-A4776222093B}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 - {060B1890-CBF3-4808-BA99-A4776222093B}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 - {060B1890-CBF3-4808-BA99-A4776222093B}.RelWithDebInfo|Win32.Build.0 = Release|Win32 - {060B1890-CBF3-4808-BA99-A4776222093B}.RelWithDebInfo|x64.ActiveCfg = Release|x64 - {060B1890-CBF3-4808-BA99-A4776222093B}.RelWithDebInfo|x64.Build.0 = Release|x64 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Debug|Win32.ActiveCfg = Debug|Win32 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Debug|Win32.Build.0 = Debug|Win32 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Debug|x64.ActiveCfg = Debug|x64 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Debug|x64.Build.0 = Debug|x64 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Release|Mixed Platforms.Build.0 = Release|Win32 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Release|Win32.ActiveCfg = Release|Win32 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Release|Win32.Build.0 = Release|Win32 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Release|x64.ActiveCfg = Release|x64 - {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Release|x64.Build.0 = Release|x64 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Debug|Win32.ActiveCfg = Debug|Win32 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Debug|Win32.Build.0 = Debug|Win32 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Debug|x64.ActiveCfg = Debug|x64 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Debug|x64.Build.0 = Debug|x64 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Release|Mixed Platforms.Build.0 = Release|Win32 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Release|Win32.ActiveCfg = Release|Win32 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Release|Win32.Build.0 = Release|Win32 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Release|x64.ActiveCfg = Release|x64 - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Release|x64.Build.0 = Release|x64 - {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Debug|Win32.ActiveCfg = Debug|Win32 - {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Debug|Win32.Build.0 = Debug|Win32 - {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Debug|x64.ActiveCfg = Debug|x64 - {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Debug|x64.Build.0 = Debug|x64 - {143BD516-20A1-4890-A3E4-F8BFD02220E7}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 - {143BD516-20A1-4890-A3E4-F8BFD02220E7}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 - {143BD516-20A1-4890-A3E4-F8BFD02220E7}.MinSizeRel|Win32.ActiveCfg = Release|Win32 - {143BD516-20A1-4890-A3E4-F8BFD02220E7}.MinSizeRel|Win32.Build.0 = Release|Win32 - {143BD516-20A1-4890-A3E4-F8BFD02220E7}.MinSizeRel|x64.ActiveCfg = Release|x64 - {143BD516-20A1-4890-A3E4-F8BFD02220E7}.MinSizeRel|x64.Build.0 = Release|x64 - {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Release|Mixed Platforms.Build.0 = Release|Win32 - {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Release|Win32.ActiveCfg = Release|Win32 - {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Release|Win32.Build.0 = Release|Win32 - {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Release|x64.ActiveCfg = Release|x64 - {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Release|x64.Build.0 = Release|x64 - {143BD516-20A1-4890-A3E4-F8BFD02220E7}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 - {143BD516-20A1-4890-A3E4-F8BFD02220E7}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 - {143BD516-20A1-4890-A3E4-F8BFD02220E7}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 - {143BD516-20A1-4890-A3E4-F8BFD02220E7}.RelWithDebInfo|Win32.Build.0 = Release|Win32 - {143BD516-20A1-4890-A3E4-F8BFD02220E7}.RelWithDebInfo|x64.ActiveCfg = Release|x64 - {143BD516-20A1-4890-A3E4-F8BFD02220E7}.RelWithDebInfo|x64.Build.0 = Release|x64 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|Win32.ActiveCfg = Debug|Win32 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|Win32.Build.0 = Debug|Win32 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|x64.ActiveCfg = Debug|x64 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|x64.Build.0 = Debug|x64 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.MinSizeRel|Win32.ActiveCfg = Release|Win32 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.MinSizeRel|Win32.Build.0 = Release|Win32 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.MinSizeRel|x64.ActiveCfg = Release|x64 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.MinSizeRel|x64.Build.0 = Release|x64 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Release|Mixed Platforms.Build.0 = Release|Win32 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Release|Win32.ActiveCfg = Release|Win32 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Release|Win32.Build.0 = Release|Win32 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Release|x64.ActiveCfg = Release|x64 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Release|x64.Build.0 = Release|x64 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.RelWithDebInfo|Win32.Build.0 = Release|Win32 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.RelWithDebInfo|x64.ActiveCfg = Release|x64 - {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.RelWithDebInfo|x64.Build.0 = Release|x64 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Debug|Win32.ActiveCfg = Debug|Win32 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Debug|Win32.Build.0 = Debug|Win32 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Debug|x64.ActiveCfg = Debug|x64 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Debug|x64.Build.0 = Debug|x64 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Release|Mixed Platforms.Build.0 = Release|Win32 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Release|Win32.ActiveCfg = Release|Win32 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Release|Win32.Build.0 = Release|Win32 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Release|x64.ActiveCfg = Release|x64 - {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Release|x64.Build.0 = Release|x64 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Debug|Win32.ActiveCfg = Debug|Win32 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Debug|Win32.Build.0 = Debug|Win32 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Debug|x64.ActiveCfg = Debug|x64 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Debug|x64.Build.0 = Debug|x64 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Release|Mixed Platforms.Build.0 = Release|Win32 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Release|Win32.ActiveCfg = Release|Win32 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Release|Win32.Build.0 = Release|Win32 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Release|x64.ActiveCfg = Release|x64 - {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Release|x64.Build.0 = Release|x64 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Debug|Win32.ActiveCfg = Debug|Win32 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Debug|Win32.Build.0 = Debug|Win32 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Debug|x64.ActiveCfg = Debug|x64 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Debug|x64.Build.0 = Debug|x64 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Release|Mixed Platforms.Build.0 = Release|Win32 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Release|Win32.ActiveCfg = Release|Win32 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Release|Win32.Build.0 = Release|Win32 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Release|x64.ActiveCfg = Release|x64 - {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Release|x64.Build.0 = Release|x64 - {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Debug|Win32.ActiveCfg = Debug|Win32 - {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Debug|Win32.Build.0 = Debug|Win32 - {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Debug|x64.ActiveCfg = Debug|x64 - {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Debug|x64.Build.0 = Debug|x64 - {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Release|Mixed Platforms.Build.0 = Release|Win32 - {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Release|Win32.ActiveCfg = Release|Win32 - {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Release|Win32.Build.0 = Release|Win32 - {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Release|x64.ActiveCfg = Release|x64 - {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Release|x64.Build.0 = Release|x64 - {34D6295A-00DD-4B1A-8258-97DA2818EC26}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {34D6295A-00DD-4B1A-8258-97DA2818EC26}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {34D6295A-00DD-4B1A-8258-97DA2818EC26}.Debug|Win32.ActiveCfg = Debug|Win32 - {34D6295A-00DD-4B1A-8258-97DA2818EC26}.Debug|Win32.Build.0 = Debug|Win32 - {34D6295A-00DD-4B1A-8258-97DA2818EC26}.Debug|x64.ActiveCfg = Debug|x64 - {34D6295A-00DD-4B1A-8258-97DA2818EC26}.Debug|x64.Build.0 = Debug|x64 - {34D6295A-00DD-4B1A-8258-97DA2818EC26}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {34D6295A-00DD-4B1A-8258-97DA2818EC26}.Release|Mixed Platforms.Build.0 = Release|Win32 - {34D6295A-00DD-4B1A-8258-97DA2818EC26}.Release|Win32.ActiveCfg = Release|Win32 - {34D6295A-00DD-4B1A-8258-97DA2818EC26}.Release|Win32.Build.0 = Release|Win32 - {34D6295A-00DD-4B1A-8258-97DA2818EC26}.Release|x64.ActiveCfg = Release|x64 - {34D6295A-00DD-4B1A-8258-97DA2818EC26}.Release|x64.Build.0 = Release|x64 - {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Debug|Win32.ActiveCfg = Debug|Win32 - {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Debug|Win32.Build.0 = Debug|Win32 - {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Debug|x64.ActiveCfg = Debug|x64 - {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Debug|x64.Build.0 = Debug|x64 - {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Release|Mixed Platforms.Build.0 = Release|Win32 - {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Release|Win32.ActiveCfg = Release|Win32 - {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Release|Win32.Build.0 = Release|Win32 - {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Release|x64.ActiveCfg = Release|x64 - {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -679,12 +531,12 @@ Global {6A066806-F43F-4B31-A4E3-57179674F460} = {C27B926E-B3EF-4990-8822-47580E43A0BE} {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50} = {C27B926E-B3EF-4990-8822-47580E43A0BE} {460D625F-2AC9-4559-B809-0BA89CEAEDF4} = {C27B926E-B3EF-4990-8822-47580E43A0BE} - {2A1BC987-AF42-4500-802D-89CD32FC1309} = {20720CA7-795C-45AD-A302-9383A6DD503A} - {B1195BB9-B3A5-47F0-906C-8DEA384D1520} = {20720CA7-795C-45AD-A302-9383A6DD503A} - {8690FDDF-C5B7-4C42-A337-BD5243F29B85} = {20720CA7-795C-45AD-A302-9383A6DD503A} - {DA2AA800-ED64-4649-8B3B-E7F1E3968B78} = {20720CA7-795C-45AD-A302-9383A6DD503A} - {060B1890-CBF3-4808-BA99-A4776222093B} = {20720CA7-795C-45AD-A302-9383A6DD503A} - {143BD516-20A1-4890-A3E4-F8BFD02220E7} = {20720CA7-795C-45AD-A302-9383A6DD503A} - {666FEA52-975F-41CD-B224-B19AF3C0ABBA} = {20720CA7-795C-45AD-A302-9383A6DD503A} + {666FEA52-975F-41CD-B224-B19AF3C0ABBA} = {B0AFF0DC-5C7E-43DC-9586-CD4E38EB037B} + {2A1BC987-AF42-4500-802D-89CD32FC1309} = {B0AFF0DC-5C7E-43DC-9586-CD4E38EB037B} + {8690FDDF-C5B7-4C42-A337-BD5243F29B85} = {B0AFF0DC-5C7E-43DC-9586-CD4E38EB037B} + {060B1890-CBF3-4808-BA99-A4776222093B} = {B0AFF0DC-5C7E-43DC-9586-CD4E38EB037B} + {B1195BB9-B3A5-47F0-906C-8DEA384D1520} = {B0AFF0DC-5C7E-43DC-9586-CD4E38EB037B} + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78} = {B0AFF0DC-5C7E-43DC-9586-CD4E38EB037B} + {143BD516-20A1-4890-A3E4-F8BFD02220E7} = {B0AFF0DC-5C7E-43DC-9586-CD4E38EB037B} EndGlobalSection EndGlobal diff --git a/Code/Game/DanBiasGame/GameClientRecieverFunc.h b/Code/Game/DanBiasGame/GameClientRecieverFunc.h index 348d28db..68b46d38 100644 --- a/Code/Game/DanBiasGame/GameClientRecieverFunc.h +++ b/Code/Game/DanBiasGame/GameClientRecieverFunc.h @@ -21,7 +21,7 @@ namespace DanBias // receiver function for server messages // parsing protocols and sending it to the gameState //void NetworkCallback(Oyster::Network::CustomNetProtocol& p) override - void GameRecieverObject::DataRecieved(Oyster::Network::NetEvent e) override + void GameRecieverObject::DataRecieved( Oyster::Network::NetEvent e ) override { Oyster::Network::CustomNetProtocol p = e.args.data.protocol; int pType = p[0].value.netInt; @@ -79,17 +79,16 @@ namespace DanBias // 2,3,4: position // 5,6,7,8: rotation quaternion - GameLogic::Protocol_ObjectPosition data; + GameLogic::Protocol_ObjectPosition data(p); Client::GameClientState::ObjPos protocolData; - protocolData.object_ID = p[1].value.netInt; + protocolData.object_ID = data.object_ID; + //protocolData.object_ID = p[1].value.netInt; for( int i = 0; i < 3; ++i ) { - protocolData.position[i] = p[i+2].value.netFloat; - protocolData.rotation[i] = p[i+5].value.netFloat; + protocolData.position[i] = data.position[i]; } - protocolData.rotation[3] = p[8].value.netFloat; //for(int i = 0; i< 16; i++) //{ diff --git a/Code/Game/DanBiasGame/GameClientState/Camera_FPS.cpp b/Code/Game/DanBiasGame/GameClientState/Camera_FPS.cpp index d1884cef..8c87970b 100644 --- a/Code/Game/DanBiasGame/GameClientState/Camera_FPS.cpp +++ b/Code/Game/DanBiasGame/GameClientState/Camera_FPS.cpp @@ -1,6 +1,8 @@ #include "Camera_FPS.h" +#include "Utilities.h" using namespace ::Oyster::Math3D; +using namespace ::Utility::Value; Camera_FPS::Camera_FPS() { // this->head is default set to identity uniformprojection at origo @@ -110,7 +112,7 @@ void Camera_FPS::StrafeLeft( Float distance ) void Camera_FPS::PitchUp( Float radian ) { - this->pitchUp += radian; + this->pitchUp = Clamp( this->pitchUp + radian, -0.48f * pi, 0.48f * pi ); this->head.SetAngular( this->body.angularAxis + this->pitchUp * this->body.direction.v[0] ); } diff --git a/Code/Game/DanBiasGame/GameClientState/GameClientState.h b/Code/Game/DanBiasGame/GameClientState/GameClientState.h index 444b8a3d..bab3ba57 100644 --- a/Code/Game/DanBiasGame/GameClientState/GameClientState.h +++ b/Code/Game/DanBiasGame/GameClientState/GameClientState.h @@ -7,62 +7,9 @@ namespace DanBias { namespace Client { - class GameClientState + class GameClientState : public ::Oyster::Network::NetworkClient { public: - struct ProtocolStruct - { - - }; - - struct ObjPos : public ProtocolStruct - { - int object_ID; - //float worldPos[16]; - float position[3]; - float rotation[4]; - }; - - struct NewObj : public ProtocolStruct - { - int object_ID; - char* path; - float worldPos[16]; - }; - - struct RemoveObj : public ProtocolStruct - { - int object_ID; - //particle effect - }; - - struct KeyInput : public ProtocolStruct - { - /* - * key[0] = - * - * - */ - bool key[6]; - }; - - struct PlayerPos : public ProtocolStruct - { - float position[3]; - float angularAxis[3]; - // float playerPos[3]; - }; - - struct PlayerMove : public ProtocolStruct - { - float playerPos[3]; - }; - - struct PlayerName : public ProtocolStruct - { - char name[255]; - }; - enum ClientState { ClientState_Login, @@ -80,8 +27,6 @@ namespace DanBias { namespace Client virtual ClientState Update(float deltaTime, InputClass* KeyInput) = 0; virtual bool Render() = 0; virtual bool Release() = 0; - virtual void Protocol(ProtocolStruct* protocolStruct) = 0; - }; } } #endif \ No newline at end of file diff --git a/Code/Game/DanBiasGame/GameClientState/GameState.cpp b/Code/Game/DanBiasGame/GameClientState/GameState.cpp index 2a9d6746..5dfabd6d 100644 --- a/Code/Game/DanBiasGame/GameClientState/GameState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/GameState.cpp @@ -2,20 +2,18 @@ #include "DllInterfaces/GFXAPI.h" #include #include "NetworkClient.h" -#include "Camera.h" +#include "Camera_FPS.h" #include using namespace DanBias::Client; -using namespace Oyster::Math; +using namespace Oyster::Math3D; + struct GameState::myData { myData(){} - //std::vector object; int modelCount; Oyster::Network::NetworkClient* nwClient; gameStateState state; - - }privData; GameState::GameState(void) @@ -26,21 +24,17 @@ GameState::GameState(void) key_strafeLeft = false; } - GameState::~GameState(void) { - delete this->camera; delete this->privData; } bool GameState::Init(Oyster::Network::NetworkClient* nwClient) { // load models - camera = new Camera; privData = new myData(); privData->state = gameStateState_loading; privData->nwClient = nwClient; privData->state = LoadGame(); - pitch = 0; //tELL SERver ready nwClient->Send(GameLogic::Protocol_General_Status(GameLogic::Protocol_General_Status::States_ready)); @@ -50,34 +44,34 @@ bool GameState::Init(Oyster::Network::NetworkClient* nwClient) GameState::gameStateState GameState::LoadGame() { Oyster::Graphics::Definitions::Pointlight plight; - plight.Pos = Oyster::Math::Float3(315.0f, 0.0f ,5.0f); - plight.Color = Oyster::Math::Float3(0.9f,0.7f,0.2f); + plight.Pos = Float3(315.0f, 0.0f ,5.0f); + plight.Color = Float3(0.9f,0.7f,0.2f); plight.Radius = 100.0f; plight.Bright = 0.9f; Oyster::Graphics::API::AddLight(plight); - plight.Pos = Oyster::Math::Float3(10.0f,350.0f,5.0f); - plight.Color = Oyster::Math::Float3(0.9f,0.7f,0.3f); + plight.Pos = Float3(10.0f,350.0f,5.0f); + plight.Color = Float3(0.9f,0.7f,0.3f); plight.Radius = 200.0f; plight.Bright = 0.7f; Oyster::Graphics::API::AddLight(plight); - plight.Pos = Oyster::Math::Float3(350.0f,350.0f,5.0f); - plight.Color = Oyster::Math::Float3(0.9f,0.7f,0.3f); + plight.Pos = Float3(350.0f,350.0f,5.0f); + plight.Color = Float3(0.9f,0.7f,0.3f); plight.Radius = 200.0f; plight.Bright = 0.7f; Oyster::Graphics::API::AddLight(plight); - plight.Pos = Oyster::Math::Float3(10.0f,350.0f,350.0f); - plight.Color = Oyster::Math::Float3(0.9f,0.7f,0.3f); + plight.Pos = Float3(10.0f,350.0f,350.0f); + plight.Color = Float3(0.9f,0.7f,0.3f); plight.Radius = 200.0f; plight.Bright = 0.7f; Oyster::Graphics::API::AddLight(plight); - plight.Pos = Oyster::Math::Float3(10.0f,-15.0f,5.0f); - plight.Color = Oyster::Math::Float3(0.0f,0.0f,1.0f); + plight.Pos = Float3(10.0f,-15.0f,5.0f); + plight.Color = Float3(0.0f,0.0f,1.0f); plight.Radius = 50.0f; plight.Bright = 2.0f; Oyster::Graphics::API::AddLight(plight); LoadModels(); - InitCamera(Oyster::Math::Float3(0.0f,0.0f,20.0f)); + InitCamera(Float3(0.0f,0.0f,20.0f)); // hardcoded objects LoadModels(); Float3 startPos = Float3(0,0,20.0f); @@ -95,9 +89,9 @@ bool GameState::LoadModels() // add world model ModelInitData modelData; - modelData.position = Oyster::Math::Float3(0,0,0); - modelData.rotation = Oyster::Math::Quaternion::identity; - modelData.scale = Oyster::Math::Float3(2,2,2); + modelData.position = Float3(0,0,0); + modelData.rotation = Quaternion::identity; + modelData.scale = Float3(2,2,2); modelData.modelPath = L"world_earth.dan"; modelData.id = id++; @@ -107,15 +101,15 @@ bool GameState::LoadModels() /* // add box model - modelData.position = Oyster::Math::Float3(0,0,0); - modelData.rotation = Oyster::Math::Quaternion::identity; - modelData.scale = Oyster::Math::Float3(1,1,1); + modelData.position = Float3(0,0,0); + modelData.rotation = Quaternion::identity; + modelData.scale = Float3(1,1,1); modelData.modelPath = L"crate_colonists.dan"; for(int i =0; i< nrOfBoxex; i ++) { - modelData.position = Oyster::Math::Float3(4,320,0); + modelData.position = Float3(4,320,0); modelData.id = id++; this->dynamicObjects.Push(new C_DynamicObj()); @@ -124,7 +118,7 @@ bool GameState::LoadModels() // add crystal model - modelData.position = Oyster::Math::Float3(10, 301, 0); + modelData.position = Float3(10, 301, 0); modelData.modelPath = L"crystalformation_b.dan"; modelData.id = id++; // load models @@ -132,8 +126,8 @@ bool GameState::LoadModels() this->dynamicObjects[this->dynamicObjects.Size() -1 ]->Init(modelData); // add house model - modelData.position = Oyster::Math::Float3(-50, 290, 0); - //Oyster::Math3D::Float4x4 rot = Oyster::Math3D::RotationMatrix(Oyster::Math::Float3(0 ,Utility::Value::Radian(90.0f), 0)); + modelData.position = Float3(-50, 290, 0); + //Oyster::Math3D::Float4x4 rot = Oyster::Math3D::RotationMatrix(Float3(0 ,Utility::Value::Radian(90.0f), 0)); modelData.visible = true; modelData.modelPath = L"building_corporation.dan"; @@ -144,7 +138,7 @@ bool GameState::LoadModels() // add player model - modelData.position = Oyster::Math::Float3(0, 320, 0); + modelData.position = Float3(0, 320, 0); modelData.modelPath = L"char_still_sizeref.dan"; modelData.id = id++; // load models @@ -152,7 +146,7 @@ bool GameState::LoadModels() this->dynamicObjects[this->dynamicObjects.Size() -1 ]->Init(modelData); // add player model 2 - modelData.position = Oyster::Math::Float3(50, 320, 0); + modelData.position = Float3(50, 320, 0); modelData.modelPath = L"char_still_sizeref.dan"; modelData.id = id++; // load models @@ -160,7 +154,7 @@ bool GameState::LoadModels() this->dynamicObjects[this->dynamicObjects.Size() -1 ]->Init(modelData); // add jumppad - modelData.position = Oyster::Math::Float3(4, 300.3, 0); + modelData.position = Float3(4, 300.3, 0); modelData.modelPath = L"jumppad_round.dan"; modelData.id = id++; // load models @@ -168,8 +162,8 @@ bool GameState::LoadModels() this->dynamicObjects[this->dynamicObjects.Size() -1 ]->Init(modelData); // add sky sphere - modelData.position = Oyster::Math::Float3(0,0,0); - modelData.scale = Oyster::Math::Float3(800,800,800); + modelData.position = Float3(0,0,0); + modelData.scale = Float3(800,800,800); modelData.modelPath = L"skysphere.dan"; modelData.id = id++; // load models @@ -202,8 +196,8 @@ bool GameState::LoadModels(std::string mapFile) modelData.modelPath.assign(staticObjData->ModelFile.begin(), staticObjData->ModelFile.end()); modelData.visible = true; //modelData.position = ; - //modelData.rotation = Oyster::Math::Quaternion(Oyster::Math::Float3(2,2,-2), 1); - //modelData.scale = Oyster::Math::Float3(2,2,2); + //modelData.rotation = Quaternion(Float3(2,2,-2), 1); + //modelData.scale = Float3(2,2,2); modelData.id = modelId++; this->staticObjects.Push(new C_StaticObj()); @@ -214,8 +208,8 @@ bool GameState::LoadModels(std::string mapFile) { GameLogic::ObjectHeader* dynamicObjData = ((GameLogic::ObjectHeader*)obj); //modelData.position = ; - //modelData.rotation = Oyster::Math::Quaternion(Oyster::Math::Float3(2,2,-2), 1); - //modelData.scale = Oyster::Math::Float3(2,2,2); + //modelData.rotation = Quaternion(Float3(2,2,-2), 1); + //modelData.scale = Float3(2,2,2); modelData.modelPath.assign(dynamicObjData->ModelFile.begin(), dynamicObjData->ModelFile.end()); modelData.visible = true; modelData.id = modelId++; @@ -246,8 +240,8 @@ bool GameState::LoadModels(std::string mapFile) myId += modelId++; // add player model //modelData.position = ; - //modelData.rotation = Oyster::Math::Quaternion(Oyster::Math::Float3(2,2,-2), 1); - //modelData.scale = Oyster::Math::Float3(2,2,2); + //modelData.rotation = Quaternion(Float3(2,2,-2), 1); + //modelData.scale = Float3(2,2,2); modelData.visible = true; @@ -266,17 +260,14 @@ bool GameState::LoadModels(std::string mapFile) } bool GameState::InitCamera(Float3 startPos) { - Float3 dir = Float3(0,0,1); - Float3 up = Float3(0,1,0); - Float3 pos = Float3(0, 0, 20); - camera->LookAt(pos, dir, up); - camera->SetLens(pi/4, 1024/768, 1, 1000); - camera->UpdateViewMatrix(); - Oyster::Graphics::API::SetProjection(camera->Proj()); + camera.SetHeadOffset( Float3(0.0f, 1.0f, 1.0f) ); + camera.SetPerspectiveProjection( pi / 4.0f, 1024.0f/768.0f, 1.0f, 1000.0f ); + camera.UpdateOrientation(); + Oyster::Graphics::API::SetProjection(camera.GetProjectionMatrix()); return true; } -void GameState::InitiatePlayer(int id, std::wstring modelName, Oyster::Math::Float4x4 world) +void GameState::InitiatePlayer(int id, std::wstring modelName, Float4x4 world) { myId = id; @@ -284,44 +275,20 @@ void GameState::InitiatePlayer(int id, std::wstring modelName, Oyster::Math::Flo C_Object* obj; modelData.visible = true; //modelData.world = world; - modelData.position = Oyster::Math::Float3(world[12], world[13], world[14]); - modelData.rotation = Oyster::Math::Quaternion(Oyster::Math::Float3(0,0,0), 1); - modelData.scale = Oyster::Math::Float3(1,1,1); + modelData.position = Float3(world[12], world[13], world[14]); + modelData.rotation = Quaternion(Float3(0,0,0), 1); + modelData.scale = Float3(1,1,1); modelData.modelPath = modelName; modelData.id = myId; - obj = new C_Player(); + obj = new C_Player(); this->dynamicObjects.Push(obj); this->dynamicObjects[this->dynamicObjects.Size() -1 ]->Init(modelData); - - Oyster::Math::Float3 right = Oyster::Math::Float3(world[0], world[1], world[2]); - Oyster::Math::Float3 up = Oyster::Math::Float3(world[4], world[5], world[6]); - Oyster::Math::Float3 objForward = (Oyster::Math::Float3(world[8], world[9], world[10])); - Oyster::Math::Float3 pos = Oyster::Math::Float3(world[12], world[13], world[14]); + Float3 pos = Float3(world[12], world[13], world[14]); - Oyster::Math::Float3 cameraLook = camera->GetLook(); - Oyster::Math::Float3 cameraUp = camera->GetUp(); - - - - /*Oyster::Math::Float3 newUp = cameraUp.Dot(up); - up *= newUp; - up.Normalize(); - Oyster::Math::Float3 newLook = up.Cross(right); - newLook.Normalize();*/ - - camera->setRight(right); - camera->setUp(up); - camera->setLook(objForward); - - up *= 2; - objForward *= 3; - Oyster::Math::Float3 cameraPos = up + pos + objForward; - camera->SetPosition(cameraPos); - - camera->UpdateViewMatrix(); - + camera.SetPosition( pos ); + camera.UpdateOrientation(); } GameClientState::ClientState GameState::Update(float deltaTime, InputClass* KeyInput) { @@ -343,8 +310,7 @@ GameClientState::ClientState GameState::Update(float deltaTime, InputClass* KeyI // update objects { readKeyInput(KeyInput); - camera->UpdateViewMatrix(); - + camera.UpdateOrientation(); } break; case gameStateState_end: @@ -359,7 +325,7 @@ GameClientState::ClientState GameState::Update(float deltaTime, InputClass* KeyI } bool GameState::Render() { - Oyster::Graphics::API::SetView(camera->View()); + Oyster::Graphics::API::SetView( camera.GetViewMatrix() ); Oyster::Graphics::API::NewFrame(); for (unsigned int i = 0; i < staticObjects.Size(); i++) @@ -389,7 +355,6 @@ bool GameState::Release() } void GameState::readKeyInput(InputClass* KeyInput) { - if(KeyInput->IsKeyPressed(DIK_W)) { if(!key_forward) @@ -438,18 +403,18 @@ void GameState::readKeyInput(InputClass* KeyInput) //send delta mouse movement //if (KeyInput->IsMousePressed()) { - camera->Yaw(-KeyInput->GetYaw()); - camera->Pitch(KeyInput->GetPitch()); - pitch = KeyInput->GetPitch(); - camera->UpdateViewMatrix(); + camera.YawRight( -KeyInput->GetYaw() ); + camera.PitchUp( KeyInput->GetPitch() ); + camera.UpdateOrientation(); + GameLogic::Protocol_PlayerLook playerLookDir; - Oyster::Math::Float4 look = camera->GetLook(); + Float4 look = camera.GetLook(); playerLookDir.lookDirX = look.x; playerLookDir.lookDirY = look.y; playerLookDir.lookDirZ = look.z; playerLookDir.deltaX = -KeyInput->GetYaw(); - privData->nwClient->Send(playerLookDir); + privData->nwClient->Send( playerLookDir ); } // shoot @@ -514,112 +479,129 @@ void GameState::readKeyInput(InputClass* KeyInput) privData->state = GameState::gameStateState_end; } -void GameState::Protocol(ProtocolStruct* pos) +using namespace ::Oyster::Network; +using namespace ::Utility::DynamicMemory; + +// returns -1 if none found +int FindObject( const DynamicArray> &collection, int id ) { + int num = collection.Size(); + for( int i = 0; i < num; ++i ) if( id == collection[i]->GetId() ) + return i; + return -1; +} + +void GameState::DataRecieved( NetEvent e ) +{ + CustomNetProtocol data = e.args.data.protocol; + short ID = data[0].value.netShort; // fetching the id data. -} + // Block irrelevant messages. + if( !ProtocolIsGameplay(ID) ) + return; -void GameState::Protocol( PlayerPos* pos ) -{ - //Oyster::Math::Float4x4 world, translate; - - //world = Oyster::Math::Float4x4::identity; - //translate = Oyster::Math::Float4x4::identity; - //translate = Oyster::Math3D::TranslationMatrix(Oyster::Math::Float3(pos->playerPos[0],pos->playerPos[1],pos->playerPos[2])); - //world = world * translate; - ////privData->object[0]->setPos( world ); - //for (unsigned int i = 0; i < dynamicObjects.Size(); i++) - //{ - // dynamicObjects[i]->Render(); - //} -} - -void GameState::Protocol( ObjPos* pos ) -{ - Oyster::Math::Float4x4 world; - for(int i = 0; i<16; i++) + switch(ID) { - world[i] = pos->worldPos[i]; - } - //printf("pos for obj %d, ",pos->object_ID ); - for (unsigned int i = 0; i < dynamicObjects.Size(); i++) - { - if(dynamicObjects[i]->GetId() == pos->object_ID) + case protocol_Gameplay_ObjectPickup: break; /** @todo TODO: implement */ + case protocol_Gameplay_ObjectDamage: break; /** @todo TODO: implement */ + case protocol_Gameplay_ObjectHealthStatus: break; /** @todo TODO: implement */ + case protocol_Gameplay_ObjectPosition: { + GameLogic::Protocol_ObjectPosition decoded(data); - - //dynamicObjects[i]->setPos(Float3(world[12], world[13], world[14])); - dynamicObjects[i]->setWorld(world); + // if is this player. Remember to change camera + if( this->myId == decoded.object_ID ) + camera.SetPosition( decoded.position ); - if(dynamicObjects[i]->GetId() == myId) // playerobj + int i = FindObject( this->dynamicObjects, decoded.object_ID ); + if( i > -1 ) + this->dynamicObjects[i]->setPos( decoded.position ); + } + break; + case protocol_Gameplay_ObjectScale: + { + GameLogic::Protocol_ObjectScale decoded(data); + int i = FindObject( this->dynamicObjects, decoded.object_ID ); + if( i > -1 ) + this->dynamicObjects[i]->setScale( decoded.scale ); + } + break; + case protocol_Gameplay_ObjectRotation: + { + GameLogic::Protocol_ObjectRotation decoded(data); + Quaternion rotation = Quaternion( Float3(decoded.rotationQ), decoded.rotationQ[3] ); + + // if is this player. Remember to change camera + if( this->myId == decoded.object_ID ) + camera.SetAngular( QuaternionToAngularAxis(rotation).xyz ); + + int i = FindObject( this->dynamicObjects, decoded.object_ID ); + if( i > -1 ) + this->dynamicObjects[i]->setRot( rotation ); + } + break; + case protocol_Gameplay_ObjectPositionRotation: + { + GameLogic::Protocol_ObjectPositionRotation decoded(data); + Float3 position = decoded.position; + Quaternion rotation = Quaternion( Float3(decoded.rotationQ), decoded.rotationQ[3] ); + + // if is this player. Remember to change camera + if( this->myId == decoded.object_ID ) { - Float3 right = Float3(world[0], world[1], world[2]); - Float3 up = Float3(world[4], world[5], world[6]); - Float3 objForward = Float3(world[8], world[9], world[10]); - Float3 pos = Float3(world[12], world[13], world[14]); + camera.SetPosition( position ); + camera.SetAngular( QuaternionToAngularAxis(rotation).xyz ); + } - Float3 cameraLook = camera->GetLook(); - Float3 cameraUp = camera->GetUp(); - - - - /*Oyster::Math::Float3 newUp = cameraUp.Dot(up); - up *= newUp; - up.Normalize(); - Oyster::Math::Float3 newLook = up.Cross(right); - newLook.Normalize();*/ - - //camera->setRight(right); - //camera->setUp(up); - //camera->setLook(objForward); - - up *= 1; - objForward *= -2; - Oyster::Math::Float3 cameraPos = pos + up + objForward; - //camera->SetPosition(cameraPos); - //camera->UpdateViewMatrix(); - + int i = FindObject( this->dynamicObjects, decoded.object_ID ); + if( i > -1 ) + { + this->dynamicObjects[i]->setPos( position ); + this->dynamicObjects[i]->setRot( rotation ); } } - } -} - -void GameState::Protocol( NewObj* newObj ) -{ - - Oyster::Math::Float4x4 world; - for(int i = 0; i<16; i++) - { - world[i] = newObj->worldPos[i]; - } - ModelInitData modelData; - - //modelData.world = world; - modelData.visible = true; - modelData.id = newObj->object_ID; - //not sure if this is good parsing rom char* to wstring - const char* path = newObj->path; - modelData.modelPath = std::wstring(path, path + strlen(path)); - // load models - C_DynamicObj* player = new C_DynamicObj(); - player->Init(modelData); - - dynamicObjects.Push(player); - -} - -void DanBias::Client::GameState::Protocol( RemoveObj* obj ) -{ - for (unsigned int i = 0; i < dynamicObjects.Size(); i++) - { - if(dynamicObjects[i]->GetId() == obj->object_ID) + break; + case protocol_Gameplay_ObjectEnabled: break; /** @todo TODO: implement */ + case protocol_Gameplay_ObjectDisabled: { - //dynamicObjects[i]->Release(); - dynamicObjects[i].Release(); - //dynamicObjects.erase(privData->object.begin() + i ); - } - } - //privData->object[obj->object_ID]->Release( ); -} + GameLogic::Protocol_ObjectDisable decoded(data); -//void GameState::Protocol(LightPos pos); \ No newline at end of file + int i = FindObject( this->dynamicObjects, decoded.objectID ); + if( i > -1 ) + { + this->dynamicObjects[i].Release(); + this->dynamicObjects.Pop(i); + } + } + break; + case protocol_Gameplay_ObjectCreate: + { + GameLogic::Protocol_ObjectCreate decoded(data); + C_DynamicObj* object = new C_DynamicObj(); + + ModelInitData modelData; + { + modelData.position = Float3( decoded.position ); + modelData.rotation = Quaternion( Float3(decoded.rotationQ), decoded.rotationQ[3] ); + modelData.scale = Float3( decoded.scale ); + modelData.visible = true; + modelData.id = decoded.object_ID; + + ::Utility::String::StringToWstring( decoded.name, modelData.modelPath ); + } + object->Init(modelData); + + dynamicObjects.Push(object); + + } + break; + case protocol_Gameplay_ObjectCreatePlayer: break; /** @todo TODO: implement */ + case protocol_Gameplay_ObjectJoinTeam: break; /** @todo TODO: implement */ + case protocol_Gameplay_ObjectLeaveTeam: break; /** @todo TODO: implement */ + case protocol_Gameplay_ObjectWeaponCooldown: break; /** @todo TODO: implement */ + case protocol_Gameplay_ObjectWeaponEnergy: break; /** @todo TODO: implement */ + case protocol_Gameplay_ObjectRespawn: break; /** @todo TODO: implement */ + case protocol_Gameplay_ObjectDie: break; /** @todo TODO: implement */ + default: break; + } +} diff --git a/Code/Game/DanBiasGame/GameClientState/GameState.h b/Code/Game/DanBiasGame/GameClientState/GameState.h index b0e6e285..d4a60493 100644 --- a/Code/Game/DanBiasGame/GameClientState/GameState.h +++ b/Code/Game/DanBiasGame/GameClientState/GameState.h @@ -4,9 +4,7 @@ #include "OysterMath.h" #include -//#include "Camera.h" #include "Camera_FPS.h" - #include "LevelLoader/LevelLoader.h" #include "C_obj/C_Player.h" #include "C_obj/C_DynamicObj.h" @@ -16,53 +14,46 @@ namespace DanBias { namespace Client { -class GameState : public GameClientState -{ - enum gameStateState + class GameState : public GameClientState { - gameStateState_loading, - gameStateState_playing, - gameStateState_end, + enum gameStateState + { + gameStateState_loading, + gameStateState_playing, + gameStateState_end, + }; + private: + + bool key_forward; + bool key_backward; + bool key_strafeRight; + bool key_strafeLeft; + bool key_Shoot; + bool key_Jump; + Camera_FPS camera; + + int myId; + struct myData; + myData* privData; + Utility::DynamicMemory::DynamicArray> staticObjects; + Utility::DynamicMemory::DynamicArray> dynamicObjects; + //Utility::DynamicMemory::DynamicArray> playObjects; + public: + GameState(void); + ~GameState(void); + bool Init(Oyster::Network::NetworkClient* nwClient); + GameClientState::ClientState Update(float deltaTime, InputClass* KeyInput) override; + bool LoadModels(std::string mapFile); + bool LoadModels(); + bool InitCamera(Oyster::Math::Float3 startPos) ; + void InitiatePlayer(int id, std::wstring modelName, Oyster::Math::Float4x4 world); + gameStateState LoadGame(); + void readKeyInput(InputClass* KeyInput); + bool Render()override; + bool Release()override; + + void DataRecieved(::Oyster::Network::NetEvent e); }; -private: - - bool key_forward; - bool key_backward; - bool key_strafeRight; - bool key_strafeLeft; - bool key_Shoot; - bool key_Jump; - Camera_FPS camera; - //Camera* camera; - - int myId; - //float pitch; - struct myData; - myData* privData; - Utility::DynamicMemory::DynamicArray> staticObjects; - Utility::DynamicMemory::DynamicArray> dynamicObjects; - //Utility::DynamicMemory::DynamicArray> playObjects; -public: - GameState(void); - ~GameState(void); - bool Init(Oyster::Network::NetworkClient* nwClient); - GameClientState::ClientState Update(float deltaTime, InputClass* KeyInput) override; - bool LoadModels(std::string mapFile); - bool LoadModels(); - bool InitCamera(Oyster::Math::Float3 startPos) ; - void InitiatePlayer(int id, std::wstring modelName, Oyster::Math::Float4x4 world); - gameStateState LoadGame(); - void readKeyInput(InputClass* KeyInput); - bool Render()override; - bool Release()override; - - void Protocol(ProtocolStruct* pos)override; - void Protocol(PlayerPos* pos); - void Protocol(ObjPos* pos); - void Protocol( NewObj* pos ); - void Protocol(RemoveObj* obj); - //void Protocol(LightPos pos); -}; -}; -}; +} +} #endif \ No newline at end of file diff --git a/Code/Game/GameProtocols/ObjectProtocols.h b/Code/Game/GameProtocols/ObjectProtocols.h index 753d61e3..1baf2654 100644 --- a/Code/Game/GameProtocols/ObjectProtocols.h +++ b/Code/Game/GameProtocols/ObjectProtocols.h @@ -192,7 +192,7 @@ namespace GameLogic struct Protocol_ObjectScale :public Oyster::Network::CustomProtocolObject { short object_ID; - float position[3]; + float scale[3]; Protocol_ObjectScale() { @@ -204,14 +204,14 @@ namespace GameLogic this->protocol[4].type = Oyster::Network::NetAttributeType_Float; object_ID = 0; - memset(&position[0], 0, sizeof(float) * 3); + memset(&scale[0], 0, sizeof(float) * 3); } Protocol_ObjectScale(Oyster::Network::CustomNetProtocol& p) { object_ID = p[1].value.netShort; - position[0] = p[2].value.netFloat; - position[1] = p[3].value.netFloat; - position[2] = p[4].value.netFloat; + scale[0] = p[2].value.netFloat; + scale[1] = p[3].value.netFloat; + scale[2] = p[4].value.netFloat; } Protocol_ObjectScale(float v[3], int id) { @@ -223,14 +223,14 @@ namespace GameLogic this->protocol[4].type = Oyster::Network::NetAttributeType_Float; object_ID = id; - memcpy(&position[0], &v[0], sizeof(float) * 3); + memcpy(&scale[0], &v[0], sizeof(float) * 3); } Oyster::Network::CustomNetProtocol GetProtocol() override { this->protocol[1].value = object_ID; - this->protocol[2].value = position[0]; - this->protocol[3].value = position[1]; - this->protocol[4].value = position[2]; + this->protocol[2].value = scale[0]; + this->protocol[3].value = scale[1]; + this->protocol[4].value = scale[2]; return protocol; } @@ -242,7 +242,7 @@ namespace GameLogic struct Protocol_ObjectRotation :public Oyster::Network::CustomProtocolObject { short object_ID; - float position[3]; + float rotationQ[4]; Protocol_ObjectRotation() { @@ -252,18 +252,20 @@ namespace GameLogic this->protocol[2].type = Oyster::Network::NetAttributeType_Float; this->protocol[3].type = Oyster::Network::NetAttributeType_Float; this->protocol[4].type = Oyster::Network::NetAttributeType_Float; + this->protocol[5].type = Oyster::Network::NetAttributeType_Float; object_ID = 0; - memset(&position[0], 0, sizeof(float) * 3); + memset(&rotationQ[0], 0, sizeof(float) * 4); } Protocol_ObjectRotation(Oyster::Network::CustomNetProtocol& p) { object_ID = p[1].value.netShort; - position[0] = p[2].value.netFloat; - position[1] = p[3].value.netFloat; - position[2] = p[4].value.netFloat; + rotationQ[0] = p[2].value.netFloat; + rotationQ[1] = p[3].value.netFloat; + rotationQ[2] = p[4].value.netFloat; + rotationQ[3] = p[5].value.netFloat; } - Protocol_ObjectRotation(float v[3], int id) + Protocol_ObjectRotation(float v[4], int id) { this->protocol[0].value = protocol_Gameplay_ObjectRotation; this->protocol[0].type = Oyster::Network::NetAttributeType_Short; @@ -271,16 +273,18 @@ namespace GameLogic this->protocol[2].type = Oyster::Network::NetAttributeType_Float; this->protocol[3].type = Oyster::Network::NetAttributeType_Float; this->protocol[4].type = Oyster::Network::NetAttributeType_Float; + this->protocol[5].type = Oyster::Network::NetAttributeType_Float; object_ID = id; - memcpy(&position[0], &v[0], sizeof(float) * 3); + memcpy(&rotationQ[0], &v[0], sizeof(float) * 4); } Oyster::Network::CustomNetProtocol GetProtocol() override { this->protocol[1].value = object_ID; - this->protocol[2].value = position[0]; - this->protocol[3].value = position[1]; - this->protocol[4].value = position[2]; + this->protocol[2].value = rotationQ[0]; + this->protocol[3].value = rotationQ[1]; + this->protocol[4].value = rotationQ[2]; + this->protocol[5].value = rotationQ[3]; return protocol; } @@ -292,7 +296,7 @@ namespace GameLogic { short object_ID; float position[3]; - float rotation[3]; + float rotationQ[4]; Protocol_ObjectPositionRotation() { @@ -307,10 +311,11 @@ namespace GameLogic this->protocol[5].type = Oyster::Network::NetAttributeType_Float; this->protocol[6].type = Oyster::Network::NetAttributeType_Float; this->protocol[7].type = Oyster::Network::NetAttributeType_Float; + this->protocol[8].type = Oyster::Network::NetAttributeType_Float; this->object_ID = 0; memset(&this->position[0], 0, sizeof(float) * 3); - memset(&this->rotation[0], 0, sizeof(float) * 3); + memset(&this->rotationQ[0], 0, sizeof(float) * 4); } Protocol_ObjectPositionRotation(Oyster::Network::CustomNetProtocol& p) { @@ -320,11 +325,12 @@ namespace GameLogic this->position[1] = p[3].value.netFloat; this->position[2] = p[4].value.netFloat; //ROTATION - this->rotation[0] = p[5].value.netFloat; - this->rotation[1] = p[6].value.netFloat; - this->rotation[2] = p[7].value.netFloat; + this->rotationQ[0] = p[5].value.netFloat; + this->rotationQ[1] = p[6].value.netFloat; + this->rotationQ[2] = p[7].value.netFloat; + this->rotationQ[3] = p[8].value.netFloat; } - Protocol_ObjectPositionRotation(float p[3], float r[3], int id) + Protocol_ObjectPositionRotation(float p[3], float r[4], int id) { this->protocol[0].value = protocol_Gameplay_ObjectPositionRotation; this->protocol[0].type = Oyster::Network::NetAttributeType_Short; @@ -337,10 +343,11 @@ namespace GameLogic this->protocol[5].type = Oyster::Network::NetAttributeType_Float; this->protocol[6].type = Oyster::Network::NetAttributeType_Float; this->protocol[7].type = Oyster::Network::NetAttributeType_Float; + this->protocol[8].type = Oyster::Network::NetAttributeType_Float; object_ID = id; memcpy(&this->position[0], &p[0], sizeof(float) * 3); - memcpy(&this->rotation[0], &r[0], sizeof(float) * 3); + memcpy(&this->rotationQ[0], &r[0], sizeof(float) * 4); } Oyster::Network::CustomNetProtocol GetProtocol() override { @@ -348,9 +355,10 @@ namespace GameLogic this->protocol[2].value = this->position[0]; this->protocol[3].value = this->position[1]; this->protocol[4].value = this->position[2]; - this->protocol[5].value = this->rotation[0]; - this->protocol[6].value = this->rotation[1]; - this->protocol[7].value = this->rotation[2]; + this->protocol[5].value = this->rotationQ[0]; + this->protocol[6].value = this->rotationQ[1]; + this->protocol[7].value = this->rotationQ[2]; + this->protocol[8].value = this->rotationQ[3]; return protocol; } @@ -437,66 +445,81 @@ namespace GameLogic //ObjectType type; //ie player, box or whatever int object_ID; std::string name; - float worldMatrix[16]; + float position[3]; + float rotationQ[4]; + float scale[3]; Protocol_ObjectCreate() { this->protocol[0].value = protocol_Gameplay_ObjectCreate; this->protocol[0].type = Oyster::Network::NetAttributeType_Short; - + //NAME this->protocol[1].type = Oyster::Network::NetAttributeType_Int; - this->protocol[2].type = Oyster::Network::NetAttributeType_CharArray; - - for (int i = 3; i <= 18; i++) - { - this->protocol[i].type = Oyster::Network::NetAttributeType_Float; - } - } - Protocol_ObjectCreate(Oyster::Network::CustomNetProtocol& p) - { + this->protocol[2].type = Oyster::Network::NetAttributeType_CharArray; + //POSITION + this->protocol[3].type = Oyster::Network::NetAttributeType_Float; + this->protocol[4].type = Oyster::Network::NetAttributeType_Float; + this->protocol[5].type = Oyster::Network::NetAttributeType_Float; + //ROTATION + this->protocol[6].type = Oyster::Network::NetAttributeType_Float; + this->protocol[7].type = Oyster::Network::NetAttributeType_Float; + this->protocol[8].type = Oyster::Network::NetAttributeType_Float; + this->protocol[9].type = Oyster::Network::NetAttributeType_Float; + //SCALE + this->protocol[10].type = Oyster::Network::NetAttributeType_Float; + this->protocol[11].type = Oyster::Network::NetAttributeType_Float; + this->protocol[12].type = Oyster::Network::NetAttributeType_Float; + this->object_ID = 0; + memset(this->position, 0, sizeof(float) * 3); + memset(this->rotationQ, 0, sizeof(float) * 4); } - Protocol_ObjectCreate(float m[16], int id, char *path) + Protocol_ObjectCreate( Oyster::Network::CustomNetProtocol& p ) + { + /** @todo TODO: not implemented */ + } + Protocol_ObjectCreate(float p[3], float r[4], int id, char *path) { this->protocol[0].value = protocol_Gameplay_ObjectCreate; this->protocol[0].type = Oyster::Network::NetAttributeType_Int; - + //NAME this->protocol[1].type = Oyster::Network::NetAttributeType_Int; this->protocol[2].type = Oyster::Network::NetAttributeType_CharArray; - - for (int i = 3; i <= 18; i++) - { - this->protocol[i].type = Oyster::Network::NetAttributeType_Float; - } + //POSITION + this->protocol[3].type = Oyster::Network::NetAttributeType_Float; + this->protocol[4].type = Oyster::Network::NetAttributeType_Float; + this->protocol[5].type = Oyster::Network::NetAttributeType_Float; + //ROTATION + this->protocol[6].type = Oyster::Network::NetAttributeType_Float; + this->protocol[7].type = Oyster::Network::NetAttributeType_Float; + this->protocol[8].type = Oyster::Network::NetAttributeType_Float; + this->protocol[9].type = Oyster::Network::NetAttributeType_Float; + //SCALE + this->protocol[10].type = Oyster::Network::NetAttributeType_Float; + this->protocol[11].type = Oyster::Network::NetAttributeType_Float; + this->protocol[12].type = Oyster::Network::NetAttributeType_Float; object_ID = id; this->name = path; - memcpy(&worldMatrix[0], &m[0], sizeof(float)*16); + + memset(this->position, 0, sizeof(float) * 3); + memset(this->rotationQ, 0, sizeof(float) * 4); } Oyster::Network::CustomNetProtocol GetProtocol() override { this->protocol[1].value = object_ID; this->protocol.Set(2, name); - this->protocol[3].value = worldMatrix[0]; - this->protocol[4].value = worldMatrix[1]; - this->protocol[5].value = worldMatrix[2]; - this->protocol[6].value = worldMatrix[3]; - this->protocol[7].value = worldMatrix[4]; - this->protocol[8].value = worldMatrix[5]; - this->protocol[9].value = worldMatrix[6]; - this->protocol[10].value = worldMatrix[7]; - this->protocol[11].value = worldMatrix[8]; - this->protocol[12].value = worldMatrix[9]; - this->protocol[13].value = worldMatrix[10]; - this->protocol[14].value = worldMatrix[11]; - this->protocol[15].value = worldMatrix[12]; - this->protocol[16].value = worldMatrix[13]; - this->protocol[17].value = worldMatrix[14]; - this->protocol[18].value = worldMatrix[15]; - - - + this->protocol[3].value = this->position[0]; + this->protocol[4].value = this->position[1]; + this->protocol[5].value = this->position[2]; + this->protocol[6].value = this->rotationQ[0]; + this->protocol[7].value = this->rotationQ[1]; + this->protocol[8].value = this->rotationQ[2]; + this->protocol[9].value = this->rotationQ[3]; + this->protocol[10].value = this->scale[0]; + this->protocol[11].value = this->scale[1]; + this->protocol[12].value = this->scale[2]; return protocol; } diff --git a/Code/Game/GameProtocols/ProtocolIdentificationID.h b/Code/Game/GameProtocols/ProtocolIdentificationID.h index c9418b4e..f9033d5b 100644 --- a/Code/Game/GameProtocols/ProtocolIdentificationID.h +++ b/Code/Game/GameProtocols/ProtocolIdentificationID.h @@ -73,6 +73,7 @@ /************************************/ /*********** PROTOCOL MACROS ***************************************************************************************************/ /************************************/ + inline bool ProtocolIsLobby(short ID) { return (ID >= protocol_LobbyMIN && ID <= protocol_LobbyMAX); } inline bool ProtocolIsGeneral(short ID) { return (ID >= protocol_GeneralMIN && ID <= protocol_GeneralMAX); } inline bool ProtocolIsGameplay(short ID) { return (ID >= protocol_GameplayMIN && ID <= protocol_GameplayMAX); } diff --git a/Code/Network/NetworkAPI/NetworkClient.cpp b/Code/Network/NetworkAPI/NetworkClient.cpp index 01ba495e..1178782c 100644 --- a/Code/Network/NetworkAPI/NetworkClient.cpp +++ b/Code/Network/NetworkAPI/NetworkClient.cpp @@ -32,10 +32,13 @@ using namespace std; *************************************/ typedef NetworkClient::ClientEventArgs CEA; +void OnRecieve_Default(NetEvent e) {} + struct NetworkClient::PrivateData : public IThreadObject { NetworkSession *owner; NetworkClient *parent; + ClientEventFunction OnRecieve; Connection connection; Translator translator; OysterThread thread; @@ -54,8 +57,8 @@ struct NetworkClient::PrivateData : public IThreadObject : ID(currID++) , parent(0) , owner(0) + , OnRecieve(OnRecieve_Default) { - InitWinSock(); this->thread.Create(this, false); this->thread.SetPriority(Oyster::Thread::OYSTER_THREAD_PRIORITY_1); @@ -319,6 +322,18 @@ void NetworkClient::SetOwner(NetworkSession* owner) this->privateData->owner = owner; } +void NetworkClient::SetMessagePump( NetworkClient::ClientEventFunction func ) +{ + if( func ) + { + this->privateData->OnRecieve = func; + } + else + { + this->privateData->OnRecieve = OnRecieve_Default; + } +} + bool NetworkClient::IsConnected() { if(!this->privateData) return false; @@ -336,6 +351,10 @@ void NetworkClient::DataRecieved(NetEvent e) { this->privateData->owner->ClientEventCallback(e); } + else + { + this->privateData->OnRecieve( e ); + } } //void NetworkClient::NetworkCallback(Oyster::Network::CustomNetProtocol& p) diff --git a/Code/Network/NetworkAPI/NetworkClient.h b/Code/Network/NetworkAPI/NetworkClient.h index a19f74e4..46eedf9b 100644 --- a/Code/Network/NetworkAPI/NetworkClient.h +++ b/Code/Network/NetworkAPI/NetworkClient.h @@ -108,6 +108,11 @@ namespace Oyster */ void SetOwner(NetworkSession* owner); + /** + * + */ + void SetMessagePump( ClientEventFunction func ); + /** * */ From 8dc22c854c83f2d90efb63c7f5d926f577b52a23 Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Wed, 12 Feb 2014 09:15:41 +0100 Subject: [PATCH 18/50] Overhaul of LobbyState --- .../GameClientState/LobbyState.cpp | 43 ++++++++------ .../DanBiasGame/GameClientState/LobbyState.h | 57 +++++++++---------- 2 files changed, 54 insertions(+), 46 deletions(-) diff --git a/Code/Game/DanBiasGame/GameClientState/LobbyState.cpp b/Code/Game/DanBiasGame/GameClientState/LobbyState.cpp index 9829b9a1..72ab9804 100644 --- a/Code/Game/DanBiasGame/GameClientState/LobbyState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/LobbyState.cpp @@ -18,17 +18,11 @@ struct LobbyState::myData int modelCount; // UI object // game client* -}privData; +} privData; -LobbyState::LobbyState(void) -{ - -} +LobbyState::LobbyState(void) {} -LobbyState::~LobbyState(void) -{ - -} +LobbyState::~LobbyState(void) {} bool LobbyState::Init(Oyster::Network::NetworkClient* nwClient) { @@ -39,6 +33,7 @@ bool LobbyState::Init(Oyster::Network::NetworkClient* nwClient) InitCamera(Oyster::Math::Float3(0,0,5.4f)); return true; } + bool LobbyState::LoadModels(std::wstring file) { Oyster::Graphics::Definitions::Pointlight plight; @@ -137,13 +132,27 @@ bool LobbyState::Release() privData = NULL; return true; } -void LobbyState::Protocol(ProtocolStruct* protocol) -{ - if((PlayerName*)protocol) - PlayerJoinProtocol((PlayerName*)protocol); - -} -void LobbyState::PlayerJoinProtocol(PlayerName* name) -{ +using namespace ::Oyster::Network; + +void LobbyState::DataRecieved( NetEvent e ) +{ + CustomNetProtocol data = e.args.data.protocol; + short ID = data[0].value.netShort; // fetching the id data. + + // Block irrelevant messages. + if( !ProtocolIsLobby(ID) ) + return; + + switch(ID) + { + case protocol_Lobby_Create: break; /** @todo TODO: implement */ + case protocol_Lobby_Start: break; /** @todo TODO: implement */ + case protocol_Lobby_Join: break; /** @todo TODO: implement */ + case protocol_Lobby_Login: break; /** @todo TODO: implement */ + case protocol_Lobby_Refresh: break; /** @todo TODO: implement */ + case protocol_Lobby_ClientData: break; /** @todo TODO: implement */ + case protocol_Lobby_GameData: break; /** @todo TODO: implement */ + default: break; + } } \ No newline at end of file diff --git a/Code/Game/DanBiasGame/GameClientState/LobbyState.h b/Code/Game/DanBiasGame/GameClientState/LobbyState.h index 6a8d9772..44ffc6e8 100644 --- a/Code/Game/DanBiasGame/GameClientState/LobbyState.h +++ b/Code/Game/DanBiasGame/GameClientState/LobbyState.h @@ -8,35 +8,34 @@ namespace DanBias { namespace Client - { - -class LobbyState : public GameClientState -{ -private: - Oyster::Network::NetworkClient* nwClient; - struct myData; - myData* privData; -public: - LobbyState(void); - ~LobbyState(void); - bool Init(Oyster::Network::NetworkClient* nwClient); - bool LoadModels(std::wstring file); - bool InitCamera(Oyster::Math::Float3 startPos); - ClientState Update(float deltaTime, InputClass* KeyInput); - // create session lobby - // join session lobby - // set name - // set rules - // set map - // ready - // chat - // kick + { + class LobbyState : public GameClientState + { + private: + Oyster::Network::NetworkClient* nwClient; + struct myData; + myData* privData; + public: + LobbyState(void); + ~LobbyState(void); + bool Init(Oyster::Network::NetworkClient* nwClient); + bool LoadModels(std::wstring file); + bool InitCamera(Oyster::Math::Float3 startPos); + ClientState Update(float deltaTime, InputClass* KeyInput); + // create session lobby + // join session lobby + // set name + // set rules + // set map + // ready + // chat + // kick - bool Render(); - bool Release(); - void Protocol(ProtocolStruct* protocol)override; - void PlayerJoinProtocol(PlayerName* name); - void GameStarted(); + bool Render(); + bool Release(); -};};}; + void DataRecieved( ::Oyster::Network::NetEvent e ); + }; + } +} #endif // ! DANBIAS_CLIENT_GAMECLIENTSTATE_H From 6bf7bc898ec1d38d6632e27c323dab2d0e8df78e Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Wed, 12 Feb 2014 09:49:08 +0100 Subject: [PATCH 19/50] some more of those overhauls --- .../DanBiasGame/GameClientState/GameState.cpp | 2 +- .../DanBiasGame/GameClientState/GameState.h | 2 +- .../GameClientState/LanMenuState.cpp | 22 ++-------- .../GameClientState/LanMenuState.h | 3 -- .../{LoginState.cpp => MainState.cpp} | 41 +++++++------------ .../{LoginState.h => MainState.h} | 18 ++++---- 6 files changed, 29 insertions(+), 59 deletions(-) rename Code/Game/DanBiasGame/GameClientState/{LoginState.cpp => MainState.cpp} (83%) rename Code/Game/DanBiasGame/GameClientState/{LoginState.h => MainState.h} (61%) diff --git a/Code/Game/DanBiasGame/GameClientState/GameState.cpp b/Code/Game/DanBiasGame/GameClientState/GameState.cpp index 5dfabd6d..4099541c 100644 --- a/Code/Game/DanBiasGame/GameClientState/GameState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/GameState.cpp @@ -14,7 +14,7 @@ struct GameState::myData int modelCount; Oyster::Network::NetworkClient* nwClient; gameStateState state; -}privData; +} privData; GameState::GameState(void) { diff --git a/Code/Game/DanBiasGame/GameClientState/GameState.h b/Code/Game/DanBiasGame/GameClientState/GameState.h index d4a60493..1fec5a24 100644 --- a/Code/Game/DanBiasGame/GameClientState/GameState.h +++ b/Code/Game/DanBiasGame/GameClientState/GameState.h @@ -52,7 +52,7 @@ namespace Client bool Render()override; bool Release()override; - void DataRecieved(::Oyster::Network::NetEvent e); + void DataRecieved( ::Oyster::Network::NetEvent e ); }; } } diff --git a/Code/Game/DanBiasGame/GameClientState/LanMenuState.cpp b/Code/Game/DanBiasGame/GameClientState/LanMenuState.cpp index 092307af..a1a3a443 100644 --- a/Code/Game/DanBiasGame/GameClientState/LanMenuState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/LanMenuState.cpp @@ -26,17 +26,11 @@ struct LanMenuState::myData // UI object // game client* -}privData; +} privData; -LanMenuState::LanMenuState() -{ +LanMenuState::LanMenuState() {} -} - -LanMenuState::~LanMenuState() -{ - -} +LanMenuState::~LanMenuState() {} bool LanMenuState::Init(Oyster::Network::NetworkClient* nwClient) { @@ -203,14 +197,4 @@ bool LanMenuState::Release() privData = NULL; return true; -} - -void LanMenuState::Protocol(ProtocolStruct* protocolStruct) -{ - if((PlayerName*)protocolStruct) - PlayerJoinProtocol((PlayerName*)protocolStruct); -} -void LanMenuState::PlayerJoinProtocol(PlayerName* name) -{ - } \ No newline at end of file diff --git a/Code/Game/DanBiasGame/GameClientState/LanMenuState.h b/Code/Game/DanBiasGame/GameClientState/LanMenuState.h index 6b11fd20..def6074b 100644 --- a/Code/Game/DanBiasGame/GameClientState/LanMenuState.h +++ b/Code/Game/DanBiasGame/GameClientState/LanMenuState.h @@ -24,9 +24,6 @@ namespace DanBias virtual bool Render(); virtual bool Release(); - virtual void Protocol(ProtocolStruct* protocolStruct); - - void PlayerJoinProtocol(PlayerName* name); private: Oyster::Network::NetworkClient* nwClient; diff --git a/Code/Game/DanBiasGame/GameClientState/LoginState.cpp b/Code/Game/DanBiasGame/GameClientState/MainState.cpp similarity index 83% rename from Code/Game/DanBiasGame/GameClientState/LoginState.cpp rename to Code/Game/DanBiasGame/GameClientState/MainState.cpp index 2a354d1b..409d1164 100644 --- a/Code/Game/DanBiasGame/GameClientState/LoginState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/MainState.cpp @@ -1,4 +1,4 @@ -#include "LoginState.h" +#include "MainState.h" #include "DllInterfaces/GFXAPI.h" #include "OysterMath.h" #include "C_obj/C_Player.h" @@ -8,7 +8,7 @@ using namespace DanBias::Client; -struct LoginState::myData +struct MainState::myData { myData(){} Oyster::Math3D::Float4x4 view; @@ -17,19 +17,13 @@ struct LoginState::myData int modelCount; // UI object // game client* -}privData; +} privData; -LoginState::LoginState(void) -{ +MainState::MainState(void) {} -} +MainState::~MainState(void) {} -LoginState::~LoginState(void) -{ - -} - -bool LoginState::Init(Oyster::Network::NetworkClient* nwClient) +bool MainState::Init(Oyster::Network::NetworkClient* nwClient) { privData = new myData(); this->nwClient = nwClient; @@ -38,7 +32,8 @@ bool LoginState::Init(Oyster::Network::NetworkClient* nwClient) InitCamera(Oyster::Math::Float3(0,0,5.4f)); return true; } -bool LoginState::LoadModels(std::wstring file) + +bool MainState::LoadModels(std::wstring file) { Oyster::Graphics::Definitions::Pointlight plight; plight.Pos = Oyster::Math::Float3(0,0,5); @@ -69,7 +64,7 @@ bool LoginState::LoadModels(std::wstring file) return true; } -bool LoginState::InitCamera(Oyster::Math::Float3 startPos) +bool MainState::InitCamera(Oyster::Math::Float3 startPos) { privData->proj = Oyster::Math3D::ProjectionMatrix_Perspective(Oyster::Math::pi/2,1024.0f/768.0f,.1f,1000); //privData->proj = Oyster::Math3D::ProjectionMatrix_Orthographic(1024, 768, 1, 1000); @@ -79,7 +74,8 @@ bool LoginState::InitCamera(Oyster::Math::Float3 startPos) privData->view = Oyster::Math3D::InverseOrientationMatrix(privData->view); return true; } -GameClientState::ClientState LoginState::Update(float deltaTime, InputClass* KeyInput) + +GameClientState::ClientState MainState::Update(float deltaTime, InputClass* KeyInput) { // picking // mouse events @@ -122,7 +118,8 @@ GameClientState::ClientState LoginState::Update(float deltaTime, InputClass* Key } return ClientState_Same; } -bool LoginState::Render() + +bool MainState::Render() { Oyster::Graphics::API::SetView(privData->view); @@ -142,7 +139,8 @@ bool LoginState::Render() Oyster::Graphics::API::EndFrame(); return true; } -bool LoginState::Release() + +bool MainState::Release() { for (int i = 0; i < privData->modelCount; i++) { @@ -155,13 +153,4 @@ bool LoginState::Release() privData = NULL; return true; } -void LoginState::Protocol(ProtocolStruct* protocol) -{ - if((PlayerName*)protocol) - PlayerJoinProtocol((PlayerName*)protocol); -} -void LoginState::PlayerJoinProtocol(PlayerName* name) -{ - -} \ No newline at end of file diff --git a/Code/Game/DanBiasGame/GameClientState/LoginState.h b/Code/Game/DanBiasGame/GameClientState/MainState.h similarity index 61% rename from Code/Game/DanBiasGame/GameClientState/LoginState.h rename to Code/Game/DanBiasGame/GameClientState/MainState.h index d426187d..789e9a7b 100644 --- a/Code/Game/DanBiasGame/GameClientState/LoginState.h +++ b/Code/Game/DanBiasGame/GameClientState/MainState.h @@ -1,5 +1,5 @@ -#ifndef DANBIAS_CLIENT_LOGINSTATE_H -#define DANBIAS_CLIENT_LOGINSTATE_H +#ifndef DANBIAS_CLIENT_MAINSTATE_H +#define DANBIAS_CLIENT_MAINSTATE_H #include "GameClientState.h" #include "OysterMath.h" @@ -9,16 +9,15 @@ namespace DanBias { namespace Client { - - class LoginState : public GameClientState + class MainState : public GameClientState { private: Oyster::Network::NetworkClient* nwClient; struct myData; myData* privData; public: - LoginState(void); - ~LoginState(void); + MainState(void); + ~MainState(void); bool Init(Oyster::Network::NetworkClient* nwClient); bool LoadModels(std::wstring file); bool InitCamera(Oyster::Math::Float3 startPos); @@ -26,8 +25,9 @@ namespace DanBias bool Render(); bool Release(); - void Protocol(ProtocolStruct* protocol)override; - void PlayerJoinProtocol(PlayerName* name); - };};}; + void DataRecieved( ::Oyster::Network::NetEvent e ); + }; + } +} #endif // ! DANBIAS_CLIENT_LOGINSTATE_H \ No newline at end of file From fdb7a7e1b64f2077255847683d38951fc68ab96d Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Wed, 12 Feb 2014 09:54:33 +0100 Subject: [PATCH 20/50] Added General Protocol to DataRecieved overloads --- .../DanBiasGame/GameClientState/GameState.cpp | 206 +++++++++--------- .../GameClientState/LobbyState.cpp | 33 ++- 2 files changed, 128 insertions(+), 111 deletions(-) diff --git a/Code/Game/DanBiasGame/GameClientState/GameState.cpp b/Code/Game/DanBiasGame/GameClientState/GameState.cpp index 4099541c..7fe91af4 100644 --- a/Code/Game/DanBiasGame/GameClientState/GameState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/GameState.cpp @@ -496,112 +496,120 @@ void GameState::DataRecieved( NetEvent e ) CustomNetProtocol data = e.args.data.protocol; short ID = data[0].value.netShort; // fetching the id data. - // Block irrelevant messages. - if( !ProtocolIsGameplay(ID) ) - return; - - switch(ID) + if( ProtocolIsGameplay(ID) ) { - case protocol_Gameplay_ObjectPickup: break; /** @todo TODO: implement */ - case protocol_Gameplay_ObjectDamage: break; /** @todo TODO: implement */ - case protocol_Gameplay_ObjectHealthStatus: break; /** @todo TODO: implement */ - case protocol_Gameplay_ObjectPosition: + switch(ID) { - GameLogic::Protocol_ObjectPosition decoded(data); - - // if is this player. Remember to change camera - if( this->myId == decoded.object_ID ) - camera.SetPosition( decoded.position ); - - int i = FindObject( this->dynamicObjects, decoded.object_ID ); - if( i > -1 ) - this->dynamicObjects[i]->setPos( decoded.position ); - } - break; - case protocol_Gameplay_ObjectScale: - { - GameLogic::Protocol_ObjectScale decoded(data); - int i = FindObject( this->dynamicObjects, decoded.object_ID ); - if( i > -1 ) - this->dynamicObjects[i]->setScale( decoded.scale ); - } - break; - case protocol_Gameplay_ObjectRotation: - { - GameLogic::Protocol_ObjectRotation decoded(data); - Quaternion rotation = Quaternion( Float3(decoded.rotationQ), decoded.rotationQ[3] ); - - // if is this player. Remember to change camera - if( this->myId == decoded.object_ID ) - camera.SetAngular( QuaternionToAngularAxis(rotation).xyz ); - - int i = FindObject( this->dynamicObjects, decoded.object_ID ); - if( i > -1 ) - this->dynamicObjects[i]->setRot( rotation ); - } - break; - case protocol_Gameplay_ObjectPositionRotation: - { - GameLogic::Protocol_ObjectPositionRotation decoded(data); - Float3 position = decoded.position; - Quaternion rotation = Quaternion( Float3(decoded.rotationQ), decoded.rotationQ[3] ); - - // if is this player. Remember to change camera - if( this->myId == decoded.object_ID ) + case protocol_Gameplay_ObjectPickup: break; /** @todo TODO: implement */ + case protocol_Gameplay_ObjectDamage: break; /** @todo TODO: implement */ + case protocol_Gameplay_ObjectHealthStatus: break; /** @todo TODO: implement */ + case protocol_Gameplay_ObjectPosition: { - camera.SetPosition( position ); - camera.SetAngular( QuaternionToAngularAxis(rotation).xyz ); - } + GameLogic::Protocol_ObjectPosition decoded(data); - int i = FindObject( this->dynamicObjects, decoded.object_ID ); - if( i > -1 ) - { - this->dynamicObjects[i]->setPos( position ); - this->dynamicObjects[i]->setRot( rotation ); + // if is this player. Remember to change camera + if( this->myId == decoded.object_ID ) + camera.SetPosition( decoded.position ); + + int i = FindObject( this->dynamicObjects, decoded.object_ID ); + if( i > -1 ) + this->dynamicObjects[i]->setPos( decoded.position ); } + break; + case protocol_Gameplay_ObjectScale: + { + GameLogic::Protocol_ObjectScale decoded(data); + int i = FindObject( this->dynamicObjects, decoded.object_ID ); + if( i > -1 ) + this->dynamicObjects[i]->setScale( decoded.scale ); + } + break; + case protocol_Gameplay_ObjectRotation: + { + GameLogic::Protocol_ObjectRotation decoded(data); + Quaternion rotation = Quaternion( Float3(decoded.rotationQ), decoded.rotationQ[3] ); + + // if is this player. Remember to change camera + if( this->myId == decoded.object_ID ) + camera.SetAngular( QuaternionToAngularAxis(rotation).xyz ); + + int i = FindObject( this->dynamicObjects, decoded.object_ID ); + if( i > -1 ) + this->dynamicObjects[i]->setRot( rotation ); + } + break; + case protocol_Gameplay_ObjectPositionRotation: + { + GameLogic::Protocol_ObjectPositionRotation decoded(data); + Float3 position = decoded.position; + Quaternion rotation = Quaternion( Float3(decoded.rotationQ), decoded.rotationQ[3] ); + + // if is this player. Remember to change camera + if( this->myId == decoded.object_ID ) + { + camera.SetPosition( position ); + camera.SetAngular( QuaternionToAngularAxis(rotation).xyz ); + } + + int i = FindObject( this->dynamicObjects, decoded.object_ID ); + if( i > -1 ) + { + this->dynamicObjects[i]->setPos( position ); + this->dynamicObjects[i]->setRot( rotation ); + } + } + break; + case protocol_Gameplay_ObjectEnabled: break; /** @todo TODO: implement */ + case protocol_Gameplay_ObjectDisabled: + { + GameLogic::Protocol_ObjectDisable decoded(data); + + int i = FindObject( this->dynamicObjects, decoded.objectID ); + if( i > -1 ) + { + this->dynamicObjects[i].Release(); + this->dynamicObjects.Pop(i); + } + } + break; + case protocol_Gameplay_ObjectCreate: + { + GameLogic::Protocol_ObjectCreate decoded(data); + C_DynamicObj* object = new C_DynamicObj(); + + ModelInitData modelData; + { + modelData.position = Float3( decoded.position ); + modelData.rotation = Quaternion( Float3(decoded.rotationQ), decoded.rotationQ[3] ); + modelData.scale = Float3( decoded.scale ); + modelData.visible = true; + modelData.id = decoded.object_ID; + + ::Utility::String::StringToWstring( decoded.name, modelData.modelPath ); + } + object->Init(modelData); + + dynamicObjects.Push(object); + + } + break; + case protocol_Gameplay_ObjectCreatePlayer: break; /** @todo TODO: implement */ + case protocol_Gameplay_ObjectJoinTeam: break; /** @todo TODO: implement */ + case protocol_Gameplay_ObjectLeaveTeam: break; /** @todo TODO: implement */ + case protocol_Gameplay_ObjectWeaponCooldown: break; /** @todo TODO: implement */ + case protocol_Gameplay_ObjectWeaponEnergy: break; /** @todo TODO: implement */ + case protocol_Gameplay_ObjectRespawn: break; /** @todo TODO: implement */ + case protocol_Gameplay_ObjectDie: break; /** @todo TODO: implement */ + default: break; } - break; - case protocol_Gameplay_ObjectEnabled: break; /** @todo TODO: implement */ - case protocol_Gameplay_ObjectDisabled: + } + else if( ProtocolIsGeneral(ID) ) + { + switch( ID ) { - GameLogic::Protocol_ObjectDisable decoded(data); - - int i = FindObject( this->dynamicObjects, decoded.objectID ); - if( i > -1 ) - { - this->dynamicObjects[i].Release(); - this->dynamicObjects.Pop(i); - } + case protocol_General_Status: break; /** @todo TODO: implement */ + case protocol_General_Text: break; /** @todo TODO: implement */ + default: break; } - break; - case protocol_Gameplay_ObjectCreate: - { - GameLogic::Protocol_ObjectCreate decoded(data); - C_DynamicObj* object = new C_DynamicObj(); - - ModelInitData modelData; - { - modelData.position = Float3( decoded.position ); - modelData.rotation = Quaternion( Float3(decoded.rotationQ), decoded.rotationQ[3] ); - modelData.scale = Float3( decoded.scale ); - modelData.visible = true; - modelData.id = decoded.object_ID; - - ::Utility::String::StringToWstring( decoded.name, modelData.modelPath ); - } - object->Init(modelData); - - dynamicObjects.Push(object); - - } - break; - case protocol_Gameplay_ObjectCreatePlayer: break; /** @todo TODO: implement */ - case protocol_Gameplay_ObjectJoinTeam: break; /** @todo TODO: implement */ - case protocol_Gameplay_ObjectLeaveTeam: break; /** @todo TODO: implement */ - case protocol_Gameplay_ObjectWeaponCooldown: break; /** @todo TODO: implement */ - case protocol_Gameplay_ObjectWeaponEnergy: break; /** @todo TODO: implement */ - case protocol_Gameplay_ObjectRespawn: break; /** @todo TODO: implement */ - case protocol_Gameplay_ObjectDie: break; /** @todo TODO: implement */ - default: break; } } diff --git a/Code/Game/DanBiasGame/GameClientState/LobbyState.cpp b/Code/Game/DanBiasGame/GameClientState/LobbyState.cpp index 72ab9804..631f3989 100644 --- a/Code/Game/DanBiasGame/GameClientState/LobbyState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/LobbyState.cpp @@ -141,18 +141,27 @@ void LobbyState::DataRecieved( NetEvent e ) short ID = data[0].value.netShort; // fetching the id data. // Block irrelevant messages. - if( !ProtocolIsLobby(ID) ) - return; - - switch(ID) + if( ProtocolIsLobby(ID) ) { - case protocol_Lobby_Create: break; /** @todo TODO: implement */ - case protocol_Lobby_Start: break; /** @todo TODO: implement */ - case protocol_Lobby_Join: break; /** @todo TODO: implement */ - case protocol_Lobby_Login: break; /** @todo TODO: implement */ - case protocol_Lobby_Refresh: break; /** @todo TODO: implement */ - case protocol_Lobby_ClientData: break; /** @todo TODO: implement */ - case protocol_Lobby_GameData: break; /** @todo TODO: implement */ - default: break; + switch(ID) + { + case protocol_Lobby_Create: break; /** @todo TODO: implement */ + case protocol_Lobby_Start: break; /** @todo TODO: implement */ + case protocol_Lobby_Join: break; /** @todo TODO: implement */ + case protocol_Lobby_Login: break; /** @todo TODO: implement */ + case protocol_Lobby_Refresh: break; /** @todo TODO: implement */ + case protocol_Lobby_ClientData: break; /** @todo TODO: implement */ + case protocol_Lobby_GameData: break; /** @todo TODO: implement */ + default: break; + } + } + else if( ProtocolIsGeneral(ID) ) + { + switch( ID ) + { + case protocol_General_Status: break; /** @todo TODO: implement */ + case protocol_General_Text: break; /** @todo TODO: implement */ + default: break; + } } } \ No newline at end of file From af85a6efdc8ad5996c89564cafeb27626809c974 Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Wed, 12 Feb 2014 10:43:06 +0100 Subject: [PATCH 21/50] Compiler fixes in State classes --- Code/Game/DanBiasGame/DanBiasGame.vcxproj | 4 +- Code/Game/DanBiasGame/DanBiasGame_Impl.cpp | 25 +++---- .../Game/DanBiasGame/GameClientRecieverFunc.h | 1 - .../DanBiasGame/GameClientState/C_Object.h | 71 +++++++++++-------- .../GameClientState/GameClientState.cpp | 5 +- .../GameClientState/GameClientState.h | 4 +- .../DanBiasGame/GameClientState/GameState.cpp | 2 +- .../DanBiasGame/GameClientState/GameState.h | 2 +- .../GameClientState/LanMenuState.cpp | 7 +- .../GameClientState/LobbyState.cpp | 2 +- .../DanBiasGame/GameClientState/LobbyState.h | 2 +- .../DanBiasGame/GameClientState/MainState.cpp | 61 ++++++++-------- .../DanBiasGame/GameClientState/MainState.h | 9 ++- 13 files changed, 108 insertions(+), 87 deletions(-) diff --git a/Code/Game/DanBiasGame/DanBiasGame.vcxproj b/Code/Game/DanBiasGame/DanBiasGame.vcxproj index 25d17123..349c2da6 100644 --- a/Code/Game/DanBiasGame/DanBiasGame.vcxproj +++ b/Code/Game/DanBiasGame/DanBiasGame.vcxproj @@ -213,7 +213,7 @@ - + @@ -232,7 +232,7 @@ - + diff --git a/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp b/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp index ccb80d85..fa988a00 100644 --- a/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp +++ b/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp @@ -5,7 +5,7 @@ #include "GameClientState/GameClientState.h" #include "GameClientState\GameState.h" #include "GameClientState\LobbyState.h" -#include "GameClientState\LoginState.h" +#include "GameClientState\MainState.h" #include "GameClientState\LanMenuState.h" #include #include "NetworkClient.h" @@ -18,7 +18,9 @@ #include "GameClientRecieverFunc.h" #include "../Misc/EventHandler/EventHandler.h" -using namespace Oyster::Event; + +using namespace ::Oyster::Event; +using namespace ::Utility::DynamicMemory; namespace DanBias { @@ -29,20 +31,15 @@ namespace DanBias { public: - DanBiasGamePrivateData() - { + DanBiasGamePrivateData() {} - } - ~DanBiasGamePrivateData() - { - - } + ~DanBiasGamePrivateData() {} public: WindowShell* window; InputClass* inputObj; Utility::WinTimer timer; - GameRecieverObject* recieverObj; + UniquePointer state; bool serverOwner; } data; @@ -69,12 +66,12 @@ namespace DanBias if( FAILED( InitInput() ) ) return DanBiasClientReturn_Error; - m_data->recieverObj = new GameRecieverObject; - m_data->serverOwner = false; + //m_data->serverOwner = false; // Start in lobby state - m_data->recieverObj->gameClientState = new Client::LoginState(); - if(!m_data->recieverObj->gameClientState->Init(m_data->recieverObj)) + m_data->state = new Client::MainState(); + + if( !m_data->state->Init() ) return DanBiasClientReturn_Error; m_data->timer.reset(); diff --git a/Code/Game/DanBiasGame/GameClientRecieverFunc.h b/Code/Game/DanBiasGame/GameClientRecieverFunc.h index 68b46d38..673cbdd1 100644 --- a/Code/Game/DanBiasGame/GameClientRecieverFunc.h +++ b/Code/Game/DanBiasGame/GameClientRecieverFunc.h @@ -9,7 +9,6 @@ #include "GameClientState\GameClientState.h" #include "GameClientState\GameState.h" - #include namespace DanBias diff --git a/Code/Game/DanBiasGame/GameClientState/C_Object.h b/Code/Game/DanBiasGame/GameClientState/C_Object.h index 9c06d2da..4dec19ec 100644 --- a/Code/Game/DanBiasGame/GameClientState/C_Object.h +++ b/Code/Game/DanBiasGame/GameClientState/C_Object.h @@ -5,7 +5,6 @@ namespace DanBias { namespace Client { - struct ModelInitData { int id; @@ -16,34 +15,50 @@ namespace DanBias bool visible; }; -class C_Object -{ -private: - Oyster::Math::Float4x4 world; - Oyster::Math::Float3 position; - Oyster::Math::Quaternion rotation; - Oyster::Math::Float3 scale; - Oyster::Graphics::Model::Model *model; - int id; - void updateWorld(); -public: + class C_Object + { + private: + Oyster::Math::Float4x4 world; + Oyster::Math::Float3 position; + Oyster::Math::Quaternion rotation; + Oyster::Math::Float3 scale; + Oyster::Graphics::Model::Model *model; + int id; + void updateWorld(); + public: - virtual void Init(ModelInitData modelInit); + virtual void Init(ModelInitData modelInit); - void setWorld(Oyster::Math::Float4x4 world); - Oyster::Math::Float4x4 getWorld() const; - void setPos(Oyster::Math::Float3 newPos); - Oyster::Math::Float3 getPos() const; - void addPos(Oyster::Math::Float3 deltaPos); - void setRot(Oyster::Math::Quaternion newRot); - Oyster::Math::Quaternion getRotation() const; - void addRot(Oyster::Math::Quaternion deltaRot); - void setScale(Oyster::Math::Float3 newScale); - void addScale(Oyster::Math::Float3 deltaScale); - Oyster::Math::Float3 getScale() const; + void setWorld(Oyster::Math::Float4x4 world); + Oyster::Math::Float4x4 getWorld() const; + void setPos(Oyster::Math::Float3 newPos); + Oyster::Math::Float3 getPos() const; + void addPos(Oyster::Math::Float3 deltaPos); + void setRot(Oyster::Math::Quaternion newRot); + Oyster::Math::Quaternion getRotation() const; + void addRot(Oyster::Math::Quaternion deltaRot); + void setScale(Oyster::Math::Float3 newScale); + void addScale(Oyster::Math::Float3 deltaScale); + Oyster::Math::Float3 getScale() const; + + virtual void Render(); + virtual void Release(); + virtual int GetId() const; + }; + } +} + +namespace Utility { namespace DynamicMemory +{ // template specializationto allowuse of dynamicmemory tools + template<> + inline void SafeDeleteInstance( ::DanBias::Client::C_Object *dynamicInstance ) + { + if( dynamicInstance ) + { + dynamicInstance->Release(); + delete dynamicInstance; + } + } +} } - virtual void Render(); - virtual void Release(); - virtual int GetId() const; -};};}; #endif diff --git a/Code/Game/DanBiasGame/GameClientState/GameClientState.cpp b/Code/Game/DanBiasGame/GameClientState/GameClientState.cpp index 1fffc85e..d0d811f4 100644 --- a/Code/Game/DanBiasGame/GameClientState/GameClientState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/GameClientState.cpp @@ -1,12 +1,15 @@ #include "GameClientState.h" using namespace DanBias::Client; +using namespace ::Oyster::Network; GameClientState::GameClientState(void) { } - GameClientState::~GameClientState(void) { } + +void DataRecieved( NetEvent e ) +{ /* do nothing */ } \ No newline at end of file diff --git a/Code/Game/DanBiasGame/GameClientState/GameClientState.h b/Code/Game/DanBiasGame/GameClientState/GameClientState.h index bab3ba57..cfb149aa 100644 --- a/Code/Game/DanBiasGame/GameClientState/GameClientState.h +++ b/Code/Game/DanBiasGame/GameClientState/GameClientState.h @@ -7,7 +7,7 @@ namespace DanBias { namespace Client { - class GameClientState : public ::Oyster::Network::NetworkClient + class GameClientState { public: enum ClientState @@ -27,6 +27,8 @@ namespace DanBias { namespace Client virtual ClientState Update(float deltaTime, InputClass* KeyInput) = 0; virtual bool Render() = 0; virtual bool Release() = 0; + + virtual void DataRecieved( ::Oyster::Network::NetEvent<::Oyster::Network::NetworkClient*, ::Oyster::Network::NetworkClient::ClientEventArgs> e ); }; } } #endif \ No newline at end of file diff --git a/Code/Game/DanBiasGame/GameClientState/GameState.cpp b/Code/Game/DanBiasGame/GameClientState/GameState.cpp index 7fe91af4..52cb03e0 100644 --- a/Code/Game/DanBiasGame/GameClientState/GameState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/GameState.cpp @@ -491,7 +491,7 @@ int FindObject( const DynamicArray> &collection, int id ) return -1; } -void GameState::DataRecieved( NetEvent e ) +void GameState::DataRecieved( NetEvent e ) { CustomNetProtocol data = e.args.data.protocol; short ID = data[0].value.netShort; // fetching the id data. diff --git a/Code/Game/DanBiasGame/GameClientState/GameState.h b/Code/Game/DanBiasGame/GameClientState/GameState.h index 1fec5a24..f932bbc2 100644 --- a/Code/Game/DanBiasGame/GameClientState/GameState.h +++ b/Code/Game/DanBiasGame/GameClientState/GameState.h @@ -52,7 +52,7 @@ namespace Client bool Render()override; bool Release()override; - void DataRecieved( ::Oyster::Network::NetEvent e ); + void DataRecieved( ::Oyster::Network::NetEvent<::Oyster::Network::NetworkClient*, ::Oyster::Network::NetworkClient::ClientEventArgs> e ); }; } } diff --git a/Code/Game/DanBiasGame/GameClientState/LanMenuState.cpp b/Code/Game/DanBiasGame/GameClientState/LanMenuState.cpp index a1a3a443..12847875 100644 --- a/Code/Game/DanBiasGame/GameClientState/LanMenuState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/LanMenuState.cpp @@ -7,11 +7,12 @@ #include "LobbyState.h" #include "GameState.h" -#include "../GameClientRecieverFunc.h" +#include "../Network/NetworkAPI/NetworkClient.h" #include -using namespace DanBias::Client; +using namespace ::DanBias::Client; +using namespace ::Oyster::Network; struct LanMenuState::myData { @@ -21,7 +22,7 @@ struct LanMenuState::myData C_Object* object[2]; int modelCount; - GameRecieverObject* recieverObj; + NetworkClient* recieverObj; bool serverOwner; // UI object diff --git a/Code/Game/DanBiasGame/GameClientState/LobbyState.cpp b/Code/Game/DanBiasGame/GameClientState/LobbyState.cpp index 631f3989..afb909a5 100644 --- a/Code/Game/DanBiasGame/GameClientState/LobbyState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/LobbyState.cpp @@ -135,7 +135,7 @@ bool LobbyState::Release() using namespace ::Oyster::Network; -void LobbyState::DataRecieved( NetEvent e ) +void LobbyState::DataRecieved( NetEvent e ) { CustomNetProtocol data = e.args.data.protocol; short ID = data[0].value.netShort; // fetching the id data. diff --git a/Code/Game/DanBiasGame/GameClientState/LobbyState.h b/Code/Game/DanBiasGame/GameClientState/LobbyState.h index 44ffc6e8..56a3ab3b 100644 --- a/Code/Game/DanBiasGame/GameClientState/LobbyState.h +++ b/Code/Game/DanBiasGame/GameClientState/LobbyState.h @@ -34,7 +34,7 @@ namespace DanBias bool Render(); bool Release(); - void DataRecieved( ::Oyster::Network::NetEvent e ); + void DataRecieved( ::Oyster::Network::NetEvent<::Oyster::Network::NetworkClient*, ::Oyster::Network::NetworkClient::ClientEventArgs> e ); }; } } diff --git a/Code/Game/DanBiasGame/GameClientState/MainState.cpp b/Code/Game/DanBiasGame/GameClientState/MainState.cpp index 409d1164..710eebbe 100644 --- a/Code/Game/DanBiasGame/GameClientState/MainState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/MainState.cpp @@ -5,39 +5,44 @@ #include "C_obj/C_StaticObj.h" #include "C_obj/C_DynamicObj.h" #include +#include "NetworkClient.h" -using namespace DanBias::Client; +using namespace ::DanBias::Client; +using namespace ::Oyster::Math3D; +using namespace ::Oyster::Network; +using namespace ::Utility::DynamicMemory; -struct MainState::myData +struct MainState::MyData { - myData(){} - Oyster::Math3D::Float4x4 view; - Oyster::Math3D::Float4x4 proj; - C_Object* object[2]; + MyData() {} + + Float4x4 view; + Float4x4 proj; + + UniquePointer object[2]; int modelCount; - // UI object - // game client* -} privData; + NetworkClient *nwClient; +}; MainState::MainState(void) {} MainState::~MainState(void) {} -bool MainState::Init(Oyster::Network::NetworkClient* nwClient) +bool MainState::Init( NetworkClient* nwClient ) { - privData = new myData(); - this->nwClient = nwClient; + this->privData = new MyData(); + // load models LoadModels(L"UImodels.txt"); - InitCamera(Oyster::Math::Float3(0,0,5.4f)); + InitCamera( Float3(0.0f, 0.0f, 5.4f) ); return true; } bool MainState::LoadModels(std::wstring file) { Oyster::Graphics::Definitions::Pointlight plight; - plight.Pos = Oyster::Math::Float3(0,0,5); - plight.Color = Oyster::Math::Float3(1,1,1); + plight.Pos = Float3(0,0,5); + plight.Color = Float3(1,1,1); plight.Radius = 100; plight.Bright = 1; Oyster::Graphics::API::AddLight(plight); @@ -48,30 +53,30 @@ bool MainState::LoadModels(std::wstring file) ModelInitData modelData; - modelData.rotation = Oyster::Math::Quaternion::identity; - modelData.scale = Oyster::Math::Float3(1,1,1); + modelData.rotation = Quaternion::identity; + modelData.scale = Float3(1,1,1); modelData.visible = true; modelData.modelPath = L"box.dan"; - modelData.position = Oyster::Math::Float3(2,2,2); + modelData.position = Float3(2,2,2); privData->object[0] = new C_StaticObj(); privData->object[0]->Init(modelData); - modelData.position = Oyster::Math::Float3(-2,0,-2); + modelData.position = Float3(-2,0,-2); privData->object[1] = new C_StaticObj(); privData->object[1]->Init(modelData); return true; } -bool MainState::InitCamera(Oyster::Math::Float3 startPos) +bool MainState::InitCamera(Float3 startPos) { - privData->proj = Oyster::Math3D::ProjectionMatrix_Perspective(Oyster::Math::pi/2,1024.0f/768.0f,.1f,1000); - //privData->proj = Oyster::Math3D::ProjectionMatrix_Orthographic(1024, 768, 1, 1000); + privData->proj = ProjectionMatrix_Perspective(pi/2,1024.0f/768.0f,.1f,1000); + //privData->proj = ProjectionMatrix_Orthographic(1024, 768, 1, 1000); Oyster::Graphics::API::SetProjection(privData->proj); - privData->view = Oyster::Math3D::OrientationMatrix_LookAtDirection(Oyster::Math::Float3(0,0,-1),Oyster::Math::Float3(0,1,0),startPos); - privData->view = Oyster::Math3D::InverseOrientationMatrix(privData->view); + privData->view = OrientationMatrix_LookAtDirection(Float3(0,0,-1),Float3(0,1,0),startPos); + privData->view = InverseOrientationMatrix(privData->view); return true; } @@ -93,9 +98,9 @@ GameClientState::ClientState MainState::Update(float deltaTime, InputClass* KeyI DanBias::GameServerAPI::ServerInitiate(desc); DanBias::GameServerAPI::ServerStart(); // my ip - nwClient->Connect(15152, "127.0.0.1"); + this->privData->nwClient->Connect(15152, "127.0.0.1"); - if (!nwClient->IsConnected()) + if (!this->privData->nwClient->IsConnected()) { // failed to connect return ClientState_Same; @@ -106,10 +111,10 @@ GameClientState::ClientState MainState::Update(float deltaTime, InputClass* KeyI if( KeyInput->IsKeyPressed(DIK_J)) { // game ip - nwClient->Connect(15152, "127.0.0.1"); + this->privData->nwClient->Connect(15152, "127.0.0.1"); //nwClient->Connect(15152, "83.254.217.248"); - if (!nwClient->IsConnected()) + if (!this->privData->nwClient->IsConnected()) { // failed to connect return ClientState_Same; diff --git a/Code/Game/DanBiasGame/GameClientState/MainState.h b/Code/Game/DanBiasGame/GameClientState/MainState.h index 789e9a7b..0e7bf1b6 100644 --- a/Code/Game/DanBiasGame/GameClientState/MainState.h +++ b/Code/Game/DanBiasGame/GameClientState/MainState.h @@ -12,13 +12,12 @@ namespace DanBias class MainState : public GameClientState { private: - Oyster::Network::NetworkClient* nwClient; - struct myData; - myData* privData; + struct MyData; + ::Utility::DynamicMemory::UniquePointer privData; public: MainState(void); ~MainState(void); - bool Init(Oyster::Network::NetworkClient* nwClient); + bool Init( Oyster::Network::NetworkClient* nwClient ); bool LoadModels(std::wstring file); bool InitCamera(Oyster::Math::Float3 startPos); ClientState Update(float deltaTime, InputClass* KeyInput); @@ -26,7 +25,7 @@ namespace DanBias bool Render(); bool Release(); - void DataRecieved( ::Oyster::Network::NetEvent e ); + void DataRecieved( ::Oyster::Network::NetEvent<::Oyster::Network::NetworkClient*, ::Oyster::Network::NetworkClient::ClientEventArgs> e ); }; } } From 6becd5883376f8d159e20ac6caeee8f67341f39e Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Wed, 12 Feb 2014 11:19:25 +0100 Subject: [PATCH 22/50] DanBiasGame_Impl overhauled + compilation errorfixes --- Code/Game/DanBiasGame/DanBiasGame.vcxproj | 1 - Code/Game/DanBiasGame/DanBiasGame_Impl.cpp | 96 +++++++++---------- .../GameClientState/GameClientState.h | 14 +++ Code/Game/DanBiasGame/Include/DanBiasGame.h | 8 -- 4 files changed, 62 insertions(+), 57 deletions(-) diff --git a/Code/Game/DanBiasGame/DanBiasGame.vcxproj b/Code/Game/DanBiasGame/DanBiasGame.vcxproj index 349c2da6..fc7de363 100644 --- a/Code/Game/DanBiasGame/DanBiasGame.vcxproj +++ b/Code/Game/DanBiasGame/DanBiasGame.vcxproj @@ -216,7 +216,6 @@ - diff --git a/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp b/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp index fa988a00..502815fb 100644 --- a/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp +++ b/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp @@ -15,40 +15,39 @@ #include "L_inputClass.h" #include "WinTimer.h" #include "vld.h" -#include "GameClientRecieverFunc.h" #include "../Misc/EventHandler/EventHandler.h" using namespace ::Oyster::Event; +using namespace Oyster::Network; using namespace ::Utility::DynamicMemory; +void ClientEventFunction( NetEvent e ); + namespace DanBias { - #pragma region Game Data - class DanBiasGamePrivateData { - public: - DanBiasGamePrivateData() {} - - ~DanBiasGamePrivateData() {} - public: WindowShell* window; InputClass* inputObj; Utility::WinTimer timer; UniquePointer state; + NetworkClient networkClient; bool serverOwner; + float capFrame; + + DanBiasGamePrivateData() + { + this->capFrame = 0; + } } data; #pragma endregion - DanBiasGamePrivateData* DanBiasGame::m_data = new DanBiasGamePrivateData(); - float DanBiasGame::capFrame = 0; - //-------------------------------------------------------------------------------------- // Interface API functions //-------------------------------------------------------------------------------------- @@ -56,8 +55,8 @@ namespace DanBias { WindowShell::CreateConsoleWindow(); - //if(! m_data->window->CreateWin(WindowShell::WINDOW_INIT_DESC(L"Window", cPOINT(1600, 900), cPOINT()))) - if(! m_data->window->CreateWin(WindowShell::WINDOW_INIT_DESC())) + //if(! data.window->CreateWin(WindowShell::WINDOW_INIT_DESC(L"Window", cPOINT(1600, 900), cPOINT()))) + if(! data.window->CreateWin(WindowShell::WINDOW_INIT_DESC())) return DanBiasClientReturn_Error; if( FAILED( InitDirect3D() ) ) @@ -66,37 +65,39 @@ namespace DanBias if( FAILED( InitInput() ) ) return DanBiasClientReturn_Error; - //m_data->serverOwner = false; + data.serverOwner = false; - // Start in lobby state - m_data->state = new Client::MainState(); + data.networkClient.SetMessagePump( ClientEventFunction ); - if( !m_data->state->Init() ) + // Start in main menu state + data.state = new Client::MainState(); + + if( !data.state->Init( &data.networkClient ) ) return DanBiasClientReturn_Error; - m_data->timer.reset(); + data.timer.reset(); return DanBiasClientReturn_Sucess; } DanBiasClientReturn DanBiasGame::Run() { // Main message loop - while(m_data->window->Frame()) + while(data.window->Frame()) { - float dt = (float)m_data->timer.getElapsedSeconds(); - m_data->timer.reset(); + float dt = (float)data.timer.getElapsedSeconds(); + data.timer.reset(); - if(m_data->recieverObj->IsConnected()) - m_data->recieverObj->Update(); + if(data.networkClient.IsConnected()) + data.networkClient.Update(); - capFrame += dt; - if(capFrame > 0.03) + data.capFrame += dt; + if(data.capFrame > 0.03) { if(Update(dt) != S_OK) return DanBiasClientReturn_Error; if(Render(dt) != S_OK) return DanBiasClientReturn_Error; - capFrame = 0; + data.capFrame = 0; } } @@ -113,7 +114,7 @@ namespace DanBias //-------------------------------------------------------------------------------------- HRESULT DanBiasGame::InitDirect3D() { - if(Oyster::Graphics::API::Init(m_data->window->GetHWND(), false, false, Oyster::Math::Float2( 1024, 768)) != Oyster::Graphics::API::Sucsess) + if(Oyster::Graphics::API::Init(data.window->GetHWND(), false, false, Oyster::Math::Float2( 1024, 768)) != Oyster::Graphics::API::Sucsess) return E_FAIL; Oyster::Graphics::API::Option p; p.modelPath = L"..\\Content\\Models\\"; @@ -127,8 +128,8 @@ namespace DanBias //------------------------------------------------------------------------------------- HRESULT DanBiasGame::InitInput() { - m_data->inputObj = new InputClass; - if(!m_data->inputObj->Initialize(m_data->window->GetHINSTANCE(), m_data->window->GetHWND(), m_data->window->GetHeight(), m_data->window->GetWidth())) + data.inputObj = new InputClass; + if(!data.inputObj->Initialize(data.window->GetHINSTANCE(), data.window->GetHWND(), data.window->GetHeight(), data.window->GetWidth())) { MessageBox(0, L"Could not initialize the input object.", L"Error", MB_OK); return E_FAIL; @@ -138,30 +139,29 @@ namespace DanBias HRESULT DanBiasGame::Update(float deltaTime) { - m_data->inputObj->Update(); + data.inputObj->Update(); - if(m_data->serverOwner) + if(data.serverOwner) { DanBias::GameServerAPI::ServerUpdate(); } DanBias::Client::GameClientState::ClientState state = DanBias::Client::GameClientState::ClientState_Same; - state = m_data->recieverObj->gameClientState->Update(deltaTime, m_data->inputObj); + + state = data.state->Update( deltaTime, data.inputObj ); if(state != Client::GameClientState::ClientState_Same) { bool stateVal = false; - m_data->recieverObj->gameClientState->Release(); - delete m_data->recieverObj->gameClientState; - m_data->recieverObj->gameClientState = NULL; + data.state->Release(); switch (state) { case Client::GameClientState::ClientState_LobbyCreated: - m_data->serverOwner = true; + data.serverOwner = true; stateVal = true; case Client::GameClientState::ClientState_Lobby: - m_data->recieverObj->gameClientState = new Client::LobbyState(); + data.state = new Client::LobbyState(); stateVal = true; break; case Client::GameClientState::ClientState_Game: @@ -174,7 +174,7 @@ namespace DanBias if(stateVal) { - m_data->recieverObj->gameClientState->Init(m_data->recieverObj); // send game client + data.state->Init( &data.networkClient ); // send game client } else { @@ -187,21 +187,15 @@ namespace DanBias HRESULT DanBiasGame::Render(float deltaTime) { - - - m_data->recieverObj->gameClientState->Render(); + data.state->Render(); return S_OK; } HRESULT DanBiasGame::CleanUp() { - m_data->recieverObj->gameClientState->Release(); - delete m_data->recieverObj->gameClientState; - m_data->recieverObj->Disconnect(); - delete m_data->recieverObj; - delete m_data->inputObj; - delete m_data; + data.networkClient.Disconnect(); + delete data.inputObj; Oyster::Graphics::API::Clean(); @@ -210,4 +204,10 @@ namespace DanBias return S_OK; } -} //End namespace DanBias \ No newline at end of file +} //End namespace DanBias + +void ClientEventFunction( NetEvent e ) +{ + if( DanBias::data.state ) + DanBias::data.state->DataRecieved( e ); +} diff --git a/Code/Game/DanBiasGame/GameClientState/GameClientState.h b/Code/Game/DanBiasGame/GameClientState/GameClientState.h index cfb149aa..4e34fcf2 100644 --- a/Code/Game/DanBiasGame/GameClientState/GameClientState.h +++ b/Code/Game/DanBiasGame/GameClientState/GameClientState.h @@ -31,4 +31,18 @@ namespace DanBias { namespace Client virtual void DataRecieved( ::Oyster::Network::NetEvent<::Oyster::Network::NetworkClient*, ::Oyster::Network::NetworkClient::ClientEventArgs> e ); }; } } + +namespace Utility { namespace DynamicMemory +{ // template specializationto allowuse of dynamicmemory tools + template<> + inline void SafeDeleteInstance( ::DanBias::Client::GameClientState *dynamicInstance ) + { + if( dynamicInstance ) + { + dynamicInstance->Release(); + delete dynamicInstance; + } + } +} } + #endif \ No newline at end of file diff --git a/Code/Game/DanBiasGame/Include/DanBiasGame.h b/Code/Game/DanBiasGame/Include/DanBiasGame.h index 15c3a40e..33795482 100644 --- a/Code/Game/DanBiasGame/Include/DanBiasGame.h +++ b/Code/Game/DanBiasGame/Include/DanBiasGame.h @@ -15,8 +15,6 @@ #define NOMINMAX #include - - namespace DanBias { extern "C" @@ -56,12 +54,6 @@ namespace DanBias static HRESULT Update(float deltaTime); static HRESULT Render(float deltaTime); static HRESULT CleanUp(); - - static float capFrame; - - private: - static DanBiasGamePrivateData* m_data; - }; From 377c752c46f243b0f727d0b66c670a45445eeef9 Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Wed, 12 Feb 2014 11:50:36 +0100 Subject: [PATCH 23/50] Fixed Target Build table in solution file --- Code/DanBias.sln | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Code/DanBias.sln b/Code/DanBias.sln index f2bf5f98..50da830a 100644 --- a/Code/DanBias.sln +++ b/Code/DanBias.sln @@ -196,8 +196,8 @@ Global {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Debug|Mixed Platforms.Build.0 = Release|Win32 {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Debug|Win32.ActiveCfg = Debug|Win32 {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Debug|Win32.Build.0 = Debug|Win32 - {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Debug|x64.ActiveCfg = Release|Win32 - {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Debug|x64.Build.0 = Release|Win32 + {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Debug|x64.ActiveCfg = Release|x64 + {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Debug|x64.Build.0 = Release|x64 {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.MinSizeRel|Mixed Platforms.ActiveCfg = Debug|Win32 {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.MinSizeRel|Win32.ActiveCfg = Debug|Win32 {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.MinSizeRel|x64.ActiveCfg = Debug|Win32 From 134994447f145908d39a89f2595b38e22532851b Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Wed, 12 Feb 2014 12:11:23 +0100 Subject: [PATCH 24/50] Fixed compilation error --- Code/Game/GameProtocols/ObjectProtocols.h | 7 ++++--- .../Game/GameServer/Implementation/GameSession_General.cpp | 5 ++++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Code/Game/GameProtocols/ObjectProtocols.h b/Code/Game/GameProtocols/ObjectProtocols.h index 1baf2654..70e24883 100644 --- a/Code/Game/GameProtocols/ObjectProtocols.h +++ b/Code/Game/GameProtocols/ObjectProtocols.h @@ -478,7 +478,7 @@ namespace GameLogic { /** @todo TODO: not implemented */ } - Protocol_ObjectCreate(float p[3], float r[4], int id, char *path) + Protocol_ObjectCreate(float p[3], float r[4], float s[3], int id, char *path) { this->protocol[0].value = protocol_Gameplay_ObjectCreate; this->protocol[0].type = Oyster::Network::NetAttributeType_Int; @@ -502,8 +502,9 @@ namespace GameLogic object_ID = id; this->name = path; - memset(this->position, 0, sizeof(float) * 3); - memset(this->rotationQ, 0, sizeof(float) * 4); + memcpy(this->position, p, sizeof(float) * 3); + memcpy(this->rotationQ, r, sizeof(float) * 4); + memcpy(this->scale, s, sizeof(float) * 3); } Oyster::Network::CustomNetProtocol GetProtocol() override { diff --git a/Code/Game/GameServer/Implementation/GameSession_General.cpp b/Code/Game/GameServer/Implementation/GameSession_General.cpp index f76428d8..cc15b9c1 100644 --- a/Code/Game/GameServer/Implementation/GameSession_General.cpp +++ b/Code/Game/GameServer/Implementation/GameSession_General.cpp @@ -157,7 +157,10 @@ namespace DanBias if((this->clients[k] && readyList[i]) && readyList[i]->GetClient()->GetID() != this->clients[k]->GetClient()->GetID()) { //Protocol_ObjectCreatePlayer - Protocol_ObjectCreate p(this->clients[k]->GetPlayer()->GetOrientation(), this->clients[k]->GetPlayer()->GetID(), "char_white.dan"); //The model name will be custom later.. + Protocol_ObjectCreate p( this->clients[k]->GetPlayer()->GetPosition(), + this->clients[k]->GetPlayer()->GetRotation(), + this->clients[k]->GetPlayer()->GetScale(), + this->clients[k]->GetPlayer()->GetID(), "char_white.dan"); //The model name will be custom later.. readyList[i]->GetClient()->Send(p); } } From 88341eaff7dde7594ce2bf8910a67d094f4bf2a9 Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Wed, 12 Feb 2014 13:14:28 +0100 Subject: [PATCH 25/50] Fixed incorrect settings for vld in some projects Now links well with x64 as well --- Code/DanBias.sln | 32 ++++--------------- Code/Game/DanBiasGame/DanBiasGame.vcxproj | 4 +-- .../DanBiasLauncher/DanBiasLauncher.vcxproj | 4 +-- Code/Game/GameServer/GameServer.vcxproj | 4 +-- Code/GamePhysics/GamePhysics.vcxproj | 2 +- 5 files changed, 13 insertions(+), 33 deletions(-) diff --git a/Code/DanBias.sln b/Code/DanBias.sln index 7652b6ee..7fdeb611 100644 --- a/Code/DanBias.sln +++ b/Code/DanBias.sln @@ -68,8 +68,6 @@ Global {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|Win32.ActiveCfg = Debug|Win32 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|Win32.Build.0 = Debug|Win32 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|Win32.Deploy.0 = Debug|Win32 - {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|x64.ActiveCfg = Release|x64 - {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|x64.Build.0 = Release|x64 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|x64.ActiveCfg = Debug|x64 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|x64.Build.0 = Debug|x64 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 @@ -95,8 +93,6 @@ Global {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Debug|Win32.ActiveCfg = Debug|Win32 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Debug|Win32.Build.0 = Debug|Win32 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Debug|Win32.Deploy.0 = Debug|Win32 - {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Debug|x64.ActiveCfg = Release|x64 - {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Debug|x64.Build.0 = Release|x64 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Debug|x64.ActiveCfg = Debug|x64 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Debug|x64.Build.0 = Debug|x64 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 @@ -117,13 +113,6 @@ Global {F10CBC03-9809-4CBA-95D8-327C287B18EE}.RelWithDebInfo|Win32.Build.0 = Release|Win32 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.RelWithDebInfo|x64.ActiveCfg = Release|x64 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.RelWithDebInfo|x64.Build.0 = Release|x64 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|Mixed Platforms.ActiveCfg = Release|x64 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|Mixed Platforms.Build.0 = Release|x64 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|Win32.ActiveCfg = Debug|Win32 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|Win32.Build.0 = Debug|Win32 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|Win32.Deploy.0 = Debug|Win32 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|x64.ActiveCfg = Release|x64 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|x64.Build.0 = Release|x64 {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|Mixed Platforms.Build.0 = Debug|x64 {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|Win32.ActiveCfg = Debug|Win32 @@ -153,8 +142,8 @@ Global {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|Mixed Platforms.Build.0 = Release|x64 {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|Win32.ActiveCfg = Debug|Win32 {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|Win32.Build.0 = Debug|Win32 - {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|x64.ActiveCfg = Release|x64 - {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|x64.Build.0 = Release|x64 + {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|x64.ActiveCfg = Debug|x64 + {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|x64.Build.0 = Debug|x64 {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.MinSizeRel|Win32.ActiveCfg = Release|Win32 {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.MinSizeRel|x64.ActiveCfg = Release|x64 @@ -171,8 +160,8 @@ Global {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|Mixed Platforms.Build.0 = Release|x64 {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|Win32.ActiveCfg = Debug|Win32 {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|Win32.Build.0 = Debug|Win32 - {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|x64.ActiveCfg = Release|x64 - {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|x64.Build.0 = Release|x64 + {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|x64.ActiveCfg = Debug|x64 + {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|x64.Build.0 = Debug|x64 {6A066806-F43F-4B31-A4E3-57179674F460}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 {6A066806-F43F-4B31-A4E3-57179674F460}.MinSizeRel|Win32.ActiveCfg = Release|Win32 {6A066806-F43F-4B31-A4E3-57179674F460}.MinSizeRel|x64.ActiveCfg = Release|x64 @@ -185,14 +174,12 @@ Global {6A066806-F43F-4B31-A4E3-57179674F460}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 {6A066806-F43F-4B31-A4E3-57179674F460}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 {6A066806-F43F-4B31-A4E3-57179674F460}.RelWithDebInfo|x64.ActiveCfg = Release|x64 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|Mixed Platforms.ActiveCfg = Release|x64 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|Mixed Platforms.Build.0 = Release|x64 {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|Mixed Platforms.Build.0 = Debug|x64 {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|Win32.ActiveCfg = Debug|Win32 {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|Win32.Build.0 = Debug|Win32 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|x64.ActiveCfg = Release|x64 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|x64.Build.0 = Release|x64 + {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|x64.ActiveCfg = Debug|x64 + {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|x64.Build.0 = Debug|x64 {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.MinSizeRel|Win32.ActiveCfg = Release|Win32 {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.MinSizeRel|x64.ActiveCfg = Release|x64 @@ -209,8 +196,6 @@ Global {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Debug|Mixed Platforms.Build.0 = Release|Win32 {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Debug|Win32.ActiveCfg = Debug|Win32 {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Debug|Win32.Build.0 = Debug|Win32 - {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Debug|x64.ActiveCfg = Release|x64 - {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Debug|x64.Build.0 = Release|x64 {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Debug|x64.ActiveCfg = Debug|x64 {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Debug|x64.Build.0 = Debug|x64 {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.MinSizeRel|Mixed Platforms.ActiveCfg = Debug|Win32 @@ -220,11 +205,6 @@ Global {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Release|Mixed Platforms.Build.0 = Release|Win32 {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Release|Win32.ActiveCfg = Release|Win32 {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Release|Win32.Build.0 = Release|Win32 - {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Release|x64.ActiveCfg = Release|Win32 - {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Release|x64.Build.0 = Release|Win32 - {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 - {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 - {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.RelWithDebInfo|x64.ActiveCfg = Release|Win32 {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Release|x64.ActiveCfg = Release|x64 {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Release|x64.Build.0 = Release|x64 {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 diff --git a/Code/Game/DanBiasGame/DanBiasGame.vcxproj b/Code/Game/DanBiasGame/DanBiasGame.vcxproj index fc7de363..f433e26b 100644 --- a/Code/Game/DanBiasGame/DanBiasGame.vcxproj +++ b/Code/Game/DanBiasGame/DanBiasGame.vcxproj @@ -79,7 +79,7 @@ $(SolutionDir)..\Bin\DLL\ $(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\ $(ProjectName)_$(PlatformShortName)D - $(SolutionDir)..\External\Lib\;$(SolutionDir)..\Bin\DLL;C:\Program Files %28x86%29\Visual Leak Detector\lib\Win32;$(LibraryPath) + $(SolutionDir)..\External\Lib\;$(SolutionDir)..\Bin\DLL;C:\Program Files %28x86%29\Visual Leak Detector\lib\Win64;$(LibraryPath) $(SolutionDir)..\External\Include\;$(SolutionDir)Game\GameProtocols\;$(SolutionDir)Network/NetworkAPI;$(IncludePath);C:\Program Files %28x86%29\Visual Leak Detector\include;$(SolutionDir)Game\GameServer\ @@ -95,7 +95,7 @@ $(SolutionDir)..\Bin\DLL\ $(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\ $(ProjectName)_$(PlatformShortName) - $(SolutionDir)..\External\Lib\;$(SolutionDir)..\Bin\DLL;C:\Program Files %28x86%29\Visual Leak Detector\lib\Win32;$(LibraryPath) + $(SolutionDir)..\External\Lib\;$(SolutionDir)..\Bin\DLL;C:\Program Files %28x86%29\Visual Leak Detector\lib\Win64;$(LibraryPath) $(SolutionDir)..\External\Include\;$(SolutionDir)Game\GameProtocols\;$(SolutionDir)Network/NetworkAPI;$(IncludePath);C:\Program Files %28x86%29\Visual Leak Detector\include;$(SolutionDir)Game\GameServer\ diff --git a/Code/Game/DanBiasLauncher/DanBiasLauncher.vcxproj b/Code/Game/DanBiasLauncher/DanBiasLauncher.vcxproj index fec9d7dd..f81a2159 100644 --- a/Code/Game/DanBiasLauncher/DanBiasLauncher.vcxproj +++ b/Code/Game/DanBiasLauncher/DanBiasLauncher.vcxproj @@ -80,7 +80,7 @@ $(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\ $(ProjectName)_$(PlatformShortName)D $(SolutionDir)..\External\Include\;C:\Program Files %28x86%29\Visual Leak Detector\include;$(IncludePath) - $(OutDir)..\DLL\;C:\Program Files %28x86%29\Visual Leak Detector\lib\Win32;$(LibraryPath) + $(OutDir)..\DLL\;C:\Program Files %28x86%29\Visual Leak Detector\lib\Win64;$(LibraryPath) false @@ -96,7 +96,7 @@ $(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\ $(ProjectName)_$(PlatformShortName) $(SolutionDir)..\External\Include\;C:\Program Files %28x86%29\Visual Leak Detector\include;$(IncludePath) - $(OutDir)..\DLL\;C:\Program Files %28x86%29\Visual Leak Detector\lib\Win32;$(LibraryPath) + $(OutDir)..\DLL\;C:\Program Files %28x86%29\Visual Leak Detector\lib\Win64;$(LibraryPath) diff --git a/Code/Game/GameServer/GameServer.vcxproj b/Code/Game/GameServer/GameServer.vcxproj index 387afb29..4a63c4f7 100644 --- a/Code/Game/GameServer/GameServer.vcxproj +++ b/Code/Game/GameServer/GameServer.vcxproj @@ -83,7 +83,7 @@ $(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\ $(ProjectName)_$(PlatformShortName)D $(SolutionDir)..\External\Include\;$(SolutionDir)Game\GameProtocols\;$(SolutionDir)Game\GameLogic\;$(SolutionDir)Network\NetworkAPI\;$(SolutionDir)OysterMath\;$(SolutionDir)GamePhysics\;$(SolutionDir)Misc\;$(SolutionDir)WindowManager\;$(SolutionDir)OysterPhysics3D\;$(SolutionDir)Game\ServerDependencies;C:\Program Files %28x86%29\Visual Leak Detector\include;$(IncludePath) - $(OutDir);$(SolutionDir)..\External\Lib\WindowManager\;C:\Program Files %28x86%29\Visual Leak Detector\lib\Win32;$(SolutionDir)..\External\Lib\ServerDependencies\;$(LibraryPath) + $(OutDir);$(SolutionDir)..\External\Lib\WindowManager\;C:\Program Files %28x86%29\Visual Leak Detector\lib\Win64;$(SolutionDir)..\External\Lib\ServerDependencies\;$(LibraryPath) false @@ -99,7 +99,7 @@ $(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\ $(ProjectName)_$(PlatformShortName) $(SolutionDir)..\External\Include\;$(SolutionDir)Game\GameProtocols\;$(SolutionDir)Game\GameLogic\;$(SolutionDir)Network\NetworkAPI\;$(SolutionDir)OysterMath\;$(SolutionDir)GamePhysics\;$(SolutionDir)Misc\;$(SolutionDir)WindowManager\;$(SolutionDir)OysterPhysics3D\;$(SolutionDir)Game\ServerDependencies;C:\Program Files %28x86%29\Visual Leak Detector\include;$(IncludePath) - $(OutDir);$(SolutionDir)..\External\Lib\WindowManager\;C:\Program Files %28x86%29\Visual Leak Detector\lib\Win32;$(SolutionDir)..\External\Lib\ServerDependencies\;$(LibraryPath) + $(OutDir);$(SolutionDir)..\External\Lib\WindowManager\;C:\Program Files %28x86%29\Visual Leak Detector\lib\Win64;$(SolutionDir)..\External\Lib\ServerDependencies\;$(LibraryPath) diff --git a/Code/GamePhysics/GamePhysics.vcxproj b/Code/GamePhysics/GamePhysics.vcxproj index dd2f8fd5..e99b6a0e 100644 --- a/Code/GamePhysics/GamePhysics.vcxproj +++ b/Code/GamePhysics/GamePhysics.vcxproj @@ -97,7 +97,7 @@ true - $(SolutionDir)Physics/lib/debug/BulletCollision_Debug.lib;$(SolutionDir)Physics/lib/debug/BulletDynamics_Debug.lib;$(SolutionDir)Physics/lib/debug/LinearMath_Debug.lib;%(AdditionalDependencies) + %(AdditionalDependencies) From 3e181cd34eea5b13c52f44ea2440aa27579e0826 Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Wed, 12 Feb 2014 13:27:34 +0100 Subject: [PATCH 26/50] post merge --- Code/DanBias.sln | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/Code/DanBias.sln b/Code/DanBias.sln index f2bf5f98..7fdeb611 100644 --- a/Code/DanBias.sln +++ b/Code/DanBias.sln @@ -68,8 +68,8 @@ Global {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|Win32.ActiveCfg = Debug|Win32 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|Win32.Build.0 = Debug|Win32 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|Win32.Deploy.0 = Debug|Win32 - {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|x64.ActiveCfg = Release|x64 - {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|x64.Build.0 = Release|x64 + {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|x64.ActiveCfg = Debug|x64 + {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|x64.Build.0 = Debug|x64 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.MinSizeRel|Win32.ActiveCfg = Release|Win32 @@ -93,8 +93,8 @@ Global {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Debug|Win32.ActiveCfg = Debug|Win32 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Debug|Win32.Build.0 = Debug|Win32 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Debug|Win32.Deploy.0 = Debug|Win32 - {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Debug|x64.ActiveCfg = Release|x64 - {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Debug|x64.Build.0 = Release|x64 + {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Debug|x64.ActiveCfg = Debug|x64 + {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Debug|x64.Build.0 = Debug|x64 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.MinSizeRel|Win32.ActiveCfg = Release|Win32 @@ -113,13 +113,13 @@ Global {F10CBC03-9809-4CBA-95D8-327C287B18EE}.RelWithDebInfo|Win32.Build.0 = Release|Win32 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.RelWithDebInfo|x64.ActiveCfg = Release|x64 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.RelWithDebInfo|x64.Build.0 = Release|x64 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|Mixed Platforms.ActiveCfg = Release|x64 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|Mixed Platforms.Build.0 = Release|x64 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|Mixed Platforms.Build.0 = Debug|x64 {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|Win32.ActiveCfg = Debug|Win32 {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|Win32.Build.0 = Debug|Win32 {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|Win32.Deploy.0 = Debug|Win32 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|x64.ActiveCfg = Release|x64 - {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|x64.Build.0 = Release|x64 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|x64.ActiveCfg = Debug|x64 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|x64.Build.0 = Debug|x64 {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.MinSizeRel|Win32.ActiveCfg = Release|Win32 @@ -142,8 +142,8 @@ Global {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|Mixed Platforms.Build.0 = Release|x64 {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|Win32.ActiveCfg = Debug|Win32 {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|Win32.Build.0 = Debug|Win32 - {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|x64.ActiveCfg = Release|x64 - {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|x64.Build.0 = Release|x64 + {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|x64.ActiveCfg = Debug|x64 + {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|x64.Build.0 = Debug|x64 {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.MinSizeRel|Win32.ActiveCfg = Release|Win32 {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.MinSizeRel|x64.ActiveCfg = Release|x64 @@ -160,8 +160,8 @@ Global {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|Mixed Platforms.Build.0 = Release|x64 {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|Win32.ActiveCfg = Debug|Win32 {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|Win32.Build.0 = Debug|Win32 - {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|x64.ActiveCfg = Release|x64 - {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|x64.Build.0 = Release|x64 + {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|x64.ActiveCfg = Debug|x64 + {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|x64.Build.0 = Debug|x64 {6A066806-F43F-4B31-A4E3-57179674F460}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 {6A066806-F43F-4B31-A4E3-57179674F460}.MinSizeRel|Win32.ActiveCfg = Release|Win32 {6A066806-F43F-4B31-A4E3-57179674F460}.MinSizeRel|x64.ActiveCfg = Release|x64 @@ -174,12 +174,12 @@ Global {6A066806-F43F-4B31-A4E3-57179674F460}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 {6A066806-F43F-4B31-A4E3-57179674F460}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 {6A066806-F43F-4B31-A4E3-57179674F460}.RelWithDebInfo|x64.ActiveCfg = Release|x64 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|Mixed Platforms.ActiveCfg = Release|x64 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|Mixed Platforms.Build.0 = Release|x64 + {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 + {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|Mixed Platforms.Build.0 = Debug|x64 {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|Win32.ActiveCfg = Debug|Win32 {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|Win32.Build.0 = Debug|Win32 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|x64.ActiveCfg = Release|x64 - {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|x64.Build.0 = Release|x64 + {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|x64.ActiveCfg = Debug|x64 + {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|x64.Build.0 = Debug|x64 {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.MinSizeRel|Win32.ActiveCfg = Release|Win32 {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.MinSizeRel|x64.ActiveCfg = Release|x64 @@ -196,8 +196,8 @@ Global {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Debug|Mixed Platforms.Build.0 = Release|Win32 {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Debug|Win32.ActiveCfg = Debug|Win32 {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Debug|Win32.Build.0 = Debug|Win32 - {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Debug|x64.ActiveCfg = Release|Win32 - {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Debug|x64.Build.0 = Release|Win32 + {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Debug|x64.ActiveCfg = Debug|x64 + {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Debug|x64.Build.0 = Debug|x64 {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.MinSizeRel|Mixed Platforms.ActiveCfg = Debug|Win32 {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.MinSizeRel|Win32.ActiveCfg = Debug|Win32 {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.MinSizeRel|x64.ActiveCfg = Debug|Win32 @@ -205,11 +205,11 @@ Global {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Release|Mixed Platforms.Build.0 = Release|Win32 {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Release|Win32.ActiveCfg = Release|Win32 {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Release|Win32.Build.0 = Release|Win32 - {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Release|x64.ActiveCfg = Release|Win32 - {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Release|x64.Build.0 = Release|Win32 + {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Release|x64.ActiveCfg = Release|x64 + {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.Release|x64.Build.0 = Release|x64 {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 - {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.RelWithDebInfo|x64.ActiveCfg = Release|Win32 + {1B3BEA4C-CF75-438A-9693-60FB8444BBF3}.RelWithDebInfo|x64.ActiveCfg = Release|x64 {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|Win32.ActiveCfg = Debug|Win32 From 5ff8661843a9a181bf87e4d4c8be32741be38401 Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Wed, 12 Feb 2014 14:33:56 +0100 Subject: [PATCH 27/50] Bugs and Compilation errors dealt with --- Code/Game/DanBiasGame/DanBiasGame_Impl.cpp | 6 ++- .../DanBiasGame/GameClientState/C_Object.h | 4 +- .../GameClientState/C_obj/C_Player.cpp | 13 ++---- .../GameClientState/C_obj/C_Player.h | 18 ++++---- .../GameClientState/GameClientState.cpp | 2 +- .../DanBiasGame/GameClientState/GameState.cpp | 4 -- .../GameClientState/LanMenuState.cpp | 2 +- .../GameClientState/LanMenuState.h | 2 +- .../GameClientState/LobbyState.cpp | 3 +- .../DanBiasGame/GameClientState/MainState.cpp | 42 ++++++++++++++----- .../DanBiasGame/GameClientState/MainState.h | 2 - Code/Game/DanBiasGame/Include/DanBiasGame.h | 2 +- Code/Network/NetworkAPI/NetworkClient.cpp | 11 +++-- Code/Network/NetworkAPI/NetworkClient.h | 1 + 14 files changed, 63 insertions(+), 49 deletions(-) diff --git a/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp b/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp index 502815fb..cf0f049f 100644 --- a/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp +++ b/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp @@ -87,6 +87,8 @@ namespace DanBias float dt = (float)data.timer.getElapsedSeconds(); data.timer.reset(); + ::Oyster::Graphics::API::Update( dt ); + if(data.networkClient.IsConnected()) data.networkClient.Update(); @@ -95,7 +97,7 @@ namespace DanBias { if(Update(dt) != S_OK) return DanBiasClientReturn_Error; - if(Render(dt) != S_OK) + if(Render() != S_OK) return DanBiasClientReturn_Error; data.capFrame = 0; } @@ -185,7 +187,7 @@ namespace DanBias return S_OK; } - HRESULT DanBiasGame::Render(float deltaTime) + HRESULT DanBiasGame::Render( ) { data.state->Render(); diff --git a/Code/Game/DanBiasGame/GameClientState/C_Object.h b/Code/Game/DanBiasGame/GameClientState/C_Object.h index 4dec19ec..1b50b73d 100644 --- a/Code/Game/DanBiasGame/GameClientState/C_Object.h +++ b/Code/Game/DanBiasGame/GameClientState/C_Object.h @@ -17,12 +17,14 @@ namespace DanBias class C_Object { + protected: + Oyster::Graphics::Model::Model *model; private: Oyster::Math::Float4x4 world; Oyster::Math::Float3 position; Oyster::Math::Quaternion rotation; Oyster::Math::Float3 scale; - Oyster::Graphics::Model::Model *model; + int id; void updateWorld(); public: diff --git a/Code/Game/DanBiasGame/GameClientState/C_obj/C_Player.cpp b/Code/Game/DanBiasGame/GameClientState/C_obj/C_Player.cpp index a75785a6..916a6d16 100644 --- a/Code/Game/DanBiasGame/GameClientState/C_obj/C_Player.cpp +++ b/Code/Game/DanBiasGame/GameClientState/C_obj/C_Player.cpp @@ -3,19 +3,14 @@ using namespace DanBias::Client; C_Player::C_Player(void) - :C_DynamicObj() -{ + :C_DynamicObj() {} -} - -C_Player::~C_Player(void) -{ - -} +C_Player::~C_Player(void) {} void C_Player::Init(ModelInitData modelInit) { C_Object::Init(modelInit); - Oyster::Graphics::API::PlayAnimation(model, L"movement"); + + Oyster::Graphics::API::PlayAnimation( this->model, L"movement" ); //Oyster::Graphics::API::Update(0.002f); } diff --git a/Code/Game/DanBiasGame/GameClientState/C_obj/C_Player.h b/Code/Game/DanBiasGame/GameClientState/C_obj/C_Player.h index 9d7c3de0..e08d2589 100644 --- a/Code/Game/DanBiasGame/GameClientState/C_obj/C_Player.h +++ b/Code/Game/DanBiasGame/GameClientState/C_obj/C_Player.h @@ -5,13 +5,15 @@ namespace DanBias { namespace Client { -class C_Player : public C_DynamicObj -{ -private: -public: - C_Player(void); - virtual ~C_Player(void); - void Init(ModelInitData modelInit); + class C_Player : public C_DynamicObj + { + private: + public: + C_Player(void); + virtual ~C_Player(void); + void Init(ModelInitData modelInit); -};};}; + }; + } +} #endif diff --git a/Code/Game/DanBiasGame/GameClientState/GameClientState.cpp b/Code/Game/DanBiasGame/GameClientState/GameClientState.cpp index d0d811f4..dde3e874 100644 --- a/Code/Game/DanBiasGame/GameClientState/GameClientState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/GameClientState.cpp @@ -11,5 +11,5 @@ GameClientState::~GameClientState(void) { } -void DataRecieved( NetEvent e ) +void GameClientState::DataRecieved( NetEvent e ) { /* do nothing */ } \ No newline at end of file diff --git a/Code/Game/DanBiasGame/GameClientState/GameState.cpp b/Code/Game/DanBiasGame/GameClientState/GameState.cpp index 52cb03e0..63475ab8 100644 --- a/Code/Game/DanBiasGame/GameClientState/GameState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/GameState.cpp @@ -409,10 +409,6 @@ void GameState::readKeyInput(InputClass* KeyInput) GameLogic::Protocol_PlayerLook playerLookDir; Float4 look = camera.GetLook(); - playerLookDir.lookDirX = look.x; - playerLookDir.lookDirY = look.y; - playerLookDir.lookDirZ = look.z; - playerLookDir.deltaX = -KeyInput->GetYaw(); privData->nwClient->Send( playerLookDir ); } diff --git a/Code/Game/DanBiasGame/GameClientState/LanMenuState.cpp b/Code/Game/DanBiasGame/GameClientState/LanMenuState.cpp index 34711b82..d83d566a 100644 --- a/Code/Game/DanBiasGame/GameClientState/LanMenuState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/LanMenuState.cpp @@ -164,7 +164,7 @@ GameClientState::ClientState LanMenuState::ChangeState(InputClass* KeyInput) return ClientState_Same; } -bool LanMenuState::Render(float dt) +bool LanMenuState::Render( ) { Oyster::Graphics::API::SetView(privData->view); Oyster::Graphics::API::SetProjection( privData->proj); diff --git a/Code/Game/DanBiasGame/GameClientState/LanMenuState.h b/Code/Game/DanBiasGame/GameClientState/LanMenuState.h index 03194f1d..def6074b 100644 --- a/Code/Game/DanBiasGame/GameClientState/LanMenuState.h +++ b/Code/Game/DanBiasGame/GameClientState/LanMenuState.h @@ -22,7 +22,7 @@ namespace DanBias bool LoadModels(std::wstring file); bool InitCamera(Oyster::Math::Float3 startPos); - virtual bool Render(float dt); + virtual bool Render(); virtual bool Release(); private: diff --git a/Code/Game/DanBiasGame/GameClientState/LobbyState.cpp b/Code/Game/DanBiasGame/GameClientState/LobbyState.cpp index dc2ed2be..71a21ca6 100644 --- a/Code/Game/DanBiasGame/GameClientState/LobbyState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/LobbyState.cpp @@ -98,9 +98,8 @@ GameClientState::ClientState LobbyState::Update(float deltaTime, InputClass* Key return ClientState_Same; } -bool LobbyState::Render(float dt) +bool LobbyState::Render( ) { - Oyster::Graphics::API::SetView(privData->view); Oyster::Graphics::API::SetProjection( privData->proj); diff --git a/Code/Game/DanBiasGame/GameClientState/MainState.cpp b/Code/Game/DanBiasGame/GameClientState/MainState.cpp index 710eebbe..cc5aaa29 100644 --- a/Code/Game/DanBiasGame/GameClientState/MainState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/MainState.cpp @@ -7,10 +7,15 @@ #include #include "NetworkClient.h" +#include "EventHandler\EventHandler.h" +#include "Buttons\ButtonRectangle.h" + using namespace ::DanBias::Client; using namespace ::Oyster::Math3D; using namespace ::Oyster::Network; using namespace ::Utility::DynamicMemory; +using namespace ::Utility::StaticArray; +using namespace ::Oyster::Event; struct MainState::MyData { @@ -20,10 +25,12 @@ struct MainState::MyData Float4x4 proj; UniquePointer object[2]; - int modelCount; NetworkClient *nwClient; + EventButtonCollection button; }; +void OnButtonInteract( Oyster::Event::ButtonEvent& e ); + MainState::MainState(void) {} MainState::~MainState(void) {} @@ -32,6 +39,13 @@ bool MainState::Init( NetworkClient* nwClient ) { this->privData = new MyData(); + // create buttons + ButtonRectangle *button = new ButtonRectangle( L"box_tex.png", OnButtonInteract, this, 0.5f, 0.5f, 0.1f, 0.1f, true ); + this->privData->button.AddButton( button ); + + // bind button collection to the singleton eventhandler + EventHandler::Instance().AddCollection( &this->privData->button ); + // load models LoadModels(L"UImodels.txt"); InitCamera( Float3(0.0f, 0.0f, 5.4f) ); @@ -49,7 +63,6 @@ bool MainState::LoadModels(std::wstring file) // open file // read file // init models - privData->modelCount = 2; ModelInitData modelData; @@ -126,16 +139,19 @@ GameClientState::ClientState MainState::Update(float deltaTime, InputClass* KeyI bool MainState::Render() { - Oyster::Graphics::API::SetView(privData->view); Oyster::Graphics::API::SetProjection( privData->proj); Oyster::Graphics::API::NewFrame(); // render objects - for (int i = 0; i < privData->modelCount; i++) - { - privData->object[i]->Render(); - } + //for (int i = 0; i < NumElementsOf(privData->object); i++) + //{ + // privData->object[i]->Render(); + //} + + Oyster::Graphics::API::StartGuiRender(); + this->privData->button.Render(); + // render effects @@ -147,15 +163,19 @@ bool MainState::Render() bool MainState::Release() { - for (int i = 0; i < privData->modelCount; i++) + for (int i = 0; i < NumElementsOf(privData->object); i++) { - privData->object[i]->Release(); - delete privData->object[i]; privData->object[i] = NULL; } - delete privData; privData = NULL; + // button collection will be autoreleased from EventHandler + return true; } +/// button actions +void OnButtonInteract( Oyster::Event::ButtonEvent& e ) +{ + +} diff --git a/Code/Game/DanBiasGame/GameClientState/MainState.h b/Code/Game/DanBiasGame/GameClientState/MainState.h index 0e7bf1b6..27dcd772 100644 --- a/Code/Game/DanBiasGame/GameClientState/MainState.h +++ b/Code/Game/DanBiasGame/GameClientState/MainState.h @@ -24,8 +24,6 @@ namespace DanBias bool Render(); bool Release(); - - void DataRecieved( ::Oyster::Network::NetEvent<::Oyster::Network::NetworkClient*, ::Oyster::Network::NetworkClient::ClientEventArgs> e ); }; } } diff --git a/Code/Game/DanBiasGame/Include/DanBiasGame.h b/Code/Game/DanBiasGame/Include/DanBiasGame.h index 33795482..e49da75b 100644 --- a/Code/Game/DanBiasGame/Include/DanBiasGame.h +++ b/Code/Game/DanBiasGame/Include/DanBiasGame.h @@ -52,7 +52,7 @@ namespace DanBias static HRESULT InitInput(); static HRESULT Update(float deltaTime); - static HRESULT Render(float deltaTime); + static HRESULT Render(); static HRESULT CleanUp(); }; diff --git a/Code/Network/NetworkAPI/NetworkClient.cpp b/Code/Network/NetworkAPI/NetworkClient.cpp index 1178782c..de6539df 100644 --- a/Code/Network/NetworkAPI/NetworkClient.cpp +++ b/Code/Network/NetworkAPI/NetworkClient.cpp @@ -38,7 +38,6 @@ struct NetworkClient::PrivateData : public IThreadObject { NetworkSession *owner; NetworkClient *parent; - ClientEventFunction OnRecieve; Connection connection; Translator translator; OysterThread thread; @@ -57,7 +56,6 @@ struct NetworkClient::PrivateData : public IThreadObject : ID(currID++) , parent(0) , owner(0) - , OnRecieve(OnRecieve_Default) { InitWinSock(); this->thread.Create(this, false); @@ -226,7 +224,8 @@ unsigned int NetworkClient::PrivateData::currID = 0; *************************************/ NetworkClient::NetworkClient() - : privateData(0) + : privateData(nullptr), + OnRecieve(OnRecieve_Default) { } NetworkClient::~NetworkClient() @@ -326,11 +325,11 @@ void NetworkClient::SetMessagePump( NetworkClient::ClientEventFunction func ) { if( func ) { - this->privateData->OnRecieve = func; + this->OnRecieve = func; } else { - this->privateData->OnRecieve = OnRecieve_Default; + this->OnRecieve = OnRecieve_Default; } } @@ -353,7 +352,7 @@ void NetworkClient::DataRecieved(NetEvent e) } else { - this->privateData->OnRecieve( e ); + this->OnRecieve( e ); } } diff --git a/Code/Network/NetworkAPI/NetworkClient.h b/Code/Network/NetworkAPI/NetworkClient.h index 46eedf9b..4533070c 100644 --- a/Code/Network/NetworkAPI/NetworkClient.h +++ b/Code/Network/NetworkAPI/NetworkClient.h @@ -140,6 +140,7 @@ namespace Oyster NetworkClient(const NetworkClient& obj); NetworkClient& operator =(const NetworkClient& obj); + ClientEventFunction OnRecieve; struct PrivateData; PrivateData* privateData; }; From 9d9481b87a572a15ac4255c93e6b5afa3a285b41 Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Wed, 12 Feb 2014 14:52:31 +0100 Subject: [PATCH 28/50] stuff --- Code/Game/DanBiasGame/DanBiasGame_Impl.cpp | 1 + Code/Game/DanBiasGame/GameClientState/MainState.cpp | 12 ------------ Code/Game/DanBiasGame/GameClientState/MainState.h | 1 - Code/GamePhysics/GamePhysics.vcxproj | 2 +- Code/Misc/EventHandler/EventHandler.cpp | 4 ++-- 5 files changed, 4 insertions(+), 16 deletions(-) diff --git a/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp b/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp index cf0f049f..137ae934 100644 --- a/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp +++ b/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp @@ -199,6 +199,7 @@ namespace DanBias data.networkClient.Disconnect(); delete data.inputObj; + Oyster::Event::EventHandler::Instance().Clean(); Oyster::Graphics::API::Clean(); GameServerAPI::ServerStop(); diff --git a/Code/Game/DanBiasGame/GameClientState/MainState.cpp b/Code/Game/DanBiasGame/GameClientState/MainState.cpp index cc5aaa29..6caa5d15 100644 --- a/Code/Game/DanBiasGame/GameClientState/MainState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/MainState.cpp @@ -48,7 +48,6 @@ bool MainState::Init( NetworkClient* nwClient ) // load models LoadModels(L"UImodels.txt"); - InitCamera( Float3(0.0f, 0.0f, 5.4f) ); return true; } @@ -82,17 +81,6 @@ bool MainState::LoadModels(std::wstring file) return true; } -bool MainState::InitCamera(Float3 startPos) -{ - privData->proj = ProjectionMatrix_Perspective(pi/2,1024.0f/768.0f,.1f,1000); - //privData->proj = ProjectionMatrix_Orthographic(1024, 768, 1, 1000); - Oyster::Graphics::API::SetProjection(privData->proj); - - privData->view = OrientationMatrix_LookAtDirection(Float3(0,0,-1),Float3(0,1,0),startPos); - privData->view = InverseOrientationMatrix(privData->view); - return true; -} - GameClientState::ClientState MainState::Update(float deltaTime, InputClass* KeyInput) { // picking diff --git a/Code/Game/DanBiasGame/GameClientState/MainState.h b/Code/Game/DanBiasGame/GameClientState/MainState.h index 27dcd772..187fa3f5 100644 --- a/Code/Game/DanBiasGame/GameClientState/MainState.h +++ b/Code/Game/DanBiasGame/GameClientState/MainState.h @@ -19,7 +19,6 @@ namespace DanBias ~MainState(void); bool Init( Oyster::Network::NetworkClient* nwClient ); bool LoadModels(std::wstring file); - bool InitCamera(Oyster::Math::Float3 startPos); ClientState Update(float deltaTime, InputClass* KeyInput); bool Render(); diff --git a/Code/GamePhysics/GamePhysics.vcxproj b/Code/GamePhysics/GamePhysics.vcxproj index 84b16812..9b883bb3 100644 --- a/Code/GamePhysics/GamePhysics.vcxproj +++ b/Code/GamePhysics/GamePhysics.vcxproj @@ -97,7 +97,7 @@ true - %(AdditionalDependencies) + $(SolutionDir)Physics/lib/debug/BulletCollision_Debug.lib;$(SolutionDir)Physics/lib/debug/BulletDynamics_Debug.lib;$(SolutionDir)Physics/lib/debug/LinearMath_Debug.lib;%(AdditionalDependencies) diff --git a/Code/Misc/EventHandler/EventHandler.cpp b/Code/Misc/EventHandler/EventHandler.cpp index 4b623714..8642588f 100644 --- a/Code/Misc/EventHandler/EventHandler.cpp +++ b/Code/Misc/EventHandler/EventHandler.cpp @@ -23,7 +23,7 @@ EventHandler::~EventHandler() for(int i = 0; i < size; i++) { delete collections[i]; - collections[i] = NULL; + //collections[i] = NULL; } } @@ -33,7 +33,7 @@ void EventHandler::Clean() for(int i = 0; i < size; i++) { delete collections[i]; - collections[i] = NULL; + //collections[i] = NULL; } collections.clear(); } From 20c4833126ac1f0d4ff032180ea7199f455a65d8 Mon Sep 17 00:00:00 2001 From: lanariel Date: Wed, 12 Feb 2014 15:02:29 +0100 Subject: [PATCH 29/50] Fix start render --- Code/Game/DanBiasGame/DanBiasGame.vcxproj.user | 2 +- Code/Game/DanBiasGame/DanBiasGame_Impl.cpp | 6 ++++-- Code/Game/DanBiasGame/GameClientState/MainState.cpp | 2 +- .../DanBiasServerLauncher/DanBiasServerLauncher.vcxproj | 2 +- Code/Game/aDanBiasGameLauncher/aDanBiasGameLauncher.vcxproj | 4 ++-- 5 files changed, 9 insertions(+), 7 deletions(-) diff --git a/Code/Game/DanBiasGame/DanBiasGame.vcxproj.user b/Code/Game/DanBiasGame/DanBiasGame.vcxproj.user index 4b847ee6..2e28d6f7 100644 --- a/Code/Game/DanBiasGame/DanBiasGame.vcxproj.user +++ b/Code/Game/DanBiasGame/DanBiasGame.vcxproj.user @@ -1,7 +1,7 @@  - false + true $(OutDir) diff --git a/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp b/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp index cf0f049f..9456e0e8 100644 --- a/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp +++ b/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp @@ -116,12 +116,14 @@ namespace DanBias //-------------------------------------------------------------------------------------- HRESULT DanBiasGame::InitDirect3D() { - if(Oyster::Graphics::API::Init(data.window->GetHWND(), false, false, Oyster::Math::Float2( 1024, 768)) != Oyster::Graphics::API::Sucsess) - return E_FAIL; + Oyster::Graphics::API::Option p; p.modelPath = L"..\\Content\\Models\\"; p.texturePath = L"..\\Content\\Textures\\"; Oyster::Graphics::API::SetOptions(p); + + if(Oyster::Graphics::API::Init(data.window->GetHWND(), false, false, Oyster::Math::Float2( 1024, 768)) != Oyster::Graphics::API::Sucsess) + return E_FAIL; return S_OK; } diff --git a/Code/Game/DanBiasGame/GameClientState/MainState.cpp b/Code/Game/DanBiasGame/GameClientState/MainState.cpp index cc5aaa29..71b1a362 100644 --- a/Code/Game/DanBiasGame/GameClientState/MainState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/MainState.cpp @@ -40,7 +40,7 @@ bool MainState::Init( NetworkClient* nwClient ) this->privData = new MyData(); // create buttons - ButtonRectangle *button = new ButtonRectangle( L"box_tex.png", OnButtonInteract, this, 0.5f, 0.5f, 0.1f, 0.1f, true ); + ButtonRectangle *button = new ButtonRectangle( L"earth_md.png", OnButtonInteract, this, 0.5f, 0.5f, 0.1f, 0.1f, true ); this->privData->button.AddButton( button ); // bind button collection to the singleton eventhandler diff --git a/Code/Game/DanBiasServerLauncher/DanBiasServerLauncher.vcxproj b/Code/Game/DanBiasServerLauncher/DanBiasServerLauncher.vcxproj index dde29257..caa62c92 100644 --- a/Code/Game/DanBiasServerLauncher/DanBiasServerLauncher.vcxproj +++ b/Code/Game/DanBiasServerLauncher/DanBiasServerLauncher.vcxproj @@ -80,7 +80,7 @@ $(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\ $(ProjectName)_$(PlatformShortName)D $(SolutionDir)Game\GameServer;C:\Program Files %28x86%29\Visual Leak Detector\include;$(SolutionDir)WindowManager\;$(IncludePath) - $(OutDir)..\DLL\;C:\Program Files %28x86%29\Visual Leak Detector\lib\Win32;$(LibraryPath) + $(OutDir)..\DLL\;C:\Program Files %28x86%29\Visual Leak Detector\lib\Win64;$(LibraryPath) false diff --git a/Code/Game/aDanBiasGameLauncher/aDanBiasGameLauncher.vcxproj b/Code/Game/aDanBiasGameLauncher/aDanBiasGameLauncher.vcxproj index f9b46097..e2d9f671 100644 --- a/Code/Game/aDanBiasGameLauncher/aDanBiasGameLauncher.vcxproj +++ b/Code/Game/aDanBiasGameLauncher/aDanBiasGameLauncher.vcxproj @@ -80,7 +80,7 @@ $(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\ $(ProjectName)_$(PlatformShortName)D $(SolutionDir)..\External\Include\;C:\Program Files %28x86%29\Visual Leak Detector\include;$(SolutionDir)Game\GameServer;$(IncludePath) - $(OutDir)..\DLL\;C:\Program Files %28x86%29\Visual Leak Detector\lib\Win32;$(LibraryPath) + $(OutDir)..\DLL\;C:\Program Files %28x86%29\Visual Leak Detector\lib\Win64;$(LibraryPath) false @@ -96,7 +96,7 @@ $(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\ $(ProjectName)_$(PlatformShortName) $(SolutionDir)..\External\Include\;C:\Program Files %28x86%29\Visual Leak Detector\include;$(SolutionDir)Game\GameServer;$(IncludePath) - $(OutDir)..\DLL\;C:\Program Files %28x86%29\Visual Leak Detector\lib\Win32;$(LibraryPath) + $(OutDir)..\DLL\;C:\Program Files %28x86%29\Visual Leak Detector\lib\Win64;$(LibraryPath) From 587fe62b8e04a98c106531c45374bf0b3ae931eb Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Wed, 12 Feb 2014 15:05:36 +0100 Subject: [PATCH 30/50] Removed obosolete functions --- .../DanBiasGame/GameClientState/MainState.cpp | 46 ++++--------------- .../DanBiasGame/GameClientState/MainState.h | 1 - 2 files changed, 8 insertions(+), 39 deletions(-) diff --git a/Code/Game/DanBiasGame/GameClientState/MainState.cpp b/Code/Game/DanBiasGame/GameClientState/MainState.cpp index 3dade66b..862a4c7d 100644 --- a/Code/Game/DanBiasGame/GameClientState/MainState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/MainState.cpp @@ -11,11 +11,12 @@ #include "Buttons\ButtonRectangle.h" using namespace ::DanBias::Client; +using namespace ::Oyster; using namespace ::Oyster::Math3D; using namespace ::Oyster::Network; +using namespace ::Oyster::Event; using namespace ::Utility::DynamicMemory; using namespace ::Utility::StaticArray; -using namespace ::Oyster::Event; struct MainState::MyData { @@ -26,6 +27,7 @@ struct MainState::MyData UniquePointer object[2]; NetworkClient *nwClient; + EventButtonCollection button; }; @@ -46,38 +48,6 @@ bool MainState::Init( NetworkClient* nwClient ) // bind button collection to the singleton eventhandler EventHandler::Instance().AddCollection( &this->privData->button ); - // load models - LoadModels(L"UImodels.txt"); - return true; -} - -bool MainState::LoadModels(std::wstring file) -{ - Oyster::Graphics::Definitions::Pointlight plight; - plight.Pos = Float3(0,0,5); - plight.Color = Float3(1,1,1); - plight.Radius = 100; - plight.Bright = 1; - Oyster::Graphics::API::AddLight(plight); - // open file - // read file - // init models - - ModelInitData modelData; - - modelData.rotation = Quaternion::identity; - modelData.scale = Float3(1,1,1); - modelData.visible = true; - modelData.modelPath = L"box.dan"; - - - modelData.position = Float3(2,2,2); - privData->object[0] = new C_StaticObj(); - privData->object[0]->Init(modelData); - - modelData.position = Float3(-2,0,-2); - privData->object[1] = new C_StaticObj(); - privData->object[1]->Init(modelData); return true; } @@ -127,17 +97,17 @@ GameClientState::ClientState MainState::Update(float deltaTime, InputClass* KeyI bool MainState::Render() { - Oyster::Graphics::API::SetView(privData->view); - Oyster::Graphics::API::SetProjection( privData->proj); + Graphics::API::SetView(privData->view); + Graphics::API::SetProjection( privData->proj); - Oyster::Graphics::API::NewFrame(); + Graphics::API::NewFrame(); // render objects //for (int i = 0; i < NumElementsOf(privData->object); i++) //{ // privData->object[i]->Render(); //} - Oyster::Graphics::API::StartGuiRender(); + Graphics::API::StartGuiRender(); this->privData->button.Render(); @@ -145,7 +115,7 @@ bool MainState::Render() // render lights - Oyster::Graphics::API::EndFrame(); + Graphics::API::EndFrame(); return true; } diff --git a/Code/Game/DanBiasGame/GameClientState/MainState.h b/Code/Game/DanBiasGame/GameClientState/MainState.h index 187fa3f5..9c47dcc3 100644 --- a/Code/Game/DanBiasGame/GameClientState/MainState.h +++ b/Code/Game/DanBiasGame/GameClientState/MainState.h @@ -18,7 +18,6 @@ namespace DanBias MainState(void); ~MainState(void); bool Init( Oyster::Network::NetworkClient* nwClient ); - bool LoadModels(std::wstring file); ClientState Update(float deltaTime, InputClass* KeyInput); bool Render(); From 63bc360645c23e4978f8507d4e32cc5115404f78 Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Wed, 12 Feb 2014 16:31:15 +0100 Subject: [PATCH 31/50] stuff --- Code/Game/DanBiasGame/DanBiasGame_Impl.cpp | 10 +- .../GameClientState/GameClientState.cpp | 8 +- .../GameClientState/GameClientState.h | 4 +- .../DanBiasGame/GameClientState/GameState.cpp | 277 +++++++----------- .../DanBiasGame/GameClientState/GameState.h | 7 +- .../GameClientState/LanMenuState.cpp | 167 ++++------- .../GameClientState/LanMenuState.h | 11 +- .../GameClientState/LobbyState.cpp | 148 +++------- .../DanBiasGame/GameClientState/LobbyState.h | 8 +- .../DanBiasGame/GameClientState/MainState.cpp | 164 +++++++---- .../DanBiasGame/GameClientState/MainState.h | 1 + 11 files changed, 323 insertions(+), 482 deletions(-) diff --git a/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp b/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp index 7b9f4a62..dd7e2b35 100644 --- a/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp +++ b/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp @@ -18,8 +18,9 @@ #include "../Misc/EventHandler/EventHandler.h" -using namespace ::Oyster::Event; -using namespace Oyster::Network; +using namespace ::Oyster; +using namespace Event; +using namespace Network; using namespace ::Utility::DynamicMemory; void ClientEventFunction( NetEvent e ); @@ -87,7 +88,8 @@ namespace DanBias float dt = (float)data.timer.getElapsedSeconds(); data.timer.reset(); - ::Oyster::Graphics::API::Update( dt ); + Graphics::API::Update( dt ); + EventHandler::Instance().Update( nullptr ); if(data.networkClient.IsConnected()) data.networkClient.Update(); @@ -161,7 +163,7 @@ namespace DanBias switch (state) { - case Client::GameClientState::ClientState_LobbyCreated: + case Client::GameClientState::ClientState_LobbyCreate: data.serverOwner = true; stateVal = true; case Client::GameClientState::ClientState_Lobby: diff --git a/Code/Game/DanBiasGame/GameClientState/GameClientState.cpp b/Code/Game/DanBiasGame/GameClientState/GameClientState.cpp index dde3e874..9db00f9d 100644 --- a/Code/Game/DanBiasGame/GameClientState/GameClientState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/GameClientState.cpp @@ -3,13 +3,9 @@ using namespace DanBias::Client; using namespace ::Oyster::Network; -GameClientState::GameClientState(void) -{ -} +GameClientState::GameClientState(void) {} -GameClientState::~GameClientState(void) -{ -} +GameClientState::~GameClientState(void) {} void GameClientState::DataRecieved( NetEvent e ) { /* do nothing */ } \ No newline at end of file diff --git a/Code/Game/DanBiasGame/GameClientState/GameClientState.h b/Code/Game/DanBiasGame/GameClientState/GameClientState.h index 4e34fcf2..96c4fd64 100644 --- a/Code/Game/DanBiasGame/GameClientState/GameClientState.h +++ b/Code/Game/DanBiasGame/GameClientState/GameClientState.h @@ -15,9 +15,10 @@ namespace DanBias { namespace Client ClientState_Login, ClientState_Lobby, ClientState_Lan, - ClientState_LobbyCreated, + ClientState_LobbyCreate, ClientState_Game, ClientState_Same, + ClientState_Quit }; public: @@ -27,6 +28,7 @@ namespace DanBias { namespace Client virtual ClientState Update(float deltaTime, InputClass* KeyInput) = 0; virtual bool Render() = 0; virtual bool Release() = 0; + virtual void ChangeState( ClientState next ) = 0; virtual void DataRecieved( ::Oyster::Network::NetEvent<::Oyster::Network::NetworkClient*, ::Oyster::Network::NetworkClient::ClientEventArgs> e ); }; diff --git a/Code/Game/DanBiasGame/GameClientState/GameState.cpp b/Code/Game/DanBiasGame/GameClientState/GameState.cpp index 63475ab8..088837c7 100644 --- a/Code/Game/DanBiasGame/GameClientState/GameState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/GameState.cpp @@ -5,15 +5,17 @@ #include "Camera_FPS.h" #include -using namespace DanBias::Client; -using namespace Oyster::Math3D; +using namespace ::DanBias::Client; +using namespace ::Oyster; +using namespace ::Oyster::Network; +using namespace ::Oyster::Math3D; -struct GameState::myData +struct GameState::MyData { - myData(){} - int modelCount; - Oyster::Network::NetworkClient* nwClient; - gameStateState state; + MyData(){} + GameClientState::ClientState nextState; + NetworkClient *nwClient; + } privData; GameState::GameState(void) @@ -26,151 +28,64 @@ GameState::GameState(void) GameState::~GameState(void) { - delete this->privData; + if( this->privData ) + this->Release(); } -bool GameState::Init(Oyster::Network::NetworkClient* nwClient) + +bool GameState::Init(NetworkClient* nwClient) { // load models - privData = new myData(); - privData->state = gameStateState_loading; - privData->nwClient = nwClient; - privData->state = LoadGame(); + privData = new MyData(); - //tELL SERver ready + this->privData->nextState = GameClientState::ClientState_Same; + this->privData->nwClient = nwClient; + + LoadGame(); + + //tell server ready nwClient->Send(GameLogic::Protocol_General_Status(GameLogic::Protocol_General_Status::States_ready)); return true; } + GameState::gameStateState GameState::LoadGame() { - Oyster::Graphics::Definitions::Pointlight plight; - plight.Pos = Float3(315.0f, 0.0f ,5.0f); - plight.Color = Float3(0.9f,0.7f,0.2f); - plight.Radius = 100.0f; - plight.Bright = 0.9f; - Oyster::Graphics::API::AddLight(plight); - plight.Pos = Float3(10.0f,350.0f,5.0f); - plight.Color = Float3(0.9f,0.7f,0.3f); - plight.Radius = 200.0f; - plight.Bright = 0.7f; - Oyster::Graphics::API::AddLight(plight); - plight.Pos = Float3(350.0f,350.0f,5.0f); - plight.Color = Float3(0.9f,0.7f,0.3f); - plight.Radius = 200.0f; - plight.Bright = 0.7f; - Oyster::Graphics::API::AddLight(plight); - plight.Pos = Float3(10.0f,350.0f,350.0f); - plight.Color = Float3(0.9f,0.7f,0.3f); - plight.Radius = 200.0f; - plight.Bright = 0.7f; - Oyster::Graphics::API::AddLight(plight); - plight.Pos = Float3(10.0f,-15.0f,5.0f); - plight.Color = Float3(0.0f,0.0f,1.0f); - plight.Radius = 50.0f; - plight.Bright = 2.0f; - - Oyster::Graphics::API::AddLight(plight); - LoadModels(); - InitCamera(Float3(0.0f,0.0f,20.0f)); - // hardcoded objects - LoadModels(); - Float3 startPos = Float3(0,0,20.0f); - InitCamera(startPos); +// Oyster::Graphics::Definitions::Pointlight plight; +// plight.Pos = Float3(315.0f, 0.0f ,5.0f); +// plight.Color = Float3(0.9f,0.7f,0.2f); +// plight.Radius = 100.0f; +// plight.Bright = 0.9f; +// Oyster::Graphics::API::AddLight(plight); +// plight.Pos = Float3(10.0f,350.0f,5.0f); +// plight.Color = Float3(0.9f,0.7f,0.3f); +// plight.Radius = 200.0f; +// plight.Bright = 0.7f; +// Oyster::Graphics::API::AddLight(plight); +// plight.Pos = Float3(350.0f,350.0f,5.0f); +// plight.Color = Float3(0.9f,0.7f,0.3f); +// plight.Radius = 200.0f; +// plight.Bright = 0.7f; +// Oyster::Graphics::API::AddLight(plight); +// plight.Pos = Float3(10.0f,350.0f,350.0f); +// plight.Color = Float3(0.9f,0.7f,0.3f); +// plight.Radius = 200.0f; +// plight.Bright = 0.7f; +// Oyster::Graphics::API::AddLight(plight); +// plight.Pos = Float3(10.0f,-15.0f,5.0f); +// plight.Color = Float3(0.0f,0.0f,1.0f); +// plight.Radius = 50.0f; +// plight.Bright = 2.0f; +// +// Oyster::Graphics::API::AddLight(plight); +//// LoadModels(); +// InitCamera(Float3(0.0f,0.0f,20.0f)); +// // hardcoded objects +//// LoadModels(); +// Float3 startPos = Float3(0,0,20.0f); +// InitCamera(startPos); return gameStateState_playing; } -bool GameState::LoadModels() -{ - // open file - // read file - // init models - int nrOfBoxex = 5; - int id = 100; - // add world model - ModelInitData modelData; - - modelData.position = Float3(0,0,0); - modelData.rotation = Quaternion::identity; - modelData.scale = Float3(2,2,2); - - modelData.modelPath = L"world_earth.dan"; - modelData.id = id++; - - this->staticObjects.Push(new C_StaticObj()); - this->staticObjects[this->staticObjects.Size() -1 ]->Init(modelData); - - /* - // add box model - modelData.position = Float3(0,0,0); - modelData.rotation = Quaternion::identity; - modelData.scale = Float3(1,1,1); - modelData.modelPath = L"crate_colonists.dan"; - - - for(int i =0; i< nrOfBoxex; i ++) - { - modelData.position = Float3(4,320,0); - modelData.id = id++; - - this->dynamicObjects.Push(new C_DynamicObj()); - this->dynamicObjects[this->dynamicObjects.Size() -1 ]->Init(modelData); - } - - - // add crystal model - modelData.position = Float3(10, 301, 0); - modelData.modelPath = L"crystalformation_b.dan"; - modelData.id = id++; - // load models - this->dynamicObjects.Push(new C_DynamicObj()); - this->dynamicObjects[this->dynamicObjects.Size() -1 ]->Init(modelData); - - // add house model - modelData.position = Float3(-50, 290, 0); - //Oyster::Math3D::Float4x4 rot = Oyster::Math3D::RotationMatrix(Float3(0 ,Utility::Value::Radian(90.0f), 0)); - - modelData.visible = true; - modelData.modelPath = L"building_corporation.dan"; - modelData.id = id++; - // load models - this->dynamicObjects.Push(new C_DynamicObj()); - this->dynamicObjects[this->dynamicObjects.Size() -1 ]->Init(modelData); - - - // add player model - modelData.position = Float3(0, 320, 0); - modelData.modelPath = L"char_still_sizeref.dan"; - modelData.id = id++; - // load models - this->dynamicObjects.Push(new C_DynamicObj()); - this->dynamicObjects[this->dynamicObjects.Size() -1 ]->Init(modelData); - - // add player model 2 - modelData.position = Float3(50, 320, 0); - modelData.modelPath = L"char_still_sizeref.dan"; - modelData.id = id++; - // load models - this->dynamicObjects.Push(new C_DynamicObj()); - this->dynamicObjects[this->dynamicObjects.Size() -1 ]->Init(modelData); - - // add jumppad - modelData.position = Float3(4, 300.3, 0); - modelData.modelPath = L"jumppad_round.dan"; - modelData.id = id++; - // load models - this->dynamicObjects.Push(new C_DynamicObj()); - this->dynamicObjects[this->dynamicObjects.Size() -1 ]->Init(modelData); - - // add sky sphere - modelData.position = Float3(0,0,0); - modelData.scale = Float3(800,800,800); - modelData.modelPath = L"skysphere.dan"; - modelData.id = id++; - // load models - this->dynamicObjects.Push(new C_DynamicObj()); - this->dynamicObjects[this->dynamicObjects.Size() -1 ]->Init(modelData);*/ - return true; -} bool GameState::LoadModels(std::string mapFile) { GameLogic::LevelLoader levelLoader; @@ -258,6 +173,7 @@ bool GameState::LoadModels(std::string mapFile) return true; } + bool GameState::InitCamera(Float3 startPos) { camera.SetHeadOffset( Float3(0.0f, 1.0f, 1.0f) ); @@ -267,6 +183,7 @@ bool GameState::InitCamera(Float3 startPos) return true; } + void GameState::InitiatePlayer(int id, std::wstring modelName, Float4x4 world) { myId = id; @@ -290,39 +207,43 @@ void GameState::InitiatePlayer(int id, std::wstring modelName, Float4x4 world) camera.SetPosition( pos ); camera.UpdateOrientation(); } + GameClientState::ClientState GameState::Update(float deltaTime, InputClass* KeyInput) { - switch (privData->state) - { - case gameStateState_loading: //Will this ever happen in this scope?? - { - // load map - // wait for all players - LoadGame(); - GameLogic::Protocol_General_Status gameStatus; - gameStatus.status = GameLogic::Protocol_General_Status::States_ready; - privData->nwClient->Send(gameStatus); - privData->state = gameStateState_playing; - } - break; - case gameStateState_playing: - // read server data - // update objects - { - readKeyInput(KeyInput); - camera.UpdateOrientation(); - } - break; - case gameStateState_end: - return ClientState_Lobby; - break; - default: - break; - } - - // send key input to server. - return ClientState_Same; + //switch (privData->state) + //{ + //case gameStateState_loading: //Will this ever happen in this scope?? + // { + // // load map + // // wait for all players + // LoadGame(); + // GameLogic::Protocol_General_Status gameStatus; + // gameStatus.status = GameLogic::Protocol_General_Status::States_ready; + // privData->nwClient->Send(gameStatus); + // privData->state = gameStateState_playing; + // } + // break; + //case gameStateState_playing: + // // read server data + // // update objects + // { + // readKeyInput(KeyInput); + // camera.UpdateOrientation(); + // } + // break; + //case gameStateState_end: + // return ClientState_Lobby; + // break; + //default: + // break; + //} + // + //// send key input to server. + //return ClientState_Same; + + return this->privData->nextState; } + bool GameState::Render() { Oyster::Graphics::API::SetView( camera.GetViewMatrix() ); @@ -340,19 +261,19 @@ bool GameState::Render() Oyster::Graphics::API::EndFrame(); return true; } + bool GameState::Release() { - /*for (unsigned int i = 0; i < privData->object.size(); i++) - { - privData->object[i]->Release(); - delete privData->object[i]; - privData->object[i] = NULL; - }*/ - delete privData; privData = NULL; return true; } + +void GameState::ChangeState( ClientState next ) +{ + this->privData->nextState = next; +} + void GameState::readKeyInput(InputClass* KeyInput) { if(KeyInput->IsKeyPressed(DIK_W)) @@ -471,8 +392,8 @@ void GameState::readKeyInput(InputClass* KeyInput) // send event data // - if(KeyInput->IsKeyPressed(DIK_L)) - privData->state = GameState::gameStateState_end; + //if(KeyInput->IsKeyPressed(DIK_L)) + // privData->state = GameState::gameStateState_end; } using namespace ::Oyster::Network; diff --git a/Code/Game/DanBiasGame/GameClientState/GameState.h b/Code/Game/DanBiasGame/GameClientState/GameState.h index f932bbc2..c1ba7f8f 100644 --- a/Code/Game/DanBiasGame/GameClientState/GameState.h +++ b/Code/Game/DanBiasGame/GameClientState/GameState.h @@ -23,6 +23,8 @@ namespace Client gameStateState_end, }; private: + struct MyData; + ::Utility::DynamicMemory::UniquePointer privData; bool key_forward; bool key_backward; @@ -33,8 +35,7 @@ namespace Client Camera_FPS camera; int myId; - struct myData; - myData* privData; + Utility::DynamicMemory::DynamicArray> staticObjects; Utility::DynamicMemory::DynamicArray> dynamicObjects; //Utility::DynamicMemory::DynamicArray> playObjects; @@ -44,13 +45,13 @@ namespace Client bool Init(Oyster::Network::NetworkClient* nwClient); GameClientState::ClientState Update(float deltaTime, InputClass* KeyInput) override; bool LoadModels(std::string mapFile); - bool LoadModels(); bool InitCamera(Oyster::Math::Float3 startPos) ; void InitiatePlayer(int id, std::wstring modelName, Oyster::Math::Float4x4 world); gameStateState LoadGame(); void readKeyInput(InputClass* KeyInput); bool Render()override; bool Release()override; + void ChangeState( ClientState next ); void DataRecieved( ::Oyster::Network::NetEvent<::Oyster::Network::NetworkClient*, ::Oyster::Network::NetworkClient::ClientEventArgs> e ); }; diff --git a/Code/Game/DanBiasGame/GameClientState/LanMenuState.cpp b/Code/Game/DanBiasGame/GameClientState/LanMenuState.cpp index d83d566a..ecde4eeb 100644 --- a/Code/Game/DanBiasGame/GameClientState/LanMenuState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/LanMenuState.cpp @@ -12,77 +12,29 @@ #include using namespace ::DanBias::Client; +using namespace ::Oyster; using namespace ::Oyster::Network; -struct LanMenuState::myData +struct LanMenuState::MyData { - myData(){} - Oyster::Math3D::Float4x4 view; - Oyster::Math3D::Float4x4 proj; - C_Object* object[2]; - int modelCount; + MyData(){} - NetworkClient* recieverObj; - bool serverOwner; + GameClientState::ClientState nextState; + NetworkClient *nwClient; - // UI object - // game client* } privData; LanMenuState::LanMenuState() {} LanMenuState::~LanMenuState() {} -bool LanMenuState::Init(Oyster::Network::NetworkClient* nwClient) +bool LanMenuState::Init(Network::NetworkClient* nwClient) { - privData = new myData(); - this->nwClient = nwClient; - // load models - LoadModels(L"UImodels.txt"); - InitCamera(Oyster::Math::Float3(0,0,5.4f)); + privData = new MyData(); - return true; -} + this->privData->nextState = GameClientState::ClientState_Same; + this->privData->nwClient = nwClient; -bool LanMenuState::LoadModels(std::wstring file) -{ - Oyster::Graphics::Definitions::Pointlight plight; - plight.Pos = Oyster::Math::Float3(-2,3,0); - plight.Color = Oyster::Math::Float3(0,1,0); - plight.Radius = 10; - plight.Bright = 1; - Oyster::Graphics::API::AddLight(plight); - // open file - // read file - // init models - privData->modelCount = 2; - - ModelInitData modelData; - - modelData.position = Oyster::Math::Float3(0,0,0); - modelData.rotation = Oyster::Math::Quaternion::identity; - modelData.scale = Oyster::Math::Float3(1,1,1); - modelData.visible = true; - modelData.modelPath = L"..\\Content\\Models\\box_2.dan"; - // load models - privData->object[0] = new C_StaticObj(); - privData->object[0]->Init(modelData); - - modelData.position = Oyster::Math::Float3(-2, -2, -2); - - privData->object[1] = new C_DynamicObj(); - privData->object[1]->Init(modelData); - return true; -} - -bool LanMenuState::InitCamera(Oyster::Math::Float3 startPos) -{ - privData->proj = Oyster::Math3D::ProjectionMatrix_Perspective(Oyster::Math::pi/2,1024.0f/768.0f,.1f,1000); - //privData->proj = Oyster::Math3D::ProjectionMatrix_Orthographic(1024, 768, 1, 1000); - Oyster::Graphics::API::SetProjection(privData->proj); - - privData->view = Oyster::Math3D::OrientationMatrix_LookAtDirection(Oyster::Math::Float3(0,0,-1),Oyster::Math::Float3(0,1,0),startPos); - privData->view = Oyster::Math3D::InverseOrientationMatrix(privData->view); return true; } @@ -126,76 +78,65 @@ GameClientState::ClientState LanMenuState::Update(float deltaTime, InputClass* K }*/ - return ChangeState(KeyInput); + //return ChangeState(KeyInput); + return this->privData->nextState; } -GameClientState::ClientState LanMenuState::ChangeState(InputClass* KeyInput) -{ - // create game - if( KeyInput->IsKeyPressed(DIK_C)) - { - DanBias::GameServerAPI::ServerInitDesc desc; - - DanBias::GameServerAPI::ServerInitiate(desc); - DanBias::GameServerAPI::ServerStart(); - // my ip - nwClient->Connect(15151, "127.0.0.1"); - - if (!nwClient->IsConnected()) - { - // failed to connect - return ClientState_Same; - } - return ClientState_Lobby; - } - // join game - if( KeyInput->IsKeyPressed(DIK_J)) - { - // game ip - nwClient->Connect(15151, "194.47.150.56"); - - if (!nwClient->IsConnected()) - { - // failed to connect - return ClientState_Same; - } - return ClientState_Lobby; - } - return ClientState_Same; -} +//GameClientState::ClientState LanMenuState::ChangeState(InputClass* KeyInput) +//{ +// // create game +// if( KeyInput->IsKeyPressed(DIK_C)) +// { +// DanBias::GameServerAPI::ServerInitDesc desc; +// +// DanBias::GameServerAPI::ServerInitiate(desc); +// DanBias::GameServerAPI::ServerStart(); +// // my ip +// nwClient->Connect(15151, "127.0.0.1"); +// +// if (!nwClient->IsConnected()) +// { +// // failed to connect +// return ClientState_Same; +// } +// return ClientState_Lobby; +// } +// // join game +// if( KeyInput->IsKeyPressed(DIK_J)) +// { +// // game ip +// nwClient->Connect(15151, "194.47.150.56"); +// +// if (!nwClient->IsConnected()) +// { +// // failed to connect +// return ClientState_Same; +// } +// return ClientState_Lobby; +// } +// return ClientState_Same; +//} bool LanMenuState::Render( ) { - Oyster::Graphics::API::SetView(privData->view); - Oyster::Graphics::API::SetProjection( privData->proj); + Graphics::API::NewFrame(); + + Graphics::API::StartGuiRender(); - Oyster::Graphics::API::NewFrame(); - // render objects - for (int i = 0; i < privData->modelCount; i++) - { - privData->object[i]->Render(); - } - // render effects - - // render lights - - Oyster::Graphics::API::EndFrame(); + Graphics::API::EndFrame(); return true; } bool LanMenuState::Release() { - for (int i = 0; i < privData->modelCount; i++) - { - privData->object[i]->Release(); - delete privData->object[i]; - privData->object[i] = NULL; - } - delete privData; privData = NULL; - return true; +} + +void LanMenuState::ChangeState( ClientState next ) +{ + this->privData->nextState = next; } \ No newline at end of file diff --git a/Code/Game/DanBiasGame/GameClientState/LanMenuState.h b/Code/Game/DanBiasGame/GameClientState/LanMenuState.h index def6074b..a58585d2 100644 --- a/Code/Game/DanBiasGame/GameClientState/LanMenuState.h +++ b/Code/Game/DanBiasGame/GameClientState/LanMenuState.h @@ -17,18 +17,15 @@ namespace DanBias virtual bool Init(Oyster::Network::NetworkClient* nwClient); virtual ClientState Update(float deltaTime, InputClass* KeyInput); - ClientState ChangeState(InputClass* KeyInput); - - bool LoadModels(std::wstring file); - bool InitCamera(Oyster::Math::Float3 startPos); + //ClientState ChangeState(InputClass* KeyInput); virtual bool Render(); virtual bool Release(); + void ChangeState( ClientState next ); private: - Oyster::Network::NetworkClient* nwClient; - struct myData; - myData* privData; + struct MyData; + ::Utility::DynamicMemory::UniquePointer privData; }; } } diff --git a/Code/Game/DanBiasGame/GameClientState/LobbyState.cpp b/Code/Game/DanBiasGame/GameClientState/LobbyState.cpp index 71a21ca6..7b3f88ea 100644 --- a/Code/Game/DanBiasGame/GameClientState/LobbyState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/LobbyState.cpp @@ -7,132 +7,80 @@ #include #include -using namespace DanBias::Client; +using namespace ::Oyster; +using namespace ::Oyster::Network; +using namespace ::DanBias::Client; -struct LobbyState::myData +struct LobbyState::MyData { - myData(){} - Oyster::Math3D::Float4x4 view; - Oyster::Math3D::Float4x4 proj; - C_Object* object[2]; - int modelCount; - // UI object - // game client* + MyData(){} + + GameClientState::ClientState nextState; + NetworkClient *nwClient; } privData; LobbyState::LobbyState(void) {} -LobbyState::~LobbyState(void) {} - -bool LobbyState::Init(Oyster::Network::NetworkClient* nwClient) +LobbyState::~LobbyState(void) { - privData = new myData(); - this->nwClient = nwClient; - // load models - LoadModels(L"UImodels.txt"); - InitCamera(Oyster::Math::Float3(0,0,5.4f)); + if( this->privData ) + this->Release(); +} + +bool LobbyState::Init(NetworkClient* nwClient) +{ + privData = new MyData(); + + this->privData->nextState = GameClientState::ClientState_Same; + this->privData->nwClient = nwClient; + return true; } -bool LobbyState::LoadModels(std::wstring file) -{ - Oyster::Graphics::Definitions::Pointlight plight; - plight.Pos = Oyster::Math::Float3(-2,3,0); - plight.Color = Oyster::Math::Float3(0,1,0); - plight.Radius = 10; - plight.Bright = 1; - Oyster::Graphics::API::AddLight(plight); - // open file - // read file - // init models - privData->modelCount = 2; - - ModelInitData modelData; - - modelData.position = Oyster::Math::Float3(0,0,0); - modelData.rotation = Oyster::Math::Quaternion::identity; - modelData.scale = Oyster::Math::Float3(1,1,1); - modelData.visible = true; - modelData.modelPath = L"crate_colonists.dan"; - // load models - privData->object[0] = new C_StaticObj(); - privData->object[0]->Init(modelData); - - modelData.position = Oyster::Math::Float3(2,2,2); - - privData->object[1] = new C_StaticObj(); - privData->object[1]->Init(modelData); - return true; -} - -bool LobbyState::InitCamera(Oyster::Math::Float3 startPos) -{ - privData->proj = Oyster::Math3D::ProjectionMatrix_Perspective(Oyster::Math::pi/2,1024.0f/768.0f,.1f,1000); - //privData->proj = Oyster::Math3D::ProjectionMatrix_Orthographic(1024, 768, 1, 1000); - Oyster::Graphics::API::SetProjection(privData->proj); - - privData->view = Oyster::Math3D::OrientationMatrix_LookAtDirection(Oyster::Math::Float3(0,0,-1),Oyster::Math::Float3(0,1,0),startPos); - privData->view = Oyster::Math3D::InverseOrientationMatrix(privData->view); - return true; -} GameClientState::ClientState LobbyState::Update(float deltaTime, InputClass* KeyInput) { - // picking - // mouse events - // different menus - // play sounds - // update animation - // send data to server - // check data from server + //// picking + //// mouse events + //// different menus + //// play sounds + //// update animation + //// send data to server + //// check data from server - if(GameServerAPI::ServerIsRunning() && GameServerAPI::ServerIsRunning()) //May be a problem if server is not shut down properly after lan session. - { - if( KeyInput->IsKeyPressed(DIK_G)) - { - if(!DanBias::GameServerAPI::GameStart()) - { - - } - } - } + //if(GameServerAPI::ServerIsRunning() && GameServerAPI::ServerIsRunning()) //May be a problem if server is not shut down properly after lan session. + //{ + // if( KeyInput->IsKeyPressed(DIK_G)) + // { + // if(!DanBias::GameServerAPI::GameStart()) + // { + // + // } + // } + //} - return ClientState_Same; + //return ClientState_Same; + + return this->privData->nextState; } bool LobbyState::Render( ) { - Oyster::Graphics::API::SetView(privData->view); - Oyster::Graphics::API::SetProjection( privData->proj); + Graphics::API::NewFrame(); + Graphics::API::StartGuiRender(); - - Oyster::Graphics::API::NewFrame(); - // render objects - for (int i = 0; i < privData->modelCount; i++) - { - privData->object[i]->Render(); - } - - // render effects - - // render lights - - Oyster::Graphics::API::EndFrame(); + Graphics::API::EndFrame(); return true; } bool LobbyState::Release() { - Oyster::Graphics::API::ClearLights(); - for (int i = 0; i < privData->modelCount; i++) - { - privData->object[i]->Release(); - delete privData->object[i]; - privData->object[i] = NULL; - } - - delete privData; privData = NULL; return true; } +void LobbyState::ChangeState( ClientState next ) +{ + this->privData->nextState = next; +} + using namespace ::Oyster::Network; void LobbyState::DataRecieved( NetEvent e ) diff --git a/Code/Game/DanBiasGame/GameClientState/LobbyState.h b/Code/Game/DanBiasGame/GameClientState/LobbyState.h index 56a3ab3b..8491827f 100644 --- a/Code/Game/DanBiasGame/GameClientState/LobbyState.h +++ b/Code/Game/DanBiasGame/GameClientState/LobbyState.h @@ -12,15 +12,12 @@ namespace DanBias class LobbyState : public GameClientState { private: - Oyster::Network::NetworkClient* nwClient; - struct myData; - myData* privData; + struct MyData; + ::Utility::DynamicMemory::UniquePointer privData; public: LobbyState(void); ~LobbyState(void); bool Init(Oyster::Network::NetworkClient* nwClient); - bool LoadModels(std::wstring file); - bool InitCamera(Oyster::Math::Float3 startPos); ClientState Update(float deltaTime, InputClass* KeyInput); // create session lobby // join session lobby @@ -33,6 +30,7 @@ namespace DanBias bool Render(); bool Release(); + void ChangeState( ClientState next ); void DataRecieved( ::Oyster::Network::NetEvent<::Oyster::Network::NetworkClient*, ::Oyster::Network::NetworkClient::ClientEventArgs> e ); }; diff --git a/Code/Game/DanBiasGame/GameClientState/MainState.cpp b/Code/Game/DanBiasGame/GameClientState/MainState.cpp index 862a4c7d..e477721c 100644 --- a/Code/Game/DanBiasGame/GameClientState/MainState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/MainState.cpp @@ -22,27 +22,35 @@ struct MainState::MyData { MyData() {} - Float4x4 view; - Float4x4 proj; - - UniquePointer object[2]; + GameClientState::ClientState nextState; NetworkClient *nwClient; - + Graphics::API::Texture background; EventButtonCollection button; }; -void OnButtonInteract( Oyster::Event::ButtonEvent& e ); +void OnButtonInteract_Create( Oyster::Event::ButtonEvent& e ); +void OnButtonInteract_Join( Oyster::Event::ButtonEvent& e ); +void OnButtonInteract_Quit( Oyster::Event::ButtonEvent& e ); MainState::MainState(void) {} -MainState::~MainState(void) {} +MainState::~MainState(void) +{ + if( this->privData ) + this->Release(); +} bool MainState::Init( NetworkClient* nwClient ) { this->privData = new MyData(); + this->privData->nextState = GameClientState::ClientState_Same; + this->privData->nwClient = nwClient; + + this->privData->background = Graphics::API::CreateTexture( L"grass_md.png" ); + // create buttons - ButtonRectangle *button = new ButtonRectangle( L"earth_md.png", OnButtonInteract, this, 0.5f, 0.5f, 0.1f, 0.1f, true ); + ButtonRectangle *button = new ButtonRectangle( L"earth_md.png", OnButtonInteract_Quit, this, 0.5f, 0.5f, 0.1f, 0.1f, true ); this->privData->button.AddButton( button ); // bind button collection to the singleton eventhandler @@ -53,78 +61,64 @@ bool MainState::Init( NetworkClient* nwClient ) GameClientState::ClientState MainState::Update(float deltaTime, InputClass* KeyInput) { - // picking - // mouse events - // different menus - // play sounds - // update animation - // send data to server - // check data from server + //// picking + //// mouse events + //// different menus + //// play sounds + //// update animation + //// send data to server + //// check data from server - // create game - if( KeyInput->IsKeyPressed(DIK_C)) - { - DanBias::GameServerAPI::ServerInitDesc desc; + //// create game + //if( KeyInput->IsKeyPressed(DIK_C)) + //{ + // DanBias::GameServerAPI::ServerInitDesc desc; - DanBias::GameServerAPI::ServerInitiate(desc); - DanBias::GameServerAPI::ServerStart(); - // my ip - this->privData->nwClient->Connect(15152, "127.0.0.1"); + // DanBias::GameServerAPI::ServerInitiate(desc); + // DanBias::GameServerAPI::ServerStart(); + // // my ip + // this->privData->nwClient->Connect(15152, "127.0.0.1"); - if (!this->privData->nwClient->IsConnected()) - { - // failed to connect - return ClientState_Same; - } - return ClientState_LobbyCreated; - } - // join game - if( KeyInput->IsKeyPressed(DIK_J)) - { - // game ip - this->privData->nwClient->Connect(15152, "127.0.0.1"); - //nwClient->Connect(15152, "83.254.217.248"); + // if (!this->privData->nwClient->IsConnected()) + // { + // // failed to connect + // return ClientState_Same; + // } + // return ClientState_LobbyCreated; + //} + //// join game + //if( KeyInput->IsKeyPressed(DIK_J)) + //{ + // // game ip + // this->privData->nwClient->Connect(15152, "127.0.0.1"); + // //nwClient->Connect(15152, "83.254.217.248"); - if (!this->privData->nwClient->IsConnected()) - { - // failed to connect - return ClientState_Same; - } - return ClientState_Lobby; - } - return ClientState_Same; + // if (!this->privData->nwClient->IsConnected()) + // { + // // failed to connect + // return ClientState_Same; + // } + // return ClientState_Lobby; + //} + + return this->privData->nextState; } bool MainState::Render() { - Graphics::API::SetView(privData->view); - Graphics::API::SetProjection( privData->proj); - Graphics::API::NewFrame(); - // render objects - //for (int i = 0; i < NumElementsOf(privData->object); i++) - //{ - // privData->object[i]->Render(); - //} - Graphics::API::StartGuiRender(); + + Graphics::API::RenderGuiElement( this->privData->background, Float2(0.5f), Float2(1.0f) ); this->privData->button.Render(); - - // render effects - - // render lights - Graphics::API::EndFrame(); return true; } bool MainState::Release() { - for (int i = 0; i < NumElementsOf(privData->object); i++) - { - privData->object[i] = NULL; - } + Graphics::API::DeleteTexture( this->privData->background ); privData = NULL; // button collection will be autoreleased from EventHandler @@ -132,8 +126,48 @@ bool MainState::Release() return true; } -/// button actions -void OnButtonInteract( Oyster::Event::ButtonEvent& e ) +void MainState::ChangeState( ClientState next ) { - + this->privData->nextState = next; } + +/// button actions + +//ButtonState_None, // onExit +//ButtonState_Hover, +//ButtonState_Pressed, +//ButtonState_Down, +//ButtonState_Released, + +void OnButtonInteract_Create( Oyster::Event::ButtonEvent& e ) +{ + switch( e.state ) + { + case ButtonState_Released: + e.owner->ChangeState( GameClientState::ClientState_LobbyCreate ); + break; + default: break; + } +} + +void OnButtonInteract_Join( Oyster::Event::ButtonEvent& e ) +{ + switch( e.state ) + { + case ButtonState_Released: + e.owner->ChangeState( GameClientState::ClientState_Lan ); + break; + default: break; + } +} + +void OnButtonInteract_Quit( Oyster::Event::ButtonEvent& e ) +{ + switch( e.state ) + { + case ButtonState_Released: + e.owner->ChangeState( GameClientState::ClientState_Quit ); + break; + default: break; + } +} \ No newline at end of file diff --git a/Code/Game/DanBiasGame/GameClientState/MainState.h b/Code/Game/DanBiasGame/GameClientState/MainState.h index 9c47dcc3..7255e917 100644 --- a/Code/Game/DanBiasGame/GameClientState/MainState.h +++ b/Code/Game/DanBiasGame/GameClientState/MainState.h @@ -22,6 +22,7 @@ namespace DanBias bool Render(); bool Release(); + void ChangeState( ClientState next ); }; } } From 5d4d66cf06a7c28bfb4daca986c58c1b380b1b4e Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Wed, 12 Feb 2014 17:20:42 +0100 Subject: [PATCH 32/50] stuff --- Code/Game/DanBiasGame/DanBiasGame_Impl.cpp | 70 ++++++++++++------- .../DanBiasGame/GameClientState/MainState.cpp | 60 +++++----------- Code/Game/DanBiasGame/Include/DanBiasGame.h | 16 +++-- Code/Game/DanBiasLauncher/Launcher.cpp | 2 +- Code/Network/NetworkAPI/CustomNetProtocol.h | 4 +- Code/Network/NetworkAPI/Translator.cpp | 2 +- 6 files changed, 75 insertions(+), 79 deletions(-) diff --git a/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp b/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp index dd7e2b35..ec9fc98c 100644 --- a/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp +++ b/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp @@ -19,8 +19,8 @@ #include "../Misc/EventHandler/EventHandler.h" using namespace ::Oyster; -using namespace Event; -using namespace Network; +using namespace ::Oyster::Event; +using namespace ::Oyster::Network; using namespace ::Utility::DynamicMemory; void ClientEventFunction( NetEvent e ); @@ -46,6 +46,7 @@ namespace DanBias this->capFrame = 0; } } data; + #pragma endregion @@ -77,7 +78,7 @@ namespace DanBias return DanBiasClientReturn_Error; data.timer.reset(); - return DanBiasClientReturn_Sucess; + return DanBiasClientReturn_Success; } DanBiasClientReturn DanBiasGame::Run() @@ -89,7 +90,6 @@ namespace DanBias data.timer.reset(); Graphics::API::Update( dt ); - EventHandler::Instance().Update( nullptr ); if(data.networkClient.IsConnected()) data.networkClient.Update(); @@ -97,15 +97,20 @@ namespace DanBias data.capFrame += dt; if(data.capFrame > 0.03) { - if(Update(dt) != S_OK) - return DanBiasClientReturn_Error; + switch( Update(dt) ) + { + case Result_continue: break; + case Result_quit: return DanBiasClientReturn_Success; + case Result_error: return DanBiasClientReturn_Error; + default: break; + } if(Render() != S_OK) return DanBiasClientReturn_Error; data.capFrame = 0; } } - return DanBiasClientReturn_Sucess; + return DanBiasClientReturn_Success; } void DanBiasGame::Release() @@ -143,11 +148,11 @@ namespace DanBias return S_OK; } - HRESULT DanBiasGame::Update(float deltaTime) + DanBiasGame::Result DanBiasGame::Update(float deltaTime) { data.inputObj->Update(); - if(data.serverOwner) + if( data.serverOwner ) { DanBias::GameServerAPI::ServerUpdate(); } @@ -156,39 +161,50 @@ namespace DanBias state = data.state->Update( deltaTime, data.inputObj ); - if(state != Client::GameClientState::ClientState_Same) + if( state != Client::GameClientState::ClientState_Same ) { - bool stateVal = false; + bool stateChanged = false; data.state->Release(); switch (state) { case Client::GameClientState::ClientState_LobbyCreate: - data.serverOwner = true; - stateVal = true; + { + //DanBias::GameServerAPI::ServerInitiate( .. ); + //DanBias::GameServerAPI::ServerStart(); + //data.serverOwner = true; + //if( data.networkClient.Connect(15151, "127.0.0.1") ) + //{ + // data.state = new Client::LobbyState(); + // stateChanged = true; + //} + } + case Client::GameClientState::ClientState_Lan: + data.state = new Client::LanMenuState(); + stateChanged = true; + break; case Client::GameClientState::ClientState_Lobby: data.state = new Client::LobbyState(); - stateVal = true; + stateChanged = true; break; case Client::GameClientState::ClientState_Game: - + data.state = new Client::GameState(); + stateChanged = true; break; + case Client::GameClientState::ClientState_Quit: + data.state->Release(); + return Result_quit; default: - return E_FAIL; - break; + data.state->Release(); + return Result_error; } - if(stateVal) + if( stateChanged ) { data.state->Init( &data.networkClient ); // send game client - } - else - { - - } - + } } - return S_OK; + return Result_continue; } HRESULT DanBiasGame::Render( ) @@ -200,7 +216,9 @@ namespace DanBias HRESULT DanBiasGame::CleanUp() { - data.networkClient.Disconnect(); + if( data.networkClient.IsConnected() ) + data.networkClient.Disconnect(); + delete data.inputObj; Oyster::Event::EventHandler::Instance().Clean(); diff --git a/Code/Game/DanBiasGame/GameClientState/MainState.cpp b/Code/Game/DanBiasGame/GameClientState/MainState.cpp index e477721c..bb0ea808 100644 --- a/Code/Game/DanBiasGame/GameClientState/MainState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/MainState.cpp @@ -50,7 +50,15 @@ bool MainState::Init( NetworkClient* nwClient ) this->privData->background = Graphics::API::CreateTexture( L"grass_md.png" ); // create buttons - ButtonRectangle *button = new ButtonRectangle( L"earth_md.png", OnButtonInteract_Quit, this, 0.5f, 0.5f, 0.1f, 0.1f, true ); + ButtonRectangle *button; + + button = new ButtonRectangle( L"earth_md.png", OnButtonInteract_Create, this, 0.5f, 0.2f, 0.1f, 0.3f, true ); + this->privData->button.AddButton( button ); + + button = new ButtonRectangle( L"skysphere_md.png", OnButtonInteract_Join, this, 0.5f, 0.4f, 0.1f, 0.3f, true ); + this->privData->button.AddButton( button ); + + button = new ButtonRectangle( L"plane_texture_md.png", OnButtonInteract_Quit, this, 0.5f, 0.8f, 0.1f, 0.3f, true ); this->privData->button.AddButton( button ); // bind button collection to the singleton eventhandler @@ -61,45 +69,7 @@ bool MainState::Init( NetworkClient* nwClient ) GameClientState::ClientState MainState::Update(float deltaTime, InputClass* KeyInput) { - //// picking - //// mouse events - //// different menus - //// play sounds - //// update animation - //// send data to server - //// check data from server - - //// create game - //if( KeyInput->IsKeyPressed(DIK_C)) - //{ - // DanBias::GameServerAPI::ServerInitDesc desc; - - // DanBias::GameServerAPI::ServerInitiate(desc); - // DanBias::GameServerAPI::ServerStart(); - // // my ip - // this->privData->nwClient->Connect(15152, "127.0.0.1"); - - // if (!this->privData->nwClient->IsConnected()) - // { - // // failed to connect - // return ClientState_Same; - // } - // return ClientState_LobbyCreated; - //} - //// join game - //if( KeyInput->IsKeyPressed(DIK_J)) - //{ - // // game ip - // this->privData->nwClient->Connect(15152, "127.0.0.1"); - // //nwClient->Connect(15152, "83.254.217.248"); - - // if (!this->privData->nwClient->IsConnected()) - // { - // // failed to connect - // return ClientState_Same; - // } - // return ClientState_Lobby; - //} + EventHandler::Instance().Update( KeyInput ); return this->privData->nextState; } @@ -118,11 +88,13 @@ bool MainState::Render() bool MainState::Release() { - Graphics::API::DeleteTexture( this->privData->background ); - - privData = NULL; - // button collection will be autoreleased from EventHandler + if( privData ) + { + Graphics::API::DeleteTexture( this->privData->background ); + privData = NULL; + // button collection will be autoreleased from EventHandler + } return true; } diff --git a/Code/Game/DanBiasGame/Include/DanBiasGame.h b/Code/Game/DanBiasGame/Include/DanBiasGame.h index e49da75b..74248d47 100644 --- a/Code/Game/DanBiasGame/Include/DanBiasGame.h +++ b/Code/Game/DanBiasGame/Include/DanBiasGame.h @@ -22,7 +22,7 @@ namespace DanBias enum DanBiasClientReturn { DanBiasClientReturn_Error, - DanBiasClientReturn_Sucess, + DanBiasClientReturn_Success }; struct DanBiasGameDesc @@ -47,11 +47,17 @@ namespace DanBias static void Release(); private: - - static HRESULT InitDirect3D(); - static HRESULT InitInput(); + enum Result + { + Result_continue, + Result_quit, + Result_error + }; - static HRESULT Update(float deltaTime); + static HRESULT InitDirect3D(); + static HRESULT InitInput(); + + static Result Update(float deltaTime); static HRESULT Render(); static HRESULT CleanUp(); }; diff --git a/Code/Game/DanBiasLauncher/Launcher.cpp b/Code/Game/DanBiasLauncher/Launcher.cpp index 95bad91c..fbf8d7c7 100644 --- a/Code/Game/DanBiasLauncher/Launcher.cpp +++ b/Code/Game/DanBiasLauncher/Launcher.cpp @@ -25,7 +25,7 @@ int WINAPI WinMain( HINSTANCE hinst, HINSTANCE prevInst, PSTR cmdLine, int cmdSh gameDesc.hinst = hinst; gameDesc.nCmdShow = cmdShow; - if( DanBias::DanBiasGame::Initiate(gameDesc) == DanBias::DanBiasClientReturn_Sucess) + if( DanBias::DanBiasGame::Initiate(gameDesc) == DanBias::DanBiasClientReturn_Success ) { DanBias::DanBiasGame::Run(); DanBias::DanBiasGame::Release(); diff --git a/Code/Network/NetworkAPI/CustomNetProtocol.h b/Code/Network/NetworkAPI/CustomNetProtocol.h index c982bd1f..48feb3a9 100644 --- a/Code/Network/NetworkAPI/CustomNetProtocol.h +++ b/Code/Network/NetworkAPI/CustomNetProtocol.h @@ -84,7 +84,7 @@ namespace Oyster type = p.type; if(type == NetAttributeType_CharArray && p.value.netCharPtr) { - int len = 0; + size_t len = 0; if((len = strlen(p.value.netCharPtr)) == 0) return; len++; value.netCharPtr = new char[len]; @@ -106,7 +106,7 @@ namespace Oyster type = p.type; if(type == NetAttributeType_CharArray && p.value.netCharPtr) { - int len = 0; + size_t len = 0; if((len = strlen(p.value.netCharPtr)) == 0) return *this; len++; value.netCharPtr = new char[len]; diff --git a/Code/Network/NetworkAPI/Translator.cpp b/Code/Network/NetworkAPI/Translator.cpp index 3e460b54..a38fb8b2 100644 --- a/Code/Network/NetworkAPI/Translator.cpp +++ b/Code/Network/NetworkAPI/Translator.cpp @@ -47,7 +47,7 @@ struct Translator::PrivateData headerString.push_back(it->type); } - message.PackShort(headerString.size(), bytes); + message.PackShort((short)headerString.size(), bytes); size += 2; for(int i = 0; i < (int)headerString.size(); i++) From 8744c751a8361d9c29a847cf4eef848813d8f331 Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Thu, 13 Feb 2014 08:43:47 +0100 Subject: [PATCH 33/50] resized buttons --- Code/Game/DanBiasGame/GameClientState/MainState.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Code/Game/DanBiasGame/GameClientState/MainState.cpp b/Code/Game/DanBiasGame/GameClientState/MainState.cpp index bb0ea808..79981baa 100644 --- a/Code/Game/DanBiasGame/GameClientState/MainState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/MainState.cpp @@ -52,13 +52,13 @@ bool MainState::Init( NetworkClient* nwClient ) // create buttons ButtonRectangle *button; - button = new ButtonRectangle( L"earth_md.png", OnButtonInteract_Create, this, 0.5f, 0.2f, 0.1f, 0.3f, true ); + button = new ButtonRectangle( L"earth_md.png", OnButtonInteract_Create, this, 0.5f, 0.2f, 0.3f, 0.1f, true ); this->privData->button.AddButton( button ); - button = new ButtonRectangle( L"skysphere_md.png", OnButtonInteract_Join, this, 0.5f, 0.4f, 0.1f, 0.3f, true ); + button = new ButtonRectangle( L"skysphere_md.png", OnButtonInteract_Join, this, 0.5f, 0.4f, 0.3f, 0.1f, true ); this->privData->button.AddButton( button ); - button = new ButtonRectangle( L"plane_texture_md.png", OnButtonInteract_Quit, this, 0.5f, 0.8f, 0.1f, 0.3f, true ); + button = new ButtonRectangle( L"plane_texture_md.png", OnButtonInteract_Quit, this, 0.5f, 0.8f, 0.3f, 0.1f, true ); this->privData->button.AddButton( button ); // bind button collection to the singleton eventhandler From 6c667f32cde0af605681922730bee4c11e41f3ce Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Thu, 13 Feb 2014 09:45:45 +0100 Subject: [PATCH 34/50] some fixes --- Code/Game/DanBiasGame/DanBiasGame.vcxproj.user | 2 +- Code/Game/DanBiasGame/DanBiasGame_Impl.cpp | 5 +++-- Code/Game/DanBiasLauncher/Launcher.cpp | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Code/Game/DanBiasGame/DanBiasGame.vcxproj.user b/Code/Game/DanBiasGame/DanBiasGame.vcxproj.user index 2e28d6f7..4b847ee6 100644 --- a/Code/Game/DanBiasGame/DanBiasGame.vcxproj.user +++ b/Code/Game/DanBiasGame/DanBiasGame.vcxproj.user @@ -1,7 +1,7 @@  - true + false $(OutDir) diff --git a/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp b/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp index ec9fc98c..0b14e89f 100644 --- a/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp +++ b/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp @@ -221,8 +221,9 @@ namespace DanBias delete data.inputObj; - Oyster::Event::EventHandler::Instance().Clean(); - Oyster::Graphics::API::Clean(); + data.state = nullptr; + EventHandler::Instance().Clean(); + Graphics::API::Clean(); GameServerAPI::ServerStop(); diff --git a/Code/Game/DanBiasLauncher/Launcher.cpp b/Code/Game/DanBiasLauncher/Launcher.cpp index fbf8d7c7..8ace07dc 100644 --- a/Code/Game/DanBiasLauncher/Launcher.cpp +++ b/Code/Game/DanBiasLauncher/Launcher.cpp @@ -31,5 +31,5 @@ int WINAPI WinMain( HINSTANCE hinst, HINSTANCE prevInst, PSTR cmdLine, int cmdSh DanBias::DanBiasGame::Release(); } - return cmdShow; + return 0; } \ No newline at end of file From d60fd65805f3a888811386a333e7777adc22e2bd Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Thu, 13 Feb 2014 10:14:44 +0100 Subject: [PATCH 35/50] Overhaul LanMenuState --- .../GameClientState/LanMenuState.cpp | 135 ++++++++---------- .../GameClientState/LanMenuState.h | 2 - 2 files changed, 60 insertions(+), 77 deletions(-) diff --git a/Code/Game/DanBiasGame/GameClientState/LanMenuState.cpp b/Code/Game/DanBiasGame/GameClientState/LanMenuState.cpp index ecde4eeb..a043d3bf 100644 --- a/Code/Game/DanBiasGame/GameClientState/LanMenuState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/LanMenuState.cpp @@ -9,11 +9,17 @@ #include "GameState.h" #include "../Network/NetworkAPI/NetworkClient.h" +#include "EventHandler\EventHandler.h" +#include "Buttons\ButtonRectangle.h" + #include +#include using namespace ::DanBias::Client; using namespace ::Oyster; using namespace ::Oyster::Network; +using namespace ::Oyster::Event; +using namespace ::Oyster::Math3D; struct LanMenuState::MyData { @@ -21,109 +27,68 @@ struct LanMenuState::MyData GameClientState::ClientState nextState; NetworkClient *nwClient; - + Graphics::API::Texture background; + EventButtonCollection button; + ::std::wstring connectIP; + unsigned short connectPort; } privData; +void OnButtonInteract_Connect( Oyster::Event::ButtonEvent& e ); + LanMenuState::LanMenuState() {} -LanMenuState::~LanMenuState() {} +LanMenuState::~LanMenuState() +{ + if( this->privData ) + this->Release(); +} bool LanMenuState::Init(Network::NetworkClient* nwClient) { - privData = new MyData(); + this->privData = new MyData(); this->privData->nextState = GameClientState::ClientState_Same; this->privData->nwClient = nwClient; + this->privData->background = Graphics::API::CreateTexture( L"grass_md.png" ); + + // create buttons + ButtonRectangle *button; + + button = new ButtonRectangle( L"earth_md.png", OnButtonInteract_Connect, this, 0.5f, 0.2f, 0.3f, 0.1f, true ); + this->privData->button.AddButton( button ); + + // bind button collection to the singleton eventhandler + EventHandler::Instance().AddCollection( &this->privData->button ); + + this->privData->connectIP = L"127.0.0.1"; + this->privData->connectPort = 15151; + return true; } GameClientState::ClientState LanMenuState::Update(float deltaTime, InputClass* KeyInput) { - /*ChangeState(KeyInput); - - if(privData->recieverObj->IsConnected()) - privData->recieverObj->Update(); - KeyInput->Update(); - - if(privData->serverOwner) + MouseInput mouseState; { - DanBias::GameServerAPI::ServerUpdate(); + mouseState.x = KeyInput->GetPitch(); + mouseState.y = KeyInput->GetYaw(); + mouseState.mouseButtonPressed = KeyInput->IsMousePressed(); } - DanBias::Client::GameClientState::ClientState state = DanBias::Client::GameClientState::ClientState_Same; - state = privData->recieverObj->gameClientState->Update(deltaTime, KeyInput); + EventHandler::Instance().Update( mouseState ); - if(state != Client::GameClientState::ClientState_Same) - { - privData->recieverObj->gameClientState->Release(); - delete privData->recieverObj->gameClientState; - privData->recieverObj->gameClientState = NULL; - - switch (state) - { - case Client::GameClientState::ClientState_LobbyCreated: - privData->serverOwner = true; - case Client::GameClientState::ClientState_Lobby: - privData->recieverObj->gameClientState = new Client::LobbyState(); - break; - case Client::GameClientState::ClientState_Game: - privData->recieverObj->gameClientState = new Client::GameState(); - break; - default: - //return E_FAIL; - break; - } - privData->recieverObj->gameClientState->Init(privData->recieverObj); // send game client - - }*/ - - //return ChangeState(KeyInput); return this->privData->nextState; } -//GameClientState::ClientState LanMenuState::ChangeState(InputClass* KeyInput) -//{ -// // create game -// if( KeyInput->IsKeyPressed(DIK_C)) -// { -// DanBias::GameServerAPI::ServerInitDesc desc; -// -// DanBias::GameServerAPI::ServerInitiate(desc); -// DanBias::GameServerAPI::ServerStart(); -// // my ip -// nwClient->Connect(15151, "127.0.0.1"); -// -// if (!nwClient->IsConnected()) -// { -// // failed to connect -// return ClientState_Same; -// } -// return ClientState_Lobby; -// } -// // join game -// if( KeyInput->IsKeyPressed(DIK_J)) -// { -// // game ip -// nwClient->Connect(15151, "194.47.150.56"); -// -// if (!nwClient->IsConnected()) -// { -// // failed to connect -// return ClientState_Same; -// } -// return ClientState_Lobby; -// } -// return ClientState_Same; -//} - bool LanMenuState::Render( ) { Graphics::API::NewFrame(); Graphics::API::StartGuiRender(); - + Graphics::API::RenderGuiElement( this->privData->background, Float2(0.5f), Float2(1.0f) ); + this->privData->button.Render(); Graphics::API::EndFrame(); return true; @@ -131,12 +96,32 @@ bool LanMenuState::Render( ) bool LanMenuState::Release() { - privData = NULL; return true; } void LanMenuState::ChangeState( ClientState next ) { + switch( next ) + { + case GameClientState::ClientState_Lobby: + // attempt to connect to lobby + if( !this->privData->nwClient->Connect(this->privData->connectPort, this->privData->connectIP) ) + return; + break; + default: break; + } + this->privData->nextState = next; +} + +void OnButtonInteract_Connect( Oyster::Event::ButtonEvent& e ) +{ + switch( e.state ) + { + case ButtonState_Released: + e.owner->ChangeState( GameClientState::ClientState_LobbyCreate ); + break; + default: break; + } } \ No newline at end of file diff --git a/Code/Game/DanBiasGame/GameClientState/LanMenuState.h b/Code/Game/DanBiasGame/GameClientState/LanMenuState.h index a58585d2..8f3e8e67 100644 --- a/Code/Game/DanBiasGame/GameClientState/LanMenuState.h +++ b/Code/Game/DanBiasGame/GameClientState/LanMenuState.h @@ -17,8 +17,6 @@ namespace DanBias virtual bool Init(Oyster::Network::NetworkClient* nwClient); virtual ClientState Update(float deltaTime, InputClass* KeyInput); - //ClientState ChangeState(InputClass* KeyInput); - virtual bool Render(); virtual bool Release(); void ChangeState( ClientState next ); From d705e73dc59d18a6d9797acf6e63ec0983a388fe Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Thu, 13 Feb 2014 13:30:14 +0100 Subject: [PATCH 36/50] Added LobbyAdminState + other stuff --- Code/Game/DanBiasGame/DanBiasGame.vcxproj | 2 + Code/Game/DanBiasGame/DanBiasGame_Impl.cpp | 14 +- .../GameClientState/GameClientState.h | 3 +- .../DanBiasGame/GameClientState/GameState.cpp | 20 ++- .../GameClientState/LobbyAdminState.cpp | 151 ++++++++++++++++++ .../GameClientState/LobbyAdminState.h | 40 +++++ .../GameClientState/LobbyState.cpp | 78 ++++++--- .../DanBiasGame/GameClientState/LobbyState.h | 31 ++-- .../DanBiasGame/GameClientState/MainState.cpp | 24 +-- .../DanBiasLauncher.vcxproj.user | 2 +- Code/Game/GameServer/GameServer.vcxproj.user | 2 +- 11 files changed, 299 insertions(+), 68 deletions(-) create mode 100644 Code/Game/DanBiasGame/GameClientState/LobbyAdminState.cpp create mode 100644 Code/Game/DanBiasGame/GameClientState/LobbyAdminState.h diff --git a/Code/Game/DanBiasGame/DanBiasGame.vcxproj b/Code/Game/DanBiasGame/DanBiasGame.vcxproj index 35cd832f..974736b4 100644 --- a/Code/Game/DanBiasGame/DanBiasGame.vcxproj +++ b/Code/Game/DanBiasGame/DanBiasGame.vcxproj @@ -211,6 +211,7 @@ + @@ -234,6 +235,7 @@ + diff --git a/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp b/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp index 0b14e89f..923e53fc 100644 --- a/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp +++ b/Code/Game/DanBiasGame/DanBiasGame_Impl.cpp @@ -5,6 +5,7 @@ #include "GameClientState/GameClientState.h" #include "GameClientState\GameState.h" #include "GameClientState\LobbyState.h" +#include "GameClientState\LobbyAdminState.h" #include "GameClientState\MainState.h" #include "GameClientState\LanMenuState.h" #include @@ -169,16 +170,9 @@ namespace DanBias switch (state) { case Client::GameClientState::ClientState_LobbyCreate: - { - //DanBias::GameServerAPI::ServerInitiate( .. ); - //DanBias::GameServerAPI::ServerStart(); - //data.serverOwner = true; - //if( data.networkClient.Connect(15151, "127.0.0.1") ) - //{ - // data.state = new Client::LobbyState(); - // stateChanged = true; - //} - } + data.state = new Client::LobbyAdminState(); + stateChanged = true; + break; case Client::GameClientState::ClientState_Lan: data.state = new Client::LanMenuState(); stateChanged = true; diff --git a/Code/Game/DanBiasGame/GameClientState/GameClientState.h b/Code/Game/DanBiasGame/GameClientState/GameClientState.h index 96c4fd64..a1936bab 100644 --- a/Code/Game/DanBiasGame/GameClientState/GameClientState.h +++ b/Code/Game/DanBiasGame/GameClientState/GameClientState.h @@ -13,9 +13,10 @@ namespace DanBias { namespace Client enum ClientState { ClientState_Login, - ClientState_Lobby, ClientState_Lan, + ClientState_Lobby, ClientState_LobbyCreate, + ClientState_LobbyReady, ClientState_Game, ClientState_Same, ClientState_Quit diff --git a/Code/Game/DanBiasGame/GameClientState/GameState.cpp b/Code/Game/DanBiasGame/GameClientState/GameState.cpp index 088837c7..a1cdb32a 100644 --- a/Code/Game/DanBiasGame/GameClientState/GameState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/GameState.cpp @@ -15,7 +15,6 @@ struct GameState::MyData MyData(){} GameClientState::ClientState nextState; NetworkClient *nwClient; - } privData; GameState::GameState(void) @@ -137,14 +136,19 @@ bool GameState::LoadModels(std::string mapFile) { GameLogic::BasicLight* lightData = ((GameLogic::BasicLight*)obj); - if(lightData->lightType == GameLogic::LightType_PointLight) + switch( lightData->lightType ) { - Oyster::Graphics::Definitions::Pointlight plight; - plight.Pos = ((GameLogic::PointLight*)lightData)->position; - plight.Color = lightData->diffuseColor; - plight.Radius = 100; - plight.Bright = 0.9f; - Oyster::Graphics::API::AddLight(plight); + case GameLogic::LightType_PointLight: + { + //Oyster::Graphics::Definitions::Pointlight plight; + //plight.Pos = ((GameLogic::PointLight*)lightData)->position; + //plight.Color = lightData->diffuseColor; + //plight.Radius = 100; + //plight.Bright = 0.9f; + //Oyster::Graphics::API::AddLight(plight); + } + break; + default: break; } } break; diff --git a/Code/Game/DanBiasGame/GameClientState/LobbyAdminState.cpp b/Code/Game/DanBiasGame/GameClientState/LobbyAdminState.cpp new file mode 100644 index 00000000..e6e764ea --- /dev/null +++ b/Code/Game/DanBiasGame/GameClientState/LobbyAdminState.cpp @@ -0,0 +1,151 @@ +#include "LobbyAdminState.h" +#include "DllInterfaces/GFXAPI.h" +#include "OysterMath.h" +#include "C_obj/C_Player.h" +#include "C_obj/C_StaticObj.h" +#include "C_obj/C_DynamicObj.h" +#include +#include + +#include "EventHandler\EventHandler.h" +#include "Buttons\ButtonRectangle.h" + +using namespace ::DanBias::Client; +using namespace ::Oyster; +using namespace ::Oyster::Network; +using namespace ::Oyster::Event; +using namespace ::Oyster::Math3D; + +struct LobbyAdminState::MyData +{ + MyData(){} + + GameClientState::ClientState nextState; + NetworkClient *nwClient; + Graphics::API::Texture background; + EventButtonCollection button; +} privData; + +void OnButtonInteract_Ready( Oyster::Event::ButtonEvent& e ); + +LobbyAdminState::LobbyAdminState(void) {} + +LobbyAdminState::~LobbyAdminState(void) +{ + if( this->privData ) + this->Release(); +} + +bool LobbyAdminState::Init(NetworkClient* nwClient) +{ + privData = new MyData(); + + this->privData->nextState = GameClientState::ClientState_Same; + this->privData->nwClient = nwClient; + + this->privData->background = Graphics::API::CreateTexture( L"grass_md.png" ); + + // create buttons + ButtonRectangle *button; + + button = new ButtonRectangle( L"earth_md.png", OnButtonInteract_Ready, this, 0.5f, 0.2f, 0.3f, 0.1f, true ); + this->privData->button.AddButton( button ); + + // bind button collection to the singleton eventhandler + EventHandler::Instance().AddCollection( &this->privData->button ); + + return true; +} + +GameClientState::ClientState LobbyAdminState::Update(float deltaTime, InputClass* KeyInput) +{ + // Wishlist: + // picking + // mouse events + // different menus + // play sounds + // update animation + // send data to server + // check data from server + + MouseInput mouseState; + { + mouseState.x = KeyInput->GetPitch(); + mouseState.y = KeyInput->GetYaw(); + mouseState.mouseButtonPressed = KeyInput->IsMousePressed(); + } + + EventHandler::Instance().Update( mouseState ); + + return this->privData->nextState; +} +bool LobbyAdminState::Render( ) +{ + Graphics::API::NewFrame(); + Graphics::API::StartGuiRender(); + + Graphics::API::RenderGuiElement( this->privData->background, Float2(0.5f), Float2(1.0f) ); + this->privData->button.Render(); + + Graphics::API::EndFrame(); + return true; +} +bool LobbyAdminState::Release() +{ + privData = NULL; + return true; +} + +void LobbyAdminState::ChangeState( ClientState next ) +{ + if( next == GameClientState::ClientState_LobbyReady ) + { // If all is ready start server + + } + else + this->privData->nextState = next; +} + +using namespace ::Oyster::Network; + +void LobbyAdminState::DataRecieved( NetEvent e ) +{ + CustomNetProtocol data = e.args.data.protocol; + short ID = data[0].value.netShort; // fetching the id data. + + // Block irrelevant messages. + if( ProtocolIsLobby(ID) ) + { + switch(ID) + { + case protocol_Lobby_Create: break; /** @todo TODO: implement */ + case protocol_Lobby_Start: break; /** @todo TODO: implement */ + case protocol_Lobby_Join: break; /** @todo TODO: implement */ + case protocol_Lobby_Login: break; /** @todo TODO: implement */ + case protocol_Lobby_Refresh: break; /** @todo TODO: implement */ + case protocol_Lobby_ClientData: break; /** @todo TODO: implement */ + case protocol_Lobby_GameData: break; /** @todo TODO: implement */ + default: break; + } + } + else if( ProtocolIsGeneral(ID) ) + { + switch( ID ) + { + case protocol_General_Status: break; /** @todo TODO: implement */ + case protocol_General_Text: break; /** @todo TODO: implement */ + default: break; + } + } +} + +void OnButtonInteract_Ready( Oyster::Event::ButtonEvent& e ) +{ + switch( e.state ) + { + case ButtonState_Released: + e.owner->ChangeState( GameClientState::ClientState_LobbyReady ); + break; + default: break; + } +} \ No newline at end of file diff --git a/Code/Game/DanBiasGame/GameClientState/LobbyAdminState.h b/Code/Game/DanBiasGame/GameClientState/LobbyAdminState.h new file mode 100644 index 00000000..06a9aced --- /dev/null +++ b/Code/Game/DanBiasGame/GameClientState/LobbyAdminState.h @@ -0,0 +1,40 @@ +#ifndef DANBIAS_CLIENT_LOBBYADMINSTATE_H +#define DANBIAS_CLIENT_LOBBYADMINSTATE_H + +#include "GameClientState.h" +#include "NetworkClient.h" + +// Feature wishlist: +// create session lobby +// join session lobby +// set name +// set rules +// set map +// ready +// chat +// kick + +namespace DanBias +{ + namespace Client + { + class LobbyAdminState : public GameClientState + { + public: + LobbyAdminState(); + ~LobbyAdminState(); + + bool Init( Oyster::Network::NetworkClient* nwClient ); + ClientState Update( float deltaTime, InputClass* KeyInput ); + bool Render(); + bool Release(); + void ChangeState( ClientState next ); + void DataRecieved( ::Oyster::Network::NetEvent<::Oyster::Network::NetworkClient*, ::Oyster::Network::NetworkClient::ClientEventArgs> e ); + + private: + struct MyData; + ::Utility::DynamicMemory::UniquePointer privData; + }; + } +} +#endif // ! DANBIAS_CLIENT_GAMECLIENTSTATE_H diff --git a/Code/Game/DanBiasGame/GameClientState/LobbyState.cpp b/Code/Game/DanBiasGame/GameClientState/LobbyState.cpp index 7b3f88ea..77ec5a86 100644 --- a/Code/Game/DanBiasGame/GameClientState/LobbyState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/LobbyState.cpp @@ -7,9 +7,14 @@ #include #include +#include "EventHandler\EventHandler.h" +#include "Buttons\ButtonRectangle.h" + +using namespace ::DanBias::Client; using namespace ::Oyster; using namespace ::Oyster::Network; -using namespace ::DanBias::Client; +using namespace ::Oyster::Event; +using namespace ::Oyster::Math3D; struct LobbyState::MyData { @@ -17,8 +22,12 @@ struct LobbyState::MyData GameClientState::ClientState nextState; NetworkClient *nwClient; + Graphics::API::Texture background; + EventButtonCollection button; } privData; +void OnButtonInteract_Ready( Oyster::Event::ButtonEvent& e ); + LobbyState::LobbyState(void) {} LobbyState::~LobbyState(void) @@ -34,31 +43,39 @@ bool LobbyState::Init(NetworkClient* nwClient) this->privData->nextState = GameClientState::ClientState_Same; this->privData->nwClient = nwClient; + this->privData->background = Graphics::API::CreateTexture( L"grass_md.png" ); + + // create buttons + ButtonRectangle *button; + + button = new ButtonRectangle( L"earth_md.png", OnButtonInteract_Ready, this, 0.5f, 0.2f, 0.3f, 0.1f, true ); + this->privData->button.AddButton( button ); + + // bind button collection to the singleton eventhandler + EventHandler::Instance().AddCollection( &this->privData->button ); + return true; } GameClientState::ClientState LobbyState::Update(float deltaTime, InputClass* KeyInput) { - //// picking - //// mouse events - //// different menus - //// play sounds - //// update animation - //// send data to server - //// check data from server + // Wishlist: + // picking + // mouse events + // different menus + // play sounds + // update animation + // send data to server + // check data from server - //if(GameServerAPI::ServerIsRunning() && GameServerAPI::ServerIsRunning()) //May be a problem if server is not shut down properly after lan session. - //{ - // if( KeyInput->IsKeyPressed(DIK_G)) - // { - // if(!DanBias::GameServerAPI::GameStart()) - // { - // - // } - // } - //} - - //return ClientState_Same; + MouseInput mouseState; + { + mouseState.x = KeyInput->GetPitch(); + mouseState.y = KeyInput->GetYaw(); + mouseState.mouseButtonPressed = KeyInput->IsMousePressed(); + } + + EventHandler::Instance().Update( mouseState ); return this->privData->nextState; } @@ -67,6 +84,9 @@ bool LobbyState::Render( ) Graphics::API::NewFrame(); Graphics::API::StartGuiRender(); + Graphics::API::RenderGuiElement( this->privData->background, Float2(0.5f), Float2(1.0f) ); + this->privData->button.Render(); + Graphics::API::EndFrame(); return true; } @@ -78,7 +98,12 @@ bool LobbyState::Release() void LobbyState::ChangeState( ClientState next ) { - this->privData->nextState = next; + if( next == GameClientState::ClientState_LobbyReady ) + { // Send ready signal to server lobby + + } + else + this->privData->nextState = next; } using namespace ::Oyster::Network; @@ -112,4 +137,15 @@ void LobbyState::DataRecieved( NetEvent& e ) +{ + switch( e.state ) + { + case ButtonState_Released: + e.owner->ChangeState( GameClientState::ClientState_LobbyReady ); + break; + default: break; + } } \ No newline at end of file diff --git a/Code/Game/DanBiasGame/GameClientState/LobbyState.h b/Code/Game/DanBiasGame/GameClientState/LobbyState.h index 8491827f..7b6e5909 100644 --- a/Code/Game/DanBiasGame/GameClientState/LobbyState.h +++ b/Code/Game/DanBiasGame/GameClientState/LobbyState.h @@ -5,34 +5,37 @@ #include "OysterMath.h" #include "NetworkClient.h" #include + +// Feature wishlist: +// create session lobby +// join session lobby +// set name +// set rules +// set map +// ready +// chat +// kick + namespace DanBias { namespace Client { class LobbyState : public GameClientState { - private: - struct MyData; - ::Utility::DynamicMemory::UniquePointer privData; public: LobbyState(void); ~LobbyState(void); - bool Init(Oyster::Network::NetworkClient* nwClient); - ClientState Update(float deltaTime, InputClass* KeyInput); - // create session lobby - // join session lobby - // set name - // set rules - // set map - // ready - // chat - // kick + bool Init( Oyster::Network::NetworkClient* nwClient ); + ClientState Update( float deltaTime, InputClass* KeyInput ); bool Render(); bool Release(); void ChangeState( ClientState next ); - void DataRecieved( ::Oyster::Network::NetEvent<::Oyster::Network::NetworkClient*, ::Oyster::Network::NetworkClient::ClientEventArgs> e ); + + private: + struct MyData; + ::Utility::DynamicMemory::UniquePointer privData; }; } } diff --git a/Code/Game/DanBiasGame/GameClientState/MainState.cpp b/Code/Game/DanBiasGame/GameClientState/MainState.cpp index 79981baa..c7fe78c8 100644 --- a/Code/Game/DanBiasGame/GameClientState/MainState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/MainState.cpp @@ -69,7 +69,14 @@ bool MainState::Init( NetworkClient* nwClient ) GameClientState::ClientState MainState::Update(float deltaTime, InputClass* KeyInput) { - EventHandler::Instance().Update( KeyInput ); + MouseInput mouseState; + { + mouseState.x = KeyInput->GetPitch(); + mouseState.y = KeyInput->GetYaw(); + mouseState.mouseButtonPressed = KeyInput->IsMousePressed(); + } + + EventHandler::Instance().Update( mouseState ); return this->privData->nextState; } @@ -88,11 +95,12 @@ bool MainState::Render() bool MainState::Release() { - if( privData ) + if( this->privData ) { - Graphics::API::DeleteTexture( this->privData->background ); + Graphics::API::DeleteTexture( this->privData->background ); // TODO: @todo bug caught when exiting by X + EventHandler::Instance().ReleaseCollection( &this->privData->button ); - privData = NULL; + this->privData = NULL; // button collection will be autoreleased from EventHandler } return true; @@ -103,14 +111,6 @@ void MainState::ChangeState( ClientState next ) this->privData->nextState = next; } -/// button actions - -//ButtonState_None, // onExit -//ButtonState_Hover, -//ButtonState_Pressed, -//ButtonState_Down, -//ButtonState_Released, - void OnButtonInteract_Create( Oyster::Event::ButtonEvent& e ) { switch( e.state ) diff --git a/Code/Game/DanBiasLauncher/DanBiasLauncher.vcxproj.user b/Code/Game/DanBiasLauncher/DanBiasLauncher.vcxproj.user index 2e28d6f7..4b847ee6 100644 --- a/Code/Game/DanBiasLauncher/DanBiasLauncher.vcxproj.user +++ b/Code/Game/DanBiasLauncher/DanBiasLauncher.vcxproj.user @@ -1,7 +1,7 @@  - true + false $(OutDir) diff --git a/Code/Game/GameServer/GameServer.vcxproj.user b/Code/Game/GameServer/GameServer.vcxproj.user index 2e28d6f7..4b847ee6 100644 --- a/Code/Game/GameServer/GameServer.vcxproj.user +++ b/Code/Game/GameServer/GameServer.vcxproj.user @@ -1,7 +1,7 @@  - true + false $(OutDir) From cccaf68672780cfab53396004ba59d86663d2c32 Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Thu, 13 Feb 2014 15:21:02 +0100 Subject: [PATCH 37/50] premerge --- .../GameClientState/Buttons/TextField.h | 30 +++++++++++++ .../DanBiasGame/GameClientState/GameState.h | 42 ++++++++++--------- 2 files changed, 52 insertions(+), 20 deletions(-) create mode 100644 Code/Game/DanBiasGame/GameClientState/Buttons/TextField.h diff --git a/Code/Game/DanBiasGame/GameClientState/Buttons/TextField.h b/Code/Game/DanBiasGame/GameClientState/Buttons/TextField.h new file mode 100644 index 00000000..df3ff60e --- /dev/null +++ b/Code/Game/DanBiasGame/GameClientState/Buttons/TextField.h @@ -0,0 +1,30 @@ +/******************************************************************** + * Created by Dan Andersson, 2014 + ********************************************************************/ +#include +#include "EventButtonGUI.h" +#include "OysterMath.h" + +#ifndef DANBIAS_CLIENT_TEXT_FIELD_H +#define DANBIAS_CLIENT_TEXT_FIELD_H + +namespace DanBias { namespace Client +{ + template + class TextField : public EventButtonGUI + { + public: + ::std::wstring text; + + TextField( std::wstring textureName, Owner owner, ::Oyster::Math::Float3 centerPos, ::Oyster::Math::Float2 size ); + TextField(); + + + private: + ::Oyster::Math::Float3 center; + ::Oyster::Math::Float2 reach; + + }; +} } + +#endif \ No newline at end of file diff --git a/Code/Game/DanBiasGame/GameClientState/GameState.h b/Code/Game/DanBiasGame/GameClientState/GameState.h index c1ba7f8f..6366bb8c 100644 --- a/Code/Game/DanBiasGame/GameClientState/GameState.h +++ b/Code/Game/DanBiasGame/GameClientState/GameState.h @@ -10,18 +10,36 @@ #include "C_obj/C_DynamicObj.h" #include "C_obj/C_StaticObj.h" #include "DynamicArray.h" -namespace DanBias -{ -namespace Client + +namespace DanBias { namespace Client { class GameState : public GameClientState { + public: enum gameStateState { gameStateState_loading, gameStateState_playing, gameStateState_end, }; + + GameState(void); + ~GameState(void); + bool Init(Oyster::Network::NetworkClient* nwClient); + GameClientState::ClientState Update(float deltaTime, InputClass* KeyInput) override; + + bool LoadModels(std::string mapFile); + bool InitCamera(Oyster::Math::Float3 startPos) ; + void InitiatePlayer(int id, std::wstring modelName, Oyster::Math::Float4x4 world); + gameStateState LoadGame(); + void readKeyInput(InputClass* KeyInput); + + bool Render()override; + bool Release()override; + void ChangeState( ClientState next ); + + void DataRecieved( ::Oyster::Network::NetEvent<::Oyster::Network::NetworkClient*, ::Oyster::Network::NetworkClient::ClientEventArgs> e ); + private: struct MyData; ::Utility::DynamicMemory::UniquePointer privData; @@ -39,22 +57,6 @@ namespace Client Utility::DynamicMemory::DynamicArray> staticObjects; Utility::DynamicMemory::DynamicArray> dynamicObjects; //Utility::DynamicMemory::DynamicArray> playObjects; - public: - GameState(void); - ~GameState(void); - bool Init(Oyster::Network::NetworkClient* nwClient); - GameClientState::ClientState Update(float deltaTime, InputClass* KeyInput) override; - bool LoadModels(std::string mapFile); - bool InitCamera(Oyster::Math::Float3 startPos) ; - void InitiatePlayer(int id, std::wstring modelName, Oyster::Math::Float4x4 world); - gameStateState LoadGame(); - void readKeyInput(InputClass* KeyInput); - bool Render()override; - bool Release()override; - void ChangeState( ClientState next ); - - void DataRecieved( ::Oyster::Network::NetEvent<::Oyster::Network::NetworkClient*, ::Oyster::Network::NetworkClient::ClientEventArgs> e ); }; -} -} +} } #endif \ No newline at end of file From 3b225ea054dab39a92592ee05f8018ecee247eb4 Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Thu, 13 Feb 2014 15:32:54 +0100 Subject: [PATCH 38/50] Merge --- .../GameClientState/Buttons/ButtonEllipse.h | 20 ++--- .../GameClientState/Buttons/ButtonRectangle.h | 24 +++--- .../GameClientState/Buttons/EventButtonGUI.h | 76 +++++++++++++------ .../EventHandler/EventButtonCollection.cpp | 15 +++- .../Misc/EventHandler/EventButtonCollection.h | 3 +- Code/Misc/EventHandler/EventHandler.cpp | 12 ++- Code/Misc/EventHandler/EventHandler.h | 3 +- Code/Network/NetworkAPI/NetworkClient.cpp | 14 ++++ Code/Network/NetworkAPI/NetworkClient.h | 5 ++ 9 files changed, 122 insertions(+), 50 deletions(-) diff --git a/Code/Game/DanBiasGame/GameClientState/Buttons/ButtonEllipse.h b/Code/Game/DanBiasGame/GameClientState/Buttons/ButtonEllipse.h index 5570fb2f..a922f141 100644 --- a/Code/Game/DanBiasGame/GameClientState/Buttons/ButtonEllipse.h +++ b/Code/Game/DanBiasGame/GameClientState/Buttons/ButtonEllipse.h @@ -21,17 +21,17 @@ namespace DanBias ButtonEllipse() : EventButtonGUI(), radius(0) {} - ButtonEllipse(std::wstring textureName, Owner owner, float xPos, float yPos, float textureWidth, float textureHeight, bool resizeToScreenAspectRatio = true) - : EventButtonGUI(textureName, owner, xPos, yPos, textureWidth, textureHeight, resizeToScreenAspectRatio) + ButtonEllipse(std::wstring textureName, std::wstring buttonText, Oyster::Math::Float3 textColor, Owner owner, Oyster::Math::Float3 pos, Oyster::Math::Float2 size, ResizeAspectRatio resize = ResizeAspectRatio_Height) + : EventButtonGUI(textureName, buttonText, textColor, owner, pos, size, resize) {} - ButtonEllipse(std::wstring textureName, EventFunc func, float xPos, float yPos, float textureWidth, float textureHeight, bool resizeToScreenAspectRatio = true) - : EventButtonGUI(textureName, func, xPos, yPos, textureWidth, textureHeight, resizeToScreenAspectRatio) + ButtonEllipse(std::wstring textureName, std::wstring buttonText, Oyster::Math::Float3 textColor, EventFunc func, Oyster::Math::Float3 pos, Oyster::Math::Float2 size, ResizeAspectRatio resize = ResizeAspectRatio_Height) + : EventButtonGUI(textureName, buttonText, textColor, func, pos, size, resize) {} - ButtonEllipse(std::wstring textureName, EventFunc func, Owner owner, float xPos, float yPos, float textureWidth, float textureHeight, bool resizeToScreenAspectRatio = true) - : EventButtonGUI(textureName, func, owner, xPos, yPos, textureWidth, textureHeight, resizeToScreenAspectRatio) + ButtonEllipse(std::wstring textureName, std::wstring buttonText, Oyster::Math::Float3 textColor, EventFunc func, Owner owner, Oyster::Math::Float3 pos, Oyster::Math::Float2 size, ResizeAspectRatio resize = ResizeAspectRatio_Height) + : EventButtonGUI(textureName, buttonText, textColor, func, owner, pos, size, resize) {} - ButtonEllipse(std::wstring textureName, EventFunc func, Owner owner, void* userData, float xPos, float yPos, float textureWidth, float textureHeight, bool resizeToScreenAspectRatio = true) - : EventButtonGUI(textureName, func, owner, userData, xPos, yPos, textureWidth, textureHeight, resizeToScreenAspectRatio) + ButtonEllipse(std::wstring textureName, std::wstring buttonText, Oyster::Math::Float3 textColor, EventFunc func, Owner owner, void* userData, Oyster::Math::Float3 pos, Oyster::Math::Float2 size, ResizeAspectRatio resize = ResizeAspectRatio_Height) + : EventButtonGUI(textureName, buttonText, textColor, func, owner, userData, pos, size, resize) {} virtual ~ButtonEllipse() {} @@ -42,8 +42,8 @@ namespace DanBias //Should come from the InputClass float xMouse = input.x, yMouse = input.y; - double normx = (xMouse - xPos) / width; - double normy = (yMouse - yPos) / height; + double normx = (xMouse - pos.x) / size.x; + double normy = (yMouse - pos.y) / size.y; return (normx * normx + normy * normy) < 0.25; } diff --git a/Code/Game/DanBiasGame/GameClientState/Buttons/ButtonRectangle.h b/Code/Game/DanBiasGame/GameClientState/Buttons/ButtonRectangle.h index 711afdf8..a0b3e94b 100644 --- a/Code/Game/DanBiasGame/GameClientState/Buttons/ButtonRectangle.h +++ b/Code/Game/DanBiasGame/GameClientState/Buttons/ButtonRectangle.h @@ -21,17 +21,17 @@ namespace DanBias ButtonRectangle() : EventButtonGUI(), width(0), height(0) {} - ButtonRectangle(std::wstring textureName, Owner owner, float xPos, float yPos, float width, float height, bool resizeToScreenAspectRatio = true) - : EventButtonGUI(textureName, owner, xPos, yPos, width, height, resizeToScreenAspectRatio) + ButtonRectangle(std::wstring textureName, std::wstring buttonText, Oyster::Math::Float3 textColor, Owner owner, Oyster::Math::Float3 pos, Oyster::Math::Float2 size, ResizeAspectRatio resize = ResizeAspectRatio_Height) + : EventButtonGUI(textureName, buttonText, textColor, owner, pos, size, resize) {} - ButtonRectangle(std::wstring textureName, EventFunc func, float xPos, float yPos, float width, float height, bool resizeToScreenAspectRatio = true) - : EventButtonGUI(textureName, func, xPos, yPos, width, height, resizeToScreenAspectRatio) + ButtonRectangle(std::wstring textureName, std::wstring buttonText, Oyster::Math::Float3 textColor, EventFunc func, Oyster::Math::Float3 pos, Oyster::Math::Float2 size, ResizeAspectRatio resize = ResizeAspectRatio_Height) + : EventButtonGUI(textureName, buttonText, textColor, func, pos, size, resize) {} - ButtonRectangle(std::wstring textureName, EventFunc func, Owner owner, float xPos, float yPos, float width, float height, bool resizeToScreenAspectRatio = true) - : EventButtonGUI(textureName, func, owner, xPos, yPos, width, height, resizeToScreenAspectRatio) + ButtonRectangle(std::wstring textureName, std::wstring buttonText, Oyster::Math::Float3 textColor, EventFunc func, Owner owner, Oyster::Math::Float3 pos, Oyster::Math::Float2 size, ResizeAspectRatio resize = ResizeAspectRatio_Height) + : EventButtonGUI(textureName, buttonText, textColor, func, owner, pos, size, resize) {} - ButtonRectangle(std::wstring textureName, EventFunc func, Owner owner, void* userData, float xPos, float yPos, float width, float height, bool resizeToScreenAspectRatio = true) - : EventButtonGUI(textureName, func, owner, userData, xPos, yPos, width, height, resizeToScreenAspectRatio) + ButtonRectangle(std::wstring textureName, std::wstring buttonText, Oyster::Math::Float3 textColor, EventFunc func, Owner owner, void* userData, Oyster::Math::Float3 pos, Oyster::Math::Float2 size, ResizeAspectRatio resize = ResizeAspectRatio_Height) + : EventButtonGUI(textureName, buttonText, textColor, func, owner, userData, pos, size, resize) {} virtual ~ButtonRectangle() {} @@ -42,10 +42,10 @@ namespace DanBias //Should come from the InputClass float xMouse = input.x, yMouse = input.y; - float widthTemp = xPos - width * 0.5f; - float widthTemp2 = xPos + width * 0.5f; - float heightTemp = yPos - height * 0.5f; - float heightTemp2 = yPos + height * 0.5f; + float widthTemp = pos.x - size.x * 0.5f; + float widthTemp2 = pos.x + size.x * 0.5f; + float heightTemp = pos.y - size.y * 0.5f; + float heightTemp2 = pos.y + size.y * 0.5f; //std::cout << p.x << ' ' << p.y << ' ' << widthTemp << ' ' << heightTemp << std::endl; if(xMouse >= widthTemp && xMouse <= widthTemp2 && diff --git a/Code/Game/DanBiasGame/GameClientState/Buttons/EventButtonGUI.h b/Code/Game/DanBiasGame/GameClientState/Buttons/EventButtonGUI.h index e71dd0fa..d4884fd7 100644 --- a/Code/Game/DanBiasGame/GameClientState/Buttons/EventButtonGUI.h +++ b/Code/Game/DanBiasGame/GameClientState/Buttons/EventButtonGUI.h @@ -8,40 +8,56 @@ #include "../Misc/EventHandler/EventButton.h" #include "../OysterGraphics/DllInterfaces/GFXAPI.h" + + namespace DanBias { namespace Client { + /*Dictates if the texture should be resized based on the screen aspect ratio. + + */ + enum ResizeAspectRatio + { + ResizeAspectRatio_None, + ResizeAspectRatio_Width, + ResizeAspectRatio_Height, + + ResizeAspectRatio_Count, + ResizeAspectRatio_Unknown = -1 + }; + + template class EventButtonGUI : public Oyster::Event::EventButton { public: EventButtonGUI() - : EventButton(), xPos(0), yPos(0), width(0), height(0), texture(NULL) + : EventButton(), pos(0, 0), size(0, 0), texture(NULL), buttonText(""), textColor(0, 0, 0) {} - EventButtonGUI(std::wstring textureName, Owner owner, float xPos, float yPos, float width, float height, bool resizeToScreenAspectRatio = true) - : EventButton(owner), xPos(xPos), yPos(yPos), width(width), height(height), texture(NULL) + EventButtonGUI(std::wstring textureName, std::wstring buttonText, Oyster::Math::Float3 textColor, Owner owner, Oyster::Math::Float3 pos, Oyster::Math::Float2 size, ResizeAspectRatio resize = ResizeAspectRatio_Height) + : EventButton(owner), pos(pos), size(size), texture(NULL), buttonText(buttonText), textColor(textColor) { CreateTexture(textureName); - if(resizeToScreenAspectRatio) ResizeWithAspectRatio(); + if(resize != ResizeAspectRatio_None) ResizeWithAspectRatio(resize); } - EventButtonGUI(std::wstring textureName, EventFunc func, float xPos, float yPos, float width, float height, bool resizeToScreenAspectRatio = true) - : EventButton(func), xPos(xPos), yPos(yPos), width(width), height(height), texture(NULL) + EventButtonGUI(std::wstring textureName, std::wstring buttonText, Oyster::Math::Float3 textColor, EventFunc func, Oyster::Math::Float3 pos, Oyster::Math::Float2 size, ResizeAspectRatio resize = ResizeAspectRatio_Height) + : EventButton(func), pos(pos), size(size), texture(NULL), buttonText(buttonText), textColor(textColor) { CreateTexture(textureName); - if(resizeToScreenAspectRatio) ResizeWithAspectRatio(); + if(resize != ResizeAspectRatio_None) ResizeWithAspectRatio(resize); } - EventButtonGUI(std::wstring textureName, EventFunc func, Owner owner, float xPos, float yPos, float width, float height, bool resizeToScreenAspectRatio = true) - : EventButton(func, owner), xPos(xPos), yPos(yPos), width(width), height(height), texture(NULL) + EventButtonGUI(std::wstring textureName, std::wstring buttonText, Oyster::Math::Float3 textColor, EventFunc func, Owner owner, Oyster::Math::Float3 pos, Oyster::Math::Float2 size, ResizeAspectRatio resize = ResizeAspectRatio_Height) + : EventButton(func, owner), pos(pos), size(size), texture(NULL), buttonText(buttonText), textColor(textColor) { CreateTexture(textureName); - if(resizeToScreenAspectRatio) ResizeWithAspectRatio(); + if(resize != ResizeAspectRatio_None) ResizeWithAspectRatio(resize); } - EventButtonGUI(std::wstring textureName, EventFunc func, Owner owner, void* userData, float xPos, float yPos, float width, float height, bool resizeToScreenAspectRatio = true) - : EventButton(func, owner, userData), xPos(xPos), yPos(yPos), width(width), height(height), texture(NULL) + EventButtonGUI(std::wstring textureName, std::wstring buttonText, Oyster::Math::Float3 textColor, EventFunc func, Owner owner, void* userData, Oyster::Math::Float3 pos, Oyster::Math::Float2 size, ResizeAspectRatio resize = ResizeAspectRatio_Height) + : EventButton(func, owner, userData), pos(pos), size(size), texture(NULL), buttonText(buttonText), textColor(textColor) { CreateTexture(textureName); - if(resizeToScreenAspectRatio) ResizeWithAspectRatio(); + if(resize != ResizeAspectRatio_None) ResizeWithAspectRatio(resize); } virtual ~EventButtonGUI() { @@ -55,7 +71,7 @@ namespace DanBias texture = Oyster::Graphics::API::CreateTexture(textureName); } - virtual void Render() + virtual void RenderTexture() { if(EventButton::Enabled()) { @@ -64,32 +80,48 @@ namespace DanBias if(EventButton::GetState() == ButtonState_None) { - Oyster::Graphics::API::RenderGuiElement(texture, Oyster::Math::Float2(xPos, yPos), Oyster::Math::Float2(width, height), Oyster::Math::Float3(1.0f, 1.0f, 1.0f)); + Oyster::Graphics::API::RenderGuiElement(texture, pos.xy, size, Oyster::Math::Float3(1.0f, 1.0f, 1.0f)); } else if(EventButton::GetState() == ButtonState_Hover) { - Oyster::Graphics::API::RenderGuiElement(texture, Oyster::Math::Float2(xPos, yPos), Oyster::Math::Float2(width, height), Oyster::Math::Float3(0.0f, 1.0f, 0.0f)); + Oyster::Graphics::API::RenderGuiElement(texture, pos.xy, size, Oyster::Math::Float3(0.0f, 1.0f, 0.0f)); } else { - Oyster::Graphics::API::RenderGuiElement(texture, Oyster::Math::Float2(xPos, yPos), Oyster::Math::Float2(width, height), Oyster::Math::Float3(1.0f, 0.0f, 0.0f)); + Oyster::Graphics::API::RenderGuiElement(texture, pos.xy, size, Oyster::Math::Float3(1.0f, 0.0f, 0.0f)); } } } - void ResizeWithAspectRatio() + virtual void RenderText() + { + if(buttonText.size() > 0) + { + Oyster::Graphics::API::RenderText(buttonText, pos.xy, size, textColor); + } + } + + private: + void ResizeWithAspectRatio(ResizeAspectRatio resize) { RECT r; GetClientRect(WindowShell::GetHWND(), &r); - height *= (float)r.right/(float)r.bottom; + + if(resize == ResizeAspectRatio_Height) + size.y *= (float)r.right/(float)r.bottom; + else if(resize == ResizeAspectRatio_Width) + size.x *= (float)r.bottom/(float)r.right; } protected: - float xPos, yPos; - float width, height; - Oyster::Graphics::API::Texture texture; + Oyster::Math::Float3 pos; + Oyster::Math::Float2 size; + Oyster::Graphics::API::Texture texture; + + std::wstring buttonText; + Oyster::Math::Float3 textColor; }; } } diff --git a/Code/Misc/EventHandler/EventButtonCollection.cpp b/Code/Misc/EventHandler/EventButtonCollection.cpp index 9e52805e..72d0ba24 100644 --- a/Code/Misc/EventHandler/EventButtonCollection.cpp +++ b/Code/Misc/EventHandler/EventButtonCollection.cpp @@ -43,13 +43,24 @@ void EventButtonCollection::Update(MouseInput& input) } } -void EventButtonCollection::Render() +void EventButtonCollection::RenderTexture() { if(this->collectionState == EventCollectionState_Enabled) { for(int i = 0; i < (int)buttons.size(); i++) { - buttons[i]->Render(); + buttons[i]->RenderTexture(); + } + } +} + +void EventButtonCollection::RenderText() +{ + if(this->collectionState == EventCollectionState_Enabled) + { + for(int i = 0; i < (int)buttons.size(); i++) + { + buttons[i]->RenderText(); } } } diff --git a/Code/Misc/EventHandler/EventButtonCollection.h b/Code/Misc/EventHandler/EventButtonCollection.h index 3cb3c891..8c39d171 100644 --- a/Code/Misc/EventHandler/EventButtonCollection.h +++ b/Code/Misc/EventHandler/EventButtonCollection.h @@ -37,7 +37,8 @@ namespace Oyster ~EventButtonCollection(); void Update(MouseInput& input); - void Render(); + void RenderTexture(); + void RenderText(); /*Add a button to the collection when a button is added to the collection you are not allowed to delete it. */ diff --git a/Code/Misc/EventHandler/EventHandler.cpp b/Code/Misc/EventHandler/EventHandler.cpp index 558b776c..24dca38a 100644 --- a/Code/Misc/EventHandler/EventHandler.cpp +++ b/Code/Misc/EventHandler/EventHandler.cpp @@ -35,11 +35,19 @@ void EventHandler::Update(MouseInput& input) } } -void EventHandler::Render() +void EventHandler::RenderTexture() { for(int i = 0; i < (int)collections.size(); i++) { - collections.at(i)->Render(); + collections.at(i)->RenderTexture(); + } +} + +void EventHandler::RenderText() +{ + for(int i = 0; i < (int)collections.size(); i++) + { + collections.at(i)->RenderText(); } } diff --git a/Code/Misc/EventHandler/EventHandler.h b/Code/Misc/EventHandler/EventHandler.h index 79196afb..82c25e1a 100644 --- a/Code/Misc/EventHandler/EventHandler.h +++ b/Code/Misc/EventHandler/EventHandler.h @@ -27,7 +27,8 @@ namespace Oyster void Clean(); void Update(MouseInput& input); - void Render(); + void RenderTexture(); + void RenderText(); /*Add a collection to the EventHandler will only add collections not already present in the list. diff --git a/Code/Network/NetworkAPI/NetworkClient.cpp b/Code/Network/NetworkAPI/NetworkClient.cpp index de6539df..501aefdb 100644 --- a/Code/Network/NetworkAPI/NetworkClient.cpp +++ b/Code/Network/NetworkAPI/NetworkClient.cpp @@ -21,6 +21,9 @@ #include #include +//For conversion from wstring to string +#include + using namespace Oyster::Network; using namespace Oyster::Thread; using namespace Utility::DynamicMemory; @@ -295,6 +298,17 @@ bool NetworkClient::Connect(unsigned short port, const char serverIP[]) return true; } +bool NetworkClient::Connect(unsigned short port, std::wstring serverIP) +{ + //Convert from wstring to string. + typedef std::codecvt_utf8 convert_typeX; + std::wstring_convert converterX; + + std::string ip = converterX.to_bytes(serverIP); + + return this->Connect(port, ip.c_str()); +} + void NetworkClient::Disconnect() { if(!privateData) return; diff --git a/Code/Network/NetworkAPI/NetworkClient.h b/Code/Network/NetworkAPI/NetworkClient.h index 4533070c..58d81360 100644 --- a/Code/Network/NetworkAPI/NetworkClient.h +++ b/Code/Network/NetworkAPI/NetworkClient.h @@ -88,6 +88,11 @@ namespace Oyster */ bool Connect(unsigned short port, const char serverIP[]); + /** + * + */ + bool Connect(unsigned short port, std::wstring serverIP); + /** * */ From 49fc55be606233805482bf9e942fd3e88e29314a Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Fri, 14 Feb 2014 09:40:53 +0100 Subject: [PATCH 39/50] Textfield and Bunch of fixes --- Code/Game/DanBiasGame/DanBiasGame.vcxproj | 1 + .../GameClientState/Buttons/TextField.h | 196 ++++++++++++++++-- .../DanBiasGame/GameClientState/GameState.cpp | 34 +-- .../GameClientState/LanMenuState.cpp | 38 ++-- Code/Misc/EventHandler/IEventButton.h | 3 +- Code/Misc/Misc.vcxproj.user | 2 +- 6 files changed, 214 insertions(+), 60 deletions(-) diff --git a/Code/Game/DanBiasGame/DanBiasGame.vcxproj b/Code/Game/DanBiasGame/DanBiasGame.vcxproj index 974736b4..1f0bf1ce 100644 --- a/Code/Game/DanBiasGame/DanBiasGame.vcxproj +++ b/Code/Game/DanBiasGame/DanBiasGame.vcxproj @@ -240,6 +240,7 @@ + diff --git a/Code/Game/DanBiasGame/GameClientState/Buttons/TextField.h b/Code/Game/DanBiasGame/GameClientState/Buttons/TextField.h index df3ff60e..4333f1da 100644 --- a/Code/Game/DanBiasGame/GameClientState/Buttons/TextField.h +++ b/Code/Game/DanBiasGame/GameClientState/Buttons/TextField.h @@ -1,30 +1,202 @@ /******************************************************************** - * Created by Dan Andersson, 2014 + * Text field that allows multiple lines. + * + * Written by Dan Andersson, 2014 ********************************************************************/ -#include -#include "EventButtonGUI.h" -#include "OysterMath.h" #ifndef DANBIAS_CLIENT_TEXT_FIELD_H #define DANBIAS_CLIENT_TEXT_FIELD_H +#include +#include +#include "ButtonRectangle.h" +#include "OysterMath.h" +#include "Utilities.h" + namespace DanBias { namespace Client { - template - class TextField : public EventButtonGUI + template + class TextField : public ButtonRectangle { public: - ::std::wstring text; - - TextField( std::wstring textureName, Owner owner, ::Oyster::Math::Float3 centerPos, ::Oyster::Math::Float2 size ); TextField(); + TextField( ::std::wstring backgroundTexture, ::Oyster::Math::Float3 textColor, Owner owner, Oyster::Math::Float3 pos, Oyster::Math::Float2 size, ResizeAspectRatio resize = ResizeAspectRatio_Height ); + virtual ~TextField(); + virtual void RenderText(); + + const ::std::wstring & operator[]( unsigned int i ) const; + ::std::wstring & operator[]( unsigned int i ); + + void SetTextHeight( ::Oyster::Math::Float h ); + void SetLineSpacing( ::Oyster::Math::Float ls ); + + void SetBottomAligned(); + void SetTopAligned(); + + unsigned int GetNumLines() const; + unsigned int GetMaxLineLength() const; + + void ReserveLines( unsigned int num ); + void ClearText(); + void AppendText( const ::std::wstring &text ); + + void PopBack(); + void PopFront(); private: - ::Oyster::Math::Float3 center; - ::Oyster::Math::Float2 reach; - + bool isBottomAligned; + ::Oyster::Math::Float textHeight, lineSpacing; + ::std::vector<::std::wstring> lines; }; + +// IMPLEMENTATIONS ////////////////////////////////////////////////// + + template + TextField::TextField() + : ButtonRectangle() + { + this->textHeight = 0.025f; + this->lineSpacing = 0.001f; + this->isBottomAligned = true; + } + + template + TextField::TextField( ::std::wstring backgroundTexture, ::Oyster::Math::Float3 textColor, Owner owner, Oyster::Math::Float3 pos, Oyster::Math::Float2 size, ResizeAspectRatio resize ) + : ButtonRectangle( backgroundTexture, L"", textColor, owner, pos, size, resize ) + { + this->textHeight = 0.025f; + this->lineSpacing = 0.001f; + this->isBottomAligned = true; + } + + template + TextField::~TextField() {} + + template + void TextField::RenderText() + { + ::Oyster::Math::Float lineStep = this->textHeight + this->lineSpacing; + ::Oyster::Math::Float2 rowSize = ::Oyster::Math::Float2( this->size.x, this->textHeight ); + + if( this->isBottomAligned ) + { + ::Oyster::Math::Float2 topLeft = this->pos; + topLeft.y += this->size.y - lineStep; + + auto line = this->lines.rbegin(); + for( ; line != this->lines.rend(); ++line ) + { + if( topLeft.y - lineStep >= this->pos.y ) + { + ::Oyster::Graphics::API::RenderText( (*line), topLeft, rowSize, this->textColor ); + topLeft.y -= lineStep; + } + else break; + } + } + else + { + ::Oyster::Math::Float2 topLeft = this->pos; + + auto line = this->lines.begin(); + for( ; line != this->lines.end(); ++line ) + { + if( topLeft.y + lineStep < this->size.y ) + { + ::Oyster::Graphics::API::RenderText( (*line), topLeft, rowSize, this->textColor ); + topLeft.y += lineStep; + } + else break; + } + } + } + + template + const ::std::wstring & TextField::operator[]( unsigned int i ) const + { + return this->lines[(::std::vector<::std::wstring>::size_type)i]; + } + + template + ::std::wstring & TextField::operator[]( unsigned int i ) + { + return this->lines[(::std::vector<::std::wstring>::size_type)i]; + } + + template + void TextField::SetTextHeight( ::Oyster::Math::Float h ) + { + this->textHeight = h; + } + + template + void TextField::SetLineSpacing( ::Oyster::Math::Float ls ) + { + this->lineSpacing = ls; + } + + template + void TextField::SetBottomAligned() + { + this->isBottomAligned = true; + } + + template + void TextField::SetTopAligned() + { + this->isBottomAligned = false; + } + + template + unsigned int TextField::GetNumLines() const + { + return (unsigned int)this->lines.size(); + } + + template + void TextField::ReserveLines( unsigned int num ) + { + this->lines.reserve( (::std::vector<::std::wstring>::size_type)num ); + } + + template + void TextField::ClearText() + { + this->lines.resize( 0 ); + } + + template + void TextField::AppendText( const ::std::wstring &text ) + { + ::std::vector<::std::wstring> split; + split.reserve( 10 ); + ::Utility::String::Split( split, text, L"\n", 0 ); + auto line = split.begin(); + for( ; line != split.end; ++line ) + { + this->lines.push_back( (*line) ); + } + } + + template + void TextField::PopBack() + { + this->lines.pop_back(); + } + + template + void TextField::PopFront() + { + ::std::vector<::std::wstring>::size_type i = 0, + n = this->lines.size() - 1; + for( ; i < n; ++i ) + { + this->lines[i] = this->lines[i+1]; + } + + this->lines.pop_back(); + } } } #endif \ No newline at end of file diff --git a/Code/Game/DanBiasGame/GameClientState/GameState.cpp b/Code/Game/DanBiasGame/GameClientState/GameState.cpp index a1cdb32a..edcb5289 100644 --- a/Code/Game/DanBiasGame/GameClientState/GameState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/GameState.cpp @@ -49,39 +49,7 @@ bool GameState::Init(NetworkClient* nwClient) GameState::gameStateState GameState::LoadGame() { -// Oyster::Graphics::Definitions::Pointlight plight; -// plight.Pos = Float3(315.0f, 0.0f ,5.0f); -// plight.Color = Float3(0.9f,0.7f,0.2f); -// plight.Radius = 100.0f; -// plight.Bright = 0.9f; -// Oyster::Graphics::API::AddLight(plight); -// plight.Pos = Float3(10.0f,350.0f,5.0f); -// plight.Color = Float3(0.9f,0.7f,0.3f); -// plight.Radius = 200.0f; -// plight.Bright = 0.7f; -// Oyster::Graphics::API::AddLight(plight); -// plight.Pos = Float3(350.0f,350.0f,5.0f); -// plight.Color = Float3(0.9f,0.7f,0.3f); -// plight.Radius = 200.0f; -// plight.Bright = 0.7f; -// Oyster::Graphics::API::AddLight(plight); -// plight.Pos = Float3(10.0f,350.0f,350.0f); -// plight.Color = Float3(0.9f,0.7f,0.3f); -// plight.Radius = 200.0f; -// plight.Bright = 0.7f; -// Oyster::Graphics::API::AddLight(plight); -// plight.Pos = Float3(10.0f,-15.0f,5.0f); -// plight.Color = Float3(0.0f,0.0f,1.0f); -// plight.Radius = 50.0f; -// plight.Bright = 2.0f; -// -// Oyster::Graphics::API::AddLight(plight); -//// LoadModels(); -// InitCamera(Float3(0.0f,0.0f,20.0f)); -// // hardcoded objects -//// LoadModels(); -// Float3 startPos = Float3(0,0,20.0f); -// InitCamera(startPos); + return gameStateState_playing; } diff --git a/Code/Game/DanBiasGame/GameClientState/LanMenuState.cpp b/Code/Game/DanBiasGame/GameClientState/LanMenuState.cpp index a043d3bf..bffd8c8a 100644 --- a/Code/Game/DanBiasGame/GameClientState/LanMenuState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/LanMenuState.cpp @@ -11,6 +11,7 @@ #include "EventHandler\EventHandler.h" #include "Buttons\ButtonRectangle.h" +#include "Buttons\TextField.h" #include #include @@ -28,12 +29,13 @@ struct LanMenuState::MyData GameClientState::ClientState nextState; NetworkClient *nwClient; Graphics::API::Texture background; - EventButtonCollection button; - ::std::wstring connectIP; + EventButtonCollection guiElements; + + TextField *connectIP; unsigned short connectPort; } privData; -void OnButtonInteract_Connect( Oyster::Event::ButtonEvent& e ); +void OnButtonInteract_Connect( Oyster::Event::ButtonEvent& e ); LanMenuState::LanMenuState() {} @@ -52,16 +54,23 @@ bool LanMenuState::Init(Network::NetworkClient* nwClient) this->privData->background = Graphics::API::CreateTexture( L"grass_md.png" ); - // create buttons - ButtonRectangle *button; + // create guiElements + ButtonRectangle *guiElements; + //0.5f, 0.2f, 0.3f, 0.1f, + guiElements = new ButtonRectangle( L"earth_md.png", L"", Float3(1.0f), OnButtonInteract_Connect, this, Float3(0.5f, 0.2f, 0.5f), Float2(0.3f, 0.1f), ResizeAspectRatio_Width ); + this->privData->guiElements.AddButton( guiElements ); + + this->privData->connectIP = new TextField( L"earth_md.png", Float3(1.0f), this, Float3(0.1f, 0.2f, 0.5f), Float2(0.45f, 0.1f), ResizeAspectRatio_Width ); + this->privData->connectIP->ReserveLines( 1 ); + (*this->privData->connectIP)[0] = L"127.0.0.1"; + this->privData->connectIP->SetTextHeight( 0.1f ); + this->privData->connectIP->SetLineSpacing( 0.0f ); - button = new ButtonRectangle( L"earth_md.png", OnButtonInteract_Connect, this, 0.5f, 0.2f, 0.3f, 0.1f, true ); - this->privData->button.AddButton( button ); + this->privData->guiElements.AddButton( this->privData->connectIP ); - // bind button collection to the singleton eventhandler - EventHandler::Instance().AddCollection( &this->privData->button ); + // bind guiElements collection to the singleton eventhandler + EventHandler::Instance().AddCollection( &this->privData->guiElements ); - this->privData->connectIP = L"127.0.0.1"; this->privData->connectPort = 15151; return true; @@ -88,7 +97,10 @@ bool LanMenuState::Render( ) Graphics::API::StartGuiRender(); Graphics::API::RenderGuiElement( this->privData->background, Float2(0.5f), Float2(1.0f) ); - this->privData->button.Render(); + this->privData->guiElements.RenderTexture(); + + Graphics::API::StartTextRender(); + this->privData->guiElements.RenderText(); Graphics::API::EndFrame(); return true; @@ -106,7 +118,7 @@ void LanMenuState::ChangeState( ClientState next ) { case GameClientState::ClientState_Lobby: // attempt to connect to lobby - if( !this->privData->nwClient->Connect(this->privData->connectPort, this->privData->connectIP) ) + if( !this->privData->nwClient->Connect(this->privData->connectPort, (*this->privData->connectIP)[0]) ) return; break; default: break; @@ -115,7 +127,7 @@ void LanMenuState::ChangeState( ClientState next ) this->privData->nextState = next; } -void OnButtonInteract_Connect( Oyster::Event::ButtonEvent& e ) +void OnButtonInteract_Connect( Oyster::Event::ButtonEvent& e ) { switch( e.state ) { diff --git a/Code/Misc/EventHandler/IEventButton.h b/Code/Misc/EventHandler/IEventButton.h index 62044eb2..d0c754f9 100644 --- a/Code/Misc/EventHandler/IEventButton.h +++ b/Code/Misc/EventHandler/IEventButton.h @@ -33,7 +33,8 @@ namespace Oyster public: virtual ~IEventButton(){} - virtual void Render() = 0; + virtual void RenderTexture() = 0; + virtual void RenderText() = 0; virtual void Update(MouseInput& input) = 0; diff --git a/Code/Misc/Misc.vcxproj.user b/Code/Misc/Misc.vcxproj.user index 9a0b0ae0..3f030911 100644 --- a/Code/Misc/Misc.vcxproj.user +++ b/Code/Misc/Misc.vcxproj.user @@ -1,6 +1,6 @@  - true + false \ No newline at end of file From d4139e265e07714f3789546e40bdc3c76e00c4de Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Fri, 14 Feb 2014 09:46:17 +0100 Subject: [PATCH 40/50] MainState fix new compilation errors dealt with --- .../DanBiasGame/GameClientState/MainState.cpp | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/Code/Game/DanBiasGame/GameClientState/MainState.cpp b/Code/Game/DanBiasGame/GameClientState/MainState.cpp index c7fe78c8..771fc1ee 100644 --- a/Code/Game/DanBiasGame/GameClientState/MainState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/MainState.cpp @@ -28,9 +28,9 @@ struct MainState::MyData EventButtonCollection button; }; -void OnButtonInteract_Create( Oyster::Event::ButtonEvent& e ); -void OnButtonInteract_Join( Oyster::Event::ButtonEvent& e ); -void OnButtonInteract_Quit( Oyster::Event::ButtonEvent& e ); +void OnButtonInteract_Create( Oyster::Event::ButtonEvent& e ); +void OnButtonInteract_Join( Oyster::Event::ButtonEvent& e ); +void OnButtonInteract_Quit( Oyster::Event::ButtonEvent& e ); MainState::MainState(void) {} @@ -50,15 +50,15 @@ bool MainState::Init( NetworkClient* nwClient ) this->privData->background = Graphics::API::CreateTexture( L"grass_md.png" ); // create buttons - ButtonRectangle *button; + ButtonRectangle *button; - button = new ButtonRectangle( L"earth_md.png", OnButtonInteract_Create, this, 0.5f, 0.2f, 0.3f, 0.1f, true ); + button = new ButtonRectangle( L"earth_md.png", L"Create", Float3(1.0f), OnButtonInteract_Create, this, Float3(0.5f, 0.2f, 0.5f), Float2(0.3f, 0.1f), ResizeAspectRatio_Width ); this->privData->button.AddButton( button ); - button = new ButtonRectangle( L"skysphere_md.png", OnButtonInteract_Join, this, 0.5f, 0.4f, 0.3f, 0.1f, true ); + button = new ButtonRectangle( L"skysphere_md.png", L"Join", Float3(1.0f), OnButtonInteract_Join, this, Float3(0.5f, 0.4f, 0.5f), Float2(0.3f, 0.1f), ResizeAspectRatio_Width ); this->privData->button.AddButton( button ); - button = new ButtonRectangle( L"plane_texture_md.png", OnButtonInteract_Quit, this, 0.5f, 0.8f, 0.3f, 0.1f, true ); + button = new ButtonRectangle( L"plane_texture_md.png", L"Quit", Float3(1.0f), OnButtonInteract_Quit, this, Float3(0.5f, 0.8f, 0.5f), Float2(0.3f, 0.1f), ResizeAspectRatio_Width ); this->privData->button.AddButton( button ); // bind button collection to the singleton eventhandler @@ -87,7 +87,10 @@ bool MainState::Render() Graphics::API::StartGuiRender(); Graphics::API::RenderGuiElement( this->privData->background, Float2(0.5f), Float2(1.0f) ); - this->privData->button.Render(); + this->privData->button.RenderTexture(); + + Graphics::API::StartTextRender(); + this->privData->button.RenderText(); Graphics::API::EndFrame(); return true; @@ -111,7 +114,7 @@ void MainState::ChangeState( ClientState next ) this->privData->nextState = next; } -void OnButtonInteract_Create( Oyster::Event::ButtonEvent& e ) +void OnButtonInteract_Create( Oyster::Event::ButtonEvent& e ) { switch( e.state ) { @@ -122,7 +125,7 @@ void OnButtonInteract_Create( Oyster::Event::ButtonEvent& e ) } } -void OnButtonInteract_Join( Oyster::Event::ButtonEvent& e ) +void OnButtonInteract_Join( Oyster::Event::ButtonEvent& e ) { switch( e.state ) { @@ -133,7 +136,7 @@ void OnButtonInteract_Join( Oyster::Event::ButtonEvent& e ) } } -void OnButtonInteract_Quit( Oyster::Event::ButtonEvent& e ) +void OnButtonInteract_Quit( Oyster::Event::ButtonEvent& e ) { switch( e.state ) { From b9895f8c7fcf8a35cf3f561dccdb4c84f2a8f2ba Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Fri, 14 Feb 2014 09:54:05 +0100 Subject: [PATCH 41/50] All states fix All new compilation errors dealt with --- .../GameClientState/LanMenuState.cpp | 2 +- .../GameClientState/LobbyAdminState.cpp | 19 +++++++++++-------- .../GameClientState/LobbyState.cpp | 19 +++++++++++-------- .../DanBiasGame/GameClientState/MainState.cpp | 16 ++++++++-------- 4 files changed, 31 insertions(+), 25 deletions(-) diff --git a/Code/Game/DanBiasGame/GameClientState/LanMenuState.cpp b/Code/Game/DanBiasGame/GameClientState/LanMenuState.cpp index bffd8c8a..c4d2b41d 100644 --- a/Code/Game/DanBiasGame/GameClientState/LanMenuState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/LanMenuState.cpp @@ -57,7 +57,7 @@ bool LanMenuState::Init(Network::NetworkClient* nwClient) // create guiElements ButtonRectangle *guiElements; //0.5f, 0.2f, 0.3f, 0.1f, - guiElements = new ButtonRectangle( L"earth_md.png", L"", Float3(1.0f), OnButtonInteract_Connect, this, Float3(0.5f, 0.2f, 0.5f), Float2(0.3f, 0.1f), ResizeAspectRatio_Width ); + guiElements = new ButtonRectangle( L"earth_md.png", L"Connect", Float3(1.0f), OnButtonInteract_Connect, this, Float3(0.5f, 0.2f, 0.5f), Float2(0.3f, 0.1f), ResizeAspectRatio_Width ); this->privData->guiElements.AddButton( guiElements ); this->privData->connectIP = new TextField( L"earth_md.png", Float3(1.0f), this, Float3(0.1f, 0.2f, 0.5f), Float2(0.45f, 0.1f), ResizeAspectRatio_Width ); diff --git a/Code/Game/DanBiasGame/GameClientState/LobbyAdminState.cpp b/Code/Game/DanBiasGame/GameClientState/LobbyAdminState.cpp index e6e764ea..21afb54b 100644 --- a/Code/Game/DanBiasGame/GameClientState/LobbyAdminState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/LobbyAdminState.cpp @@ -23,10 +23,10 @@ struct LobbyAdminState::MyData GameClientState::ClientState nextState; NetworkClient *nwClient; Graphics::API::Texture background; - EventButtonCollection button; + EventButtonCollection guiElements; } privData; -void OnButtonInteract_Ready( Oyster::Event::ButtonEvent& e ); +void OnButtonInteract_Ready( Oyster::Event::ButtonEvent& e ); LobbyAdminState::LobbyAdminState(void) {} @@ -46,13 +46,13 @@ bool LobbyAdminState::Init(NetworkClient* nwClient) this->privData->background = Graphics::API::CreateTexture( L"grass_md.png" ); // create buttons - ButtonRectangle *button; + ButtonRectangle *button; - button = new ButtonRectangle( L"earth_md.png", OnButtonInteract_Ready, this, 0.5f, 0.2f, 0.3f, 0.1f, true ); - this->privData->button.AddButton( button ); + button = new ButtonRectangle( L"earth_md.png", L"Ready", Float3(1.0f), OnButtonInteract_Ready, this, Float3(0.5f, 0.2f, 0.5f), Float2(0.3f, 0.1f), ResizeAspectRatio_Width ); + this->privData->guiElements.AddButton( button ); // bind button collection to the singleton eventhandler - EventHandler::Instance().AddCollection( &this->privData->button ); + EventHandler::Instance().AddCollection( &this->privData->guiElements ); return true; } @@ -85,7 +85,10 @@ bool LobbyAdminState::Render( ) Graphics::API::StartGuiRender(); Graphics::API::RenderGuiElement( this->privData->background, Float2(0.5f), Float2(1.0f) ); - this->privData->button.Render(); + this->privData->guiElements.RenderTexture(); + + Graphics::API::StartTextRender(); + this->privData->guiElements.RenderText(); Graphics::API::EndFrame(); return true; @@ -139,7 +142,7 @@ void LobbyAdminState::DataRecieved( NetEvent& e ) +void OnButtonInteract_Ready( Oyster::Event::ButtonEvent& e ) { switch( e.state ) { diff --git a/Code/Game/DanBiasGame/GameClientState/LobbyState.cpp b/Code/Game/DanBiasGame/GameClientState/LobbyState.cpp index 77ec5a86..37f10f1d 100644 --- a/Code/Game/DanBiasGame/GameClientState/LobbyState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/LobbyState.cpp @@ -23,10 +23,10 @@ struct LobbyState::MyData GameClientState::ClientState nextState; NetworkClient *nwClient; Graphics::API::Texture background; - EventButtonCollection button; + EventButtonCollection guiElements; } privData; -void OnButtonInteract_Ready( Oyster::Event::ButtonEvent& e ); +void OnButtonInteract_Ready( Oyster::Event::ButtonEvent& e ); LobbyState::LobbyState(void) {} @@ -46,13 +46,13 @@ bool LobbyState::Init(NetworkClient* nwClient) this->privData->background = Graphics::API::CreateTexture( L"grass_md.png" ); // create buttons - ButtonRectangle *button; + ButtonRectangle *button; - button = new ButtonRectangle( L"earth_md.png", OnButtonInteract_Ready, this, 0.5f, 0.2f, 0.3f, 0.1f, true ); - this->privData->button.AddButton( button ); + button = new ButtonRectangle( L"earth_md.png", L"", Float3(1.0f), OnButtonInteract_Ready, this, Float3(0.5f, 0.2f, 0.5f), Float2(0.3f, 0.1f), ResizeAspectRatio_Width ); + this->privData->guiElements.AddButton( button ); // bind button collection to the singleton eventhandler - EventHandler::Instance().AddCollection( &this->privData->button ); + EventHandler::Instance().AddCollection( &this->privData->guiElements ); return true; } @@ -85,7 +85,10 @@ bool LobbyState::Render( ) Graphics::API::StartGuiRender(); Graphics::API::RenderGuiElement( this->privData->background, Float2(0.5f), Float2(1.0f) ); - this->privData->button.Render(); + this->privData->guiElements.RenderTexture(); + + Graphics::API::StartTextRender(); + this->privData->guiElements.RenderText(); Graphics::API::EndFrame(); return true; @@ -139,7 +142,7 @@ void LobbyState::DataRecieved( NetEvent& e ) +void OnButtonInteract_Ready( Oyster::Event::ButtonEvent& e ) { switch( e.state ) { diff --git a/Code/Game/DanBiasGame/GameClientState/MainState.cpp b/Code/Game/DanBiasGame/GameClientState/MainState.cpp index 771fc1ee..dc6f88b3 100644 --- a/Code/Game/DanBiasGame/GameClientState/MainState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/MainState.cpp @@ -25,7 +25,7 @@ struct MainState::MyData GameClientState::ClientState nextState; NetworkClient *nwClient; Graphics::API::Texture background; - EventButtonCollection button; + EventButtonCollection guiElements; }; void OnButtonInteract_Create( Oyster::Event::ButtonEvent& e ); @@ -53,16 +53,16 @@ bool MainState::Init( NetworkClient* nwClient ) ButtonRectangle *button; button = new ButtonRectangle( L"earth_md.png", L"Create", Float3(1.0f), OnButtonInteract_Create, this, Float3(0.5f, 0.2f, 0.5f), Float2(0.3f, 0.1f), ResizeAspectRatio_Width ); - this->privData->button.AddButton( button ); + this->privData->guiElements.AddButton( button ); button = new ButtonRectangle( L"skysphere_md.png", L"Join", Float3(1.0f), OnButtonInteract_Join, this, Float3(0.5f, 0.4f, 0.5f), Float2(0.3f, 0.1f), ResizeAspectRatio_Width ); - this->privData->button.AddButton( button ); + this->privData->guiElements.AddButton( button ); button = new ButtonRectangle( L"plane_texture_md.png", L"Quit", Float3(1.0f), OnButtonInteract_Quit, this, Float3(0.5f, 0.8f, 0.5f), Float2(0.3f, 0.1f), ResizeAspectRatio_Width ); - this->privData->button.AddButton( button ); + this->privData->guiElements.AddButton( button ); // bind button collection to the singleton eventhandler - EventHandler::Instance().AddCollection( &this->privData->button ); + EventHandler::Instance().AddCollection( &this->privData->guiElements ); return true; } @@ -87,10 +87,10 @@ bool MainState::Render() Graphics::API::StartGuiRender(); Graphics::API::RenderGuiElement( this->privData->background, Float2(0.5f), Float2(1.0f) ); - this->privData->button.RenderTexture(); + this->privData->guiElements.RenderTexture(); Graphics::API::StartTextRender(); - this->privData->button.RenderText(); + this->privData->guiElements.RenderText(); Graphics::API::EndFrame(); return true; @@ -101,7 +101,7 @@ bool MainState::Release() if( this->privData ) { Graphics::API::DeleteTexture( this->privData->background ); // TODO: @todo bug caught when exiting by X - EventHandler::Instance().ReleaseCollection( &this->privData->button ); + EventHandler::Instance().ReleaseCollection( &this->privData->guiElements ); this->privData = NULL; // button collection will be autoreleased from EventHandler From 5eec9fdd758d195660c6795f7e68dd5d8aa7a34f Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Fri, 14 Feb 2014 10:11:39 +0100 Subject: [PATCH 42/50] compilation fix --- Code/Game/GameLogic/Portal.cpp | 5 ----- 1 file changed, 5 deletions(-) diff --git a/Code/Game/GameLogic/Portal.cpp b/Code/Game/GameLogic/Portal.cpp index 66671a8d..55ca7c90 100644 --- a/Code/Game/GameLogic/Portal.cpp +++ b/Code/Game/GameLogic/Portal.cpp @@ -9,13 +9,8 @@ Portal::Portal(void) this->portalExit = Float3(0,0,0); } -<<<<<<< HEAD -Portal::Portal(Oyster::Physics::ICustomBody *rigidBody, void (*collisionFuncAfter)(Oyster::Physics::ICustomBody *proto,Oyster::Physics::ICustomBody *deuter,Oyster::Math::Float kineticEnergyLoss), ObjectSpecialType type, Oyster::Math::Float3 portalExit) - :StaticObject(rigidBody, collisionFuncAfter, type) -======= Portal::Portal(Oyster::Physics::ICustomBody *rigidBody, void (*EventOnCollision)(Oyster::Physics::ICustomBody *proto,Oyster::Physics::ICustomBody *deuter,Oyster::Math::Float kineticEnergyLoss), ObjectSpecialType type,int objectID ,Oyster::Math::Float3 portalExit) :StaticObject(rigidBody, EventOnCollision, type, objectID) ->>>>>>> GL - fixed constructors to ease creation of objects, also fixed weapon crash on destruction { this->portalExit = portalExit; } From 76f0b712b17d90d84792a5fedd9ab9103dcae797 Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Fri, 14 Feb 2014 10:32:25 +0100 Subject: [PATCH 43/50] Revert this added printout of mouse state values in MainState --- Code/Game/DanBiasGame/GameClientState/MainState.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Code/Game/DanBiasGame/GameClientState/MainState.cpp b/Code/Game/DanBiasGame/GameClientState/MainState.cpp index dc6f88b3..3c82fc05 100644 --- a/Code/Game/DanBiasGame/GameClientState/MainState.cpp +++ b/Code/Game/DanBiasGame/GameClientState/MainState.cpp @@ -67,6 +67,8 @@ bool MainState::Init( NetworkClient* nwClient ) return true; } +float mouseX, mouseY; // debug test + GameClientState::ClientState MainState::Update(float deltaTime, InputClass* KeyInput) { MouseInput mouseState; @@ -78,6 +80,9 @@ GameClientState::ClientState MainState::Update(float deltaTime, InputClass* KeyI EventHandler::Instance().Update( mouseState ); + mouseX = mouseState.x; // debug test + mouseY = mouseState.y; // debug test + return this->privData->nextState; } @@ -92,6 +97,9 @@ bool MainState::Render() Graphics::API::StartTextRender(); this->privData->guiElements.RenderText(); + Graphics::API::RenderText( ::std::to_wstring(mouseX), Float2(0.2f, 0.5f), Float2(0.2f, 0.05f) ); // debug test + Graphics::API::RenderText( ::std::to_wstring(mouseY), Float2(0.5f, 0.5f), Float2(0.2f, 0.05f) ); // debug test + Graphics::API::EndFrame(); return true; } From 4f849bddb3250fa3cd1fb590510a71b3d61a384b Mon Sep 17 00:00:00 2001 From: lanariel Date: Fri, 14 Feb 2014 10:46:23 +0100 Subject: [PATCH 44/50] Folder and Launcher Added --- Code/DanBias.sln | 109 ++++++++++++++++ Code/StandAloneLauncher/App.config | 6 + Code/StandAloneLauncher/Form1.Designer.cs | 47 +++++++ Code/StandAloneLauncher/Form1.cs | 20 +++ Code/StandAloneLauncher/Form1.resx | 120 ++++++++++++++++++ Code/StandAloneLauncher/Program.cs | 22 ++++ .../Properties/AssemblyInfo.cs | 36 ++++++ .../Properties/Resources.Designer.cs | 71 +++++++++++ .../Properties/Resources.resx | 117 +++++++++++++++++ .../Properties/Settings.Designer.cs | 30 +++++ .../Properties/Settings.settings | 7 + .../StandAloneLauncher.csproj | 88 +++++++++++++ 12 files changed, 673 insertions(+) create mode 100644 Code/StandAloneLauncher/App.config create mode 100644 Code/StandAloneLauncher/Form1.Designer.cs create mode 100644 Code/StandAloneLauncher/Form1.cs create mode 100644 Code/StandAloneLauncher/Form1.resx create mode 100644 Code/StandAloneLauncher/Program.cs create mode 100644 Code/StandAloneLauncher/Properties/AssemblyInfo.cs create mode 100644 Code/StandAloneLauncher/Properties/Resources.Designer.cs create mode 100644 Code/StandAloneLauncher/Properties/Resources.resx create mode 100644 Code/StandAloneLauncher/Properties/Settings.Designer.cs create mode 100644 Code/StandAloneLauncher/Properties/Settings.settings create mode 100644 Code/StandAloneLauncher/StandAloneLauncher.csproj diff --git a/Code/DanBias.sln b/Code/DanBias.sln index a8d583d8..6718ce40 100644 --- a/Code/DanBias.sln +++ b/Code/DanBias.sln @@ -45,460 +45,568 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aDanBiasGameLauncher", "Gam EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Physics", "Physics", "{0D86E569-9C74-47F0-BDB2-390C0C9A084B}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Stand Alone Server", "Stand Alone Server", "{9CCCBB44-303F-44AE-B99C-4165AD894DBD}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StandAloneLauncher", "StandAloneLauncher\StandAloneLauncher.csproj", "{604A12A7-07BF-4482-BDF3-7101C811F121}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU Debug|Mixed Platforms = Debug|Mixed Platforms Debug|Win32 = Debug|Win32 Debug|x64 = Debug|x64 + MinSizeRel|Any CPU = MinSizeRel|Any CPU MinSizeRel|Mixed Platforms = MinSizeRel|Mixed Platforms MinSizeRel|Win32 = MinSizeRel|Win32 MinSizeRel|x64 = MinSizeRel|x64 + Release|Any CPU = Release|Any CPU Release|Mixed Platforms = Release|Mixed Platforms Release|Win32 = Release|Win32 Release|x64 = Release|x64 + RelWithDebInfo|Any CPU = RelWithDebInfo|Any CPU RelWithDebInfo|Mixed Platforms = RelWithDebInfo|Mixed Platforms RelWithDebInfo|Win32 = RelWithDebInfo|Win32 RelWithDebInfo|x64 = RelWithDebInfo|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution + {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|Any CPU.ActiveCfg = Debug|Win32 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|Win32.ActiveCfg = Debug|Win32 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|Win32.Build.0 = Debug|Win32 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|x64.ActiveCfg = Debug|x64 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Debug|x64.Build.0 = Debug|x64 + {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.MinSizeRel|Any CPU.ActiveCfg = Release|Win32 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.MinSizeRel|Win32.ActiveCfg = Release|Win32 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.MinSizeRel|Win32.Build.0 = Release|Win32 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.MinSizeRel|x64.ActiveCfg = Release|x64 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.MinSizeRel|x64.Build.0 = Release|x64 + {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Release|Any CPU.ActiveCfg = Release|Win32 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Release|Mixed Platforms.ActiveCfg = Release|Win32 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Release|Mixed Platforms.Build.0 = Release|Win32 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Release|Win32.ActiveCfg = Release|Win32 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Release|Win32.Build.0 = Release|Win32 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Release|x64.ActiveCfg = Release|x64 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.Release|x64.Build.0 = Release|x64 + {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Win32 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.RelWithDebInfo|Win32.Build.0 = Release|Win32 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.RelWithDebInfo|x64.ActiveCfg = Release|x64 {0EC83E64-230E-48EF-B08C-6AC9651B4F82}.RelWithDebInfo|x64.Build.0 = Release|x64 + {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Debug|Any CPU.ActiveCfg = Debug|Win32 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Debug|Win32.ActiveCfg = Debug|Win32 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Debug|Win32.Build.0 = Debug|Win32 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Debug|x64.ActiveCfg = Debug|x64 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Debug|x64.Build.0 = Debug|x64 + {F10CBC03-9809-4CBA-95D8-327C287B18EE}.MinSizeRel|Any CPU.ActiveCfg = Release|Win32 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.MinSizeRel|Win32.ActiveCfg = Release|Win32 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.MinSizeRel|Win32.Build.0 = Release|Win32 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.MinSizeRel|x64.ActiveCfg = Release|x64 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.MinSizeRel|x64.Build.0 = Release|x64 + {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Release|Any CPU.ActiveCfg = Release|Win32 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Release|Mixed Platforms.ActiveCfg = Release|Win32 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Release|Mixed Platforms.Build.0 = Release|Win32 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Release|Win32.ActiveCfg = Release|Win32 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Release|Win32.Build.0 = Release|Win32 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Release|x64.ActiveCfg = Release|x64 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.Release|x64.Build.0 = Release|x64 + {F10CBC03-9809-4CBA-95D8-327C287B18EE}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Win32 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.RelWithDebInfo|Win32.Build.0 = Release|Win32 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.RelWithDebInfo|x64.ActiveCfg = Release|x64 {F10CBC03-9809-4CBA-95D8-327C287B18EE}.RelWithDebInfo|x64.Build.0 = Release|x64 + {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Debug|Any CPU.ActiveCfg = Debug|Win32 {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Debug|Win32.ActiveCfg = Debug|Win32 {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Debug|Win32.Build.0 = Debug|Win32 {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Debug|x64.ActiveCfg = Debug|x64 {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Debug|x64.Build.0 = Debug|x64 + {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.MinSizeRel|Any CPU.ActiveCfg = Release|Win32 {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.MinSizeRel|Win32.ActiveCfg = Release|Win32 {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.MinSizeRel|Win32.Build.0 = Release|Win32 {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.MinSizeRel|x64.ActiveCfg = Release|x64 {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.MinSizeRel|x64.Build.0 = Release|x64 + {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Release|Any CPU.ActiveCfg = Release|Win32 {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Release|Mixed Platforms.ActiveCfg = Release|Win32 {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Release|Mixed Platforms.Build.0 = Release|Win32 {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Release|Win32.ActiveCfg = Release|Win32 {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Release|Win32.Build.0 = Release|Win32 {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Release|x64.ActiveCfg = Release|x64 {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.Release|x64.Build.0 = Release|x64 + {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Win32 {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.RelWithDebInfo|Win32.Build.0 = Release|Win32 {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.RelWithDebInfo|x64.ActiveCfg = Release|x64 {4285BD3F-3C6C-4670-B7AF-A29AFEF5F6A8}.RelWithDebInfo|x64.Build.0 = Release|x64 + {34D6295A-00DD-4B1A-8258-97DA2818EC26}.Debug|Any CPU.ActiveCfg = Debug|Win32 {34D6295A-00DD-4B1A-8258-97DA2818EC26}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 {34D6295A-00DD-4B1A-8258-97DA2818EC26}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {34D6295A-00DD-4B1A-8258-97DA2818EC26}.Debug|Win32.ActiveCfg = Debug|Win32 {34D6295A-00DD-4B1A-8258-97DA2818EC26}.Debug|Win32.Build.0 = Debug|Win32 {34D6295A-00DD-4B1A-8258-97DA2818EC26}.Debug|x64.ActiveCfg = Debug|x64 {34D6295A-00DD-4B1A-8258-97DA2818EC26}.Debug|x64.Build.0 = Debug|x64 + {34D6295A-00DD-4B1A-8258-97DA2818EC26}.MinSizeRel|Any CPU.ActiveCfg = Release|Win32 {34D6295A-00DD-4B1A-8258-97DA2818EC26}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 {34D6295A-00DD-4B1A-8258-97DA2818EC26}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 {34D6295A-00DD-4B1A-8258-97DA2818EC26}.MinSizeRel|Win32.ActiveCfg = Release|Win32 {34D6295A-00DD-4B1A-8258-97DA2818EC26}.MinSizeRel|Win32.Build.0 = Release|Win32 {34D6295A-00DD-4B1A-8258-97DA2818EC26}.MinSizeRel|x64.ActiveCfg = Release|x64 {34D6295A-00DD-4B1A-8258-97DA2818EC26}.MinSizeRel|x64.Build.0 = Release|x64 + {34D6295A-00DD-4B1A-8258-97DA2818EC26}.Release|Any CPU.ActiveCfg = Release|Win32 {34D6295A-00DD-4B1A-8258-97DA2818EC26}.Release|Mixed Platforms.ActiveCfg = Release|Win32 {34D6295A-00DD-4B1A-8258-97DA2818EC26}.Release|Mixed Platforms.Build.0 = Release|Win32 {34D6295A-00DD-4B1A-8258-97DA2818EC26}.Release|Win32.ActiveCfg = Release|Win32 {34D6295A-00DD-4B1A-8258-97DA2818EC26}.Release|Win32.Build.0 = Release|Win32 {34D6295A-00DD-4B1A-8258-97DA2818EC26}.Release|x64.ActiveCfg = Release|x64 {34D6295A-00DD-4B1A-8258-97DA2818EC26}.Release|x64.Build.0 = Release|x64 + {34D6295A-00DD-4B1A-8258-97DA2818EC26}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Win32 {34D6295A-00DD-4B1A-8258-97DA2818EC26}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 {34D6295A-00DD-4B1A-8258-97DA2818EC26}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 {34D6295A-00DD-4B1A-8258-97DA2818EC26}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 {34D6295A-00DD-4B1A-8258-97DA2818EC26}.RelWithDebInfo|Win32.Build.0 = Release|Win32 {34D6295A-00DD-4B1A-8258-97DA2818EC26}.RelWithDebInfo|x64.ActiveCfg = Release|x64 {34D6295A-00DD-4B1A-8258-97DA2818EC26}.RelWithDebInfo|x64.Build.0 = Release|x64 + {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Debug|Any CPU.ActiveCfg = Debug|Win32 {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Debug|Win32.ActiveCfg = Debug|Win32 {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Debug|Win32.Build.0 = Debug|Win32 {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Debug|x64.ActiveCfg = Debug|x64 {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Debug|x64.Build.0 = Debug|x64 + {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.MinSizeRel|Any CPU.ActiveCfg = Release|Win32 {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.MinSizeRel|Win32.ActiveCfg = Release|Win32 {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.MinSizeRel|Win32.Build.0 = Release|Win32 {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.MinSizeRel|x64.ActiveCfg = Release|x64 {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.MinSizeRel|x64.Build.0 = Release|x64 + {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Release|Any CPU.ActiveCfg = Release|Win32 {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Release|Mixed Platforms.ActiveCfg = Release|Win32 {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Release|Mixed Platforms.Build.0 = Release|Win32 {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Release|Win32.ActiveCfg = Release|Win32 {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Release|Win32.Build.0 = Release|Win32 {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Release|x64.ActiveCfg = Release|x64 {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.Release|x64.Build.0 = Release|x64 + {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Win32 {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.RelWithDebInfo|Win32.Build.0 = Release|Win32 {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.RelWithDebInfo|x64.ActiveCfg = Release|x64 {35AEA3C0-E0A7-4E1E-88CD-514AA5A442B1}.RelWithDebInfo|x64.Build.0 = Release|x64 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Debug|Any CPU.ActiveCfg = Debug|Win32 {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Debug|Win32.ActiveCfg = Debug|Win32 {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Debug|Win32.Build.0 = Debug|Win32 {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Debug|x64.ActiveCfg = Debug|x64 {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Debug|x64.Build.0 = Debug|x64 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.MinSizeRel|Any CPU.ActiveCfg = Release|Win32 {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.MinSizeRel|Win32.ActiveCfg = Release|Win32 {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.MinSizeRel|Win32.Build.0 = Release|Win32 {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.MinSizeRel|x64.ActiveCfg = Release|x64 {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.MinSizeRel|x64.Build.0 = Release|x64 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Release|Any CPU.ActiveCfg = Release|Win32 {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Release|Mixed Platforms.ActiveCfg = Release|Win32 {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Release|Mixed Platforms.Build.0 = Release|Win32 {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Release|Win32.ActiveCfg = Release|Win32 {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Release|Win32.Build.0 = Release|Win32 {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Release|x64.ActiveCfg = Release|x64 {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.Release|x64.Build.0 = Release|x64 + {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Win32 {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.RelWithDebInfo|Win32.Build.0 = Release|Win32 {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.RelWithDebInfo|x64.ActiveCfg = Release|x64 {7E3990D2-3D94-465C-B58D-64A74B3ECF9B}.RelWithDebInfo|x64.Build.0 = Release|x64 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|Any CPU.ActiveCfg = Debug|Win32 {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|Win32.ActiveCfg = Debug|Win32 {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|Win32.Build.0 = Debug|Win32 {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|x64.ActiveCfg = Debug|x64 {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Debug|x64.Build.0 = Debug|x64 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.MinSizeRel|Any CPU.ActiveCfg = Release|Win32 {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.MinSizeRel|Win32.ActiveCfg = Release|Win32 {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.MinSizeRel|Win32.Build.0 = Release|Win32 {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.MinSizeRel|x64.ActiveCfg = Release|x64 {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.MinSizeRel|x64.Build.0 = Release|x64 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Release|Any CPU.ActiveCfg = Release|Win32 {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Release|Mixed Platforms.ActiveCfg = Release|Win32 {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Release|Mixed Platforms.Build.0 = Release|Win32 {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Release|Win32.ActiveCfg = Release|Win32 {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Release|Win32.Build.0 = Release|Win32 {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Release|x64.ActiveCfg = Release|x64 {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.Release|x64.Build.0 = Release|x64 + {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Win32 {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.RelWithDebInfo|Win32.Build.0 = Release|Win32 {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.RelWithDebInfo|x64.ActiveCfg = Release|x64 {2EC4DDED-8F75-4C86-A10B-E1E8EB29F3EE}.RelWithDebInfo|x64.Build.0 = Release|x64 + {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|Any CPU.ActiveCfg = Debug|Win32 {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|Win32.ActiveCfg = Debug|Win32 {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|Win32.Build.0 = Debug|Win32 {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|x64.ActiveCfg = Debug|x64 {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Debug|x64.Build.0 = Debug|x64 + {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.MinSizeRel|Any CPU.ActiveCfg = Release|Win32 {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.MinSizeRel|Win32.ActiveCfg = Release|Win32 {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.MinSizeRel|x64.ActiveCfg = Release|x64 + {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Release|Any CPU.ActiveCfg = Release|Win32 {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Release|Mixed Platforms.ActiveCfg = Release|Win32 {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Release|Mixed Platforms.Build.0 = Release|Win32 {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Release|Win32.ActiveCfg = Release|Win32 {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Release|Win32.Build.0 = Release|Win32 {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Release|x64.ActiveCfg = Release|x64 {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.Release|x64.Build.0 = Release|x64 + {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Win32 {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 {838B25C2-D19E-49FE-8CB0-9A977CA3C7E8}.RelWithDebInfo|x64.ActiveCfg = Release|x64 + {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|Any CPU.ActiveCfg = Debug|Win32 {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|Win32.ActiveCfg = Debug|Win32 {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|Win32.Build.0 = Debug|Win32 {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|x64.ActiveCfg = Debug|x64 {6A066806-F43F-4B31-A4E3-57179674F460}.Debug|x64.Build.0 = Debug|x64 + {6A066806-F43F-4B31-A4E3-57179674F460}.MinSizeRel|Any CPU.ActiveCfg = Release|Win32 {6A066806-F43F-4B31-A4E3-57179674F460}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 {6A066806-F43F-4B31-A4E3-57179674F460}.MinSizeRel|Win32.ActiveCfg = Release|Win32 {6A066806-F43F-4B31-A4E3-57179674F460}.MinSizeRel|x64.ActiveCfg = Release|x64 + {6A066806-F43F-4B31-A4E3-57179674F460}.Release|Any CPU.ActiveCfg = Release|Win32 {6A066806-F43F-4B31-A4E3-57179674F460}.Release|Mixed Platforms.ActiveCfg = Release|Win32 {6A066806-F43F-4B31-A4E3-57179674F460}.Release|Mixed Platforms.Build.0 = Release|Win32 {6A066806-F43F-4B31-A4E3-57179674F460}.Release|Win32.ActiveCfg = Release|Win32 {6A066806-F43F-4B31-A4E3-57179674F460}.Release|Win32.Build.0 = Release|Win32 {6A066806-F43F-4B31-A4E3-57179674F460}.Release|x64.ActiveCfg = Release|x64 {6A066806-F43F-4B31-A4E3-57179674F460}.Release|x64.Build.0 = Release|x64 + {6A066806-F43F-4B31-A4E3-57179674F460}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Win32 {6A066806-F43F-4B31-A4E3-57179674F460}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 {6A066806-F43F-4B31-A4E3-57179674F460}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 {6A066806-F43F-4B31-A4E3-57179674F460}.RelWithDebInfo|x64.ActiveCfg = Release|x64 + {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|Any CPU.ActiveCfg = Debug|Win32 {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|Win32.ActiveCfg = Debug|Win32 {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|Win32.Build.0 = Debug|Win32 {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|x64.ActiveCfg = Debug|x64 {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Debug|x64.Build.0 = Debug|x64 + {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.MinSizeRel|Any CPU.ActiveCfg = Release|Win32 {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.MinSizeRel|Win32.ActiveCfg = Release|Win32 {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.MinSizeRel|x64.ActiveCfg = Release|x64 + {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Release|Any CPU.ActiveCfg = Release|Win32 {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Release|Mixed Platforms.ActiveCfg = Release|Win32 {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Release|Mixed Platforms.Build.0 = Release|Win32 {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Release|Win32.ActiveCfg = Release|Win32 {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Release|Win32.Build.0 = Release|Win32 {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Release|x64.ActiveCfg = Release|x64 {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.Release|x64.Build.0 = Release|x64 + {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Win32 {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 {C5AA09D0-6594-4CD3-BD92-1D380C7B3B50}.RelWithDebInfo|x64.ActiveCfg = Release|x64 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Debug|Any CPU.ActiveCfg = Debug|Win32 {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Debug|Win32.ActiveCfg = Debug|Win32 {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Debug|Win32.Build.0 = Debug|Win32 {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Debug|x64.ActiveCfg = Debug|x64 {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Debug|x64.Build.0 = Debug|x64 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.MinSizeRel|Any CPU.ActiveCfg = Release|Win32 {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.MinSizeRel|Win32.ActiveCfg = Release|Win32 {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.MinSizeRel|Win32.Build.0 = Release|Win32 {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.MinSizeRel|x64.ActiveCfg = Release|x64 {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.MinSizeRel|x64.Build.0 = Release|x64 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Release|Any CPU.ActiveCfg = Release|Win32 {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Release|Mixed Platforms.ActiveCfg = Release|Win32 {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Release|Mixed Platforms.Build.0 = Release|Win32 {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Release|Win32.ActiveCfg = Release|Win32 {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Release|Win32.Build.0 = Release|Win32 {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Release|x64.ActiveCfg = Release|x64 {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.Release|x64.Build.0 = Release|x64 + {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Win32 {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.RelWithDebInfo|Win32.Build.0 = Release|Win32 {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.RelWithDebInfo|x64.ActiveCfg = Release|x64 {104FA3E9-94D9-4E1D-A941-28A03BC8A095}.RelWithDebInfo|x64.Build.0 = Release|x64 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.Debug|Any CPU.ActiveCfg = Debug|Win32 {2A1BC987-AF42-4500-802D-89CD32FC1309}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 {2A1BC987-AF42-4500-802D-89CD32FC1309}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {2A1BC987-AF42-4500-802D-89CD32FC1309}.Debug|Win32.ActiveCfg = Debug|Win32 {2A1BC987-AF42-4500-802D-89CD32FC1309}.Debug|Win32.Build.0 = Debug|Win32 {2A1BC987-AF42-4500-802D-89CD32FC1309}.Debug|x64.ActiveCfg = Debug|x64 {2A1BC987-AF42-4500-802D-89CD32FC1309}.Debug|x64.Build.0 = Debug|x64 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.MinSizeRel|Any CPU.ActiveCfg = Release|Win32 {2A1BC987-AF42-4500-802D-89CD32FC1309}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 {2A1BC987-AF42-4500-802D-89CD32FC1309}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 {2A1BC987-AF42-4500-802D-89CD32FC1309}.MinSizeRel|Win32.ActiveCfg = Release|Win32 {2A1BC987-AF42-4500-802D-89CD32FC1309}.MinSizeRel|Win32.Build.0 = Release|Win32 {2A1BC987-AF42-4500-802D-89CD32FC1309}.MinSizeRel|x64.ActiveCfg = Release|x64 {2A1BC987-AF42-4500-802D-89CD32FC1309}.MinSizeRel|x64.Build.0 = Release|x64 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.Release|Any CPU.ActiveCfg = Release|Win32 {2A1BC987-AF42-4500-802D-89CD32FC1309}.Release|Mixed Platforms.ActiveCfg = Release|Win32 {2A1BC987-AF42-4500-802D-89CD32FC1309}.Release|Mixed Platforms.Build.0 = Release|Win32 {2A1BC987-AF42-4500-802D-89CD32FC1309}.Release|Win32.ActiveCfg = Release|Win32 {2A1BC987-AF42-4500-802D-89CD32FC1309}.Release|Win32.Build.0 = Release|Win32 {2A1BC987-AF42-4500-802D-89CD32FC1309}.Release|x64.ActiveCfg = Release|x64 {2A1BC987-AF42-4500-802D-89CD32FC1309}.Release|x64.Build.0 = Release|x64 + {2A1BC987-AF42-4500-802D-89CD32FC1309}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Win32 {2A1BC987-AF42-4500-802D-89CD32FC1309}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 {2A1BC987-AF42-4500-802D-89CD32FC1309}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 {2A1BC987-AF42-4500-802D-89CD32FC1309}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 {2A1BC987-AF42-4500-802D-89CD32FC1309}.RelWithDebInfo|Win32.Build.0 = Release|Win32 {2A1BC987-AF42-4500-802D-89CD32FC1309}.RelWithDebInfo|x64.ActiveCfg = Release|x64 {2A1BC987-AF42-4500-802D-89CD32FC1309}.RelWithDebInfo|x64.Build.0 = Release|x64 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Debug|Any CPU.ActiveCfg = Debug|Win32 {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Debug|Win32.ActiveCfg = Debug|Win32 {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Debug|Win32.Build.0 = Debug|Win32 {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Debug|x64.ActiveCfg = Debug|x64 {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Debug|x64.Build.0 = Debug|x64 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.MinSizeRel|Any CPU.ActiveCfg = Release|Win32 {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.MinSizeRel|Win32.ActiveCfg = Release|Win32 {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.MinSizeRel|Win32.Build.0 = Release|Win32 {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.MinSizeRel|x64.ActiveCfg = Release|x64 {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.MinSizeRel|x64.Build.0 = Release|x64 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Release|Any CPU.ActiveCfg = Release|Win32 {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Release|Mixed Platforms.ActiveCfg = Release|Win32 {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Release|Mixed Platforms.Build.0 = Release|Win32 {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Release|Win32.ActiveCfg = Release|Win32 {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Release|Win32.Build.0 = Release|Win32 {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Release|x64.ActiveCfg = Release|x64 {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.Release|x64.Build.0 = Release|x64 + {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Win32 {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.RelWithDebInfo|Win32.Build.0 = Release|Win32 {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.RelWithDebInfo|x64.ActiveCfg = Release|x64 {B1195BB9-B3A5-47F0-906C-8DEA384D1520}.RelWithDebInfo|x64.Build.0 = Release|x64 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Debug|Any CPU.ActiveCfg = Debug|Win32 {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Debug|Win32.ActiveCfg = Debug|Win32 {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Debug|Win32.Build.0 = Debug|Win32 {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Debug|x64.ActiveCfg = Debug|x64 {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Debug|x64.Build.0 = Debug|x64 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.MinSizeRel|Any CPU.ActiveCfg = Release|Win32 {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.MinSizeRel|Win32.ActiveCfg = Release|Win32 {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.MinSizeRel|Win32.Build.0 = Release|Win32 {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.MinSizeRel|x64.ActiveCfg = Release|x64 {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.MinSizeRel|x64.Build.0 = Release|x64 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Release|Any CPU.ActiveCfg = Release|Win32 {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Release|Mixed Platforms.ActiveCfg = Release|Win32 {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Release|Mixed Platforms.Build.0 = Release|Win32 {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Release|Win32.ActiveCfg = Release|Win32 {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Release|Win32.Build.0 = Release|Win32 {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Release|x64.ActiveCfg = Release|x64 {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.Release|x64.Build.0 = Release|x64 + {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Win32 {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.RelWithDebInfo|Win32.Build.0 = Release|Win32 {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.RelWithDebInfo|x64.ActiveCfg = Release|x64 {8690FDDF-C5B7-4C42-A337-BD5243F29B85}.RelWithDebInfo|x64.Build.0 = Release|x64 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Debug|Any CPU.ActiveCfg = Debug|Win32 {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Debug|Win32.ActiveCfg = Debug|Win32 {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Debug|Win32.Build.0 = Debug|Win32 {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Debug|x64.ActiveCfg = Debug|x64 {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Debug|x64.Build.0 = Debug|x64 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.MinSizeRel|Any CPU.ActiveCfg = Release|Win32 {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.MinSizeRel|Win32.ActiveCfg = Release|Win32 {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.MinSizeRel|Win32.Build.0 = Release|Win32 {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.MinSizeRel|x64.ActiveCfg = Release|x64 {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.MinSizeRel|x64.Build.0 = Release|x64 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Release|Any CPU.ActiveCfg = Release|Win32 {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Release|Mixed Platforms.ActiveCfg = Release|Win32 {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Release|Mixed Platforms.Build.0 = Release|Win32 {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Release|Win32.ActiveCfg = Release|Win32 {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Release|Win32.Build.0 = Release|Win32 {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Release|x64.ActiveCfg = Release|x64 {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.Release|x64.Build.0 = Release|x64 + {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Win32 {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.RelWithDebInfo|Win32.Build.0 = Release|Win32 {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.RelWithDebInfo|x64.ActiveCfg = Release|x64 {460D625F-2AC9-4559-B809-0BA89CEAEDF4}.RelWithDebInfo|x64.Build.0 = Release|x64 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Debug|Any CPU.ActiveCfg = Debug|Win32 {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Debug|Win32.ActiveCfg = Debug|Win32 {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Debug|Win32.Build.0 = Debug|Win32 {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Debug|x64.ActiveCfg = Debug|x64 {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Debug|x64.Build.0 = Debug|x64 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.MinSizeRel|Any CPU.ActiveCfg = Release|Win32 {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.MinSizeRel|Win32.ActiveCfg = Release|Win32 {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.MinSizeRel|Win32.Build.0 = Release|Win32 {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.MinSizeRel|x64.ActiveCfg = Release|x64 {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.MinSizeRel|x64.Build.0 = Release|x64 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Release|Any CPU.ActiveCfg = Release|Win32 {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Release|Mixed Platforms.ActiveCfg = Release|Win32 {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Release|Mixed Platforms.Build.0 = Release|Win32 {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Release|Win32.ActiveCfg = Release|Win32 {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Release|Win32.Build.0 = Release|Win32 {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Release|x64.ActiveCfg = Release|x64 {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.Release|x64.Build.0 = Release|x64 + {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Win32 {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.RelWithDebInfo|Win32.Build.0 = Release|Win32 {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.RelWithDebInfo|x64.ActiveCfg = Release|x64 {DA2AA800-ED64-4649-8B3B-E7F1E3968B78}.RelWithDebInfo|x64.Build.0 = Release|x64 + {060B1890-CBF3-4808-BA99-A4776222093B}.Debug|Any CPU.ActiveCfg = Debug|Win32 {060B1890-CBF3-4808-BA99-A4776222093B}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 {060B1890-CBF3-4808-BA99-A4776222093B}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {060B1890-CBF3-4808-BA99-A4776222093B}.Debug|Win32.ActiveCfg = Debug|Win32 {060B1890-CBF3-4808-BA99-A4776222093B}.Debug|Win32.Build.0 = Debug|Win32 {060B1890-CBF3-4808-BA99-A4776222093B}.Debug|x64.ActiveCfg = Debug|x64 {060B1890-CBF3-4808-BA99-A4776222093B}.Debug|x64.Build.0 = Debug|x64 + {060B1890-CBF3-4808-BA99-A4776222093B}.MinSizeRel|Any CPU.ActiveCfg = Release|Win32 {060B1890-CBF3-4808-BA99-A4776222093B}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 {060B1890-CBF3-4808-BA99-A4776222093B}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 {060B1890-CBF3-4808-BA99-A4776222093B}.MinSizeRel|Win32.ActiveCfg = Release|Win32 {060B1890-CBF3-4808-BA99-A4776222093B}.MinSizeRel|Win32.Build.0 = Release|Win32 {060B1890-CBF3-4808-BA99-A4776222093B}.MinSizeRel|x64.ActiveCfg = Release|x64 {060B1890-CBF3-4808-BA99-A4776222093B}.MinSizeRel|x64.Build.0 = Release|x64 + {060B1890-CBF3-4808-BA99-A4776222093B}.Release|Any CPU.ActiveCfg = Release|Win32 {060B1890-CBF3-4808-BA99-A4776222093B}.Release|Mixed Platforms.ActiveCfg = Release|Win32 {060B1890-CBF3-4808-BA99-A4776222093B}.Release|Mixed Platforms.Build.0 = Release|Win32 {060B1890-CBF3-4808-BA99-A4776222093B}.Release|Win32.ActiveCfg = Release|Win32 {060B1890-CBF3-4808-BA99-A4776222093B}.Release|Win32.Build.0 = Release|Win32 {060B1890-CBF3-4808-BA99-A4776222093B}.Release|x64.ActiveCfg = Release|x64 {060B1890-CBF3-4808-BA99-A4776222093B}.Release|x64.Build.0 = Release|x64 + {060B1890-CBF3-4808-BA99-A4776222093B}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Win32 {060B1890-CBF3-4808-BA99-A4776222093B}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 {060B1890-CBF3-4808-BA99-A4776222093B}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 {060B1890-CBF3-4808-BA99-A4776222093B}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 {060B1890-CBF3-4808-BA99-A4776222093B}.RelWithDebInfo|Win32.Build.0 = Release|Win32 {060B1890-CBF3-4808-BA99-A4776222093B}.RelWithDebInfo|x64.ActiveCfg = Release|x64 {060B1890-CBF3-4808-BA99-A4776222093B}.RelWithDebInfo|x64.Build.0 = Release|x64 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Debug|Any CPU.ActiveCfg = Debug|Win32 {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Debug|Win32.ActiveCfg = Debug|Win32 {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Debug|Win32.Build.0 = Debug|Win32 {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Debug|x64.ActiveCfg = Debug|x64 {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Debug|x64.Build.0 = Debug|x64 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.MinSizeRel|Any CPU.ActiveCfg = Release|Win32 {143BD516-20A1-4890-A3E4-F8BFD02220E7}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 {143BD516-20A1-4890-A3E4-F8BFD02220E7}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 {143BD516-20A1-4890-A3E4-F8BFD02220E7}.MinSizeRel|Win32.ActiveCfg = Release|Win32 {143BD516-20A1-4890-A3E4-F8BFD02220E7}.MinSizeRel|Win32.Build.0 = Release|Win32 {143BD516-20A1-4890-A3E4-F8BFD02220E7}.MinSizeRel|x64.ActiveCfg = Release|x64 {143BD516-20A1-4890-A3E4-F8BFD02220E7}.MinSizeRel|x64.Build.0 = Release|x64 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Release|Any CPU.ActiveCfg = Release|Win32 {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Release|Mixed Platforms.ActiveCfg = Release|Win32 {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Release|Mixed Platforms.Build.0 = Release|Win32 {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Release|Win32.ActiveCfg = Release|Win32 {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Release|Win32.Build.0 = Release|Win32 {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Release|x64.ActiveCfg = Release|x64 {143BD516-20A1-4890-A3E4-F8BFD02220E7}.Release|x64.Build.0 = Release|x64 + {143BD516-20A1-4890-A3E4-F8BFD02220E7}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Win32 {143BD516-20A1-4890-A3E4-F8BFD02220E7}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 {143BD516-20A1-4890-A3E4-F8BFD02220E7}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 {143BD516-20A1-4890-A3E4-F8BFD02220E7}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 {143BD516-20A1-4890-A3E4-F8BFD02220E7}.RelWithDebInfo|Win32.Build.0 = Release|Win32 {143BD516-20A1-4890-A3E4-F8BFD02220E7}.RelWithDebInfo|x64.ActiveCfg = Release|x64 {143BD516-20A1-4890-A3E4-F8BFD02220E7}.RelWithDebInfo|x64.Build.0 = Release|x64 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|Any CPU.ActiveCfg = Debug|Win32 {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|Win32.ActiveCfg = Debug|Win32 {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|Win32.Build.0 = Debug|Win32 {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|x64.ActiveCfg = Debug|x64 {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Debug|x64.Build.0 = Debug|x64 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.MinSizeRel|Any CPU.ActiveCfg = Release|Win32 {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.MinSizeRel|Win32.ActiveCfg = Release|Win32 {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.MinSizeRel|Win32.Build.0 = Release|Win32 {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.MinSizeRel|x64.ActiveCfg = Release|x64 {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.MinSizeRel|x64.Build.0 = Release|x64 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Release|Any CPU.ActiveCfg = Release|Win32 {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Release|Mixed Platforms.ActiveCfg = Release|Win32 {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Release|Mixed Platforms.Build.0 = Release|Win32 {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Release|Win32.ActiveCfg = Release|Win32 {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Release|Win32.Build.0 = Release|Win32 {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Release|x64.ActiveCfg = Release|x64 {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.Release|x64.Build.0 = Release|x64 + {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Win32 {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.RelWithDebInfo|Win32.Build.0 = Release|Win32 {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.RelWithDebInfo|x64.ActiveCfg = Release|x64 {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.RelWithDebInfo|x64.Build.0 = Release|x64 + {604A12A7-07BF-4482-BDF3-7101C811F121}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {604A12A7-07BF-4482-BDF3-7101C811F121}.Debug|Any CPU.Build.0 = Debug|Any CPU + {604A12A7-07BF-4482-BDF3-7101C811F121}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {604A12A7-07BF-4482-BDF3-7101C811F121}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {604A12A7-07BF-4482-BDF3-7101C811F121}.Debug|Win32.ActiveCfg = Debug|Any CPU + {604A12A7-07BF-4482-BDF3-7101C811F121}.Debug|x64.ActiveCfg = Debug|Any CPU + {604A12A7-07BF-4482-BDF3-7101C811F121}.MinSizeRel|Any CPU.ActiveCfg = Release|Any CPU + {604A12A7-07BF-4482-BDF3-7101C811F121}.MinSizeRel|Any CPU.Build.0 = Release|Any CPU + {604A12A7-07BF-4482-BDF3-7101C811F121}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Any CPU + {604A12A7-07BF-4482-BDF3-7101C811F121}.MinSizeRel|Mixed Platforms.Build.0 = Release|Any CPU + {604A12A7-07BF-4482-BDF3-7101C811F121}.MinSizeRel|Win32.ActiveCfg = Release|Any CPU + {604A12A7-07BF-4482-BDF3-7101C811F121}.MinSizeRel|x64.ActiveCfg = Release|Any CPU + {604A12A7-07BF-4482-BDF3-7101C811F121}.Release|Any CPU.ActiveCfg = Release|Any CPU + {604A12A7-07BF-4482-BDF3-7101C811F121}.Release|Any CPU.Build.0 = Release|Any CPU + {604A12A7-07BF-4482-BDF3-7101C811F121}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {604A12A7-07BF-4482-BDF3-7101C811F121}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {604A12A7-07BF-4482-BDF3-7101C811F121}.Release|Win32.ActiveCfg = Release|Any CPU + {604A12A7-07BF-4482-BDF3-7101C811F121}.Release|x64.ActiveCfg = Release|Any CPU + {604A12A7-07BF-4482-BDF3-7101C811F121}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {604A12A7-07BF-4482-BDF3-7101C811F121}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {604A12A7-07BF-4482-BDF3-7101C811F121}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Any CPU + {604A12A7-07BF-4482-BDF3-7101C811F121}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Any CPU + {604A12A7-07BF-4482-BDF3-7101C811F121}.RelWithDebInfo|Win32.ActiveCfg = Release|Any CPU + {604A12A7-07BF-4482-BDF3-7101C811F121}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -515,5 +623,6 @@ Global {060B1890-CBF3-4808-BA99-A4776222093B} = {20720CA7-795C-45AD-A302-9383A6DD503A} {143BD516-20A1-4890-A3E4-F8BFD02220E7} = {20720CA7-795C-45AD-A302-9383A6DD503A} {666FEA52-975F-41CD-B224-B19AF3C0ABBA} = {20720CA7-795C-45AD-A302-9383A6DD503A} + {604A12A7-07BF-4482-BDF3-7101C811F121} = {9CCCBB44-303F-44AE-B99C-4165AD894DBD} EndGlobalSection EndGlobal diff --git a/Code/StandAloneLauncher/App.config b/Code/StandAloneLauncher/App.config new file mode 100644 index 00000000..8e156463 --- /dev/null +++ b/Code/StandAloneLauncher/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Code/StandAloneLauncher/Form1.Designer.cs b/Code/StandAloneLauncher/Form1.Designer.cs new file mode 100644 index 00000000..3ee09fcb --- /dev/null +++ b/Code/StandAloneLauncher/Form1.Designer.cs @@ -0,0 +1,47 @@ +namespace StandAloneLauncher +{ + partial class Form1 + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.SuspendLayout(); + // + // Form1 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(791, 318); + this.Name = "Form1"; + this.Text = "Form1"; + this.ResumeLayout(false); + + } + + #endregion + } +} + diff --git a/Code/StandAloneLauncher/Form1.cs b/Code/StandAloneLauncher/Form1.cs new file mode 100644 index 00000000..cd716360 --- /dev/null +++ b/Code/StandAloneLauncher/Form1.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace StandAloneLauncher +{ + public partial class Form1 : Form + { + public Form1() + { + InitializeComponent(); + } + } +} diff --git a/Code/StandAloneLauncher/Form1.resx b/Code/StandAloneLauncher/Form1.resx new file mode 100644 index 00000000..1af7de15 --- /dev/null +++ b/Code/StandAloneLauncher/Form1.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Code/StandAloneLauncher/Program.cs b/Code/StandAloneLauncher/Program.cs new file mode 100644 index 00000000..80169b50 --- /dev/null +++ b/Code/StandAloneLauncher/Program.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace StandAloneLauncher +{ + static class Program + { + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new Form1()); + } + } +} diff --git a/Code/StandAloneLauncher/Properties/AssemblyInfo.cs b/Code/StandAloneLauncher/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..d510a94a --- /dev/null +++ b/Code/StandAloneLauncher/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("StandAloneLauncher")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("StandAloneLauncher")] +[assembly: AssemblyCopyright("Copyright © 2014")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("097f66eb-157a-4774-8b3f-be55646a6398")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Code/StandAloneLauncher/Properties/Resources.Designer.cs b/Code/StandAloneLauncher/Properties/Resources.Designer.cs new file mode 100644 index 00000000..87b83ff1 --- /dev/null +++ b/Code/StandAloneLauncher/Properties/Resources.Designer.cs @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.18444 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace StandAloneLauncher.Properties +{ + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() + { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("StandAloneLauncher.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + } +} diff --git a/Code/StandAloneLauncher/Properties/Resources.resx b/Code/StandAloneLauncher/Properties/Resources.resx new file mode 100644 index 00000000..af7dbebb --- /dev/null +++ b/Code/StandAloneLauncher/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Code/StandAloneLauncher/Properties/Settings.Designer.cs b/Code/StandAloneLauncher/Properties/Settings.Designer.cs new file mode 100644 index 00000000..18c7c5f4 --- /dev/null +++ b/Code/StandAloneLauncher/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.18444 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace StandAloneLauncher.Properties +{ + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default + { + get + { + return defaultInstance; + } + } + } +} diff --git a/Code/StandAloneLauncher/Properties/Settings.settings b/Code/StandAloneLauncher/Properties/Settings.settings new file mode 100644 index 00000000..39645652 --- /dev/null +++ b/Code/StandAloneLauncher/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/Code/StandAloneLauncher/StandAloneLauncher.csproj b/Code/StandAloneLauncher/StandAloneLauncher.csproj new file mode 100644 index 00000000..3fd87b52 --- /dev/null +++ b/Code/StandAloneLauncher/StandAloneLauncher.csproj @@ -0,0 +1,88 @@ + + + + + Debug + AnyCPU + {604A12A7-07BF-4482-BDF3-7101C811F121} + WinExe + Properties + StandAloneLauncher + StandAloneLauncher + v4.5 + 512 + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + Form + + + Form1.cs + + + + + Form1.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + \ No newline at end of file From e7cd44e75eb8eeca497a27d7dcccb6953c87949d Mon Sep 17 00:00:00 2001 From: Pontus Fransson Date: Fri, 14 Feb 2014 10:48:49 +0100 Subject: [PATCH 45/50] Server - Added CLI project --- Code/CLIStandaloneServer/AssemblyInfo.cpp | 38 +++++ Code/CLIStandaloneServer/C++StandaloneCLI.h | 23 +++ .../CLIStandaloneServer.vcxproj | 149 ++++++++++++++++++ .../CLIStandaloneServer.vcxproj.user | 22 +++ Code/DanBias.sln | 24 +++ 5 files changed, 256 insertions(+) create mode 100644 Code/CLIStandaloneServer/AssemblyInfo.cpp create mode 100644 Code/CLIStandaloneServer/C++StandaloneCLI.h create mode 100644 Code/CLIStandaloneServer/CLIStandaloneServer.vcxproj create mode 100644 Code/CLIStandaloneServer/CLIStandaloneServer.vcxproj.user diff --git a/Code/CLIStandaloneServer/AssemblyInfo.cpp b/Code/CLIStandaloneServer/AssemblyInfo.cpp new file mode 100644 index 00000000..20a72bc0 --- /dev/null +++ b/Code/CLIStandaloneServer/AssemblyInfo.cpp @@ -0,0 +1,38 @@ +using namespace System; +using namespace System::Reflection; +using namespace System::Runtime::CompilerServices; +using namespace System::Runtime::InteropServices; +using namespace System::Security::Permissions; + +// +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +// +[assembly:AssemblyTitleAttribute("PhysicsGameCLIWrapper")]; +[assembly:AssemblyDescriptionAttribute("")]; +[assembly:AssemblyConfigurationAttribute("")]; +[assembly:AssemblyCompanyAttribute("Microsoft")]; +[assembly:AssemblyProductAttribute("PhysicsGameCLIWrapper")]; +[assembly:AssemblyCopyrightAttribute("Copyright (c) Microsoft 2010")]; +[assembly:AssemblyTrademarkAttribute("")]; +[assembly:AssemblyCultureAttribute("")]; + +// +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the value or you can default the Revision and Build Numbers +// by using the '*' as shown below: + +[assembly:AssemblyVersionAttribute("1.0.*")]; + +[assembly:ComVisible(false)]; + +[assembly:CLSCompliantAttribute(true)]; + +[assembly:SecurityPermission(SecurityAction::RequestMinimum, UnmanagedCode = true)]; diff --git a/Code/CLIStandaloneServer/C++StandaloneCLI.h b/Code/CLIStandaloneServer/C++StandaloneCLI.h new file mode 100644 index 00000000..c972fc15 --- /dev/null +++ b/Code/CLIStandaloneServer/C++StandaloneCLI.h @@ -0,0 +1,23 @@ +#ifndef CLISTANDALONESERVER_C++_Standalone_CLI_H +#define CLISTANDALONESERVER_C++_Standalone_CLI_H + +#include "..\Game\GameServer\GameServerAPI.h" + +using namespace System; + +struct ServerInitDesc +{ + +}; + +public ref class CppStandaloneCLI +{ +public: + + +protected: + DanBias::GameServerAPI* gameServer; + +}; + +#endif \ No newline at end of file diff --git a/Code/CLIStandaloneServer/CLIStandaloneServer.vcxproj b/Code/CLIStandaloneServer/CLIStandaloneServer.vcxproj new file mode 100644 index 00000000..0e2eb099 --- /dev/null +++ b/Code/CLIStandaloneServer/CLIStandaloneServer.vcxproj @@ -0,0 +1,149 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB} + CLIStandaloneServer + + + + DynamicLibrary + true + v110 + Unicode + true + + + DynamicLibrary + true + v110 + Unicode + true + + + DynamicLibrary + false + v110 + true + Unicode + true + + + DynamicLibrary + false + v110 + true + Unicode + true + + + + + + + + + + + + + + + + + + + $(SolutionDir)..\Bin\DLL\ + $(ProjectName)_$(PlatformShortName)D + $(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\ + + + $(SolutionDir)..\Bin\DLL\ + $(ProjectName)_$(PlatformShortName) + $(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\ + + + $(SolutionDir)..\Bin\DLL\ + $(ProjectName)_$(PlatformShortName)D + $(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\ + + + $(SolutionDir)..\Bin\DLL\ + $(ProjectName)_$(PlatformShortName) + $(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\ + + + + Level3 + Disabled + true + + + true + + + + + Level3 + Disabled + true + + + true + + + + + Level3 + MaxSpeed + true + true + true + + + true + true + true + + + + + Level3 + MaxSpeed + true + true + true + + + true + true + true + + + + + + + + + + + + \ No newline at end of file diff --git a/Code/CLIStandaloneServer/CLIStandaloneServer.vcxproj.user b/Code/CLIStandaloneServer/CLIStandaloneServer.vcxproj.user new file mode 100644 index 00000000..2e28d6f7 --- /dev/null +++ b/Code/CLIStandaloneServer/CLIStandaloneServer.vcxproj.user @@ -0,0 +1,22 @@ + + + + true + + + $(OutDir) + WindowsLocalDebugger + + + $(OutDir) + WindowsLocalDebugger + + + $(OutDir) + WindowsLocalDebugger + + + $(OutDir) + WindowsLocalDebugger + + \ No newline at end of file diff --git a/Code/DanBias.sln b/Code/DanBias.sln index a8d583d8..440ead89 100644 --- a/Code/DanBias.sln +++ b/Code/DanBias.sln @@ -45,6 +45,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aDanBiasGameLauncher", "Gam EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Physics", "Physics", "{0D86E569-9C74-47F0-BDB2-390C0C9A084B}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CLIStandaloneServer", "CLIStandaloneServer\CLIStandaloneServer.vcxproj", "{C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Mixed Platforms = Debug|Mixed Platforms @@ -499,6 +501,27 @@ Global {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.RelWithDebInfo|Win32.Build.0 = Release|Win32 {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.RelWithDebInfo|x64.ActiveCfg = Release|x64 {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.RelWithDebInfo|x64.Build.0 = Release|x64 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.Debug|Win32.ActiveCfg = Debug|Win32 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.Debug|Win32.Build.0 = Debug|Win32 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.Debug|x64.ActiveCfg = Debug|x64 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.Debug|x64.Build.0 = Debug|x64 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.MinSizeRel|Win32.ActiveCfg = Release|Win32 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.MinSizeRel|Win32.Build.0 = Release|Win32 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.MinSizeRel|x64.ActiveCfg = Release|Win32 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.Release|Mixed Platforms.Build.0 = Release|Win32 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.Release|Win32.ActiveCfg = Release|Win32 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.Release|Win32.Build.0 = Release|Win32 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.Release|x64.ActiveCfg = Release|Win32 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.RelWithDebInfo|Win32.Build.0 = Release|Win32 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.RelWithDebInfo|x64.ActiveCfg = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -515,5 +538,6 @@ Global {060B1890-CBF3-4808-BA99-A4776222093B} = {20720CA7-795C-45AD-A302-9383A6DD503A} {143BD516-20A1-4890-A3E4-F8BFD02220E7} = {20720CA7-795C-45AD-A302-9383A6DD503A} {666FEA52-975F-41CD-B224-B19AF3C0ABBA} = {20720CA7-795C-45AD-A302-9383A6DD503A} + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB} = {20720CA7-795C-45AD-A302-9383A6DD503A} EndGlobalSection EndGlobal From 30317ec365a1040c33635ace49fb23b95d34fc45 Mon Sep 17 00:00:00 2001 From: Pontus Fransson Date: Fri, 14 Feb 2014 10:59:01 +0100 Subject: [PATCH 46/50] Moved project to Stand alone server folder. --- Code/DanBias.sln | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Code/DanBias.sln b/Code/DanBias.sln index 5df47128..bf6bb769 100644 --- a/Code/DanBias.sln +++ b/Code/DanBias.sln @@ -45,7 +45,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aDanBiasGameLauncher", "Gam EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Physics", "Physics", "{0D86E569-9C74-47F0-BDB2-390C0C9A084B}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CLIStandaloneServer", "CLIStandaloneServer\CLIStandaloneServer.vcxproj", "{C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CLIStandaloneLauncher", "CLIStandaloneServer\CLIStandaloneServer.vcxproj", "{C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}" +EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Stand Alone Server", "Stand Alone Server", "{9CCCBB44-303F-44AE-B99C-4165AD894DBD}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StandAloneLauncher", "StandAloneLauncher\StandAloneLauncher.csproj", "{604A12A7-07BF-4482-BDF3-7101C811F121}" @@ -584,22 +585,26 @@ Global {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.RelWithDebInfo|Win32.Build.0 = Release|Win32 {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.RelWithDebInfo|x64.ActiveCfg = Release|x64 {666FEA52-975F-41CD-B224-B19AF3C0ABBA}.RelWithDebInfo|x64.Build.0 = Release|x64 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.Debug|Any CPU.ActiveCfg = Debug|Win32 {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.Debug|Win32.ActiveCfg = Debug|Win32 {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.Debug|Win32.Build.0 = Debug|Win32 {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.Debug|x64.ActiveCfg = Debug|x64 {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.Debug|x64.Build.0 = Debug|x64 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.MinSizeRel|Any CPU.ActiveCfg = Release|Win32 {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Win32 {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.MinSizeRel|Mixed Platforms.Build.0 = Release|Win32 {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.MinSizeRel|Win32.ActiveCfg = Release|Win32 {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.MinSizeRel|Win32.Build.0 = Release|Win32 {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.MinSizeRel|x64.ActiveCfg = Release|Win32 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.Release|Any CPU.ActiveCfg = Release|Win32 {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.Release|Mixed Platforms.ActiveCfg = Release|Win32 {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.Release|Mixed Platforms.Build.0 = Release|Win32 {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.Release|Win32.ActiveCfg = Release|Win32 {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.Release|Win32.Build.0 = Release|Win32 {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.Release|x64.ActiveCfg = Release|Win32 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Win32 {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32 @@ -645,7 +650,7 @@ Global {060B1890-CBF3-4808-BA99-A4776222093B} = {20720CA7-795C-45AD-A302-9383A6DD503A} {143BD516-20A1-4890-A3E4-F8BFD02220E7} = {20720CA7-795C-45AD-A302-9383A6DD503A} {666FEA52-975F-41CD-B224-B19AF3C0ABBA} = {20720CA7-795C-45AD-A302-9383A6DD503A} - {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB} = {20720CA7-795C-45AD-A302-9383A6DD503A} {604A12A7-07BF-4482-BDF3-7101C811F121} = {9CCCBB44-303F-44AE-B99C-4165AD894DBD} + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB} = {9CCCBB44-303F-44AE-B99C-4165AD894DBD} EndGlobalSection EndGlobal From ff6a4a0d471bd6a4fc3498187ef7a027d7020250 Mon Sep 17 00:00:00 2001 From: lanariel Date: Fri, 14 Feb 2014 11:38:43 +0100 Subject: [PATCH 47/50] Build Launcher --- Code/DanBias.sln | 19 +++++--- .../StandAloneLauncher.csproj | 46 +++++++++++++++++++ .../bin/Debug/StandAloneLauncher.exe.config | 6 +++ .../StandAloneLauncher.vshost.exe.config | 6 +++ .../StandAloneLauncher.vshost.exe.manifest | 11 +++++ .../x86/Debug/StandAloneLauncher.exe.config | 6 +++ .../StandAloneLauncher.vshost.exe.config | 6 +++ 7 files changed, 93 insertions(+), 7 deletions(-) create mode 100644 Code/StandAloneLauncher/bin/Debug/StandAloneLauncher.exe.config create mode 100644 Code/StandAloneLauncher/bin/Debug/StandAloneLauncher.vshost.exe.config create mode 100644 Code/StandAloneLauncher/bin/Debug/StandAloneLauncher.vshost.exe.manifest create mode 100644 Code/StandAloneLauncher/bin/x86/Debug/StandAloneLauncher.exe.config create mode 100644 Code/StandAloneLauncher/bin/x86/Debug/StandAloneLauncher.vshost.exe.config diff --git a/Code/DanBias.sln b/Code/DanBias.sln index bf6bb769..77bb2ca7 100644 --- a/Code/DanBias.sln +++ b/Code/DanBias.sln @@ -45,7 +45,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aDanBiasGameLauncher", "Gam EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Physics", "Physics", "{0D86E569-9C74-47F0-BDB2-390C0C9A084B}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CLIStandaloneLauncher", "CLIStandaloneServer\CLIStandaloneServer.vcxproj", "{C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CLIStandaloneServer", "CLIStandaloneServer\CLIStandaloneServer.vcxproj", "{C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Stand Alone Server", "Stand Alone Server", "{9CCCBB44-303F-44AE-B99C-4165AD894DBD}" EndProject @@ -603,7 +603,8 @@ Global {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.Release|Mixed Platforms.Build.0 = Release|Win32 {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.Release|Win32.ActiveCfg = Release|Win32 {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.Release|Win32.Build.0 = Release|Win32 - {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.Release|x64.ActiveCfg = Release|Win32 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.Release|x64.ActiveCfg = Release|x64 + {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.Release|x64.Build.0 = Release|x64 {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Win32 {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Win32 {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB}.RelWithDebInfo|Mixed Platforms.Build.0 = Release|Win32 @@ -614,8 +615,10 @@ Global {604A12A7-07BF-4482-BDF3-7101C811F121}.Debug|Any CPU.Build.0 = Debug|Any CPU {604A12A7-07BF-4482-BDF3-7101C811F121}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU {604A12A7-07BF-4482-BDF3-7101C811F121}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {604A12A7-07BF-4482-BDF3-7101C811F121}.Debug|Win32.ActiveCfg = Debug|Any CPU - {604A12A7-07BF-4482-BDF3-7101C811F121}.Debug|x64.ActiveCfg = Debug|Any CPU + {604A12A7-07BF-4482-BDF3-7101C811F121}.Debug|Win32.ActiveCfg = Debug|x86 + {604A12A7-07BF-4482-BDF3-7101C811F121}.Debug|Win32.Build.0 = Debug|x86 + {604A12A7-07BF-4482-BDF3-7101C811F121}.Debug|x64.ActiveCfg = Debug|x64 + {604A12A7-07BF-4482-BDF3-7101C811F121}.Debug|x64.Build.0 = Debug|x64 {604A12A7-07BF-4482-BDF3-7101C811F121}.MinSizeRel|Any CPU.ActiveCfg = Release|Any CPU {604A12A7-07BF-4482-BDF3-7101C811F121}.MinSizeRel|Any CPU.Build.0 = Release|Any CPU {604A12A7-07BF-4482-BDF3-7101C811F121}.MinSizeRel|Mixed Platforms.ActiveCfg = Release|Any CPU @@ -626,8 +629,10 @@ Global {604A12A7-07BF-4482-BDF3-7101C811F121}.Release|Any CPU.Build.0 = Release|Any CPU {604A12A7-07BF-4482-BDF3-7101C811F121}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {604A12A7-07BF-4482-BDF3-7101C811F121}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {604A12A7-07BF-4482-BDF3-7101C811F121}.Release|Win32.ActiveCfg = Release|Any CPU - {604A12A7-07BF-4482-BDF3-7101C811F121}.Release|x64.ActiveCfg = Release|Any CPU + {604A12A7-07BF-4482-BDF3-7101C811F121}.Release|Win32.ActiveCfg = Release|x86 + {604A12A7-07BF-4482-BDF3-7101C811F121}.Release|Win32.Build.0 = Release|x86 + {604A12A7-07BF-4482-BDF3-7101C811F121}.Release|x64.ActiveCfg = Release|x64 + {604A12A7-07BF-4482-BDF3-7101C811F121}.Release|x64.Build.0 = Release|x64 {604A12A7-07BF-4482-BDF3-7101C811F121}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU {604A12A7-07BF-4482-BDF3-7101C811F121}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU {604A12A7-07BF-4482-BDF3-7101C811F121}.RelWithDebInfo|Mixed Platforms.ActiveCfg = Release|Any CPU @@ -650,7 +655,7 @@ Global {060B1890-CBF3-4808-BA99-A4776222093B} = {20720CA7-795C-45AD-A302-9383A6DD503A} {143BD516-20A1-4890-A3E4-F8BFD02220E7} = {20720CA7-795C-45AD-A302-9383A6DD503A} {666FEA52-975F-41CD-B224-B19AF3C0ABBA} = {20720CA7-795C-45AD-A302-9383A6DD503A} - {604A12A7-07BF-4482-BDF3-7101C811F121} = {9CCCBB44-303F-44AE-B99C-4165AD894DBD} {C8CBA520-5D7D-4D61-A8DA-6E05FD132BCB} = {9CCCBB44-303F-44AE-B99C-4165AD894DBD} + {604A12A7-07BF-4482-BDF3-7101C811F121} = {9CCCBB44-303F-44AE-B99C-4165AD894DBD} EndGlobalSection EndGlobal diff --git a/Code/StandAloneLauncher/StandAloneLauncher.csproj b/Code/StandAloneLauncher/StandAloneLauncher.csproj index 3fd87b52..fad6a6a6 100644 --- a/Code/StandAloneLauncher/StandAloneLauncher.csproj +++ b/Code/StandAloneLauncher/StandAloneLauncher.csproj @@ -31,6 +31,46 @@ prompt 4 + + true + bin\x64\Debug\ + DEBUG;TRACE + full + x64 + prompt + MinimumRecommendedRules.ruleset + true + + + bin\x64\Release\ + TRACE + true + pdbonly + x64 + prompt + MinimumRecommendedRules.ruleset + true + + + true + bin\x86\Debug\ + DEBUG;TRACE + full + x86 + prompt + MinimumRecommendedRules.ruleset + true + + + bin\x86\Release\ + TRACE + true + pdbonly + x86 + prompt + MinimumRecommendedRules.ruleset + true + @@ -77,6 +117,12 @@ + + + {c8cba520-5d7d-4d61-a8da-6e05fd132bcb} + CLIStandaloneServer + +