Skip to content

Commit

Permalink
refactor(tesseratos): use DataInspector for entity inspector plugin
Browse files Browse the repository at this point in the history
  • Loading branch information
roby2014 committed Nov 13, 2023
1 parent ca2ad89 commit 719417f
Showing 1 changed file with 24 additions and 11 deletions.
35 changes: 24 additions & 11 deletions tools/tesseratos/src/tesseratos/entity_inspector/plugin.cpp
Original file line number Diff line number Diff line change
@@ -1,40 +1,53 @@
#include <imgui.h>

#include <cubos/core/ecs/entity/entity.hpp>
#include <cubos/core/reflection/reflect.hpp>

#include <cubos/engine/imgui/data_inspector.hpp>
#include <cubos/engine/imgui/plugin.hpp>
#include <cubos/engine/imgui/serialization.hpp>

#include <tesseratos/entity_inspector/plugin.hpp>
#include <tesseratos/entity_selector/plugin.hpp>

using cubos::core::data::old::Context;
using cubos::core::data::old::SerializationMap;
using cubos::core::ecs::Entity;
using cubos::core::ecs::World;
using cubos::core::ecs::Write;
using cubos::engine::DataInspector;

using cubos::core::reflection::reflect;
using cubos::core::reflection::Type;
using cubos::engine::Cubos;
using cubos::engine::imguiEditPackage;

using namespace tesseratos;

static void inspectEntity(Write<World> world)
{
auto selection = world->read<EntitySelector>().get().selection;

ImGui::Begin("Entity Inspector");
if (!ImGui::IsWindowCollapsed())
{
ImGui::BeginTable("showEntity", 2, ImGuiTableFlags_BordersOuter | ImGuiTableFlags_Resizable);
auto selection = world->read<EntitySelector>().get().selection;

if (!selection.isNull() && world->isAlive(selection))
{
auto pkg = world->pack(selection);
if (imguiEditPackage(pkg, std::to_string(selection.index)))
ImGui::Text("Entity %d selected", selection.index);
ImGui::BeginTable("showEntity2", 2, ImGuiTableFlags_BordersOuter | ImGuiTableFlags_Resizable);
auto dataInspector = world->write<DataInspector>();

ImGui::TableNextRow();

for (auto c : world->components(selection))
{
world->unpack(selection, pkg);
if (dataInspector.get().inspect(c.type->name(), *c.type, c.value, false))
{
// ...
}
}
ImGui::EndTable();
}
else
{
ImGui::Text("No entity selected or alive");
}
ImGui::EndTable();
}
ImGui::End();
}
Expand Down

0 comments on commit 719417f

Please sign in to comment.