<aside> 💡 This part is still experimental and not completely developed. Also, not working yet as it should.

</aside>

If you want to implement your own value type for the computation of Senders and Receivers, you should implement:

See the example below:

// struct or class for custom values for AssemblyObject calculation
// this can contain anything you need to compute
public struct MyValues
{
    public int index;
    public double aNumber;
    public double anotherNumber;
		public double[] manyNumbers;
    public Vector3d aVector;
}

// extended AssemblyObject class
public class MyAssemblyObject:AssemblyObject
{
  // do not change variable name here, just customize the data type 
  public MyValues receiverValue;

  public MyAssemblyObject(AssemblyObject AO)
  {
    Utilities.Clone(AO);
  }
}

// extended Assemblage class
public class MyAssemblage:Assemblage
{
  // custom delegate fields
  // do not change variable names here, just customize the data type
  public ComputeCandidatesValuesMethod<MyValues> computeSendersValues;
  public ComputeReceiverMethod<MyValues> computeReceiverValue;
  public SelectWinnerMethod<MyValues> selectSender, selectReceiver;

  public MyAssemblage(List<AssemblyObject> AOset, List<AssemblyObject> AOprevious, Plane P, int sO, HeuristicsSettings HeuSet, ExogenousSettings ExoSet):base(AOset, AOprevious, P, sO, HeuSet, ExoSet)
  {}
}

// outside the classes above but still inside <Custom additional code>
// you can then write your custom methods