Rework ResourceManager and related to completely detach extensions from runtime.

* Removed `SpineDataComponent`
* Removed `TalosDataComponent`
This commit is contained in:
fgnm
2021-12-26 23:58:51 +01:00
parent 16b7ace5c7
commit 1bf7e5be99
38 changed files with 125 additions and 119 deletions
+1 -1
View File
@@ -3,7 +3,7 @@ plugins {
}
group 'games.rednblack'
version '0.0.8'
version '0.1.0'
repositories {
mavenCentral()
+1 -1
View File
@@ -3,7 +3,7 @@ plugins {
}
group 'games.rednblack'
version '0.0.8'
version '0.1.0'
repositories {
mavenCentral()
+1 -1
View File
@@ -3,7 +3,7 @@ plugins {
}
group 'games.rednblack'
version '0.0.8'
version '0.1.0'
repositories {
mavenCentral()
+1 -1
View File
@@ -3,7 +3,7 @@ plugins {
}
group 'games.rednblack'
version '0.0.8'
version '0.1.0'
ext {
pack = ["assets/textures", "assets/pack/", "tiled"]
@@ -23,6 +23,7 @@ import java.util.HashMap;
import java.util.Iterator;
import games.rednblack.editor.renderer.data.TexturePackVO;
import games.rednblack.h2d.extension.spine.SpineItemType;
import org.puremvc.java.interfaces.INotification;
import org.puremvc.java.patterns.mediator.Mediator;
@@ -197,7 +198,7 @@ public class TiledPanelMediator extends Mediator<TiledPanel> {
height = r.getRegionHeight() / TiledPlugin.AUTO_TILE_ROWS;
} else {
TileVO t = tiledPlugin.dataToSave.getTile(notification.getBody());
if (t.entityType == EntityFactory.SPINE_TYPE) {
if (t.entityType == SpineItemType.SPINE_TYPE) {
SpineDrawable spineDrawable = tiledPlugin.pluginRM.getSpineDrawable(t.regionName);
width = spineDrawable.width;
height = spineDrawable.height;
@@ -404,7 +405,7 @@ public class TiledPanelMediator extends Mediator<TiledPanel> {
else if (className.endsWith(".SpriteResource"))
return EntityFactory.SPRITE_TYPE;
else if (className.endsWith(".SpineResource"))
return EntityFactory.SPINE_TYPE;
return SpineItemType.SPINE_TYPE;
return EntityFactory.UNKNOWN_TYPE;
}
@@ -2,6 +2,7 @@ package games.rednblack.editor.plugin.tiled;
import games.rednblack.editor.renderer.factory.EntityFactory;
import games.rednblack.h2d.common.filters.IAbstractResourceFilter;
import games.rednblack.h2d.extension.spine.SpineItemType;
public class TilesResourceFilter extends IAbstractResourceFilter {
@@ -16,7 +17,7 @@ public class TilesResourceFilter extends IAbstractResourceFilter {
public boolean filterResource(String resName, int entityType) {
if (entityType == EntityFactory.IMAGE_TYPE
|| entityType == EntityFactory.SPRITE_TYPE
|| entityType == EntityFactory.SPINE_TYPE) {
|| entityType == SpineItemType.SPINE_TYPE) {
return tiledPlugin.dataToSave.containsAutoTile(resName) || tiledPlugin.dataToSave.containsTile(resName);
}
return false;
@@ -15,6 +15,7 @@ import games.rednblack.editor.plugin.tiled.TiledPlugin;
import games.rednblack.editor.plugin.tiled.view.SpineDrawable;
import games.rednblack.editor.renderer.factory.EntityFactory;
import games.rednblack.h2d.extension.spine.ResourceRetrieverAttachmentLoader;
import games.rednblack.h2d.extension.spine.SpineItemType;
import java.io.File;
import java.io.FileOutputStream;
@@ -98,7 +99,7 @@ public class ResourcesManager {
if (spineDrawableCache.get(name) == null) {
ResourceRetrieverAttachmentLoader atlasAttachmentLoader = new ResourceRetrieverAttachmentLoader(name, tiledPlugin.getAPI().getSceneLoader().getRm());
SkeletonJson skeletonJson = new SkeletonJson(atlasAttachmentLoader);
SkeletonData skeletonData = skeletonJson.readSkeletonData(tiledPlugin.getAPI().getSceneLoader().getRm().getSkeletonJSON(name));
SkeletonData skeletonData = skeletonJson.readSkeletonData(tiledPlugin.getAPI().getSceneLoader().getRm().getExternalItemType(SpineItemType.SPINE_TYPE, name));
Skeleton skeleton = new Skeleton(skeletonData);
spineDrawableCache.put(name, new SpineDrawable(skeleton, skeletonRenderer));
@@ -1,5 +1,6 @@
package games.rednblack.editor.plugin.tiled.tools;
import games.rednblack.h2d.extension.spine.SpineItemType;
import org.puremvc.java.interfaces.INotification;
import com.badlogic.gdx.Input;
@@ -169,7 +170,7 @@ public class DrawTileTool implements Tool {
case EntityFactory.SPRITE_TYPE:
currentDrawStrategy = spriteDrawStrategy;
break;
case EntityFactory.SPINE_TYPE:
case SpineItemType.SPINE_TYPE:
currentDrawStrategy = spineDrawStrategy;
break;
default:
@@ -4,11 +4,12 @@ import com.esotericsoftware.spine.Skeleton;
import com.esotericsoftware.spine.SkeletonData;
import com.esotericsoftware.spine.SkeletonJson;
import games.rednblack.editor.plugin.tiled.TiledPlugin;
import games.rednblack.editor.renderer.components.SpineDataComponent;
import games.rednblack.editor.renderer.utils.ComponentRetriever;
import games.rednblack.h2d.common.command.ReplaceSpineCommandBuilder;
import games.rednblack.h2d.common.factory.IFactory;
import games.rednblack.h2d.extension.spine.ResourceRetrieverAttachmentLoader;
import games.rednblack.h2d.extension.spine.SpineComponent;
import games.rednblack.h2d.extension.spine.SpineItemType;
public class SpineDrawStrategy extends BasicDrawStrategy {
@@ -39,15 +40,15 @@ public class SpineDrawStrategy extends BasicDrawStrategy {
public void updateTile(int entity) {
if (!checkValidTile(entity)) return;
SpineDataComponent spineDataComponent = ComponentRetriever.get(entity, SpineDataComponent.class, tiledPlugin.getAPI().getEngine());
if (!spineDataComponent.animationName.equals(tiledPlugin.getSelectedTileName())) {
SpineComponent spineComponent = ComponentRetriever.get(entity, SpineComponent.class, tiledPlugin.getAPI().getEngine());
if (!spineComponent.animationName.equals(tiledPlugin.getSelectedTileName())) {
replaceSpineCommandBuilder.begin(entity);
String animName = tiledPlugin.getSelectedTileName();
replaceSpineCommandBuilder.setAnimationName(animName);
ResourceRetrieverAttachmentLoader atlasAttachmentLoader = new ResourceRetrieverAttachmentLoader(animName, tiledPlugin.getAPI().getSceneLoader().getRm());
SkeletonJson skeletonJson = new SkeletonJson(atlasAttachmentLoader);
replaceSpineCommandBuilder.setSkeletonJson(skeletonJson);
SkeletonData skeletonData = skeletonJson.readSkeletonData((tiledPlugin.getAPI().getSceneLoader().getRm().getSkeletonJSON(animName)));
SkeletonData skeletonData = skeletonJson.readSkeletonData((tiledPlugin.getAPI().getSceneLoader().getRm().getExternalItemType(SpineItemType.SPINE_TYPE, animName)));
replaceSpineCommandBuilder.setSkeleton(new Skeleton(skeletonData));
replaceSpineCommandBuilder.execute(tiledPlugin.facade);
}
@@ -19,6 +19,7 @@ import games.rednblack.editor.plugin.tiled.view.SpineDrawable;
import games.rednblack.editor.plugin.tiled.view.tabs.listener.GridTabInputListener;
import games.rednblack.editor.renderer.factory.EntityFactory;
import games.rednblack.h2d.common.view.ui.StandardWidgetsFactory;
import games.rednblack.h2d.extension.spine.SpineItemType;
public abstract class AbstractGridTilesTab<T extends TextureRegionVO> extends DefaultTab {
@@ -115,7 +116,7 @@ public abstract class AbstractGridTilesTab<T extends TextureRegionVO> extends De
protected void setGridSizeToFirstTileSize(String tileName, int type) {
float width = 0;
float height = 0;
if (type == EntityFactory.SPINE_TYPE) {
if (type == SpineItemType.SPINE_TYPE) {
SpineDrawable spineDrawable = tiledPlugin.pluginRM.getSpineDrawable(tileName);
width = spineDrawable.width;
height = spineDrawable.height;
@@ -157,14 +158,14 @@ public abstract class AbstractGridTilesTab<T extends TextureRegionVO> extends De
Drawable tileDrawable = null;
if (i < savedTiles.size) {
int t = savedTiles.get(i).getEntityType();
if (t == EntityFactory.SPINE_TYPE) {
if (t == SpineItemType.SPINE_TYPE) {
tileDrawable = resourcesManager.getSpineDrawable(savedTiles.get(i).getRegionName());
} else {
tileDrawable = new TextureRegionDrawable(resourcesManager.getTextureRegion(savedTiles.get(i).getRegionName(), t));
}
} else if (!tileName.equals("")) {
if (i == tileIndex) {
if (type == EntityFactory.SPINE_TYPE) {
if (type == SpineItemType.SPINE_TYPE) {
tileDrawable = resourcesManager.getSpineDrawable(tileName);
} else {
tileDrawable = new TextureRegionDrawable(resourcesManager.getTextureRegion(tileName, type));
@@ -4,12 +4,11 @@ import com.esotericsoftware.spine.*;
import games.rednblack.editor.HyperLap2DFacade;
import games.rednblack.editor.controller.commands.EntityModifyRevertibleCommand;
import games.rednblack.editor.renderer.components.DimensionsComponent;
import games.rednblack.editor.renderer.components.SpineDataComponent;
import games.rednblack.editor.renderer.components.TransformComponent;
import games.rednblack.editor.utils.runtime.EntityUtils;
import games.rednblack.editor.utils.runtime.SandboxComponentRetriever;
import games.rednblack.h2d.common.MsgAPI;
import games.rednblack.h2d.extension.spine.SpineObjectComponent;
import games.rednblack.h2d.extension.spine.SpineComponent;
public class ReplaceSpineCommand extends EntityModifyRevertibleCommand {
@@ -29,33 +28,32 @@ public class ReplaceSpineCommand extends EntityModifyRevertibleCommand {
entityId = EntityUtils.getEntityId(entity);
SpineDataComponent spineDataComponent = SandboxComponentRetriever.get(entity, SpineDataComponent.class);
SpineObjectComponent spineObjectComponent = SandboxComponentRetriever.get(entity, SpineObjectComponent.class);
SpineComponent spineComponent = SandboxComponentRetriever.get(entity, SpineComponent.class);
DimensionsComponent dimensionsComponent = SandboxComponentRetriever.get(entity, DimensionsComponent.class);
TransformComponent transformComponent = SandboxComponentRetriever.get(entity, TransformComponent.class);
backupAnimName = spineDataComponent.animationName;
backupSkeletonJson = spineObjectComponent.skeletonJson;
backupSkeleton = spineObjectComponent.skeleton;
backupAnimName = spineComponent.animationName;
backupSkeletonJson = spineComponent.skeletonJson;
backupSkeleton = spineComponent.skeleton;
spineDataComponent.animationName = animName;
spineObjectComponent.skeletonJson = skeletonJson;
spineObjectComponent.skeletonData = skeletonData;
spineObjectComponent.skeleton = skeleton;
spineComponent.animationName = animName;
spineComponent.skeletonJson = skeletonJson;
spineComponent.skeletonData = skeletonData;
spineComponent.skeleton = skeleton;
AnimationStateData stateData = new AnimationStateData(skeletonData);
spineObjectComponent.state = new AnimationState(stateData);
spineComponent.state = new AnimationState(stateData);
spineObjectComponent.computeBoundBox(dimensionsComponent);
dimensionsComponent.width *= spineObjectComponent.worldMultiplier;
dimensionsComponent.height *= spineObjectComponent.worldMultiplier;
spineComponent.computeBoundBox(dimensionsComponent);
dimensionsComponent.width *= spineComponent.worldMultiplier;
dimensionsComponent.height *= spineComponent.worldMultiplier;
transformComponent.originX = dimensionsComponent.width / 2f;
transformComponent.originY = dimensionsComponent.height / 2f;
String currentAnimName = skeletonData.getAnimations().get(0).getName();
spineDataComponent.currentAnimationName = currentAnimName;
spineObjectComponent.setAnimation(currentAnimName);
spineComponent.currentAnimationName = currentAnimName;
spineComponent.setAnimation(currentAnimName);
HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity);
}
@@ -64,29 +62,28 @@ public class ReplaceSpineCommand extends EntityModifyRevertibleCommand {
public void undoAction() {
int entity = EntityUtils.getByUniqueId(entityId);
SpineDataComponent spineDataComponent = SandboxComponentRetriever.get(entity, SpineDataComponent.class);
SpineObjectComponent spineObjectComponent = SandboxComponentRetriever.get(entity, SpineObjectComponent.class);
SpineComponent spineComponent = SandboxComponentRetriever.get(entity, SpineComponent.class);
DimensionsComponent dimensionsComponent = SandboxComponentRetriever.get(entity, DimensionsComponent.class);
TransformComponent transformComponent = SandboxComponentRetriever.get(entity, TransformComponent.class);
spineDataComponent.animationName = backupAnimName;
spineObjectComponent.skeletonJson = backupSkeletonJson;
spineObjectComponent.skeletonData = backupSkeleton.getData();
spineObjectComponent.skeleton = backupSkeleton;
spineComponent.animationName = backupAnimName;
spineComponent.skeletonJson = backupSkeletonJson;
spineComponent.skeletonData = backupSkeleton.getData();
spineComponent.skeleton = backupSkeleton;
AnimationStateData stateData = new AnimationStateData(spineObjectComponent.skeletonData);
spineObjectComponent.state = new AnimationState(stateData);
AnimationStateData stateData = new AnimationStateData(spineComponent.skeletonData);
spineComponent.state = new AnimationState(stateData);
spineObjectComponent.computeBoundBox(dimensionsComponent);
dimensionsComponent.width *= spineObjectComponent.worldMultiplier;
dimensionsComponent.height *= spineObjectComponent.worldMultiplier;
spineComponent.computeBoundBox(dimensionsComponent);
dimensionsComponent.width *= spineComponent.worldMultiplier;
dimensionsComponent.height *= spineComponent.worldMultiplier;
transformComponent.originX = dimensionsComponent.width / 2f;
transformComponent.originY = dimensionsComponent.height / 2f;
String currentAnimName = spineObjectComponent.skeletonData.getAnimations().get(0).getName();
spineDataComponent.currentAnimationName = currentAnimName;
spineObjectComponent.setAnimation(currentAnimName);
String currentAnimName = spineComponent.skeletonData.getAnimations().get(0).getName();
spineComponent.currentAnimationName = currentAnimName;
spineComponent.setAnimation(currentAnimName);
HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity);
}
@@ -2,12 +2,11 @@ package games.rednblack.editor.controller.commands.component;
import games.rednblack.editor.HyperLap2DFacade;
import games.rednblack.editor.controller.commands.EntityModifyRevertibleCommand;
import games.rednblack.editor.renderer.components.SpineDataComponent;
import games.rednblack.editor.renderer.data.SpineVO;
import games.rednblack.h2d.extension.spine.SpineVO;
import games.rednblack.editor.utils.runtime.EntityUtils;
import games.rednblack.editor.utils.runtime.SandboxComponentRetriever;
import games.rednblack.h2d.common.MsgAPI;
import games.rednblack.h2d.extension.spine.SpineObjectComponent;
import games.rednblack.h2d.extension.spine.SpineComponent;
public class UpdateSpineDataCommand extends EntityModifyRevertibleCommand {
@@ -24,11 +23,10 @@ public class UpdateSpineDataCommand extends EntityModifyRevertibleCommand {
backup = new SpineVO();
backup.loadFromEntity(entity, sandbox.getEngine(), sandbox.sceneControl.sceneLoader.getEntityFactory());
SpineDataComponent spineDataComponent = SandboxComponentRetriever.get(entity, SpineDataComponent.class);
SpineObjectComponent spineObjectComponent = SandboxComponentRetriever.get(entity, SpineObjectComponent.class);
SpineComponent spineComponent = SandboxComponentRetriever.get(entity, SpineComponent.class);
spineDataComponent.currentAnimationName = vo.currentAnimationName;
spineObjectComponent.setAnimation(vo.currentAnimationName);
spineComponent.currentAnimationName = vo.currentAnimationName;
spineComponent.setAnimation(vo.currentAnimationName);
HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity);
}
@@ -36,11 +34,10 @@ public class UpdateSpineDataCommand extends EntityModifyRevertibleCommand {
@Override
public void undoAction() {
int entity = EntityUtils.getByUniqueId(entityId);
SpineDataComponent spineDataComponent = SandboxComponentRetriever.get(entity, SpineDataComponent.class);
SpineObjectComponent spineObjectComponent = SandboxComponentRetriever.get(entity, SpineObjectComponent.class);
SpineComponent spineComponent = SandboxComponentRetriever.get(entity, SpineComponent.class);
spineDataComponent.currentAnimationName = backup.currentAnimationName;
spineObjectComponent.setAnimation(backup.currentAnimationName);
spineComponent.currentAnimationName = backup.currentAnimationName;
spineComponent.setAnimation(backup.currentAnimationName);
HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity);
}
@@ -2,8 +2,7 @@ package games.rednblack.editor.controller.commands.component;
import games.rednblack.editor.HyperLap2DFacade;
import games.rednblack.editor.controller.commands.EntityModifyRevertibleCommand;
import games.rednblack.editor.renderer.components.particle.TalosDataComponent;
import games.rednblack.editor.renderer.data.TalosVO;
import games.rednblack.h2d.extension.talos.TalosVO;
import games.rednblack.editor.utils.runtime.EntityUtils;
import games.rednblack.editor.utils.runtime.SandboxComponentRetriever;
import games.rednblack.h2d.common.MsgAPI;
@@ -24,10 +23,8 @@ public class UpdateTalosDataCommand extends EntityModifyRevertibleCommand {
backup = new TalosVO();
backup.loadFromEntity(entity, sandbox.getEngine(), sandbox.sceneControl.sceneLoader.getEntityFactory());
TalosDataComponent dataComponent = SandboxComponentRetriever.get(entity, TalosDataComponent.class);
dataComponent.transform = vo.transform;
TalosComponent talosComponent = SandboxComponentRetriever.get(entity, TalosComponent.class);
talosComponent.transform = vo.transform;
talosComponent.effect.setPosition(0, 0);
HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity);
@@ -37,11 +34,9 @@ public class UpdateTalosDataCommand extends EntityModifyRevertibleCommand {
public void undoAction() {
int entity = EntityUtils.getByUniqueId(entityId);
TalosDataComponent particleComponent = SandboxComponentRetriever.get(entity, TalosDataComponent.class);
particleComponent.transform = backup.transform;
TalosComponent talosComponent = SandboxComponentRetriever.get(entity, TalosComponent.class);
talosComponent.effect.setPosition(0, 0);
talosComponent.transform = backup.transform;
HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity);
}
@@ -19,6 +19,8 @@ import games.rednblack.editor.utils.ZipUtils;
import games.rednblack.h2d.common.MsgAPI;
import games.rednblack.h2d.common.vo.ExportMapperVO;
import games.rednblack.h2d.common.vo.ExportMapperVO.ExportedAsset;
import games.rednblack.h2d.extension.spine.SpineVO;
import games.rednblack.h2d.extension.talos.TalosVO;
import org.apache.commons.io.FileUtils;
import org.lwjgl.PointerBuffer;
import org.lwjgl.system.MemoryStack;
@@ -1,6 +1,8 @@
package games.rednblack.editor.data.migrations.data020;
import games.rednblack.editor.renderer.data.*;
import games.rednblack.h2d.extension.spine.SpineVO;
import games.rednblack.h2d.extension.talos.TalosVO;
import java.util.ArrayList;
import java.util.HashMap;
@@ -18,6 +18,8 @@ import games.rednblack.editor.view.stage.tools.TextTool;
import games.rednblack.editor.view.ui.box.UILayerBoxMediator;
import games.rednblack.h2d.common.MsgAPI;
import games.rednblack.h2d.common.factory.IFactory;
import games.rednblack.h2d.extension.spine.SpineItemType;
import games.rednblack.h2d.extension.talos.TalosItemType;
import java.util.HashMap;
@@ -142,7 +144,7 @@ public class ItemFactory implements IFactory {
}
data.data = animationName;
createdEntity = entityFactory.createEntity(sandbox.getCurrentViewingEntity(), EntityFactory.SPINE_TYPE, data);
createdEntity = entityFactory.createEntity(sandbox.getCurrentViewingEntity(), SpineItemType.SPINE_TYPE, data);
HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ACTION_CREATE_ITEM, createdEntity);
Pools.free(data);
@@ -244,7 +246,7 @@ public class ItemFactory implements IFactory {
return -1;
}
data.data = particleName;
int entity = entityFactory.createEntity(sandbox.getCurrentViewingEntity(), EntityFactory.TALOS_TYPE, data);
int entity = entityFactory.createEntity(sandbox.getCurrentViewingEntity(), TalosItemType.TALOS_TYPE, data);
HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ACTION_CREATE_ITEM, entity);
@@ -25,7 +25,9 @@ import games.rednblack.editor.renderer.utils.H2DSkinLoader;
import games.rednblack.editor.renderer.utils.HyperJson;
import games.rednblack.editor.renderer.utils.ShadedDistanceFieldFont;
import games.rednblack.editor.view.ui.widget.actors.basic.WhitePixel;
import games.rednblack.h2d.extension.spine.SpineItemType;
import games.rednblack.h2d.extension.talos.ResourceRetrieverAssetProvider;
import games.rednblack.h2d.extension.talos.TalosItemType;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.FilenameUtils;
import org.puremvc.java.patterns.proxy.Proxy;
@@ -150,11 +152,6 @@ public class ResourceManager extends Proxy implements IResourceRetriever {
return new ParticleEffect(particleEffects.get(name));
}
@Override
public FileHandle getTalosVFX(String name) {
return talosVFXsFiles.get(name);
}
/**
* Sets working resolution, please set before doing any loading
* @param resolution String resolution name, default is "orig" later use resolution names created in editor
@@ -166,11 +163,17 @@ public class ResourceManager extends Proxy implements IResourceRetriever {
}
}
@Override
public FileHandle getSkeletonJSON(String animationName) {
SpineAnimData animData = spineAnimAtlases.get(animationName);
return animData.jsonFile;
public FileHandle getExternalItemType(int itemType, String name) {
switch (itemType) {
case SpineItemType.SPINE_TYPE:
SpineAnimData animData = spineAnimAtlases.get(name);
return animData.jsonFile;
case TalosItemType.TALOS_TYPE:
return talosVFXsFiles.get(name);
default:
return null;
}
}
@Override
@@ -2,7 +2,6 @@ package games.rednblack.editor.system;
import com.artemis.annotations.All;
import com.talosvfx.talos.runtime.ParticleEffectInstance;
import games.rednblack.editor.renderer.components.particle.TalosDataComponent;
import games.rednblack.h2d.extension.talos.TalosComponent;
import games.rednblack.h2d.extension.talos.TalosSystem;
@@ -11,7 +10,7 @@ import games.rednblack.h2d.extension.talos.TalosSystem;
* This system will make sure they look continuous while in editor, so user will find and see them easily.
*
*/
@All({TalosComponent.class, TalosDataComponent.class})
@All({TalosComponent.class})
public class TalosContinuousSystem extends TalosSystem {
@Override
@@ -8,7 +8,6 @@ import com.badlogic.gdx.utils.JsonValue;
import com.kotcrab.vis.ui.util.dialog.Dialogs;
import games.rednblack.editor.proxy.ProjectManager;
import games.rednblack.editor.proxy.SceneDataManager;
import games.rednblack.editor.renderer.components.SpineDataComponent;
import games.rednblack.editor.renderer.data.*;
import games.rednblack.editor.renderer.utils.Version;
import games.rednblack.editor.utils.HyperLap2DUtils;
@@ -18,7 +17,9 @@ import games.rednblack.editor.utils.runtime.EntityUtils;
import games.rednblack.editor.utils.runtime.SandboxComponentRetriever;
import games.rednblack.editor.view.stage.Sandbox;
import games.rednblack.h2d.common.ProgressHandler;
import games.rednblack.h2d.extension.spine.SpineComponent;
import games.rednblack.h2d.extension.spine.SpineItemType;
import games.rednblack.h2d.extension.spine.SpineVO;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.FilenameUtils;
@@ -242,7 +243,7 @@ public class SpineAsset extends Asset {
private void deleteEntitiesWithSpineAnimation(int rootEntity, String spineName) {
tmpEntityList.clear();
Consumer<Integer> action = (root) -> {
SpineDataComponent spineDataComponent = SandboxComponentRetriever.get(root, SpineDataComponent.class);
SpineComponent spineDataComponent = SandboxComponentRetriever.get(root, SpineComponent.class);
if (spineDataComponent != null && spineDataComponent.animationName.equals(spineName)) {
tmpEntityList.add(root);
}
@@ -8,11 +8,10 @@ import com.talosvfx.talos.runtime.ParticleEmitterDescriptor;
import games.rednblack.editor.proxy.ProjectManager;
import games.rednblack.editor.proxy.ResolutionManager;
import games.rednblack.editor.proxy.SceneDataManager;
import games.rednblack.editor.renderer.components.particle.TalosDataComponent;
import games.rednblack.editor.renderer.data.CompositeItemVO;
import games.rednblack.editor.renderer.data.SceneVO;
import games.rednblack.editor.renderer.data.SpriteAnimationVO;
import games.rednblack.editor.renderer.data.TalosVO;
import games.rednblack.h2d.extension.talos.TalosComponent;
import games.rednblack.h2d.extension.talos.TalosVO;
import games.rednblack.editor.utils.ImportUtils;
import games.rednblack.editor.utils.asset.Asset;
import games.rednblack.editor.utils.runtime.EntityUtils;
@@ -25,7 +24,6 @@ import org.apache.commons.io.FilenameUtils;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.function.Consumer;
public class TalosVFXAsset extends Asset {
@@ -231,7 +229,7 @@ public class TalosVFXAsset extends Asset {
private void deleteEntitiesWithParticleEffects(int rootEntity, String particleName) {
tmpEntityList.clear();
Consumer<Integer> action = (root) -> {
TalosDataComponent particleComponent = SandboxComponentRetriever.get(root, TalosDataComponent.class);
TalosComponent particleComponent = SandboxComponentRetriever.get(root, TalosComponent.class);
if (particleComponent != null && particleComponent.particleName.equals(particleName)) {
tmpEntityList.add(root);
}
@@ -34,6 +34,8 @@ import games.rednblack.editor.renderer.data.*;
import games.rednblack.editor.renderer.factory.EntityFactory;
import games.rednblack.editor.renderer.utils.HyperJson;
import games.rednblack.editor.view.stage.Sandbox;
import games.rednblack.h2d.extension.spine.SpineItemType;
import games.rednblack.h2d.extension.talos.TalosItemType;
import java.util.*;
import java.util.function.Consumer;
@@ -55,10 +57,10 @@ public class EntityUtils {
itemTypeNameMap.put(IMAGE_TYPE, "Image");
itemTypeNameMap.put(NINE_PATCH, "9-Patch Image");
itemTypeNameMap.put(LIGHT_TYPE, "Light");
itemTypeNameMap.put(SPINE_TYPE, "Spine Animation");
itemTypeNameMap.put(SpineItemType.SPINE_TYPE, "Spine Animation");
itemTypeNameMap.put(SPRITE_TYPE, "Sprite Animation");
itemTypeNameMap.put(COLOR_PRIMITIVE, "Primitive");
itemTypeNameMap.put(TALOS_TYPE, "Talos VFX");
itemTypeNameMap.put(TalosItemType.TALOS_TYPE, "Talos VFX");
itemTypeIconMap.put(UNKNOWN_TYPE, "icon-unknown");
itemTypeIconMap.put(COMPOSITE_TYPE, "icon-root");
@@ -67,10 +69,10 @@ public class EntityUtils {
itemTypeIconMap.put(IMAGE_TYPE, "icon-image");
itemTypeIconMap.put(NINE_PATCH, "icon-image");
itemTypeIconMap.put(LIGHT_TYPE, "icon-particle-white");
itemTypeIconMap.put(SPINE_TYPE, "icon-spine");
itemTypeIconMap.put(SpineItemType.SPINE_TYPE, "icon-spine");
itemTypeIconMap.put(SPRITE_TYPE, "icon-animation");
itemTypeIconMap.put(COLOR_PRIMITIVE, "icon-image");
itemTypeIconMap.put(TALOS_TYPE, "icon-particle-white");
itemTypeIconMap.put(TalosItemType.TALOS_TYPE, "icon-particle-white");
}
public static String getItemName(int entity) {
@@ -40,6 +40,8 @@ import games.rednblack.editor.view.ui.properties.UIAbstractProperties;
import games.rednblack.editor.view.ui.properties.UIAbstractPropertiesMediator;
import games.rednblack.editor.view.ui.properties.panels.*;
import games.rednblack.h2d.common.MsgAPI;
import games.rednblack.h2d.extension.spine.SpineItemType;
import games.rednblack.h2d.extension.talos.TalosItemType;
import games.rednblack.h2d.extension.typinglabel.TypingLabelComponent;
import org.puremvc.java.interfaces.IMediator;
import org.puremvc.java.interfaces.INotification;
@@ -173,7 +175,7 @@ public class UIMultiPropertyBoxMediator extends PanelMediator<UIMultiPropertyBox
if (entityType == EntityFactory.SPRITE_TYPE) {
mediatorNames.add(UISpriteAnimationItemPropertiesMediator.NAME);
}
if (entityType == EntityFactory.SPINE_TYPE) {
if (entityType == SpineItemType.SPINE_TYPE) {
mediatorNames.add(UISpineAnimationItemPropertiesMediator.NAME);
}
if (entityType == EntityFactory.LIGHT_TYPE) {
@@ -182,7 +184,7 @@ public class UIMultiPropertyBoxMediator extends PanelMediator<UIMultiPropertyBox
if (entityType == EntityFactory.PARTICLE_TYPE) {
mediatorNames.add(UIParticlePropertiesMediator.NAME);
}
if (entityType == EntityFactory.TALOS_TYPE) {
if (entityType == TalosItemType.TALOS_TYPE) {
mediatorNames.add(UITalosPropertiesMediator.NAME);
}
@@ -78,7 +78,7 @@ public class UIAnimationsTabMediator extends UIResourcesTabMediator<UIAnimations
animationBoxes.clear();
ResourceManager resourceManager = facade.retrieveProxy(ResourceManager.NAME);
if (new SpineItemType().getTypeId() == EntityFactory.SPINE_TYPE) {
if (new SpineItemType().getTypeId() == SpineItemType.SPINE_TYPE) {
createAnimationResources(resourceManager.getProjectSpineAnimationsList().keySet(), SpineResource.class, ItemFactory.get()::createSpineAnimation, searchText);
}
createAnimationResources(resourceManager.getProjectSpriteAnimationsList().keySet(), SpriteResource.class, ItemFactory.get()::createSpriteAnimation, searchText);
@@ -89,7 +89,7 @@ public class UIAnimationsTabMediator extends UIResourcesTabMediator<UIAnimations
private void createAnimationResources(Set<String> strings, Class<? extends BoxItemResource> resourceClass, BiFunction<String, Vector2, Boolean> factoryFunction, String searchText) {
for (String animationName : strings) {
if (!animationName.toLowerCase().contains(searchText)
|| filterResource(animationName, resourceClass == SpineResource.class ? EntityFactory.SPINE_TYPE : EntityFactory.SPRITE_TYPE))
|| filterResource(animationName, resourceClass == SpineResource.class ? SpineItemType.SPINE_TYPE : EntityFactory.SPRITE_TYPE))
continue;
try {
@@ -79,7 +79,7 @@ public class UIParticleEffectsTabMediator extends UIResourcesTabMediator<UIParti
particlesList.clear();
ResourceManager resourceManager = facade.retrieveProxy(ResourceManager.NAME);
if (new TalosItemType().getTypeId() == EntityFactory.TALOS_TYPE) {
if (new TalosItemType().getTypeId() == TalosItemType.TALOS_TYPE) {
createParticleResources(resourceManager.getProjectTalosList().keySet(), TalosResource.class, ItemFactory.get()::tryCreateTalosItem, searchText);
}
@@ -92,7 +92,7 @@ public class UIParticleEffectsTabMediator extends UIResourcesTabMediator<UIParti
private void createParticleResources(Set<String> strings, Class resourceClass, BiFunction<String, Vector2, Boolean> factoryFunction, String searchText) {
for (String particleName : strings) {
if (!particleName.toLowerCase().contains(searchText)
|| filterResource(particleName, resourceClass == TalosResource.class ? EntityFactory.TALOS_TYPE : EntityFactory.PARTICLE_TYPE)) continue;
|| filterResource(particleName, resourceClass == TalosResource.class ? TalosItemType.TALOS_TYPE : EntityFactory.PARTICLE_TYPE)) continue;
try {
Constructor constructor = resourceClass.getConstructor(String.class);
DraggableResource draggableResource = new DraggableResource((DraggableResourceView) constructor.newInstance(particleName));
@@ -22,7 +22,7 @@ import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.scenes.scene2d.InputEvent;
import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
import games.rednblack.editor.renderer.data.SpineVO;
import games.rednblack.h2d.extension.spine.SpineVO;
import games.rednblack.editor.view.ui.box.UIResourcesBoxMediator;
import games.rednblack.editor.view.ui.widget.actors.SpineActor;
import games.rednblack.h2d.common.ResourcePayloadObject;
@@ -20,6 +20,8 @@ package games.rednblack.editor.view.ui.followers;
import games.rednblack.editor.renderer.factory.EntityFactory;
import games.rednblack.editor.utils.runtime.EntityUtils;
import games.rednblack.h2d.extension.spine.SpineItemType;
import games.rednblack.h2d.extension.talos.TalosItemType;
/**
* Created by azakhary on 5/21/2015.
@@ -32,10 +34,10 @@ public class FollowerFactory {
return new ImageFollower(entity);
case EntityFactory.LIGHT_TYPE:
return new LightFollower(entity);
case EntityFactory.TALOS_TYPE:
case TalosItemType.TALOS_TYPE:
case EntityFactory.PARTICLE_TYPE:
return new ParticleFollower(entity);
case EntityFactory.SPINE_TYPE:
case SpineItemType.SPINE_TYPE:
return new SpineFollower(entity);
}
@@ -7,17 +7,17 @@ import com.badlogic.gdx.math.Matrix4;
import com.esotericsoftware.spine.SkeletonRendererDebug;
import games.rednblack.editor.utils.runtime.SandboxComponentRetriever;
import games.rednblack.editor.view.stage.Sandbox;
import games.rednblack.h2d.extension.spine.SpineObjectComponent;
import games.rednblack.h2d.extension.spine.SpineComponent;
public class SpineFollower extends NormalSelectionFollower {
private final SpineObjectComponent spineObjectComponent;
private final SpineComponent spineObjectComponent;
private final SkeletonRendererDebug skeletonRendererDebug;
private final Matrix4 matrix = new Matrix4();
public SpineFollower(int entity) {
super(entity);
spineObjectComponent = SandboxComponentRetriever.get(entity, SpineObjectComponent.class);
spineObjectComponent = SandboxComponentRetriever.get(entity, SpineComponent.class);
skeletonRendererDebug = new SkeletonRendererDebug();
skeletonRendererDebug.setScale(2f);
skeletonRendererDebug.setBoundingBoxes(false);
@@ -21,19 +21,17 @@ package games.rednblack.editor.view.ui.properties.panels;
import com.badlogic.gdx.utils.Array;
import com.esotericsoftware.spine.Animation;
import games.rednblack.editor.controller.commands.component.UpdateSpineDataCommand;
import games.rednblack.editor.renderer.components.SpineDataComponent;
import games.rednblack.editor.renderer.data.SpineVO;
import games.rednblack.h2d.extension.spine.SpineVO;
import games.rednblack.editor.utils.runtime.SandboxComponentRetriever;
import games.rednblack.editor.view.ui.properties.UIItemPropertiesMediator;
import games.rednblack.h2d.common.MsgAPI;
import games.rednblack.h2d.extension.spine.SpineObjectComponent;
import games.rednblack.h2d.extension.spine.SpineComponent;
public class UISpineAnimationItemPropertiesMediator extends UIItemPropertiesMediator<UISpineAnimationItemProperties> {
private static final String TAG = UISpineAnimationItemPropertiesMediator.class.getCanonicalName();
public static final String NAME = TAG;
private SpineDataComponent spineDataComponent;
private SpineObjectComponent spineObjectComponent;
private SpineComponent spineComponent;
public UISpineAnimationItemPropertiesMediator() {
super(NAME, new UISpineAnimationItemProperties());
@@ -41,16 +39,15 @@ public class UISpineAnimationItemPropertiesMediator extends UIItemPropertiesMedi
@Override
protected void translateObservableDataToView(int entity) {
spineObjectComponent = SandboxComponentRetriever.get(entity, SpineObjectComponent.class);
spineDataComponent = SandboxComponentRetriever.get(entity, SpineDataComponent.class);
spineComponent = SandboxComponentRetriever.get(entity, SpineComponent.class);
Array<String> animations = new Array<>();
for (Animation animation : spineObjectComponent.getAnimations()) {
for (Animation animation : spineComponent.getAnimations()) {
animations.add(animation.getName());
}
viewComponent.setAnimations(animations);
viewComponent.setSelectedAnimation(spineDataComponent.currentAnimationName);
viewComponent.setSelectedAnimation(spineComponent.currentAnimationName);
}
@Override
@@ -1,8 +1,8 @@
package games.rednblack.editor.view.ui.properties.panels;
import games.rednblack.editor.controller.commands.component.UpdateTalosDataCommand;
import games.rednblack.editor.renderer.components.particle.TalosDataComponent;
import games.rednblack.editor.renderer.data.TalosVO;
import games.rednblack.h2d.extension.talos.TalosComponent;
import games.rednblack.h2d.extension.talos.TalosVO;
import games.rednblack.editor.utils.runtime.SandboxComponentRetriever;
import games.rednblack.editor.view.ui.properties.UIItemPropertiesMediator;
import games.rednblack.h2d.common.MsgAPI;
@@ -18,7 +18,7 @@ public class UITalosPropertiesMediator extends UIItemPropertiesMediator<UITalosP
@Override
protected void translateObservableDataToView(int item) {
viewComponent.setMatrixTransformEnabled(SandboxComponentRetriever.get(item, TalosDataComponent.class).transform);
viewComponent.setMatrixTransformEnabled(SandboxComponentRetriever.get(item, TalosComponent.class).transform);
}
@Override
@@ -13,6 +13,7 @@ import com.esotericsoftware.spine.attachments.MeshAttachment;
import com.esotericsoftware.spine.attachments.RegionAttachment;
import games.rednblack.editor.renderer.resources.IResourceRetriever;
import games.rednblack.h2d.extension.spine.ResourceRetrieverAttachmentLoader;
import games.rednblack.h2d.extension.spine.SpineItemType;
public class SpineActor extends Actor {
@@ -75,7 +76,7 @@ public class SpineActor extends Actor {
private void initSkeletonData() {
skeletonJson = new SkeletonJson(new ResourceRetrieverAttachmentLoader(animationName, irr));
skeletonData = skeletonJson.readSkeletonData((irr.getSkeletonJSON(animationName)));
skeletonData = skeletonJson.readSkeletonData((irr.getExternalItemType(SpineItemType.SPINE_TYPE, animationName)));
}
private void initSpine() {