示例#1
0
        public virtual string TransformText()
        {
            this.GenerationEnvironment = null;

            #line 3 "Templates\UnityTypeGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(CommonGeneratorUtils.GetGeneratedHeader()));

            #line default
            #line hidden

            #line 3 "Templates\UnityTypeGenerator.tt"
            this.Write("\r\n\r\nusing System.Linq;\r\nusing Improbable.Gdk.Core;\r\n\r\nnamespace ");

            #line default
            #line hidden

            #line 8 "Templates\UnityTypeGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(qualifiedNamespace));

            #line default
            #line hidden

            #line 8 "Templates\UnityTypeGenerator.tt"
            this.Write("\r\n{ \r\n");

            #line default
            #line hidden

            #line 10 "Templates\UnityTypeGenerator.tt"

            var generator = new UnityTypeContent();


            #line default
            #line hidden

            #line 13 "Templates\UnityTypeGenerator.tt"
            this.Write("    ");

            #line default
            #line hidden

            #line 13 "Templates\UnityTypeGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(CommonGeneratorUtils.IndentEveryNewline(generator.Generate(typeDefinition, enumSet))));

            #line default
            #line hidden

            #line 13 "Templates\UnityTypeGenerator.tt"
            this.Write("\r\n}\r\n");

            #line default
            #line hidden
            return(this.GenerationEnvironment.ToString());
        }
        public virtual string TransformText()
        {
            this.GenerationEnvironment = null;

            #line 3 "Templates\UnityEnumGenerator.tt"
            this.Write("\r\n");

            #line default
            #line hidden

            #line 4 "Templates\UnityEnumGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(CommonGeneratorUtils.GetGeneratedHeader()));

            #line default
            #line hidden

            #line 4 "Templates\UnityEnumGenerator.tt"
            this.Write("\r\n\r\nnamespace ");

            #line default
            #line hidden

            #line 6 "Templates\UnityEnumGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(qualifiedNamespace));

            #line default
            #line hidden

            #line 6 "Templates\UnityEnumGenerator.tt"
            this.Write("\r\n{ \r\n    ");

            #line default
            #line hidden

            #line 8 "Templates\UnityEnumGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(CommonGeneratorUtils.IndentEveryNewline(new UnityEnumContent().Generate(enumDefinition))));

            #line default
            #line hidden

            #line 8 "Templates\UnityEnumGenerator.tt"
            this.Write("\r\n}\r\n");

            #line default
            #line hidden
            return(this.GenerationEnvironment.ToString());
        }
示例#3
0
        public virtual string TransformText()
        {
            this.GenerationEnvironment = null;

            #line 3 "Templates\UnityCommandStorageGenerator.tt"

            var generatedHeader    = CommonGeneratorUtils.GetGeneratedHeader();
            var componentDetails   = GetComponentDetails();
            var commandDetailsList = GetCommandDetailsList();


            #line default
            #line hidden

            #line 8 "Templates\UnityCommandStorageGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(generatedHeader));

            #line default
            #line hidden

            #line 8 "Templates\UnityCommandStorageGenerator.tt"
            this.Write("\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing Improbable.Gdk.Core.C" +
                       "ommands;\r\n\r\nnamespace ");

            #line default
            #line hidden

            #line 14 "Templates\UnityCommandStorageGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(qualifiedNamespace));

            #line default
            #line hidden

            #line 14 "Templates\UnityCommandStorageGenerator.tt"
            this.Write("\r\n{\r\n    public partial class ");

            #line default
            #line hidden

            #line 16 "Templates\UnityCommandStorageGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(componentDetails.ComponentName));

            #line default
            #line hidden

            #line 16 "Templates\UnityCommandStorageGenerator.tt"
            this.Write("\r\n    {\r\n        internal class CommandStorages\r\n        {\r\n");

            #line default
            #line hidden

            #line 20 "Templates\UnityCommandStorageGenerator.tt"
            foreach (var commandDetails in commandDetailsList)
            {
            #line default
            #line hidden

            #line 21 "Templates\UnityCommandStorageGenerator.tt"
                this.Write("            public class ");

            #line default
            #line hidden

            #line 21 "Templates\UnityCommandStorageGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(commandDetails.CommandName));

            #line default
            #line hidden

            #line 21 "Templates\UnityCommandStorageGenerator.tt"
                this.Write(" : CommandStorage\r\n            {\r\n                public Dictionary<long, Command" +
                           "RequestStore<");

            #line default
            #line hidden

            #line 23 "Templates\UnityCommandStorageGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(commandDetails.FqnRequestType));

            #line default
            #line hidden

            #line 23 "Templates\UnityCommandStorageGenerator.tt"
                this.Write(">> CommandRequestsInFlight =\r\n                    new Dictionary<long, CommandReq" +
                           "uestStore<");

            #line default
            #line hidden

            #line 24 "Templates\UnityCommandStorageGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(commandDetails.FqnRequestType));

            #line default
            #line hidden

            #line 24 "Templates\UnityCommandStorageGenerator.tt"
                this.Write(">>();\r\n            }\r\n");

            #line default
            #line hidden

            #line 26 "Templates\UnityCommandStorageGenerator.tt"
            }

            #line default
            #line hidden

            #line 27 "Templates\UnityCommandStorageGenerator.tt"
            this.Write("        }\r\n    }\r\n}\r\n");

            #line default
            #line hidden
            return(this.GenerationEnvironment.ToString());
        }
        public virtual string TransformText()
        {
            this.GenerationEnvironment = null;

            #line 1 "Templates\UnityReaderWriterGenerator.tt"
            this.Write("\r\n");

            #line default
            #line hidden

            #line 4 "Templates\UnityReaderWriterGenerator.tt"

            var generatedHeader    = CommonGeneratorUtils.GetGeneratedHeader();
            var componentDetails   = GetComponentDetails();
            var fieldDetailsList   = GetFieldDetailsList();
            var eventDetailsList   = GetEventDetailsList();
            var commandDetailsList = GetCommandDetailsList();
            var componentNamespace = qualifiedNamespace + "." + componentDetails.ComponentName;


            #line default
            #line hidden

            #line 12 "Templates\UnityReaderWriterGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(generatedHeader));

            #line default
            #line hidden

            #line 12 "Templates\UnityReaderWriterGenerator.tt"
            this.Write("\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing Unity.Entities;\r\nusin" +
                       "g Improbable.Gdk.Core;\r\nusing Improbable.Gdk.GameObjectRepresentation;\r\nusing En" +
                       "tity = Unity.Entities.Entity;\r\n\r\nnamespace ");

            #line default
            #line hidden

            #line 21 "Templates\UnityReaderWriterGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(qualifiedNamespace));

            #line default
            #line hidden

            #line 21 "Templates\UnityReaderWriterGenerator.tt"
            this.Write("\r\n{\r\n    public partial class ");

            #line default
            #line hidden

            #line 23 "Templates\UnityReaderWriterGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(componentDetails.ComponentName));

            #line default
            #line hidden

            #line 23 "Templates\UnityReaderWriterGenerator.tt"
            this.Write("\r\n    {\r\n        public partial class Requirable\r\n        {\r\n            [Injecta" +
                       "bleId(InjectableType.ReaderWriter, ");

            #line default
            #line hidden

            #line 27 "Templates\UnityReaderWriterGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(unityComponentDefinition.Id));

            #line default
            #line hidden

            #line 27 "Templates\UnityReaderWriterGenerator.tt"
            this.Write(@")]
            internal class ReaderWriterCreator : IInjectableCreator
            {
                public IInjectable CreateInjectable(Entity entity, EntityManager entityManager, ILogDispatcher logDispatcher)
                {
                    return new ReaderWriterImpl(entity, entityManager, logDispatcher);
                }
            }

            [InjectableId(InjectableType.ReaderWriter, ");

            #line default
            #line hidden

            #line 36 "Templates\UnityReaderWriterGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(unityComponentDefinition.Id));

            #line default
            #line hidden

            #line 36 "Templates\UnityReaderWriterGenerator.tt"
            this.Write(")]\r\n            [InjectionCondition(InjectionCondition.RequireComponentPresent)]\r" +
                       "\n            public interface Reader : IReader<");

            #line default
            #line hidden

            #line 38 "Templates\UnityReaderWriterGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(componentNamespace));

            #line default
            #line hidden

            #line 38 "Templates\UnityReaderWriterGenerator.tt"
            this.Write(".Component, ");

            #line default
            #line hidden

            #line 38 "Templates\UnityReaderWriterGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(componentNamespace));

            #line default
            #line hidden

            #line 38 "Templates\UnityReaderWriterGenerator.tt"
            this.Write(".Update>\r\n            {\r\n");

            #line default
            #line hidden

            #line 40 "Templates\UnityReaderWriterGenerator.tt"
            foreach (var fieldDetails in fieldDetailsList)
            {
            #line default
            #line hidden

            #line 41 "Templates\UnityReaderWriterGenerator.tt"
                this.Write("                event Action<");

            #line default
            #line hidden

            #line 41 "Templates\UnityReaderWriterGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(fieldDetails.Type));

            #line default
            #line hidden

            #line 41 "Templates\UnityReaderWriterGenerator.tt"
                this.Write("> ");

            #line default
            #line hidden

            #line 41 "Templates\UnityReaderWriterGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(fieldDetails.PascalCaseName));

            #line default
            #line hidden

            #line 41 "Templates\UnityReaderWriterGenerator.tt"
                this.Write("Updated;\r\n");

            #line default
            #line hidden

            #line 42 "Templates\UnityReaderWriterGenerator.tt"
            }

            #line default
            #line hidden

            #line 43 "Templates\UnityReaderWriterGenerator.tt"
            foreach (var eventDetails in eventDetailsList)
            {
                var payloadType = eventDetails.FqnPayloadType;


            #line default
            #line hidden

            #line 46 "Templates\UnityReaderWriterGenerator.tt"
                this.Write("                event Action<");

            #line default
            #line hidden

            #line 46 "Templates\UnityReaderWriterGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(payloadType));

            #line default
            #line hidden

            #line 46 "Templates\UnityReaderWriterGenerator.tt"
                this.Write("> On");

            #line default
            #line hidden

            #line 46 "Templates\UnityReaderWriterGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(eventDetails.EventName));

            #line default
            #line hidden

            #line 46 "Templates\UnityReaderWriterGenerator.tt"
                this.Write(";\r\n");

            #line default
            #line hidden

            #line 47 "Templates\UnityReaderWriterGenerator.tt"
            }

            #line default
            #line hidden

            #line 48 "Templates\UnityReaderWriterGenerator.tt"
            this.Write("            }\r\n\r\n            [InjectableId(InjectableType.ReaderWriter, ");

            #line default
            #line hidden

            #line 50 "Templates\UnityReaderWriterGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(unityComponentDefinition.Id));

            #line default
            #line hidden

            #line 50 "Templates\UnityReaderWriterGenerator.tt"
            this.Write(")]\r\n            [InjectionCondition(InjectionCondition.RequireComponentWithAuthor" +
                       "ity)]\r\n            public interface Writer : Reader, IWriter<");

            #line default
            #line hidden

            #line 52 "Templates\UnityReaderWriterGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(componentNamespace));

            #line default
            #line hidden

            #line 52 "Templates\UnityReaderWriterGenerator.tt"
            this.Write(".Component, ");

            #line default
            #line hidden

            #line 52 "Templates\UnityReaderWriterGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(componentNamespace));

            #line default
            #line hidden

            #line 52 "Templates\UnityReaderWriterGenerator.tt"
            this.Write(".Update>\r\n            {\r\n");

            #line default
            #line hidden

            #line 54 "Templates\UnityReaderWriterGenerator.tt"
            foreach (var eventDetails in eventDetailsList)
            {
            #line default
            #line hidden

            #line 55 "Templates\UnityReaderWriterGenerator.tt"
                this.Write("                void Send");

            #line default
            #line hidden

            #line 55 "Templates\UnityReaderWriterGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(eventDetails.EventName));

            #line default
            #line hidden

            #line 55 "Templates\UnityReaderWriterGenerator.tt"
                this.Write("( ");

            #line default
            #line hidden

            #line 55 "Templates\UnityReaderWriterGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(eventDetails.FqnPayloadType));

            #line default
            #line hidden

            #line 55 "Templates\UnityReaderWriterGenerator.tt"
                this.Write(" payload);\r\n");

            #line default
            #line hidden

            #line 56 "Templates\UnityReaderWriterGenerator.tt"
            }

            #line default
            #line hidden

            #line 57 "Templates\UnityReaderWriterGenerator.tt"
            this.Write("            }\r\n\r\n            internal class ReaderWriterImpl :\r\n                R" +
                       "eaderWriterBase<");

            #line default
            #line hidden

            #line 60 "Templates\UnityReaderWriterGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(componentNamespace));

            #line default
            #line hidden

            #line 60 "Templates\UnityReaderWriterGenerator.tt"
            this.Write(".Component, ");

            #line default
            #line hidden

            #line 60 "Templates\UnityReaderWriterGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(componentNamespace));

            #line default
            #line hidden

            #line 60 "Templates\UnityReaderWriterGenerator.tt"
            this.Write(@".Update>, Reader, Writer
            {
                public ReaderWriterImpl(Entity entity, EntityManager entityManager, ILogDispatcher logDispatcher)
                    : base(entity, entityManager, logDispatcher)
                {
                }
");

            #line default
            #line hidden

            #line 66 "Templates\UnityReaderWriterGenerator.tt"
            foreach (var fieldDetails in fieldDetailsList)
            {
            #line default
            #line hidden

            #line 67 "Templates\UnityReaderWriterGenerator.tt"
                this.Write("\r\n                private readonly List<Action<");

            #line default
            #line hidden

            #line 68 "Templates\UnityReaderWriterGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(fieldDetails.Type));

            #line default
            #line hidden

            #line 68 "Templates\UnityReaderWriterGenerator.tt"
                this.Write(">> ");

            #line default
            #line hidden

            #line 68 "Templates\UnityReaderWriterGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(fieldDetails.CamelCaseName));

            #line default
            #line hidden

            #line 68 "Templates\UnityReaderWriterGenerator.tt"
                this.Write("Delegates = new List<Action<");

            #line default
            #line hidden

            #line 68 "Templates\UnityReaderWriterGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(fieldDetails.Type));

            #line default
            #line hidden

            #line 68 "Templates\UnityReaderWriterGenerator.tt"
                this.Write(">>();\r\n\r\n                public event Action<");

            #line default
            #line hidden

            #line 70 "Templates\UnityReaderWriterGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(fieldDetails.Type));

            #line default
            #line hidden

            #line 70 "Templates\UnityReaderWriterGenerator.tt"
                this.Write("> ");

            #line default
            #line hidden

            #line 70 "Templates\UnityReaderWriterGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(fieldDetails.PascalCaseName));

            #line default
            #line hidden

            #line 70 "Templates\UnityReaderWriterGenerator.tt"
                this.Write("Updated\r\n                {\r\n                    add\r\n                    {\r\n     " +
                           "                   if (!IsValid())\r\n                        {\r\n                 " +
                           "           return;\r\n                        }\r\n\r\n                        ");

            #line default
            #line hidden

            #line 79 "Templates\UnityReaderWriterGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(fieldDetails.CamelCaseName));

            #line default
            #line hidden

            #line 79 "Templates\UnityReaderWriterGenerator.tt"
                this.Write("Delegates.Add(value);\r\n                    }\r\n                    remove\r\n       " +
                           "             {\r\n                        if (!IsValid())\r\n                       " +
                           " {\r\n                            return;\r\n                        }\r\n\r\n          " +
                           "              ");

            #line default
            #line hidden

            #line 88 "Templates\UnityReaderWriterGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(fieldDetails.CamelCaseName));

            #line default
            #line hidden

            #line 88 "Templates\UnityReaderWriterGenerator.tt"
                this.Write("Delegates.Remove(value);\r\n                    }\r\n                }\r\n");

            #line default
            #line hidden

            #line 91 "Templates\UnityReaderWriterGenerator.tt"
            }

            #line default
            #line hidden

            #line 92 "Templates\UnityReaderWriterGenerator.tt"
            this.Write("\r\n                protected override void TriggerFieldCallbacks(");

            #line default
            #line hidden

            #line 93 "Templates\UnityReaderWriterGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(componentNamespace));

            #line default
            #line hidden

            #line 93 "Templates\UnityReaderWriterGenerator.tt"
            this.Write(".Update update)\r\n                {\r\n");

            #line default
            #line hidden

            #line 95 "Templates\UnityReaderWriterGenerator.tt"
            foreach (var fieldDetails in fieldDetailsList)
            {
            #line default
            #line hidden

            #line 96 "Templates\UnityReaderWriterGenerator.tt"
                this.Write("                    DispatchWithErrorHandling(update.");

            #line default
            #line hidden

            #line 96 "Templates\UnityReaderWriterGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(fieldDetails.PascalCaseName));

            #line default
            #line hidden

            #line 96 "Templates\UnityReaderWriterGenerator.tt"
                this.Write(", ");

            #line default
            #line hidden

            #line 96 "Templates\UnityReaderWriterGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(fieldDetails.CamelCaseName));

            #line default
            #line hidden

            #line 96 "Templates\UnityReaderWriterGenerator.tt"
                this.Write("Delegates);\r\n");

            #line default
            #line hidden

            #line 97 "Templates\UnityReaderWriterGenerator.tt"
            }

            #line default
            #line hidden

            #line 98 "Templates\UnityReaderWriterGenerator.tt"
            this.Write("                }\r\n\r\n                protected override void ApplyUpdate(");

            #line default
            #line hidden

            #line 100 "Templates\UnityReaderWriterGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(componentNamespace));

            #line default
            #line hidden

            #line 100 "Templates\UnityReaderWriterGenerator.tt"
            this.Write(".Update update, ref ");

            #line default
            #line hidden

            #line 100 "Templates\UnityReaderWriterGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(componentNamespace));

            #line default
            #line hidden

            #line 100 "Templates\UnityReaderWriterGenerator.tt"
            this.Write(".Component data)\r\n                {\r\n");

            #line default
            #line hidden

            #line 102 "Templates\UnityReaderWriterGenerator.tt"
            foreach (var fieldDetails in fieldDetailsList)
            {
            #line default
            #line hidden

            #line 103 "Templates\UnityReaderWriterGenerator.tt"
                this.Write("                    if (update.");

            #line default
            #line hidden

            #line 103 "Templates\UnityReaderWriterGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(fieldDetails.PascalCaseName));

            #line default
            #line hidden

            #line 103 "Templates\UnityReaderWriterGenerator.tt"
                this.Write(".HasValue)\r\n                    {\r\n                        data.");

            #line default
            #line hidden

            #line 105 "Templates\UnityReaderWriterGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(fieldDetails.PascalCaseName));

            #line default
            #line hidden

            #line 105 "Templates\UnityReaderWriterGenerator.tt"
                this.Write(" = update.");

            #line default
            #line hidden

            #line 105 "Templates\UnityReaderWriterGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(fieldDetails.PascalCaseName));

            #line default
            #line hidden

            #line 105 "Templates\UnityReaderWriterGenerator.tt"
                this.Write(".Value;\r\n                    }\r\n");

            #line default
            #line hidden

            #line 107 "Templates\UnityReaderWriterGenerator.tt"
            }

            #line default
            #line hidden

            #line 108 "Templates\UnityReaderWriterGenerator.tt"
            this.Write("                }\r\n");

            #line default
            #line hidden

            #line 109 "Templates\UnityReaderWriterGenerator.tt"
            foreach (var eventDetails in eventDetailsList)
            {
                var delegateList = eventDetails.EventName + "Delegates";
                var payloadType  = eventDetails.FqnPayloadType;


            #line default
            #line hidden

            #line 113 "Templates\UnityReaderWriterGenerator.tt"
                this.Write("\r\n                private readonly List<Action<");

            #line default
            #line hidden

            #line 114 "Templates\UnityReaderWriterGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(payloadType));

            #line default
            #line hidden

            #line 114 "Templates\UnityReaderWriterGenerator.tt"
                this.Write(">> ");

            #line default
            #line hidden

            #line 114 "Templates\UnityReaderWriterGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(delegateList));

            #line default
            #line hidden

            #line 114 "Templates\UnityReaderWriterGenerator.tt"
                this.Write(" = new List<Action<");

            #line default
            #line hidden

            #line 114 "Templates\UnityReaderWriterGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(payloadType));

            #line default
            #line hidden

            #line 114 "Templates\UnityReaderWriterGenerator.tt"
                this.Write(">>();\r\n\r\n                public event Action<");

            #line default
            #line hidden

            #line 116 "Templates\UnityReaderWriterGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(payloadType));

            #line default
            #line hidden

            #line 116 "Templates\UnityReaderWriterGenerator.tt"
                this.Write("> On");

            #line default
            #line hidden

            #line 116 "Templates\UnityReaderWriterGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(eventDetails.EventName));

            #line default
            #line hidden

            #line 116 "Templates\UnityReaderWriterGenerator.tt"
                this.Write("\r\n                {\r\n                    add\r\n                    {\r\n            " +
                           "            if (!IsValid())\r\n                        {\r\n                        " +
                           "    return;\r\n                        }\r\n\r\n                        ");

            #line default
            #line hidden

            #line 125 "Templates\UnityReaderWriterGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(delegateList));

            #line default
            #line hidden

            #line 125 "Templates\UnityReaderWriterGenerator.tt"
                this.Write(".Add(value);\r\n                    }\r\n                    remove\r\n                " +
                           "    {\r\n                        if (!IsValid())\r\n                        {\r\n     " +
                           "                       return;\r\n                        }\r\n\r\n                   " +
                           "     ");

            #line default
            #line hidden

            #line 134 "Templates\UnityReaderWriterGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(delegateList));

            #line default
            #line hidden

            #line 134 "Templates\UnityReaderWriterGenerator.tt"
                this.Write(".Remove(value);\r\n                    }\r\n                }\r\n\r\n                publ" +
                           "ic void On");

            #line default
            #line hidden

            #line 138 "Templates\UnityReaderWriterGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(eventDetails.EventName));

            #line default
            #line hidden

            #line 138 "Templates\UnityReaderWriterGenerator.tt"
                this.Write("Event(");

            #line default
            #line hidden

            #line 138 "Templates\UnityReaderWriterGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(payloadType));

            #line default
            #line hidden

            #line 138 "Templates\UnityReaderWriterGenerator.tt"
                this.Write(" payload)\r\n                {\r\n                    GameObjectDelegates.DispatchWit" +
                           "hErrorHandling(payload, ");

            #line default
            #line hidden

            #line 140 "Templates\UnityReaderWriterGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(delegateList));

            #line default
            #line hidden

            #line 140 "Templates\UnityReaderWriterGenerator.tt"
                this.Write(", logDispatcher);\r\n                }\r\n\r\n                public void Send");

            #line default
            #line hidden

            #line 143 "Templates\UnityReaderWriterGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(eventDetails.EventName));

            #line default
            #line hidden

            #line 143 "Templates\UnityReaderWriterGenerator.tt"
                this.Write("(");

            #line default
            #line hidden

            #line 143 "Templates\UnityReaderWriterGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(eventDetails.FqnPayloadType));

            #line default
            #line hidden

            #line 143 "Templates\UnityReaderWriterGenerator.tt"
                this.Write(" payload)\r\n                {\r\n                    if (!IsValid())\r\n              " +
                           "      {\r\n                        return;\r\n                    }\r\n\r\n             " +
                           "       var sender = EntityManager.GetComponentData<EventSender.");

            #line default
            #line hidden

            #line 150 "Templates\UnityReaderWriterGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(eventDetails.EventName));

            #line default
            #line hidden

            #line 150 "Templates\UnityReaderWriterGenerator.tt"
                this.Write(">(Entity);\r\n                    sender.Events.Add(payload);\r\n                }\r\n");

            #line default
            #line hidden

            #line 153 "Templates\UnityReaderWriterGenerator.tt"
            }

            #line default
            #line hidden

            #line 154 "Templates\UnityReaderWriterGenerator.tt"
            this.Write("            }\r\n        }\r\n    }\r\n}\r\n");

            #line default
            #line hidden
            return(this.GenerationEnvironment.ToString());
        }
        public virtual string TransformText()
        {
            this.GenerationEnvironment = null;

            #line 3 "Templates\UnityCommandComponentsGenerator.tt"

            var generatedHeader    = CommonGeneratorUtils.GetGeneratedHeader();
            var componentDetails   = GetComponentDetails();
            var commandDetailsList = GetCommandDetailsList();


            #line default
            #line hidden

            #line 8 "Templates\UnityCommandComponentsGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(generatedHeader));

            #line default
            #line hidden

            #line 8 "Templates\UnityCommandComponentsGenerator.tt"
            this.Write("\r\n\r\nusing System.Collections.Generic;\r\nusing Unity.Entities;\r\n\r\nnamespace ");

            #line default
            #line hidden

            #line 13 "Templates\UnityCommandComponentsGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(qualifiedNamespace));

            #line default
            #line hidden

            #line 13 "Templates\UnityCommandComponentsGenerator.tt"
            this.Write("\r\n{\r\n    public partial class ");

            #line default
            #line hidden

            #line 15 "Templates\UnityCommandComponentsGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(componentDetails.ComponentName));

            #line default
            #line hidden

            #line 15 "Templates\UnityCommandComponentsGenerator.tt"
            this.Write("\r\n    {\r\n        public class CommandSenders\r\n        {\r\n");

            #line default
            #line hidden

            #line 19 "Templates\UnityCommandComponentsGenerator.tt"
            foreach (var command in commandDetailsList)
            {
            #line default
            #line hidden

            #line 20 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write("            public struct ");

            #line default
            #line hidden

            #line 20 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(command.CommandName));

            #line default
            #line hidden

            #line 20 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(" : IComponentData\r\n            {\r\n                internal uint CommandListHandle" +
                           ";\r\n                public List<");

            #line default
            #line hidden

            #line 23 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(qualifiedNamespace));

            #line default
            #line hidden

            #line 23 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(".");

            #line default
            #line hidden

            #line 23 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(componentDetails.ComponentName));

            #line default
            #line hidden

            #line 23 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(".");

            #line default
            #line hidden

            #line 23 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(command.CommandName));

            #line default
            #line hidden

            #line 23 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(".Request> RequestsToSend\r\n                {\r\n                    get => ");

            #line default
            #line hidden

            #line 25 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(qualifiedNamespace));

            #line default
            #line hidden

            #line 25 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(".");

            #line default
            #line hidden

            #line 25 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(componentDetails.ComponentName));

            #line default
            #line hidden

            #line 25 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(".ReferenceTypeProviders.");

            #line default
            #line hidden

            #line 25 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(command.CommandName));

            #line default
            #line hidden

            #line 25 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write("SenderProvider.Get(CommandListHandle);\r\n                    set => ");

            #line default
            #line hidden

            #line 26 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(qualifiedNamespace));

            #line default
            #line hidden

            #line 26 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(".");

            #line default
            #line hidden

            #line 26 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(componentDetails.ComponentName));

            #line default
            #line hidden

            #line 26 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(".ReferenceTypeProviders.");

            #line default
            #line hidden

            #line 26 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(command.CommandName));

            #line default
            #line hidden

            #line 26 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write("SenderProvider.Set(CommandListHandle, value);\r\n                }\r\n            }\r\n" +
                           "");

            #line default
            #line hidden

            #line 29 "Templates\UnityCommandComponentsGenerator.tt"
            }

            #line default
            #line hidden

            #line 30 "Templates\UnityCommandComponentsGenerator.tt"
            this.Write("        }\r\n\r\n        public class CommandRequests\r\n        {\r\n");

            #line default
            #line hidden

            #line 34 "Templates\UnityCommandComponentsGenerator.tt"
            foreach (var command in commandDetailsList)
            {
            #line default
            #line hidden

            #line 35 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write("            public struct ");

            #line default
            #line hidden

            #line 35 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(command.CommandName));

            #line default
            #line hidden

            #line 35 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(" : IComponentData\r\n            {\r\n                internal uint CommandListHandle" +
                           ";\r\n                public List<");

            #line default
            #line hidden

            #line 38 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(qualifiedNamespace));

            #line default
            #line hidden

            #line 38 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(".");

            #line default
            #line hidden

            #line 38 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(componentDetails.ComponentName));

            #line default
            #line hidden

            #line 38 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(".");

            #line default
            #line hidden

            #line 38 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(command.CommandName));

            #line default
            #line hidden

            #line 38 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(".ReceivedRequest> Requests\r\n                {\r\n                    get => ");

            #line default
            #line hidden

            #line 40 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(qualifiedNamespace));

            #line default
            #line hidden

            #line 40 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(".");

            #line default
            #line hidden

            #line 40 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(componentDetails.ComponentName));

            #line default
            #line hidden

            #line 40 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(".ReferenceTypeProviders.");

            #line default
            #line hidden

            #line 40 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(command.CommandName));

            #line default
            #line hidden

            #line 40 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write("RequestsProvider.Get(CommandListHandle);\r\n                    set => ");

            #line default
            #line hidden

            #line 41 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(qualifiedNamespace));

            #line default
            #line hidden

            #line 41 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(".");

            #line default
            #line hidden

            #line 41 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(componentDetails.ComponentName));

            #line default
            #line hidden

            #line 41 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(".ReferenceTypeProviders.");

            #line default
            #line hidden

            #line 41 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(command.CommandName));

            #line default
            #line hidden

            #line 41 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write("RequestsProvider.Set(CommandListHandle, value);\r\n                }\r\n            }" +
                           "\r\n");

            #line default
            #line hidden

            #line 44 "Templates\UnityCommandComponentsGenerator.tt"
            }

            #line default
            #line hidden

            #line 45 "Templates\UnityCommandComponentsGenerator.tt"
            this.Write("        }\r\n\r\n        public class CommandResponders\r\n        {\r\n");

            #line default
            #line hidden

            #line 49 "Templates\UnityCommandComponentsGenerator.tt"
            foreach (var command in commandDetailsList)
            {
            #line default
            #line hidden

            #line 50 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write("            public struct ");

            #line default
            #line hidden

            #line 50 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(command.CommandName));

            #line default
            #line hidden

            #line 50 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(" : IComponentData\r\n            {\r\n                internal uint CommandListHandle" +
                           ";\r\n                public List<");

            #line default
            #line hidden

            #line 53 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(qualifiedNamespace));

            #line default
            #line hidden

            #line 53 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(".");

            #line default
            #line hidden

            #line 53 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(componentDetails.ComponentName));

            #line default
            #line hidden

            #line 53 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(".");

            #line default
            #line hidden

            #line 53 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(command.CommandName));

            #line default
            #line hidden

            #line 53 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(".Response> ResponsesToSend\r\n                {\r\n                    get => ");

            #line default
            #line hidden

            #line 55 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(qualifiedNamespace));

            #line default
            #line hidden

            #line 55 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(".");

            #line default
            #line hidden

            #line 55 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(componentDetails.ComponentName));

            #line default
            #line hidden

            #line 55 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(".ReferenceTypeProviders.");

            #line default
            #line hidden

            #line 55 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(command.CommandName));

            #line default
            #line hidden

            #line 55 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write("ResponderProvider.Get(CommandListHandle);\r\n                    set => ");

            #line default
            #line hidden

            #line 56 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(qualifiedNamespace));

            #line default
            #line hidden

            #line 56 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(".");

            #line default
            #line hidden

            #line 56 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(componentDetails.ComponentName));

            #line default
            #line hidden

            #line 56 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(".ReferenceTypeProviders.");

            #line default
            #line hidden

            #line 56 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(command.CommandName));

            #line default
            #line hidden

            #line 56 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write("ResponderProvider.Set(CommandListHandle, value);\r\n                }\r\n            " +
                           "}\r\n");

            #line default
            #line hidden

            #line 59 "Templates\UnityCommandComponentsGenerator.tt"
            }

            #line default
            #line hidden

            #line 60 "Templates\UnityCommandComponentsGenerator.tt"
            this.Write("        }\r\n\r\n        public class CommandResponses\r\n        {\r\n");

            #line default
            #line hidden

            #line 64 "Templates\UnityCommandComponentsGenerator.tt"
            foreach (var command in commandDetailsList)
            {
            #line default
            #line hidden

            #line 65 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write("            public struct ");

            #line default
            #line hidden

            #line 65 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(command.CommandName));

            #line default
            #line hidden

            #line 65 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(" : IComponentData\r\n            {\r\n                internal uint CommandListHandle" +
                           ";\r\n                public List<");

            #line default
            #line hidden

            #line 68 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(qualifiedNamespace));

            #line default
            #line hidden

            #line 68 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(".");

            #line default
            #line hidden

            #line 68 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(componentDetails.ComponentName));

            #line default
            #line hidden

            #line 68 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(".");

            #line default
            #line hidden

            #line 68 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(command.CommandName));

            #line default
            #line hidden

            #line 68 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(".ReceivedResponse> Responses\r\n                {\r\n                    get => ");

            #line default
            #line hidden

            #line 70 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(qualifiedNamespace));

            #line default
            #line hidden

            #line 70 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(".");

            #line default
            #line hidden

            #line 70 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(componentDetails.ComponentName));

            #line default
            #line hidden

            #line 70 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(".ReferenceTypeProviders.");

            #line default
            #line hidden

            #line 70 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(command.CommandName));

            #line default
            #line hidden

            #line 70 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write("ResponsesProvider.Get(CommandListHandle);\r\n                    set => ");

            #line default
            #line hidden

            #line 71 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(qualifiedNamespace));

            #line default
            #line hidden

            #line 71 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(".");

            #line default
            #line hidden

            #line 71 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(componentDetails.ComponentName));

            #line default
            #line hidden

            #line 71 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(".ReferenceTypeProviders.");

            #line default
            #line hidden

            #line 71 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(command.CommandName));

            #line default
            #line hidden

            #line 71 "Templates\UnityCommandComponentsGenerator.tt"
                this.Write("ResponsesProvider.Set(CommandListHandle, value);\r\n                }\r\n            " +
                           "}\r\n");

            #line default
            #line hidden

            #line 74 "Templates\UnityCommandComponentsGenerator.tt"
            }

            #line default
            #line hidden

            #line 75 "Templates\UnityCommandComponentsGenerator.tt"
            this.Write("        }\r\n    }\r\n}\r\n");

            #line default
            #line hidden
            return(this.GenerationEnvironment.ToString());
        }
        public virtual string TransformText()
        {
            this.GenerationEnvironment = null;

            #line 3 "Templates\UnityEventGenerator.tt"

            var generatedHeader  = CommonGeneratorUtils.GetGeneratedHeader();
            var componentDetails = GetComponentDetails();
            var eventDetailsList = GetEventDetailsList();


            #line default
            #line hidden

            #line 8 "Templates\UnityEventGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(generatedHeader));

            #line default
            #line hidden

            #line 8 "Templates\UnityEventGenerator.tt"
            this.Write("\r\n\r\nusing System.Collections.Generic;\r\nusing Unity.Entities;\r\n\r\nnamespace ");

            #line default
            #line hidden

            #line 13 "Templates\UnityEventGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(qualifiedNamespace));

            #line default
            #line hidden

            #line 13 "Templates\UnityEventGenerator.tt"
            this.Write("\r\n{\r\n    public partial class ");

            #line default
            #line hidden

            #line 15 "Templates\UnityEventGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(componentDetails.ComponentName));

            #line default
            #line hidden

            #line 15 "Templates\UnityEventGenerator.tt"
            this.Write("\r\n    {\r\n        public static class ReceivedEvents\r\n        {\r\n");

            #line default
            #line hidden

            #line 19 "Templates\UnityEventGenerator.tt"
            foreach (var eventDetails in eventDetailsList)
            {
            #line default
            #line hidden

            #line 20 "Templates\UnityEventGenerator.tt"
                this.Write("            public struct ");

            #line default
            #line hidden

            #line 20 "Templates\UnityEventGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(eventDetails.EventName));

            #line default
            #line hidden

            #line 20 "Templates\UnityEventGenerator.tt"
                this.Write(" : IComponentData\r\n            {\r\n                internal uint handle;\r\n\r\n      " +
                           "          public List<");

            #line default
            #line hidden

            #line 24 "Templates\UnityEventGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(eventDetails.FqnPayloadType));

            #line default
            #line hidden

            #line 24 "Templates\UnityEventGenerator.tt"
                this.Write("> Events\r\n                {\r\n                    get => ");

            #line default
            #line hidden

            #line 26 "Templates\UnityEventGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(qualifiedNamespace));

            #line default
            #line hidden

            #line 26 "Templates\UnityEventGenerator.tt"
                this.Write(".");

            #line default
            #line hidden

            #line 26 "Templates\UnityEventGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(componentDetails.ComponentName));

            #line default
            #line hidden

            #line 26 "Templates\UnityEventGenerator.tt"
                this.Write(".ReferenceTypeProviders.");

            #line default
            #line hidden

            #line 26 "Templates\UnityEventGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(eventDetails.EventName));

            #line default
            #line hidden

            #line 26 "Templates\UnityEventGenerator.tt"
                this.Write("Provider.Get(handle);\r\n                    internal set => ");

            #line default
            #line hidden

            #line 27 "Templates\UnityEventGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(qualifiedNamespace));

            #line default
            #line hidden

            #line 27 "Templates\UnityEventGenerator.tt"
                this.Write(".");

            #line default
            #line hidden

            #line 27 "Templates\UnityEventGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(componentDetails.ComponentName));

            #line default
            #line hidden

            #line 27 "Templates\UnityEventGenerator.tt"
                this.Write(".ReferenceTypeProviders.");

            #line default
            #line hidden

            #line 27 "Templates\UnityEventGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(eventDetails.EventName));

            #line default
            #line hidden

            #line 27 "Templates\UnityEventGenerator.tt"
                this.Write("Provider.Set(handle, value);\r\n                }\r\n            }\r\n\r\n");

            #line default
            #line hidden

            #line 31 "Templates\UnityEventGenerator.tt"
            }

            #line default
            #line hidden

            #line 32 "Templates\UnityEventGenerator.tt"
            this.Write("        }\r\n\r\n        public static class EventSender\r\n        {\r\n");

            #line default
            #line hidden

            #line 36 "Templates\UnityEventGenerator.tt"
            foreach (var eventDetails in eventDetailsList)
            {
            #line default
            #line hidden

            #line 37 "Templates\UnityEventGenerator.tt"
                this.Write("            public struct ");

            #line default
            #line hidden

            #line 37 "Templates\UnityEventGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(eventDetails.EventName));

            #line default
            #line hidden

            #line 37 "Templates\UnityEventGenerator.tt"
                this.Write(" : IComponentData\r\n            {\r\n                internal uint handle;\r\n\r\n      " +
                           "          public List<");

            #line default
            #line hidden

            #line 41 "Templates\UnityEventGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(eventDetails.FqnPayloadType));

            #line default
            #line hidden

            #line 41 "Templates\UnityEventGenerator.tt"
                this.Write("> Events\r\n                {\r\n                    get => ");

            #line default
            #line hidden

            #line 43 "Templates\UnityEventGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(qualifiedNamespace));

            #line default
            #line hidden

            #line 43 "Templates\UnityEventGenerator.tt"
                this.Write(".");

            #line default
            #line hidden

            #line 43 "Templates\UnityEventGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(componentDetails.ComponentName));

            #line default
            #line hidden

            #line 43 "Templates\UnityEventGenerator.tt"
                this.Write(".ReferenceTypeProviders.");

            #line default
            #line hidden

            #line 43 "Templates\UnityEventGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(eventDetails.EventName));

            #line default
            #line hidden

            #line 43 "Templates\UnityEventGenerator.tt"
                this.Write("Provider.Get(handle);\r\n                    internal set => ");

            #line default
            #line hidden

            #line 44 "Templates\UnityEventGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(qualifiedNamespace));

            #line default
            #line hidden

            #line 44 "Templates\UnityEventGenerator.tt"
                this.Write(".");

            #line default
            #line hidden

            #line 44 "Templates\UnityEventGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(componentDetails.ComponentName));

            #line default
            #line hidden

            #line 44 "Templates\UnityEventGenerator.tt"
                this.Write(".ReferenceTypeProviders.");

            #line default
            #line hidden

            #line 44 "Templates\UnityEventGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(eventDetails.EventName));

            #line default
            #line hidden

            #line 44 "Templates\UnityEventGenerator.tt"
                this.Write("Provider.Set(handle, value);\r\n                }\r\n            }\r\n\r\n");

            #line default
            #line hidden

            #line 48 "Templates\UnityEventGenerator.tt"
            }

            #line default
            #line hidden

            #line 49 "Templates\UnityEventGenerator.tt"
            this.Write("        }\r\n    }\r\n}\r\n");

            #line default
            #line hidden
            return(this.GenerationEnvironment.ToString());
        }
        public virtual string TransformText()
        {
            this.GenerationEnvironment = null;

            #line 3 "Templates\UnityWorkerMenuGenerator.tt"

            var generatedHeader = CommonGeneratorUtils.GetGeneratedHeader();
            var workerTypeList  = GetWorkerTypes();


            #line default
            #line hidden

            #line 7 "Templates\UnityWorkerMenuGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(generatedHeader));

            #line default
            #line hidden

            #line 7 "Templates\UnityWorkerMenuGenerator.tt"
            this.Write(@"

using Improbable.Gdk.BuildSystem;
using Improbable.Gdk.BuildSystem.Configuration;
using Improbable.Gdk.Tools;
using UnityEditor;
using UnityEngine;

namespace Improbable
{
    internal static class BuildWorkerMenu
    {
        private const string LocalMenu = ""Build for local"";
        private const string CloudMenu = ""Build for cloud"";

        private static readonly string[] AllWorkers =
        {
");

            #line default
            #line hidden

            #line 24 "Templates\UnityWorkerMenuGenerator.tt"
            foreach (var workerType in workerTypeList)
            {
            #line default
            #line hidden

            #line 25 "Templates\UnityWorkerMenuGenerator.tt"
                this.Write("            \"");

            #line default
            #line hidden

            #line 25 "Templates\UnityWorkerMenuGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(workerType));

            #line default
            #line hidden

            #line 25 "Templates\UnityWorkerMenuGenerator.tt"
                this.Write("\",\r\n");

            #line default
            #line hidden

            #line 26 "Templates\UnityWorkerMenuGenerator.tt"
            }

            #line default
            #line hidden

            #line 27 "Templates\UnityWorkerMenuGenerator.tt"
            this.Write("        };\r\n\r\n");

            #line default
            #line hidden

            #line 29 "Templates\UnityWorkerMenuGenerator.tt"

            for (var i = 0; i < workerTypeList.Count; i++)
            {
                var workerType = workerTypeList[i];


            #line default
            #line hidden

            #line 33 "Templates\UnityWorkerMenuGenerator.tt"
                this.Write("        [MenuItem(EditorConfig.ParentMenu + \"/\" + LocalMenu + \"/");

            #line default
            #line hidden

            #line 33 "Templates\UnityWorkerMenuGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(workerType));

            #line default
            #line hidden

            #line 33 "Templates\UnityWorkerMenuGenerator.tt"
                this.Write("\", false, EditorConfig.MenuOffset + ");

            #line default
            #line hidden

            #line 33 "Templates\UnityWorkerMenuGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(i));

            #line default
            #line hidden

            #line 33 "Templates\UnityWorkerMenuGenerator.tt"
                this.Write(")]\r\n        public static void BuildLocal");

            #line default
            #line hidden

            #line 34 "Templates\UnityWorkerMenuGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(workerType));

            #line default
            #line hidden

            #line 34 "Templates\UnityWorkerMenuGenerator.tt"
                this.Write("()\r\n        {\r\n            MenuBuild(BuildEnvironment.Local, \"");

            #line default
            #line hidden

            #line 36 "Templates\UnityWorkerMenuGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(workerType));

            #line default
            #line hidden

            #line 36 "Templates\UnityWorkerMenuGenerator.tt"
                this.Write("\");\r\n        }\r\n\r\n        [MenuItem(EditorConfig.ParentMenu + \"/\" + CloudMenu + \"" +
                           "/");

            #line default
            #line hidden

            #line 39 "Templates\UnityWorkerMenuGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(workerType));

            #line default
            #line hidden

            #line 39 "Templates\UnityWorkerMenuGenerator.tt"
                this.Write("\", false, EditorConfig.MenuOffset + ");

            #line default
            #line hidden

            #line 39 "Templates\UnityWorkerMenuGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(i));

            #line default
            #line hidden

            #line 39 "Templates\UnityWorkerMenuGenerator.tt"
                this.Write(")]\r\n        public static void BuildCloud");

            #line default
            #line hidden

            #line 40 "Templates\UnityWorkerMenuGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(workerType));

            #line default
            #line hidden

            #line 40 "Templates\UnityWorkerMenuGenerator.tt"
                this.Write("()\r\n        {\r\n            MenuBuild(BuildEnvironment.Cloud, \"");

            #line default
            #line hidden

            #line 42 "Templates\UnityWorkerMenuGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(workerType));

            #line default
            #line hidden

            #line 42 "Templates\UnityWorkerMenuGenerator.tt"
                this.Write("\");\r\n        }\r\n\r\n");

            #line default
            #line hidden

            #line 45 "Templates\UnityWorkerMenuGenerator.tt"
            }

            #line default
            #line hidden

            #line 46 "Templates\UnityWorkerMenuGenerator.tt"
            this.Write("\r\n        [MenuItem(EditorConfig.ParentMenu + \"/\" + LocalMenu + \"/All workers\", f" +
                       "alse, EditorConfig.MenuOffset + ");

            #line default
            #line hidden

            #line 47 "Templates\UnityWorkerMenuGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(workerTypeList.Count));

            #line default
            #line hidden

            #line 47 "Templates\UnityWorkerMenuGenerator.tt"
            this.Write(")]\r\n        public static void BuildLocalAll()\r\n        {\r\n            MenuBuild(" +
                       "BuildEnvironment.Local, AllWorkers);\r\n        }\r\n\r\n        [MenuItem(EditorConfi" +
                       "g.ParentMenu + \"/\" + CloudMenu + \"/All workers\", false, EditorConfig.MenuOffset " +
                       "+ ");

            #line default
            #line hidden

            #line 53 "Templates\UnityWorkerMenuGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(workerTypeList.Count));

            #line default
            #line hidden

            #line 53 "Templates\UnityWorkerMenuGenerator.tt"
            this.Write(")]\r\n        public static void BuildCloudAll()\r\n        {\r\n            MenuBuild(" +
                       "BuildEnvironment.Cloud, AllWorkers);\r\n        }\r\n\r\n        [MenuItem(EditorConfi" +
                       "g.ParentMenu + \"/Clean all workers\", false, EditorConfig.MenuOffset + ");

            #line default
            #line hidden

            #line 59 "Templates\UnityWorkerMenuGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(workerTypeList.Count));

            #line default
            #line hidden

            #line 59 "Templates\UnityWorkerMenuGenerator.tt"
            this.Write(")]\r\n        public static void Clean()\r\n        {\r\n            WorkerBuilder.Clea" +
                       "n();\r\n            Debug.Log(\"Clean completed\");\r\n        }\r\n\r\n        private st" +
                       "atic bool CheckWorkersCanBuildForEnvironment(BuildEnvironment environment, strin" +
                       "g[] workerTypes)\r\n        {\r\n            var canInitiateBuild = true;\r\n         " +
                       "   var spatialOSBuildConfiguration = SpatialOSBuildConfiguration.GetInstance();\r" +
                       "\n\r\n            foreach (var workerType in workerTypes)\r\n            {\r\n         " +
                       "       var buildTargetsForWorker = WorkerBuilder.GetBuildTargetsForWorkerForEnvi" +
                       "ronment(workerType, environment);\r\n                var buildTargetsMissingBuildS" +
                       "upport = BuildSupportChecker.GetBuildTargetsMissingBuildSupport(buildTargetsForW" +
                       "orker);\r\n\r\n                if (buildTargetsMissingBuildSupport.Length > 0)\r\n    " +
                       "            {\r\n                    canInitiateBuild = false;\r\n\r\n                " +
                       "    Debug.LogError(BuildSupportChecker.ConstructMissingSupportMessage(workerType" +
                       ", environment, buildTargetsMissingBuildSupport),\r\n                        spatia" +
                       "lOSBuildConfiguration);\r\n                }\r\n            }\r\n\r\n            return " +
                       "canInitiateBuild;\r\n        }\r\n\r\n        private static void MenuBuild(BuildEnvir" +
                       "onment environment, params string[] workerTypes)\r\n        {\r\n            // Dela" +
                       "ying build by a frame to ensure the editor has re-rendered the UI to avoid odd g" +
                       "litches.\r\n            EditorApplication.delayCall += () =>\r\n            {\r\n     " +
                       "           if (!CheckWorkersCanBuildForEnvironment(environment, workerTypes))\r\n " +
                       "               {\r\n                    DisplayBuildFailureDialog();\r\n\r\n          " +
                       "          return;\r\n                }\r\n\r\n                try\r\n                {\r\n" +
                       "                    LocalLaunch.BuildConfig();\r\n\r\n                    foreach (v" +
                       "ar workerType in workerTypes)\r\n                    {\r\n                        Wo" +
                       "rkerBuilder.BuildWorkerForEnvironment(workerType, environment);\r\n               " +
                       "     }\r\n\r\n                    Debug.LogFormat(\"Completed build for {0} target\", " +
                       "environment);\r\n                }\r\n                catch (System.Exception)\r\n    " +
                       "            {\r\n                    DisplayBuildFailureDialog();\r\n\r\n             " +
                       "       throw;\r\n                }\r\n            };\r\n        }\r\n\r\n        private s" +
                       "tatic void DisplayBuildFailureDialog()\r\n        {\r\n            EditorUtility.Dis" +
                       "playDialog(\"Build Failed\",\r\n                \"Build failed. Please see the Unity " +
                       "Console Window for information.\",\r\n                \"OK\");\r\n        }\r\n\r\n        " +
                       "[MenuItem(EditorConfig.ParentMenu + \"/Check build support\", false, EditorConfig." +
                       "MenuOffset + ");

            #line default
            #line hidden

            #line 127 "Templates\UnityWorkerMenuGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(workerTypeList.Count + 1));

            #line default
            #line hidden

            #line 127 "Templates\UnityWorkerMenuGenerator.tt"
            this.Write(@")]
        private static void CheckBuildSupport()
        {
            bool checksPassed = CheckWorkersCanBuildForEnvironment(BuildEnvironment.Local, AllWorkers);

            if (!CheckWorkersCanBuildForEnvironment(BuildEnvironment.Cloud, AllWorkers))
            {
                checksPassed = false;
            }

            EditorUtility.DisplayDialog(""Build Support Check"",
                checksPassed
                    ? ""Build support check passed. Your Unity Editor installation has all necessary components.""
                    : ""Build support check failed. Please see the Unity Console Window for information."",
                ""OK"");

            Debug.Log(""Build support check completed."");
        }
    }
}
");

            #line default
            #line hidden
            return(this.GenerationEnvironment.ToString());
        }
        public virtual string TransformText()
        {
            this.GenerationEnvironment = null;

            #line 3 "Templates\UnityReferenceTypeProviderGenerator.tt"

            var fieldDetailsList   = GetFieldDetailsList();
            var eventDetailsList   = GetEventDetailsList();
            var componentDetails   = GetComponentDetails();
            var commandDetailsList = GetCommandDetailsList();
            var generatedHeader    = CommonGeneratorUtils.GetGeneratedHeader();
            var generator          = new UnityReferenceTypeProviderContent();
            var componentNamespace = qualifiedNamespace + "." + componentDetails.ComponentName;


            #line default
            #line hidden

            #line 12 "Templates\UnityReferenceTypeProviderGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(generatedHeader));

            #line default
            #line hidden

            #line 12 "Templates\UnityReferenceTypeProviderGenerator.tt"
            this.Write("\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing I" +
                       "mprobable.Gdk.Core;\r\n\r\nnamespace ");

            #line default
            #line hidden

            #line 19 "Templates\UnityReferenceTypeProviderGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(qualifiedNamespace));

            #line default
            #line hidden

            #line 19 "Templates\UnityReferenceTypeProviderGenerator.tt"
            this.Write("\r\n{\r\n    public partial class ");

            #line default
            #line hidden

            #line 21 "Templates\UnityReferenceTypeProviderGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(componentDetails.ComponentName));

            #line default
            #line hidden

            #line 21 "Templates\UnityReferenceTypeProviderGenerator.tt"
            this.Write("\r\n    {\r\n        internal static class ReferenceTypeProviders\r\n        {\r\n       " +
                       "     ");

            #line default
            #line hidden

            #line 25 "Templates\UnityReferenceTypeProviderGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(CommonGeneratorUtils.IndentEveryNewline(generator.Generate("Updates", $"List<{componentNamespace}.Update>"), 3)));

            #line default
            #line hidden

            #line 25 "Templates\UnityReferenceTypeProviderGenerator.tt"
            this.Write("\r\n\r\n");

            #line default
            #line hidden

            #line 27 "Templates\UnityReferenceTypeProviderGenerator.tt"
            foreach (var fieldDetails in fieldDetailsList)
            {
            #line default
            #line hidden

            #line 28 "Templates\UnityReferenceTypeProviderGenerator.tt"
                if (!fieldDetails.IsBlittable)
                {
            #line default
            #line hidden

            #line 29 "Templates\UnityReferenceTypeProviderGenerator.tt"
                    this.Write("            ");

            #line default
            #line hidden

            #line 29 "Templates\UnityReferenceTypeProviderGenerator.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(CommonGeneratorUtils.IndentEveryNewline(generator.Generate(fieldDetails.PascalCaseName, fieldDetails.Type), 3)));

            #line default
            #line hidden

            #line 29 "Templates\UnityReferenceTypeProviderGenerator.tt"
                    this.Write("\r\n\r\n");

            #line default
            #line hidden

            #line 31 "Templates\UnityReferenceTypeProviderGenerator.tt"
                }

            #line default
            #line hidden

            #line 32 "Templates\UnityReferenceTypeProviderGenerator.tt"
            }

            #line default
            #line hidden

            #line 33 "Templates\UnityReferenceTypeProviderGenerator.tt"
            foreach (var eventDetails in eventDetailsList)
            {
            #line default
            #line hidden

            #line 34 "Templates\UnityReferenceTypeProviderGenerator.tt"
                this.Write("            ");

            #line default
            #line hidden

            #line 34 "Templates\UnityReferenceTypeProviderGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(CommonGeneratorUtils.IndentEveryNewline(generator.Generate(eventDetails.EventName, $"List<{eventDetails.FqnPayloadType}>"), 3)));

            #line default
            #line hidden

            #line 34 "Templates\UnityReferenceTypeProviderGenerator.tt"
                this.Write("\r\n");

            #line default
            #line hidden

            #line 35 "Templates\UnityReferenceTypeProviderGenerator.tt"
            }

            #line default
            #line hidden

            #line 36 "Templates\UnityReferenceTypeProviderGenerator.tt"
            foreach (var commandDetails in commandDetailsList)
            {
            #line default
            #line hidden

            #line 37 "Templates\UnityReferenceTypeProviderGenerator.tt"
                this.Write("            ");

            #line default
            #line hidden

            #line 37 "Templates\UnityReferenceTypeProviderGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(CommonGeneratorUtils.IndentEveryNewline(generator.Generate($"{commandDetails.CommandName}Sender", $"List<{qualifiedNamespace}.{componentDetails.ComponentName}.{commandDetails.CommandName}.Request>"), 3)));

            #line default
            #line hidden

            #line 37 "Templates\UnityReferenceTypeProviderGenerator.tt"
                this.Write("\r\n            ");

            #line default
            #line hidden

            #line 38 "Templates\UnityReferenceTypeProviderGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(CommonGeneratorUtils.IndentEveryNewline(generator.Generate($"{commandDetails.CommandName}Requests", $"List<{qualifiedNamespace}.{componentDetails.ComponentName}.{commandDetails.CommandName}.ReceivedRequest>"), 3)));

            #line default
            #line hidden

            #line 38 "Templates\UnityReferenceTypeProviderGenerator.tt"
                this.Write("\r\n            ");

            #line default
            #line hidden

            #line 39 "Templates\UnityReferenceTypeProviderGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(CommonGeneratorUtils.IndentEveryNewline(generator.Generate($"{commandDetails.CommandName}Responder", $"List<{qualifiedNamespace}.{componentDetails.ComponentName}.{commandDetails.CommandName}.Response>"), 3)));

            #line default
            #line hidden

            #line 39 "Templates\UnityReferenceTypeProviderGenerator.tt"
                this.Write("\r\n            ");

            #line default
            #line hidden

            #line 40 "Templates\UnityReferenceTypeProviderGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(CommonGeneratorUtils.IndentEveryNewline(generator.Generate($"{commandDetails.CommandName}Responses", $"List<{qualifiedNamespace}.{componentDetails.ComponentName}.{commandDetails.CommandName}.ReceivedResponse>"), 3)));

            #line default
            #line hidden

            #line 40 "Templates\UnityReferenceTypeProviderGenerator.tt"
                this.Write("\r\n\r\n");

            #line default
            #line hidden

            #line 42 "Templates\UnityReferenceTypeProviderGenerator.tt"
            }

            #line default
            #line hidden

            #line 43 "Templates\UnityReferenceTypeProviderGenerator.tt"
            this.Write("        }\r\n    }\r\n}\r\n");

            #line default
            #line hidden
            return(this.GenerationEnvironment.ToString());
        }
        public virtual string TransformText()
        {
            this.GenerationEnvironment = null;

            #line 3 "Templates\UnityCommandPayloadGenerator.tt"

            var generatedHeader    = CommonGeneratorUtils.GetGeneratedHeader();
            var componentDetails   = GetComponentDetails();
            var commandDetailsList = GetCommandDetailsList();


            #line default
            #line hidden

            #line 8 "Templates\UnityCommandPayloadGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(generatedHeader));

            #line default
            #line hidden

            #line 8 "Templates\UnityCommandPayloadGenerator.tt"
            this.Write("\r\n\r\nusing System.Collections.Generic;\r\nusing Improbable.Worker;\r\nusing Improbable" +
                       ".Worker.Core;\r\n\r\nnamespace ");

            #line default
            #line hidden

            #line 14 "Templates\UnityCommandPayloadGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(qualifiedNamespace));

            #line default
            #line hidden

            #line 14 "Templates\UnityCommandPayloadGenerator.tt"
            this.Write("\r\n{\r\n    public partial class ");

            #line default
            #line hidden

            #line 16 "Templates\UnityCommandPayloadGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(componentDetails.ComponentName));

            #line default
            #line hidden

            #line 16 "Templates\UnityCommandPayloadGenerator.tt"
            this.Write("\r\n    {\r\n");

            #line default
            #line hidden

            #line 18 "Templates\UnityCommandPayloadGenerator.tt"
            foreach (var commandDetails in commandDetailsList)
            {
            #line default
            #line hidden

            #line 19 "Templates\UnityCommandPayloadGenerator.tt"
                this.Write("        public partial class ");

            #line default
            #line hidden

            #line 19 "Templates\UnityCommandPayloadGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(commandDetails.CommandName));

            #line default
            #line hidden

            #line 19 "Templates\UnityCommandPayloadGenerator.tt"
                this.Write(@"
        {
            /// <summary>
            ///     Please do not use the default constructor. Use CreateRequest instead.
            ///     Using CreateRequest will ensure a correctly formed structure.
            /// </summary>
            public struct Request
            {
                public EntityId TargetEntityId { get; internal set; }
                public ");

            #line default
            #line hidden

            #line 28 "Templates\UnityCommandPayloadGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(commandDetails.FqnRequestType));

            #line default
            #line hidden

            #line 28 "Templates\UnityCommandPayloadGenerator.tt"
                this.Write(@" Payload { get; internal set; }
                public uint? TimeoutMillis { get; internal set; }
                public bool AllowShortCircuiting { get; internal set; }
                public System.Object Context { get; internal set; }
                public long RequestId { get; internal set; }
            }

            public static Request CreateRequest(EntityId targetEntityId,
                ");

            #line default
            #line hidden

            #line 36 "Templates\UnityCommandPayloadGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(commandDetails.FqnRequestType));

            #line default
            #line hidden

            #line 36 "Templates\UnityCommandPayloadGenerator.tt"
                this.Write(@" request,
                uint? timeoutMillis = null,
                bool allowShortCircuiting = false,
                System.Object context = null)
            {
                return new Request
                {
                    TargetEntityId = targetEntityId,
                    Payload = request,
                    TimeoutMillis = timeoutMillis,
                    AllowShortCircuiting = allowShortCircuiting,
                    Context = context,
                    RequestId = global::Improbable.Gdk.Core.CommandRequestIdGenerator.GetNext(),
                };
            }

            public struct ReceivedRequest
            {
                public long RequestId { get; }
                public string CallerWorkerId { get; }
                public List<string> CallerAttributeSet { get; }
                public ");

            #line default
            #line hidden

            #line 57 "Templates\UnityCommandPayloadGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(commandDetails.FqnRequestType));

            #line default
            #line hidden

            #line 57 "Templates\UnityCommandPayloadGenerator.tt"
                this.Write(" Payload { get; }\r\n\r\n                public ReceivedRequest(long requestId,\r\n    " +
                           "                string callerWorkerId,\r\n                    List<string> callerA" +
                           "ttributeSet,\r\n                    ");

            #line default
            #line hidden

            #line 62 "Templates\UnityCommandPayloadGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(commandDetails.FqnRequestType));

            #line default
            #line hidden

            #line 62 "Templates\UnityCommandPayloadGenerator.tt"
                this.Write(@" request)
                {
                    RequestId = requestId;
                    CallerWorkerId = callerWorkerId;
                    CallerAttributeSet = callerAttributeSet;
                    Payload = request;
                }
            }

            /// <summary>
            ///     Please do not use the default constructor. Use CreateResponse or CreateFailure instead.
            ///     Using CreateResponse or CreateFailure will ensure a correctly formed structure.
            /// </summary>
            public struct Response
            {
                public long RequestId { get; internal set; }
                public ");

            #line default
            #line hidden

            #line 78 "Templates\UnityCommandPayloadGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(commandDetails.FqnResponseType));

            #line default
            #line hidden

            #line 78 "Templates\UnityCommandPayloadGenerator.tt"
                this.Write("? Payload { get; internal set; }\r\n                public string FailureMessage { " +
                           "get; internal set; }\r\n            }\r\n\r\n            public static Response Create" +
                           "Response(ReceivedRequest req, ");

            #line default
            #line hidden

            #line 82 "Templates\UnityCommandPayloadGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(commandDetails.FqnResponseType));

            #line default
            #line hidden

            #line 82 "Templates\UnityCommandPayloadGenerator.tt"
                this.Write(@" payload)
            {
                return new Response
                {
                    RequestId = req.RequestId,
                    Payload = payload,
                    FailureMessage = null,
                };
            }

            public static Response CreateResponseFailure(ReceivedRequest req, string failureMessage)
            {
                return new Response
                {
                    RequestId = req.RequestId,
                    Payload = null,
                    FailureMessage = failureMessage,
                };
            }

            public struct ReceivedResponse
            {
                public EntityId EntityId { get; }
                public string Message { get; }
                public StatusCode StatusCode { get; }
                public ");

            #line default
            #line hidden

            #line 107 "Templates\UnityCommandPayloadGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(commandDetails.FqnResponseType));

            #line default
            #line hidden

            #line 107 "Templates\UnityCommandPayloadGenerator.tt"
                this.Write("? ResponsePayload { get; }\r\n                public ");

            #line default
            #line hidden

            #line 108 "Templates\UnityCommandPayloadGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(commandDetails.FqnRequestType));

            #line default
            #line hidden

            #line 108 "Templates\UnityCommandPayloadGenerator.tt"
                this.Write(@" RequestPayload { get; }
                public System.Object Context { get; }
                public long RequestId { get; }

                public ReceivedResponse(EntityId entityId,
                    string message,
                    StatusCode statusCode,
                    ");

            #line default
            #line hidden

            #line 115 "Templates\UnityCommandPayloadGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(commandDetails.FqnResponseType));

            #line default
            #line hidden

            #line 115 "Templates\UnityCommandPayloadGenerator.tt"
                this.Write("? response,\r\n                    ");

            #line default
            #line hidden

            #line 116 "Templates\UnityCommandPayloadGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(commandDetails.FqnRequestType));

            #line default
            #line hidden

            #line 116 "Templates\UnityCommandPayloadGenerator.tt"
                this.Write(@" request,
                    System.Object context,
                    long requestId)
                {
                    EntityId = entityId;
                    Message = message;
                    StatusCode = statusCode;
                    ResponsePayload = response;
                    RequestPayload = request;
                    Context = context;
                    RequestId = requestId;
                }
            }
        }
");

            #line default
            #line hidden

            #line 130 "Templates\UnityCommandPayloadGenerator.tt"
            }

            #line default
            #line hidden

            #line 131 "Templates\UnityCommandPayloadGenerator.tt"
            this.Write("    }\r\n}\r\n");

            #line default
            #line hidden
            return(this.GenerationEnvironment.ToString());
        }
        public virtual string TransformText()
        {
            this.GenerationEnvironment = null;

            #line 1 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
            this.Write("\r\n");

            #line default
            #line hidden

            #line 4 "Templates\UnityGameObjectCommandHandlersGenerator.tt"

            var generatedHeader    = CommonGeneratorUtils.GetGeneratedHeader();
            var componentDetails   = GetComponentDetails();
            var commandDetailsList = GetCommandDetailsList();


            #line default
            #line hidden

            #line 9 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(generatedHeader));

            #line default
            #line hidden

            #line 9 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
            this.Write("\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing Improbable;\r\nusing Im" +
                       "probable.Gdk.Core;\r\nusing Improbable.Gdk.GameObjectRepresentation;\r\nusing Improb" +
                       "able.Worker;\r\nusing Unity.Entities;\r\nusing UnityEngine;\r\n\r\nnamespace ");

            #line default
            #line hidden

            #line 20 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(qualifiedNamespace));

            #line default
            #line hidden

            #line 20 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
            this.Write("\r\n{\r\n    public partial class ");

            #line default
            #line hidden

            #line 22 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(componentDetails.ComponentName));

            #line default
            #line hidden

            #line 22 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
            this.Write("\r\n    {\r\n");

            #line default
            #line hidden

            #line 24 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
            foreach (var commandDetails in commandDetailsList)
            {
                var rawRequestType      = commandDetails.CommandName + ".ReceivedRequest";
                var responsePayloadType = commandDetails.FqnResponseType;
                var delegateList        = commandDetails.CamelCaseCommandName + "Delegates";


            #line default
            #line hidden

            #line 29 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write("        public partial class ");

            #line default
            #line hidden

            #line 29 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(commandDetails.CommandName));

            #line default
            #line hidden

            #line 29 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write("\r\n        {\r\n            public struct RequestResponder\r\n            {\r\n         " +
                           "       private readonly EntityManager entityManager;\r\n                private re" +
                           "adonly Entity entity;\r\n                public ");

            #line default
            #line hidden

            #line 35 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(rawRequestType));

            #line default
            #line hidden

            #line 35 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(" Request { get; }\r\n\r\n                internal RequestResponder(EntityManager enti" +
                           "tyManager, Entity entity, ");

            #line default
            #line hidden

            #line 37 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(rawRequestType));

            #line default
            #line hidden

            #line 37 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(" request)\r\n                {\r\n                    this.entity = entity;\r\n        " +
                           "            this.entityManager = entityManager;\r\n                    Request = r" +
                           "equest;\r\n                }\r\n\r\n                public void SendResponse(");

            #line default
            #line hidden

            #line 44 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(responsePayloadType));

            #line default
            #line hidden

            #line 44 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(" payload)\r\n                {\r\n                    entityManager.GetComponentData<" +
                           "CommandResponders.");

            #line default
            #line hidden

            #line 46 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(commandDetails.CommandName));

            #line default
            #line hidden

            #line 46 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(">(entity).ResponsesToSend\r\n                        .Add(");

            #line default
            #line hidden

            #line 47 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(commandDetails.CommandName));

            #line default
            #line hidden

            #line 47 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(".CreateResponse(Request, payload));\r\n                }\r\n\r\n                public " +
                           "void SendResponseFailure(string message)\r\n                {\r\n                   " +
                           " entityManager.GetComponentData<CommandResponders.");

            #line default
            #line hidden

            #line 52 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(commandDetails.CommandName));

            #line default
            #line hidden

            #line 52 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(">(entity).ResponsesToSend\r\n                        .Add(");

            #line default
            #line hidden

            #line 53 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(commandDetails.CommandName));

            #line default
            #line hidden

            #line 53 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(".CreateResponseFailure(Request, message));\r\n                }\r\n            }\r\n   " +
                           "     }\r\n\r\n");

            #line default
            #line hidden

            #line 58 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
            }

            #line default
            #line hidden

            #line 59 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
            this.Write("        public partial class Requirable\r\n        {\r\n            [InjectableId(Inj" +
                       "ectableType.CommandRequestSender, ");

            #line default
            #line hidden

            #line 61 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(unityComponentDefinition.Id));

            #line default
            #line hidden

            #line 61 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
            this.Write(@")]
            internal class CommandRequestSenderCreator : IInjectableCreator
            {
                public IInjectable CreateInjectable(Entity entity, EntityManager entityManager, ILogDispatcher logDispatcher)
                {
                    return new CommandRequestSender(entity, entityManager, logDispatcher);
                }
            }

            [InjectableId(InjectableType.CommandRequestSender, ");

            #line default
            #line hidden

            #line 70 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(unityComponentDefinition.Id));

            #line default
            #line hidden

            #line 70 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
            this.Write(@")]
            [InjectionCondition(InjectionCondition.RequireNothing)]
            public class CommandRequestSender : RequirableBase
            {
                private Entity entity;
                private readonly EntityManager entityManager;
                private readonly ILogDispatcher logger;

                public CommandRequestSender(Entity entity, EntityManager entityManager, ILogDispatcher logger) : base(logger)
                {
                    this.entity = entity;
                    this.entityManager = entityManager;
                    this.logger = logger;
                }

");

            #line default
            #line hidden

            #line 85 "Templates\UnityGameObjectCommandHandlersGenerator.tt"

            foreach (var commandDetails in commandDetailsList)
            {
                var receivedResponseType = commandDetails.CommandName + ".ReceivedResponse";


            #line default
            #line hidden

            #line 89 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write("                public long Send");

            #line default
            #line hidden

            #line 89 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(commandDetails.CommandName));

            #line default
            #line hidden

            #line 89 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write("Request(EntityId entityId, ");

            #line default
            #line hidden

            #line 89 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(commandDetails.FqnRequestType));

            #line default
            #line hidden

            #line 89 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(@" payload,
                    uint? timeoutMillis = null, bool allowShortCircuiting = false, object context = null)
                {
                    if (!IsValid())
                    {
                        return -1;
                    }

                    var ecsCommandRequestSender = entityManager.GetComponentData<CommandSenders.");

            #line default
            #line hidden

            #line 97 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(commandDetails.CommandName));

            #line default
            #line hidden

            #line 97 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(">(entity);\r\n                    var request = ");

            #line default
            #line hidden

            #line 98 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(commandDetails.CommandName));

            #line default
            #line hidden

            #line 98 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(@".CreateRequest(entityId, payload, timeoutMillis, allowShortCircuiting, context);
                    ecsCommandRequestSender.RequestsToSend.Add(request);
                    return request.RequestId;
                }

                public long Send");

            #line default
            #line hidden

            #line 103 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(commandDetails.CommandName));

            #line default
            #line hidden

            #line 103 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write("Request(EntityId entityId, ");

            #line default
            #line hidden

            #line 103 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(commandDetails.FqnRequestType));

            #line default
            #line hidden

            #line 103 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(" payload,\r\n                    Action<");

            #line default
            #line hidden

            #line 104 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(receivedResponseType));

            #line default
            #line hidden

            #line 104 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(@"> callback, uint? timeoutMillis = null, bool allowShortCircuiting = false)
                {
                    if (!IsValid())
                    {
                        return -1;
                    }

                    var ecsCommandRequestSender = entityManager.GetComponentData<CommandSenders.");

            #line default
            #line hidden

            #line 111 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(commandDetails.CommandName));

            #line default
            #line hidden

            #line 111 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(">(entity);\r\n                    var request = ");

            #line default
            #line hidden

            #line 112 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(commandDetails.CommandName));

            #line default
            #line hidden

            #line 112 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(".CreateRequest(entityId, payload, timeoutMillis, allowShortCircuiting, callback);" +
                           "\r\n                    ecsCommandRequestSender.RequestsToSend.Add(request);\r\n    " +
                           "                return request.RequestId;\r\n                }\r\n\r\n");

            #line default
            #line hidden

            #line 117 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
            }

            #line default
            #line hidden

            #line 118 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
            this.Write("            }\r\n\r\n            [InjectableId(InjectableType.CommandRequestHandler, " +
                       "");

            #line default
            #line hidden

            #line 120 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(unityComponentDefinition.Id));

            #line default
            #line hidden

            #line 120 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
            this.Write(@")]
            internal class CommandRequestHandlerCreator : IInjectableCreator
            {
                public IInjectable CreateInjectable(Entity entity, EntityManager entityManager, ILogDispatcher logDispatcher)
                {
                    return new CommandRequestHandler(entity, entityManager, logDispatcher);
                }
            }

            [InjectableId(InjectableType.CommandRequestHandler, ");

            #line default
            #line hidden

            #line 129 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(unityComponentDefinition.Id));

            #line default
            #line hidden

            #line 129 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
            this.Write(@")]
            [InjectionCondition(InjectionCondition.RequireComponentWithAuthority)]
            public class CommandRequestHandler : RequirableBase
            {
                private Entity entity;
                private readonly EntityManager entityManager;
                private readonly ILogDispatcher logger;

                public CommandRequestHandler(Entity entity, EntityManager entityManager, ILogDispatcher logger) : base(logger)
                {
                    this.entity = entity;
                    this.entityManager = entityManager;
                    this.logger = logger;
                }
");

            #line default
            #line hidden

            #line 143 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
            foreach (var commandDetails in commandDetailsList)
            {
                var delegateList        = commandDetails.CamelCaseCommandName + "Delegates";
                var rawRequestType      = commandDetails.CommandName + ".ReceivedRequest";
                var rawResponseType     = commandDetails.CommandName + ".Response";
                var wrappedRequestType  = commandDetails.CommandName + ".RequestResponder";
                var responsePayloadType = commandDetails.FqnResponseType;


            #line default
            #line hidden

            #line 150 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write("                private readonly List<Action<");

            #line default
            #line hidden

            #line 150 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(wrappedRequestType));

            #line default
            #line hidden

            #line 150 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(">> ");

            #line default
            #line hidden

            #line 150 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(delegateList));

            #line default
            #line hidden

            #line 150 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(" = new List<Action<");

            #line default
            #line hidden

            #line 150 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(wrappedRequestType));

            #line default
            #line hidden

            #line 150 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(">>();\r\n                public event Action<");

            #line default
            #line hidden

            #line 151 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(wrappedRequestType));

            #line default
            #line hidden

            #line 151 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write("> On");

            #line default
            #line hidden

            #line 151 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(commandDetails.CommandName));

            #line default
            #line hidden

            #line 151 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write("Request\r\n                {\r\n                    add\r\n                    {\r\n     " +
                           "                   if (!IsValid())\r\n                        {\r\n                 " +
                           "           return;\r\n                        }\r\n\r\n                        ");

            #line default
            #line hidden

            #line 160 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(delegateList));

            #line default
            #line hidden

            #line 160 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(".Add(value);\r\n                    }\r\n                    remove\r\n                " +
                           "    {\r\n                        if (!IsValid())\r\n                        {\r\n     " +
                           "                       return;\r\n                        }\r\n\r\n                   " +
                           "     ");

            #line default
            #line hidden

            #line 169 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(delegateList));

            #line default
            #line hidden

            #line 169 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(".Remove(value);\r\n                    }\r\n                }\r\n\r\n                inte" +
                           "rnal void On");

            #line default
            #line hidden

            #line 173 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(commandDetails.CommandName));

            #line default
            #line hidden

            #line 173 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write("RequestInternal(");

            #line default
            #line hidden

            #line 173 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(rawRequestType));

            #line default
            #line hidden

            #line 173 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(" request)\r\n                {\r\n                    GameObjectDelegates.DispatchWit" +
                           "hErrorHandling(new ");

            #line default
            #line hidden

            #line 175 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(wrappedRequestType));

            #line default
            #line hidden

            #line 175 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write("(entityManager, entity, request), ");

            #line default
            #line hidden

            #line 175 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(delegateList));

            #line default
            #line hidden

            #line 175 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(", logger);\r\n                }\r\n");

            #line default
            #line hidden

            #line 177 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
            }

            #line default
            #line hidden

            #line 178 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
            this.Write("            }\r\n\r\n            [InjectableId(InjectableType.CommandResponseHandler," +
                       " ");

            #line default
            #line hidden

            #line 180 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(unityComponentDefinition.Id));

            #line default
            #line hidden

            #line 180 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
            this.Write(@")]
            internal class CommandResponseHandlerCreator : IInjectableCreator
            {
                public IInjectable CreateInjectable(Entity entity, EntityManager entityManager, ILogDispatcher logDispatcher)
                {
                    return new CommandResponseHandler(entity, entityManager, logDispatcher);
                }
            }

            [InjectableId(InjectableType.CommandResponseHandler, ");

            #line default
            #line hidden

            #line 189 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(unityComponentDefinition.Id));

            #line default
            #line hidden

            #line 189 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
            this.Write(@")]
            [InjectionCondition(InjectionCondition.RequireNothing)]
            public class CommandResponseHandler : RequirableBase
            {
                private Entity entity;
                private readonly EntityManager entityManager;
                private readonly ILogDispatcher logger;

                public CommandResponseHandler(Entity entity, EntityManager entityManager, ILogDispatcher logger) : base(logger)
                {
                    this.entity = entity;
                    this.entityManager = entityManager;
                    this.logger = logger;
                }
");

            #line default
            #line hidden

            #line 203 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
            foreach (var commandDetails in commandDetailsList)
            {
                var commandResponseType = commandDetails.CommandName + ".ReceivedResponse";
                var delegateList        = commandDetails.CamelCaseCommandName + "Delegates";


            #line default
            #line hidden

            #line 207 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write("\r\n                private readonly List<Action<");

            #line default
            #line hidden

            #line 208 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(commandResponseType));

            #line default
            #line hidden

            #line 208 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(">> ");

            #line default
            #line hidden

            #line 208 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(delegateList));

            #line default
            #line hidden

            #line 208 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(" = new List<Action<");

            #line default
            #line hidden

            #line 208 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(commandResponseType));

            #line default
            #line hidden

            #line 208 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(">>();\r\n                public event Action<");

            #line default
            #line hidden

            #line 209 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(commandResponseType));

            #line default
            #line hidden

            #line 209 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write("> On");

            #line default
            #line hidden

            #line 209 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(commandDetails.CommandName));

            #line default
            #line hidden

            #line 209 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write("Response\r\n                {\r\n                    add\r\n                    {\r\n    " +
                           "                    if (!IsValid())\r\n                        {\r\n                " +
                           "            return;\r\n                        }\r\n\r\n                        ");

            #line default
            #line hidden

            #line 218 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(delegateList));

            #line default
            #line hidden

            #line 218 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(".Add(value);\r\n                    }\r\n                    remove\r\n                " +
                           "    {\r\n                        if (!IsValid())\r\n                        {\r\n     " +
                           "                       return;\r\n                        }\r\n\r\n                   " +
                           "     ");

            #line default
            #line hidden

            #line 227 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(delegateList));

            #line default
            #line hidden

            #line 227 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(".Remove(value);\r\n                    }\r\n                }\r\n\r\n                inte" +
                           "rnal void On");

            #line default
            #line hidden

            #line 231 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(commandDetails.CommandName));

            #line default
            #line hidden

            #line 231 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write("ResponseInternal(");

            #line default
            #line hidden

            #line 231 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(commandResponseType));

            #line default
            #line hidden

            #line 231 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(" response)\r\n                {\r\n                    GameObjectDelegates.DispatchWi" +
                           "thErrorHandling(response, ");

            #line default
            #line hidden

            #line 233 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(delegateList));

            #line default
            #line hidden

            #line 233 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
                this.Write(", logger);\r\n                }\r\n");

            #line default
            #line hidden

            #line 235 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
            }

            #line default
            #line hidden

            #line 236 "Templates\UnityGameObjectCommandHandlersGenerator.tt"
            this.Write("            }\r\n        }\r\n    }\r\n}\r\n");

            #line default
            #line hidden
            return(this.GenerationEnvironment.ToString());
        }