package com.uwsoft.editor.utils; import com.badlogic.ashley.core.Entity; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.utils.Array; import com.commons.MsgAPI; import com.uwsoft.editor.Overlap2DFacade; import com.uwsoft.editor.renderer.components.DimensionsComponent; import com.uwsoft.editor.renderer.components.TransformComponent; import com.uwsoft.editor.renderer.utils.ComponentRetriever; /** * Created by Osman on 01.08.2015. */ public class TransformCommandBuilder { Array<Object> payload; public void begin(Entity forEntity) { TransformComponent transformComponent = ComponentRetriever.get(forEntity, TransformComponent.class); DimensionsComponent dimensionsComponent = ComponentRetriever.get(forEntity, DimensionsComponent.class); Object[] prevData = new Object[4]; payload = new Array<>(3); payload.add(forEntity); payload.add(prevData); payload.add(new Object[4]); setPos(1, transformComponent.x, transformComponent.y); setSize(1, dimensionsComponent.width, dimensionsComponent.height); setScale(1, transformComponent.scaleX, transformComponent.scaleY); setRotation(1, transformComponent.rotation); } private void setPos(int pIndex, float x, float y) { ((Object[])payload.get(pIndex))[0] = new Vector2(x, y); } private void setSize(int pIndex, float width, float height) { ((Object[])payload.get(pIndex))[1] = new Vector2(width, height); } private void setScale(int pIndex, float x, float y) { ((Object[])payload.get(pIndex))[2] = new Vector2(x, y); } private void setRotation(int pIndex, float rotation) { ((Object[])payload.get(pIndex))[3] = rotation; } public void setPos(float x, float y) { setPos(2, x, y); } public void setSize(float width, float height) { setSize(2, width, height); } public void setScale(float x, float y) { setScale(2, x, y); } public void setRotation(float rotation) { setRotation(2, rotation); } public void execute() { // check if payload is worth sending Object[] newData = (Object[]) payload.get(2); for(Object o : newData) { if (o != null) { Overlap2DFacade.getInstance().sendNotification(MsgAPI.ACTION_ITEM_TRANSFORM_TO, payload); return; } } } }