Merge branch 'master' into SQC-09
This commit is contained in:
@@ -19,46 +19,39 @@
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="array2d.h" />
|
||||
<ClInclude Include="array3d.h" />
|
||||
<ClInclude Include="audio.h" />
|
||||
<ClInclude Include="blockinfo.h" />
|
||||
<ClInclude Include="bullet.h" />
|
||||
<ClInclude Include="chunk.h" />
|
||||
<ClInclude Include="connector.h" />
|
||||
<ClInclude Include="define.h" />
|
||||
<ClInclude Include="engine.h" />
|
||||
<ClInclude Include="matrix4.h" />
|
||||
<ClInclude Include="mesh.h" />
|
||||
<ClInclude Include="openglcontext.h" />
|
||||
<ClInclude Include="opensimplex.h" />
|
||||
<ClInclude Include="player.h" />
|
||||
<ClInclude Include="shader.h" />
|
||||
<ClInclude Include="skybox.h" />
|
||||
<ClInclude Include="texture.h" />
|
||||
<ClInclude Include="textureatlas.h" />
|
||||
<ClInclude Include="tool.h" />
|
||||
<ClInclude Include="transformation.h" />
|
||||
<ClInclude Include="vector3.h" />
|
||||
<ClInclude Include="vertexbuffer.h" />
|
||||
<ClInclude Include="world.h" />
|
||||
<ClInclude Include="worldrenderer.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="audio.cpp" />
|
||||
<ClCompile Include="blockinfo.cpp" />
|
||||
<ClCompile Include="bullet.cpp" />
|
||||
<ClCompile Include="chunk.cpp" />
|
||||
<ClCompile Include="connector.cpp" />
|
||||
<ClCompile Include="engine.cpp" />
|
||||
<ClCompile Include="main.cpp" />
|
||||
<ClCompile Include="mesh.cpp" />
|
||||
<ClCompile Include="openglcontext.cpp" />
|
||||
<ClCompile Include="opensimplex.cpp" />
|
||||
<ClCompile Include="player.cpp" />
|
||||
<ClCompile Include="shader.cpp" />
|
||||
<ClCompile Include="skybox.cpp" />
|
||||
<ClCompile Include="texture.cpp" />
|
||||
<ClCompile Include="textureatlas.cpp" />
|
||||
<ClCompile Include="tool.cpp" />
|
||||
<ClCompile Include="transformation.cpp" />
|
||||
<ClCompile Include="vertexbuffer.cpp" />
|
||||
<ClCompile Include="world.cpp" />
|
||||
<ClCompile Include="worldrenderer.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\SQCSim-common\SQCSim-common.vcxproj">
|
||||
<Project>{ee91ab12-4225-4a4d-931d-69d72f6d91fb}</Project>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{A21FD938-1FEA-4687-AB86-0EABAC30877B}</ProjectGuid>
|
||||
@@ -112,8 +105,8 @@
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<IncludePath>external\irrKlang-1.6.0\include;external\glew170\include;external\devil178\include;external\sfml23\include;$(IncludePath)</IncludePath>
|
||||
<LibraryPath>external\glew170\lib;external\devil178\lib;external\sfml23\lib;$(LibraryPath);external\irrKlang-1.6.0\lib\Win32-visualStudio</LibraryPath>
|
||||
<IncludePath>external\irrKlang-1.6.0\include;external\glew210\include;external\devil180\include;external\sfml251-32\include;$(IncludePath)</IncludePath>
|
||||
<LibraryPath>external\glew210\lib\Release\Win32;external\sfml251-32\lib;external\devil180\lib\x86\Release;external\irrKlang-1.6.0\lib\Win32-visualStudio;$(LibraryPath)</LibraryPath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
@@ -122,8 +115,8 @@
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<IncludePath>external\irrKlang-1.6.0\include;external\sfml23\include;external\devil178\include;external\glew170\include;$(IncludePath)</IncludePath>
|
||||
<LibraryPath>external\sfml23\lib;external\devil178\lib;external\glew170\lib;$(LibraryPath);external\irrKlang-1.6.0\lib\Win32-visualStudio</LibraryPath>
|
||||
<IncludePath>external\devil180\include;external\irrKlang-1.6.0\include;external\sfml251-32\include;external\glew210\include;$(IncludePath)</IncludePath>
|
||||
<LibraryPath>external\sfml251-32\lib;external\devil180\lib\x86\Release;external\glew210\lib\Release\Win32;$(LibraryPath);external\irrKlang-1.6.0\lib\Win32-visualStudio</LibraryPath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
@@ -175,8 +168,8 @@
|
||||
<FloatingPointModel>Fast</FloatingPointModel>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<AdditionalDependencies>irrKlang.lib;sfml-main.lib;sfml-system.lib;sfml-window.lib;sfml-graphics.lib;GlU32.Lib;OpenGL32.Lib;DevIL.lib;ILU.lib;ILUT.lib;glew32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
@@ -197,8 +190,8 @@
|
||||
<FloatingPointModel>Fast</FloatingPointModel>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<AdditionalDependencies>irrKlang.lib;sfml-main.lib;sfml-system.lib;sfml-window.lib;sfml-graphics.lib;GlU32.Lib;OpenGL32.Lib;DevIL.lib;ILU.lib;ILUT.lib;glew32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
|
@@ -11,51 +11,21 @@
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="array3d.h">
|
||||
<Filter>Fichiers d%27en-tête</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="blockinfo.h">
|
||||
<Filter>Fichiers d%27en-tête</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="chunk.h">
|
||||
<Filter>Fichiers d%27en-tête</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="define.h">
|
||||
<Filter>Fichiers d%27en-tête</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="engine.h">
|
||||
<Filter>Fichiers d%27en-tête</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="matrix4.h">
|
||||
<Filter>Fichiers d%27en-tête</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="openglcontext.h">
|
||||
<Filter>Fichiers d%27en-tête</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="texture.h">
|
||||
<Filter>Fichiers d%27en-tête</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="transformation.h">
|
||||
<Filter>Fichiers d%27en-tête</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="vector3.h">
|
||||
<Filter>Fichiers d%27en-tête</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="player.h">
|
||||
<Filter>Fichiers d%27en-tête</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="shader.h">
|
||||
<Filter>Fichiers d%27en-tête</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="tool.h">
|
||||
<Filter>Fichiers d%27en-tête</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="vertexbuffer.h">
|
||||
<Filter>Fichiers d%27en-tête</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="array2d.h">
|
||||
<Filter>Fichiers d%27en-tête</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="skybox.h">
|
||||
<Filter>Fichiers d%27en-tête</Filter>
|
||||
</ClInclude>
|
||||
@@ -65,23 +35,23 @@
|
||||
<ClInclude Include="textureatlas.h">
|
||||
<Filter>Fichiers d%27en-tête</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="world.h">
|
||||
<ClInclude Include="connector.h">
|
||||
<Filter>Fichiers d%27en-tête</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="bullet.h">
|
||||
<ClInclude Include="openglcontext.h">
|
||||
<Filter>Fichiers d%27en-tête</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="opensimplex.h">
|
||||
<ClInclude Include="tool.h">
|
||||
<Filter>Fichiers d%27en-tête</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="mesh.h">
|
||||
<Filter>Fichiers d%27en-tête</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="worldrenderer.h">
|
||||
<Filter>Fichiers d%27en-tête</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="blockinfo.cpp">
|
||||
<Filter>Fichiers sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="chunk.cpp">
|
||||
<Filter>Fichiers sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="engine.cpp">
|
||||
<Filter>Fichiers sources</Filter>
|
||||
</ClCompile>
|
||||
@@ -94,18 +64,9 @@
|
||||
<ClCompile Include="texture.cpp">
|
||||
<Filter>Fichiers sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="transformation.cpp">
|
||||
<Filter>Fichiers sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="player.cpp">
|
||||
<Filter>Fichiers sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="shader.cpp">
|
||||
<Filter>Fichiers sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="tool.cpp">
|
||||
<Filter>Fichiers sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="vertexbuffer.cpp">
|
||||
<Filter>Fichiers sources</Filter>
|
||||
</ClCompile>
|
||||
@@ -118,13 +79,16 @@
|
||||
<ClCompile Include="textureatlas.cpp">
|
||||
<Filter>Fichiers sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="world.cpp">
|
||||
<ClCompile Include="connector.cpp">
|
||||
<Filter>Fichiers sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="bullet.cpp">
|
||||
<ClCompile Include="tool.cpp">
|
||||
<Filter>Fichiers sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="opensimplex.cpp">
|
||||
<ClCompile Include="mesh.cpp">
|
||||
<Filter>Fichiers sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="worldrenderer.cpp">
|
||||
<Filter>Fichiers sources</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
|
@@ -1,61 +0,0 @@
|
||||
#ifndef ARRAY2D_H__
|
||||
#define ARRAY2D_H__
|
||||
|
||||
#include "define.h"
|
||||
|
||||
template <class T>
|
||||
class Array2d {
|
||||
public:
|
||||
Array2d(int x, int y);
|
||||
~Array2d();
|
||||
Array2d(const Array2d& array);
|
||||
|
||||
void Set(int x, int y, T type);
|
||||
T Get(int x, int y) const;
|
||||
T Remove(int x, int y);
|
||||
|
||||
void Reset(T type);
|
||||
|
||||
private:
|
||||
int m_x, m_y;
|
||||
T* m_array;
|
||||
|
||||
int To1dIndex(int x, int y) const;
|
||||
};
|
||||
|
||||
template <class T>
|
||||
Array2d<T>::Array2d(int x, int y) : m_x(x), m_y(y) { m_array = new T[m_x * m_y]; }
|
||||
|
||||
template <class T>
|
||||
Array2d<T>::~Array2d() { delete[] m_array; }
|
||||
|
||||
template <class T>
|
||||
Array2d<T>::Array2d(const Array2d<T>& array) : m_x(array.m_x), m_y(array.m_y) {
|
||||
m_array = new T[m_x * m_y];
|
||||
for (int i = 0; i < m_x * m_y; ++i)
|
||||
m_array[i] = array.m_array[i];
|
||||
}
|
||||
|
||||
template <class T>
|
||||
void Array2d<T>::Set(int x, int y, T type) { m_array[To1dIndex(x, y)] = type; }
|
||||
|
||||
template <class T>
|
||||
T Array2d<T>::Get(int x, int y) const { return m_array[To1dIndex(x, y)]; }
|
||||
|
||||
template <class T>
|
||||
T Array2d<T>::Remove(int x, int y) {
|
||||
T thing = std::move(m_array[To1dIndex(x, y)]);
|
||||
m_array[To1dIndex(x, y)] = nullptr;
|
||||
return thing;
|
||||
}
|
||||
|
||||
template <class T>
|
||||
void Array2d<T>::Reset(T type) {
|
||||
for (int i = 0; i < m_x * m_y; ++i)
|
||||
m_array[i] = type;
|
||||
}
|
||||
|
||||
template <class T>
|
||||
int Array2d<T>::To1dIndex(int x, int y) const { return x + (y * m_x); }
|
||||
|
||||
#endif // ARRAY2D_H__
|
@@ -1,55 +0,0 @@
|
||||
#ifndef ARRAY3D_H__
|
||||
#define ARRAY3D_H__
|
||||
|
||||
#include "define.h"
|
||||
|
||||
template <class T>
|
||||
class Array3d {
|
||||
public:
|
||||
Array3d(int x, int y, int z);
|
||||
~Array3d();
|
||||
Array3d(const Array3d& array);
|
||||
|
||||
void Set(int x, int y, int z, T type);
|
||||
T Get(int x, int y, int z) const;
|
||||
|
||||
void Reset(T type);
|
||||
|
||||
private:
|
||||
int m_x, m_y, m_z;
|
||||
T* m_array;
|
||||
|
||||
int To1dIndex(int x, int y, int z) const;
|
||||
};
|
||||
|
||||
template <class T>
|
||||
Array3d<T>::Array3d(int x, int y, int z) : m_x(x), m_y(y), m_z(z) { m_array = new T[m_x * m_y * m_z]; }
|
||||
|
||||
template <class T>
|
||||
Array3d<T>::~Array3d() { delete[] m_array; }
|
||||
|
||||
template <class T>
|
||||
Array3d<T>::Array3d(const Array3d<T>& array) : m_x(array.m_x), m_y(array.m_y), m_z(array.m_z) {
|
||||
m_array = new T[m_x * m_y * m_z];
|
||||
for (int i = 0; i < m_x * m_y * m_z; ++i)
|
||||
m_array[i] = array.m_array[i];
|
||||
}
|
||||
|
||||
template <class T>
|
||||
void Array3d<T>::Set(int x, int y, int z, T type) {
|
||||
m_array[To1dIndex(x, y, z)] = type;
|
||||
}
|
||||
|
||||
template <class T>
|
||||
T Array3d<T>::Get(int x, int y, int z) const { return m_array[To1dIndex(x, y, z)]; }
|
||||
|
||||
template <class T>
|
||||
void Array3d<T>::Reset(T type) {
|
||||
for (int i = 0; i < m_x * m_y * m_z; ++i)
|
||||
m_array[i] = type;
|
||||
}
|
||||
|
||||
template <class T>
|
||||
int Array3d<T>::To1dIndex(int x, int y, int z) const { return x + (z * m_x) + (y * m_z * m_x); }
|
||||
|
||||
#endif // ARRAY3D_H__
|
@@ -14,7 +14,7 @@ Audio::Audio(const char * music) {
|
||||
m_engine->setRolloffFactor(1);
|
||||
m_engine->setDefault3DSoundMinDistance(1);
|
||||
m_engine->setDefault3DSoundMaxDistance(1000);
|
||||
m_music = m_engine->play2D(music, true, true, true, irrklang::ESM_STREAMING);
|
||||
m_music = m_engine->play2D(music, false, true, true, irrklang::ESM_STREAMING);
|
||||
}
|
||||
|
||||
Audio::~Audio() {
|
||||
@@ -40,9 +40,9 @@ void Audio::Render3DAudioObj(irrklang::ISound* sound, Vector3f& pos, Vector3f& v
|
||||
sound->setVolume(volume);
|
||||
}
|
||||
|
||||
void Audio::PlaySong(const char* music) {
|
||||
m_music = m_engine->play2D(music, true, true, true, irrklang::ESM_STREAMING);
|
||||
}
|
||||
//void Audio::PlaySong(const char* music) {
|
||||
// m_music = m_engine->play2D(music, false, false, false, irrklang::ESM_STREAMING);
|
||||
//}
|
||||
|
||||
void Audio::ToggleMusicState() { m_music->setIsPaused(!m_music->getIsPaused()); }
|
||||
|
||||
|
@@ -3,8 +3,8 @@
|
||||
|
||||
#include <irrKlang.h>
|
||||
#include <ik_ISoundSource.h>
|
||||
#include "../SQCSim-common/vector3.h"
|
||||
#include "define.h"
|
||||
#include "vector3.h"
|
||||
|
||||
class Audio {
|
||||
private:
|
||||
@@ -22,7 +22,7 @@ public:
|
||||
|
||||
void Render3DAudioObj(irrklang::ISound* sound, Vector3f& pos, Vector3f& vel, float volume);
|
||||
|
||||
void PlaySong(const char* music);
|
||||
//void PlaySong(const char* music);
|
||||
|
||||
void ToggleMusicState();
|
||||
|
||||
|
@@ -1,42 +0,0 @@
|
||||
#include "blockinfo.h"
|
||||
#include <iostream>
|
||||
|
||||
BlockInfo::BlockInfo(BlockType type, const std::string& name, float u, float v, float s, int dur) : m_type(type), m_name(name), m_u(u), m_v(v), m_s(s), m_durability(dur)
|
||||
{
|
||||
}
|
||||
|
||||
BlockInfo::~BlockInfo()
|
||||
{
|
||||
}
|
||||
|
||||
BlockType BlockInfo::GetType() const
|
||||
{
|
||||
return m_type;
|
||||
}
|
||||
|
||||
void BlockInfo::SetDurability(int durability)
|
||||
{
|
||||
m_durability = durability;
|
||||
}
|
||||
|
||||
int BlockInfo::GetDurability() const
|
||||
{
|
||||
return m_durability;
|
||||
}
|
||||
|
||||
void BlockInfo::GetTexture(float& u, float& v, float& s)
|
||||
{
|
||||
u = m_u;
|
||||
v = m_v;
|
||||
s = m_s;
|
||||
}
|
||||
|
||||
void BlockInfo::Show() const
|
||||
{
|
||||
std::cout << "Type: " << m_type << std::endl;
|
||||
std::cout << "Nom: " << m_name << std::endl;
|
||||
std::cout << "Durabilite: " << m_durability << std::endl;
|
||||
std::cout << "Coordonnees Texture: " << m_u << ", " << m_v << ", " << m_s << std::endl;
|
||||
}
|
||||
|
||||
|
@@ -1,32 +0,0 @@
|
||||
#ifndef BLOCKINFO_H__
|
||||
#define BLOCKINFO_H__
|
||||
|
||||
#include <string>
|
||||
#include "define.h"
|
||||
|
||||
class BlockInfo
|
||||
{
|
||||
public:
|
||||
BlockInfo(BlockType type, const std::string& name, float u, float v, float s, int dur);
|
||||
~BlockInfo();
|
||||
|
||||
BlockType GetType() const;
|
||||
|
||||
void SetDurability(int durability);
|
||||
int GetDurability() const;
|
||||
|
||||
void GetTexture(float& u, float& v, float& s);
|
||||
|
||||
void Show() const;
|
||||
|
||||
private:
|
||||
BlockType m_type;
|
||||
float m_u;
|
||||
float m_v;
|
||||
float m_s;
|
||||
std::string m_name;
|
||||
int m_durability;
|
||||
|
||||
};
|
||||
|
||||
#endif // BLOCKINFO_H__
|
@@ -1,32 +0,0 @@
|
||||
#include "bullet.h"
|
||||
#include "world.h"
|
||||
|
||||
Bullet::Bullet(Player& player) {
|
||||
m_startpos = m_currentpos = player.GetPOV() + player.GetDirection();
|
||||
m_velocity = player.GetDirection();
|
||||
}
|
||||
|
||||
Bullet::~Bullet() {}
|
||||
|
||||
bool Bullet::Update(World* world, Transformation& tran, float elapsedtime) {
|
||||
for (int x = 0; x < 1000; ++x) {
|
||||
m_currentpos += m_velocity * elapsedtime;
|
||||
|
||||
if (!world->ChunkAt(m_currentpos))
|
||||
return true;
|
||||
else if (world->BlockAt(m_currentpos) != BTYPE_AIR) {
|
||||
world->ChangeBlockAtPosition(BTYPE_AIR, m_currentpos);
|
||||
return true;
|
||||
}
|
||||
else if ((m_currentpos - m_startpos).Length() > VIEW_DISTANCE) return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void Bullet::Transpose(int& x, int& z) {
|
||||
m_currentpos.x -= x * CHUNK_SIZE_X;
|
||||
m_currentpos.z -= z * CHUNK_SIZE_Z;
|
||||
m_startpos.x -= x * CHUNK_SIZE_X;
|
||||
m_startpos.z -= z * CHUNK_SIZE_Z;
|
||||
}
|
@@ -1,27 +0,0 @@
|
||||
#ifndef BULLET_H__
|
||||
#define BULLET_H__
|
||||
|
||||
#include "audio.h"
|
||||
#include "player.h"
|
||||
#include "vertexbuffer.h"
|
||||
#include "texture.h"
|
||||
|
||||
class World;
|
||||
|
||||
class Bullet {
|
||||
public:
|
||||
Bullet(Player& player);
|
||||
~Bullet();
|
||||
|
||||
bool Update(World* world, Transformation& tran, float elapsedtime);
|
||||
void Transpose(int& x, int& z);
|
||||
|
||||
private:
|
||||
Vector3f m_startpos;
|
||||
Vector3f m_currentpos;
|
||||
Vector3f m_velocity;
|
||||
|
||||
};
|
||||
|
||||
#endif // BULLET_H__
|
||||
|
@@ -1,234 +0,0 @@
|
||||
#include "chunk.h"
|
||||
#include "world.h"
|
||||
|
||||
Chunk::Chunk(unsigned int x, unsigned int y) : m_posX(x), m_posY(y) {
|
||||
//std::ostringstream pos; // V<>rifie l'existence d'un fichier .chunk avec sa position.
|
||||
//pos << CHUNK_PATH << x << '_' << y << ".chunk";
|
||||
//std::ifstream input(pos.str(), std::fstream::binary);
|
||||
|
||||
//if (input.fail()) {
|
||||
OpenSimplexNoise::Noise simplex = OpenSimplexNoise::Noise(SEED);
|
||||
m_blocks.Reset(BTYPE_AIR);
|
||||
|
||||
for (int ix = 0; ix < CHUNK_SIZE_X; ++ix) // Montagnes
|
||||
for (int iz = 0; iz < CHUNK_SIZE_Z; ++iz) {
|
||||
float xnoiz, ynoiz;
|
||||
xnoiz = (double)(ix + x * CHUNK_SIZE_X) / 4096.;
|
||||
ynoiz = (double)(iz + y * CHUNK_SIZE_Z) / 4096.;
|
||||
double height = 0;
|
||||
for (int x = 0; x < 39; ++x) {
|
||||
height += simplex.eval(xnoiz, ynoiz);
|
||||
height *= .79;
|
||||
xnoiz *= 1.139;
|
||||
ynoiz *= 1.139;
|
||||
}
|
||||
height = height * 2000. * simplex.eval((double)(ix + x * CHUNK_SIZE_X) / 512., (double)(iz + y * CHUNK_SIZE_Z) / 512.);
|
||||
height /= (CHUNK_SIZE_Y / 1.9);
|
||||
height += 15.;
|
||||
for (int iy = 0; iy <= (int)height % CHUNK_SIZE_Y; ++iy)
|
||||
SetBlock(ix, iy, iz, BTYPE_METAL, nullptr);
|
||||
}
|
||||
for (int ix = 0; ix < CHUNK_SIZE_X; ++ix) // Collines
|
||||
for (int iz = 0; iz < CHUNK_SIZE_Z; ++iz) {
|
||||
float xnoiz, ynoiz;
|
||||
xnoiz = (double)(ix + x * CHUNK_SIZE_X) / 512.;
|
||||
ynoiz = (double)(iz + y * CHUNK_SIZE_Z) / 512.;
|
||||
float height = simplex.eval(xnoiz, ynoiz) * 50.f;// +1.f;
|
||||
for (int iy = 0; iy <= (int)height % CHUNK_SIZE_Y; ++iy) {
|
||||
if (GetBlock(ix, iy, iz) == BTYPE_AIR)
|
||||
SetBlock(ix, iy, iz, BTYPE_GRASS, nullptr);
|
||||
}
|
||||
}
|
||||
for (int ix = 0; ix < CHUNK_SIZE_X; ++ix) // "Lacs"
|
||||
for (int iz = 0; iz < CHUNK_SIZE_Z; ++iz) {
|
||||
for (int iy = 0; iy < 13; ++iy) {
|
||||
if (GetBlock(ix, iy, iz) == BTYPE_AIR)
|
||||
SetBlock(ix, iy, iz, BTYPE_ICE, nullptr);
|
||||
}
|
||||
}
|
||||
//for (int ix = 0; ix < CHUNK_SIZE_X; ++ix) // "Arbres"
|
||||
// for (int iz = 0; iz < CHUNK_SIZE_Z; ++iz) {
|
||||
// float xnoiz, ynoiz;
|
||||
// xnoiz = (double)(iz * CHUNK_SIZE_Y + x * CHUNK_SIZE_X) / 256.;
|
||||
// ynoiz = (double)(ix * CHUNK_SIZE_Y + y * CHUNK_SIZE_Z) / 256.;
|
||||
// bool tree = (int)(abs(simplex.eval(xnoiz, ynoiz)) * 17933.f) % CHUNK_SIZE_Y > 126 ? true : false;
|
||||
// for (int iy = 0; iy < CHUNK_SIZE_Y - 10; ++iy)
|
||||
// if (GetBlock(ix, iy, iz) == BTYPE_AIR)
|
||||
// if (GetBlock(ix, iy - 1, iz) == BTYPE_GRASS)
|
||||
// if (tree) {
|
||||
// for (int i = 0; i < (int)(abs(simplex.eval(xnoiz, ynoiz) * 4)) % 42 + 1; ++i)
|
||||
// SetBlock(ix, iy + i, iz, BTYPE_DIRT, nullptr);
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
/* }
|
||||
else {
|
||||
input.seekg(0, std::ios_base::end);
|
||||
int size = input.tellg();
|
||||
input.seekg(0, std::ios_base::beg);
|
||||
|
||||
char data[CHUNK_SIZE_X * CHUNK_SIZE_Y * CHUNK_SIZE_Z];
|
||||
input.read(data, size);
|
||||
input.close();
|
||||
|
||||
for (int ix = 0; ix < CHUNK_SIZE_X; ++ix)
|
||||
for (int iz = 0; iz < CHUNK_SIZE_Z; ++iz)
|
||||
for (int iy = 0; iy < CHUNK_SIZE_Y; ++iy)
|
||||
m_blocks.Set(ix, iy, iz, data[ix + (iz * CHUNK_SIZE_X) + (iy * CHUNK_SIZE_Z * CHUNK_SIZE_X)]);
|
||||
}*/
|
||||
}
|
||||
|
||||
Chunk::~Chunk() {
|
||||
/*if (m_isModified) {
|
||||
char data[CHUNK_SIZE_X * CHUNK_SIZE_Y * CHUNK_SIZE_Z];
|
||||
|
||||
for (int x = 0; x < CHUNK_SIZE_X; ++x)
|
||||
for (int z = 0; z < CHUNK_SIZE_Z; ++z)
|
||||
for (int y = 0; y < CHUNK_SIZE_Y; ++y)
|
||||
data[x + (z * CHUNK_SIZE_X) + (y * CHUNK_SIZE_Z * CHUNK_SIZE_X)] = (char)GetBlock(x, y, z);
|
||||
|
||||
std::ostringstream pos;
|
||||
pos << CHUNK_PATH << m_posX << '_' << m_posY << ".chunk";
|
||||
|
||||
std::ofstream output(pos.str(), std::fstream::binary);
|
||||
output.write(data, sizeof(data));
|
||||
output.close();
|
||||
}*/
|
||||
}
|
||||
|
||||
void Chunk::RemoveBlock(int x, int y, int z, World* world) {
|
||||
m_blocks.Set(x, y, z, BTYPE_AIR);
|
||||
CheckNeighbors(x, y, world);
|
||||
m_isDirty = true;
|
||||
}
|
||||
|
||||
void Chunk::SetBlock(int x, int y, int z, BlockType type, World* world) {
|
||||
m_blocks.Set(x, y, z, type);
|
||||
if (world) CheckNeighbors(x, z, world); // Si nullptr, ne pas v<>rifier les chunks voisines.
|
||||
m_isDirty = true;
|
||||
}
|
||||
|
||||
BlockType Chunk::GetBlock(int x, int y, int z) { return m_blocks.Get(x, y, z); }
|
||||
|
||||
void Chunk::CheckNeighbors(unsigned int x, unsigned int z, World* world) {
|
||||
unsigned int cx, cy;
|
||||
|
||||
world->GetScope(cx, cy);
|
||||
|
||||
if (x == 0 && m_posX - cx >= 0 &&
|
||||
world->ChunkAt((m_posX - cx - 1) * CHUNK_SIZE_X, 1, (m_posY - cy) * CHUNK_SIZE_Z))
|
||||
world->ChunkAt((m_posX - cx - 1) * CHUNK_SIZE_X, 1, (m_posY - cy) * CHUNK_SIZE_Z)->MakeDirty();
|
||||
else if (x == CHUNK_SIZE_X - 1 && m_posX - cx < WORLD_SIZE_X &&
|
||||
world->ChunkAt((m_posX - cx + 1) * CHUNK_SIZE_X, 1, (m_posY - cy) * CHUNK_SIZE_Z))
|
||||
world->ChunkAt((m_posX - cx + 1) * CHUNK_SIZE_X, 1, (m_posY - cy) * CHUNK_SIZE_Z)->MakeDirty();
|
||||
|
||||
if (z == 0 && m_posY - cy >= 0 &&
|
||||
world->ChunkAt((m_posX - cx) * CHUNK_SIZE_X, 1, (m_posY - cy - 1) * CHUNK_SIZE_Z))
|
||||
world->ChunkAt((m_posX - cx) * CHUNK_SIZE_X, 1, (m_posY - cy - 1) * CHUNK_SIZE_Z)->MakeDirty();
|
||||
else if (z == CHUNK_SIZE_X - 1 && m_posY - cy < WORLD_SIZE_Y &&
|
||||
world->ChunkAt((m_posX - cx) * CHUNK_SIZE_X, 1, (m_posY - cy + 1) * CHUNK_SIZE_Z))
|
||||
world->ChunkAt((m_posX - cx) * CHUNK_SIZE_X, 1, (m_posY - cy + 1) * CHUNK_SIZE_Z)->MakeDirty();
|
||||
}
|
||||
|
||||
void Chunk::GetPosition(unsigned int& x, unsigned int& y) const { x = m_posX; y = m_posY; }
|
||||
|
||||
void Chunk::FlushMeshToVBO() {
|
||||
m_vertexBuffer.SetMeshData(m_vd, m_vcount);
|
||||
m_vcount = 0;
|
||||
delete[] m_vd;
|
||||
}
|
||||
|
||||
void Chunk::FlushVBO() {
|
||||
m_vertexBuffer.Flush();
|
||||
}
|
||||
|
||||
void Chunk::Update(BlockInfo* blockinfo[BTYPE_LAST], World* world) {
|
||||
float u, v, s;
|
||||
// Update mesh
|
||||
if (m_isDirty) {
|
||||
int maxVertexCount = (CHUNK_SIZE_X * CHUNK_SIZE_Y * CHUNK_SIZE_Z) * (6 * 4);
|
||||
m_vd = new VertexBuffer::VertexData[maxVertexCount];
|
||||
m_vcount = 0;
|
||||
for (int x = 0; x < CHUNK_SIZE_X; ++x) {
|
||||
for (int z = 0; z < CHUNK_SIZE_Z; ++z) {
|
||||
for (int y = 0; y < CHUNK_SIZE_Y; ++y) {
|
||||
if (m_vcount > USHRT_MAX)
|
||||
break;
|
||||
|
||||
BlockType bt = GetBlock(x, y, z);
|
||||
|
||||
if (bt != BTYPE_AIR) {
|
||||
blockinfo[bt]->GetTexture(u, v, s);
|
||||
AddBlockToMesh(m_vd, m_vcount, bt, x, y, z, u, v, s, world);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (m_vcount > USHRT_MAX) {
|
||||
m_vcount = USHRT_MAX;
|
||||
std::cout << "[ Chunk :: Update ] Chunk data truncaned , too much vertices to have a 16 bit index " << std::endl;
|
||||
}
|
||||
}
|
||||
m_isDirty = false;
|
||||
}
|
||||
|
||||
void Chunk::AddBlockToMesh(VertexBuffer::VertexData* vd, int& count, BlockType bt,
|
||||
int x, int y, int z, float u, float v, float s, World* world) {
|
||||
|
||||
unsigned int cex, cey;
|
||||
|
||||
world->GetScope(cex, cey);
|
||||
|
||||
int cx = x + (m_posX - cex) * CHUNK_SIZE_X, cy = z + (m_posY - cey) * CHUNK_SIZE_Z;
|
||||
|
||||
if (y == CHUNK_SIZE_Y - 1 || GetBlock(x, y + 1, z) == BTYPE_AIR) { // y
|
||||
vd[count++] = VertexBuffer::VertexData(x, y + 1.f, z, .8f, .8f, .8f, u, v);
|
||||
vd[count++] = VertexBuffer::VertexData(x, y + 1.f, z + 1.f, .8f, .8f, .8f, u, v + s);
|
||||
vd[count++] = VertexBuffer::VertexData(x + 1.f, y + 1.f, z + 1.f, .8f, .8f, .8f, u + s, v + s);
|
||||
vd[count++] = VertexBuffer::VertexData(x + 1.f, y + 1.f, z, .8f, .8f, .8f, u + s, v);
|
||||
}
|
||||
|
||||
if (y == 0 || GetBlock(x, y - 1, z) == BTYPE_AIR) { // -y
|
||||
vd[count++] = VertexBuffer::VertexData(x, y, z + 1.f, .2f, .2f, .2f, u, v);
|
||||
vd[count++] = VertexBuffer::VertexData(x, y, z, .2f, .2f, .2f, u, v + s);
|
||||
vd[count++] = VertexBuffer::VertexData(x + 1.f, y, z, .2f, .2f, .2f, u + s, v + s);
|
||||
vd[count++] = VertexBuffer::VertexData(x + 1.f, y, z + 1.f, .2f, .2f, .2f, u + s, v);
|
||||
}
|
||||
|
||||
if (world->BlockAt(cx + 1, y, cy) == BTYPE_AIR) { // x
|
||||
vd[count++] = VertexBuffer::VertexData(x + 1.f, y, z, .9f, .9f, .9f, u, v);
|
||||
vd[count++] = VertexBuffer::VertexData(x + 1.f, y + 1.f, z, .9f, .9f, .9f, u, v + s);
|
||||
vd[count++] = VertexBuffer::VertexData(x + 1.f, y + 1.f, z + 1.f, .9f, .9f, .9f, u + s, v + s);
|
||||
vd[count++] = VertexBuffer::VertexData(x + 1.f, y, z + 1.f, .9f, .9f, .9f, u + s, v);
|
||||
}
|
||||
|
||||
if (world->BlockAt(cx - 1, y, cy) == BTYPE_AIR) { // -x
|
||||
vd[count++] = VertexBuffer::VertexData(x, y + 1.f, z + 1.f, .5f, .5f, .5f, u, v + s);
|
||||
vd[count++] = VertexBuffer::VertexData(x, y + 1.f, z, .5f, .5f, .5f, u + s, v + s);
|
||||
vd[count++] = VertexBuffer::VertexData(x, y, z, .5f, .5f, .5f, u + s, v);
|
||||
vd[count++] = VertexBuffer::VertexData(x, y, z + 1.f, .5f, .5f, .5f, u, v);
|
||||
}
|
||||
|
||||
if (world->BlockAt(cx, y, cy + 1) == BTYPE_AIR) { // z
|
||||
vd[count++] = VertexBuffer::VertexData(x, y, z + 1.f, .4f, .4f, .4f, u, v);
|
||||
vd[count++] = VertexBuffer::VertexData(x + 1.f, y, z + 1.f, .4f, .4f, .4f, u + s, v);
|
||||
vd[count++] = VertexBuffer::VertexData(x + 1.f, y + 1.f, z + 1.f, .4f, .4f, .4f, u + s, v + s);
|
||||
vd[count++] = VertexBuffer::VertexData(x, y + 1.f, z + 1.f, .4f, .4f, .4f, u, v + s);
|
||||
}
|
||||
|
||||
if (world->BlockAt(cx, y, cy - 1) == BTYPE_AIR) { // -z
|
||||
vd[count++] = VertexBuffer::VertexData(x, y + 1.f, z, 1.f, 1.f, 1.f, u, v + s);
|
||||
vd[count++] = VertexBuffer::VertexData(x + 1.f, y + 1.f, z, 1.f, 1.f, 1.f, u + s, v + s);
|
||||
vd[count++] = VertexBuffer::VertexData(x + 1.f, y, z , 1.f, 1.f, 1.f, u + s, v);
|
||||
vd[count++] = VertexBuffer::VertexData(x, y, z , 1.f, 1.f, 1.f, u, v);
|
||||
}
|
||||
}
|
||||
|
||||
void Chunk::Render() const { m_vertexBuffer.Render(); }
|
||||
|
||||
bool Chunk::IsDirty() const { return m_isDirty; }
|
||||
|
||||
void Chunk::MakeDirty() { m_isDirty = true; }
|
||||
|
||||
void Chunk::MakeModified() { m_isModified = true; }
|
||||
|
@@ -1,49 +0,0 @@
|
||||
#ifndef CHUNK_H__
|
||||
#define CHUNK_H__
|
||||
#include "define.h"
|
||||
#include "array3d.h"
|
||||
#include "array2d.h"
|
||||
#include "vertexbuffer.h"
|
||||
#include "blockinfo.h"
|
||||
#include "opensimplex.h"
|
||||
|
||||
class World;
|
||||
|
||||
class Chunk {
|
||||
private:
|
||||
Array3d<BlockType> m_blocks = Array3d<BlockType>(CHUNK_SIZE_X, CHUNK_SIZE_Y, CHUNK_SIZE_Z);
|
||||
VertexBuffer m_vertexBuffer;
|
||||
bool m_isDirty = true;
|
||||
bool m_isModified = false;
|
||||
|
||||
unsigned int m_posX; // Position du chunk dans l'array constituant le monde.
|
||||
unsigned int m_posY;
|
||||
|
||||
VertexBuffer::VertexData* m_vd;
|
||||
int m_vcount;
|
||||
|
||||
void AddBlockToMesh(VertexBuffer::VertexData* vd, int& count, BlockType bt, int x, int y, int z, float u, float v, float s, World* world);
|
||||
|
||||
public:
|
||||
Chunk(unsigned int x, unsigned int y);
|
||||
~Chunk();
|
||||
|
||||
void RemoveBlock(int x, int y, int z, World* world);
|
||||
void SetBlock(int x, int y, int z, BlockType type, World* world);
|
||||
BlockType GetBlock(int x, int y, int z);
|
||||
void CheckNeighbors(unsigned int x, unsigned int z, World* world);
|
||||
void GetPosition(unsigned int& x, unsigned int& y) const;
|
||||
|
||||
|
||||
void Update(BlockInfo* blockinfo[BTYPE_LAST], World* world);
|
||||
void FlushMeshToVBO();
|
||||
|
||||
void FlushVBO();
|
||||
|
||||
void Render() const;
|
||||
bool IsDirty() const;
|
||||
void MakeDirty();
|
||||
void MakeModified();
|
||||
};
|
||||
|
||||
#endif // CHUNK_H__
|
101
SQCSim2021/connector.cpp
Normal file
101
SQCSim2021/connector.cpp
Normal file
@@ -0,0 +1,101 @@
|
||||
#include "connector.h"
|
||||
|
||||
Connector::Connector() {}
|
||||
|
||||
Connector::~Connector() {}
|
||||
|
||||
int Connector::Init() {
|
||||
#ifdef _WIN32
|
||||
if (WSAStartup(MAKEWORD(2, 2), &m_wsaData) != 0) { /* Initialisation de l'environnement reseau (Windows only) */
|
||||
std::cout << "Initialisation WinSock." << std::endl;
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
m_sock_udp = socket(AF_INET, SOCK_DGRAM, 0);
|
||||
if (m_sock_udp == INVALID_SOCKET) { /* Creation du socket UDP */
|
||||
std::cout << "Creation Socket UDP." << std::endl;
|
||||
return 2;
|
||||
}
|
||||
|
||||
m_sock_tcp = socket(AF_INET, SOCK_STREAM, 0);
|
||||
if (m_sock_tcp == INVALID_SOCKET) { /* Creation du socket TCP */
|
||||
std::cout << "Creation Socket TCP." << std::endl;
|
||||
return 3;
|
||||
}
|
||||
|
||||
/* Creation structure donnes descripteur du socket serveur */
|
||||
sockaddr_in addr;
|
||||
addr.sin_family = AF_INET;
|
||||
addr.sin_port = htons(CLI_PORT);
|
||||
addr.sin_addr.s_addr = htonl(INADDR_ANY);
|
||||
|
||||
if (bind(m_sock_udp, (sockaddr*)&addr, sizeof(addr)) != 0) { /* Associer le socket UDP au port */
|
||||
std::cout << "Association Socket UDP." << std::endl;
|
||||
return 4;
|
||||
}
|
||||
|
||||
if (bind(m_sock_tcp, (sockaddr*)&addr, sizeof(addr)) != 0) { /* Associer le socket TCP au port */
|
||||
std::cout << "Association Socket TCP." << std::endl;
|
||||
return 5;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int Connector::Connect(char* srv_addr, std::string name) {
|
||||
sockaddr_in add;
|
||||
m_srvsockaddr.sin_family = AF_INET;
|
||||
m_srvsockaddr.sin_port = htons(SRV_PORT);
|
||||
|
||||
if (inet_pton(AF_INET, srv_addr, &m_srvsockaddr.sin_addr) <= 0) {
|
||||
std::cout << "Addresse serveur invalide." << std::endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (connect(m_sock_tcp, (sockaddr*)&m_srvsockaddr, sizeof(m_srvsockaddr)) < 0) {
|
||||
std::cout << "<EFBFBD>chec de la connexion." << std::endl;
|
||||
}
|
||||
|
||||
char* buf = new char[150];
|
||||
uint32_t buflen = 150;
|
||||
netprot::LoginInfo log;
|
||||
memcpy(&log.name, name.c_str(), name.size() + 1);
|
||||
|
||||
netprot::Serialize(&log, &buf, &buflen);
|
||||
|
||||
int se = send(m_sock_tcp, buf, buflen, 0);
|
||||
|
||||
delete[] buf;
|
||||
buf = new char[150] {0};
|
||||
buflen = 150;
|
||||
int rpack = 0;
|
||||
|
||||
while (rpack < 2) {
|
||||
recv(m_sock_tcp, buf, buflen, 0);
|
||||
|
||||
switch (netprot::getType(buf, buflen)) {
|
||||
case netprot::PACKET_TYPE::LOGINF:
|
||||
if (!netprot::Deserialize(&m_loginfo, buf, buflen)) {
|
||||
std::cout << "Packet LoginInfo invalide." << std::endl;
|
||||
return 2;
|
||||
}
|
||||
++rpack;
|
||||
break;
|
||||
case netprot::PACKET_TYPE::GAMEINFO:
|
||||
if (!netprot::Deserialize(&m_gameinfo, buf, buflen)) {
|
||||
std::cout << "Packet GameInfo invalide." << std::endl;
|
||||
return 3;
|
||||
}
|
||||
++rpack;
|
||||
break;
|
||||
default:
|
||||
std::cout << "Packet invalide." << std::endl;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint64_t Connector::getId() const { return m_loginfo.sid; }
|
||||
|
||||
unsigned int Connector::getSeed() const { return m_gameinfo.seed; }
|
36
SQCSim2021/connector.h
Normal file
36
SQCSim2021/connector.h
Normal file
@@ -0,0 +1,36 @@
|
||||
#ifndef CONNECTOR_H__
|
||||
#define CONNECTOR_H__
|
||||
|
||||
#include <stdlib.h>
|
||||
#include "../SQCSim-common/netprotocol.h"
|
||||
#include "define.h"
|
||||
|
||||
class Connector {
|
||||
public:
|
||||
Connector();
|
||||
~Connector();
|
||||
|
||||
int Init();
|
||||
int Connect(char* srv_addr, std::string name);
|
||||
uint64_t getId() const;
|
||||
unsigned int getSeed() const;
|
||||
|
||||
//void SendInput();
|
||||
//int Sync();
|
||||
private:
|
||||
#ifdef _WIN32
|
||||
WSADATA m_wsaData;
|
||||
#endif
|
||||
std::map<Timestamp, netprot::Input> m_inputmanifest;
|
||||
std::map<uint64_t, netprot::PlayerInfo> m_players;
|
||||
std::map<uint64_t, netprot::TeamInfo> m_teams;
|
||||
|
||||
netprot::LoginInfo m_loginfo;
|
||||
netprot::GameInfo m_gameinfo;
|
||||
|
||||
sockaddr_in m_srvsockaddr;
|
||||
SOCKET m_sock_udp = 0,
|
||||
m_sock_tcp = 0;
|
||||
|
||||
};
|
||||
#endif
|
@@ -1,65 +1,27 @@
|
||||
#ifndef DEFINE_H__
|
||||
#define DEFINE_H__
|
||||
#ifndef CLI_DEFINE_H__
|
||||
#define CLI_DEFINE_H__
|
||||
|
||||
//#define SFML_STATIC true
|
||||
|
||||
#include <iostream>
|
||||
#include <chrono>
|
||||
#include <iomanip>
|
||||
#include <SFML/Window.hpp>
|
||||
#include <SFML/Graphics.hpp>
|
||||
#include <iostream>
|
||||
#include "../SQCSim-common/define.h"
|
||||
|
||||
#ifdef _WIN32
|
||||
#include <windows.h>
|
||||
#include <GL/glew.h>
|
||||
#include <gl/GL.h>
|
||||
#include <gl/GLU.h>
|
||||
#endif
|
||||
|
||||
#define CHUNK_SIZE_X 16
|
||||
#define CHUNK_SIZE_Y 128
|
||||
#define CHUNK_SIZE_Z 16
|
||||
#define MAX_SELECTION_DISTANCE 5
|
||||
#define SEED 12345
|
||||
#define NETWORK_TEST false
|
||||
#define SRV_ADDR "127.0.0.1"
|
||||
#define COUNTDOWN 300
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define WORLD_SIZE_X 64
|
||||
#define WORLD_SIZE_Y 64
|
||||
|
||||
#define FRAMES_RENDER_CHUNKS 4
|
||||
#define FRAMES_UPDATE_CHUNKS 4
|
||||
#define FRAMES_DELETE_CHUNKS 4
|
||||
|
||||
#define THREADS_GENERATE_CHUNKS 1
|
||||
#define THREADS_UPDATE_CHUNKS 1
|
||||
#define THREADS_DELETE_CHUNKS 1
|
||||
|
||||
#define VIEW_DISTANCE 256
|
||||
#define TEXTURE_SIZE 128
|
||||
#define MAX_BULLETS 64
|
||||
#endif
|
||||
|
||||
#ifdef NDEBUG
|
||||
#define WORLD_SIZE_X 16
|
||||
#define WORLD_SIZE_Y 16
|
||||
|
||||
#define FRAMES_RENDER_CHUNKS 1
|
||||
#define FRAMES_UPDATE_CHUNKS 1
|
||||
#define FRAMES_DELETE_CHUNKS 1
|
||||
|
||||
#define THREADS_GENERATE_CHUNKS 12
|
||||
#define THREADS_UPDATE_CHUNKS 5
|
||||
#define THREADS_DELETE_CHUNKS 2
|
||||
|
||||
#define VIEW_DISTANCE 1024
|
||||
#define TEXTURE_SIZE 512
|
||||
#define MAX_BULLETS 512
|
||||
#endif
|
||||
|
||||
|
||||
typedef uint8_t BlockType;
|
||||
enum BLOCK_TYPE { BTYPE_AIR, BTYPE_DIRT, BTYPE_GRASS, BTYPE_METAL, BTYPE_ICE, BTYPE_LAST };
|
||||
|
||||
//#define TEXTURE_PATH "../SQCSim2021/media/textures/"
|
||||
//#define SHADER_PATH "../SQCSim2021/media/shaders/"
|
||||
//#define AUDIO_PATH "../SQCSim2021/media/audio/"
|
||||
//#define CHUNK_PATH "../SQCSim2021/media/chunks/"
|
||||
#define BASE_WIDTH 1920
|
||||
#define BASE_HEIGHT 1080
|
||||
|
||||
#define TEXTURE_PATH "./media/textures/"
|
||||
#define SHADER_PATH "./media/shaders/"
|
||||
|
@@ -1,12 +1,26 @@
|
||||
#include "engine.h"
|
||||
#include <algorithm>
|
||||
#include <cmath>
|
||||
#include "transformation.h"
|
||||
#include "player.h"
|
||||
|
||||
Engine::Engine() { }
|
||||
#include <iostream>
|
||||
#include <chrono>
|
||||
#include <thread>
|
||||
#include <queue>
|
||||
|
||||
Engine::~Engine() {
|
||||
|
||||
|
||||
// Define a structure to represent notifications
|
||||
struct Notification {
|
||||
std::string message;
|
||||
float displayStartTime = 0.0f;
|
||||
};
|
||||
|
||||
// Use a queue to manage notifications
|
||||
//std::queue<Notification> notificationQueue;
|
||||
// Use a vector to manage notifications
|
||||
std::vector<Notification> notifications;
|
||||
|
||||
Engine::Engine() {}
|
||||
|
||||
Engine::~Engine() {
|
||||
m_world.CleanUpWorld(m_renderCount, true);
|
||||
for (int x = 0; x < WORLD_SIZE_X; ++x)
|
||||
for (int y = 0; y < WORLD_SIZE_Y; ++y)
|
||||
@@ -214,33 +228,51 @@ void Engine::Init() {
|
||||
}
|
||||
|
||||
glDisable(GL_FRAMEBUFFER_SRGB);
|
||||
glClearColor(0.f, 0.f, 0.f, 1.f);
|
||||
glEnable(GL_TEXTURE_2D);
|
||||
glMatrixMode(GL_PROJECTION);
|
||||
glLoadIdentity();
|
||||
gluPerspective(45.0f, (float)Width() / (float)Height(), 0.1f, VIEW_DISTANCE);
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
glEnable(GL_STENCIL_TEST);
|
||||
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
|
||||
glShadeModel(GL_SMOOTH);
|
||||
|
||||
glEnable(GL_POINT_SMOOTH);
|
||||
glEnable(GL_CULL_FACE);
|
||||
|
||||
glEnable(GL_BLEND);
|
||||
glBlendFunc(GL_CONSTANT_COLOR, GL_ONE_MINUS_CONSTANT_COLOR);
|
||||
glBlendEquation(GL_FUNC_SUBTRACT);
|
||||
glEnable(GL_CULL_FACE);
|
||||
glEnable(GL_TEXTURE_2D);
|
||||
|
||||
glMatrixMode(GL_PROJECTION);
|
||||
glLoadIdentity();
|
||||
|
||||
gluPerspective(45.0f, (float)Width() / (float)Height(), 0.1f, VIEW_DISTANCE);
|
||||
glShadeModel(GL_SMOOTH);
|
||||
|
||||
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
|
||||
glDisable(GL_BLEND);
|
||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||
glBlendEquation(GL_FUNC_SUBTRACT);
|
||||
//
|
||||
// Objet de skybox avec sa propre texture et son propre shader!
|
||||
m_skybox.Init(0.2f);
|
||||
|
||||
// Objet de musique!
|
||||
m_audio.ToggleMusicState();
|
||||
//m_audio.ToggleMusicState();
|
||||
|
||||
// Array pour les balles.
|
||||
for (int x = 0; x < MAX_BULLETS; ++x)
|
||||
m_bullets[x] = nullptr;
|
||||
|
||||
uint64_t seed = SEED;
|
||||
std::string playname = "La Chienne <20> Jacques";
|
||||
if (NETWORK_TEST) { // Test connexion r<>seau.
|
||||
if (!m_conn.Init()) {
|
||||
if (!m_conn.Connect(SRV_ADDR, playname)) {
|
||||
// setup jeu en r<>seau.
|
||||
std::cout << "ID re<72>u du serveur: " << std::to_string(m_conn.getId()) << "!" << std::endl;
|
||||
std::cout << "Seed re<72>u du serveur: " << std::to_string(m_conn.getSeed()) << "!" << std::endl;
|
||||
seed = m_conn.getSeed();
|
||||
}
|
||||
else std::cout << "Erreur de connexion." << std::endl;
|
||||
}
|
||||
else std::cout << "Erreur de cr<63>ation de socket." << std::endl;
|
||||
}
|
||||
|
||||
m_world.SetSeed(seed);
|
||||
|
||||
// Init Chunks
|
||||
m_world.GetChunks().Reset(nullptr);
|
||||
|
||||
@@ -249,12 +281,14 @@ void Engine::Init() {
|
||||
HideCursor();
|
||||
}
|
||||
|
||||
void Engine::DeInit() { }
|
||||
void Engine::DeInit() {}
|
||||
|
||||
void Engine::LoadResource() {
|
||||
LoadTexture(m_skybox.GetTexture(), TEXTURE_PATH "skybox.png");
|
||||
LoadTexture(m_textureCrosshair, TEXTURE_PATH "cross.bmp");
|
||||
LoadTexture(m_textureFont, TEXTURE_PATH "font.bmp");
|
||||
LoadTexture(m_skybox.GetTexture(), TEXTURE_PATH "skybox.png", true);
|
||||
LoadTexture(m_textureCrosshair, TEXTURE_PATH "cross.bmp", true);
|
||||
LoadTexture(m_textureFont, TEXTURE_PATH "font.bmp", true);
|
||||
LoadTexture(m_textureGun, TEXTURE_PATH "gun01.png", false);
|
||||
|
||||
LoadTexture(MenuTitleTexture, MENU_ITEM_PATH "test.png");
|
||||
LoadTexture(MenuBGTexture, MENU_ITEM_PATH "test.png");
|
||||
LoadTexture(MenuQuitTexture, MENU_ITEM_PATH "BasicQuit.png");
|
||||
@@ -294,102 +328,327 @@ void Engine::LoadResource() {
|
||||
|
||||
void Engine::UnloadResource() {}
|
||||
|
||||
void Engine::DrawHud(float elapsedTime, BlockType bloc) {
|
||||
// Setter le blend function , tout ce qui sera noir sera transparent
|
||||
glDisable(GL_STENCIL_TEST);
|
||||
glColor4f(1.f, 1.f, 1.f, 1.f);
|
||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE);
|
||||
glBlendEquation(GL_FUNC_ADD);
|
||||
glDisable(GL_DEPTH_TEST);
|
||||
glMatrixMode(GL_PROJECTION);
|
||||
glPushMatrix();
|
||||
glLoadIdentity();
|
||||
glOrtho(0, Width(), 0, Height(), -1, 1);
|
||||
glMatrixMode(GL_MODELVIEW);
|
||||
glPushMatrix();
|
||||
void Engine::SystemNotification(std::string systemLog) {
|
||||
std::string message = "";
|
||||
|
||||
// Bind de la texture pour le font
|
||||
message = systemLog;
|
||||
|
||||
DisplayNotification(message);
|
||||
}
|
||||
void Engine::KillNotification(Player killer, Player killed) {
|
||||
std::string message = "";
|
||||
|
||||
message = killed.GetUsername() + " killed by -> " + killer.GetUsername();
|
||||
|
||||
DisplayNotification(message);
|
||||
}
|
||||
|
||||
|
||||
void Engine::DisplayNotification(std::string message) {
|
||||
|
||||
if (message.length() > 45) {
|
||||
message = message.substr(0, 45);
|
||||
}
|
||||
// Create a new notification and add it to the queue
|
||||
Notification newNotification;
|
||||
newNotification.message = message;
|
||||
newNotification.displayStartTime = m_time;
|
||||
|
||||
notifications.push_back(newNotification);
|
||||
}
|
||||
|
||||
// Add a method to process the notification queue
|
||||
void Engine::ProcessNotificationQueue() {
|
||||
m_textureFont.Bind();
|
||||
std::ostringstream ss;
|
||||
ss << " Fps : " << GetFps(elapsedTime);
|
||||
PrintText(10, Height() - 25, ss.str());
|
||||
ss.str("");
|
||||
ss << " Rendered Chunks : " << m_renderCount;
|
||||
PrintText(10, Height() - 35, ss.str());
|
||||
ss.str("");
|
||||
ss << " To-Be-Deleted Chunks : " << m_world.GettbDeleted();
|
||||
PrintText(10, Height() - 45, ss.str());
|
||||
ss.str("");
|
||||
ss << " Velocity : " << m_player.GetVelocity(); // IMPORTANT : on utilise l <20> operateur << pour afficher la position
|
||||
PrintText(10, 10, ss.str());
|
||||
ss.str("");
|
||||
ss << " Direction : " << m_player.GetDirection();
|
||||
PrintText(10, 20, ss.str());
|
||||
ss.str("");
|
||||
ss << " Position : " << m_player.GetPosition();
|
||||
PrintText(10, 30, ss.str());
|
||||
ss.str("");
|
||||
ss << " Block : ";
|
||||
if (bloc == BTYPE_LAST)
|
||||
ss << "Weapon.";
|
||||
else ss << (int)bloc;
|
||||
PrintText(10, 40, ss.str());
|
||||
float scale = GetScale();
|
||||
unsigned int xOffset = Width() - Width() * 0.26;
|
||||
unsigned int yOffset = Height() - (Height() / 2.2);
|
||||
|
||||
// Iterate through the notifications and display them
|
||||
for (auto it = notifications.begin(); it != notifications.end(); ) {
|
||||
float timeSinceDisplay = m_time - it->displayStartTime;
|
||||
|
||||
// Display the notification message with vertical offset
|
||||
unsigned int y = yOffset - (static_cast<unsigned int>(scale * 20) * (it - notifications.begin()));
|
||||
glDisable(GL_STENCIL_TEST);
|
||||
glDisable(GL_DEPTH_TEST);
|
||||
|
||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE);
|
||||
glBlendEquation(GL_FUNC_ADD);
|
||||
|
||||
glMatrixMode(GL_PROJECTION);
|
||||
glPushMatrix();
|
||||
|
||||
glLoadIdentity();
|
||||
glOrtho(0, Width(), 0, Height(), -1, 1);
|
||||
|
||||
glMatrixMode(GL_MODELVIEW);
|
||||
glPushMatrix();
|
||||
|
||||
|
||||
|
||||
PrintText(xOffset, y, scale, it->message);
|
||||
|
||||
glBlendFunc(GL_CONSTANT_COLOR, GL_ONE_MINUS_CONSTANT_COLOR);
|
||||
glBlendEquation(GL_FUNC_SUBTRACT);
|
||||
|
||||
glEnable(GL_STENCIL_TEST);
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
|
||||
glMatrixMode(GL_PROJECTION);
|
||||
glPopMatrix();
|
||||
|
||||
glMatrixMode(GL_MODELVIEW);
|
||||
glPopMatrix();
|
||||
// Check if it's time to remove the notification (display for 2 seconds)
|
||||
if (timeSinceDisplay >= 4.0f) {
|
||||
it = notifications.erase(it); // Remove the notification
|
||||
}
|
||||
else {
|
||||
++it;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Engine::DisplayCrosshair() {
|
||||
m_textureCrosshair.Bind();
|
||||
static const int crossSize = 32;
|
||||
glLoadIdentity();
|
||||
glTranslated(Width() / 2 - crossSize / 2, Height() / 2 - crossSize / 2, 0);
|
||||
glBegin(GL_QUADS);
|
||||
glTexCoord2f(0, 0);
|
||||
glVertex2i(0, 0);
|
||||
glTexCoord2f(1, 0);
|
||||
glVertex2i(crossSize, 0);
|
||||
glTexCoord2f(1, 1);
|
||||
glVertex2i(crossSize, crossSize);
|
||||
glTexCoord2f(0, 1);
|
||||
glVertex2i(0, crossSize);
|
||||
glTexCoord2f(0, 0);
|
||||
glVertex2i(0, 0);
|
||||
glTexCoord2f(1, 0);
|
||||
glVertex2i(crossSize, 0);
|
||||
glTexCoord2f(1, 1);
|
||||
glVertex2i(crossSize, crossSize);
|
||||
glTexCoord2f(0, 1);
|
||||
glVertex2i(0, crossSize);
|
||||
glEnd();
|
||||
}
|
||||
|
||||
void Engine::DisplayCurrentItem() {
|
||||
}
|
||||
|
||||
void Engine::DisplayHud(int timer) {
|
||||
glBindTexture(GL_TEXTURE_2D, 0);
|
||||
glLoadIdentity();
|
||||
glDisable(GL_BLEND);
|
||||
|
||||
// Barre HP
|
||||
float fBarWidth = Width() / 4;
|
||||
float fBarHeight = Height() / 25;
|
||||
float fPosX = Width() / 20;
|
||||
float fPosY = Height() - (Height() - (fBarHeight * 4));
|
||||
float playerHp = m_player.GetHP();
|
||||
float facteurOmbrage = m_displayInfo ? 0.5f : 1.0f;
|
||||
|
||||
// Arri<72>re-plan (Barre HP)
|
||||
glColor3f(1.0f * facteurOmbrage, 1.0f * facteurOmbrage, 1.0f * facteurOmbrage);
|
||||
glBegin(GL_QUADS);
|
||||
glVertex2f(fPosX, fPosY - fBarHeight); // Bas-Gauche
|
||||
glVertex2f(fPosX + fBarWidth, fPosY - fBarHeight); // Bas-Droite
|
||||
glVertex2f(fPosX + fBarWidth, fPosY); // Haut-Droite
|
||||
glVertex2f(fPosX, fPosY); // Haut-Gauche
|
||||
glEnd();
|
||||
|
||||
//TODO: Associer avec m<>chanique de vie du joueur
|
||||
|
||||
// Barre HP
|
||||
glColor3f(0.0f * facteurOmbrage, 1.0f * facteurOmbrage, 0.0f * facteurOmbrage);
|
||||
glBegin(GL_QUADS);
|
||||
glVertex2f(fPosX, fPosY - fBarHeight); // Bas-Gauche
|
||||
glVertex2f(fPosX + fBarWidth * playerHp, fPosY - fBarHeight); // Bas-Droite
|
||||
glVertex2f(fPosX + fBarWidth * playerHp, fPosY); // Haut-Droite
|
||||
glVertex2f(fPosX, fPosY); // Haut-Gauche
|
||||
glEnd();
|
||||
|
||||
// Barre <20>quip
|
||||
glEnable(GL_BLEND);
|
||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||
glColor3f(1.0f * facteurOmbrage, 1.0f * facteurOmbrage, 1.0f * facteurOmbrage);
|
||||
m_textureGun.Bind();
|
||||
|
||||
float margin = Width() * 0.05;
|
||||
float itemWidth = Width() * 0.33;
|
||||
float itemHeight = itemWidth / 2.208;
|
||||
float startX = Width() - itemWidth - margin;
|
||||
float startY = margin;
|
||||
|
||||
glTranslated(startX, startY, 0);
|
||||
|
||||
glBegin(GL_QUADS);
|
||||
glTexCoord2f(1, 0); glVertex2i(0, 0);
|
||||
glTexCoord2f(0, 0); glVertex2i(itemWidth, 0);
|
||||
glTexCoord2f(0, 1); glVertex2i(itemWidth, itemHeight);
|
||||
glTexCoord2f(1, 1); glVertex2i(0, itemHeight);
|
||||
glEnd();
|
||||
|
||||
glDisable(GL_BLEND);
|
||||
|
||||
// Username
|
||||
glEnable(GL_BLEND);
|
||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE);
|
||||
|
||||
glColor3f(1.0f, 1.0f, 1.0f);
|
||||
float scale = GetScale();
|
||||
m_textureFont.Bind();
|
||||
std::ostringstream ss;
|
||||
ss << m_player.GetUsername();
|
||||
PrintText(fPosX, fPosY, scale, ss.str());
|
||||
|
||||
//Countdown
|
||||
ss.str("");
|
||||
ss << "Time: " << (int)(timer / 60) << ":" << std::setw(2) << std::setfill('0') << timer % 60;
|
||||
PrintText(Width() - Width() * 0.15, Height() - (Height() / 19.2), scale, ss.str());
|
||||
|
||||
}
|
||||
|
||||
void Engine::DisplayInfo(float elapsedTime, BlockType bloc) {
|
||||
// Bind de la texture pour le font
|
||||
m_textureFont.Bind();
|
||||
std::ostringstream ss;
|
||||
|
||||
float scale = GetScale();
|
||||
unsigned int x = Width() / 25;
|
||||
|
||||
ss << " Fps : " << GetFps(elapsedTime);
|
||||
PrintText(x, Height() - (Height() / 19.2), scale, ss.str());
|
||||
ss.str("");
|
||||
ss << " Rendered Chunks : " << m_renderCount;
|
||||
PrintText(x, Height() - (Height() / 13.7), scale, ss.str());
|
||||
ss.str("");
|
||||
ss << " To-Be-Deleted Chunks : " << m_world.GettbDeleted();
|
||||
PrintText(x, Height() - (Height() / 10.7), scale, ss.str());
|
||||
ss.str("");
|
||||
ss << " Velocity : " << m_player.GetVelocity(); // IMPORTANT : on utilise l <20> operateur << pour afficher la position
|
||||
PrintText(x, Height() / 48, scale, ss.str());
|
||||
ss.str("");
|
||||
ss << " Direction : " << m_player.GetDirection();
|
||||
PrintText(x, Height() / 24, scale, ss.str());
|
||||
ss.str("");
|
||||
ss << " Position : " << m_player.GetPosition();
|
||||
PrintText(x, Height() / 16, scale, ss.str());
|
||||
ss.str("");
|
||||
ss << " Block : ";
|
||||
|
||||
if (bloc == BTYPE_LAST)
|
||||
ss << "Weapon.";
|
||||
else ss << (int)bloc;
|
||||
|
||||
PrintText(x, Height() / 12, scale, ss.str());
|
||||
}
|
||||
|
||||
void Engine::DrawHud(float elapsedTime, BlockType bloc) {
|
||||
// Setter le blend function, tout ce qui sera noir sera transparent
|
||||
glDisable(GL_STENCIL_TEST);
|
||||
glDisable(GL_DEPTH_TEST);
|
||||
|
||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE);
|
||||
glBlendEquation(GL_FUNC_ADD);
|
||||
|
||||
glMatrixMode(GL_PROJECTION);
|
||||
glPushMatrix();
|
||||
|
||||
glLoadIdentity();
|
||||
glOrtho(0, Width(), 0, Height(), -1, 1);
|
||||
|
||||
glMatrixMode(GL_MODELVIEW);
|
||||
glPushMatrix();
|
||||
|
||||
int timer = GetCountdown(elapsedTime);
|
||||
|
||||
// Appel de la fonction pour l'affichage de notifications
|
||||
if (m_keyK) {
|
||||
SystemNotification(m_messageNotification);
|
||||
m_keyK = false;
|
||||
}
|
||||
if (m_keyL) {
|
||||
|
||||
KillNotification(m_player, m_player);
|
||||
m_keyL = false;
|
||||
}
|
||||
|
||||
if (m_displayInfo) {
|
||||
DisplayInfo(elapsedTime, bloc);
|
||||
}
|
||||
|
||||
if (m_displayHud) {
|
||||
DisplayHud(timer);
|
||||
}
|
||||
|
||||
if (m_displayCrosshair) {
|
||||
DisplayCrosshair();
|
||||
}
|
||||
|
||||
// Reset du blend function
|
||||
glBlendFunc(GL_CONSTANT_COLOR, GL_ONE_MINUS_CONSTANT_COLOR);
|
||||
glBlendEquation(GL_FUNC_SUBTRACT);
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
|
||||
glEnable(GL_STENCIL_TEST);
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
|
||||
glMatrixMode(GL_PROJECTION);
|
||||
glPopMatrix();
|
||||
|
||||
glMatrixMode(GL_MODELVIEW);
|
||||
glPopMatrix();
|
||||
}
|
||||
|
||||
void Engine::PrintText(unsigned int x, unsigned int y, const std::string& t) {
|
||||
void Engine::PrintText(float x, float y, float scale, const std::string& t) {
|
||||
glLoadIdentity();
|
||||
glTranslated(x, y, 0);
|
||||
|
||||
for (unsigned int i = 0; i < t.length(); ++i) {
|
||||
float left = (float)((t[i] - 32) % 16) / 16.f;
|
||||
float top = (float)((t[i] - 32) / 16) / 16.f;
|
||||
top += .5f;
|
||||
|
||||
glBegin(GL_QUADS);
|
||||
glTexCoord2f(left, 1.f - top - .0625f);
|
||||
glVertex2f(0, 0);
|
||||
glTexCoord2f(left + .0625f, 1.f - top - .0625f);
|
||||
glVertex2f(12, 0);
|
||||
glTexCoord2f(left + .0625f, 1.f - top);
|
||||
glVertex2f(12, 12);
|
||||
glTexCoord2f(left, 1.f - top);
|
||||
glVertex2f(0, 12);
|
||||
glTexCoord2f(left, 1.f - top - .0625f); glVertex2f(0, 0);
|
||||
glTexCoord2f(left + .0625f, 1.f - top - .0625f); glVertex2f(12 * scale, 0);
|
||||
glTexCoord2f(left + .0625f, 1.f - top); glVertex2f(12 * scale, 12 * scale);
|
||||
glTexCoord2f(left, 1.f - top); glVertex2f(0, 12 * scale);
|
||||
glEnd();
|
||||
glTranslated(8, 0, 0);
|
||||
|
||||
glTranslated(8 * scale, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
float Engine::GetScale() const {
|
||||
float widthRatio = Width() / BASE_WIDTH;
|
||||
float heightRatio = Height() / BASE_HEIGHT;
|
||||
|
||||
return (widthRatio + heightRatio) / 2.0f;
|
||||
}
|
||||
|
||||
int Engine::GetFps(float elapsedTime) const { return 1 / elapsedTime; }
|
||||
int Engine::GetCountdown(float elapsedTime) {
|
||||
if (m_resetcountdown)
|
||||
{
|
||||
m_countdown = m_time + COUNTDOWN;
|
||||
m_resetcountdown = false;
|
||||
}
|
||||
if (m_countdown < m_time)
|
||||
Stop();
|
||||
if(!m_stopcountdown)
|
||||
m_time += elapsedTime;
|
||||
return m_countdown - (int)m_time;
|
||||
}
|
||||
|
||||
void Engine::Render(float elapsedTime) {
|
||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
|
||||
|
||||
if (m_gamestate == GameState::PLAY)
|
||||
{
|
||||
CenterMouse(); //D<>placement de centermouse dans l'action de jouer
|
||||
CenterMouse(); //D<>placement de centermouse dans l'action de jouer
|
||||
|
||||
//static float gameTime = elapsedTime;
|
||||
static float pollTime = 0;
|
||||
static irrklang::ISound* step; // Pour les sons de pas.
|
||||
static float pollTime = 0;
|
||||
static float bulletTime = 0;
|
||||
static BlockType bloc = 1;
|
||||
|
||||
@@ -400,6 +659,7 @@ void Engine::Render(float elapsedTime) {
|
||||
|
||||
Transformation all;
|
||||
Transformation skybox;
|
||||
Vector3f vstep;
|
||||
|
||||
// Transformations initiales
|
||||
glMatrixMode(GL_MODELVIEW);
|
||||
@@ -408,12 +668,26 @@ void Engine::Render(float elapsedTime) {
|
||||
if (bulletTime > 0.f) bulletTime -= elapsedTime;
|
||||
if (bulletTime < 0.f) bulletTime = 0.f;
|
||||
|
||||
if (pollTime >= .005f) {
|
||||
m_player.ApplyPhysics(m_player.GetInput(m_keyW, m_keyS, m_keyA, m_keyD, m_keySpace, (bloc == BTYPE_LAST && bulletTime <= 0.f && m_mouseL), elapsedTime), &m_world, elapsedTime, &m_audio);
|
||||
m_audio.Update3DAudio(m_player.GetPOV(), m_player.GetDirection(), m_player.GetVelocity()); // Ajustement du positionnement 3D avec les coordonn<6E>es du joueur et
|
||||
// son vecteur de v<>locit<69> (pour l'effet Doppler)
|
||||
pollTime = 0;
|
||||
static bool leftright = false;
|
||||
if (pollTime >= .005f) {
|
||||
Player::Sound snd = m_player.ApplyPhysics(m_player.GetInput(m_keyW, m_keyS, m_keyA, m_keyD, m_keySpace, (bloc == BTYPE_LAST && bulletTime <= 0.f && m_mouseL), elapsedTime), &m_world, elapsedTime);
|
||||
switch (snd) {
|
||||
case Player::Sound::STEP:
|
||||
if (leftright)
|
||||
vstep = Vector3f(m_player.GetPosition().x + m_player.GetDirection().z, m_player.GetPosition().y - 1.7f, m_player.GetPosition().z + m_player.GetDirection().x);
|
||||
else vstep = Vector3f(m_player.GetPosition().x - m_player.GetDirection().z, m_player.GetPosition().y - 1.7f, m_player.GetPosition().z - m_player.GetDirection().x);
|
||||
m_audio.Create3DAudioObj(step, AUDIO_PATH "step.wav", vstep, m_player.GetVelocity(), .8f);
|
||||
leftright = !leftright;
|
||||
break;
|
||||
case Player::Sound::FALL:
|
||||
m_audio.Create3DAudioObj(step, AUDIO_PATH "hit.wav", m_player.GetPosition(), m_player.GetVelocity(), 1.f);
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
m_audio.Update3DAudio(m_player.GetPOV(), m_player.GetDirection(), m_player.GetVelocity()); // Ajustement du positionnement 3D avec les coordonn<6E>es du joueur et
|
||||
// son vecteur de v<>locit<69> (pour l'effet Doppler)
|
||||
pollTime = 0;
|
||||
}
|
||||
|
||||
m_player.ApplyTransformation(all);
|
||||
|
||||
@@ -423,121 +697,123 @@ void Engine::Render(float elapsedTime) {
|
||||
if (m_mouseWU) bloc++;
|
||||
else if (m_mouseWD) bloc--;
|
||||
if (bloc == BTYPE_LAST + 1) bloc = BTYPE_AIR + 1;
|
||||
else if (bloc == BTYPE_AIR) bloc = BTYPE_LAST; // La selection de BTYPE_LAST <20>quipe l'arme.
|
||||
else if (bloc == BTYPE_AIR) bloc = BTYPE_LAST; // La selection de BTYPE_LAST <20>quipe l'arme.
|
||||
m_mouseWU = m_mouseWD = false;
|
||||
|
||||
if (m_mouseL) {
|
||||
if (bloc != BTYPE_LAST)
|
||||
m_world.ChangeBlockAtCursor(bloc, m_player, m_block);
|
||||
else if (bulletTime <= 0.f) {
|
||||
for (int x = 0; x < MAX_BULLETS; ++x) // Ajouter une balle dans l'array (aussi connu sous le nom de "faire pow pow").
|
||||
if (!m_bullets[x]) {
|
||||
m_bullets[x] = new Bullet(m_player);
|
||||
break;
|
||||
}
|
||||
else if (x == MAX_BULLETS - 1) { // S'il y a pas d'espace dans l'array, prendre la place de la premi<6D>re balle de l'array.
|
||||
m_bullets[0]->~Bullet();
|
||||
m_bullets[0] = new Bullet(m_player);
|
||||
}
|
||||
bulletTime = .1f;
|
||||
m_audio.Create3DAudioObj(m_powpow, AUDIO_PATH "pow.wav", m_player.GetPOV(), m_player.GetDirection() * 10, .5f);
|
||||
if (m_flash) { // Coupe le rendering et affiche un frame blanc, pour simuler un flash.
|
||||
glClearColor(.8f, .8f, .8f, 1.f);
|
||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
|
||||
glClearColor(0.f, 0.f, 0.f, 1.f);
|
||||
return;
|
||||
if (m_mouseL) {
|
||||
if (bloc != BTYPE_LAST)
|
||||
m_world.ChangeBlockAtCursor(bloc, m_player.GetPosition(), m_player.GetDirection(), m_block);
|
||||
else if (bulletTime <= 0.f) {
|
||||
for (int x = 0; x < MAX_BULLETS; ++x) // Ajouter une balle dans l'array (aussi connu sous le nom de "faire pow pow").
|
||||
if (!m_bullets[x]) {
|
||||
m_bullets[x] = new Bullet(m_player.GetPOV() + m_player.GetDirection(), m_player.GetDirection());
|
||||
break;
|
||||
}
|
||||
else if (x == MAX_BULLETS - 1) { // S'il y a pas d'espace dans l'array, prendre la place de la premi<6D>re balle de l'array.
|
||||
m_bullets[0]->~Bullet();
|
||||
m_bullets[0] = new Bullet(m_player.GetPOV() + m_player.GetDirection(), m_player.GetDirection());
|
||||
}
|
||||
bulletTime = .1f;
|
||||
m_audio.Create3DAudioObj(m_powpow, AUDIO_PATH "windowsaccount.wav", m_player.GetPOV(), m_player.GetDirection() * 10, .5f);
|
||||
if (m_flash) { // Coupe le rendering et affiche un frame blanc, pour simuler un flash.
|
||||
glClearColor(.8f, .8f, .8f, 1.f);
|
||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
|
||||
glClearColor(0.f, 0.f, 0.f, 1.f);
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if (m_mouseR)
|
||||
m_world.ChangeBlockAtCursor(BTYPE_AIR, m_player, m_block);
|
||||
|
||||
for (int x = 0; x < MAX_BULLETS; ++x) // Array de bullets en jeu.
|
||||
if (m_bullets[x])
|
||||
if (m_bullets[x]->Update(&m_world, all, elapsedTime)) {
|
||||
m_bullets[x]->~Bullet();
|
||||
m_bullets[x] = nullptr;
|
||||
}
|
||||
|
||||
m_world.Update(m_renderCount, m_bullets, m_player, all, m_shader01, m_textureAtlas, m_blockinfo);
|
||||
|
||||
if (m_isSkybox) m_skybox.Render(skybox);
|
||||
|
||||
if (m_wireframe)
|
||||
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
|
||||
DrawHud(elapsedTime, bloc);
|
||||
if (m_wireframe)
|
||||
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
|
||||
|
||||
static bool fell = false;
|
||||
if (m_player.GetPosition().y < 1.7f && !fell) {
|
||||
m_audio.Create3DAudioObj(m_scream, AUDIO_PATH "scream.wav", m_player.GetPOV(), m_player.GetVelocity(), 1.f);
|
||||
fell = true;
|
||||
}
|
||||
else if (m_player.GetPosition().y < -20.f) {
|
||||
m_player = Player(Vector3f(.5f, CHUNK_SIZE_Y + 1.8f, .5f)); // Respawn si le bonho- joueur tombe en bas du monde.
|
||||
fell = false;
|
||||
}
|
||||
}
|
||||
else if (m_gamestate == GameState::MAIN_MENU || m_gamestate == GameState::OPTIONS)
|
||||
{
|
||||
DrawMenu();
|
||||
}
|
||||
else if (m_gamestate == GameState::QUIT)
|
||||
Stop();
|
||||
else if (m_mouseR)
|
||||
m_world.ChangeBlockAtCursor(BTYPE_AIR, m_player.GetPosition(), m_player.GetDirection(), m_block);
|
||||
|
||||
for (int x = 0; x < MAX_BULLETS; ++x) // Array de bullets en jeu.
|
||||
if (m_bullets[x])
|
||||
if (m_bullets[x]->Update(&m_world, elapsedTime)) {
|
||||
m_bullets[x]->~Bullet();
|
||||
m_bullets[x] = nullptr;
|
||||
}
|
||||
|
||||
m_wrenderer.RenderWorld(&m_world, m_renderCount, m_player.GetPosition(), m_player.GetDirection(), all, m_shader01, m_textureAtlas);
|
||||
m_world.Update(m_bullets, m_player.GetPosition(), m_blockinfo);
|
||||
m_wrenderer.UpdateWorld(&m_world, m_player.GetPosition(), m_blockinfo);
|
||||
|
||||
if (m_isSkybox) m_skybox.Render(skybox);
|
||||
|
||||
ProcessNotificationQueue();
|
||||
DrawHud(elapsedTime, bloc);
|
||||
|
||||
static bool fell = false;
|
||||
if (m_player.GetPosition().y < 1.7f && !fell) {
|
||||
m_audio.Create3DAudioObj(m_scream, AUDIO_PATH "scream.wav", m_player.GetPOV(), m_player.GetVelocity(), 1.f);
|
||||
fell = true;
|
||||
}
|
||||
else if (m_player.GetPosition().y < -20.f) {
|
||||
m_player = Player(Vector3f(.5f, CHUNK_SIZE_Y + 1.8f, .5f)); // Respawn si le bonho- joueur tombe en bas du monde.
|
||||
fell = false;
|
||||
}
|
||||
}
|
||||
|
||||
void Engine::KeyPressEvent(unsigned char key) {
|
||||
switch (key) {
|
||||
case 36: // ESC
|
||||
Stop();
|
||||
break;
|
||||
case 94: // F10
|
||||
SetFullscreen(!IsFullscreen());
|
||||
break;
|
||||
case 22: // W
|
||||
if (!m_keyW) {
|
||||
// std::cout << "W " << std::endl;
|
||||
m_keyW = true;
|
||||
}
|
||||
break;
|
||||
case 0: // A
|
||||
case 0: // A - Gauche
|
||||
if (!m_keyA) {
|
||||
//std::cout << "A " << std::endl;
|
||||
m_keyA = true;
|
||||
}
|
||||
break;
|
||||
case 18: // S
|
||||
if (!m_keyS) {
|
||||
//std::cout << "S " << std::endl;
|
||||
m_keyS = true;
|
||||
}
|
||||
break;
|
||||
case 3: // D
|
||||
case 3: // D - Droite
|
||||
if (!m_keyD) {
|
||||
//std::cout << "D " << std::endl;
|
||||
m_keyD = true;
|
||||
}
|
||||
break;
|
||||
case 38: // Left Shift
|
||||
if (!m_keylshift) {
|
||||
//std::cout << "Dash!" << std::endl;
|
||||
m_keylshift = true;
|
||||
case 18: // S - Reculer
|
||||
if (!m_keyS) {
|
||||
m_keyS = true;
|
||||
}
|
||||
break;
|
||||
case 57: // Space
|
||||
case 22: // W - Avancer
|
||||
if (!m_keyW) {
|
||||
m_keyW = true;
|
||||
}
|
||||
break;
|
||||
case 36: // ESC - Quitter
|
||||
Stop();
|
||||
break;
|
||||
case 57: // Space - Sauter
|
||||
if (!m_keySpace) {
|
||||
//std::cout << "Jump! " << std::endl;
|
||||
m_keySpace = true;
|
||||
}
|
||||
break;
|
||||
case 94: // F10 - Plein <20>cran
|
||||
IsFullscreen() ? SetFullscreen(false) : SetFullscreen(true);
|
||||
//SetFullscreen(!IsFullscreen());
|
||||
break;
|
||||
case 2: // C - Ignorer
|
||||
break;
|
||||
case 5: // F - Ignorer
|
||||
case 24: // Y - Ignorer
|
||||
case 255: // Fn - Ignorer
|
||||
break;
|
||||
case 10: // K - Debugging DisplayNotification()
|
||||
m_keyK = true;
|
||||
m_messageNotification = "notifications systeme peuvent <20>tre affich<63>";
|
||||
break;
|
||||
case 11: // L - Debugging DisplayNotification()
|
||||
m_keyL = true;
|
||||
break;
|
||||
case 6: // G - Ignorer
|
||||
break;
|
||||
case 12: // M - Ignorer
|
||||
break;
|
||||
case 7: // H - Ignorer
|
||||
break;
|
||||
case 8: // I - Ignorer
|
||||
break;
|
||||
case 17: // R - Ignorer
|
||||
break;
|
||||
case 19: // T - Ignorer
|
||||
break;
|
||||
case 24: // Y - Ignorer
|
||||
break;
|
||||
case 255: // Fn - Ignorer
|
||||
break;
|
||||
default:
|
||||
std::cout << "Unhandled key: " << (int)key << std::endl;
|
||||
}
|
||||
@@ -545,44 +821,61 @@ void Engine::KeyPressEvent(unsigned char key) {
|
||||
|
||||
void Engine::KeyReleaseEvent(unsigned char key) {
|
||||
switch (key) {
|
||||
case 5:
|
||||
case 0: // A - Stop gauche
|
||||
m_keyA = false;
|
||||
break;
|
||||
case 2: // C - Toggle crosshair
|
||||
m_displayCrosshair = !m_displayCrosshair;
|
||||
std::cout << "DISPLAY CROSSHAIR " << (m_displayCrosshair ? "enabled" : "disabled") << std::endl;
|
||||
break;
|
||||
case 3: // D - Stop droite
|
||||
m_keyD = false;
|
||||
break;
|
||||
case 5: // F - Toggle flash
|
||||
m_flash = !m_flash;
|
||||
break;
|
||||
case 12:
|
||||
case 6: // G - Toggle Stop Countdown
|
||||
m_stopcountdown = !m_stopcountdown;
|
||||
std::cout << "STOP COUNTDOWN " << (m_stopcountdown ? "enabled" : "disabled") << std::endl;
|
||||
break;
|
||||
case 7: // H - Toggle HUD
|
||||
m_displayHud = !m_displayHud;
|
||||
std::cout << "DISPLAY HUD " << (m_displayHud ? "enabled" : "disabled") << std::endl;
|
||||
break;
|
||||
case 8: // I - Toggle render data
|
||||
m_displayInfo = !m_displayInfo;
|
||||
std::cout << "DISPLAY INFO " << (m_displayInfo ? "enabled" : "disabled") << std::endl;
|
||||
break;
|
||||
case 10: // K
|
||||
m_keyK = false;
|
||||
break;
|
||||
case 11: // L - Debugging DisplayNotification()
|
||||
m_keyL = false;
|
||||
break;
|
||||
case 12: // M - Toggle music
|
||||
m_audio.ToggleMusicState();
|
||||
break;
|
||||
case 17:
|
||||
case 17: // R - Toggle skybox
|
||||
m_isSkybox = !m_isSkybox;
|
||||
break;
|
||||
case 24: // Y
|
||||
case 18: // S - Stop reculer
|
||||
m_keyS = false;
|
||||
break;
|
||||
case 19: // T -Reset countdown
|
||||
m_resetcountdown = true;
|
||||
std::cout << "RESET COUNTDOWN" << std::endl;
|
||||
break;
|
||||
case 22: // W - Stop avancer
|
||||
m_keyW = false;
|
||||
break;
|
||||
case 24: // Y - Wireframe
|
||||
m_wireframe = !m_wireframe;
|
||||
if (m_wireframe)
|
||||
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
|
||||
else
|
||||
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
|
||||
break;
|
||||
case 22: // W
|
||||
//std::cout << "rW " << std::endl;
|
||||
m_keyW = false;
|
||||
break;
|
||||
case 0: // A
|
||||
//std::cout << "rA " << std::endl;
|
||||
m_keyA = false;
|
||||
break;
|
||||
case 18: // S
|
||||
//std::cout << "rS " << std::endl;
|
||||
m_keyS = false;
|
||||
break;
|
||||
case 3: // D
|
||||
//std::cout << "rD " << std::endl;
|
||||
m_keyD = false;
|
||||
break;
|
||||
case 38: // Left Shift
|
||||
//std::cout << "rLS " << std::endl;
|
||||
m_keylshift = false;
|
||||
break;
|
||||
case 57: // Espace
|
||||
//std::cout << "rSpace " << std::endl;
|
||||
case 57: // Espace - Stop sauter
|
||||
m_keySpace = false;
|
||||
break;
|
||||
}
|
||||
@@ -592,9 +885,9 @@ void Engine::MouseMoveEvent(int x, int y) {
|
||||
m_player.TurnLeftRight(x - (Width() / 2));
|
||||
m_player.TurnTopBottom(y - (Height() / 2));
|
||||
|
||||
// Centrer la souris seulement si elle n'est pas d<>j<EFBFBD> centr<74>e
|
||||
// Il est n<>cessaire de faire la v<>rification pour <20>viter de tomber
|
||||
// dans une boucle infinie o<> l'appel <20> CenterMouse g<>n<EFBFBD>re un
|
||||
// Centrer la souris seulement si elle n'est pas d<>j<EFBFBD> centr<74>e
|
||||
// Il est n<>cessaire de faire la v<>rification pour <20>viter de tomber
|
||||
// dans une boucle infinie o<> l'appel <20> CenterMouse g<>n<EFBFBD>re un
|
||||
// MouseMoveEvent, qui rapelle CenterMouse qui rapelle un autre
|
||||
// MouseMoveEvent, etc
|
||||
if (x == (Width() / 2) && y == (Height() / 2))
|
||||
@@ -659,10 +952,9 @@ void Engine::MouseReleaseEvent(const MOUSE_BUTTON& button, int x, int y) {
|
||||
}
|
||||
}
|
||||
|
||||
bool Engine::LoadTexture(Texture& texture, const std::string& filename, bool stopOnError) {
|
||||
texture.Load(filename);
|
||||
if (!texture.IsValid())
|
||||
{
|
||||
bool Engine::LoadTexture(Texture& texture, const std::string& filename, bool useMipmaps, bool stopOnError) {
|
||||
texture.Load(filename, useMipmaps);
|
||||
if (!texture.IsValid()) {
|
||||
std::cerr << "Unable to load texture (" << filename << ")" << std::endl;
|
||||
if (stopOnError)
|
||||
Stop();
|
||||
|
@@ -1,19 +1,24 @@
|
||||
#ifndef ENGINE_H__
|
||||
#define ENGINE_H__
|
||||
|
||||
#include <algorithm>
|
||||
#include <cmath>
|
||||
#include "../SQCSim-common/array2d.h"
|
||||
#include "../SQCSim-common/blockinfo.h"
|
||||
#include "../SQCSim-common/bullet.h"
|
||||
#include "../SQCSim-common/chunk.h"
|
||||
#include "../SQCSim-common/world.h"
|
||||
#include "../SQCSim-common/transformation.h"
|
||||
#include "../SQCSim-common/player.h"
|
||||
#include "define.h"
|
||||
#include "openglcontext.h"
|
||||
#include "texture.h"
|
||||
#include "transformation.h"
|
||||
#include "shader.h"
|
||||
#include "player.h"
|
||||
#include "chunk.h"
|
||||
#include "skybox.h"
|
||||
#include "audio.h"
|
||||
#include "textureatlas.h"
|
||||
#include "blockinfo.h"
|
||||
#include "array2d.h"
|
||||
#include "world.h"
|
||||
#include "bullet.h"
|
||||
#include "connector.h"
|
||||
#include "worldrenderer.h"
|
||||
|
||||
class Engine : public OpenglContext {
|
||||
public:
|
||||
@@ -32,35 +37,45 @@ public:
|
||||
virtual void MouseReleaseEvent(const MOUSE_BUTTON &button, int x, int y);
|
||||
|
||||
private:
|
||||
bool LoadTexture(Texture& texture, const std::string& filename, bool stopOnError = true);
|
||||
void DrawHud(float elapsedTime, BlockType bloc);
|
||||
void PrintText(unsigned int x, unsigned int y, const std::string& t);
|
||||
float GetScale() const;
|
||||
|
||||
int GetFps(float elapsedTime) const;
|
||||
int GetCountdown(float elapsedTime);
|
||||
|
||||
bool m_wireframe = false;
|
||||
bool m_isSkybox = true;
|
||||
bool LoadTexture(Texture& texture, const std::string& filename, bool useMipmaps = true, bool stopOnError = true);
|
||||
|
||||
int m_renderCount = 0;
|
||||
void SystemNotification(std::string systemLog);
|
||||
void KillNotification(Player killer, Player killed);
|
||||
void DisplayNotification(std::string message);
|
||||
void ProcessNotificationQueue();
|
||||
void DisplayCrosshair();
|
||||
void DisplayCurrentItem();
|
||||
void DisplayHud(int timer);
|
||||
void DisplayInfo(float elapsedTime, BlockType bloc);
|
||||
void DrawHud(float elapsedTime, BlockType bloc);
|
||||
void PrintText(float x, float y, float scale, const std::string& t);
|
||||
|
||||
Connector m_conn;
|
||||
Shader m_shader01;
|
||||
BlockInfo* m_blockinfo[BTYPE_LAST];
|
||||
TextureAtlas m_textureAtlas = TextureAtlas(BTYPE_LAST);
|
||||
|
||||
World m_world = World();
|
||||
WorldRenderer m_wrenderer = WorldRenderer();
|
||||
|
||||
Texture m_textureSkybox;
|
||||
Texture m_textureFont;
|
||||
Texture m_textureCrosshair;
|
||||
|
||||
Texture m_textureGun;
|
||||
|
||||
Skybox m_skybox;
|
||||
Audio m_audio = Audio(AUDIO_PATH "music01.wav");
|
||||
Audio m_audio = Audio(AUDIO_PATH "start.wav");
|
||||
|
||||
irrklang::ISound* m_powpow;
|
||||
irrklang::ISound* m_scream;
|
||||
|
||||
Player m_player = Player(Vector3f(.5f, CHUNK_SIZE_Y + 1.8f, .5f));
|
||||
|
||||
|
||||
Bullet* m_bullets[MAX_BULLETS];
|
||||
|
||||
//Menu
|
||||
@@ -72,11 +87,28 @@ private:
|
||||
Texture MenuQuitTexture;
|
||||
Texture MenuOptionsTexture;
|
||||
|
||||
float m_scale;
|
||||
float m_time = 0;
|
||||
|
||||
int m_renderCount = 0;
|
||||
int m_countdown = COUNTDOWN;
|
||||
|
||||
bool m_wireframe = false;
|
||||
bool m_isSkybox = true;
|
||||
bool m_block = false;
|
||||
bool m_flash = true;
|
||||
bool m_displayCrosshair = true;
|
||||
bool m_displayHud = true;
|
||||
bool m_displayInfo = false;
|
||||
bool m_resetcountdown = false;
|
||||
bool m_stopcountdown = false;
|
||||
|
||||
bool m_keyK = false;
|
||||
bool m_keyL = false;
|
||||
bool m_keyW = false;
|
||||
bool m_keyA = false;
|
||||
bool m_keyS = false;
|
||||
bool m_keyD = false;
|
||||
bool m_keylshift = false;
|
||||
bool m_keySpace = false;
|
||||
bool m_mouseL = false;
|
||||
bool m_mouseR = false;
|
||||
@@ -87,9 +119,7 @@ private:
|
||||
float m_mousemx = 0;
|
||||
float m_mousemy = 0;
|
||||
|
||||
bool m_block = false;
|
||||
bool m_flash = true;
|
||||
std::string m_messageNotification = "";
|
||||
};
|
||||
|
||||
|
||||
#endif // ENGINE_H__
|
||||
|
58
SQCSim2021/external/sfml251-32/doc/html/AlResource_8hpp_source.html
vendored
Normal file
58
SQCSim2021/external/sfml251-32/doc/html/AlResource_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
56
SQCSim2021/external/sfml251-32/doc/html/Audio_2Export_8hpp_source.html
vendored
Normal file
56
SQCSim2021/external/sfml251-32/doc/html/Audio_2Export_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
56
SQCSim2021/external/sfml251-32/doc/html/Audio_8hpp_source.html
vendored
Normal file
56
SQCSim2021/external/sfml251-32/doc/html/Audio_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
77
SQCSim2021/external/sfml251-32/doc/html/BlendMode_8hpp_source.html
vendored
Normal file
77
SQCSim2021/external/sfml251-32/doc/html/BlendMode_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
60
SQCSim2021/external/sfml251-32/doc/html/CircleShape_8hpp_source.html
vendored
Normal file
60
SQCSim2021/external/sfml251-32/doc/html/CircleShape_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
59
SQCSim2021/external/sfml251-32/doc/html/Clipboard_8hpp_source.html
vendored
Normal file
59
SQCSim2021/external/sfml251-32/doc/html/Clipboard_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
59
SQCSim2021/external/sfml251-32/doc/html/Clock_8hpp_source.html
vendored
Normal file
59
SQCSim2021/external/sfml251-32/doc/html/Clock_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
71
SQCSim2021/external/sfml251-32/doc/html/Color_8hpp_source.html
vendored
Normal file
71
SQCSim2021/external/sfml251-32/doc/html/Color_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
57
SQCSim2021/external/sfml251-32/doc/html/Config_8hpp_source.html
vendored
Normal file
57
SQCSim2021/external/sfml251-32/doc/html/Config_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
70
SQCSim2021/external/sfml251-32/doc/html/ContextSettings_8hpp_source.html
vendored
Normal file
70
SQCSim2021/external/sfml251-32/doc/html/ContextSettings_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
61
SQCSim2021/external/sfml251-32/doc/html/Context_8hpp_source.html
vendored
Normal file
61
SQCSim2021/external/sfml251-32/doc/html/Context_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
60
SQCSim2021/external/sfml251-32/doc/html/ConvexShape_8hpp_source.html
vendored
Normal file
60
SQCSim2021/external/sfml251-32/doc/html/ConvexShape_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
74
SQCSim2021/external/sfml251-32/doc/html/Cursor_8hpp_source.html
vendored
Normal file
74
SQCSim2021/external/sfml251-32/doc/html/Cursor_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
61
SQCSim2021/external/sfml251-32/doc/html/Drawable_8hpp_source.html
vendored
Normal file
61
SQCSim2021/external/sfml251-32/doc/html/Drawable_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
58
SQCSim2021/external/sfml251-32/doc/html/Err_8hpp_source.html
vendored
Normal file
58
SQCSim2021/external/sfml251-32/doc/html/Err_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
146
SQCSim2021/external/sfml251-32/doc/html/Event_8hpp_source.html
vendored
Normal file
146
SQCSim2021/external/sfml251-32/doc/html/Event_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
60
SQCSim2021/external/sfml251-32/doc/html/FileInputStream_8hpp_source.html
vendored
Normal file
60
SQCSim2021/external/sfml251-32/doc/html/FileInputStream_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
63
SQCSim2021/external/sfml251-32/doc/html/Font_8hpp_source.html
vendored
Normal file
63
SQCSim2021/external/sfml251-32/doc/html/Font_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
70
SQCSim2021/external/sfml251-32/doc/html/Ftp_8hpp_source.html
vendored
Normal file
70
SQCSim2021/external/sfml251-32/doc/html/Ftp_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
60
SQCSim2021/external/sfml251-32/doc/html/GlResource_8hpp_source.html
vendored
Normal file
60
SQCSim2021/external/sfml251-32/doc/html/GlResource_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
70
SQCSim2021/external/sfml251-32/doc/html/Glsl_8hpp_source.html
vendored
Normal file
70
SQCSim2021/external/sfml251-32/doc/html/Glsl_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
63
SQCSim2021/external/sfml251-32/doc/html/Glyph_8hpp_source.html
vendored
Normal file
63
SQCSim2021/external/sfml251-32/doc/html/Glyph_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
98
SQCSim2021/external/sfml251-32/doc/html/GpuPreference_8hpp.html
vendored
Normal file
98
SQCSim2021/external/sfml251-32/doc/html/GpuPreference_8hpp.html
vendored
Normal file
@@ -0,0 +1,98 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>SFML - Simple and Fast Multimedia Library</title>
|
||||
<meta http-equiv="Content-Type" content="text/html;"/>
|
||||
<meta charset="utf-8"/>
|
||||
<!--<link rel='stylesheet' type='text/css' href="https://fonts.googleapis.com/css?family=Ubuntu:400,700,400italic"/>-->
|
||||
<link rel="stylesheet" type="text/css" href="doxygen.css" title="default" media="screen,print" />
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="banner-container">
|
||||
<div id="banner">
|
||||
<span id="sfml">SFML 2.5.1</span>
|
||||
</div>
|
||||
</div>
|
||||
<div id="content">
|
||||
<!-- Generated by Doxygen 1.8.14 -->
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="pages.html"><span>Related Pages</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
|
||||
<li><a href="annotated.html"><span>Classes</span></a></li>
|
||||
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="files.html"><span>File List</span></a></li>
|
||||
<li><a href="globals.html"><span>File Members</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_c0a853e81d6f1c1f0a3eb7a27dc24256.html">SFML</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#define-members">Macros</a> </div>
|
||||
<div class="headertitle">
|
||||
<div class="title">GpuPreference.hpp File Reference</div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p>Headers.
|
||||
<a href="#details">More...</a></p>
|
||||
<div class="textblock"><code>#include <SFML/Config.hpp></code><br />
|
||||
</div>
|
||||
<p><a href="GpuPreference_8hpp_source.html">Go to the source code of this file.</a></p>
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
|
||||
Macros</h2></td></tr>
|
||||
<tr class="memitem:ab0233c2d867cbd561036ed2440a4fec0"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="GpuPreference_8hpp.html#ab0233c2d867cbd561036ed2440a4fec0">SFML_DEFINE_DISCRETE_GPU_PREFERENCE</a></td></tr>
|
||||
<tr class="memdesc:ab0233c2d867cbd561036ed2440a4fec0"><td class="mdescLeft"> </td><td class="mdescRight">A macro to encourage usage of the discrete GPU. <a href="#ab0233c2d867cbd561036ed2440a4fec0">More...</a><br /></td></tr>
|
||||
<tr class="separator:ab0233c2d867cbd561036ed2440a4fec0"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><p>Headers. </p>
|
||||
<p>File containing SFML_DEFINE_DISCRETE_GPU_PREFERENCE </p>
|
||||
|
||||
<p class="definition">Definition in file <a class="el" href="GpuPreference_8hpp_source.html">GpuPreference.hpp</a>.</p>
|
||||
</div><h2 class="groupheader">Macro Definition Documentation</h2>
|
||||
<a id="ab0233c2d867cbd561036ed2440a4fec0"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ab0233c2d867cbd561036ed2440a4fec0">◆ </a></span>SFML_DEFINE_DISCRETE_GPU_PREFERENCE</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">#define SFML_DEFINE_DISCRETE_GPU_PREFERENCE</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p>A macro to encourage usage of the discrete GPU. </p>
|
||||
<p>In order to inform the Nvidia/AMD driver that an SFML application could benefit from using the more powerful discrete GPU, special symbols have to be publicly exported from the final executable.</p>
|
||||
<p>SFML defines a helper macro to easily do this.</p>
|
||||
<p>Place SFML_DEFINE_DISCRETE_GPU_PREFERENCE in the global scope of a source file that will be linked into the final executable. Typically it is best to place it where the main function is also defined. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="GpuPreference_8hpp_source.html#l00069">69</a> of file <a class="el" href="GpuPreference_8hpp_source.html">GpuPreference.hpp</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- contents -->
|
||||
</div>
|
||||
<div id="footer-container">
|
||||
<div id="footer">
|
||||
SFML is licensed under the terms and conditions of the <a href="https://www.sfml-dev.org/license.php">zlib/png license</a>.<br>
|
||||
Copyright © Laurent Gomila ::
|
||||
Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen</a> ::
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
56
SQCSim2021/external/sfml251-32/doc/html/GpuPreference_8hpp_source.html
vendored
Normal file
56
SQCSim2021/external/sfml251-32/doc/html/GpuPreference_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
56
SQCSim2021/external/sfml251-32/doc/html/Graphics_2Export_8hpp_source.html
vendored
Normal file
56
SQCSim2021/external/sfml251-32/doc/html/Graphics_2Export_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
56
SQCSim2021/external/sfml251-32/doc/html/Graphics_8hpp_source.html
vendored
Normal file
56
SQCSim2021/external/sfml251-32/doc/html/Graphics_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
71
SQCSim2021/external/sfml251-32/doc/html/Http_8hpp_source.html
vendored
Normal file
71
SQCSim2021/external/sfml251-32/doc/html/Http_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
62
SQCSim2021/external/sfml251-32/doc/html/Image_8hpp_source.html
vendored
Normal file
62
SQCSim2021/external/sfml251-32/doc/html/Image_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
62
SQCSim2021/external/sfml251-32/doc/html/InputSoundFile_8hpp_source.html
vendored
Normal file
62
SQCSim2021/external/sfml251-32/doc/html/InputSoundFile_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
59
SQCSim2021/external/sfml251-32/doc/html/InputStream_8hpp_source.html
vendored
Normal file
59
SQCSim2021/external/sfml251-32/doc/html/InputStream_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
64
SQCSim2021/external/sfml251-32/doc/html/IpAddress_8hpp_source.html
vendored
Normal file
64
SQCSim2021/external/sfml251-32/doc/html/IpAddress_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
71
SQCSim2021/external/sfml251-32/doc/html/Joystick_8hpp_source.html
vendored
Normal file
71
SQCSim2021/external/sfml251-32/doc/html/Joystick_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
160
SQCSim2021/external/sfml251-32/doc/html/Keyboard_8hpp_source.html
vendored
Normal file
160
SQCSim2021/external/sfml251-32/doc/html/Keyboard_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
59
SQCSim2021/external/sfml251-32/doc/html/Listener_8hpp_source.html
vendored
Normal file
59
SQCSim2021/external/sfml251-32/doc/html/Listener_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
60
SQCSim2021/external/sfml251-32/doc/html/Lock_8hpp_source.html
vendored
Normal file
60
SQCSim2021/external/sfml251-32/doc/html/Lock_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
56
SQCSim2021/external/sfml251-32/doc/html/Main_8hpp_source.html
vendored
Normal file
56
SQCSim2021/external/sfml251-32/doc/html/Main_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
59
SQCSim2021/external/sfml251-32/doc/html/MemoryInputStream_8hpp_source.html
vendored
Normal file
59
SQCSim2021/external/sfml251-32/doc/html/MemoryInputStream_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
68
SQCSim2021/external/sfml251-32/doc/html/Mouse_8hpp_source.html
vendored
Normal file
68
SQCSim2021/external/sfml251-32/doc/html/Mouse_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
69
SQCSim2021/external/sfml251-32/doc/html/Music_8hpp_source.html
vendored
Normal file
69
SQCSim2021/external/sfml251-32/doc/html/Music_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
59
SQCSim2021/external/sfml251-32/doc/html/Mutex_8hpp_source.html
vendored
Normal file
59
SQCSim2021/external/sfml251-32/doc/html/Mutex_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
58
SQCSim2021/external/sfml251-32/doc/html/NativeActivity_8hpp_source.html
vendored
Normal file
58
SQCSim2021/external/sfml251-32/doc/html/NativeActivity_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
56
SQCSim2021/external/sfml251-32/doc/html/Network_2Export_8hpp_source.html
vendored
Normal file
56
SQCSim2021/external/sfml251-32/doc/html/Network_2Export_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
56
SQCSim2021/external/sfml251-32/doc/html/Network_8hpp_source.html
vendored
Normal file
56
SQCSim2021/external/sfml251-32/doc/html/Network_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
60
SQCSim2021/external/sfml251-32/doc/html/NonCopyable_8hpp_source.html
vendored
Normal file
60
SQCSim2021/external/sfml251-32/doc/html/NonCopyable_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
56
SQCSim2021/external/sfml251-32/doc/html/OpenGL_8hpp_source.html
vendored
Normal file
56
SQCSim2021/external/sfml251-32/doc/html/OpenGL_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
60
SQCSim2021/external/sfml251-32/doc/html/OutputSoundFile_8hpp_source.html
vendored
Normal file
60
SQCSim2021/external/sfml251-32/doc/html/OutputSoundFile_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
61
SQCSim2021/external/sfml251-32/doc/html/Packet_8hpp_source.html
vendored
Normal file
61
SQCSim2021/external/sfml251-32/doc/html/Packet_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
68
SQCSim2021/external/sfml251-32/doc/html/PrimitiveType_8hpp_source.html
vendored
Normal file
68
SQCSim2021/external/sfml251-32/doc/html/PrimitiveType_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
66
SQCSim2021/external/sfml251-32/doc/html/Rect_8hpp_source.html
vendored
Normal file
66
SQCSim2021/external/sfml251-32/doc/html/Rect_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
60
SQCSim2021/external/sfml251-32/doc/html/RectangleShape_8hpp_source.html
vendored
Normal file
60
SQCSim2021/external/sfml251-32/doc/html/RectangleShape_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
67
SQCSim2021/external/sfml251-32/doc/html/RenderStates_8hpp_source.html
vendored
Normal file
67
SQCSim2021/external/sfml251-32/doc/html/RenderStates_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
73
SQCSim2021/external/sfml251-32/doc/html/RenderTarget_8hpp_source.html
vendored
Normal file
73
SQCSim2021/external/sfml251-32/doc/html/RenderTarget_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
62
SQCSim2021/external/sfml251-32/doc/html/RenderTexture_8hpp_source.html
vendored
Normal file
62
SQCSim2021/external/sfml251-32/doc/html/RenderTexture_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
67
SQCSim2021/external/sfml251-32/doc/html/RenderWindow_8hpp_source.html
vendored
Normal file
67
SQCSim2021/external/sfml251-32/doc/html/RenderWindow_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
66
SQCSim2021/external/sfml251-32/doc/html/Sensor_8hpp_source.html
vendored
Normal file
66
SQCSim2021/external/sfml251-32/doc/html/Sensor_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
76
SQCSim2021/external/sfml251-32/doc/html/Shader_8hpp_source.html
vendored
Normal file
76
SQCSim2021/external/sfml251-32/doc/html/Shader_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
67
SQCSim2021/external/sfml251-32/doc/html/Shape_8hpp_source.html
vendored
Normal file
67
SQCSim2021/external/sfml251-32/doc/html/Shape_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
58
SQCSim2021/external/sfml251-32/doc/html/Sleep_8hpp_source.html
vendored
Normal file
58
SQCSim2021/external/sfml251-32/doc/html/Sleep_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
57
SQCSim2021/external/sfml251-32/doc/html/SocketHandle_8hpp_source.html
vendored
Normal file
57
SQCSim2021/external/sfml251-32/doc/html/SocketHandle_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
61
SQCSim2021/external/sfml251-32/doc/html/SocketSelector_8hpp_source.html
vendored
Normal file
61
SQCSim2021/external/sfml251-32/doc/html/SocketSelector_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
67
SQCSim2021/external/sfml251-32/doc/html/Socket_8hpp_source.html
vendored
Normal file
67
SQCSim2021/external/sfml251-32/doc/html/Socket_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
60
SQCSim2021/external/sfml251-32/doc/html/SoundBufferRecorder_8hpp_source.html
vendored
Normal file
60
SQCSim2021/external/sfml251-32/doc/html/SoundBufferRecorder_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
63
SQCSim2021/external/sfml251-32/doc/html/SoundBuffer_8hpp_source.html
vendored
Normal file
63
SQCSim2021/external/sfml251-32/doc/html/SoundBuffer_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
61
SQCSim2021/external/sfml251-32/doc/html/SoundFileFactory_8hpp_source.html
vendored
Normal file
61
SQCSim2021/external/sfml251-32/doc/html/SoundFileFactory_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
64
SQCSim2021/external/sfml251-32/doc/html/SoundFileReader_8hpp_source.html
vendored
Normal file
64
SQCSim2021/external/sfml251-32/doc/html/SoundFileReader_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
59
SQCSim2021/external/sfml251-32/doc/html/SoundFileWriter_8hpp_source.html
vendored
Normal file
59
SQCSim2021/external/sfml251-32/doc/html/SoundFileWriter_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
61
SQCSim2021/external/sfml251-32/doc/html/SoundRecorder_8hpp_source.html
vendored
Normal file
61
SQCSim2021/external/sfml251-32/doc/html/SoundRecorder_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
64
SQCSim2021/external/sfml251-32/doc/html/SoundSource_8hpp_source.html
vendored
Normal file
64
SQCSim2021/external/sfml251-32/doc/html/SoundSource_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
63
SQCSim2021/external/sfml251-32/doc/html/SoundStream_8hpp_source.html
vendored
Normal file
63
SQCSim2021/external/sfml251-32/doc/html/SoundStream_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
62
SQCSim2021/external/sfml251-32/doc/html/Sound_8hpp_source.html
vendored
Normal file
62
SQCSim2021/external/sfml251-32/doc/html/Sound_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
66
SQCSim2021/external/sfml251-32/doc/html/Sprite_8hpp_source.html
vendored
Normal file
66
SQCSim2021/external/sfml251-32/doc/html/Sprite_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
61
SQCSim2021/external/sfml251-32/doc/html/String_8hpp_source.html
vendored
Normal file
61
SQCSim2021/external/sfml251-32/doc/html/String_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
56
SQCSim2021/external/sfml251-32/doc/html/System_2Export_8hpp_source.html
vendored
Normal file
56
SQCSim2021/external/sfml251-32/doc/html/System_2Export_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
56
SQCSim2021/external/sfml251-32/doc/html/System_8hpp_source.html
vendored
Normal file
56
SQCSim2021/external/sfml251-32/doc/html/System_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
63
SQCSim2021/external/sfml251-32/doc/html/TcpListener_8hpp_source.html
vendored
Normal file
63
SQCSim2021/external/sfml251-32/doc/html/TcpListener_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
65
SQCSim2021/external/sfml251-32/doc/html/TcpSocket_8hpp_source.html
vendored
Normal file
65
SQCSim2021/external/sfml251-32/doc/html/TcpSocket_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
69
SQCSim2021/external/sfml251-32/doc/html/Text_8hpp_source.html
vendored
Normal file
69
SQCSim2021/external/sfml251-32/doc/html/Text_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
69
SQCSim2021/external/sfml251-32/doc/html/Texture_8hpp_source.html
vendored
Normal file
69
SQCSim2021/external/sfml251-32/doc/html/Texture_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
63
SQCSim2021/external/sfml251-32/doc/html/ThreadLocalPtr_8hpp_source.html
vendored
Normal file
63
SQCSim2021/external/sfml251-32/doc/html/ThreadLocalPtr_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
59
SQCSim2021/external/sfml251-32/doc/html/ThreadLocal_8hpp_source.html
vendored
Normal file
59
SQCSim2021/external/sfml251-32/doc/html/ThreadLocal_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
59
SQCSim2021/external/sfml251-32/doc/html/Thread_8hpp_source.html
vendored
Normal file
59
SQCSim2021/external/sfml251-32/doc/html/Thread_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
59
SQCSim2021/external/sfml251-32/doc/html/Time_8hpp_source.html
vendored
Normal file
59
SQCSim2021/external/sfml251-32/doc/html/Time_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
60
SQCSim2021/external/sfml251-32/doc/html/Touch_8hpp_source.html
vendored
Normal file
60
SQCSim2021/external/sfml251-32/doc/html/Touch_8hpp_source.html
vendored
Normal file
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user