class ShaderComponentRender { Entity entity; ShaderComponent shaderComponent; ShaderComponentRender(Entity _entity) { entity = _entity; shaderComponent = entity.getComponent(); } void setShader(any@ shaderData) { Shader shader; if (shaderData.retrieve(shader)) { shaderComponent.shader = shader; } } void setTexture(any@ textureData) { Texture texture; if (textureData.retrieve(texture)) { shaderComponent.texture = texture; } } void render() { if (!entity.hasComponent()) return; ImGui::title("Shader Component"); ImGui::space(10, 10); ImGui::text("Shader : "); ImGui::sameline(); if (shaderComponent.hasShader) { ImGui::text(shaderComponent.shader.name); } else { ImGui::text("Empty"); } // Mesh icon if (shaderComponent.hasShader) { FrameBuffer frameBuffer = Previewer::getShaderPreview(shaderComponent.shader); ImGui::drawFrameBufferCentered(frameBuffer, 128, 128); } else { ImGui::drawIconCentered(StudioAPI::loadIcon("empty.png"), 128); } ImGui::dragDropTarget("SHADER", ReciverFunction(this.setShader)); if (ImGui::buttonEnd("Clear")) { shaderComponent.clear(); } } void remove() { if (ImGui::menuItem("Remove")) { entity.removeComponent(); } } }