Depth rendering of terrain works

This commit is contained in:
Dynamitos
2023-11-10 19:18:09 +01:00
parent effb0c6214
commit c30619d07d
28 changed files with 298 additions and 502 deletions
+7 -5
View File
@@ -8,7 +8,9 @@ template<typename... Types>
struct Dependencies;
template<>
struct Dependencies<>
{};
{
int x;
};
template<typename This, typename... Rest>
struct Dependencies<This, Rest...> : public Dependencies<Rest...>
{
@@ -17,6 +19,7 @@ struct Dependencies<This, Rest...> : public Dependencies<Rest...>
{
return Dependencies<This, Rest..., Right...>();
}
int x;
};
namespace Component
@@ -24,16 +27,15 @@ namespace Component
template<typename Comp>
static int accessComponent(Comp& comp);
}
template<typename T, typename... Deps>
concept is_component = std::same_as<decltype(T::dependencies), Dependencies<Deps...>>;
template<typename Comp>
concept has_dependencies = requires(Comp) { Comp::dependencies; };
#define REQUIRE_COMPONENT(x) \
private: \
x& get##x() { return *tl_##x; } \
const x& get##x() const { return *tl_##x; }; \
public: \
static Dependencies<x> dependencies;
constexpr static Dependencies<x> dependencies;
#define DECLARE_COMPONENT(x) \
thread_local extern x* tl_##x; \
-10
View File
@@ -8,53 +8,43 @@ DEFINE_COMPONENT(Transform)
void Transform::setPosition(Vector pos)
{
transform.setPosition(pos);
dirty = true;
}
void Transform::setRotation(Quaternion quat)
{
transform.setRotation(quat);
dirty = true;
}
void Transform::setScale(Vector scale)
{
transform.setScale(scale);
dirty = true;
}
void Transform::setRelativeLocation(Vector location)
{
transform = Math::Transform(location, transform.getRotation(), transform.getScale());
dirty = true;
}
void Transform::setRelativeRotation(Vector rotation)
{
transform = Math::Transform(transform.getPosition(), Quaternion(rotation), transform.getScale());
dirty = true;
}
void Transform::setRelativeRotation(Quaternion rotation)
{
transform = Math::Transform(transform.getPosition(), rotation, transform.getScale());
dirty = true;
}
void Transform::setRelativeScale(Vector scale)
{
transform = Math::Transform(transform.getPosition(), transform.getRotation(), scale);
dirty = true;
}
void Transform::addRelativeLocation(Vector translation)
{
transform = Math::Transform(transform.getPosition() + translation, transform.getRotation(), transform.getScale());
dirty = true;
}
void Transform::addRelativeRotation(Vector rotation)
{
transform = Math::Transform(transform.getPosition(), transform.getRotation() * Quaternion(rotation), transform.getScale());
dirty = true;
}
void Transform::addRelativeRotation(Quaternion rotation)
{
transform = Math::Transform(transform.getPosition(), transform.getRotation() * rotation, transform.getScale());
dirty = true;
}
-4
View File
@@ -18,9 +18,6 @@ struct Transform
Matrix4 toMatrix() const { return transform.toMatrix(); }
bool isDirty() const { return dirty; }
void clean() { dirty = false; }
void setPosition(Vector pos);
void setRotation(Quaternion quat);
void setScale(Vector scale);
@@ -34,7 +31,6 @@ struct Transform
void addRelativeRotation(Quaternion rotation);
void addRelativeRotation(Vector rotation);
private:
bool dirty = true;
Math::Transform transform;
};
DECLARE_COMPONENT(Transform)