All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.gempukku.libgdx.graph.pipeline.producer.math.value.MergePipelineNodeProducer Maven / Gradle / Ivy

package com.gempukku.libgdx.graph.pipeline.producer.math.value;

import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.math.Vector3;
import com.badlogic.gdx.utils.JsonValue;
import com.badlogic.gdx.utils.ObjectMap;
import com.gempukku.libgdx.graph.pipeline.config.math.value.MergePipelineNodeConfiguration;
import com.gempukku.libgdx.graph.pipeline.producer.FloatFieldOutput;
import com.gempukku.libgdx.graph.pipeline.producer.PipelineRenderingContext;
import com.gempukku.libgdx.graph.pipeline.producer.node.OncePerFrameJobPipelineNode;
import com.gempukku.libgdx.graph.pipeline.producer.node.PipelineNode;
import com.gempukku.libgdx.graph.pipeline.producer.node.PipelineNodeProducerImpl;
import com.gempukku.libgdx.graph.pipeline.producer.node.PipelineRequirements;

public class MergePipelineNodeProducer extends PipelineNodeProducerImpl {
    public MergePipelineNodeProducer() {
        super(new MergePipelineNodeConfiguration());
    }

    @Override
    public PipelineNode createNodeForSingleInputs(JsonValue data, ObjectMap> inputFields) {
        PipelineNode.FieldOutput x = (PipelineNode.FieldOutput) inputFields.get("x");
        PipelineNode.FieldOutput y = (PipelineNode.FieldOutput) inputFields.get("y");
        PipelineNode.FieldOutput z = (PipelineNode.FieldOutput) inputFields.get("z");
        PipelineNode.FieldOutput w = (PipelineNode.FieldOutput) inputFields.get("w");
        if (x == null)
            x = new FloatFieldOutput(0f);
        if (y == null)
            y = new FloatFieldOutput(0f);
        if (z == null)
            z = new FloatFieldOutput(0f);
        if (w == null)
            w = new FloatFieldOutput(0f);
        final PipelineNode.FieldOutput finalX = x;
        final PipelineNode.FieldOutput finalY = y;
        final PipelineNode.FieldOutput finalZ = z;
        final PipelineNode.FieldOutput finalW = w;

        return new OncePerFrameJobPipelineNode(configuration, inputFields) {
            @Override
            protected void executeJob(PipelineRenderingContext pipelineRenderingContext, PipelineRequirements pipelineRequirements, ObjectMap outputValues) {
                float xValue = finalX.getValue(pipelineRenderingContext, null);
                float yValue = finalY.getValue(pipelineRenderingContext, null);
                float zValue = finalZ.getValue(pipelineRenderingContext, null);
                float wValue = finalW.getValue(pipelineRenderingContext, null);

                OutputValue v2 = outputValues.get("v2");
                if (v2 != null)
                    v2.setValue(new Vector2(xValue, yValue));
                OutputValue v3 = outputValues.get("v3");
                if (v3 != null)
                    v3.setValue(new Vector3(xValue, yValue, zValue));
                OutputValue color = outputValues.get("color");
                if (color != null)
                    color.setValue(new Color(xValue, yValue, zValue, wValue));
            }
        };
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy