public override int GetHashCode() => FromMin.GetHashCode() & FromMax.GetHashCode() & ToMin.GetHashCode() & ToMax.GetHashCode() ;
/// <summary> Updates the applications on all sub evaluatables.</summary> public void SetApplication(Application application) { Value?.SetApplication(application); FromMin?.SetApplication(application); ToMin?.SetApplication(application); FromMax?.SetApplication(application); ToMax?.SetApplication(application); }
/// <summary>Evaluate the from range and to range and return the value in the new range.</summary> protected override double Execute(IGameState gameState) { // Evaluate all components double value = Value.Evaluate(gameState); double fromMin = FromMin.Evaluate(gameState), fromMax = FromMax.Evaluate(gameState); double toMin = ToMin.Evaluate(gameState), toMax = ToMax.Evaluate(gameState); // Perform actual equation return(MathUtils.Clamp((value - fromMin) * ((toMax - toMin) / (fromMax - fromMin)) + toMin, Math.Min(toMin, toMax), Math.Max(toMin, toMax))); // Here is an example of it running: https://www.desmos.com/calculator/nzbiiz7vxv }
public override Evaluatable <double> Clone() => new NumberMap { Value = Value.Clone(), FromMin = FromMin.Clone(), FromMax = FromMax.Clone(), ToMin = ToMin.Clone(), ToMax = ToMax.Clone() };