protected ParameterScope(ParameterScopeLevel scopeLevel, ParameterScope parentScope) { ScopeLevel = scopeLevel; ParentScope = parentScope; if (parentScope != null) { parentScope.RegisterChildScope(this); } ChildScopes = new List <ParameterScope>(); }
public T Evaluate(ParameterScope scope) { var newScope = scope; // if we haven't been given the right scope, look for it at a higher level if (scope.ScopeLevel != scopeLevel) { newScope = scope.GetHigherScope(scopeLevel); } if (newScope == null) { throw new Exception($"Could not find scope at level {scopeLevel}. Object passed was at level {scope.ScopeLevel}."); } return(EvaluateInner(newScope)); }
protected override float EvaluateInner(ParameterScope scope) { return(DefaultValue); }
protected abstract T EvaluateInner(ParameterScope scope);
public void RemoveChild(ParameterScope scope) { ChildScopes.Remove(scope); scope.ParentScope = null; }
public void SetParentScope(ParameterScope scope) { // TECH DEBT - unregister previous parent ParentScope = scope; scope.RegisterChildScope(this); }
public void RegisterChildScope(ParameterScope scope) { ChildScopes.Add(scope); }