Search in sources :

Example 1 with ExportData

use of com.talosvfx.talos.runtime.serialization.ExportData in project talos by rockbite.

the class TalosProject method setToExportData.

private void setToExportData(ExportData data, ModuleBoardWidget moduleBoardWidget) {
    final ObjectMap<ParticleEmitterWrapper, Array<ModuleWrapper>> moduleWrappers = moduleBoardWidget.moduleWrappers;
    final ObjectMap<ParticleEmitterWrapper, Array<ModuleBoardWidget.NodeConnection>> nodeConnections = moduleBoardWidget.nodeConnections;
    for (ParticleEmitterWrapper key : moduleWrappers.keys()) {
        final ExportData.EmitterExportData emitterData = new ExportData.EmitterExportData();
        emitterData.name = key.getName();
        for (ModuleWrapper wrapper : moduleWrappers.get(key)) {
            emitterData.modules.add(wrapper.getModule());
            if (wrapper.getModule() instanceof TextureModule) {
                TextureModule textureModule = (TextureModule) wrapper.getModule();
                String name = textureModule.regionName;
                if (name == null)
                    name = "fire";
                if (!data.metadata.resources.contains(name, false)) {
                    data.metadata.resources.add(name);
                }
            }
            if (wrapper.getModule() instanceof PolylineModule) {
                PolylineModule module = (PolylineModule) wrapper.getModule();
                String name = module.regionName;
                if (name == null)
                    name = "fire";
                if (!data.metadata.resources.contains(name, false)) {
                    data.metadata.resources.add(name);
                }
            }
            if (wrapper.getModule() instanceof VectorFieldModule) {
                VectorFieldModule vectorFieldModule = (VectorFieldModule) wrapper.getModule();
                String fgaFileName = vectorFieldModule.fgaFileName;
                if (fgaFileName == null) {
                    return;
                }
                fgaFileName = fgaFileName + ".fga";
                if (!data.metadata.resources.contains(fgaFileName, false)) {
                    data.metadata.resources.add(fgaFileName);
                }
            }
        }
        final Array<ModuleBoardWidget.NodeConnection> nodeConns = nodeConnections.get(key);
        if (nodeConns != null) {
            for (ModuleBoardWidget.NodeConnection nodeConn : nodeConns) {
                emitterData.connections.add(new ConnectionData(nodeConn.fromModule.getModule().getIndex(), nodeConn.toModule.getModule().getIndex(), nodeConn.fromSlot, nodeConn.toSlot));
            }
        }
        data.emitters.add(emitterData);
    }
}
Also used : TextureModule(com.talosvfx.talos.runtime.modules.TextureModule) VectorFieldModule(com.talosvfx.talos.runtime.modules.VectorFieldModule) Array(com.badlogic.gdx.utils.Array) PolylineModule(com.talosvfx.talos.runtime.modules.PolylineModule) ModuleBoardWidget(com.talosvfx.talos.editor.widgets.ui.ModuleBoardWidget) ModuleWrapper(com.talosvfx.talos.editor.wrappers.ModuleWrapper) ExportData(com.talosvfx.talos.runtime.serialization.ExportData) ConnectionData(com.talosvfx.talos.runtime.serialization.ConnectionData) ParticleEmitterWrapper(com.talosvfx.talos.editor.ParticleEmitterWrapper)

Example 2 with ExportData

use of com.talosvfx.talos.runtime.serialization.ExportData in project talos by rockbite.

the class TalosProject method exportProject.

public void exportProject(FileHandle handle) {
    ExportData exportData = new ExportData();
    setToExportData(exportData, TalosMain.Instance().NodeStage().moduleBoardWidget);
    handle.writeString(projectSerializer.writeExport(exportData), false);
}
Also used : ExportData(com.talosvfx.talos.runtime.serialization.ExportData)

Example 3 with ExportData

use of com.talosvfx.talos.runtime.serialization.ExportData in project talos by rockbite.

the class TalosProject method exportProject.

@Override
public String exportProject() {
    ExportData exportData = new ExportData();
    setToExportData(exportData, TalosMain.Instance().NodeStage().moduleBoardWidget);
    return projectSerializer.writeExport(exportData);
}
Also used : ExportData(com.talosvfx.talos.runtime.serialization.ExportData)

Example 4 with ExportData

use of com.talosvfx.talos.runtime.serialization.ExportData in project talos by rockbite.

the class ParticleEffectDescriptor method load.

public void load(FileHandle fileHandle) {
    Json json = new Json();
    ParticleEmitterDescriptor.registerModules();
    for (Class clazz : ParticleEmitterDescriptor.registeredModules) {
        json.addClassTag(clazz.getSimpleName(), clazz);
    }
    final ExportData exportData = json.fromJson(ExportData.class, fileHandle.readString());
    for (ExportData.EmitterExportData emitter : exportData.emitters) {
        ParticleEmitterDescriptor emitterDescriptor = new ParticleEmitterDescriptor(this);
        IntMap<AbstractModule> idMap = new IntMap<>();
        for (AbstractModule module : emitter.modules) {
            module.setModuleGraph(emitterDescriptor);
            if (module instanceof ParticleModule) {
                emitterDescriptor.particleModule = (ParticleModule) module;
            }
            if (module instanceof EmitterModule) {
                emitterDescriptor.emitterModule = (EmitterModule) module;
            }
            idMap.put(module.getIndex(), module);
            // I cannot understand how this was working before. This is needed so that it can later reset requesters.
            emitterDescriptor.modules.add(module);
        }
        for (ConnectionData connection : emitter.connections) {
            final int moduleFromId = connection.moduleFrom;
            final int moduleToId = connection.moduleTo;
            final int slotFrom = connection.slotFrom;
            final int slotTo = connection.slotTo;
            AbstractModule moduleFrom = idMap.get(moduleFromId);
            AbstractModule moduleTo = idMap.get(moduleToId);
            if (moduleFrom == null) {
                throw new GdxRuntimeException("No module from found for id: " + moduleFromId);
            }
            if (moduleTo == null) {
                throw new GdxRuntimeException("No module to found for id: " + moduleToId);
            }
            emitterDescriptor.connectNode(moduleFrom, moduleTo, slotFrom, slotTo);
        }
        emitterModuleGraphs.add(emitterDescriptor);
    }
}
Also used : EmitterModule(com.talosvfx.talos.runtime.modules.EmitterModule) Json(com.badlogic.gdx.utils.Json) AbstractModule(com.talosvfx.talos.runtime.modules.AbstractModule) GdxRuntimeException(com.badlogic.gdx.utils.GdxRuntimeException) IntMap(com.badlogic.gdx.utils.IntMap) ExportData(com.talosvfx.talos.runtime.serialization.ExportData) ConnectionData(com.talosvfx.talos.runtime.serialization.ConnectionData) ParticleModule(com.talosvfx.talos.runtime.modules.ParticleModule)

Aggregations

ExportData (com.talosvfx.talos.runtime.serialization.ExportData)4 ConnectionData (com.talosvfx.talos.runtime.serialization.ConnectionData)2 Array (com.badlogic.gdx.utils.Array)1 GdxRuntimeException (com.badlogic.gdx.utils.GdxRuntimeException)1 IntMap (com.badlogic.gdx.utils.IntMap)1 Json (com.badlogic.gdx.utils.Json)1 ParticleEmitterWrapper (com.talosvfx.talos.editor.ParticleEmitterWrapper)1 ModuleBoardWidget (com.talosvfx.talos.editor.widgets.ui.ModuleBoardWidget)1 ModuleWrapper (com.talosvfx.talos.editor.wrappers.ModuleWrapper)1 AbstractModule (com.talosvfx.talos.runtime.modules.AbstractModule)1 EmitterModule (com.talosvfx.talos.runtime.modules.EmitterModule)1 ParticleModule (com.talosvfx.talos.runtime.modules.ParticleModule)1 PolylineModule (com.talosvfx.talos.runtime.modules.PolylineModule)1 TextureModule (com.talosvfx.talos.runtime.modules.TextureModule)1 VectorFieldModule (com.talosvfx.talos.runtime.modules.VectorFieldModule)1