Faze
v2.0.0-pre
v2.0.0-pre
  • Introduction
  • Getting Started
  • Abstractions
    • IPipeline
    • IGameState
    • IPlayer
    • Rendering
      • ITreePainter
      • IPaintedTreeRenderer
      • IColorInterpolator
  • Engine
    • Agents
  • Rendering
    • Tree Renderers
      • SquareTreeRenderer
      • SliceAndDiceTreeRenderer
    • Color Interpolators
  • Concept
    • Tree Rendering
    • Real-time Rendering
  • Blog
    • Visualising games as fractals
    • Visualising player choice
  • Examples
    • 8 Queens Problem
    • Chess Pieces
    • Gallery
  • Research
    • Renderers
      • Square Tree Renderer
      • Circle Edge Renderer
      • Compressed Square Tree Renderer
  • GitHub Repository
Powered by GitBook
On this page
  • IReversePipelineBuilder
  • Example Usage

Was this helpful?

  1. Abstractions

IPipeline

PreviousAbstractionsNextIGameState

Last updated 3 years ago

Was this helpful?

A pipeline represents a pre-built set of functions that are chained together. Its usage is very simple, either the pipeline has everything it needs to run i.e IPipeline or requires some initial input IPipeline<TInput>.

public interface IPipeline
{
    void Run(IProgressTracker progress = null);
}

public interface IPipeline<TInput>
{
    void Run(TInput input, IProgressTracker progress = null);
}

An IPipeline is created from using a PipelineBuilder

IReversePipelineBuilder

An IReversePipelineBuilder is used to build up a pipeline starting from the desired output, working backwards specifying the required input. It is useful for when you know what you want, but are still working out how to get there. There are useful extension methods that can help with working out how to get to the desired output:

public interface IReversePipelineBuilder
{
    IReversePipelineBuilder<TNext> Require<TNext>(Action<TNext> fn);
}

public interface IReversePipelineBuilder<T>
{
    IReversePipelineBuilder<TNext> Require<TNext>(Func<TNext, T> fn);
    IReversePipelineBuilder<TNext> Require<TNext>(Func<TNext, IProgressTracker, T> fn);
    IPipeline<T> Build();
    IPipeline Build(Func<T> fn);
}

Example Usage

IPipeline pipeline = ReversePipelineBuilder.Create()
    .GallerySave(galleryService, galleryMetaData)
    .Render(new SquareTreeRenderer(rendererConfig))
    .Paint(new GoldInterpolator())
    .MapValue(fn)
    .LoadTree(OXDataGenerator5.Id, treeDataProvider);

ReversePipelineBuilder.Create() initialises an empty IReversePipelineBuilder object.

.GallerySave(...) create the first requirement and returns an IReversePipelineBuilder<IPaintedTreeRenderer>

See for the example below.

Faze.Gallery.Extensions.PipelineExtensions
Faze.Core.Pipelines.PipelineExtensions
OXGoldImagePipeline.cs