mirror of
https://github.com/seekrs/MacroLibX.git
synced 2026-01-11 14:43:34 +00:00
fixing rotation
This commit is contained in:
@@ -54,7 +54,6 @@ namespace mlx
|
|||||||
Text& new_text = p_scene->CreateText(str);
|
Text& new_text = p_scene->CreateText(str);
|
||||||
new_text.SetPosition(Vec2f{ static_cast<float>(x), static_cast<float>(y) });
|
new_text.SetPosition(Vec2f{ static_cast<float>(x), static_cast<float>(y) });
|
||||||
new_text.SetColor(std::move(vec_color));
|
new_text.SetColor(std::move(vec_color));
|
||||||
new_text.SetCenter(Vec2f{ 0.0f, 0.0f });
|
|
||||||
}
|
}
|
||||||
else if(!p_scene->IsTextAtGivenDrawLayer(str, m_draw_layer))
|
else if(!p_scene->IsTextAtGivenDrawLayer(str, m_draw_layer))
|
||||||
p_scene->BringToDrawLayer(text.Get(), m_draw_layer);
|
p_scene->BringToDrawLayer(text.Get(), m_draw_layer);
|
||||||
@@ -72,10 +71,10 @@ namespace mlx
|
|||||||
m_pixelput_called = false;
|
m_pixelput_called = false;
|
||||||
}
|
}
|
||||||
Sprite& new_sprite = p_scene->CreateSprite(texture);
|
Sprite& new_sprite = p_scene->CreateSprite(texture);
|
||||||
|
new_sprite.SetCenter(Vec2f{ texture->GetWidth() / 2.0f, texture->GetHeight() / 2.0f });
|
||||||
new_sprite.SetPosition(Vec2f{ static_cast<float>(x), static_cast<float>(y) });
|
new_sprite.SetPosition(Vec2f{ static_cast<float>(x), static_cast<float>(y) });
|
||||||
new_sprite.SetScale(Vec2f{ scale, scale });
|
new_sprite.SetScale(Vec2f{ scale, scale });
|
||||||
new_sprite.SetRotation(angle);
|
new_sprite.SetRotation(angle);
|
||||||
new_sprite.SetCenter(Vec2f{ texture->GetWidth() / 2.0f, texture->GetHeight() / 2.0f });
|
|
||||||
}
|
}
|
||||||
else if(!p_scene->IsTextureAtGivenDrawLayer(texture, m_draw_layer))
|
else if(!p_scene->IsTextureAtGivenDrawLayer(texture, m_draw_layer))
|
||||||
p_scene->BringToDrawLayer(sprite.Get(), m_draw_layer);
|
p_scene->BringToDrawLayer(sprite.Get(), m_draw_layer);
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ namespace mlx
|
|||||||
Vec4f m_color = Vec4f{ 1.0f, 1.0f, 1.0f, 1.0f };
|
Vec4f m_color = Vec4f{ 1.0f, 1.0f, 1.0f, 1.0f };
|
||||||
Vec2f m_position = Vec2f{ 0.0f, 0.0f };
|
Vec2f m_position = Vec2f{ 0.0f, 0.0f };
|
||||||
Vec2f m_scale = Vec2f{ 1.0f, 1.0f };
|
Vec2f m_scale = Vec2f{ 1.0f, 1.0f };
|
||||||
Vec2f m_center;
|
Vec2f m_center = Vec2f{ 0.0f, 0.0f };
|
||||||
DrawableType m_type;
|
DrawableType m_type;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -95,8 +95,8 @@ namespace mlx
|
|||||||
static constexpr Mat4 ConcatenateTransform(const Mat4& left, const Mat4& right);
|
static constexpr Mat4 ConcatenateTransform(const Mat4& left, const Mat4& right);
|
||||||
static constexpr Mat4 Identity();
|
static constexpr Mat4 Identity();
|
||||||
static constexpr Mat4 LookAt(const Vec3<T>& eye, const Vec3<T>& target, const Vec3<T>& up = Vec3<T>::Up());
|
static constexpr Mat4 LookAt(const Vec3<T>& eye, const Vec3<T>& target, const Vec3<T>& up = Vec3<T>::Up());
|
||||||
static constexpr Mat4 Ortho(T left, T right, T top, T bottom, T zNear = -1.0, T zFar = 1.0);
|
static constexpr Mat4 Ortho(T left, T right, T top, T bottom, T z_near = -1.0, T zFar = 1.0);
|
||||||
static Mat4 Perspective(RadianAngle<T> angle, T ratio, T zNear, T zFar);
|
static Mat4 Perspective(RadianAngle<T> angle, T ratio, T z_near, T z_far);
|
||||||
static constexpr Mat4 Rotate(const Quat<T>& rotation);
|
static constexpr Mat4 Rotate(const Quat<T>& rotation);
|
||||||
static constexpr Mat4 Scale(const Vec3<T>& scale);
|
static constexpr Mat4 Scale(const Vec3<T>& scale);
|
||||||
static constexpr Mat4 Translate(const Vec3<T>& translation);
|
static constexpr Mat4 Translate(const Vec3<T>& translation);
|
||||||
|
|||||||
@@ -20,10 +20,9 @@ namespace mlx
|
|||||||
template<typename U> constexpr explicit Quat(const Quat<U>& quat);
|
template<typename U> constexpr explicit Quat(const Quat<U>& quat);
|
||||||
constexpr Quat(const Quat&) = default;
|
constexpr Quat(const Quat&) = default;
|
||||||
constexpr Quat(Quat&&) = default;
|
constexpr Quat(Quat&&) = default;
|
||||||
~Quat() = default;
|
|
||||||
|
|
||||||
RadianAngle<T> AngleBetween(const Quat& vec) const;
|
RadianAngle<T> AngleBetween(const Quat& vec) const;
|
||||||
constexpr bool ApproxEqual(const Quat& quat, T maxDifference = std::numeric_limits<T>::epsilon()) const;
|
constexpr bool ApproxEqual(const Quat& quat, T max_difference = std::numeric_limits<T>::epsilon()) const;
|
||||||
|
|
||||||
Quat& ComputeW();
|
Quat& ComputeW();
|
||||||
constexpr Quat& Conjugate();
|
constexpr Quat& Conjugate();
|
||||||
@@ -68,16 +67,18 @@ namespace mlx
|
|||||||
constexpr bool operator>=(const Quat& quat) const;
|
constexpr bool operator>=(const Quat& quat) const;
|
||||||
|
|
||||||
static RadianAngle<T> AngleBetween(const Quat& lhs, const Quat& rhs);
|
static RadianAngle<T> AngleBetween(const Quat& lhs, const Quat& rhs);
|
||||||
static constexpr bool ApproxEqual(const Quat& lhs, const Quat& rhs, T maxDifference = std::numeric_limits<T>::epsilon());
|
static constexpr bool ApproxEqual(const Quat& lhs, const Quat& rhs, T max_difference = std::numeric_limits<T>::epsilon());
|
||||||
static constexpr Quat Identity();
|
static constexpr Quat Identity();
|
||||||
static constexpr Quat Lerp(const Quat& from, const Quat& to, T interpolation);
|
static constexpr Quat Lerp(const Quat& from, const Quat& to, T interpolation);
|
||||||
static Quat LookAt(const Vec3<T>& forward, const Vec3<T>& up);
|
static Quat LookAt(const Vec3<T>& forward, const Vec3<T>& up);
|
||||||
static Quat Normalize(const Quat& quat, T* length = nullptr);
|
static Quat Normalize(const Quat& quat, T* length = nullptr);
|
||||||
static Quat RotationBetween(const Vec3<T>& from, const Vec3<T>& to);
|
static Quat RotationBetween(const Vec3<T>& from, const Vec3<T>& to);
|
||||||
static Quat RotateTowards(const Quat& from, const Quat& to, RadianAngle<T> maxRotation);
|
static Quat RotateTowards(const Quat& from, const Quat& to, RadianAngle<T> max_rotation);
|
||||||
static Quat Mirror(Quat quat, const Vec3<T>& axis);
|
static Quat Mirror(Quat quat, const Vec3<T>& axis);
|
||||||
static Quat Slerp(const Quat& from, const Quat& to, T interpolation);
|
static Quat Slerp(const Quat& from, const Quat& to, T interpolation);
|
||||||
static constexpr Quat Zero();
|
static constexpr Quat Zero();
|
||||||
|
|
||||||
|
~Quat() = default;
|
||||||
};
|
};
|
||||||
|
|
||||||
using Quatd = Quat<double>;
|
using Quatd = Quat<double>;
|
||||||
|
|||||||
@@ -108,10 +108,10 @@ namespace mlx
|
|||||||
DrawableData drawable_data;
|
DrawableData drawable_data;
|
||||||
drawable_data.color = drawable->GetColor();
|
drawable_data.color = drawable->GetColor();
|
||||||
drawable_data.model_matrix = Mat4f::Identity();
|
drawable_data.model_matrix = Mat4f::Identity();
|
||||||
drawable_data.model_matrix.SetTranslation(Vec3f{ drawable->GetPosition(), 0.0f });
|
drawable_data.model_matrix.ApplyTranslation(Vec3f{ -drawable->GetCenter() / 2.0f, 0.0f });
|
||||||
drawable_data.model_matrix.SetScale(Vec3f{ drawable->GetScale(), 1.0f });
|
drawable_data.model_matrix.ApplyRotation(drawable->GetRotation());
|
||||||
drawable_data.model_matrix.SetRotation(drawable->GetRotation());
|
drawable_data.model_matrix.ApplyTranslation(Vec3f{ drawable->GetPosition() + drawable->GetCenter(), 0.0f });
|
||||||
//drawable_data.model_matrix = Mat4f::Translate(-Vec3f{ drawable->GetCenter(), 0.0f }) * Mat4f::Rotate(drawable->GetRotation()) * drawable_data.model_matrix;
|
drawable_data.model_matrix.ApplyScale(Vec3f{ drawable->GetScale(), 1.0f });
|
||||||
|
|
||||||
drawable->Bind(frame_index, cmd);
|
drawable->Bind(frame_index, cmd);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user