2026-02-05 21:38:30 +01:00

135 lines
4.1 KiB
ActionScript

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<MeshComponent>()) {
MeshComponentRender meshComponent(entity);
ImGui::componentNodeContextMenu(
"\uf248 Mesh Component",
SimpleFunction(meshComponent.render),
SimpleFunction(meshComponent.remove)
);
}
if (entity.hasComponent<ShaderComponent>()) {
ShaderComponentRender shaderRender(entity);
ImGui::componentNodeContextMenu(
"\uf248 Shader Component",
SimpleFunction(shaderRender.render),
SimpleFunction(shaderRender.remove)
);
}
if (entity.hasComponent<CameraComponent>()) {
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));
}
}
}