135 lines
4.1 KiB
ActionScript
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));
|
|
}
|
|
}
|
|
|
|
}
|