mirror of
https://github.com/enduro2d/enduro2d.git
synced 2025-12-15 08:15:38 +07:00
change node transform type to trs2
This commit is contained in:
@@ -30,31 +30,31 @@ namespace e2d
|
||||
virtual ~node() noexcept;
|
||||
|
||||
static node_iptr create();
|
||||
static node_iptr create(const t3f& transform);
|
||||
static node_iptr create(const t2f& transform);
|
||||
|
||||
static node_iptr create(const node_iptr& parent);
|
||||
static node_iptr create(const node_iptr& parent, const t3f& transform);
|
||||
static node_iptr create(const node_iptr& parent, const t2f& transform);
|
||||
|
||||
static node_iptr create(gobject owner);
|
||||
static node_iptr create(gobject owner, const t3f& transform);
|
||||
static node_iptr create(gobject owner, const t2f& transform);
|
||||
|
||||
static node_iptr create(gobject owner, const node_iptr& parent);
|
||||
static node_iptr create(gobject owner, const node_iptr& parent, const t3f& transform);
|
||||
static node_iptr create(gobject owner, const node_iptr& parent, const t2f& transform);
|
||||
|
||||
void owner(gobject owner) noexcept;
|
||||
gobject owner() const noexcept;
|
||||
|
||||
void transform(const t3f& transform) noexcept;
|
||||
const t3f& transform() const noexcept;
|
||||
void transform(const t2f& transform) noexcept;
|
||||
const t2f& transform() const noexcept;
|
||||
|
||||
void translation(const v3f& translation) noexcept;
|
||||
const v3f& translation() const noexcept;
|
||||
void translation(const v2f& translation) noexcept;
|
||||
const v2f& translation() const noexcept;
|
||||
|
||||
void rotation(const q4f& rotation) noexcept;
|
||||
const q4f& rotation() const noexcept;
|
||||
void rotation(const radf& rotation) noexcept;
|
||||
const radf& rotation() const noexcept;
|
||||
|
||||
void scale(const v3f& scale) noexcept;
|
||||
const v3f& scale() const noexcept;
|
||||
void scale(const v2f& scale) noexcept;
|
||||
const v2f& scale() const noexcept;
|
||||
|
||||
const m4f& local_matrix() const noexcept;
|
||||
const m4f& world_matrix() const noexcept;
|
||||
@@ -145,7 +145,7 @@ namespace e2d
|
||||
void update_local_matrix_() const noexcept;
|
||||
void update_world_matrix_() const noexcept;
|
||||
private:
|
||||
t3f transform_;
|
||||
t2f transform_;
|
||||
gobject owner_;
|
||||
node* parent_{nullptr};
|
||||
node_children children_;
|
||||
|
||||
@@ -28,8 +28,8 @@ namespace e2d
|
||||
gobject instantiate(const node_iptr& parent);
|
||||
gobject instantiate(const prefab& prefab, const node_iptr& parent);
|
||||
|
||||
gobject instantiate(const node_iptr& parent, const t3f& transform);
|
||||
gobject instantiate(const prefab& prefab, const node_iptr& parent, const t3f& transform);
|
||||
gobject instantiate(const node_iptr& parent, const t2f& transform);
|
||||
gobject instantiate(const prefab& prefab, const node_iptr& parent, const t2f& transform);
|
||||
|
||||
void destroy_instance(gobject& inst) noexcept;
|
||||
void finalize_instances() noexcept;
|
||||
|
||||
@@ -1,16 +1,19 @@
|
||||
---@class node
|
||||
local node = {
|
||||
---@type t3f
|
||||
transform = t3f.identity(),
|
||||
---@type gobject
|
||||
owner = nil,
|
||||
|
||||
---@type v3f
|
||||
translation = v3f.zero(),
|
||||
---@type t2f
|
||||
transform = t2f.identity(),
|
||||
|
||||
---@type q4f
|
||||
rotation = q4f.identity(),
|
||||
---@type v2f
|
||||
translation = v2f.zero(),
|
||||
|
||||
---@type v3f
|
||||
scale = v3f.unit(),
|
||||
---@type number
|
||||
rotation = 0,
|
||||
|
||||
---@type v2f
|
||||
scale = v2f.unit(),
|
||||
|
||||
---@type m4f
|
||||
local_matrix = m4f.identity(),
|
||||
|
||||
@@ -4,7 +4,7 @@ local world = {
|
||||
|
||||
---@overload fun(prefab: prefab): gobject
|
||||
---@overload fun(prefab: prefab, parent: node): gobject
|
||||
---@overload fun(prefab: prefab, parent: node, transform: t3f): gobject
|
||||
---@overload fun(prefab: prefab, parent: node, transform: t2f): gobject
|
||||
---@return gobject
|
||||
function world:instantiate(...) end
|
||||
|
||||
|
||||
@@ -15,25 +15,23 @@ namespace e2d::bindings::high
|
||||
sol::no_constructor,
|
||||
|
||||
"owner", sol::property(
|
||||
[](const node& n) -> gobject {
|
||||
return n.owner();
|
||||
}),
|
||||
[](const node& n) -> gobject { return n.owner(); }),
|
||||
|
||||
"transform", sol::property(
|
||||
[](const node& n) -> t3f { return n.transform(); },
|
||||
sol::resolve<void(const t3f&)>(&node::transform)),
|
||||
[](const node& n) -> t2f { return n.transform(); },
|
||||
[](node& n, const t2f& v) { n.transform(v); }),
|
||||
|
||||
"translation", sol::property(
|
||||
[](const node& n) -> v3f { return n.translation(); },
|
||||
sol::resolve<void(const v3f&)>(&node::translation)),
|
||||
[](const node& n) -> v2f { return n.translation(); },
|
||||
[](node& n, const v2f& v) { n.translation(v); }),
|
||||
|
||||
"rotation", sol::property(
|
||||
[](const node& n) -> q4f { return n.rotation(); },
|
||||
sol::resolve<void(const q4f&)>(&node::rotation)),
|
||||
[](const node& n) -> f32 { return n.rotation().value; },
|
||||
[](node& n, f32 v) { n.rotation(make_rad(v)); }),
|
||||
|
||||
"scale", sol::property(
|
||||
[](const node& n) -> v3f { return n.scale(); },
|
||||
sol::resolve<void(const v3f&)>(&node::scale)),
|
||||
[](const node& n) -> v2f { return n.scale(); },
|
||||
[](node& n, const v2f& v) { n.scale(v); }),
|
||||
|
||||
"local_matrix", sol::property(
|
||||
[](const node& n) -> m4f { return n.local_matrix(); }),
|
||||
|
||||
@@ -21,7 +21,7 @@ namespace e2d::bindings::high
|
||||
[](world& w, const prefab& prefab, const node_iptr& parent) -> gobject {
|
||||
return w.instantiate(prefab, parent);
|
||||
},
|
||||
[](world& w, const prefab& prefab, const node_iptr& parent, const t3f& transform) -> gobject {
|
||||
[](world& w, const prefab& prefab, const node_iptr& parent, const t2f& transform) -> gobject {
|
||||
return w.instantiate(prefab, parent, transform);
|
||||
}
|
||||
)
|
||||
|
||||
@@ -13,9 +13,9 @@ namespace e2d
|
||||
"required" : [],
|
||||
"additionalProperties" : false,
|
||||
"properties" : {
|
||||
"translation" : { "$ref": "#/common_definitions/v3" },
|
||||
"rotation" : { "$ref": "#/common_definitions/q4" },
|
||||
"scale" : { "$ref": "#/common_definitions/v3" }
|
||||
"translation" : { "$ref": "#/common_definitions/v2" },
|
||||
"rotation" : { "type" : "number" },
|
||||
"scale" : { "$ref": "#/common_definitions/v2" }
|
||||
}
|
||||
})json";
|
||||
|
||||
@@ -28,7 +28,7 @@ namespace e2d
|
||||
}
|
||||
|
||||
if ( ctx.root.HasMember("translation") ) {
|
||||
auto translation = component.node()->translation();
|
||||
v2f translation = component.node()->translation();
|
||||
if ( !json_utils::try_parse_value(ctx.root["translation"], translation) ) {
|
||||
the<debug>().error("ACTOR: Incorrect formatting of 'translation' property");
|
||||
return false;
|
||||
@@ -37,7 +37,7 @@ namespace e2d
|
||||
}
|
||||
|
||||
if ( ctx.root.HasMember("rotation") ) {
|
||||
auto rotation = component.node()->rotation();
|
||||
radf rotation = component.node()->rotation();
|
||||
if ( !json_utils::try_parse_value(ctx.root["rotation"], rotation) ) {
|
||||
the<debug>().error("ACTOR: Incorrect formatting of 'rotation' property");
|
||||
return false;
|
||||
@@ -46,7 +46,7 @@ namespace e2d
|
||||
}
|
||||
|
||||
if ( ctx.root.HasMember("scale") ) {
|
||||
auto scale = component.node()->scale();
|
||||
v2f scale = component.node()->scale();
|
||||
if ( !json_utils::try_parse_value(ctx.root["scale"], scale) ) {
|
||||
the<debug>().error("ACTOR: Incorrect formatting of 'scale' property");
|
||||
return false;
|
||||
|
||||
@@ -21,7 +21,7 @@ namespace e2d
|
||||
return node_iptr(new node());
|
||||
}
|
||||
|
||||
node_iptr node::create(const t3f& transform) {
|
||||
node_iptr node::create(const t2f& transform) {
|
||||
node_iptr n = create();
|
||||
n->transform(transform);
|
||||
return n;
|
||||
@@ -35,7 +35,7 @@ namespace e2d
|
||||
return child;
|
||||
}
|
||||
|
||||
node_iptr node::create(const node_iptr& parent, const t3f& transform) {
|
||||
node_iptr node::create(const node_iptr& parent, const t2f& transform) {
|
||||
node_iptr n = create(parent);
|
||||
n->transform(transform);
|
||||
return n;
|
||||
@@ -45,7 +45,7 @@ namespace e2d
|
||||
return node_iptr(new node(std::move(owner)));
|
||||
}
|
||||
|
||||
node_iptr node::create(gobject owner, const t3f& transform) {
|
||||
node_iptr node::create(gobject owner, const t2f& transform) {
|
||||
node_iptr n = create(owner);
|
||||
n->transform(transform);
|
||||
return n;
|
||||
@@ -59,7 +59,7 @@ namespace e2d
|
||||
return child;
|
||||
}
|
||||
|
||||
node_iptr node::create(gobject owner, const node_iptr& parent, const t3f& transform) {
|
||||
node_iptr node::create(gobject owner, const node_iptr& parent, const t2f& transform) {
|
||||
node_iptr n = create(owner, parent);
|
||||
n->transform(transform);
|
||||
return n;
|
||||
@@ -73,39 +73,39 @@ namespace e2d
|
||||
return owner_;
|
||||
}
|
||||
|
||||
void node::transform(const t3f& transform) noexcept {
|
||||
void node::transform(const t2f& transform) noexcept {
|
||||
transform_ = transform;
|
||||
mark_dirty_local_matrix_();
|
||||
}
|
||||
|
||||
const t3f& node::transform() const noexcept {
|
||||
const t2f& node::transform() const noexcept {
|
||||
return transform_;
|
||||
}
|
||||
|
||||
void node::translation(const v3f& translation) noexcept {
|
||||
void node::translation(const v2f& translation) noexcept {
|
||||
transform_.translation = translation;
|
||||
mark_dirty_local_matrix_();
|
||||
}
|
||||
|
||||
const v3f& node::translation() const noexcept {
|
||||
const v2f& node::translation() const noexcept {
|
||||
return transform_.translation;
|
||||
}
|
||||
|
||||
void node::rotation(const q4f& rotation) noexcept {
|
||||
void node::rotation(const radf& rotation) noexcept {
|
||||
transform_.rotation = rotation;
|
||||
mark_dirty_local_matrix_();
|
||||
}
|
||||
|
||||
const q4f& node::rotation() const noexcept {
|
||||
const radf& node::rotation() const noexcept {
|
||||
return transform_.rotation;
|
||||
}
|
||||
|
||||
void node::scale(const v3f& scale) noexcept {
|
||||
void node::scale(const v2f& scale) noexcept {
|
||||
transform_.scale = scale;
|
||||
mark_dirty_local_matrix_();
|
||||
}
|
||||
|
||||
const v3f& node::scale() const noexcept {
|
||||
const v2f& node::scale() const noexcept {
|
||||
return transform_.scale;
|
||||
}
|
||||
|
||||
|
||||
@@ -211,11 +211,11 @@ namespace e2d
|
||||
return inst;
|
||||
}
|
||||
|
||||
gobject world::instantiate(const node_iptr& parent, const t3f& transform) {
|
||||
gobject world::instantiate(const node_iptr& parent, const t2f& transform) {
|
||||
return instantiate(prefab(), parent, transform);
|
||||
}
|
||||
|
||||
gobject world::instantiate(const prefab& prefab, const node_iptr& parent, const t3f& transform) {
|
||||
gobject world::instantiate(const prefab& prefab, const node_iptr& parent, const t2f& transform) {
|
||||
gobject inst = new_instance(*this, prefab);
|
||||
inst.component<actor>()->node()->transform(transform);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user