class ShaderComponentRender { Entity entity; ShaderComponent shaderComponent; ShaderComponentRender(Entity _entity) { entity = _entity; shaderComponent = entity.getShaderComponent(); } void setShader(any@ shader_data) { string shader; shader_data.retrieve(shader); shaderComponent.shader = Resource::loadShader(shader); } void setTexture(any@ texture_data) { TextureResource texture; texture_data.retrieve(texture); Engine::print(texture.name); shaderComponent.texture = texture; Engine::print(shaderComponent.texture.name); } void render() { if (!entity.hasShaderComponent()) return; if (shaderComponent.hasShader) { UI::drawIcon("shader.png", 32); } else { UI::drawIcon("empty.png", 32); } UI::dragDropTarget("SHADER", AnyCallback(this.setShader)); if (shaderComponent.hasShader) { UI::sameline(); UI::space(); UI::sameline(); UI::titleCenterY(shaderComponent.shader.name, 32); UI::dragDropTarget("SHADER", AnyCallback(this.setShader)); } UI::space(); if (shaderComponent.texture.isValid()) { UI::drawIcon(shaderComponent.texture, 32); } else { UI::drawIcon("empty.png", 32); } UI::dragDropTarget("TEXTURE", AnyCallback(this.setTexture)); if (shaderComponent.texture.isValid()) { UI::sameline(); UI::space(); UI::sameline(); UI::titleCenterY(shaderComponent.texture.name, 32); UI::dragDropTarget("TEXTURE", AnyCallback(this.setTexture)); } UI::space(20, 20); if (UI::button("Clear")) { shaderComponent.clear(); } } void remove() { if (UI::menuItem("Remove")) { entity.removeShaderComponent(); } } }