From bf0e61768961599469903ca36f717bab2e6cb2bb Mon Sep 17 00:00:00 2001 From: fgnm Date: Tue, 30 Apr 2024 13:19:46 +0200 Subject: [PATCH] Avoid to recalculate layer's hash when not necessary, reduce the number of component mapper's get requests --- hyperlap2d-runtime-libgdx | 2 +- .../controller/commands/ConvertToCompositeCommand.java | 8 ++++---- .../editor/controller/commands/DeleteLayerCommand.java | 2 +- .../editor/controller/commands/NewLayerCommand.java | 2 +- .../editor/controller/commands/PasteItemsCommand.java | 2 +- .../editor/controller/commands/RenameLayerCommand.java | 6 +++--- .../rednblack/editor/utils/runtime/EntityUtils.java | 2 +- .../rednblack/editor/view/ui/box/UIItemsTreeBox.java | 4 ++-- .../editor/view/ui/box/UILayerBoxMediator.java | 10 +++++----- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/hyperlap2d-runtime-libgdx b/hyperlap2d-runtime-libgdx index d4ac3d6b..bd0fc0d4 160000 --- a/hyperlap2d-runtime-libgdx +++ b/hyperlap2d-runtime-libgdx @@ -1 +1 @@ -Subproject commit d4ac3d6b99c1fc864b72ac75743b20a95f0fbb87 +Subproject commit bd0fc0d4b424470a8eb36ae343509753ebfd8edb diff --git a/src/main/java/games/rednblack/editor/controller/commands/ConvertToCompositeCommand.java b/src/main/java/games/rednblack/editor/controller/commands/ConvertToCompositeCommand.java index 76ff0e4b..4d7345f5 100644 --- a/src/main/java/games/rednblack/editor/controller/commands/ConvertToCompositeCommand.java +++ b/src/main/java/games/rednblack/editor/controller/commands/ConvertToCompositeCommand.java @@ -58,7 +58,7 @@ public class ConvertToCompositeCommand extends EntityModifyRevertibleCommand { for(int entity: entities) { ZIndexComponent zIndexComponent = SandboxComponentRetriever.get(entity, ZIndexComponent.class); String tmpId = EntityUtils.getEntityId(entity); - layersBackup.put(tmpId, zIndexComponent.layerName); + layersBackup.put(tmpId, zIndexComponent.getLayerName()); } } @@ -83,7 +83,7 @@ public class ConvertToCompositeCommand extends EntityModifyRevertibleCommand { // put it on default layer ZIndexComponent zIndexComponent = SandboxComponentRetriever.get(childEntity, ZIndexComponent.class); - zIndexComponent.layerName = "Default"; + zIndexComponent.setLayerName("Default"); } // recalculate composite size @@ -94,7 +94,7 @@ public class ConvertToCompositeCommand extends EntityModifyRevertibleCommand { dimensionsComponent.boundBox.set(0, 0, newSize.x, newSize.y); ZIndexComponent zIndexComponent = SandboxComponentRetriever.get(entity, ZIndexComponent.class); - zIndexComponent.layerName = layerBoxMediator.getCurrentSelectedLayerName(); + zIndexComponent.setLayerName(layerBoxMediator.getCurrentSelectedLayerName()); sandbox.getEngine().process(); @@ -131,7 +131,7 @@ public class ConvertToCompositeCommand extends EntityModifyRevertibleCommand { // put layer data back ZIndexComponent zIndexComponent = SandboxComponentRetriever.get(entity, ZIndexComponent.class); - zIndexComponent.layerName = layersBackup.get(EntityUtils.getEntityId(tmpEntity)); + zIndexComponent.setLayerName(layersBackup.get(EntityUtils.getEntityId(tmpEntity))); } // remove composite diff --git a/src/main/java/games/rednblack/editor/controller/commands/DeleteLayerCommand.java b/src/main/java/games/rednblack/editor/controller/commands/DeleteLayerCommand.java index 64fbf5df..592a8122 100644 --- a/src/main/java/games/rednblack/editor/controller/commands/DeleteLayerCommand.java +++ b/src/main/java/games/rednblack/editor/controller/commands/DeleteLayerCommand.java @@ -46,7 +46,7 @@ public class DeleteLayerCommand extends TransactiveCommand { for(int i = 0; i < nodeComponent.children.size; i++) { int child = nodeComponent.children.get(i); ZIndexComponent zIndexComponent = SandboxComponentRetriever.get(child, ZIndexComponent.class); - if(zIndexComponent.layerName.equals(layerName)) { + if(zIndexComponent.getLayerName().equals(layerName)) { result.add(child); } } diff --git a/src/main/java/games/rednblack/editor/controller/commands/NewLayerCommand.java b/src/main/java/games/rednblack/editor/controller/commands/NewLayerCommand.java index 749d0005..6c138fae 100644 --- a/src/main/java/games/rednblack/editor/controller/commands/NewLayerCommand.java +++ b/src/main/java/games/rednblack/editor/controller/commands/NewLayerCommand.java @@ -29,7 +29,7 @@ public class NewLayerCommand extends EntityModifyRevertibleCommand { int viewingEntity = Sandbox.getInstance().getCurrentViewingEntity(); LayerMapComponent layerMapComponent = SandboxComponentRetriever.get(viewingEntity, LayerMapComponent.class); - if (layerMapComponent.getLayer(layerName) != null) { + if (layerMapComponent.getLayer(layerName.hashCode()) != null) { cancel(); Dialogs.showErrorDialog(Sandbox.getInstance().getUIStage(), "Layer name already exists.").padBottom(20).pack(); return; diff --git a/src/main/java/games/rednblack/editor/controller/commands/PasteItemsCommand.java b/src/main/java/games/rednblack/editor/controller/commands/PasteItemsCommand.java index 1670328d..7c4fc325 100644 --- a/src/main/java/games/rednblack/editor/controller/commands/PasteItemsCommand.java +++ b/src/main/java/games/rednblack/editor/controller/commands/PasteItemsCommand.java @@ -72,7 +72,7 @@ public class PasteItemsCommand extends EntityModifyRevertibleCommand { transformComponent.x += diff.x; transformComponent.y += diff.y; ZIndexComponent zIndexComponent = SandboxComponentRetriever.get(entity, ZIndexComponent.class); - zIndexComponent.layerName = layerBoxMediator.getCurrentSelectedLayerName(); + zIndexComponent.setLayerName(layerBoxMediator.getCurrentSelectedLayerName()); Sandbox.getInstance().getEngine().getSystem(LayerSystem.class).process(); Facade.getInstance().sendNotification(MsgAPI.NEW_ITEM_ADDED, entity); pastedEntityIds.add(EntityUtils.getEntityId(entity)); diff --git a/src/main/java/games/rednblack/editor/controller/commands/RenameLayerCommand.java b/src/main/java/games/rednblack/editor/controller/commands/RenameLayerCommand.java index a3ed0bdc..aa46b2c8 100644 --- a/src/main/java/games/rednblack/editor/controller/commands/RenameLayerCommand.java +++ b/src/main/java/games/rednblack/editor/controller/commands/RenameLayerCommand.java @@ -64,7 +64,7 @@ public class RenameLayerCommand extends EntityModifyRevertibleCommand { NodeComponent nodeComponent = SandboxComponentRetriever.get(viewEntity, NodeComponent.class); LayerMapComponent layerMapComponent = SandboxComponentRetriever.get(viewEntity, LayerMapComponent.class); - if (layerMapComponent.getLayer(toName) != null) { + if (layerMapComponent.getLayer(toName.hashCode()) != null) { cancel(); return; } @@ -73,8 +73,8 @@ public class RenameLayerCommand extends EntityModifyRevertibleCommand { for(int childEntity: nodeComponent.children) { ZIndexComponent zIndexComponent = SandboxComponentRetriever.get(childEntity, ZIndexComponent.class); - if(zIndexComponent.layerName.equals(fromName)) { - zIndexComponent.layerName = toName; + if(zIndexComponent.getLayerName().equals(fromName)) { + zIndexComponent.setLayerName(toName); } } } diff --git a/src/main/java/games/rednblack/editor/utils/runtime/EntityUtils.java b/src/main/java/games/rednblack/editor/utils/runtime/EntityUtils.java index 6213030a..1c4f9497 100644 --- a/src/main/java/games/rednblack/editor/utils/runtime/EntityUtils.java +++ b/src/main/java/games/rednblack/editor/utils/runtime/EntityUtils.java @@ -288,7 +288,7 @@ public class EntityUtils { ZIndexComponent zIndexComponent = SandboxComponentRetriever.get(entity, ZIndexComponent.class); LayerMapComponent layerMapComponent = SandboxComponentRetriever.get(SandboxComponentRetriever.get(entity, ParentNodeComponent.class).parentEntity, LayerMapComponent.class); - return layerMapComponent.getLayer(zIndexComponent.layerName); + return layerMapComponent.getLayer(zIndexComponent.layerHash); } /** diff --git a/src/main/java/games/rednblack/editor/view/ui/box/UIItemsTreeBox.java b/src/main/java/games/rednblack/editor/view/ui/box/UIItemsTreeBox.java index 2b070748..785edcdd 100644 --- a/src/main/java/games/rednblack/editor/view/ui/box/UIItemsTreeBox.java +++ b/src/main/java/games/rednblack/editor/view/ui/box/UIItemsTreeBox.java @@ -177,7 +177,7 @@ public class UIItemsTreeBox extends UICollapsibleBox { ParentNodeComponent parentNodeComponent = parentNodeComponentMapper.get(item); MainItemComponent mainItemComponent = mainItemComponentMapper.get(item); - UIItemsTreeNode node = Pools.get(UIItemsTreeNode.class, 20000).obtain(); + UIItemsTreeNode node = Pools.get(UIItemsTreeNode.class, 80000).obtain(); tmpNodes.add(node); if (parentNodeComponent == null) { @@ -194,7 +194,7 @@ public class UIItemsTreeBox extends UICollapsibleBox { } ZIndexComponent zIndexComponent = zIndexComponentMapper.get(item); - node.setName(name, zIndexComponent.layerName); + node.setName(name, zIndexComponent.getLayerName()); node.setNodeValue(mainItemComponent.uniqueId, zIndexComponent.getGlobalZIndex()); if (mainItemComponent.entityType != EntityFactory.COMPOSITE_TYPE) diff --git a/src/main/java/games/rednblack/editor/view/ui/box/UILayerBoxMediator.java b/src/main/java/games/rednblack/editor/view/ui/box/UILayerBoxMediator.java index 85efb6e8..206fcc3a 100644 --- a/src/main/java/games/rednblack/editor/view/ui/box/UILayerBoxMediator.java +++ b/src/main/java/games/rednblack/editor/view/ui/box/UILayerBoxMediator.java @@ -172,7 +172,7 @@ public class UILayerBoxMediator extends PanelMediator { Set selection = notification.getBody(); if(selection.size() == 1) { ZIndexComponent zIndexComponent = SandboxComponentRetriever.get(selection.iterator().next(), ZIndexComponent.class); - index = findLayerByName(zIndexComponent.layerName); + index = findLayerByName(zIndexComponent.getLayerName()); if(index == -1) { // handle this somehow } else { @@ -187,7 +187,7 @@ public class UILayerBoxMediator extends PanelMediator { index = viewComponent.getCurrentSelectedLayerIndex(); int item = notification.getBody(); ZIndexComponent zIndexComponent = SandboxComponentRetriever.get(item, ZIndexComponent.class); - if(zIndexComponent.layerName == null) zIndexComponent.layerName = layers.get(index).layerName; + if(zIndexComponent.getLayerName() == null || zIndexComponent.getLayerName().isEmpty()) zIndexComponent.setLayerName(layers.get(index).layerName); break; case UILayerBox.CHANGE_LAYER_NAME: String layerName = notification.getBody(); @@ -245,7 +245,7 @@ public class UILayerBoxMediator extends PanelMediator { int viewEntity = Sandbox.getInstance().getCurrentViewingEntity(); LayerMapComponent layerMapComponent = SandboxComponentRetriever.get(viewEntity, LayerMapComponent.class); - layerMapComponent.getLayer(layerName).isLocked = setLocked; + layerMapComponent.getLayer(layerName.hashCode()).isLocked = setLocked; } private void selectEntitiesByLayerName(UILayerBox.UILayerItem layerItem) { @@ -262,7 +262,7 @@ public class UILayerBoxMediator extends PanelMediator { for(int i=0; i { for(int i=0; i