1
This commit is contained in:
parent
31f4494c1b
commit
365008150d
54
server/gameserver/mapcollider.h
Normal file
54
server/gameserver/mapcollider.h
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <glm/gtc/quaternion.hpp>
|
||||||
|
#include <glm/gtx/quaternion.hpp>
|
||||||
|
|
||||||
|
namespace mc
|
||||||
|
{
|
||||||
|
struct Bounds
|
||||||
|
{
|
||||||
|
glm::vec3 center = glm::vec3(0.0f, 0.0f, 0.0f);
|
||||||
|
glm::vec3 size = glm::vec3(0.0f, 0.0f, 0.0f);
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Transform
|
||||||
|
{
|
||||||
|
glm::vec3 local_position = glm::vec3(0.0f, 0.0f, 0.0f);
|
||||||
|
glm::quat local_rotation = glm::quat(0.0f, 0.0f, 0.0f, 0.0f);
|
||||||
|
glm::vec3 local_scale = glm::vec3(0.0f, 0.0f, 0.0f);
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Mesh
|
||||||
|
{
|
||||||
|
std::vector<glm::vec3> vertices;
|
||||||
|
std::vector<int> triangles;
|
||||||
|
Bounds bounds;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Collider
|
||||||
|
{
|
||||||
|
bool enabled = false;
|
||||||
|
bool is_trigge = false;
|
||||||
|
Bounds bounds;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct MeshCollider : public Collider
|
||||||
|
{
|
||||||
|
Mesh mesh;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct BoxCollider : public Collider
|
||||||
|
{
|
||||||
|
glm::vec3 center = glm::vec3(0.0f, 0.0f, 0.0f);
|
||||||
|
glm::vec3 size = glm::vec3(0.0f, 0.0f, 0.0f);
|
||||||
|
};
|
||||||
|
|
||||||
|
struct ColliderNode
|
||||||
|
{
|
||||||
|
ColliderNode* parent = nullptr;
|
||||||
|
std::string name;
|
||||||
|
std::vector<Collider*> colliders;
|
||||||
|
std::map<std::string, ColliderNode*> childs;
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
@ -1,60 +1,14 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <glm/gtc/quaternion.hpp>
|
#include "mapcollider.h"
|
||||||
#include <glm/gtx/quaternion.hpp>
|
|
||||||
|
|
||||||
namespace mt
|
namespace mt
|
||||||
{
|
{
|
||||||
struct Bounds
|
|
||||||
{
|
|
||||||
glm::vec3 center = glm::vec3(0.0f, 0.0f, 0.0f);
|
|
||||||
glm::vec3 size = glm::vec3(0.0f, 0.0f, 0.0f);
|
|
||||||
};
|
|
||||||
|
|
||||||
struct Transform
|
|
||||||
{
|
|
||||||
glm::vec3 local_position = glm::vec3(0.0f, 0.0f, 0.0f);
|
|
||||||
glm::quat local_rotation = glm::quat(0.0f, 0.0f, 0.0f, 0.0f);
|
|
||||||
glm::vec3 local_scale = glm::vec3(0.0f, 0.0f, 0.0f);
|
|
||||||
};
|
|
||||||
|
|
||||||
struct Mesh
|
|
||||||
{
|
|
||||||
std::vector<glm::vec3> vertices;
|
|
||||||
std::vector<int> triangles;
|
|
||||||
Bounds bounds;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct Collider
|
|
||||||
{
|
|
||||||
bool enabled = false;
|
|
||||||
bool is_trigge = false;
|
|
||||||
Bounds bounds;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct MeshCollider : public Collider
|
|
||||||
{
|
|
||||||
Mesh mesh;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct BoxCollider : public Collider
|
|
||||||
{
|
|
||||||
glm::vec3 center = glm::vec3(0.0f, 0.0f, 0.0f);
|
|
||||||
glm::vec3 size = glm::vec3(0.0f, 0.0f, 0.0f);
|
|
||||||
};
|
|
||||||
|
|
||||||
struct ColliderNode
|
|
||||||
{
|
|
||||||
ColliderNode* parent = nullptr;
|
|
||||||
std::string name;
|
|
||||||
std::vector<Collider*> colliders;
|
|
||||||
std::map<std::string, ColliderNode*> childs;
|
|
||||||
};
|
|
||||||
|
|
||||||
class MapCollider
|
class MapCollider
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
std::map<std::string, ColliderNode*> nodes;
|
std::map<std::string, mc::ColliderNode*> nodes;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user