This commit is contained in:
aozhiwei 2023-02-06 19:08:33 +08:00
parent 31f4494c1b
commit 365008150d
2 changed files with 56 additions and 48 deletions

View 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;
};
};

View File

@ -1,60 +1,14 @@
#pragma once
#include <glm/gtc/quaternion.hpp>
#include <glm/gtx/quaternion.hpp>
#include "mapcollider.h"
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
{
private:
std::map<std::string, ColliderNode*> nodes;
std::map<std::string, mc::ColliderNode*> nodes;
};
}