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));
 }
Пример #8
0
        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");
            }
        }
Пример #9
0
 public virtual void VisitSystem(UTinySystem system)
 {
 }
Пример #10
0
 public override void VisitSystem(UTinySystem system)
 {
     m_System?.Invoke(system);
 }