public static string GenerateSystemSuffix(UTinySystem system, UTinyPlatform forPlatform = UTinyPlatform.HTML5) { if (forPlatform != UTinyPlatform.HTML5) { throw new ArgumentException("Platform not supported"); } return("}"); }
public static string GenerateSystemIteratorSuffix(UTinySystem system, UTinyPlatform forPlatform = UTinyPlatform.HTML5) { if (forPlatform != UTinyPlatform.HTML5) { throw new ArgumentException("Platform not supported"); } return("});" + Environment.NewLine); }
public static string GenerateSystemPrefix(UTinySystem system, UTinyPlatform forPlatform = UTinyPlatform.HTML5) { if (forPlatform != UTinyPlatform.HTML5) { throw new ArgumentException("Platform not supported"); } return("function (sched, world) {"); }
public static string GenerateSystemIteratorPrefix(UTinySystem system, UTinyPlatform forPlatform = UTinyPlatform.HTML5) { if (forPlatform != UTinyPlatform.HTML5) { throw new ArgumentException("Platform not supported"); } return(system.Components.Count == 0 ? "world.forEachEntity([], function (entity) {" : $"world.forEachEntity([{string.Join(", ", system.Components.Select(p => GetJsTypeName(p.Dereference(system.Registry))).ToArray())}], \nfunction (entity, {string.Join(", ", system.Components.Select(p => p.Name.ToLower()).ToArray())}) {{"); }
public UTinySystem CreateSystem(UTinyId id, string name) { var system = new UTinySystem(this, m_VersionStorage) { Id = id, Name = name, Options = UTinySystemOptions.All }; m_VersionStorage.MarkAsChanged(system); Register(system); return(system); }
public override void VisitSystem(UTinySystem system) { if (system.IsRuntimeIncluded) { return; } foreach (var d in system.ExecuteBefore) { var dep = d.Dereference(m_Module.Registry); Writer.Line($"[UpdateBefore(typeof({dep.Name}))]"); } foreach (var d in system.ExecuteAfter) { var dep = d.Dereference(m_Module.Registry); Writer.Line($"[UpdateAfter(typeof({dep.Name}))]"); } using (Writer.Scope($"public class {system.Name} : IComponentSystem")) { } }
public static IEnumerable <UTinyModule> GetModules(UTinySystem system) { return(GetModules(system.Registry, (UTinySystem.Reference)system)); }
public static void WriteSystem(UTinyCodeWriter writer, UTinySystem system) { using (var w = new Writer(writer)) { w.Method(); w.Desc($"System {system.Documentation.Summary}"); if (system.Components.Count > 0) { var sb = new StringBuilder(); sb.Append("Components ["); for (var i = 0; i < system.Components.Count; i++) { var componentRef = system.Components[i]; var component = componentRef.Dereference(system.Registry); if (null != component) { sb.AppendFormat(i == 0 ? "{{@link {0}}}" : ", {{@link {0}}}", UTinyBuildPipeline.GetJsTypeName(component)); } else { throw new Exception($"System component is missing System=[{system.Name}] Component=[{componentRef.Name}]"); } } sb.Append("]"); w.Line(sb.ToString()); } if (system.ExecuteAfter.Count > 0) { var sb = new StringBuilder(); sb.Append("Execute After ["); for (var i = 0; i < system.ExecuteAfter.Count; i++) { var executeAfterRef = system.ExecuteAfter[i]; var executeAfter = executeAfterRef.Dereference(system.Registry); if (null != executeAfter) { sb.AppendFormat(i == 0 ? "{{@link {0}}}" : ", {{@link {0}}}", UTinyBuildPipeline.GetJsTypeName(executeAfter)); } else { throw new Exception($"System reference is missing System=[{system.Name}] ExecuteAfter=[{executeAfterRef.Name}]"); } } sb.Append("]"); w.Line(sb.ToString()); } if (system.ExecuteBefore.Count > 0) { var sb = new StringBuilder(); sb.Append("Execute Before ["); for (var i = 0; i < system.ExecuteBefore.Count; i++) { var executeBeforeRef = system.ExecuteBefore[i]; var executeBefore = executeBeforeRef.Dereference(system.Registry); if (null != executeBefore) { sb.AppendFormat(i == 0 ? "{{@link {0}}}" : ", {{@link {0}}}", UTinyBuildPipeline.GetJsTypeName(executeBefore)); } else { throw new Exception($"System reference is missing System=[{system.Name}] ExecuteBefore=[{executeBeforeRef.Name}]"); } } sb.Append("]"); w.Line(sb.ToString()); } w.Param("ut.Scheduler", "sched"); w.Param("ut.World", "world"); } }
public virtual void VisitSystem(UTinySystem system) { }
public override void VisitSystem(UTinySystem system) { m_System?.Invoke(system); }