public void addActor(BaseActor actor) { actors.put(actor.getId(), actor); actor.setScene(this); SceneLayer layer = getLayer(actor.getLayer()); if (layer == null) { // fallback for compatibility layer = new SceneLayer(); layer.setId(actor.getLayer()); layers.add(layer); } layer.add(actor); }
@SuppressWarnings("unchecked") @Override public void read(Json json, JsonValue jsonData) { layers = json.readValue("layers", ArrayList.class, SceneLayer.class, jsonData); id = json.readValue("id", String.class, jsonData); state = json.readValue("state", String.class, jsonData); verbManager = json.readValue("verbs", VerbManager.class, jsonData); actors = json.readValue("actors", HashMap.class, BaseActor.class, jsonData); player = json.readValue("player", String.class, jsonData); for (BaseActor actor : actors.values()) { actor.setScene(this); SceneLayer layer = getLayer(actor.getLayer()); layer.add(actor); } orderLayersByZIndex(); backgroundAtlas = json.readValue("backgroundAtlas", String.class, jsonData); backgroundRegionId = json.readValue("backgroundRegionId", String.class, jsonData); lightMapAtlas = json.readValue("lightMapAtlas", String.class, jsonData); lightMapRegionId = json.readValue("lightMapRegionId", String.class, jsonData); musicFilename = json.readValue("musicFilename", String.class, jsonData); loopMusic = json.readValue("loopMusic", Boolean.class, jsonData); initialMusicDelay = json.readValue("initialMusicDelay", Float.class, jsonData); repeatMusicDelay = json.readValue("repeatMusicDelay", Float.class, jsonData); isPlayingSer = json.readValue("isPlaying", Boolean.class, jsonData); musicPosSer = json.readValue("musicPos", Float.class, jsonData); camera = json.readValue("camera", SceneCamera.class, jsonData); String followActorId = json.readValue("followActor", String.class, jsonData); setCameraFollowActor((SpriteActor) actors.get(followActorId)); depthVector = json.readValue("depthVector", Vector2.class, jsonData); polygonalNavGraph = json.readValue("polygonalNavGraph", PolygonalNavGraph.class, jsonData); }
public void removeActor(BaseActor a) { if (player != null && a.getId().equals(player)) { player = null; } BaseActor r = actors.remove(a.getId()); if (r == null) { EngineLogger.error("Removing actor from scene: Actor not found"); return; } SceneLayer layer = getLayer(a.getLayer()); layer.getActors().remove(a); if (a instanceof ObstacleActor && polygonalNavGraph != null) polygonalNavGraph.removeDinamicObstacle(a.getBBox()); a.setScene(null); }