class PropertiesPanel : Panel { void onImGui() { Entity entity = ActiveEntity::getActiveEntity(); // NAME ImGui::title("\uf1b2 " + entity.name); if (!entity.isRoot) { ImGui::sameline(); EntityNetworkBehaviour networkBehaviour = entity.networkBehaviour; string networkBehaviourName; if (networkBehaviour == EntityNetworkBehaviour::Parent) { networkBehaviourName = "Parent"; } if (networkBehaviour == EntityNetworkBehaviour::Client) { networkBehaviourName = "Client"; } if (networkBehaviour == EntityNetworkBehaviour::Server) { networkBehaviourName = "Server"; } ImGui::drawComboEnd("##Entity behaviour", networkBehaviourName, SimpleFunction(this.selectEntityBehaviour)); ImGui::contextItemPopup( "##MenuOption", SimpleFunction(this.renameEntityMenu) ); } ImGui::separator(); ImGui::textColor(0.5f, 0.5f, 0.5f, "Id: " + entity.id); // Root entity cannot be modified if (entity.isRoot) return; ImGui::sameline(); if (ImGui::buttonEnd("\uf0fe Add Component")) { ImGui::openPopup("ADD_COMPONENT", any(entity)); } ImGui::space(); TransformPropertiesRender transformComponent(entity); ImGui::componentNode( "\uf0b2 Transform Component", SimpleFunction(transformComponent.render) ); if (entity.hasComponent()) { MeshComponentRender meshComponent(entity); ImGui::componentNodeContextMenu( "\uf248 Mesh Component", SimpleFunction(meshComponent.render), SimpleFunction(meshComponent.remove) ); } if (entity.hasComponent()) { CameraComponentRender cameraComponent(entity); ImGui::componentNodeContextMenu( "\uf030 Camera Component", SimpleFunction(cameraComponent.render), SimpleFunction(cameraComponent.remove) ); } ImGui::space(); ImGui::separator(); if (ImGui::buttonCenter("\uf0fe Add Component##2")) { ImGui::openPopup("ADD_COMPONENT", any(entity)); } AddComponentRender addComponentRender(entity); ImGui::simplePopup( "ADD_COMPONENT", SimpleFunction(addComponentRender.addComponentPopup) ); ImGui::modalPopup( "Rename entity", SimpleFunction(this.renameEntityMenu) ); } void selectEntityBehaviour() { Entity entity = ActiveEntity::getActiveEntity(); EntityNetworkBehaviour networkBehaviour = entity.networkBehaviour; if (ImGui::drawComboItem("Parent", networkBehaviour == EntityNetworkBehaviour::Parent)) { entity.networkBehaviour = EntityNetworkBehaviour::Parent; } if (ImGui::drawComboItem("Server", networkBehaviour == EntityNetworkBehaviour::Server)) { entity.networkBehaviour = EntityNetworkBehaviour::Server; } if (ImGui::drawComboItem("Client", networkBehaviour == EntityNetworkBehaviour::Client)) { entity.networkBehaviour = EntityNetworkBehaviour::Client; } } void renameEntityMenu() { Entity entity = ActiveEntity::getActiveEntity(); if (entity.isRoot) return; if (ImGui::menuItem("Rename entity")) { ImGui::openPopup("Rename entity", any(entity)); } } }