コード例 #1
0
    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);
            }
        }
    }
コード例 #2
0
ファイル: Route.cs プロジェクト: JRY-Zheng/ligral
        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();
        }