Search in sources :

Example 1 with EmitterModule

use of com.talosvfx.talos.runtime.modules.EmitterModule 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

GdxRuntimeException (com.badlogic.gdx.utils.GdxRuntimeException)1 IntMap (com.badlogic.gdx.utils.IntMap)1 Json (com.badlogic.gdx.utils.Json)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 ConnectionData (com.talosvfx.talos.runtime.serialization.ConnectionData)1 ExportData (com.talosvfx.talos.runtime.serialization.ExportData)1