void Start() { int Width = Mathf.FloorToInt(Camera.main.orthographicSize * Camera.main.aspect); for (int x = -Width; x < Width + 1; x++) { int StreamSize = Random.Range(5, 35); bool HasFirstChange = Random.Range(0, 5) == 0; float StreamSpeed = Random.Range(0.05f, 0.66f); int posY = Random.Range(0, StreamSize); for (int y = 0; y < StreamSize; y++) { GameObject symbolPref = Instantiate(SymbolPrefab, this.transform.position, Quaternion.identity); MatrixSymbol symbol = symbolPref.GetComponent <MatrixSymbol> (); symbol.First = HasFirstChange && y == 0; symbol.SymbolPosition = new Vector3(x, y + posY, 0); symbol.Speed = StreamSpeed; symbol.Opacity = Remap(y, 0, StreamSize, 1f, 0.1f); } } }
public override void Configure(Dictionary <string, object> dictionary) { if (IsConfigured) { return; } IsConfigured = true; // route is first constructed then Isconfigured, // but construction needs configuration. foreach (RouteParam routeParam in parameters) { object value; if (dictionary.ContainsKey(routeParam.Name)) { value = dictionary[routeParam.Name]; } else if (routeParam.DefaultValue != null) { value = routeParam.DefaultValue; } else { throw logger.Error(new LigralException(string.Format("Parameter {0} is required but not provided.", routeParam.Name))); } if (routeParam.Type == null) { switch (value) { case double digit: TypeSymbol digitType = RouteScope.Lookup("DIGIT") as TypeSymbol; DigitSymbol digitSymbol = new DigitSymbol(routeParam.Name, digitType, digit); RouteScope.Insert(digitSymbol); break; case Matrix <double> matrix: TypeSymbol matrixType = RouteScope.Lookup("MATRIX") as TypeSymbol; MatrixSymbol matrixSymbol = new MatrixSymbol(routeParam.Name, matrixType, matrix); RouteScope.Insert(matrixSymbol); break; default: throw logger.Error(new LigralException($"Type inconsistency of {routeParam.Name}, digit or matrix expected")); } } else { TypeSymbol typeSymbol = (TypeSymbol)RouteScope.Lookup(routeParam.Type); Signature signature = (Signature)typeSymbol.GetValue(); switch (value) { case Model model: if (signature.Derive(model)) { TypeSymbol matrixType = RouteScope.Lookup("MODEL") as TypeSymbol; ModelSymbol modelSymbol = new ModelSymbol(routeParam.Name, typeSymbol, model); RouteScope.Insert(modelSymbol); break; } else { throw logger.Error(new ModelException(model, $"Type inconsistency for {routeParam.Name} in {Name}, in ports or out ports of model {model.GetTypeName()} is not the same as {routeParam.Type}'s.")); } case Route route: if (signature.Derive(route)) { TypeSymbol matrixType = RouteScope.Lookup(route.Type) as TypeSymbol; ModelSymbol modelSymbol = new ModelSymbol(routeParam.Name, typeSymbol, route); RouteScope.Insert(modelSymbol); break; } else { throw logger.Error(new LigralException($"Type inconsistency for {routeParam.Name} in {Name}, {route.GetTypeName()} is not derived from {routeParam.Type}'s.")); } default: throw logger.Error(new LigralException($"Type inconsistency for {routeParam.Name} in {Name}, model or route expected.")); } } } Interpret(); }