
com.gempukku.libgdx.graph.pipeline.producer.math.geometric.LengthPipelineNodeProducer Maven / Gradle / Ivy
package com.gempukku.libgdx.graph.pipeline.producer.math.geometric;
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.geometric.LengthPipelineNodeConfiguration;
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 LengthPipelineNodeProducer extends PipelineNodeProducerImpl {
public LengthPipelineNodeProducer() {
super(new LengthPipelineNodeConfiguration());
}
@Override
protected PipelineNode createNodeForSingleInputs(final JsonValue data, final ObjectMap> inputFields) {
final PipelineNode.FieldOutput> aFunction = inputFields.get("input");
return new OncePerFrameJobPipelineNode(configuration, inputFields) {
@Override
protected void executeJob(PipelineRenderingContext pipelineRenderingContext, PipelineRequirements pipelineRequirements, ObjectMap outputValues) {
Object a = aFunction.getValue(pipelineRenderingContext, null);
Object result;
if (a instanceof Float) {
result = a;
} else if (a instanceof Vector2) {
result = ((Vector2) a).len();
} else if (a instanceof Vector3) {
result = ((Vector3) a).len();
} else if (a instanceof Color) {
Color aColor = (Color) a;
result = (float) Math.sqrt(
aColor.r * aColor.r +
aColor.g * aColor.g +
aColor.b * aColor.b +
aColor.a * aColor.a);
} else {
throw new IllegalArgumentException("Not matching type for function");
}
OutputValue output = outputValues.get("output");
if (output != null)
output.setValue(result);
}
};
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy