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("}"); } }