Search in sources :

Example 1 with ParticleEmitterWrapper

use of com.talosvfx.talos.editor.ParticleEmitterWrapper 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 ParticleEmitterWrapper

use of com.talosvfx.talos.editor.ParticleEmitterWrapper in project talos by rockbite.

the class TalosProject method estimateTotalEffectDuration.

public float estimateTotalEffectDuration() {
    Array<ParticleEmitterWrapper> activeWrappers = getActiveWrappers();
    if (particleEffectDescriptor.isContinuous()) {
        float maxWindow = 0;
        for (ParticleEmitterWrapper wrapper : activeWrappers) {
            if (wrapper.getEmitter().getEmitterModule() != null) {
                float duration = wrapper.getEmitter().getEmitterModule().getDuration();
                float totalWaitTime = duration;
                if (maxWindow < totalWaitTime) {
                    maxWindow = totalWaitTime;
                }
            }
        }
        return maxWindow;
    } else {
        float furthestPoint = 0;
        for (ParticleEmitterWrapper wrapper : activeWrappers) {
            if (wrapper.getEmitter().getEmitterModule() != null && wrapper.getEmitter().getParticleModule() != null) {
                float delay = wrapper.getEmitter().getEmitterModule().getDelay();
                float duration = wrapper.getEmitter().getEmitterModule().getDuration();
                float life = wrapper.getEmitter().getParticleModule().getLife();
                float point = delay + duration + life;
                if (furthestPoint < point) {
                    furthestPoint = point;
                }
            }
        }
        return furthestPoint;
    }
}
Also used : ParticleEmitterWrapper(com.talosvfx.talos.editor.ParticleEmitterWrapper)

Example 3 with ParticleEmitterWrapper

use of com.talosvfx.talos.editor.ParticleEmitterWrapper in project talos by rockbite.

the class TalosProject method loadProject.

public void loadProject(FileHandle projectFileHandle, String data, boolean fromMemory) {
    TalosMain.Instance().UIStage().PreviewWidget().getGLProfiler().reset();
    cleanData();
    projectSerializer.prereadhack(data);
    projectData = projectSerializer.read(data);
    readMetaData = projectData.metaData;
    ParticleEmitterWrapper firstEmitter = null;
    for (EmitterData emitterData : projectData.getEmitters()) {
        IntMap<ModuleWrapper> map = new IntMap<>();
        ParticleEmitterWrapper emitterWrapper = loadEmitter(emitterData.name, emitterData.sortPosition);
        TalosMain.Instance().NodeStage().moduleBoardWidget.loadEmitterToBoard(emitterWrapper, emitterData);
        final ParticleEmitterDescriptor graph = emitterWrapper.getGraph();
        for (ModuleWrapper module : emitterData.modules) {
            map.put(module.getId(), module);
            graph.addModule(module.getModule());
            module.getModule().setModuleGraph(graph);
        }
        // important
        particleEffectDescriptor.setEffectReference(particleEffect);
        particleEffectDescriptor.addEmitter(graph);
        particleEffect.init();
        // configure emitter visibility
        emitterWrapper.isMuted = emitterData.isMuted;
        particleEffect.getEmitter(emitterWrapper.getGraph()).setVisible(!emitterData.isMuted);
        // time to load groups here
        for (GroupData group : emitterData.groups) {
            ObjectSet<ModuleWrapper> childWrappers = new ObjectSet<>();
            for (Integer id : group.modules) {
                if (map.get(id) != null) {
                    childWrappers.add(map.get(id));
                }
            }
            ModuleWrapperGroup moduleWrapperGroup = TalosMain.Instance().NodeStage().moduleBoardWidget.createGroupForWrappers(childWrappers);
            Color clr = new Color();
            Color.abgr8888ToColor(clr, group.color);
            moduleWrapperGroup.setData(group.text, clr);
        }
    }
    sortEmitters();
    if (activeWrappers.size > 0) {
        firstEmitter = activeWrappers.first();
    }
    if (firstEmitter != null) {
        TalosMain.Instance().TalosProject().setCurrentEmitterWrapper(firstEmitter);
        TalosMain.Instance().NodeStage().moduleBoardWidget.setCurrentEmitter(firstEmitter);
    }
    TalosMain.Instance().UIStage().setEmitters(activeWrappers);
    TalosMain.Instance().NodeStage().getStage().setKeyboardFocus(null);
}
Also used : ParticleEmitterDescriptor(com.talosvfx.talos.runtime.ParticleEmitterDescriptor) Color(com.badlogic.gdx.graphics.Color) IntMap(com.badlogic.gdx.utils.IntMap) ModuleWrapper(com.talosvfx.talos.editor.wrappers.ModuleWrapper) ObjectSet(com.badlogic.gdx.utils.ObjectSet) ParticleEmitterWrapper(com.talosvfx.talos.editor.ParticleEmitterWrapper) ModuleWrapperGroup(com.talosvfx.talos.editor.data.ModuleWrapperGroup)

Example 4 with ParticleEmitterWrapper

use of com.talosvfx.talos.editor.ParticleEmitterWrapper in project talos by rockbite.

the class TalosProject method loadEmitter.

public ParticleEmitterWrapper loadEmitter(String emitterName, int sortPosition) {
    ParticleEmitterWrapper emitterWrapper = initEmitter(emitterName);
    activeWrappers.add(emitterWrapper);
    currentEmitterWrapper = emitterWrapper;
    emitterWrapper.getEmitter().setSortPosition(sortPosition);
    emitterWrapper.setPosition(sortPosition);
    TalosMain.Instance().NodeStage().moduleBoardWidget.setCurrentEmitter(currentEmitterWrapper);
    return emitterWrapper;
}
Also used : ParticleEmitterWrapper(com.talosvfx.talos.editor.ParticleEmitterWrapper)

Example 5 with ParticleEmitterWrapper

use of com.talosvfx.talos.editor.ParticleEmitterWrapper in project talos by rockbite.

the class EmitterList method moveItemSorting.

private void moveItemSorting(float moveBy) {
    ParticleEmitterWrapper selectedItem = getSelectedItem();
    if (selectedItem != null) {
        float sortPosition = selectedItem.getEmitter().getSortPosition() + moveBy;
        selectedItem.setPosition(sortPosition);
        TalosMain.Instance().TalosProject().sortEmitters();
        Array<ParticleEmitterWrapper> activeWrappers = TalosMain.Instance().TalosProject().getActiveWrappers();
        // activeWrappers.reverse();
        setData(activeWrappers);
        setSelected(selectedItem);
    }
}
Also used : ParticleEmitterWrapper(com.talosvfx.talos.editor.ParticleEmitterWrapper)

Aggregations

ParticleEmitterWrapper (com.talosvfx.talos.editor.ParticleEmitterWrapper)11 ModuleWrapper (com.talosvfx.talos.editor.wrappers.ModuleWrapper)3 Array (com.badlogic.gdx.utils.Array)2 ModuleWrapperGroup (com.talosvfx.talos.editor.data.ModuleWrapperGroup)2 ModuleBoardWidget (com.talosvfx.talos.editor.widgets.ui.ModuleBoardWidget)2 ParticleEmitterDescriptor (com.talosvfx.talos.runtime.ParticleEmitterDescriptor)2 ConnectionData (com.talosvfx.talos.runtime.serialization.ConnectionData)2 Color (com.badlogic.gdx.graphics.Color)1 IntMap (com.badlogic.gdx.utils.IntMap)1 ObjectSet (com.badlogic.gdx.utils.ObjectSet)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 ExportData (com.talosvfx.talos.runtime.serialization.ExportData)1