void setShaderComponent(any@ shaderComponent_data, any@ shader_data) { string shader; shader_data.retrieve(shader); ShaderComponent shaderComponent; shaderComponent_data.retrieve(shaderComponent); shaderComponent.setShader(shader); } void renderShaderComponent(any@ data) { Entity entity; data.retrieve(entity); if (!entity.hasShaderComponent()) return; ShaderComponent shaderComponent = entity.getShaderComponent(); if (shaderComponent.hasShader) { UI::drawIcon("shader", 32); } else { UI::drawIcon("empty", 32); } UI::dragDropTarget("SHADER", any(shaderComponent), setShaderComponent); if (shaderComponent.hasShader) { UI::sameline(); UI::space(); UI::sameline(); UI::titleCenterY(shaderComponent.getShader(), 32); UI::dragDropTarget("SHADER", any(shaderComponent), setShaderComponent); } UI::space(20, 20); if (UI::button("Clear")) { shaderComponent.clear(); } } void removeShaderComponent(any@ entity) { Entity ent; entity.retrieve(ent); if (UI::menuItem("Remove")) { ent.removeShaderComponent(); } }