61 lines
1.4 KiB
ActionScript
61 lines
1.4 KiB
ActionScript
class MeshComponentRender {
|
|
Entity entity;
|
|
MeshComponent meshComponent;
|
|
|
|
MeshComponentRender(Entity _entity) {
|
|
entity = _entity;
|
|
meshComponent = entity.getMeshComponent();
|
|
}
|
|
|
|
void render() {
|
|
if (!entity.hasMeshComponent())
|
|
return;
|
|
|
|
if (meshComponent.hasMesh) {
|
|
UI::drawIcon("object3d.png", 32);
|
|
} else {
|
|
UI::drawIcon("empty.png", 32);
|
|
}
|
|
|
|
UI::dragDropTarget("MESH", AnyCallback(this.setMesh));
|
|
|
|
if (meshComponent.hasMesh) {
|
|
UI::sameline();
|
|
UI::space();
|
|
UI::sameline();
|
|
|
|
UI::titleCenterY(meshComponent.meshResource.name, 32);
|
|
UI::dragDropTarget("MESH", AnyCallback(this.setMesh));
|
|
}
|
|
|
|
UI::space(20, 20);
|
|
|
|
if (UI::button("Clear")) {
|
|
meshComponent.clear();
|
|
}
|
|
|
|
UI::sameline();
|
|
UI::space(10, 20);
|
|
UI::sameline();
|
|
|
|
if (meshComponent.hasMesh) {
|
|
meshComponent.isActive = UI::checkbox("Active", meshComponent.isActive);
|
|
} else {
|
|
UI::checkboxDisabled("Active", meshComponent.isActive);
|
|
}
|
|
}
|
|
|
|
void setMesh(any@ mesh_data) {
|
|
string mesh;
|
|
mesh_data.retrieve(mesh);
|
|
|
|
meshComponent.meshResource = Resource::loadGPUMesh(mesh);
|
|
}
|
|
|
|
void remove() {
|
|
if (UI::menuItem("Remove")) {
|
|
entity.removeMeshComponent();
|
|
}
|
|
}
|
|
}
|