Example #1
0
        public static SystemBookData GetSystemBookModel(int id)
        {
            PapayaEntities db     = new PapayaEntities();
            SystemBookData model  = new SystemBookData();
            rs_assets      system = db.rs_assets.Where(x => x.AssetId == id).SingleOrDefault(); //AssetId must be unique

            if (system != null)
            {
                if (system.IsSystem)
                {
                    List <SystemAsset>   assets    = new List <SystemAsset>();
                    List <rs_assets_rel> relations = db.rs_assets_rel.Where(x => x.SysId == id).ToList();
                    foreach (rs_assets_rel rel in relations)
                    {
                        SystemAsset asset = new SystemAsset();

                        asset.SubAsset = rel.rs_assets;
                        if (rel.rs_assets.Availability == 1)
                        {
                            asset.IsSelected = true;
                        }
                        assets.Add(asset);
                    }

                    model.Assets = assets;
                }

                model.System = system;
            }
            return(model);
        }
    //Create script for systems
    public static void Write(StreamWriter sw, string name, SystemAsset system)
    {
        ECSType type = ECSType.SYSTEM;

        Header(type, sw, system.isNetworked);
        Class_StructDefinition(type, sw, name, system.isMainThread, system.isNetworked);
        Define(system, sw);
        Terminate(sw);
    }
    //Defines system script. Creates script based on componets to be altered.
    public static void Define(SystemAsset system, StreamWriter sw)
    {
        sw.WriteLine("protected override JobHandle OnUpdate(JobHandle inputDeps) {");
        sw.WriteLine("Entities");
        //Try and find a component with TAG type.
        ComponentAsset asset = null;

        for (int i = 0; i < system.components.Length; i++)
        {
            if (system.components[i].type == TypeOf.TAG)
            {
                asset = system.components[i];
                break;
            }
            for (int k = 0; k < system.components[i].components.Length; k++)
            {
                if (system.components[i].components[k].type == TypeOf.TAG)
                {
                    asset = system.components[i].components[k];
                    break;
                }
            }
        }

        for (int i = 0; i < system.entities.Length; i++)
        {
            for (int j = 0; j < system.entities[i].components.Length; j++)
            {
                if (system.entities[i].components[j].type == TypeOf.TAG)
                {
                    asset = system.entities[i].components[j];
                    break;
                }
                for (int k = 0; k < system.entities[i].components[j].components.Length; k++)
                {
                    if (system.entities[i].components[j].components[k].type == TypeOf.TAG)
                    {
                        asset = system.entities[i].components[j].components[k];
                        break;
                    }
                }
            }
        }
        sw.WriteLine(".WithoutBurst() //Remove this if Burst compilation is possible.");
        if (asset != null)
        {
            sw.WriteLine(".WithAll<" + asset.name + ">()");
        }
        sw.Write(".ForEach((Entity entity, ");
        List <ComponentAsset> assets = new List <ComponentAsset>();

        for (int i = 0; i < system.components.Length; i++)
        {
            if (system.components[i].type != TypeOf.TAG && system.components[i].type != TypeOf.COMPOSITE)
            {
                assets.Add(system.components[i]);
            }
            else if (system.components[i].type == TypeOf.COMPOSITE)
            {
                for (int k = 0; k < system.components[i].components.Length; k++)
                {
                    if (system.components[i].components[k].type != TypeOf.TAG)
                    {
                        assets.Add(system.components[i].components[k]);
                    }
                }
            }
        }

        for (int i = 0; i < system.entities.Length; i++)
        {
            for (int j = 0; j < system.entities[i].components.Length; j++)
            {
                if (system.entities[i].components[j].type != TypeOf.TAG && system.entities[i].components[j].type != TypeOf.COMPOSITE)
                {
                    assets.Add(system.entities[i].components[j]);
                    break;
                }
                else if (system.entities[i].components[j].type == TypeOf.COMPOSITE)
                {
                    for (int k = 0; k < system.entities[i].components[j].components.Length; k++)
                    {
                        if (system.entities[i].components[j].components[k].type != TypeOf.TAG)
                        {
                            assets.Add(system.entities[i].components[j].components[k]);
                        }
                    }
                }
            }
        }
        for (int i = 0; i < assets.Count; i++)
        {
            if (i != assets.Count - 1)
            {
                sw.Write("ref " + assets[i].name + " " + assets[i].name.ToLower() + ", ");
            }
            else
            {
                sw.Write("ref " + assets[i].name + " " + assets[i].name.ToLower() + ") => {");
            }
        }
        sw.WriteLine();
        sw.WriteLine("//Logic goes here!");
        if (system.isMainThread)
        {
            sw.WriteLine("}).Run();");
            sw.WriteLine("return default;");
            sw.WriteLine("}");
        }
        else
        {
            sw.WriteLine("}).Schedule(inputDeps);");
            sw.WriteLine("}");
        }
    }