From feacc66350575be00525f78005decf443d9331bd Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Tue, 5 Mar 2024 22:16:42 +0100 Subject: editor/inspect: expose writing chunk & tile values --- editor/inspect-types.cpp | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/editor/inspect-types.cpp b/editor/inspect-types.cpp index 7f19263e..c42d4eb4 100644 --- a/editor/inspect-types.cpp +++ b/editor/inspect-types.cpp @@ -44,13 +44,24 @@ struct entity_accessors { }, E::type::field{"chunk"_s, [](const object& x) { return Vector3i(x.chunk().coord()); }, - ignored_write, - constantly(st::readonly), + [](object& x, Vector3i tile) { + if (tile.z() != x.coord.z()) // todo + { + fm_warn_once("object tried to move to different Z level (from %d to %d)", (int)tile.z(), (int)x.coord.z()); + return; + } + auto foo1 = Vector2i{tile.x(), tile.y()}; + auto foo2 = Vector2i{x.coord.chunk()}; + constexpr auto chunk_size = Vector2i{tile_size_xy} * TILE_MAX_DIM; + + x.move_to((foo1 - foo2) * chunk_size); + }, }, E::type::field{"tile"_s, - [](const object& x) { return Vector2i(x.coord.local()); }, - ignored_write, - constantly(st::readonly), + [](const object& x) {return Vector2i(x.coord.local()); }, + [](object& x, Vector2i tile) { + x.move_to((tile - Vector2i{x.coord.local()}) * Vector2i{tile_size_xy}); + }, }, E::type::field{"offset"_s, [](const object& x) { return Vector2i(x.offset); }, // todo return Vector2b -- cgit v1.2.3