From 85ac63425c705fd08f99deab72ff989701a04c01 Mon Sep 17 00:00:00 2001 From: ThomasCharester Date: Tue, 20 Jan 2026 20:38:20 +0300 Subject: [PATCH] CodeWriter and pain --- .idea/.idea.Infra/.idea/.gitignore | 13 + .idea/.idea.Infra/.idea/indexLayout.xml | 8 + .idea/.idea.Infra/.idea/vcs.xml | 6 + .../Infrastructure/App/AppStateMachine.cs | 2 +- .../SceneInstallers/MainMenuSceneInstaller.cs | 1 - .../App/States/BootstrapState.cs | 5 +- .../App/States/GameplayState.cs | 2 - .../App/States/MainMenuState.cs | 2 +- .../Infrastructure/Camera/CameraSettings.cs | 1 - .../Camera/CameraStateMachine.cs | 3 +- .../Camera/CameraStates/NoneCameraState.cs | 3 +- .../Infrastructure/Configs}/IConfigLocator.cs | 0 .../Configs}/IConfigLocator.cs.meta | 0 .../Infrastructure/Generators/Attributes.cs | 79 ++-- .../Generators/ConfigGenerator.cs | 109 ----- .../Generators/ConfigGenerator.cs.meta | 3 - .../Generators/SceneLoaderGenerator.cs | 148 ------- .../Generators/SceneLoaderGenerator.cs.meta | 3 - .../Generators/StateMachineGenerator.cs | 131 ------ .../Generators/StateMachineGenerator.cs.meta | 3 - .../Code/Infrastructure/Input/InputService.cs | 1 - .../Infrastructure/SceneLoader/SceneId.cs | 1 - .../Infrastructure/SceneLoader/SceneLoader.cs | 3 +- .../Infrastructure/StateMachine/BaseState.cs | 2 + Assets/SourceGeneration/InfraGens.dll | Bin 0 -> 31744 bytes Assets/SourceGeneration/InfraGens.dll.meta | 59 +++ .../InfraGens/InfraGens.Sample/Examples.cs | 52 +-- .../InfraGens.Sample/SampleEntity.cs | 58 ++- .../bin/Debug/net8.0/InfraGens.Sample.dll | Bin 7168 -> 4096 bytes .../net8.0/InfraGens.Sample.AssemblyInfo.cs | 2 +- .../InfraGens.Sample.AssemblyInfoInputs.cache | 2 +- ...fraGens.Sample.csproj.FileListAbsolute.txt | 11 + .../obj/Debug/net8.0/InfraGens.Sample.dll | Bin 7168 -> 4096 bytes .../obj/Debug/net8.0/ref/InfraGens.Sample.dll | Bin 6656 -> 4608 bytes .../Debug/net8.0/refint/InfraGens.Sample.dll | Bin 6656 -> 4608 bytes .../SampleIncrementalSourceGeneratorTests.cs | 134 +++--- .../SampleSourceGeneratorTests.cs | 96 ++--- .../bin/Debug/net8.0/InfraGens.Tests.dll | Bin 10752 -> 5632 bytes .../bin/Debug/net8.0/InfraGens.dll | Bin 12288 -> 31744 bytes .../net8.0/InfraGens.Tests.AssemblyInfo.cs | 2 +- .../InfraGens.Tests.AssemblyInfoInputs.cache | 2 +- ...aGens.Tests.csproj.AssemblyReference.cache | Bin 19718 -> 20113 bytes ...aGens.Tests.csproj.CoreCompileInputs.cache | 2 +- ...nfraGens.Tests.csproj.FileListAbsolute.txt | 211 +++++++++ .../obj/Debug/net8.0/InfraGens.Tests.dll | Bin 10752 -> 5632 bytes .../InfraGens.Tests.genruntimeconfig.cache | 2 +- .../obj/Debug/net8.0/ref/InfraGens.Tests.dll | Bin 6656 -> 6144 bytes .../Debug/net8.0/refint/InfraGens.Tests.dll | Bin 6656 -> 6144 bytes .../InfraGens/InfraGens/Attributes.cs | 51 +++ .../InfraGens/IngrementalConfigGenerator.cs | 399 +++++++++++++++++ .../SampleIncrementalSourceGenerator.cs | 406 +++++++++++++----- .../InfraGens/SampleSourceGenerator.cs | 149 +++++-- .../Debug/netstandard2.0/InfraGens.deps.json | 302 +------------ .../bin/Debug/netstandard2.0/InfraGens.dll | Bin 12288 -> 31744 bytes .../netstandard2.0/InfraGens.AssemblyInfo.cs | 2 +- .../InfraGens.AssemblyInfoInputs.cache | 2 +- .../InfraGens.csproj.CoreCompileInputs.cache | 2 +- .../InfraGens.csproj.FileListAbsolute.txt | 10 + .../obj/Debug/netstandard2.0/InfraGens.dll | Bin 12288 -> 31744 bytes .../CameraSettingsConfig.Generated.cs | 40 -- .../CameraSettingsConfig.Generated.cs.meta | 2 - ...structure.App.AppStateMachine.Generated.cs | 49 --- ...ture.App.AppStateMachine.Generated.cs.meta | 2 - ...ure.App.States.BootstrapState.Generated.cs | 23 - ...pp.States.BootstrapState.Generated.cs.meta | 2 - ...ture.App.States.GameplayState.Generated.cs | 23 - ...App.States.GameplayState.Generated.cs.meta | 2 - ...ture.App.States.MainMenuState.Generated.cs | 23 - ...App.States.MainMenuState.Generated.cs.meta | 2 - ...ure.Camera.CameraStateMachine.Generated.cs | 42 -- ...amera.CameraStateMachine.Generated.cs.meta | 2 - ...States.FirstPersonCameraState.Generated.cs | 13 - ...s.FirstPersonCameraState.Generated.cs.meta | 2 - ....CameraStates.NoneCameraState.Generated.cs | 13 - ...raStates.NoneCameraState.Generated.cs.meta | 2 - .../ConfigLocator.Generated.cs | 32 -- .../ConfigLocator.Generated.cs.meta | 2 - .../DebugClassConfig.Generated.cs | 25 -- .../DebugClassConfig.Generated.cs.meta | 2 - .../GameCameraConfig.Generated.cs | 16 - .../GameCameraConfig.Generated.cs.meta | 2 - .../InputServiceConfig.Generated.cs | 16 - .../InputServiceConfig.Generated.cs.meta | 2 - .../SceneInfoConfig.Generated.cs | 18 - .../SceneInfoConfig.Generated.cs.meta | 2 - .../SceneLoader.Generated.cs | 32 -- .../SceneLoader.Generated.cs.meta | 2 - .../SystemConfigsReferences.Generated.cs | 20 - .../SystemConfigsReferences.Generated.cs.meta | 2 - 89 files changed, 1439 insertions(+), 1461 deletions(-) create mode 100644 .idea/.idea.Infra/.idea/.gitignore create mode 100644 .idea/.idea.Infra/.idea/indexLayout.xml create mode 100644 .idea/.idea.Infra/.idea/vcs.xml rename Assets/{UnityCodeGen.Generated => Code/Infrastructure/Configs}/IConfigLocator.cs (100%) rename Assets/{UnityCodeGen.Generated => Code/Infrastructure/Configs}/IConfigLocator.cs.meta (100%) delete mode 100644 Assets/Code/Infrastructure/Generators/ConfigGenerator.cs delete mode 100644 Assets/Code/Infrastructure/Generators/ConfigGenerator.cs.meta delete mode 100644 Assets/Code/Infrastructure/Generators/SceneLoaderGenerator.cs delete mode 100644 Assets/Code/Infrastructure/Generators/SceneLoaderGenerator.cs.meta delete mode 100644 Assets/Code/Infrastructure/Generators/StateMachineGenerator.cs delete mode 100644 Assets/Code/Infrastructure/Generators/StateMachineGenerator.cs.meta create mode 100644 Assets/SourceGeneration/InfraGens.dll create mode 100644 Assets/SourceGeneration/InfraGens.dll.meta create mode 100644 Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens/Attributes.cs create mode 100644 Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens/IngrementalConfigGenerator.cs delete mode 100644 Assets/UnityCodeGen.Generated/CameraSettingsConfig.Generated.cs delete mode 100644 Assets/UnityCodeGen.Generated/CameraSettingsConfig.Generated.cs.meta delete mode 100644 Assets/UnityCodeGen.Generated/Code.Infrastructure.App.AppStateMachine.Generated.cs delete mode 100644 Assets/UnityCodeGen.Generated/Code.Infrastructure.App.AppStateMachine.Generated.cs.meta delete mode 100644 Assets/UnityCodeGen.Generated/Code.Infrastructure.App.States.BootstrapState.Generated.cs delete mode 100644 Assets/UnityCodeGen.Generated/Code.Infrastructure.App.States.BootstrapState.Generated.cs.meta delete mode 100644 Assets/UnityCodeGen.Generated/Code.Infrastructure.App.States.GameplayState.Generated.cs delete mode 100644 Assets/UnityCodeGen.Generated/Code.Infrastructure.App.States.GameplayState.Generated.cs.meta delete mode 100644 Assets/UnityCodeGen.Generated/Code.Infrastructure.App.States.MainMenuState.Generated.cs delete mode 100644 Assets/UnityCodeGen.Generated/Code.Infrastructure.App.States.MainMenuState.Generated.cs.meta delete mode 100644 Assets/UnityCodeGen.Generated/Code.Infrastructure.Camera.CameraStateMachine.Generated.cs delete mode 100644 Assets/UnityCodeGen.Generated/Code.Infrastructure.Camera.CameraStateMachine.Generated.cs.meta delete mode 100644 Assets/UnityCodeGen.Generated/Code.Infrastructure.Camera.CameraStates.FirstPersonCameraState.Generated.cs delete mode 100644 Assets/UnityCodeGen.Generated/Code.Infrastructure.Camera.CameraStates.FirstPersonCameraState.Generated.cs.meta delete mode 100644 Assets/UnityCodeGen.Generated/Code.Infrastructure.Camera.CameraStates.NoneCameraState.Generated.cs delete mode 100644 Assets/UnityCodeGen.Generated/Code.Infrastructure.Camera.CameraStates.NoneCameraState.Generated.cs.meta delete mode 100644 Assets/UnityCodeGen.Generated/ConfigLocator.Generated.cs delete mode 100644 Assets/UnityCodeGen.Generated/ConfigLocator.Generated.cs.meta delete mode 100644 Assets/UnityCodeGen.Generated/DebugClassConfig.Generated.cs delete mode 100644 Assets/UnityCodeGen.Generated/DebugClassConfig.Generated.cs.meta delete mode 100644 Assets/UnityCodeGen.Generated/GameCameraConfig.Generated.cs delete mode 100644 Assets/UnityCodeGen.Generated/GameCameraConfig.Generated.cs.meta delete mode 100644 Assets/UnityCodeGen.Generated/InputServiceConfig.Generated.cs delete mode 100644 Assets/UnityCodeGen.Generated/InputServiceConfig.Generated.cs.meta delete mode 100644 Assets/UnityCodeGen.Generated/SceneInfoConfig.Generated.cs delete mode 100644 Assets/UnityCodeGen.Generated/SceneInfoConfig.Generated.cs.meta delete mode 100644 Assets/UnityCodeGen.Generated/SceneLoader.Generated.cs delete mode 100644 Assets/UnityCodeGen.Generated/SceneLoader.Generated.cs.meta delete mode 100644 Assets/UnityCodeGen.Generated/SystemConfigsReferences.Generated.cs delete mode 100644 Assets/UnityCodeGen.Generated/SystemConfigsReferences.Generated.cs.meta diff --git a/.idea/.idea.Infra/.idea/.gitignore b/.idea/.idea.Infra/.idea/.gitignore new file mode 100644 index 0000000..27831df --- /dev/null +++ b/.idea/.idea.Infra/.idea/.gitignore @@ -0,0 +1,13 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Rider ignored files +/contentModel.xml +/projectSettingsUpdater.xml +/.idea.Infra.iml +/modules.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/.idea.Infra/.idea/indexLayout.xml b/.idea/.idea.Infra/.idea/indexLayout.xml new file mode 100644 index 0000000..7b08163 --- /dev/null +++ b/.idea/.idea.Infra/.idea/indexLayout.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/.idea.Infra/.idea/vcs.xml b/.idea/.idea.Infra/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/.idea.Infra/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Assets/Code/Infrastructure/App/AppStateMachine.cs b/Assets/Code/Infrastructure/App/AppStateMachine.cs index 4b6c898..0c14887 100644 --- a/Assets/Code/Infrastructure/App/AppStateMachine.cs +++ b/Assets/Code/Infrastructure/App/AppStateMachine.cs @@ -16,7 +16,7 @@ namespace Code.Infrastructure.App [Inject] public CameraStateMachine Camera { get; set; } } - [Generators.StateMachine(typeof(AppStateMachineContext),typeof(AppStates))] + [global::StateMachine(typeof(AppStateMachineContext),typeof(AppStates))] public partial class AppStateMachine { diff --git a/Assets/Code/Infrastructure/App/SceneInstallers/MainMenuSceneInstaller.cs b/Assets/Code/Infrastructure/App/SceneInstallers/MainMenuSceneInstaller.cs index 3dbeb17..080dca3 100644 --- a/Assets/Code/Infrastructure/App/SceneInstallers/MainMenuSceneInstaller.cs +++ b/Assets/Code/Infrastructure/App/SceneInstallers/MainMenuSceneInstaller.cs @@ -1,4 +1,3 @@ -using Code.Example; using Reflex.Core; using UnityEngine; diff --git a/Assets/Code/Infrastructure/App/States/BootstrapState.cs b/Assets/Code/Infrastructure/App/States/BootstrapState.cs index 4a1ca4f..a7239dc 100644 --- a/Assets/Code/Infrastructure/App/States/BootstrapState.cs +++ b/Assets/Code/Infrastructure/App/States/BootstrapState.cs @@ -1,7 +1,4 @@ -using Code.Infrastructure.Camera; -using Code.Infrastructure.Generators; -using Code.Infrastructure.SceneLoader; -using Cysharp.Threading.Tasks; +using Code.Infrastructure.SceneLoader; using UnityEngine; using UnityEngine.SceneManagement; diff --git a/Assets/Code/Infrastructure/App/States/GameplayState.cs b/Assets/Code/Infrastructure/App/States/GameplayState.cs index 1ad5377..8486013 100644 --- a/Assets/Code/Infrastructure/App/States/GameplayState.cs +++ b/Assets/Code/Infrastructure/App/States/GameplayState.cs @@ -1,5 +1,3 @@ -using Code.Infrastructure.Camera; -using Code.Infrastructure.Generators; using Code.Infrastructure.SceneLoader; using UnityEngine; diff --git a/Assets/Code/Infrastructure/App/States/MainMenuState.cs b/Assets/Code/Infrastructure/App/States/MainMenuState.cs index e2a2079..985ef8d 100644 --- a/Assets/Code/Infrastructure/App/States/MainMenuState.cs +++ b/Assets/Code/Infrastructure/App/States/MainMenuState.cs @@ -1,4 +1,4 @@ -using Code.Infrastructure.Generators; + namespace Code.Infrastructure.App.States { diff --git a/Assets/Code/Infrastructure/Camera/CameraSettings.cs b/Assets/Code/Infrastructure/Camera/CameraSettings.cs index 0f2e692..2afd6b4 100644 --- a/Assets/Code/Infrastructure/Camera/CameraSettings.cs +++ b/Assets/Code/Infrastructure/Camera/CameraSettings.cs @@ -1,4 +1,3 @@ -using Code.Infrastructure.Generators; using UnityEngine; namespace Code.Infrastructure.Camera diff --git a/Assets/Code/Infrastructure/Camera/CameraStateMachine.cs b/Assets/Code/Infrastructure/Camera/CameraStateMachine.cs index e0d83b0..2cd1690 100644 --- a/Assets/Code/Infrastructure/Camera/CameraStateMachine.cs +++ b/Assets/Code/Infrastructure/Camera/CameraStateMachine.cs @@ -1,6 +1,5 @@ using System.Collections.Generic; using Code.Infrastructure.EventBus; -using Code.Infrastructure.Generators; using Code.Infrastructure.Input; using Reflex.Attributes; using UnityEngine.AddressableAssets; @@ -46,7 +45,7 @@ namespace Code.Infrastructure.Camera [Inject] public EventBus.EventBus EventBus; } - [Generators.StateMachine(typeof(CameraStateMachineContext), typeof(CameraMode))] + [global::StateMachine(typeof(CameraStateMachineContext), typeof(CameraMode))] public partial class CameraStateMachine { public UnityEngine.Camera Camera => StateMachineContext.cameraLoadedData.Camera; diff --git a/Assets/Code/Infrastructure/Camera/CameraStates/NoneCameraState.cs b/Assets/Code/Infrastructure/Camera/CameraStates/NoneCameraState.cs index 17851c8..6c378d5 100644 --- a/Assets/Code/Infrastructure/Camera/CameraStates/NoneCameraState.cs +++ b/Assets/Code/Infrastructure/Camera/CameraStates/NoneCameraState.cs @@ -1,9 +1,8 @@ -using Code.Infrastructure.Generators; using UnityEngine; namespace Code.Infrastructure.Camera.CameraStates { - [State(typeof(CameraMode),typeof(CameraStateMachineContext), true)] + // [State(typeof(CameraMode),typeof(CameraStateMachineContext), true)] public partial class NoneCameraState : BaseCameraState { public NoneCameraState(CameraStateMachineContext context, EventBus.EventBus eventBus) : base(context, eventBus) diff --git a/Assets/UnityCodeGen.Generated/IConfigLocator.cs b/Assets/Code/Infrastructure/Configs/IConfigLocator.cs similarity index 100% rename from Assets/UnityCodeGen.Generated/IConfigLocator.cs rename to Assets/Code/Infrastructure/Configs/IConfigLocator.cs diff --git a/Assets/UnityCodeGen.Generated/IConfigLocator.cs.meta b/Assets/Code/Infrastructure/Configs/IConfigLocator.cs.meta similarity index 100% rename from Assets/UnityCodeGen.Generated/IConfigLocator.cs.meta rename to Assets/Code/Infrastructure/Configs/IConfigLocator.cs.meta diff --git a/Assets/Code/Infrastructure/Generators/Attributes.cs b/Assets/Code/Infrastructure/Generators/Attributes.cs index 27d4574..6adba60 100644 --- a/Assets/Code/Infrastructure/Generators/Attributes.cs +++ b/Assets/Code/Infrastructure/Generators/Attributes.cs @@ -1,49 +1,50 @@ using System; -namespace Code.Infrastructure.Generators +public class SceneIdEnum : Attribute +{ +} + +public class ToConfig : Attribute +{ +} + +public class Config : Attribute { - public class StateMachine : Attribute + public bool Multiple; + public string MenuName; + public Config(string menuName, bool multiple = false) { - public Type StateMachineContextType; - public Type StateMachineEnumType; + Multiple = multiple; + MenuName = menuName; + } +} - public StateMachine(Type stateMachineContextType, Type stateMachineEnumType) - { - StateMachineContextType = stateMachineContextType; - StateMachineEnumType = stateMachineEnumType; - } - } - - public class State : Attribute - { - public Type StateEnum; - public Type StateMachineContext; - public bool SilentBitch; // Поэтому нейминг переменных очень важен +public class StateRaisingEvent : Attribute +{ +} - public State(Type stateEnum,Type stateMachineContext, bool silentBitch = false) - { - StateEnum = stateEnum; - StateMachineContext = stateMachineContext; - SilentBitch = silentBitch; - } - } - public class StateRaisingEvent : Attribute - { - } - public class Config : Attribute +public class State : Attribute +{ + public Type StateEnum; + public Type StateMachineContext; + public bool SilentBitch; // Поэтому нейминг переменных очень важен + + public State(Type stateEnum,Type stateMachineContext, bool silentBitch = false) { - public bool Multiple; - public string MenuName; - public Config(string menuName, bool multiple = false) - { - Multiple = multiple; - MenuName = menuName; - } + StateEnum = stateEnum; + StateMachineContext = stateMachineContext; + SilentBitch = silentBitch; } - public class ToConfig : Attribute - { - } - public class SceneIdEnum : Attribute - { +} + +public class StateMachine : Attribute +{ + public Type StateMachineContextType; + public Type StateMachineEnumType; + + public StateMachine(Type stateMachineContextType, Type stateMachineEnumType) + { + StateMachineContextType = stateMachineContextType; + StateMachineEnumType = stateMachineEnumType; } } \ No newline at end of file diff --git a/Assets/Code/Infrastructure/Generators/ConfigGenerator.cs b/Assets/Code/Infrastructure/Generators/ConfigGenerator.cs deleted file mode 100644 index ef22d79..0000000 --- a/Assets/Code/Infrastructure/Generators/ConfigGenerator.cs +++ /dev/null @@ -1,109 +0,0 @@ -using System.Linq; -using Unity.VisualScripting; -using UnityCodeGen; -using UnityEditor; - -namespace Code.Infrastructure.Generators -{ - [Generator] - public class ConfigGenerator : ICodeGenerator - { - public void Execute(GeneratorContext context) - { - var configs = TypeCache.GetTypesWithAttribute(); - - var configsCode = ""; - var configAddCode = ""; - var configReferencesCode = ""; - var configReferencesUsingsCode = ""; - var configOfConfigsCode = ""; - - foreach (var cfg in configs) - { - var configFields = ""; - var configUsings = ""; - - var mem = cfg.GetFields(); - var members = mem.Where(m => m.HasAttribute()).ToList(); - foreach (var m in members) - { - configUsings += $"using {m.FieldType.Namespace};\n"; - configFields += $"public {m.FieldType.FullName} {m.Name};\n"; - } - - var attribute = cfg.GetAttribute(); - - configUsings += @" -using UnityEngine; -using UnityEngine.AddressableAssets; -"; - var configCode = $@" -#pragma warning disable CS0105 -{configUsings} -namespace {cfg.Namespace}{{ -#pragma warning restore CS0105 -[CreateAssetMenu(fileName = ""{cfg.Name}Config"", menuName = ""{attribute.MenuName}"")] -public class {cfg.Name}Config : ScriptableObject -{{ - {configFields} -}} -}} -"; - context.AddCode($"{cfg.Name}Config.Generated.cs", configCode); - - configReferencesUsingsCode += $"using {cfg.Namespace};\n"; - - if (attribute.Multiple) - { - configReferencesCode += $"public string {cfg.Name};\n"; - configAddCode += $@" - _multipleConfigReferences.Add(typeof({cfg.FullName}Config), systemConfigsReferences.{cfg.Name}); -"; - } - else - { - configReferencesCode += $"public AssetReference {cfg.Name};\n"; - configAddCode += $@" - _singleConfigReferences.Add(typeof({cfg.FullName}Config), systemConfigsReferences.{cfg.Name}); -"; - } - } - configsCode += $@" -#pragma warning disable CS0105 - {configReferencesUsingsCode} - using UnityEngine; -#pragma warning restore CS0105 - - namespace Code.Infrastructure.Configs - {{ - - public partial class ConfigLocator - {{ - partial void LoadConfigs() - {{ - SystemConfigsReferences systemConfigsReferences = Resources.Load(""SystemConfigsReferences""); - {configAddCode} - //_singleConfigReferences.Add(typeof(ScenesAssetReferences), systemConfigsReferences.scenesAssetReferences); - }} - }} - }} - "; - context.AddCode($"ConfigLocator.Generated.cs", configsCode); - - configOfConfigsCode += $@" -#pragma warning disable CS0105 - {configReferencesUsingsCode} - using UnityEngine.AddressableAssets; -#pragma warning restore CS0105 - - namespace Code.Infrastructure.Configs{{ - public partial class SystemConfigsReferences - {{ - {configReferencesCode} - }} -}} -"; - context.AddCode($"SystemConfigsReferences.Generated.cs", configOfConfigsCode); - } - } -} \ No newline at end of file diff --git a/Assets/Code/Infrastructure/Generators/ConfigGenerator.cs.meta b/Assets/Code/Infrastructure/Generators/ConfigGenerator.cs.meta deleted file mode 100644 index fa3eab1..0000000 --- a/Assets/Code/Infrastructure/Generators/ConfigGenerator.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 026403be8eae4546adcb407308031c1d -timeCreated: 1765660396 \ No newline at end of file diff --git a/Assets/Code/Infrastructure/Generators/SceneLoaderGenerator.cs b/Assets/Code/Infrastructure/Generators/SceneLoaderGenerator.cs deleted file mode 100644 index 3b4cd1e..0000000 --- a/Assets/Code/Infrastructure/Generators/SceneLoaderGenerator.cs +++ /dev/null @@ -1,148 +0,0 @@ -using System.Linq; -using Unity.VisualScripting; -using UnityCodeGen; -using UnityEditor; -using UnityEngine; - -namespace Code.Infrastructure.Generators -{ - [Generator] - public class SceneLoaderGenerator : ICodeGenerator - { - public void Execute(GeneratorContext context) - { - var Enum = TypeCache.GetTypesWithAttribute(); - - var loaderCode = ""; - var dictionaryCode = ""; - var interfacesCode = ""; - var interfacesUsingsCode = $@" -using Code.Infrastructure.EventBus; -"; - - foreach (var en in Enum) - { - if (!en.IsEnum) return; - - var members = en.GetFields(); - foreach (var member in members) - { - if(member.FieldType.FullName != en.FullName) continue; - interfacesCode += $@" - public interface IOn{member.Name}SceneLoadedHandler : IGlobalSubscriber - {{ - void On{member.Name}SceneLoaded(); - }} -"; - dictionaryCode += $@" - - _scenesActions.Add(SceneId.{member.Name},() => _eventBus.RaiseEvent(h=> h.On{member.Name}SceneLoaded())); -"; - } - } - - loaderCode = $@" -#pragma warning disable CS0105 -{interfacesUsingsCode} -#pragma warning restore CS0105 - -namespace Code.Infrastructure.SceneLoader -{{ -public partial class SceneLoader{{ -partial void SetupScenesInfo(){{ -{dictionaryCode} -}} -}} -{interfacesCode} -}} -"; - context.AddCode($"SceneLoader.Generated.cs", loaderCode); -// var configsCode = ""; -// var configCode = ""; -// var configUsings = ""; -// var configFields = ""; -// var configAddCode = ""; -// var configReferencesCode = ""; -// var configReferencesUsingsCode = ""; -// var configOfConfigsCode = ""; -// -// foreach (var cfg in configs) -// { -// var mem = cfg.GetFields(); -// var members = mem.Where(m => m.HasAttribute()).ToList(); -// foreach (var m in members) -// { -// configUsings += $"using {m.FieldType.Namespace};\n"; -// configFields += $"public {m.FieldType.FullName} {m.Name};\n"; -// } -// -// var attribute = cfg.GetAttribute(); -// -// configUsings += @" -// using UnityEngine; -// using UnityEngine.AddressableAssets; -// "; -// configCode = $@" -// {configUsings} -// namespace {cfg.Namespace}{{ -// [CreateAssetMenu(fileName = ""{cfg.Name}Config"", menuName = ""{attribute.MenuName}"")] -// public class {cfg.Name}Config : ScriptableObject -// {{ -// {configFields} -// }} -// }} -// "; -// context.AddCode($"{cfg.Name}Config.Generated.cs", configCode); -// -// configReferencesUsingsCode += $"using {cfg.Namespace};\n"; -// -// if (attribute.Multiple) -// { -// configReferencesCode += $"public String {cfg.Name};\n"; -// configAddCode += $@" -// _multipleConfigReferences.Add(typeof({cfg.FullName}), systemConfigsReferences.{cfg.Name}); -// "; -// } -// else -// { -// configReferencesCode += $"public AssetReference {cfg.Name};\n"; -// configAddCode += $@" -// _singleConfigReferences.Add(typeof({cfg.FullName}Config), systemConfigsReferences.{cfg.Name}); -// "; -// } -// } -// configsCode += $@" -// {configReferencesUsingsCode} -// using UnityEngine; -// -// namespace Code.Infrastructure.Configs -// {{ -// -// public partial class ConfigLocator -// {{ -// partial void LoadConfigs() -// {{ -// SystemConfigsReferences systemConfigsReferences = Resources.Load(""SystemConfigsReferences""); -// {configAddCode} -// //_singleConfigReferences.Add(typeof(ScenesAssetReferences), systemConfigsReferences.scenesAssetReferences); -// }} -// }} -// }} -// "; -// context.AddCode($"ConfigLocator.Generated.cs", configsCode); -// -// configOfConfigsCode += $@" -// {configReferencesUsingsCode} -// using UnityEngine.AddressableAssets; -// -// namespace Code.Infrastructure.Configs{{ -// public partial class SystemConfigsReferences -// {{ -// {configReferencesCode} -// }} -// }} -// "; -// context.AddCode($"SystemConfigsReferences.Generated.cs", configOfConfigsCode); - } - } -} \ No newline at end of file diff --git a/Assets/Code/Infrastructure/Generators/SceneLoaderGenerator.cs.meta b/Assets/Code/Infrastructure/Generators/SceneLoaderGenerator.cs.meta deleted file mode 100644 index ed17cad..0000000 --- a/Assets/Code/Infrastructure/Generators/SceneLoaderGenerator.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 92ec56ffd46d4a569bb9a7d436790439 -timeCreated: 1766423754 \ No newline at end of file diff --git a/Assets/Code/Infrastructure/Generators/StateMachineGenerator.cs b/Assets/Code/Infrastructure/Generators/StateMachineGenerator.cs deleted file mode 100644 index aa9fcf9..0000000 --- a/Assets/Code/Infrastructure/Generators/StateMachineGenerator.cs +++ /dev/null @@ -1,131 +0,0 @@ -using System.Linq; -using Unity.VisualScripting; -using UnityCodeGen; -using UnityEditor; - -namespace Code.Infrastructure.Generators -{ - [Generator] - public class StateMachineGenerator : ICodeGenerator - { - public void Execute(GeneratorContext context) - { - GenerateStates(context); - - GenerateStateMachine(context); - } - - private void GenerateStateMachine(GeneratorContext context) - { - var stateMachines = TypeCache.GetTypesWithAttribute(); - - foreach (var sm in stateMachines) - { - var attribute = sm.GetAttribute(); - - var states = TypeCache.GetTypesWithAttribute() - .Where(st => - st.GetAttribute().StateMachineContext.FullName == - attribute.StateMachineContextType.FullName); - - var statesCode = ""; - var statesNamespacesCode = ""; - - foreach (var st in states) - { - statesNamespacesCode += $@" -using {st.Namespace}; -"; - statesCode += $@" -var state{st.Name} = new {st.Name}(StateMachineContext,eventBus); -States.Add(state{st.Name}.myState, state{st.Name}); -"; - } - - var stateMachineCode = - $@" -// -#pragma warning disable CS0105 -using Code.Infrastructure.StateMachine; -{statesNamespacesCode} -#pragma warning restore CS0105 -namespace {sm.Namespace} -{{ - -public partial class {sm.Name} : AbstractStateMachine<{attribute.StateMachineEnumType.FullName},{attribute.StateMachineContextType.FullName}> -{{ - - public {sm.Name}({attribute.StateMachineContextType.FullName} context, EventBus.EventBus eventBus) : base(context) - {{ - {statesCode} - }} - - protected override bool CheckTransitionAllowed({attribute.StateMachineEnumType.FullName} nextState) => AllowedStates.HasFlag(nextState); - protected override void ResetAllowedTransitions() => AllowedStates = 0; -}} - - public static class {sm.Name}Extensions - {{ - public static AbstractStateMachine<{attribute.StateMachineEnumType.FullName}, {attribute.StateMachineContextType.FullName}> AllowStateTransition( - this AbstractStateMachine<{attribute.StateMachineEnumType.FullName}, {attribute.StateMachineContextType.FullName}> stateMachine, {attribute.StateMachineEnumType.FullName} state) - {{ - if (stateMachine == null) return null; - - stateMachine.AllowedStates |= state; - return stateMachine; - }} - }} -}} - -"; - - context.AddCode($"{sm.FullName}.Generated.cs", stateMachineCode); - } - } - - private void GenerateStates(GeneratorContext context) - { - var states = TypeCache.GetTypesWithAttribute(); - - var statesCode = ""; - foreach (var st in states) - { - var attribute = st.GetAttribute(); - - var fireStatesCode = ""; - if(st.HasAttribute()) fireStatesCode = $@" -protected override void _fireEnterState() - {{ - EventBus.RaiseEvent>(h => h.EnterState()); - }} - - protected override void _fireExitState() - {{ - EventBus.RaiseEvent>(h => h.ExitState()); - }} -"; - var genetics = ""; - if(!attribute.SilentBitch) genetics = $@" : BaseState<{attribute.StateEnum.FullName}, {attribute.StateMachineContext.FullName}>"; - - statesCode = $@" - -// retard-generated - -using Code.Infrastructure.StateMachine; - -namespace {st.Namespace} -{{ - public partial class {st.Name} {genetics} - {{ - {fireStatesCode} - }} -}} -"; - - - context.AddCode($"{st.FullName}.Generated.cs", statesCode); - - } - } - } -} \ No newline at end of file diff --git a/Assets/Code/Infrastructure/Generators/StateMachineGenerator.cs.meta b/Assets/Code/Infrastructure/Generators/StateMachineGenerator.cs.meta deleted file mode 100644 index b34c15d..0000000 --- a/Assets/Code/Infrastructure/Generators/StateMachineGenerator.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 9fb4b6961cd0471d8183511316c15000 -timeCreated: 1765563824 \ No newline at end of file diff --git a/Assets/Code/Infrastructure/Input/InputService.cs b/Assets/Code/Infrastructure/Input/InputService.cs index 505224f..44e9477 100644 --- a/Assets/Code/Infrastructure/Input/InputService.cs +++ b/Assets/Code/Infrastructure/Input/InputService.cs @@ -1,7 +1,6 @@ using System; using Code.Infrastructure.Configs; using Code.Infrastructure.EventBus; -using Code.Infrastructure.Generators; using Cysharp.Threading.Tasks; using UnityEngine.AddressableAssets; using UnityEngine.InputSystem; diff --git a/Assets/Code/Infrastructure/SceneLoader/SceneId.cs b/Assets/Code/Infrastructure/SceneLoader/SceneId.cs index 8df3341..28c472b 100644 --- a/Assets/Code/Infrastructure/SceneLoader/SceneId.cs +++ b/Assets/Code/Infrastructure/SceneLoader/SceneId.cs @@ -1,4 +1,3 @@ -using Code.Infrastructure.Generators; namespace Code.Infrastructure.SceneLoader { diff --git a/Assets/Code/Infrastructure/SceneLoader/SceneLoader.cs b/Assets/Code/Infrastructure/SceneLoader/SceneLoader.cs index 728c8ae..b39636c 100644 --- a/Assets/Code/Infrastructure/SceneLoader/SceneLoader.cs +++ b/Assets/Code/Infrastructure/SceneLoader/SceneLoader.cs @@ -1,8 +1,7 @@ using System; using System.Collections.Generic; using Code.Infrastructure.Configs; -using Code.Infrastructure.EventBus; -using Code.Infrastructure.Generators; +using Code.Infrastructure.EventBus; using Cysharp.Threading.Tasks; using UnityEngine; using UnityEngine.AddressableAssets; diff --git a/Assets/Code/Infrastructure/StateMachine/BaseState.cs b/Assets/Code/Infrastructure/StateMachine/BaseState.cs index a9e9dd0..ea89c66 100644 --- a/Assets/Code/Infrastructure/StateMachine/BaseState.cs +++ b/Assets/Code/Infrastructure/StateMachine/BaseState.cs @@ -1,3 +1,5 @@ +using Code.Infrastructure.App; + namespace Code.Infrastructure.StateMachine { public abstract class BaseState diff --git a/Assets/SourceGeneration/InfraGens.dll b/Assets/SourceGeneration/InfraGens.dll new file mode 100644 index 0000000000000000000000000000000000000000..acb6b4f4ca305747150a133583e87921fcc29655 GIT binary patch literal 31744 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 CreateEntityReport(SampleEntity entity) - { - return entity.Report(); - } -} \ No newline at end of file +// using System.Collections.Generic; +// using Entities; +// +// namespace InfraGens.Sample; +// +// public class Examples +// { +// // Create generated entities, based on DDD.UbiquitousLanguageRegistry.txt +// public object[] CreateEntities() +// { +// return new object[] +// { +// new Customer(), +// new Employee(), +// new Product(), +// new Shop(), +// new Stock() +// }; +// } +// +// // Execute generated method Report +// public IEnumerable CreateEntityReport(SampleEntity entity) +// { +// return entity.Report(); +// } +// } \ No newline at end of file diff --git a/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens.Sample/SampleEntity.cs b/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens.Sample/SampleEntity.cs index 9443278..be635d9 100644 --- a/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens.Sample/SampleEntity.cs +++ b/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens.Sample/SampleEntity.cs @@ -1,12 +1,56 @@ -using Generators; +using System; -namespace InfraGens.Sample; +[Config("Configs/Camera/CameraConfig")] +public class GameCamera +{ + [ToConfig] public int Camera; +} +public class StateMachine : Attribute +{ + public Type StateMachineContextType; + public Type StateMachineEnumType; -// This code will not compile until you build the project with the Source Generators + public StateMachine(Type stateMachineContextType, Type stateMachineEnumType) + { + StateMachineContextType = stateMachineContextType; + StateMachineEnumType = stateMachineEnumType; + } +} -[Report] -public partial class SampleEntity +public class State : Attribute +{ + public Type StateEnum; + public Type StateMachineContext; + public bool SilentBitch; // Поэтому нейминг переменных очень важен + + public State(Type stateEnum, Type stateMachineContext, bool silentBitch = false) + { + StateEnum = stateEnum; + StateMachineContext = stateMachineContext; + SilentBitch = silentBitch; + } +} + +public class StateRaisingEvent : Attribute +{ +} + +public class Config : Attribute +{ + public bool Multiple; + public string MenuName; + + public Config(string menuName, bool multiple = false) + { + Multiple = multiple; + MenuName = menuName; + } +} + +public class ToConfig : Attribute +{ +} + +public class SceneIdEnum : Attribute { - public int Id { get; } = 42; - public string? Name { get; } = "Sample"; } \ No newline at end of file diff --git a/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens.Sample/bin/Debug/net8.0/InfraGens.Sample.dll b/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens.Sample/bin/Debug/net8.0/InfraGens.Sample.dll index 7d00ec322e9149f961a87819b5ccfbe87bf7bed3..c3898174b291a5d0aac2baaba8109118c3e86a5c 100644 GIT binary patch delta 958 zcmX|=O-NKx6vzK})cMrOVP3){*mE4UQl>ZKd^i@PmSls7AESb9YCfJKjHBqdh)73> zlDy=YP(9_q_YK_hsv|^21qY z*}K+9$k}%|WeZaPBNgioXMNUBl|Y9mGyxlVyjhYgKq2KDE}(~(>uPyFt2VpD zBAMLC@30zX=C4>av+}RZ={TSc!Y-5RP=HPu7|RD3pOb>TC*L*gV?f0eFi&w)=xAnq zI6X8WR;BU)dKeYGQH+r;7P_@J(n2vy`JTuxq(|!7`OWH3LIskvYb}~7 z3Kuouz`!&+6nbpoG1J4z1kd0$JBD?d(xVqmR57tp;&TY5HQv>@r!h^DF8Hrw&#N8cLqWyXwoGFSl#n@yxv<4WU|Y1?OW1K+VNwfK~f;`asp zN+=!+_y_Cbv0&Wm_4&LBkCIdZ36J0F3958oHT&~+c@3<+lg=Iw$R)aQl7WZqCHe)D z3kE)5cNT|hhc{yS*i%~TzQG^ppy4Vr&g~^obh?->Z-NGmDlEjf)KeMJ_Ly(iz9{r=|R+MI!N@= n@X_!hK^HMwH%;>4-zEoEZ6|)RImPe~V4}D+ literal 7168 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 C8sT36 diff --git a/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens.Sample/obj/Debug/net8.0/InfraGens.Sample.AssemblyInfo.cs b/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens.Sample/obj/Debug/net8.0/InfraGens.Sample.AssemblyInfo.cs index 8384389..cda469d 100644 --- a/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens.Sample/obj/Debug/net8.0/InfraGens.Sample.AssemblyInfo.cs +++ b/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens.Sample/obj/Debug/net8.0/InfraGens.Sample.AssemblyInfo.cs @@ -13,7 +13,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("InfraGens.Sample")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+a3cd3e86a161e3ee450256b1b37c6a4583c70840")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+a4090547509ba65f8ba7b22442c10d06c15217e0")] [assembly: System.Reflection.AssemblyProductAttribute("InfraGens.Sample")] [assembly: System.Reflection.AssemblyTitleAttribute("InfraGens.Sample")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens.Sample/obj/Debug/net8.0/InfraGens.Sample.AssemblyInfoInputs.cache b/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens.Sample/obj/Debug/net8.0/InfraGens.Sample.AssemblyInfoInputs.cache index 4517d4b..aa37e39 100644 --- a/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens.Sample/obj/Debug/net8.0/InfraGens.Sample.AssemblyInfoInputs.cache +++ b/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens.Sample/obj/Debug/net8.0/InfraGens.Sample.AssemblyInfoInputs.cache @@ -1 +1 @@ -ff49a1d065da3858c1224dae22c001fae5c9d17e1737f7b26cef44c567a20d60 +ef1fde298251b87291e3f53f6d50441cec1268cfc54dba8a1b093bc8be99164e diff --git a/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens.Sample/obj/Debug/net8.0/InfraGens.Sample.csproj.FileListAbsolute.txt b/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens.Sample/obj/Debug/net8.0/InfraGens.Sample.csproj.FileListAbsolute.txt index 367669c..9c80d75 100644 --- a/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens.Sample/obj/Debug/net8.0/InfraGens.Sample.csproj.FileListAbsolute.txt +++ b/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens.Sample/obj/Debug/net8.0/InfraGens.Sample.csproj.FileListAbsolute.txt @@ -9,3 +9,14 @@ A:\Projects\Infra\Assets\SourceGeneration\InfraGens\InfraGens\InfraGens.Sample\o A:\Projects\Infra\Assets\SourceGeneration\InfraGens\InfraGens\InfraGens.Sample\obj\Debug\net8.0\refint\InfraGens.Sample.dll A:\Projects\Infra\Assets\SourceGeneration\InfraGens\InfraGens\InfraGens.Sample\obj\Debug\net8.0\InfraGens.Sample.pdb A:\Projects\Infra\Assets\SourceGeneration\InfraGens\InfraGens\InfraGens.Sample\obj\Debug\net8.0\ref\InfraGens.Sample.dll +A:\Projects\Infra\Assets\SourceGeneration\InfraGens~\InfraGens\InfraGens.Sample\obj\Debug\net8.0\InfraGens.Sample.GeneratedMSBuildEditorConfig.editorconfig +A:\Projects\Infra\Assets\SourceGeneration\InfraGens~\InfraGens\InfraGens.Sample\obj\Debug\net8.0\InfraGens.Sample.AssemblyInfoInputs.cache +A:\Projects\Infra\Assets\SourceGeneration\InfraGens~\InfraGens\InfraGens.Sample\obj\Debug\net8.0\InfraGens.Sample.AssemblyInfo.cs +A:\Projects\Infra\Assets\SourceGeneration\InfraGens~\InfraGens\InfraGens.Sample\obj\Debug\net8.0\InfraGens.Sample.csproj.CoreCompileInputs.cache +A:\Projects\Infra\Assets\SourceGeneration\InfraGens~\InfraGens\InfraGens.Sample\obj\Debug\net8.0\InfraGens.Sample.dll +A:\Projects\Infra\Assets\SourceGeneration\InfraGens~\InfraGens\InfraGens.Sample\obj\Debug\net8.0\refint\InfraGens.Sample.dll +A:\Projects\Infra\Assets\SourceGeneration\InfraGens~\InfraGens\InfraGens.Sample\obj\Debug\net8.0\InfraGens.Sample.pdb +A:\Projects\Infra\Assets\SourceGeneration\InfraGens~\InfraGens\InfraGens.Sample\bin\Debug\net8.0\InfraGens.Sample.deps.json +A:\Projects\Infra\Assets\SourceGeneration\InfraGens~\InfraGens\InfraGens.Sample\bin\Debug\net8.0\InfraGens.Sample.dll +A:\Projects\Infra\Assets\SourceGeneration\InfraGens~\InfraGens\InfraGens.Sample\bin\Debug\net8.0\InfraGens.Sample.pdb +A:\Projects\Infra\Assets\SourceGeneration\InfraGens~\InfraGens\InfraGens.Sample\obj\Debug\net8.0\ref\InfraGens.Sample.dll diff --git a/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens.Sample/obj/Debug/net8.0/InfraGens.Sample.dll b/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens.Sample/obj/Debug/net8.0/InfraGens.Sample.dll index 7d00ec322e9149f961a87819b5ccfbe87bf7bed3..c3898174b291a5d0aac2baaba8109118c3e86a5c 100644 GIT binary patch delta 958 zcmX|=O-NKx6vzK})cMrOVP3){*mE4UQl>ZKd^i@PmSls7AESb9YCfJKjHBqdh)73> zlDy=YP(9_q_YK_hsv|^21qY z*}K+9$k}%|WeZaPBNgioXMNUBl|Y9mGyxlVyjhYgKq2KDE}(~(>uPyFt2VpD zBAMLC@30zX=C4>av+}RZ={TSc!Y-5RP=HPu7|RD3pOb>TC*L*gV?f0eFi&w)=xAnq zI6X8WR;BU)dKeYGQH+r;7P_@J(n2vy`JTuxq(|!7`OWH3LIskvYb}~7 z3Kuouz`!&+6nbpoG1J4z1kd0$JBD?d(xVqmR57tp;&TY5HQv>@r!h^DF8Hrw&#N8cLqWyXwoGFSl#n@yxv<4WU|Y1?OW1K+VNwfK~f;`asp zN+=!+_y_Cbv0&Wm_4&LBkCIdZ36J0F3958oHT&~+c@3<+lg=Iw$R)aQl7WZqCHe)D z3kE)5cNT|hhc{yS*i%~TzQG^ppy4Vr&g~^obh?->Z-NGmDlEjf)KeMJ_Ly(iz9{r=|R+MI!N@= n@X_!hK^HMwH%;>4-zEoEZ6|)RImPe~V4}D+ literal 7168 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 C8sT36 diff --git a/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens.Sample/obj/Debug/net8.0/ref/InfraGens.Sample.dll b/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens.Sample/obj/Debug/net8.0/ref/InfraGens.Sample.dll index bd4f11a89308a637cf960d1cc6ca0049ac321cbb..2c283d1ed1505edf2c70c694b13cc16da9e4211d 100644 GIT binary patch delta 907 zcmZ9L%}*0S7{;Gz%Th`ytwjuI2p?4+e2%nl-B)+fUYx5$Y`B0;L6Ym>mZ; zYyhLCVLqq$N|OxexeIL3_)X|oVKtpwSrfA!Spj+&J@YX)IEHh@+#NQzGpV`D9a76}wfY+opNgV#*K87A0=C#)GebW1^lbmp-{ zzK`7}zJy>-a$Ry)a+D~V?ssG~HeiGLdx#3!hz^{TIzV(|h*)yttSq9Emn9b^~LFfn*MP(q45a|>Kr4AD{x^%iUBoLsdl9VB- WgX9HhuF3BlS+`sd%3q+O*8c_5uc~nX literal 6656 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 WgX9HhuF3BlS+`sd%3q+O*8c_5uc~nX literal 6656 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 - -using System; -using System.Collections.Generic; - -namespace TestNamespace; - -partial class Vector3 -{ - public IEnumerable Report() - { - yield return $""X:{this.X}""; - yield return $""Y:{this.Y}""; - yield return $""Z:{this.Z}""; - } -} -"; - - [Fact] - public void GenerateReportMethod() - { - // Create an instance of the source generator. - var generator = new SampleIncrementalSourceGenerator(); - - // Source generators should be tested using 'GeneratorDriver'. - var driver = CSharpGeneratorDriver.Create(generator); - - // We need to create a compilation with the required source code. - var compilation = CSharpCompilation.Create(nameof(SampleSourceGeneratorTests), - new[] { CSharpSyntaxTree.ParseText(VectorClassText) }, - new[] - { - // To support 'System.Attribute' inheritance, add reference to 'System.Private.CoreLib'. - MetadataReference.CreateFromFile(typeof(object).Assembly.Location) - }); - - // Run generators and retrieve all results. - var runResult = driver.RunGenerators(compilation).GetRunResult(); - - // All generated files can be found in 'RunResults.GeneratedTrees'. - var generatedFileSyntax = runResult.GeneratedTrees.Single(t => t.FilePath.EndsWith("Vector3.g.cs")); - - // Complex generators should be tested using text comparison. - Assert.Equal(ExpectedGeneratedClassText, generatedFileSyntax.GetText().ToString(), - ignoreLineEndingDifferences: true); - } -} \ No newline at end of file +// using System.Linq; +// using Microsoft.CodeAnalysis; +// using Microsoft.CodeAnalysis.CSharp; +// using Xunit; +// +// namespace InfraGens.Tests; +// +// public class SampleIncrementalSourceGeneratorTests +// { +// private const string VectorClassText = @" +// namespace TestNamespace; +// +// [Generators.Report] +// public partial class Vector3 +// { +// public float X { get; set; } +// public float Y { get; set; } +// public float Z { get; set; } +// }"; +// +// private const string ExpectedGeneratedClassText = @"// +// +// using System; +// using System.Collections.Generic; +// +// namespace TestNamespace; +// +// partial class Vector3 +// { +// public IEnumerable Report() +// { +// yield return $""X:{this.X}""; +// yield return $""Y:{this.Y}""; +// yield return $""Z:{this.Z}""; +// } +// } +// "; +// +// [Fact] +// public void GenerateReportMethod() +// { +// // Create an instance of the source generator. +// var generator = new SampleIncrementalSourceGenerator(); +// +// // Source generators should be tested using 'GeneratorDriver'. +// var driver = CSharpGeneratorDriver.Create(generator); +// +// // We need to create a compilation with the required source code. +// var compilation = CSharpCompilation.Create(nameof(SampleSourceGeneratorTests), +// new[] { CSharpSyntaxTree.ParseText(VectorClassText) }, +// new[] +// { +// // To support 'System.Attribute' inheritance, add reference to 'System.Private.CoreLib'. +// MetadataReference.CreateFromFile(typeof(object).Assembly.Location) +// }); +// +// // Run generators and retrieve all results. +// var runResult = driver.RunGenerators(compilation).GetRunResult(); +// +// // All generated files can be found in 'RunResults.GeneratedTrees'. +// var generatedFileSyntax = runResult.GeneratedTrees.Single(t => t.FilePath.EndsWith("Vector3.g.cs")); +// +// // Complex generators should be tested using text comparison. +// Assert.Equal(ExpectedGeneratedClassText, generatedFileSyntax.GetText().ToString(), +// ignoreLineEndingDifferences: true); +// } +// } \ No newline at end of file diff --git a/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens.Tests/SampleSourceGeneratorTests.cs b/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens.Tests/SampleSourceGeneratorTests.cs index 3b37912..83ccb78 100644 --- a/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens.Tests/SampleSourceGeneratorTests.cs +++ b/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens.Tests/SampleSourceGeneratorTests.cs @@ -1,48 +1,48 @@ -using System.IO; -using System.Linq; -using InfraGens.Tests.Utils; -using Microsoft.CodeAnalysis.CSharp; -using Xunit; - -namespace InfraGens.Tests; - -public class SampleSourceGeneratorTests -{ - private const string DddRegistryText = @"User -Document -Customer"; - - [Fact] - public void GenerateClassesBasedOnDDDRegistry() - { - // Create an instance of the source generator. - var generator = new SampleSourceGenerator(); - - // Source generators should be tested using 'GeneratorDriver'. - var driver = CSharpGeneratorDriver.Create(new[] { generator }, - new[] - { - // Add the additional file separately from the compilation. - new TestAdditionalFile("./DDD.UbiquitousLanguageRegistry.txt", DddRegistryText) - }); - - // To run generators, we can use an empty compilation. - var compilation = CSharpCompilation.Create(nameof(SampleSourceGeneratorTests)); - - // Run generators. Don't forget to use the new compilation rather than the previous one. - driver.RunGeneratorsAndUpdateCompilation(compilation, out var newCompilation, out _); - - // Retrieve all files in the compilation. - var generatedFiles = newCompilation.SyntaxTrees - .Select(t => Path.GetFileName(t.FilePath)) - .ToArray(); - - // In this case, it is enough to check the file name. - Assert.Equivalent(new[] - { - "User.g.cs", - "Document.g.cs", - "Customer.g.cs" - }, generatedFiles); - } -} \ No newline at end of file +// using System.IO; +// using System.Linq; +// using InfraGens.Tests.Utils; +// using Microsoft.CodeAnalysis.CSharp; +// using Xunit; +// +// namespace InfraGens.Tests; +// +// public class SampleSourceGeneratorTests +// { +// private const string DddRegistryText = @"User +// Document +// Customer"; +// +// [Fact] +// public void GenerateClassesBasedOnDDDRegistry() +// { +// // Create an instance of the source generator. +// var generator = new SampleSourceGenerator(); +// +// // Source generators should be tested using 'GeneratorDriver'. +// var driver = CSharpGeneratorDriver.Create(new[] { generator }, +// new[] +// { +// // Add the additional file separately from the compilation. +// new TestAdditionalFile("./DDD.UbiquitousLanguageRegistry.txt", DddRegistryText) +// }); +// +// // To run generators, we can use an empty compilation. +// var compilation = CSharpCompilation.Create(nameof(SampleSourceGeneratorTests)); +// +// // Run generators. Don't forget to use the new compilation rather than the previous one. +// driver.RunGeneratorsAndUpdateCompilation(compilation, out var newCompilation, out _); +// +// // Retrieve all files in the compilation. +// var generatedFiles = newCompilation.SyntaxTrees +// .Select(t => Path.GetFileName(t.FilePath)) +// .ToArray(); +// +// // In this case, it is enough to check the file name. +// Assert.Equivalent(new[] +// { +// "User.g.cs", +// "Document.g.cs", +// "Customer.g.cs" +// }, generatedFiles); +// } +// } \ No newline at end of file diff --git a/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens.Tests/bin/Debug/net8.0/InfraGens.Tests.dll b/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens.Tests/bin/Debug/net8.0/InfraGens.Tests.dll index dc5268f62e1432e6b3631a9a4119189089e71a7b..f6061b4beb43815399887a4dcaa4b485655a290f 100644 GIT binary patch delta 1614 zcmYk6du&rx9LK-s-1gFya@Tf<$TGOyB-_fIZP)Gr%W%BL0(;;Fx(pp%cVUGB%1XjR z=nRP>Vzjvs)Ib6f|4=k>S%SnE@h^@3VT_N&KMXD*M*lFH5Ce%J>i3*>#&dH%zsLEV z-+A40riZ7SUOQd;^uvRHqFm-si-jTv1nBUUoX4WYcXwFzQD8th9s}mQ#Yk0PS1HPF z1cu#+Y;s3Ly?@%z5SumNo)N2r;9z!C+5xxja5ERcq9};8|Jtlxp2cpveI4v(^pe z4`mPRnc@g&SimsKy6r<~q8?Ow&-UI8l%2GnWV*U_xr5`hRbeXeM9pPUp^U#o3zn3o zx|AkUt9CA;l#|m^ODKR-pI^^^QUwE3k^w9xj)bAIH<%uBN!C8BP&pC2=1oJ_Ymnv zBN;?ovqQ66vsZJQW?@8&G%1iJO&ld3!1J1KXwN(3GCZsGmo$s`P}&G{xK7k_ulhtY z79xXYR3S%J<7KiA=g3v~hHSwvzOY7H*}WEdG1R20%}hbTeYm551@=R!GJ=VyR?XD%LTcZcXiOA5XW9ClbkIA`_2I#9A}) zR3hHy@FDc5gYuOw2rs<8BV@_BP|0$!zP)-0qHj>0$XV7r-^Kj@0#qOMPSmr)tKPzZ zduv5)@Y=D-3p20o+;F|3G5tyE>lJR$ZWAZn9=j(|Zd%-0Zc;-e2flFjo`3W7nc|NZ z2g)z1%9vHUU5qS|qfz$ZT;r)RC&&Bm4_V!X*Qq>w}#sjP9N(Mo+c+O^(B rCio@!CHUjU88yM$s`V6oarSj)udLi9E9}zi|J>@?P{SXh7+df!=nMa% literal 10752 zcmeHNeQ*>#EKvU)h%wbsuFXxm;B)DVzJp zl?#RQdp$GSl>|2Dy1x>SG_SkgSHJiAb!Ir+|sgYO3UR;M;+BwtB_NToZ7oLsb9Ww@Y$n>v^{qtjg*{|>ag^u|wEwb;Xs{grX?1nlbjcY-dq$cEwiOixcN6ZiYb&fzSbD|;Bil+xadQk>aF<ZDA^h-pIq2}2-*H(Js%u#Rxv~K~8E9F_7zzYW!SYZb zR9oNjMPN>a&|1+Lc+fAIx*}oEL+3?~XDJD`2hCNGu--u*W&$;^VGNZbn_FUAB+T;)y{5CsTHY)Re+X%X{f)KX=uOAvfDD|C^O?in8f`{E>u*&Tl%$VCr(LJJ8@%-2(cun zloJ9r%Jl}r%5svAdHMF+%+Ga19#=<*X)GNLu2mE|E#Z>Djqsf`2ulLhlN;FeBkp(JJu& zr_|ODDTNNvGYE8Lge`mom`3`U(iLu^pG7V~!&B0dk#LQ25A}*JX#P=fB-B7-A-3Va zf@ft+e^){`SE^|z#(V=tg8!qvT zT2ZQ^eZ}GEGvR&3%@Q65Tt=s(-voSvo(XqQkuJjTwRB0=FQYE##qfa2MxCQKL$8Ge zC1vYt3$MY003CK)^v~!mK)uVD)29u%E&7uv(`uW_X-lSC-wg+7lWcvDjOgp|q1SCi ze-a#qce`Zk+`^B--w%iB;Iy0qnkHM1P#3)gnq9`J(8Fb%3jLnPSxN7}ZqDutCv^aSV7m|Z4ID8ivTO>UchQEC-4gaoxKF}i2{k}L1|VnS zweSKuE#c!5^L+^yiEGG{}UN!yeq)?DC zoIfGl?)8YcD*0w=dzVuVT<-eG^{-=vnTxw5`DXUJSE`!X$Ip2YpJiW{)Tf}22zuH= zuhKrOGf6tg@|!kq7#V3BX{AkH(sR0{IeJevx)w_K&SjxkD1BnDaSB#c0!tHq^Q@>#&f3apt@;5b0#()8yVTArH5Y0IX)C`cCL6*Sr#KP`90A@0Ys^j_GSl_u#Fb zdXf{Gl}}FP9PPxQrR!93^kz0sdrtccImgKAgHw5Zhn7ocbeQRIYrAD;JxmfVfWV!1 zr_%C7meb3@4E?Enkv)_0hukxNdE;%m-}t zI_W?m^_bZ_6j{?wb~|{z7%hP0O2|>0#_cI&GBYuA^p+HKBayPBnW;g;!N^bR7}TtB zn2*hq{(xy6D-nEt_UwRe+3x#a{uI_RA@K653wA1yakB6x!)@s2TSWDKW_ z>dlD32@HN3sexQenX=+hJn@7V2WA;G-Sb8*Tx?1Z}n`15X;kvmSkW(vz4 z)&w>a?oS$N-6AP*Qn%b}+?!{jJxz7hOqDD3Owd=WuB`wQuEdIg1}AcR5SA5!9`uZcQ2~-S(CZq#`GaEr-SH zUr+Ob>7q&tC_0_JG9yHJ-Es`@Vy(E9Rde!i$T2c@2|Mel(|5u_%JK+!V?Ur-w(bqe z+;s2>)3I~M$4Adduu`AyjJWxj@qDs9QrY0l8aS8BoomB}t++a9f}|z*{)i(((4^;HJ|LRACF0lcJ2wqsBt&G}E3rwEM74s+9Lv zZlc_#1nq~0yzI)MBa$-@b4FpB0qv^n#ex9_bZ5{`0rJbNjrsw|raVL2rR;+es-W@T zOig2uG$HGNauD}}xW}Qv!RxaMeSYoKZR!~QE$BG(sX9*ayY!j+SJP^+Zi4v*>F_FP zdTFe5N`qswG@V0UfI|ibYaCKZ?3#ECb&RPSJI4?M`23k4DCdvknhov;E zpEVsgd44;?+E0D3u>jxPyyeu<5h?cA@?x+VQ7BKe7VJJbN`9iuOdB6N1!*1H(%`dD zbI^;0zErv!$E*iwBT~r0Ifx-6bdXK~>qf@c;Fq7QX?T{V;m@q;&@4@dZlcLeZx@RG z1hS@A{v~J#)6T#ix&X+tpR;5a#)-42fRZN*M{!(w%+Z}fW?-qrO>INq<`Lky_Ch)Z z86J}ysEq58`dF_!QZ(O}NI+u({8(e|nk`vQo2{XYwrJ*3P)6bH+KcZu|M%6=J>UHG z4?-^`8dgzA6(Sl`ah!!pO$|3=48jVxi;q`FBJuwC?)bj=P<*)NNR1XH5#PNeUOX40 zaC|rxFFuX?Piu}azW5h4#pl8*#f#5FWo#Y==wl< z@#1S0Y9L;GBYwQ*NCWxm0xe zD0dzfu~;AwsKa4)R+@W!Nvx(Ib)Bj?vKY4R_IiEGD^J7pc=3ldh52eonou1-UhNB1 zzz)||&yd)n>OerE8iiYUhBS(BB@B&KRSU6%t%HY+6s#06?3l&k#eq9G3XjSl6@QA* z24W$CvC+$0Mjo#DQRT+y+3=Nboiu-(iMGAodEohuJ?ld3Hi~qbVf6Cp? z)8)*8&mS$N2f@rYhR+`@rN`ZG`e2|%dLu>13)7y1@?Yh=A>pDi;M%&k?I<&Rx zI@?q0TRYc6Cd5XDrKNx7YpGlE8*)O zJ%;bPkEy7XUHlEK{Mw)FO}=h_aCFr-YWu#u<@&w34|eWg9o-ubW1q>V8unr7_hH_8 zpfO`ZhW(;T#U{t&n^|*re22}^uO60xI-JuTM6)F19g^hJqm54^U^4|HK@Uo8IqXZa=vd{ge**QC|zW z1K7`u0QTWsG)evVg~lGV`vJGRzt*7FLLb~<{qBuI)(NNh?!_yO+lz-l(JOHW1oC4S<=IA)fP0B{A@$NtHlDP}9-TRZwl1L~M79cZ@!wxPus9bb#rA--z>JCGS|xZ7zxB$$(F zol<^1cskMM%;Dc5@R)UDoOlP8g-iyKbB{;LN3UcDk0Dmc9-{v!n+P9#>-9}rPGmDG zPE`5Gud4|Ut0om+edO_ZSJTko_Enuts_o!QjFvHTdRNnwZZ~b&Tvb_Bxrxup_``(? z6*;@BsbJ+c+NlXWtJ$lv{$cs5l$qVA+1bQoTa%jAa>f|W_xwk$><`LRby`_}8fS7i z-k)I;KTVs|9G=5nO}nS?(9Rg{33fuu=bKi$8XT)&JN(__Htku{B<0YzjSpKmZ=dqo zz*ze60_@b&12}HRM}cwOzD=#|zE%}iNss&S3^CrNPwE*p!?3GKv-@+CIIXvu)Pm8S z!nrWQIHqN6-E&GRS$z|0eA8FYuzl0&=^%h%(`tW&%AS-mfo=tmB>3qQh5Uu{R(zl1 J|4&BXe*yKXH{k#P diff --git a/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens.Tests/bin/Debug/net8.0/InfraGens.dll b/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens.Tests/bin/Debug/net8.0/InfraGens.dll index fa0d887f37e6dcdbcf214f36ac803bf1a8277ae3..acb6b4f4ca305747150a133583e87921fcc29655 100644 GIT binary patch literal 31744 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 UuWj~khW`UUj{L**`{#lG25lR0761SM diff --git a/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens.Tests/obj/Debug/net8.0/InfraGens.Tests.AssemblyInfo.cs b/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens.Tests/obj/Debug/net8.0/InfraGens.Tests.AssemblyInfo.cs index 17459bb..ab1ff35 100644 --- a/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens.Tests/obj/Debug/net8.0/InfraGens.Tests.AssemblyInfo.cs +++ b/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens.Tests/obj/Debug/net8.0/InfraGens.Tests.AssemblyInfo.cs @@ -13,7 +13,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("InfraGens.Tests")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+a3cd3e86a161e3ee450256b1b37c6a4583c70840")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+a4090547509ba65f8ba7b22442c10d06c15217e0")] [assembly: System.Reflection.AssemblyProductAttribute("InfraGens.Tests")] [assembly: System.Reflection.AssemblyTitleAttribute("InfraGens.Tests")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens.Tests/obj/Debug/net8.0/InfraGens.Tests.AssemblyInfoInputs.cache b/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens.Tests/obj/Debug/net8.0/InfraGens.Tests.AssemblyInfoInputs.cache index a58a724..52675cf 100644 --- a/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens.Tests/obj/Debug/net8.0/InfraGens.Tests.AssemblyInfoInputs.cache +++ b/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens.Tests/obj/Debug/net8.0/InfraGens.Tests.AssemblyInfoInputs.cache @@ -1 +1 @@ -3aaef13ccdf955618089a7e1ba10db7b8d2ba79b04ae43d5944eef576921c84f +cf82c0056596f228da5d08a995ac5821d42f1b461d942f674b0df67c66b18b23 diff --git a/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens.Tests/obj/Debug/net8.0/InfraGens.Tests.csproj.AssemblyReference.cache b/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens.Tests/obj/Debug/net8.0/InfraGens.Tests.csproj.AssemblyReference.cache index b47c61cd49f32fc4b21a179674fea2f9a0a7ceb6..7775663b1a0c4fcca311237f7aa19c2fd4dede9b 100644 GIT binary patch delta 373 zcmZph#W-;;!x&i@7#J8C8M*UPONvVp^HLIvQW%+lV%PvVJVzjvs)Ib6f|4=k>S%SnE@h^@3VT_N&KMXD*M*lFH5Ce%J>i3*>#&dH%zsLEV z-+A40riZ7SUOQd;^uvRHqFm-si-jTv1nBUUoX4WYcXwFzQD8th9s}mQ#Yk0PS1HPF z1cu#+Y;s3Ly?@%z5SumNo)N2r;9z!C+5xxja5ERcq9};8|Jtlxp2cpveI4v(^pe z4`mPRnc@g&SimsKy6r<~q8?Ow&-UI8l%2GnWV*U_xr5`hRbeXeM9pPUp^U#o3zn3o zx|AkUt9CA;l#|m^ODKR-pI^^^QUwE3k^w9xj)bAIH<%uBN!C8BP&pC2=1oJ_Ymnv zBN;?ovqQ66vsZJQW?@8&G%1iJO&ld3!1J1KXwN(3GCZsGmo$s`P}&G{xK7k_ulhtY z79xXYR3S%J<7KiA=g3v~hHSwvzOY7H*}WEdG1R20%}hbTeYm551@=R!GJ=VyR?XD%LTcZcXiOA5XW9ClbkIA`_2I#9A}) zR3hHy@FDc5gYuOw2rs<8BV@_BP|0$!zP)-0qHj>0$XV7r-^Kj@0#qOMPSmr)tKPzZ zduv5)@Y=D-3p20o+;F|3G5tyE>lJR$ZWAZn9=j(|Zd%-0Zc;-e2flFjo`3W7nc|NZ z2g)z1%9vHUU5qS|qfz$ZT;r)RC&&Bm4_V!X*Qq>w}#sjP9N(Mo+c+O^(B rCio@!CHUjU88yM$s`V6oarSj)udLi9E9}zi|J>@?P{SXh7+df!=nMa% literal 10752 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 J|4&BXe*yKXH{k#P diff --git a/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens.Tests/obj/Debug/net8.0/InfraGens.Tests.genruntimeconfig.cache b/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens.Tests/obj/Debug/net8.0/InfraGens.Tests.genruntimeconfig.cache index 6c149c2..1fe2596 100644 --- a/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens.Tests/obj/Debug/net8.0/InfraGens.Tests.genruntimeconfig.cache +++ b/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens.Tests/obj/Debug/net8.0/InfraGens.Tests.genruntimeconfig.cache @@ -1 +1 @@ -7487cbb514ed8b26b20736e904ac9d522da435f685dccb560d0039466b4510a2 +027bd187cd72f6bda8e68f2bf08397d4be588fbf68a9b00c748fd972a7cd0f41 diff --git a/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens.Tests/obj/Debug/net8.0/ref/InfraGens.Tests.dll b/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens.Tests/obj/Debug/net8.0/ref/InfraGens.Tests.dll index aa6eab9bb1e5f1ea72515ec654c181aaa37d277a..2218def2849c16743cf4fac81de1bfed595332f1 100644 GIT binary patch delta 1187 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 IsStateMachineCandidate(s), + transform: static (ctx, _) => GetStateMachineType(ctx)) + .Where(static m => m is not null) + .Collect(); + + // 2. Собираем все типы с атрибутом [State] + var stateTypes = context.SyntaxProvider + .CreateSyntaxProvider( + predicate: static (s, _) => IsStateCandidate(s), + transform: static (ctx, _) => GetStateType(ctx)) + .Where(static m => m is not null) + .Collect(); + + // 3. Получаем компиляцию для семантического анализа + var compilation = context.CompilationProvider; + + // 4. Объединяем все данные + var combinedData = stateMachineTypes.Combine(stateTypes).Combine(compilation); + + // 5. Регистрируем генерацию кода + context.RegisterSourceOutput(combinedData, static (spc, source) => + Execute(spc, source.Left.Left, source.Left.Right, source.Right)); + } + + private static bool IsStateMachineCandidate(SyntaxNode node) + { + return node is ClassDeclarationSyntax classDecl && + classDecl.AttributeLists.Count > 0; + } + + private static bool IsStateCandidate(SyntaxNode node) + { + return node is ClassDeclarationSyntax classDecl && + classDecl.AttributeLists.Count > 0; + } + + private static INamedTypeSymbol? GetStateMachineType(GeneratorSyntaxContext context) + { + var classDecl = (ClassDeclarationSyntax)context.Node; + var classSymbol = context.SemanticModel.GetDeclaredSymbol(classDecl); + + if (classSymbol == null) return null; + + // Проверяем наличие атрибута [StateMachine] + var stateMachineAttribute = context.SemanticModel.Compilation.GetTypeByMetadataName("StateMachine"); + if (stateMachineAttribute == null) return null; + + return classSymbol.GetAttributes() + .Any(attr => SymbolEqualityComparer.Default.Equals(attr.AttributeClass, stateMachineAttribute)) + ? classSymbol + : null; + } + + private static INamedTypeSymbol? GetStateType(GeneratorSyntaxContext context) + { + var classDecl = (ClassDeclarationSyntax)context.Node; + var classSymbol = context.SemanticModel.GetDeclaredSymbol(classDecl); + + if (classSymbol == null) return null; + + // Проверяем наличие атрибута [State] + var stateAttribute = context.SemanticModel.Compilation.GetTypeByMetadataName("State"); + if (stateAttribute == null) return null; + + return classSymbol.GetAttributes() + .Any(attr => SymbolEqualityComparer.Default.Equals(attr.AttributeClass, stateAttribute)) + ? classSymbol + : null; + } + + private static void Execute( + SourceProductionContext context, + ImmutableArray stateMachineTypes, + ImmutableArray stateTypes, + Compilation compilation) + { + if (stateMachineTypes.IsDefaultOrEmpty && stateTypes.IsDefaultOrEmpty) + return; + + var validStateMachines = stateMachineTypes.Where(t => t != null).ToList(); + var validStates = stateTypes.Where(t => t != null).ToList(); + + if (!validStateMachines.Any() && !validStates.Any()) + return; + + // Получаем символы атрибутов + var stateMachineAttributeSymbol = compilation.GetTypeByMetadataName("StateMachine"); + var stateAttributeSymbol = compilation.GetTypeByMetadataName("State"); + var stateRaisingEventAttributeSymbol = compilation.GetTypeByMetadataName("StateRaisingEvent"); + + if (stateMachineAttributeSymbol == null || stateAttributeSymbol == null) + { + context.ReportDiagnostic(Diagnostic.Create( + new DiagnosticDescriptor("SMG001", "Missing attributes", + "StateMachine or State attributes not found", "StateMachine", DiagnosticSeverity.Error, true), + Location.None)); + return; + } + + // Генерируем код для StateMachine и States + GenerateStateClasses(context, validStates, stateAttributeSymbol, stateRaisingEventAttributeSymbol, compilation); + GenerateStateMachineClasses(context, validStateMachines, validStates, stateMachineAttributeSymbol, stateAttributeSymbol, compilation); + } + + private static void GenerateStateMachineClasses( + SourceProductionContext context, + List stateMachines, + List allStates, + INamedTypeSymbol stateMachineAttributeSymbol, + INamedTypeSymbol stateAttributeSymbol, + Compilation compilation) + { + // if (allStates.Count == 0) throw new Exception("RETARDED"); + foreach (var sm in stateMachines) + { + // Получаем параметры атрибута [StateMachine] + var smAttribute = sm.GetAttributes() + .FirstOrDefault(attr => SymbolEqualityComparer.Default.Equals(attr.AttributeClass, stateMachineAttributeSymbol)); + + if (smAttribute == null) continue; + + var stateMachineContextType = GetNamedTypeArgument(smAttribute, "StateMachineContextType"); + var stateMachineEnumType = GetNamedTypeArgument(smAttribute, "StateMachineEnumType"); + + if (stateMachineContextType == null || stateMachineEnumType == null) + { + context.ReportDiagnostic(Diagnostic.Create( + new DiagnosticDescriptor("SMG002", "Invalid StateMachine attribute", + $"StateMachine {sm.Name} has invalid attribute parameters", "StateMachine", DiagnosticSeverity.Error, true), + sm.Locations.FirstOrDefault())); + continue; + } + + // Находим все states для этого state machine + var statesForThisMachine = allStates + .Where(st => + { + var stAttribute = st.GetAttributes() + .FirstOrDefault(attr => SymbolEqualityComparer.Default.Equals(attr.AttributeClass, stateAttributeSymbol)); + + if (stAttribute == null) return false; + + var stContextType = GetNamedTypeArgument(stAttribute, "StateMachineEnumType"); // БЛЯТЬ ИДИ НАХУЙ ПИДАРАС ТРАНСВИСТИТНЫЙ ПИЗДУЙ В ТАЙЛАНД + // Сравниваем по полному имени типа, как в оригинальном коде + return stContextType != null && + stContextType.ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat) == + stateMachineContextType.ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat); + }) + .ToList(); + + // Собираем пространства имен для states + var stateNamespaces = new HashSet(); + foreach (var st in statesForThisMachine) + { + if (st.ContainingNamespace != null && !st.ContainingNamespace.IsGlobalNamespace) + { + stateNamespaces.Add(st.ContainingNamespace.ToDisplayString()); + } + } + + // Отладка: проверяем, найдены ли стейты + if (statesForThisMachine.Count == 0) + { + context.ReportDiagnostic(Diagnostic.Create( + new DiagnosticDescriptor("SMG004", "No states found", + $"No states found for StateMachine {sm.Name} with context {stateMachineContextType.Name}", + "StateMachine", DiagnosticSeverity.Warning, true), + sm.Locations.FirstOrDefault())); + } + + // Генерируем код для StateMachine + var stateMachineCode = GenerateStateMachineClassCode( + sm, stateMachineContextType, stateMachineEnumType, statesForThisMachine, stateNamespaces); + + var fileName = $"{sm.ContainingNamespace?.ToDisplayString() ?? ""}.{sm.Name}.StateMachine.Generated.cs" + .Replace("<", "_").Replace(">", "_").Replace("+", "_"); + + context.AddSource(fileName, SourceText.From(stateMachineCode, Encoding.UTF8)); + } + } + + private static void GenerateStateClasses( + SourceProductionContext context, + List states, + INamedTypeSymbol stateAttributeSymbol, + INamedTypeSymbol? stateRaisingEventAttributeSymbol, + Compilation compilation) + { + foreach (var st in states) + { + var stateAttribute = st.GetAttributes() + .FirstOrDefault(attr => SymbolEqualityComparer.Default.Equals(attr.AttributeClass, stateAttributeSymbol)); + + if (stateAttribute == null) continue; + + var stateEnumType = GetNamedTypeArgument(stateAttribute, "StateEnum"); + var stateMachineContextType = GetNamedTypeArgument(stateAttribute, "StateMachineContext"); + var isSilent = GetBooleanArgument(stateAttribute, "SilentBitch"); + var hasRaisingEvent = stateRaisingEventAttributeSymbol != null && + st.HasAttribute(stateRaisingEventAttributeSymbol); + + if (stateEnumType == null || stateMachineContextType == null) + { + context.ReportDiagnostic(Diagnostic.Create( + new DiagnosticDescriptor("SMG003", "Invalid State attribute", + $"State {st.Name} has invalid attribute parameters", "StateMachine", DiagnosticSeverity.Error, true), + st.Locations.FirstOrDefault())); + continue; + } + + // Генерируем код для State + var stateCode = GenerateStateClassCode( + st, stateEnumType, stateMachineContextType, isSilent, hasRaisingEvent); + + var fileName = $"{st.ContainingNamespace?.ToDisplayString() ?? ""}.{st.Name}.State.Generated.cs" + .Replace("<", "_").Replace(">", "_").Replace("+", "_"); + + context.AddSource(fileName, SourceText.From(stateCode, Encoding.UTF8)); + } + } + + private static string GenerateStateMachineClassCode( + INamedTypeSymbol sm, + INamedTypeSymbol contextType, + INamedTypeSymbol enumType, + List states, + HashSet stateNamespaces) + { + var sb = new StringBuilder(); + sb.AppendLine("// "); + sb.AppendLine("#pragma warning disable CS0105"); + sb.AppendLine("using Code.Infrastructure.StateMachine;"); + + // Добавляем using для всех пространств имен states + foreach (var ns in stateNamespaces.OrderBy(n => n)) + { + if (!string.IsNullOrEmpty(ns) && ns != sm.ContainingNamespace?.ToDisplayString()) + { + sb.AppendLine($"using {ns};"); + } + } + + sb.AppendLine("#pragma warning restore CS0105"); + sb.AppendLine(); + + if (sm.ContainingNamespace != null && !sm.ContainingNamespace.IsGlobalNamespace) + { + sb.AppendLine($"namespace {sm.ContainingNamespace.ToDisplayString()}"); + sb.AppendLine("{"); + } + + sb.AppendLine($"public partial class {sm.Name} : AbstractStateMachine<{enumType.ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat)}, {contextType.ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat)}>"); + sb.AppendLine("{"); + + // Конструктор с добавлением всех стейтов + sb.AppendLine($" public {sm.Name}({contextType.ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat)} context, EventBus.EventBus eventBus) : base(context)"); + sb.AppendLine(" {"); + + if (states.Count == 0) sb.AppendLine("//I am retarded"); + foreach (var state in states) + { + sb.AppendLine($" var state{state.Name} = new {state.Name}(StateMachineContext, eventBus);"); + sb.AppendLine($" States.Add(state{state.Name}.myState, state{state.Name});"); + } + + sb.AppendLine(" }"); + sb.AppendLine(); + sb.AppendLine($" protected override bool CheckTransitionAllowed({enumType.ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat)} nextState) => AllowedStates.HasFlag(nextState);"); + sb.AppendLine(" protected override void ResetAllowedTransitions() => AllowedStates = 0;"); + sb.AppendLine("}"); + sb.AppendLine(); + sb.AppendLine($"public static class {sm.Name}Extensions"); + sb.AppendLine("{"); + sb.AppendLine($" public static AbstractStateMachine<{enumType.ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat)}, {contextType.ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat)}> AllowStateTransition("); + sb.AppendLine($" this AbstractStateMachine<{enumType.ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat)}, {contextType.ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat)}> stateMachine, {enumType.ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat)} state)"); + sb.AppendLine(" {"); + sb.AppendLine(" if (stateMachine == null) return null;"); + sb.AppendLine(" stateMachine.AllowedStates |= state;"); + sb.AppendLine(" return stateMachine;"); + sb.AppendLine(" }"); + sb.AppendLine("}"); + + if (sm.ContainingNamespace != null && !sm.ContainingNamespace.IsGlobalNamespace) + { + sb.AppendLine("}"); + } + + return sb.ToString(); + } + + private static string GenerateStateClassCode( + INamedTypeSymbol state, + INamedTypeSymbol stateEnumType, + INamedTypeSymbol contextType, + bool isSilent, + bool hasRaisingEvent) + { + var sb = new StringBuilder(); + sb.AppendLine("// "); + sb.AppendLine("using Code.Infrastructure.StateMachine;"); + sb.AppendLine(); + + if (state.ContainingNamespace != null && !state.ContainingNamespace.IsGlobalNamespace) + { + sb.AppendLine($"namespace {state.ContainingNamespace.ToDisplayString()}"); + sb.AppendLine("{"); + } + + var fireStatesCode = ""; + if (hasRaisingEvent) + { + fireStatesCode = $@" + protected override void _fireEnterState() + {{ + EventBus.RaiseEvent>(h => h.EnterState()); + }} + + protected override void _fireExitState() + {{ + EventBus.RaiseEvent>(h => h.ExitState()); + }} +"; + } + + var genetics = ""; + if (!isSilent) + { + // ИСПРАВЛЕНО: Поменяны местами аргументы шаблона - сначала контекст, потом enum + genetics = $@" : BaseState<{contextType.ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat)}, {stateEnumType.ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat)}>"; + } + + sb.AppendLine($"public partial class {state.Name}{genetics}"); + sb.AppendLine("{"); + sb.AppendLine(fireStatesCode); + sb.AppendLine("}"); + + if (state.ContainingNamespace != null && !state.ContainingNamespace.IsGlobalNamespace) + { + sb.AppendLine("}"); + } + + return sb.ToString(); + } + + private static INamedTypeSymbol? GetNamedTypeArgument(AttributeData attribute, string argumentName) + { + // Проверяем именованные аргументы + foreach (var namedArg in attribute.NamedArguments) + { + if (namedArg.Key == argumentName && namedArg.Value.Value is INamedTypeSymbol namedType) + return namedType; + } + + // Проверяем конструкторные аргументы + var constructorArgs = attribute.ConstructorArguments; + if (constructorArgs.Length >= 2 && constructorArgs[0].Value is INamedTypeSymbol firstType && + constructorArgs[1].Value is INamedTypeSymbol secondType) + { + // Для StateMachineAttribute и StateAttribute порядок параметров в конструкторе: + // [StateMachine(typeof(ContextType), typeof(EnumType))] + // [State(typeof(ContextType), typeof(EnumType))] + if (argumentName == "StateMachineContextType" || argumentName == "StateMachineContext") + return firstType; + if (argumentName == "StateMachineEnumType" || argumentName == "StateEnum") + return secondType; + } + + return null; + } + + private static bool GetBooleanArgument(AttributeData attribute, string argumentName) + { + foreach (var namedArg in attribute.NamedArguments) + { + if (namedArg.Key == argumentName && namedArg.Value.Value is bool boolValue) + return boolValue; + } + return false; + } +} + \ No newline at end of file diff --git a/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens/SampleIncrementalSourceGenerator.cs b/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens/SampleIncrementalSourceGenerator.cs index 83f7bcc..6caa469 100644 --- a/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens/SampleIncrementalSourceGenerator.cs +++ b/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens/SampleIncrementalSourceGenerator.cs @@ -1,130 +1,344 @@ +using System.Collections.Generic; using System.Collections.Immutable; using System.Linq; using System.Text; using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; -using Microsoft.CodeAnalysis.Text; - -namespace InfraGens; - -/// -/// A sample source generator that creates a custom report based on class properties. The target class should be annotated with the 'Generators.ReportAttribute' attribute. -/// When using the source code as a baseline, an incremental source generator is preferable because it reduces the performance overhead. -/// [Generator] -public class SampleIncrementalSourceGenerator : IIncrementalGenerator +public class ConfigGenerator : IIncrementalGenerator { - private const string Namespace = "Generators"; - private const string AttributeName = "ReportAttribute"; - - private const string AttributeSourceCode = $@"// - -namespace {Namespace} -{{ - [System.AttributeUsage(System.AttributeTargets.Class)] - public class {AttributeName} : System.Attribute - {{ - }} -}}"; - public void Initialize(IncrementalGeneratorInitializationContext context) { - // Add the marker attribute to the compilation. - context.RegisterPostInitializationOutput(ctx => ctx.AddSource( - "ReportAttribute.g.cs", - SourceText.From(AttributeSourceCode, Encoding.UTF8))); - - // Filter classes annotated with the [Report] attribute. Only filtered Syntax Nodes can trigger code generation. - var provider = context.SyntaxProvider + // 1. Собираем все типы с атрибутом [Config] + var configTypes = context.SyntaxProvider .CreateSyntaxProvider( - (s, _) => s is ClassDeclarationSyntax, - (ctx, _) => GetClassDeclarationForSourceGen(ctx)) - .Where(t => t.reportAttributeFound) - .Select((t, _) => t.Item1); + predicate: static (s, _) => IsConfigCandidate(s), + transform: static (ctx, _) => GetConfigType(ctx)) + .Where(static m => m is not null) + .Collect(); - // Generate the source code. - context.RegisterSourceOutput(context.CompilationProvider.Combine(provider.Collect()), - ((ctx, t) => GenerateCode(ctx, t.Left, t.Right))); + // 2. Получаем компиляцию для семантического анализа + var compilation = context.CompilationProvider; + + // 3. Объединяем данные и генерируем код + var combinedData = configTypes.Combine(compilation); + + context.RegisterSourceOutput(combinedData, static (spc, source) => Execute(spc, source.Left, source.Right)); } - /// - /// Checks whether the Node is annotated with the [Report] attribute and maps syntax context to the specific node type (ClassDeclarationSyntax). - /// - /// Syntax context, based on CreateSyntaxProvider predicate - /// The specific cast and whether the attribute was found. - private static (ClassDeclarationSyntax, bool reportAttributeFound) GetClassDeclarationForSourceGen( - GeneratorSyntaxContext context) + private static bool IsConfigCandidate(SyntaxNode node) { - var classDeclarationSyntax = (ClassDeclarationSyntax)context.Node; + return node is ClassDeclarationSyntax classDecl && + classDecl.AttributeLists.Count > 0; + } - // Go through all attributes of the class. - foreach (AttributeListSyntax attributeListSyntax in classDeclarationSyntax.AttributeLists) - foreach (AttributeSyntax attributeSyntax in attributeListSyntax.Attributes) + private static INamedTypeSymbol? GetConfigType(GeneratorSyntaxContext context) + { + var classDecl = (ClassDeclarationSyntax)context.Node; + var classSymbol = context.SemanticModel.GetDeclaredSymbol(classDecl); + + if (classSymbol == null) return null; + + // Проверяем наличие атрибута [Config] + var configAttribute = context.SemanticModel.Compilation.GetTypeByMetadataName("Config"); + if (configAttribute == null) return null; + + return classSymbol.GetAttributes() + .Any(attr => SymbolEqualityComparer.Default.Equals(attr.AttributeClass, configAttribute)) + ? classSymbol + : null; + } + + private static void Execute(SourceProductionContext context, ImmutableArray configTypes, + Compilation compilation) + { + if (configTypes.IsDefaultOrEmpty) return; + + var validConfigTypes = configTypes.Where(t => t != null).ToList(); + if (!validConfigTypes.Any()) return; + + var configAttributeSymbol = compilation.GetTypeByMetadataName("Config"); + var toConfigAttributeSymbol = compilation.GetTypeByMetadataName("ToConfig"); + + if (configAttributeSymbol == null || toConfigAttributeSymbol == null) { - if (context.SemanticModel.GetSymbolInfo(attributeSyntax).Symbol is not IMethodSymbol attributeSymbol) - continue; // if we can't get the symbol, ignore it - - string attributeName = attributeSymbol.ContainingType.ToDisplayString(); - - // Check the full name of the [Report] attribute. - if (attributeName == $"{Namespace}.{AttributeName}") - return (classDeclarationSyntax, true); + context.ReportDiagnostic(Diagnostic.Create( + new DiagnosticDescriptor("CFG001", "Missing attributes", + "Config or ToConfig attribute not found", "Configuration", DiagnosticSeverity.Error, true), + Location.None)); + return; } - return (classDeclarationSyntax, false); + GenerateConfigFiles(context, validConfigTypes, configAttributeSymbol, toConfigAttributeSymbol, compilation); + GenerateConfigLocator(context, validConfigTypes, configAttributeSymbol, compilation); + GenerateSystemConfigsReferences(context, validConfigTypes, configAttributeSymbol, compilation); } - /// - /// Generate code action. - /// It will be executed on specific nodes (ClassDeclarationSyntax annotated with the [Report] attribute) changed by the user. - /// - /// Source generation context used to add source files. - /// Compilation used to provide access to the Semantic Model. - /// Nodes annotated with the [Report] attribute that trigger the generate action. - private void GenerateCode(SourceProductionContext context, Compilation compilation, - ImmutableArray classDeclarations) + private static void GenerateConfigFiles( + SourceProductionContext context, + List configTypes, + INamedTypeSymbol configAttributeSymbol, + INamedTypeSymbol toConfigAttributeSymbol, + Compilation compilation) { - // Go through all filtered class declarations. - foreach (var classDeclarationSyntax in classDeclarations) + foreach (var cfg in configTypes) { - // We need to get semantic model of the class to retrieve metadata. - var semanticModel = compilation.GetSemanticModel(classDeclarationSyntax.SyntaxTree); + var configUsings = new HashSet(); + var configFields = new StringBuilder(); - // Symbols allow us to get the compile-time information. - if (semanticModel.GetDeclaredSymbol(classDeclarationSyntax) is not INamedTypeSymbol classSymbol) - continue; + // Собираем поля с атрибутом [ToConfig] + foreach (var member in cfg.GetMembers().OfType()) + { + if (member.GetAttributes().Any(attr => + SymbolEqualityComparer.Default.Equals(attr.AttributeClass, toConfigAttributeSymbol))) + { + // Добавляем namespace типа поля + if (member.Type.ContainingNamespace != null && + !member.Type.ContainingNamespace.IsGlobalNamespace) + { + configUsings.Add($"using {member.Type.ContainingNamespace.ToDisplayString()};"); + } - var namespaceName = classSymbol.ContainingNamespace.ToDisplayString(); + // Генерируем поле + var fieldType = GetTypeDisplayName(member.Type, compilation); + configFields.AppendLine($"public {fieldType} {member.Name};"); + } + } - // 'Identifier' means the token of the node. Get class name from the syntax node. - var className = classDeclarationSyntax.Identifier.Text; + // Добавляем обязательные using для Unity + configUsings.Add("using UnityEngine;"); + configUsings.Add("using UnityEngine.AddressableAssets;"); - // Go through all class members with a particular type (property) to generate method lines. - var methodBody = classSymbol.GetMembers() - .OfType() - .Select(p => - $@" yield return $""{p.Name}:{{this.{p.Name}}}"";"); // e.g. yield return $"Id:{this.Id}"; + // Получаем значение атрибута [Config] + var configAttribute = cfg.GetAttributes() + .FirstOrDefault(attr => + SymbolEqualityComparer.Default.Equals(attr.AttributeClass, configAttributeSymbol)); - // Build up the source code - var code = $@"// + string menuName = "Configuration/Custom"; + bool isMultiple = false; -using System; -using System.Collections.Generic; + if (configAttribute != null) + { + var menuNameArg = + configAttribute.ConstructorArguments.FirstOrDefault(arg => arg.Type?.Name == "String"); + if (menuNameArg.Value != null) + { + menuName = menuNameArg.Value.ToString() ?? menuName; + } -namespace {namespaceName}; + var multipleArg = configAttribute.NamedArguments.FirstOrDefault(arg => arg.Key == "Multiple"); + if (multipleArg.Value.Value != null) + { + isMultiple = (bool)multipleArg.Value.Value; + } + } -partial class {className} -{{ - public IEnumerable Report() - {{ -{string.Join("\n", methodBody)} - }} -}} -"; + // Генерируем код конфига + var namespaceName = cfg.ContainingNamespace.IsGlobalNamespace + ? "" + : cfg.ContainingNamespace.ToDisplayString(); + var className = $"{cfg.Name}Config"; + var fileName = $"{className}.Generated.cs"; - // Add the source code to the compilation. - context.AddSource($"{className}.g.cs", SourceText.From(code, Encoding.UTF8)); + var configCode = new StringBuilder(); + configCode.AppendLine("#pragma warning disable CS0105"); + foreach (var usingDirective in configUsings.OrderBy(u => u)) + { + configCode.AppendLine(usingDirective); + } + + configCode.AppendLine("#pragma warning restore CS0105"); + configCode.AppendLine(); + + if (!string.IsNullOrEmpty(namespaceName)) + { + configCode.AppendLine($"namespace {namespaceName}"); + configCode.AppendLine("{"); + } + + configCode.AppendLine($"[CreateAssetMenu(fileName = \"{className}\", menuName = \"{menuName}\")]"); + configCode.AppendLine($"public class {className} : ScriptableObject"); + configCode.AppendLine("{"); + configCode.Append(configFields.ToString()); + configCode.AppendLine("}"); + + if (!string.IsNullOrEmpty(namespaceName)) + { + configCode.AppendLine("}"); + } + + context.AddSource(fileName, configCode.ToString()); } } -} \ No newline at end of file + + private static void GenerateConfigLocator( + SourceProductionContext context, + List configTypes, + INamedTypeSymbol configAttributeSymbol, + Compilation compilation) + { + var configReferencesUsings = new HashSet(); + var configAddCode = new StringBuilder(); + + foreach (var cfg in configTypes) + { + var namespaceName = cfg.ContainingNamespace.IsGlobalNamespace + ? "" + : cfg.ContainingNamespace.ToDisplayString(); + if (!string.IsNullOrEmpty(namespaceName)) + { + configReferencesUsings.Add($"using {namespaceName};"); + } + + var configAttribute = cfg.GetAttributes() + .FirstOrDefault(attr => + SymbolEqualityComparer.Default.Equals(attr.AttributeClass, configAttributeSymbol)); + + bool isMultiple = false; + if (configAttribute != null) + { + var multipleArg = configAttribute.NamedArguments.FirstOrDefault(arg => arg.Key == "Multiple"); + if (multipleArg.Value.Value != null) + { + isMultiple = (bool)multipleArg.Value.Value; + } + } + + var configClassName = $"{cfg.Name}Config"; + var fullName = cfg.ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat) + .Replace("global::", "") + .Replace("<", "_") + .Replace(">", "_"); + + if (isMultiple) + { + configAddCode.AppendLine( + $"_multipleConfigReferences.Add(typeof({fullName}Config), systemConfigsReferences.{cfg.Name});"); + } + else + { + configAddCode.AppendLine( + $"_singleConfigReferences.Add(typeof({fullName}Config), systemConfigsReferences.{cfg.Name});"); + } + } + + configReferencesUsings.Add("using UnityEngine;"); + + var locatorCode = new StringBuilder(); + locatorCode.AppendLine("#pragma warning disable CS0105"); + foreach (var usingDirective in configReferencesUsings.OrderBy(u => u)) + { + locatorCode.AppendLine(usingDirective); + } + + locatorCode.AppendLine("#pragma warning restore CS0105"); + locatorCode.AppendLine(); + locatorCode.AppendLine("namespace Code.Infrastructure.Configs"); + locatorCode.AppendLine("{"); + locatorCode.AppendLine(" public partial class ConfigLocator"); + locatorCode.AppendLine(" {"); + locatorCode.AppendLine(" partial void LoadConfigs()"); + locatorCode.AppendLine(" {"); + locatorCode.AppendLine( + " SystemConfigsReferences systemConfigsReferences = Resources.Load(\"SystemConfigsReferences\");"); + locatorCode.Append(configAddCode.ToString()); + locatorCode.AppendLine(" }"); + locatorCode.AppendLine(" }"); + locatorCode.AppendLine("}"); + + context.AddSource("ConfigLocator.Generated.cs", locatorCode.ToString()); + } + + private static void GenerateSystemConfigsReferences( + SourceProductionContext context, + List configTypes, + INamedTypeSymbol configAttributeSymbol, + Compilation compilation) + { + var configReferencesUsings = new HashSet(); + var configReferencesCode = new StringBuilder(); + + foreach (var cfg in configTypes) + { + var namespaceName = cfg.ContainingNamespace.IsGlobalNamespace + ? "" + : cfg.ContainingNamespace.ToDisplayString(); + if (!string.IsNullOrEmpty(namespaceName)) + { + configReferencesUsings.Add($"using {namespaceName};"); + } + + var configAttribute = cfg.GetAttributes() + .FirstOrDefault(attr => + SymbolEqualityComparer.Default.Equals(attr.AttributeClass, configAttributeSymbol)); + + bool isMultiple = false; + if (configAttribute != null) + { + var multipleArg = configAttribute.NamedArguments.FirstOrDefault(arg => arg.Key == "Multiple"); + if (multipleArg.Value.Value != null) + { + isMultiple = (bool)multipleArg.Value.Value; + } + } + + if (isMultiple) + { + configReferencesCode.AppendLine($"public string {cfg.Name};"); + } + else + { + configReferencesUsings.Add("using UnityEngine.AddressableAssets;"); + configReferencesCode.AppendLine($"public AssetReference {cfg.Name};"); + } + } + + var referencesCode = new StringBuilder(); + referencesCode.AppendLine("#pragma warning disable CS0105"); + foreach (var usingDirective in configReferencesUsings.OrderBy(u => u)) + { + referencesCode.AppendLine(usingDirective); + } + + referencesCode.AppendLine("#pragma warning restore CS0105"); + referencesCode.AppendLine(); + referencesCode.AppendLine("namespace Code.Infrastructure.Configs"); + referencesCode.AppendLine("{"); + referencesCode.AppendLine(" public partial class SystemConfigsReferences"); + referencesCode.AppendLine(" {"); + referencesCode.Append(configReferencesCode.ToString()); + referencesCode.AppendLine(" }"); + referencesCode.AppendLine("}"); + + context.AddSource("SystemConfigsReferences.Generated.cs", referencesCode.ToString()); + } + + private static string GetTypeDisplayName(ITypeSymbol typeSymbol, Compilation compilation) + { + // Обрабатываем generics и вложенные типы + if (typeSymbol is INamedTypeSymbol namedType && namedType.IsGenericType) + { + var typeArguments = namedType.TypeArguments + .Select(t => GetTypeDisplayName(t, compilation)) + .ToArray(); + + var constructedName = + namedType.ConstructedFrom.ToDisplayString(SymbolDisplayFormat.MinimallyQualifiedFormat); + return $"{constructedName}<{string.Join(", ", typeArguments)}>"; + } + + return typeSymbol.ToDisplayString(SymbolDisplayFormat.MinimallyQualifiedFormat); + } +} + +// Вспомогательные методы для работы с атрибутами +internal static partial class SymbolExtensions +{ + public static bool HasAttribute(this ISymbol symbol, INamedTypeSymbol attributeSymbol) + { + return symbol.GetAttributes().Any(attr => + SymbolEqualityComparer.Default.Equals(attr.AttributeClass, attributeSymbol)); + } +} diff --git a/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens/SampleSourceGenerator.cs b/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens/SampleSourceGenerator.cs index 4d04736..8725e95 100644 --- a/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens/SampleSourceGenerator.cs +++ b/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens/SampleSourceGenerator.cs @@ -1,56 +1,119 @@ -using System.IO; using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CSharp; +using Microsoft.CodeAnalysis.CSharp.Syntax; +using Microsoft.CodeAnalysis.Text; +using System.Collections.Immutable; +using System.Linq; +using System.Text; -namespace InfraGens; - -/// -/// A sample source generator that creates C# classes based on the text file (in this case, Domain Driven Design ubiquitous language registry). -/// When using a simple text file as a baseline, we can create a non-incremental source generator. -/// -[Generator] -public class SampleSourceGenerator : ISourceGenerator +namespace Code.Infrastructure.Generators { - public void Initialize(GeneratorInitializationContext context) + [Generator] + public class SceneLoaderGenerator : IIncrementalGenerator { - // No initialization required for this generator. - } - - public void Execute(GeneratorExecutionContext context) - { - // If you would like to put some data to non-compilable file (e.g. a .txt file), mark it as an Additional File. - - // Go through all files marked as an Additional File in file properties. - foreach (var additionalFile in context.AdditionalFiles) + public void Initialize(IncrementalGeneratorInitializationContext context) { - if (additionalFile == null) - continue; + // Получаем все синтаксические деревья + var provider = context.SyntaxProvider + .CreateSyntaxProvider( + predicate: static (s, _) => IsSyntaxTargetForGeneration(s), + transform: static (ctx, _) => GetSemanticTargetForGeneration(ctx)) + .Where(static m => m is not null) + .Collect(); - // Check if the file name is the specific file that we expect. - if (Path.GetFileName(additionalFile.Path) != "DDD.UbiquitousLanguageRegistry.txt") - continue; + // Регистрируем действие для генерации кода + context.RegisterSourceOutput(provider, static (spc, source) => Execute(spc, source)); + } - var text = additionalFile.GetText(); - if (text == null) - continue; + private static bool IsSyntaxTargetForGeneration(SyntaxNode node) + { + // Ищем объявления enum + return node is EnumDeclarationSyntax enumDecl; + } - foreach (var line in text.Lines) + private static INamedTypeSymbol? GetSemanticTargetForGeneration(GeneratorSyntaxContext context) + { + var enumDecl = (EnumDeclarationSyntax)context.Node; + var enumSymbol = context.SemanticModel.GetDeclaredSymbol(enumDecl); + + if (enumSymbol is null || enumSymbol.TypeKind != TypeKind.Enum) + return null; + + // Проверяем наличие атрибута SceneIdEnum + var sceneIdEnumAttribute = context.SemanticModel.Compilation.GetTypeByMetadataName("SceneIdEnum"); + if (sceneIdEnumAttribute is null) + return null; + + // Проверяем, есть ли у enum атрибут SceneIdEnum + if (enumSymbol.GetAttributes().Any(attr => + SymbolEqualityComparer.Default.Equals(attr.AttributeClass, sceneIdEnumAttribute))) { - var className = line.ToString().Trim(); - - // Build up the source code. - string source = $@"// - -namespace Entities -{{ - public partial class {className} - {{ - }} -}} -"; - - // Add the source code to the compilation. - context.AddSource($"{className}.g.cs", source); + return enumSymbol; } + + return null; + } + + private static void Execute(SourceProductionContext context, ImmutableArray enums) + { + if (enums.IsDefaultOrEmpty) + return; + + var sceneIdEnums = enums.Where(e => e is not null).Cast().ToList(); + + if (!sceneIdEnums.Any()) + return; + + var loaderCode = new StringBuilder(); + var dictionaryCode = new StringBuilder(); + var interfacesCode = new StringBuilder(); + + foreach (var enumSymbol in sceneIdEnums) + { + if (enumSymbol.TypeKind != TypeKind.Enum) + continue; + + // Получаем все члены enum + foreach (var member in enumSymbol.GetMembers().OfType()) + { + if (!member.IsStatic || member.Type?.Equals(enumSymbol, SymbolEqualityComparer.Default) == false) + continue; + + string memberName = member.Name; + + interfacesCode.AppendLine($@" + public interface IOn{memberName}SceneLoadedHandler : IGlobalSubscriber + {{ + void On{memberName}SceneLoaded(); + }}"); + + dictionaryCode.AppendLine($@" + _scenesActions.Add({enumSymbol.ContainingNamespace}.{enumSymbol.Name}.{memberName}, () => _eventBus.RaiseEvent(h => h.On{memberName}SceneLoaded())); +"); + } + } + + loaderCode.AppendLine($@"#nullable enable +#pragma warning disable CS0105 +using Code.Infrastructure.EventBus; +#pragma warning restore CS0105 + +namespace Code.Infrastructure.SceneLoader +{{ + public partial class SceneLoader + {{ + partial void SetupScenesInfo() + {{ +{dictionaryCode} + }} + }} + +{interfacesCode} +}} +"); + + // Добавляем сгенерированный файл + context.AddSource("SceneLoader.Generated.g.cs", SourceText.From(loaderCode.ToString(), Encoding.UTF8)); } } } \ No newline at end of file diff --git a/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens/bin/Debug/netstandard2.0/InfraGens.deps.json b/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens/bin/Debug/netstandard2.0/InfraGens.deps.json index 71f30b8..6405ac6 100644 --- a/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens/bin/Debug/netstandard2.0/InfraGens.deps.json +++ b/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens/bin/Debug/netstandard2.0/InfraGens.deps.json @@ -18,23 +18,10 @@ "InfraGens.dll": {} } }, - "Humanizer.Core/2.14.1": { - "runtime": { - "lib/netstandard2.0/Humanizer.dll": { - "assemblyVersion": "2.14.0.0", - "fileVersion": "2.14.1.48190" - } - } - }, + "Humanizer.Core/2.14.1": {}, "Microsoft.Bcl.AsyncInterfaces/6.0.0": { "dependencies": { "System.Threading.Tasks.Extensions": "4.5.4" - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.dll": { - "assemblyVersion": "6.0.0.0", - "fileVersion": "6.0.21.52210" - } } }, "Microsoft.CodeAnalysis.Analyzers/3.3.4": {}, @@ -47,105 +34,11 @@ "System.Runtime.CompilerServices.Unsafe": "6.0.0", "System.Text.Encoding.CodePages": "6.0.0", "System.Threading.Tasks.Extensions": "4.5.4" - }, - "runtime": { - "lib/netstandard2.0/Microsoft.CodeAnalysis.dll": { - "assemblyVersion": "4.3.0.0", - "fileVersion": "4.300.22.43017" - } - }, - "resources": { - "lib/netstandard2.0/cs/Microsoft.CodeAnalysis.resources.dll": { - "locale": "cs" - }, - "lib/netstandard2.0/de/Microsoft.CodeAnalysis.resources.dll": { - "locale": "de" - }, - "lib/netstandard2.0/es/Microsoft.CodeAnalysis.resources.dll": { - "locale": "es" - }, - "lib/netstandard2.0/fr/Microsoft.CodeAnalysis.resources.dll": { - "locale": "fr" - }, - "lib/netstandard2.0/it/Microsoft.CodeAnalysis.resources.dll": { - "locale": "it" - }, - "lib/netstandard2.0/ja/Microsoft.CodeAnalysis.resources.dll": { - "locale": "ja" - }, - "lib/netstandard2.0/ko/Microsoft.CodeAnalysis.resources.dll": { - "locale": "ko" - }, - "lib/netstandard2.0/pl/Microsoft.CodeAnalysis.resources.dll": { - "locale": "pl" - }, - "lib/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.resources.dll": { - "locale": "pt-BR" - }, - "lib/netstandard2.0/ru/Microsoft.CodeAnalysis.resources.dll": { - "locale": "ru" - }, - "lib/netstandard2.0/tr/Microsoft.CodeAnalysis.resources.dll": { - "locale": "tr" - }, - "lib/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.resources.dll": { - "locale": "zh-Hans" - }, - "lib/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.resources.dll": { - "locale": "zh-Hant" - } } }, "Microsoft.CodeAnalysis.CSharp/4.3.0": { "dependencies": { "Microsoft.CodeAnalysis.Common": "4.3.0" - }, - "runtime": { - "lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.dll": { - "assemblyVersion": "4.3.0.0", - "fileVersion": "4.300.22.43017" - } - }, - "resources": { - "lib/netstandard2.0/cs/Microsoft.CodeAnalysis.CSharp.resources.dll": { - "locale": "cs" - }, - "lib/netstandard2.0/de/Microsoft.CodeAnalysis.CSharp.resources.dll": { - "locale": "de" - }, - "lib/netstandard2.0/es/Microsoft.CodeAnalysis.CSharp.resources.dll": { - "locale": "es" - }, - "lib/netstandard2.0/fr/Microsoft.CodeAnalysis.CSharp.resources.dll": { - "locale": "fr" - }, - "lib/netstandard2.0/it/Microsoft.CodeAnalysis.CSharp.resources.dll": { - "locale": "it" - }, - "lib/netstandard2.0/ja/Microsoft.CodeAnalysis.CSharp.resources.dll": { - "locale": "ja" - }, - "lib/netstandard2.0/ko/Microsoft.CodeAnalysis.CSharp.resources.dll": { - "locale": "ko" - }, - "lib/netstandard2.0/pl/Microsoft.CodeAnalysis.CSharp.resources.dll": { - "locale": "pl" - }, - "lib/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll": { - "locale": "pt-BR" - }, - "lib/netstandard2.0/ru/Microsoft.CodeAnalysis.CSharp.resources.dll": { - "locale": "ru" - }, - "lib/netstandard2.0/tr/Microsoft.CodeAnalysis.CSharp.resources.dll": { - "locale": "tr" - }, - "lib/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll": { - "locale": "zh-Hans" - }, - "lib/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll": { - "locale": "zh-Hant" - } } }, "Microsoft.CodeAnalysis.CSharp.Workspaces/4.3.0": { @@ -154,53 +47,6 @@ "Microsoft.CodeAnalysis.CSharp": "4.3.0", "Microsoft.CodeAnalysis.Common": "4.3.0", "Microsoft.CodeAnalysis.Workspaces.Common": "4.3.0" - }, - "runtime": { - "lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.Workspaces.dll": { - "assemblyVersion": "4.3.0.0", - "fileVersion": "4.300.22.43017" - } - }, - "resources": { - "lib/netstandard2.0/cs/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { - "locale": "cs" - }, - "lib/netstandard2.0/de/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { - "locale": "de" - }, - "lib/netstandard2.0/es/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { - "locale": "es" - }, - "lib/netstandard2.0/fr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { - "locale": "fr" - }, - "lib/netstandard2.0/it/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { - "locale": "it" - }, - "lib/netstandard2.0/ja/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { - "locale": "ja" - }, - "lib/netstandard2.0/ko/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { - "locale": "ko" - }, - "lib/netstandard2.0/pl/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { - "locale": "pl" - }, - "lib/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { - "locale": "pt-BR" - }, - "lib/netstandard2.0/ru/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { - "locale": "ru" - }, - "lib/netstandard2.0/tr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { - "locale": "tr" - }, - "lib/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { - "locale": "zh-Hans" - }, - "lib/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { - "locale": "zh-Hant" - } } }, "Microsoft.CodeAnalysis.Workspaces.Common/4.3.0": { @@ -210,53 +56,6 @@ "Microsoft.CodeAnalysis.Common": "4.3.0", "System.Composition": "6.0.0", "System.IO.Pipelines": "6.0.3" - }, - "runtime": { - "lib/netstandard2.0/Microsoft.CodeAnalysis.Workspaces.dll": { - "assemblyVersion": "4.3.0.0", - "fileVersion": "4.300.22.43017" - } - }, - "resources": { - "lib/netstandard2.0/cs/Microsoft.CodeAnalysis.Workspaces.resources.dll": { - "locale": "cs" - }, - "lib/netstandard2.0/de/Microsoft.CodeAnalysis.Workspaces.resources.dll": { - "locale": "de" - }, - "lib/netstandard2.0/es/Microsoft.CodeAnalysis.Workspaces.resources.dll": { - "locale": "es" - }, - "lib/netstandard2.0/fr/Microsoft.CodeAnalysis.Workspaces.resources.dll": { - "locale": "fr" - }, - "lib/netstandard2.0/it/Microsoft.CodeAnalysis.Workspaces.resources.dll": { - "locale": "it" - }, - "lib/netstandard2.0/ja/Microsoft.CodeAnalysis.Workspaces.resources.dll": { - "locale": "ja" - }, - "lib/netstandard2.0/ko/Microsoft.CodeAnalysis.Workspaces.resources.dll": { - "locale": "ko" - }, - "lib/netstandard2.0/pl/Microsoft.CodeAnalysis.Workspaces.resources.dll": { - "locale": "pl" - }, - "lib/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.Workspaces.resources.dll": { - "locale": "pt-BR" - }, - "lib/netstandard2.0/ru/Microsoft.CodeAnalysis.Workspaces.resources.dll": { - "locale": "ru" - }, - "lib/netstandard2.0/tr/Microsoft.CodeAnalysis.Workspaces.resources.dll": { - "locale": "tr" - }, - "lib/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.Workspaces.resources.dll": { - "locale": "zh-Hans" - }, - "lib/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.Workspaces.resources.dll": { - "locale": "zh-Hant" - } } }, "Microsoft.NETCore.Platforms/1.1.0": {}, @@ -265,24 +64,11 @@ "Microsoft.NETCore.Platforms": "1.1.0" } }, - "System.Buffers/4.5.1": { - "runtime": { - "lib/netstandard2.0/System.Buffers.dll": { - "assemblyVersion": "4.0.3.0", - "fileVersion": "4.6.28619.1" - } - } - }, + "System.Buffers/4.5.1": {}, "System.Collections.Immutable/6.0.0": { "dependencies": { "System.Memory": "4.5.4", "System.Runtime.CompilerServices.Unsafe": "6.0.0" - }, - "runtime": { - "lib/netstandard2.0/System.Collections.Immutable.dll": { - "assemblyVersion": "6.0.0.0", - "fileVersion": "6.0.21.52210" - } } }, "System.Composition/6.0.0": { @@ -294,55 +80,23 @@ "System.Composition.TypedParts": "6.0.0" } }, - "System.Composition.AttributedModel/6.0.0": { - "runtime": { - "lib/netstandard2.0/System.Composition.AttributedModel.dll": { - "assemblyVersion": "6.0.0.0", - "fileVersion": "6.0.21.52210" - } - } - }, + "System.Composition.AttributedModel/6.0.0": {}, "System.Composition.Convention/6.0.0": { "dependencies": { "System.Composition.AttributedModel": "6.0.0" - }, - "runtime": { - "lib/netstandard2.0/System.Composition.Convention.dll": { - "assemblyVersion": "6.0.0.0", - "fileVersion": "6.0.21.52210" - } } }, "System.Composition.Hosting/6.0.0": { "dependencies": { "System.Composition.Runtime": "6.0.0" - }, - "runtime": { - "lib/netstandard2.0/System.Composition.Hosting.dll": { - "assemblyVersion": "6.0.0.0", - "fileVersion": "6.0.21.52210" - } - } - }, - "System.Composition.Runtime/6.0.0": { - "runtime": { - "lib/netstandard2.0/System.Composition.Runtime.dll": { - "assemblyVersion": "6.0.0.0", - "fileVersion": "6.0.21.52210" - } } }, + "System.Composition.Runtime/6.0.0": {}, "System.Composition.TypedParts/6.0.0": { "dependencies": { "System.Composition.AttributedModel": "6.0.0", "System.Composition.Hosting": "6.0.0", "System.Composition.Runtime": "6.0.0" - }, - "runtime": { - "lib/netstandard2.0/System.Composition.TypedParts.dll": { - "assemblyVersion": "6.0.0.0", - "fileVersion": "6.0.21.52210" - } } }, "System.IO.Pipelines/6.0.3": { @@ -350,12 +104,6 @@ "System.Buffers": "4.5.1", "System.Memory": "4.5.4", "System.Threading.Tasks.Extensions": "4.5.4" - }, - "runtime": { - "lib/netstandard2.0/System.IO.Pipelines.dll": { - "assemblyVersion": "6.0.0.0", - "fileVersion": "6.0.522.21309" - } } }, "System.Memory/4.5.4": { @@ -363,62 +111,24 @@ "System.Buffers": "4.5.1", "System.Numerics.Vectors": "4.4.0", "System.Runtime.CompilerServices.Unsafe": "6.0.0" - }, - "runtime": { - "lib/netstandard2.0/System.Memory.dll": { - "assemblyVersion": "4.0.1.1", - "fileVersion": "4.6.28619.1" - } - } - }, - "System.Numerics.Vectors/4.4.0": { - "runtime": { - "lib/netstandard2.0/System.Numerics.Vectors.dll": { - "assemblyVersion": "4.1.3.0", - "fileVersion": "4.6.25519.3" - } } }, + "System.Numerics.Vectors/4.4.0": {}, "System.Reflection.Metadata/5.0.0": { "dependencies": { "System.Collections.Immutable": "6.0.0" - }, - "runtime": { - "lib/netstandard2.0/System.Reflection.Metadata.dll": { - "assemblyVersion": "5.0.0.0", - "fileVersion": "5.0.20.51904" - } - } - }, - "System.Runtime.CompilerServices.Unsafe/6.0.0": { - "runtime": { - "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll": { - "assemblyVersion": "6.0.0.0", - "fileVersion": "6.0.21.52210" - } } }, + "System.Runtime.CompilerServices.Unsafe/6.0.0": {}, "System.Text.Encoding.CodePages/6.0.0": { "dependencies": { "System.Memory": "4.5.4", "System.Runtime.CompilerServices.Unsafe": "6.0.0" - }, - "runtime": { - "lib/netstandard2.0/System.Text.Encoding.CodePages.dll": { - "assemblyVersion": "6.0.0.0", - "fileVersion": "6.0.21.52210" - } } }, "System.Threading.Tasks.Extensions/4.5.4": { "dependencies": { "System.Runtime.CompilerServices.Unsafe": "6.0.0" - }, - "runtime": { - "lib/netstandard2.0/System.Threading.Tasks.Extensions.dll": { - "assemblyVersion": "4.2.0.1", - "fileVersion": "4.6.28619.1" - } } } } diff --git a/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens/bin/Debug/netstandard2.0/InfraGens.dll b/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens/bin/Debug/netstandard2.0/InfraGens.dll index fa0d887f37e6dcdbcf214f36ac803bf1a8277ae3..acb6b4f4ca305747150a133583e87921fcc29655 100644 GIT binary patch literal 31744 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 UuWj~khW`UUj{L**`{#lG25lR0761SM diff --git a/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens/obj/Debug/netstandard2.0/InfraGens.AssemblyInfo.cs b/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens/obj/Debug/netstandard2.0/InfraGens.AssemblyInfo.cs index 05565b5..738ebfd 100644 --- a/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens/obj/Debug/netstandard2.0/InfraGens.AssemblyInfo.cs +++ b/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens/obj/Debug/netstandard2.0/InfraGens.AssemblyInfo.cs @@ -13,7 +13,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("InfraGens")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+a3cd3e86a161e3ee450256b1b37c6a4583c70840")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+a4090547509ba65f8ba7b22442c10d06c15217e0")] [assembly: System.Reflection.AssemblyProductAttribute("InfraGens")] [assembly: System.Reflection.AssemblyTitleAttribute("InfraGens")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens/obj/Debug/netstandard2.0/InfraGens.AssemblyInfoInputs.cache b/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens/obj/Debug/netstandard2.0/InfraGens.AssemblyInfoInputs.cache index 3271586..b38a13f 100644 --- a/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens/obj/Debug/netstandard2.0/InfraGens.AssemblyInfoInputs.cache +++ b/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens/obj/Debug/netstandard2.0/InfraGens.AssemblyInfoInputs.cache @@ -1 +1 @@ -4d7b04418b2c47b7b94b1a5f45dde776f61dbc290d8ac0d36d9bd928c45d8e46 +bcabcaf3c249ae33cc89859b7a823a64fc0953094cafd41dbc46110a15cef167 diff --git a/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens/obj/Debug/netstandard2.0/InfraGens.csproj.CoreCompileInputs.cache b/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens/obj/Debug/netstandard2.0/InfraGens.csproj.CoreCompileInputs.cache index 2a80291..5122da2 100644 --- a/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens/obj/Debug/netstandard2.0/InfraGens.csproj.CoreCompileInputs.cache +++ b/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens/obj/Debug/netstandard2.0/InfraGens.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -34f467799bbdb1e93c09f58be677e4b18b9b7bf76f27dba5589aac397a1cfee1 +f8913c040e82af0961f443a8e28887f6c9fd2d43dd3fd686c1c929597ca99122 diff --git a/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens/obj/Debug/netstandard2.0/InfraGens.csproj.FileListAbsolute.txt b/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens/obj/Debug/netstandard2.0/InfraGens.csproj.FileListAbsolute.txt index a8c19b4..368d0f5 100644 --- a/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens/obj/Debug/netstandard2.0/InfraGens.csproj.FileListAbsolute.txt +++ b/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens/obj/Debug/netstandard2.0/InfraGens.csproj.FileListAbsolute.txt @@ -8,3 +8,13 @@ A:\Projects\Infra\Assets\SourceGeneration\InfraGens\InfraGens\InfraGens\obj\Debu A:\Projects\Infra\Assets\SourceGeneration\InfraGens\InfraGens\InfraGens\obj\Debug\netstandard2.0\InfraGens.csproj.CoreCompileInputs.cache A:\Projects\Infra\Assets\SourceGeneration\InfraGens\InfraGens\InfraGens\obj\Debug\netstandard2.0\InfraGens.dll A:\Projects\Infra\Assets\SourceGeneration\InfraGens\InfraGens\InfraGens\obj\Debug\netstandard2.0\InfraGens.pdb +A:\Projects\Infra\Assets\SourceGeneration\InfraGens~\InfraGens\InfraGens\obj\Debug\netstandard2.0\InfraGens.csproj.AssemblyReference.cache +A:\Projects\Infra\Assets\SourceGeneration\InfraGens~\InfraGens\InfraGens\obj\Debug\netstandard2.0\InfraGens.GeneratedMSBuildEditorConfig.editorconfig +A:\Projects\Infra\Assets\SourceGeneration\InfraGens~\InfraGens\InfraGens\obj\Debug\netstandard2.0\InfraGens.AssemblyInfoInputs.cache +A:\Projects\Infra\Assets\SourceGeneration\InfraGens~\InfraGens\InfraGens\obj\Debug\netstandard2.0\InfraGens.AssemblyInfo.cs +A:\Projects\Infra\Assets\SourceGeneration\InfraGens~\InfraGens\InfraGens\obj\Debug\netstandard2.0\InfraGens.csproj.CoreCompileInputs.cache +A:\Projects\Infra\Assets\SourceGeneration\InfraGens~\InfraGens\InfraGens\obj\Debug\netstandard2.0\InfraGens.dll +A:\Projects\Infra\Assets\SourceGeneration\InfraGens~\InfraGens\InfraGens\obj\Debug\netstandard2.0\InfraGens.pdb +A:\Projects\Infra\Assets\SourceGeneration\InfraGens~\InfraGens\InfraGens\bin\Debug\netstandard2.0\InfraGens.deps.json +A:\Projects\Infra\Assets\SourceGeneration\InfraGens~\InfraGens\InfraGens\bin\Debug\netstandard2.0\InfraGens.dll +A:\Projects\Infra\Assets\SourceGeneration\InfraGens~\InfraGens\InfraGens\bin\Debug\netstandard2.0\InfraGens.pdb diff --git a/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens/obj/Debug/netstandard2.0/InfraGens.dll b/Assets/SourceGeneration/InfraGens~/InfraGens/InfraGens/obj/Debug/netstandard2.0/InfraGens.dll index fa0d887f37e6dcdbcf214f36ac803bf1a8277ae3..acb6b4f4ca305747150a133583e87921fcc29655 100644 GIT binary patch literal 31744 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 UuWj~khW`UUj{L**`{#lG25lR0761SM diff --git a/Assets/UnityCodeGen.Generated/CameraSettingsConfig.Generated.cs b/Assets/UnityCodeGen.Generated/CameraSettingsConfig.Generated.cs deleted file mode 100644 index 87888c4..0000000 --- a/Assets/UnityCodeGen.Generated/CameraSettingsConfig.Generated.cs +++ /dev/null @@ -1,40 +0,0 @@ - -#pragma warning disable CS0105 -using System; -using System; -using System; -using System; -using System; -using System; -using System; -using System; -using System; -using System; -using System; -using Code.Infrastructure.Camera; -using UnityEngine; - -using UnityEngine; -using UnityEngine.AddressableAssets; - -namespace Code.Infrastructure.Camera{ -#pragma warning restore CS0105 -[CreateAssetMenu(fileName = "CameraSettingsConfig", menuName = "Configs/Camera/CameraSettings")] -public class CameraSettingsConfig : ScriptableObject -{ - public System.Single defaultDistance; -public System.Single minDistance; -public System.Single maxDistance; -public System.Single distanceMovementSpeed; -public System.Single rotationSpeed; -public System.Single rotationSharpness; -public System.Single followSharpness; -public System.Single minVerticalAngle; -public System.Single maxVerticalAngle; -public System.Single defaultVerticalAngle; -public System.Single fov; -public Code.Infrastructure.Camera.CameraMode cameraMode; -public UnityEngine.Vector3 defaultFollowPosition; - -} -} diff --git a/Assets/UnityCodeGen.Generated/CameraSettingsConfig.Generated.cs.meta b/Assets/UnityCodeGen.Generated/CameraSettingsConfig.Generated.cs.meta deleted file mode 100644 index 908552a..0000000 --- a/Assets/UnityCodeGen.Generated/CameraSettingsConfig.Generated.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: c88ecd63428fe3c41ae0fe17948d931e \ No newline at end of file diff --git a/Assets/UnityCodeGen.Generated/Code.Infrastructure.App.AppStateMachine.Generated.cs b/Assets/UnityCodeGen.Generated/Code.Infrastructure.App.AppStateMachine.Generated.cs deleted file mode 100644 index ff47eb4..0000000 --- a/Assets/UnityCodeGen.Generated/Code.Infrastructure.App.AppStateMachine.Generated.cs +++ /dev/null @@ -1,49 +0,0 @@ - -// -#pragma warning disable CS0105 -using Code.Infrastructure.StateMachine; - -using Code.Infrastructure.App.States; - -using Code.Infrastructure.App.States; - -using Code.Infrastructure.App.States; - -#pragma warning restore CS0105 -namespace Code.Infrastructure.App -{ - -public partial class AppStateMachine : AbstractStateMachine -{ - - public AppStateMachine(Code.Infrastructure.App.AppStateMachineContext context, EventBus.EventBus eventBus) : base(context) - { - -var stateBootstrapState = new BootstrapState(StateMachineContext,eventBus); -States.Add(stateBootstrapState.myState, stateBootstrapState); - -var stateGameplayState = new GameplayState(StateMachineContext,eventBus); -States.Add(stateGameplayState.myState, stateGameplayState); - -var stateMainMenuState = new MainMenuState(StateMachineContext,eventBus); -States.Add(stateMainMenuState.myState, stateMainMenuState); - - } - - protected override bool CheckTransitionAllowed(Code.Infrastructure.App.AppStates nextState) => AllowedStates.HasFlag(nextState); - protected override void ResetAllowedTransitions() => AllowedStates = 0; -} - - public static class AppStateMachineExtensions - { - public static AbstractStateMachine AllowStateTransition( - this AbstractStateMachine stateMachine, Code.Infrastructure.App.AppStates state) - { - if (stateMachine == null) return null; - - stateMachine.AllowedStates |= state; - return stateMachine; - } - } -} - diff --git a/Assets/UnityCodeGen.Generated/Code.Infrastructure.App.AppStateMachine.Generated.cs.meta b/Assets/UnityCodeGen.Generated/Code.Infrastructure.App.AppStateMachine.Generated.cs.meta deleted file mode 100644 index e310957..0000000 --- a/Assets/UnityCodeGen.Generated/Code.Infrastructure.App.AppStateMachine.Generated.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: 5a6c59a69440bf440a166390c52d5c65 \ No newline at end of file diff --git a/Assets/UnityCodeGen.Generated/Code.Infrastructure.App.States.BootstrapState.Generated.cs b/Assets/UnityCodeGen.Generated/Code.Infrastructure.App.States.BootstrapState.Generated.cs deleted file mode 100644 index 7a1ea88..0000000 --- a/Assets/UnityCodeGen.Generated/Code.Infrastructure.App.States.BootstrapState.Generated.cs +++ /dev/null @@ -1,23 +0,0 @@ - - -// retard-generated - -using Code.Infrastructure.StateMachine; - -namespace Code.Infrastructure.App.States -{ - public partial class BootstrapState : BaseState - { - -protected override void _fireEnterState() - { - EventBus.RaiseEvent>(h => h.EnterState()); - } - - protected override void _fireExitState() - { - EventBus.RaiseEvent>(h => h.ExitState()); - } - - } -} diff --git a/Assets/UnityCodeGen.Generated/Code.Infrastructure.App.States.BootstrapState.Generated.cs.meta b/Assets/UnityCodeGen.Generated/Code.Infrastructure.App.States.BootstrapState.Generated.cs.meta deleted file mode 100644 index c4632f8..0000000 --- a/Assets/UnityCodeGen.Generated/Code.Infrastructure.App.States.BootstrapState.Generated.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: a7addc3cce102d548b48a5714208d030 \ No newline at end of file diff --git a/Assets/UnityCodeGen.Generated/Code.Infrastructure.App.States.GameplayState.Generated.cs b/Assets/UnityCodeGen.Generated/Code.Infrastructure.App.States.GameplayState.Generated.cs deleted file mode 100644 index 2b449a3..0000000 --- a/Assets/UnityCodeGen.Generated/Code.Infrastructure.App.States.GameplayState.Generated.cs +++ /dev/null @@ -1,23 +0,0 @@ - - -// retard-generated - -using Code.Infrastructure.StateMachine; - -namespace Code.Infrastructure.App.States -{ - public partial class GameplayState : BaseState - { - -protected override void _fireEnterState() - { - EventBus.RaiseEvent>(h => h.EnterState()); - } - - protected override void _fireExitState() - { - EventBus.RaiseEvent>(h => h.ExitState()); - } - - } -} diff --git a/Assets/UnityCodeGen.Generated/Code.Infrastructure.App.States.GameplayState.Generated.cs.meta b/Assets/UnityCodeGen.Generated/Code.Infrastructure.App.States.GameplayState.Generated.cs.meta deleted file mode 100644 index f70aeef..0000000 --- a/Assets/UnityCodeGen.Generated/Code.Infrastructure.App.States.GameplayState.Generated.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: ea098a6fe9bfd164895db3056277a55d \ No newline at end of file diff --git a/Assets/UnityCodeGen.Generated/Code.Infrastructure.App.States.MainMenuState.Generated.cs b/Assets/UnityCodeGen.Generated/Code.Infrastructure.App.States.MainMenuState.Generated.cs deleted file mode 100644 index 7aab1a2..0000000 --- a/Assets/UnityCodeGen.Generated/Code.Infrastructure.App.States.MainMenuState.Generated.cs +++ /dev/null @@ -1,23 +0,0 @@ - - -// retard-generated - -using Code.Infrastructure.StateMachine; - -namespace Code.Infrastructure.App.States -{ - public partial class MainMenuState : BaseState - { - -protected override void _fireEnterState() - { - EventBus.RaiseEvent>(h => h.EnterState()); - } - - protected override void _fireExitState() - { - EventBus.RaiseEvent>(h => h.ExitState()); - } - - } -} diff --git a/Assets/UnityCodeGen.Generated/Code.Infrastructure.App.States.MainMenuState.Generated.cs.meta b/Assets/UnityCodeGen.Generated/Code.Infrastructure.App.States.MainMenuState.Generated.cs.meta deleted file mode 100644 index d10783e..0000000 --- a/Assets/UnityCodeGen.Generated/Code.Infrastructure.App.States.MainMenuState.Generated.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: 99e53d28eb79b4a44bae11561b625594 \ No newline at end of file diff --git a/Assets/UnityCodeGen.Generated/Code.Infrastructure.Camera.CameraStateMachine.Generated.cs b/Assets/UnityCodeGen.Generated/Code.Infrastructure.Camera.CameraStateMachine.Generated.cs deleted file mode 100644 index 1e9d26f..0000000 --- a/Assets/UnityCodeGen.Generated/Code.Infrastructure.Camera.CameraStateMachine.Generated.cs +++ /dev/null @@ -1,42 +0,0 @@ - -// -#pragma warning disable CS0105 -using Code.Infrastructure.StateMachine; - -using Code.Infrastructure.Camera.CameraStates; - -using Code.Infrastructure.Camera.CameraStates; - -#pragma warning restore CS0105 -namespace Code.Infrastructure.Camera -{ - -public partial class CameraStateMachine : AbstractStateMachine -{ - - public CameraStateMachine(Code.Infrastructure.Camera.CameraStateMachineContext context, EventBus.EventBus eventBus) : base(context) - { - -var stateNoneCameraState = new NoneCameraState(StateMachineContext,eventBus); -States.Add(stateNoneCameraState.myState, stateNoneCameraState); - - - } - - protected override bool CheckTransitionAllowed(Code.Infrastructure.Camera.CameraMode nextState) => AllowedStates.HasFlag(nextState); - protected override void ResetAllowedTransitions() => AllowedStates = 0; -} - - public static class CameraStateMachineExtensions - { - public static AbstractStateMachine AllowStateTransition( - this AbstractStateMachine stateMachine, Code.Infrastructure.Camera.CameraMode state) - { - if (stateMachine == null) return null; - - stateMachine.AllowedStates |= state; - return stateMachine; - } - } -} - diff --git a/Assets/UnityCodeGen.Generated/Code.Infrastructure.Camera.CameraStateMachine.Generated.cs.meta b/Assets/UnityCodeGen.Generated/Code.Infrastructure.Camera.CameraStateMachine.Generated.cs.meta deleted file mode 100644 index 18b94ab..0000000 --- a/Assets/UnityCodeGen.Generated/Code.Infrastructure.Camera.CameraStateMachine.Generated.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: 345063e937b7f8b47a0a476ba4be3cae \ No newline at end of file diff --git a/Assets/UnityCodeGen.Generated/Code.Infrastructure.Camera.CameraStates.FirstPersonCameraState.Generated.cs b/Assets/UnityCodeGen.Generated/Code.Infrastructure.Camera.CameraStates.FirstPersonCameraState.Generated.cs deleted file mode 100644 index dbabb3f..0000000 --- a/Assets/UnityCodeGen.Generated/Code.Infrastructure.Camera.CameraStates.FirstPersonCameraState.Generated.cs +++ /dev/null @@ -1,13 +0,0 @@ - - -// retard-generated - -using Code.Infrastructure.StateMachine; - -namespace Code.Infrastructure.Camera.CameraStates -{ - public partial class FirstPersonCameraState - { - - } -} diff --git a/Assets/UnityCodeGen.Generated/Code.Infrastructure.Camera.CameraStates.FirstPersonCameraState.Generated.cs.meta b/Assets/UnityCodeGen.Generated/Code.Infrastructure.Camera.CameraStates.FirstPersonCameraState.Generated.cs.meta deleted file mode 100644 index 9252ce4..0000000 --- a/Assets/UnityCodeGen.Generated/Code.Infrastructure.Camera.CameraStates.FirstPersonCameraState.Generated.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: 54a17374a26438b4390b3146d07da638 \ No newline at end of file diff --git a/Assets/UnityCodeGen.Generated/Code.Infrastructure.Camera.CameraStates.NoneCameraState.Generated.cs b/Assets/UnityCodeGen.Generated/Code.Infrastructure.Camera.CameraStates.NoneCameraState.Generated.cs deleted file mode 100644 index 87b6cd7..0000000 --- a/Assets/UnityCodeGen.Generated/Code.Infrastructure.Camera.CameraStates.NoneCameraState.Generated.cs +++ /dev/null @@ -1,13 +0,0 @@ - - -// retard-generated - -using Code.Infrastructure.StateMachine; - -namespace Code.Infrastructure.Camera.CameraStates -{ - public partial class NoneCameraState - { - - } -} diff --git a/Assets/UnityCodeGen.Generated/Code.Infrastructure.Camera.CameraStates.NoneCameraState.Generated.cs.meta b/Assets/UnityCodeGen.Generated/Code.Infrastructure.Camera.CameraStates.NoneCameraState.Generated.cs.meta deleted file mode 100644 index 472f322..0000000 --- a/Assets/UnityCodeGen.Generated/Code.Infrastructure.Camera.CameraStates.NoneCameraState.Generated.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: 27063949209437c4cb218fb0225384ed \ No newline at end of file diff --git a/Assets/UnityCodeGen.Generated/ConfigLocator.Generated.cs b/Assets/UnityCodeGen.Generated/ConfigLocator.Generated.cs deleted file mode 100644 index a5b5df0..0000000 --- a/Assets/UnityCodeGen.Generated/ConfigLocator.Generated.cs +++ /dev/null @@ -1,32 +0,0 @@ - -#pragma warning disable CS0105 - using Code.Infrastructure.SceneLoader; -using Code.Infrastructure.Input; -using Code.Infrastructure.Camera; -using Code.Infrastructure.Camera; - - using UnityEngine; -#pragma warning restore CS0105 - - namespace Code.Infrastructure.Configs - { - - public partial class ConfigLocator - { - partial void LoadConfigs() - { - SystemConfigsReferences systemConfigsReferences = Resources.Load("SystemConfigsReferences"); - - _multipleConfigReferences.Add(typeof(Code.Infrastructure.SceneLoader.SceneInfoConfig), systemConfigsReferences.SceneInfo); - - _singleConfigReferences.Add(typeof(Code.Infrastructure.Input.InputServiceConfig), systemConfigsReferences.InputService); - - _multipleConfigReferences.Add(typeof(Code.Infrastructure.Camera.CameraSettingsConfig), systemConfigsReferences.CameraSettings); - - _singleConfigReferences.Add(typeof(Code.Infrastructure.Camera.GameCameraConfig), systemConfigsReferences.GameCamera); - - //_singleConfigReferences.Add(typeof(ScenesAssetReferences), systemConfigsReferences.scenesAssetReferences); - } - } - } - \ No newline at end of file diff --git a/Assets/UnityCodeGen.Generated/ConfigLocator.Generated.cs.meta b/Assets/UnityCodeGen.Generated/ConfigLocator.Generated.cs.meta deleted file mode 100644 index bf5d3bc..0000000 --- a/Assets/UnityCodeGen.Generated/ConfigLocator.Generated.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: b516a9c04f1000e43936564c38e25cfb \ No newline at end of file diff --git a/Assets/UnityCodeGen.Generated/DebugClassConfig.Generated.cs b/Assets/UnityCodeGen.Generated/DebugClassConfig.Generated.cs deleted file mode 100644 index 3737e83..0000000 --- a/Assets/UnityCodeGen.Generated/DebugClassConfig.Generated.cs +++ /dev/null @@ -1,25 +0,0 @@ - -using UnityEngine.AddressableAssets; -using Code.Infrastructure.SceneLoader; - -#pragma warning disable CS0105 -using UnityEngine; -using UnityEngine.AddressableAssets; -using System; -using Code.Infrastructure.SceneLoader; - -using UnityEngine; -using UnityEngine.AddressableAssets; - -#pragma warning restore CS0105 -namespace Code.Example{ -[CreateAssetMenu(fileName = "DebugClassConfig", menuName = "Configs/DebugClassConfig")] -public class DebugClassConfig : ScriptableObject -{ - public UnityEngine.AddressableAssets.AssetReference SceneAsset; -public Code.Infrastructure.SceneLoader.SceneId SceneId; -public System.Int32 _a; -public Code.Infrastructure.SceneLoader.SceneLoader _b; - -} -} diff --git a/Assets/UnityCodeGen.Generated/DebugClassConfig.Generated.cs.meta b/Assets/UnityCodeGen.Generated/DebugClassConfig.Generated.cs.meta deleted file mode 100644 index 25a0eee..0000000 --- a/Assets/UnityCodeGen.Generated/DebugClassConfig.Generated.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: 2bdfef8d142a3e1438c89da242d2be2f \ No newline at end of file diff --git a/Assets/UnityCodeGen.Generated/GameCameraConfig.Generated.cs b/Assets/UnityCodeGen.Generated/GameCameraConfig.Generated.cs deleted file mode 100644 index fb459ed..0000000 --- a/Assets/UnityCodeGen.Generated/GameCameraConfig.Generated.cs +++ /dev/null @@ -1,16 +0,0 @@ - -#pragma warning disable CS0105 -using UnityEngine.AddressableAssets; - -using UnityEngine; -using UnityEngine.AddressableAssets; - -namespace Code.Infrastructure.Camera{ -#pragma warning restore CS0105 -[CreateAssetMenu(fileName = "GameCameraConfig", menuName = "Configs/Camera/CameraConfig")] -public class GameCameraConfig : ScriptableObject -{ - public UnityEngine.AddressableAssets.AssetReference Camera; - -} -} diff --git a/Assets/UnityCodeGen.Generated/GameCameraConfig.Generated.cs.meta b/Assets/UnityCodeGen.Generated/GameCameraConfig.Generated.cs.meta deleted file mode 100644 index f88f5ab..0000000 --- a/Assets/UnityCodeGen.Generated/GameCameraConfig.Generated.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: e423434f8bbcbc24e9b8c71840daf6f1 \ No newline at end of file diff --git a/Assets/UnityCodeGen.Generated/InputServiceConfig.Generated.cs b/Assets/UnityCodeGen.Generated/InputServiceConfig.Generated.cs deleted file mode 100644 index d29eb22..0000000 --- a/Assets/UnityCodeGen.Generated/InputServiceConfig.Generated.cs +++ /dev/null @@ -1,16 +0,0 @@ - -#pragma warning disable CS0105 -using UnityEngine.InputSystem; - -using UnityEngine; -using UnityEngine.AddressableAssets; - -namespace Code.Infrastructure.Input{ -#pragma warning restore CS0105 -[CreateAssetMenu(fileName = "InputServiceConfig", menuName = "Configs/InputService")] -public class InputServiceConfig : ScriptableObject -{ - public UnityEngine.InputSystem.InputActionAsset inputActionAsset; - -} -} diff --git a/Assets/UnityCodeGen.Generated/InputServiceConfig.Generated.cs.meta b/Assets/UnityCodeGen.Generated/InputServiceConfig.Generated.cs.meta deleted file mode 100644 index 456a881..0000000 --- a/Assets/UnityCodeGen.Generated/InputServiceConfig.Generated.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: ab6d921463750b04aaccb1bf3b2d9608 \ No newline at end of file diff --git a/Assets/UnityCodeGen.Generated/SceneInfoConfig.Generated.cs b/Assets/UnityCodeGen.Generated/SceneInfoConfig.Generated.cs deleted file mode 100644 index 11cfdf6..0000000 --- a/Assets/UnityCodeGen.Generated/SceneInfoConfig.Generated.cs +++ /dev/null @@ -1,18 +0,0 @@ - -#pragma warning disable CS0105 -using UnityEngine.AddressableAssets; -using Code.Infrastructure.SceneLoader; - -using UnityEngine; -using UnityEngine.AddressableAssets; - -namespace Code.Infrastructure.SceneLoader{ -#pragma warning restore CS0105 -[CreateAssetMenu(fileName = "SceneInfoConfig", menuName = "Configs/SceneConfig")] -public class SceneInfoConfig : ScriptableObject -{ - public UnityEngine.AddressableAssets.AssetReference SceneAsset; -public Code.Infrastructure.SceneLoader.SceneId SceneId; - -} -} diff --git a/Assets/UnityCodeGen.Generated/SceneInfoConfig.Generated.cs.meta b/Assets/UnityCodeGen.Generated/SceneInfoConfig.Generated.cs.meta deleted file mode 100644 index 7c6ae0e..0000000 --- a/Assets/UnityCodeGen.Generated/SceneInfoConfig.Generated.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: e2d19619e7539f14ea973463204f542c \ No newline at end of file diff --git a/Assets/UnityCodeGen.Generated/SceneLoader.Generated.cs b/Assets/UnityCodeGen.Generated/SceneLoader.Generated.cs deleted file mode 100644 index a0f585e..0000000 --- a/Assets/UnityCodeGen.Generated/SceneLoader.Generated.cs +++ /dev/null @@ -1,32 +0,0 @@ - -#pragma warning disable CS0105 - -using Code.Infrastructure.EventBus; - -#pragma warning restore CS0105 - -namespace Code.Infrastructure.SceneLoader -{ -public partial class SceneLoader{ -partial void SetupScenesInfo(){ - - - _scenesActions.Add(SceneId.MainMenu,() => _eventBus.RaiseEvent(h=> h.OnMainMenuSceneLoaded())); - - - _scenesActions.Add(SceneId.Gameplay,() => _eventBus.RaiseEvent(h=> h.OnGameplaySceneLoaded())); - -} -} - - public interface IOnMainMenuSceneLoadedHandler : IGlobalSubscriber - { - void OnMainMenuSceneLoaded(); - } - - public interface IOnGameplaySceneLoadedHandler : IGlobalSubscriber - { - void OnGameplaySceneLoaded(); - } - -} diff --git a/Assets/UnityCodeGen.Generated/SceneLoader.Generated.cs.meta b/Assets/UnityCodeGen.Generated/SceneLoader.Generated.cs.meta deleted file mode 100644 index 6fd4f8f..0000000 --- a/Assets/UnityCodeGen.Generated/SceneLoader.Generated.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: 5687485408450064f98da1725a20926b \ No newline at end of file diff --git a/Assets/UnityCodeGen.Generated/SystemConfigsReferences.Generated.cs b/Assets/UnityCodeGen.Generated/SystemConfigsReferences.Generated.cs deleted file mode 100644 index 5347e46..0000000 --- a/Assets/UnityCodeGen.Generated/SystemConfigsReferences.Generated.cs +++ /dev/null @@ -1,20 +0,0 @@ - -#pragma warning disable CS0105 - using Code.Infrastructure.SceneLoader; -using Code.Infrastructure.Input; -using Code.Infrastructure.Camera; -using Code.Infrastructure.Camera; - - using UnityEngine.AddressableAssets; -#pragma warning restore CS0105 - - namespace Code.Infrastructure.Configs{ - public partial class SystemConfigsReferences - { - public string SceneInfo; -public AssetReference InputService; -public string CameraSettings; -public AssetReference GameCamera; - - } -} diff --git a/Assets/UnityCodeGen.Generated/SystemConfigsReferences.Generated.cs.meta b/Assets/UnityCodeGen.Generated/SystemConfigsReferences.Generated.cs.meta deleted file mode 100644 index efe52cc..0000000 --- a/Assets/UnityCodeGen.Generated/SystemConfigsReferences.Generated.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: 4e3bd6b172c28ca48b40dd639ef19caf \ No newline at end of file