Full Code of AnnulusGames/UnityCodeGen for AI

main f938d8a010a3 cached
65 files
95.6 KB
32.8k tokens
24 symbols
1 requests
Download .txt
Repository: AnnulusGames/UnityCodeGen
Branch: main
Commit: f938d8a010a3
Files: 65
Total size: 95.6 KB

Directory structure:
gitextract_y2n4sr48/

├── .gitattributes
├── .gitignore
├── Assets/
│   ├── UnityCodeGen/
│   │   ├── Editor/
│   │   │   ├── AnnulusGames.UnityCodeGen.Editor.asmdef
│   │   │   ├── AnnulusGames.UnityCodeGen.Editor.asmdef.meta
│   │   │   ├── Core/
│   │   │   │   ├── CodeText.cs
│   │   │   │   ├── CodeText.cs.meta
│   │   │   │   ├── GeneratorAttribute.cs
│   │   │   │   ├── GeneratorAttribute.cs.meta
│   │   │   │   ├── GeneratorContext.cs
│   │   │   │   ├── GeneratorContext.cs.meta
│   │   │   │   ├── ICodeGenerator.cs
│   │   │   │   ├── ICodeGenerator.cs.meta
│   │   │   │   ├── UnityCodeGenUtility.cs
│   │   │   │   └── UnityCodeGenUtility.cs.meta
│   │   │   ├── Core.meta
│   │   │   ├── MenuItems.cs
│   │   │   ├── MenuItems.cs.meta
│   │   │   ├── Settings/
│   │   │   │   ├── UnityCodeGenSettings.cs
│   │   │   │   └── UnityCodeGenSettings.cs.meta
│   │   │   ├── Settings.meta
│   │   │   ├── Utils/
│   │   │   │   ├── ScriptFileGenerator.cs
│   │   │   │   └── ScriptFileGenerator.cs.meta
│   │   │   └── Utils.meta
│   │   ├── Editor.meta
│   │   ├── Samples~/
│   │   │   └── Tags & Layers/
│   │   │       ├── Editor/
│   │   │       │   ├── AnnulusGames.UnityCodeGen.Samples.TagsAndLayers.Editor.asmdef
│   │   │       │   ├── AnnulusGames.UnityCodeGen.Samples.TagsAndLayers.Editor.asmdef.meta
│   │   │       │   ├── LayersGenerator.cs
│   │   │       │   ├── LayersGenerator.cs.meta
│   │   │       │   ├── SortingLayersGenerator.cs
│   │   │       │   ├── SortingLayersGenerator.cs.meta
│   │   │       │   ├── TagsGenerator.cs
│   │   │       │   └── TagsGenerator.cs.meta
│   │   │       └── Editor.meta
│   │   ├── package.json
│   │   └── package.json.meta
│   └── UnityCodeGen.meta
├── LICENSE
├── Packages/
│   ├── manifest.json
│   └── packages-lock.json
├── ProjectSettings/
│   ├── AudioManager.asset
│   ├── ClusterInputManager.asset
│   ├── DynamicsManager.asset
│   ├── EditorBuildSettings.asset
│   ├── EditorSettings.asset
│   ├── GraphicsSettings.asset
│   ├── InputManager.asset
│   ├── MemorySettings.asset
│   ├── NavMeshAreas.asset
│   ├── PackageManagerSettings.asset
│   ├── Packages/
│   │   └── com.unity.testtools.codecoverage/
│   │       └── Settings.json
│   ├── Physics2DSettings.asset
│   ├── PresetManager.asset
│   ├── ProjectSettings.asset
│   ├── ProjectVersion.txt
│   ├── QualitySettings.asset
│   ├── SceneTemplateSettings.json
│   ├── TagManager.asset
│   ├── TimeManager.asset
│   ├── TimelineSettings.asset
│   ├── UnityConnectSettings.asset
│   ├── VFXManager.asset
│   ├── VersionControlSettings.asset
│   └── XRSettings.asset
├── README.md
└── README_JP.md

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitattributes
================================================
# Auto detect text files and perform LF normalization
* text=auto


================================================
FILE: .gitignore
================================================
# This .gitignore file should be placed at the root of your Unity project directory
#
# Get latest from https://github.com/github/gitignore/blob/main/Unity.gitignore
#
/[Ll]ibrary/
/[Tt]emp/
/[Oo]bj/
/[Bb]uild/
/[Bb]uilds/
/[Ll]ogs/
/[Uu]ser[Ss]ettings/

# MemoryCaptures can get excessive in size.
# They also could contain extremely sensitive data
/[Mm]emoryCaptures/

# Recordings can get excessive in size
/[Rr]ecordings/

# Uncomment this line if you wish to ignore the asset store tools plugin
# /[Aa]ssets/AssetStoreTools*

# Autogenerated Jetbrains Rider plugin
/[Aa]ssets/Plugins/Editor/JetBrains*

# Visual Studio cache directory
.vs/

# Gradle cache directory
.gradle/

# Autogenerated VS/MD/Consulo solution and project files
ExportedObj/
.consulo/
*.csproj
*.unityproj
*.sln
*.suo
*.tmp
*.user
*.userprefs
*.pidb
*.booproj
*.svd
*.pdb
*.mdb
*.opendb
*.VC.db

# Unity3D generated meta files
*.pidb.meta
*.pdb.meta
*.mdb.meta

# Unity3D generated file on crash reports
sysinfo.txt

# Builds
*.apk
*.aab
*.unitypackage
*.app

# Crashlytics generated file
crashlytics-build.properties

# Packed Addressables
/[Aa]ssets/[Aa]ddressable[Aa]ssets[Dd]ata/*/*.bin*

# Temporary auto-generated Android Assets
/[Aa]ssets/[Ss]treamingAssets/aa.meta
/[Aa]ssets/[Ss]treamingAssets/aa/*

# DS Store
.DS_Store

# VSCode
.vscode


================================================
FILE: Assets/UnityCodeGen/Editor/AnnulusGames.UnityCodeGen.Editor.asmdef
================================================
{
    "name": "AnnulusGames.UnityCodeGen.Editor",
    "rootNamespace": "",
    "references": [],
    "includePlatforms": [
        "Editor"
    ],
    "excludePlatforms": [],
    "allowUnsafeCode": false,
    "overrideReferences": false,
    "precompiledReferences": [],
    "autoReferenced": true,
    "defineConstraints": [],
    "versionDefines": [],
    "noEngineReferences": false
}

================================================
FILE: Assets/UnityCodeGen/Editor/AnnulusGames.UnityCodeGen.Editor.asmdef.meta
================================================
fileFormatVersion: 2
guid: 81d29a5e4682947dfa73ba6bd09fe0be
AssemblyDefinitionImporter:
  externalObjects: {}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/UnityCodeGen/Editor/Core/CodeText.cs
================================================
namespace UnityCodeGen
{
    internal class CodeText
    {
        public string fileName;
        public string text;
    }
}

================================================
FILE: Assets/UnityCodeGen/Editor/Core/CodeText.cs.meta
================================================
fileFormatVersion: 2
guid: 1d7126fb29d2849a597d936778dbedd4
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/UnityCodeGen/Editor/Core/GeneratorAttribute.cs
================================================
using System;

namespace UnityCodeGen
{
    [AttributeUsage(AttributeTargets.Class)]
    public sealed class GeneratorAttribute : Attribute { }
}

================================================
FILE: Assets/UnityCodeGen/Editor/Core/GeneratorAttribute.cs.meta
================================================
fileFormatVersion: 2
guid: 2a85bd5042f1843a68ccc259b4e9f546
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/UnityCodeGen/Editor/Core/GeneratorContext.cs
================================================
using System.Collections.Generic;

namespace UnityCodeGen
{
    public sealed class GeneratorContext
    {
        private List<CodeText> _codeList = new List<CodeText>();
        internal IReadOnlyList<CodeText> codeList => _codeList;

        private string _overrideFolderPath = null;
        internal string overrideFolderPath => _overrideFolderPath;

        public void AddCode(string fileName, string text)
        {
            _codeList.Add(new CodeText() { fileName = fileName, text = text });
        }

        public void OverrideFolderPath(string path)
        {
            _overrideFolderPath = path;
        }
    }
}

================================================
FILE: Assets/UnityCodeGen/Editor/Core/GeneratorContext.cs.meta
================================================
fileFormatVersion: 2
guid: 34c0377667ac24572a456cf84c47aa9c
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/UnityCodeGen/Editor/Core/ICodeGenerator.cs
================================================
namespace UnityCodeGen
{
    public interface ICodeGenerator
    {
        public void Execute(GeneratorContext context);
    }
}


================================================
FILE: Assets/UnityCodeGen/Editor/Core/ICodeGenerator.cs.meta
================================================
fileFormatVersion: 2
guid: 584462a42ae54483eba7152b41c86e9b
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/UnityCodeGen/Editor/Core/UnityCodeGenUtility.cs
================================================
namespace UnityCodeGen
{
    public static class UnityCodeGenUtility
    {
        public const string defaultFolderPath = "Assets/UnityCodeGen.Generated";

        public static void Generate()
        {
            ScriptFileGenerator.Generate();
        }
    }
}

================================================
FILE: Assets/UnityCodeGen/Editor/Core/UnityCodeGenUtility.cs.meta
================================================
fileFormatVersion: 2
guid: 1c80887af80d8407b833eb2670ae2eae
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/UnityCodeGen/Editor/Core.meta
================================================
fileFormatVersion: 2
guid: e6b8efca00a3340c398c1120e98ea7bd
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/UnityCodeGen/Editor/MenuItems.cs
================================================
using UnityEditor;

namespace UnityCodeGen
{
    static class MenuItems
    {
        const string MENU_GENERATE = "Tools/UnityCodeGen/Generate";
        const string MENU_TOGGLE_AUTO_GENERATE = "Tools/UnityCodeGen/Auto-generate on Compile";

        [InitializeOnLoadMethod]
        static void Init()
        {
            Menu.SetChecked(MENU_TOGGLE_AUTO_GENERATE, UnityCodeGenSettings.autoGenerateOnCompile);
        }

        [MenuItem(MENU_GENERATE)]
        static void Generate()
        {
            ScriptFileGenerator.Generate();
        }

        [MenuItem(MENU_TOGGLE_AUTO_GENERATE)]
        static void ToggleAutoGenerate()
        {
            UnityCodeGenSettings.autoGenerateOnCompile = !UnityCodeGenSettings.autoGenerateOnCompile;
            Menu.SetChecked(MENU_TOGGLE_AUTO_GENERATE, UnityCodeGenSettings.autoGenerateOnCompile);
        }
    }
}


================================================
FILE: Assets/UnityCodeGen/Editor/MenuItems.cs.meta
================================================
fileFormatVersion: 2
guid: 2aa0ed75c5b414fdebd1ea068e1e6b50
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/UnityCodeGen/Editor/Settings/UnityCodeGenSettings.cs
================================================
using UnityEditor;

namespace UnityCodeGen
{
    public static class UnityCodeGenSettings
    {
        const string KEY_GENERATE_ON_COMPILE = "UnityCodeGen-AutoGenerateOnCompile";

        public static bool autoGenerateOnCompile
        {
            get
            {
                if (bool.TryParse(EditorUserSettings.GetConfigValue(KEY_GENERATE_ON_COMPILE), out var result))
                {
                    return result;
                }
                return false;
            }
            set
            {
                EditorUserSettings.SetConfigValue(KEY_GENERATE_ON_COMPILE, value.ToString());
            }
        }
    }
}

================================================
FILE: Assets/UnityCodeGen/Editor/Settings/UnityCodeGenSettings.cs.meta
================================================
fileFormatVersion: 2
guid: 399313ef1fc1343fd80cab2c0e90a46a
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/UnityCodeGen/Editor/Settings.meta
================================================
fileFormatVersion: 2
guid: 191f0e1d40c654f20bf570a27ebeb5eb
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/UnityCodeGen/Editor/Utils/ScriptFileGenerator.cs
================================================
using System;
using System.Linq;
using System.Reflection;
using System.IO;
using UnityEditor;

namespace UnityCodeGen
{
    internal static class ScriptFileGenerator
    {
        const string KEY_ISGENERATING = "UnityCodeGen-IsGenerating";
        const string EXTENSION_META = ".meta";

        static bool isGenerating
        {
            get
            {
                if (bool.TryParse(EditorUserSettings.GetConfigValue(KEY_ISGENERATING), out var result))
                {
                    return result;
                }
                return false;
            }
            set
            {
                EditorUserSettings.SetConfigValue(KEY_ISGENERATING, value.ToString());
            }
        }

        // static List<string> fileNames = new List<string>();

        [InitializeOnLoadMethod]
        static void Initialize()
        {
            if (isGenerating)
            {
                isGenerating = false;
            }
            else if (UnityCodeGenSettings.autoGenerateOnCompile)
            {
                Generate();
            }
        }

        internal static void Generate()
        {
            if (isGenerating) return;
            isGenerating = true;

            // fileNames.Clear();
            var generatorTypes = TypeCache.GetTypesDerivedFrom<ICodeGenerator>()
                .Where(x => !x.IsAbstract && x.GetCustomAttribute<GeneratorAttribute>() != null);

            var changed = false;
            foreach (var t in generatorTypes)
            {
                var generator = (ICodeGenerator)Activator.CreateInstance(t);
                var context = new GeneratorContext();
                generator.Execute(context);

                if (GenerateScriptFromContext(context))
                {
                    changed = true;
                }
            }

            // foreach (var file in Directory.GetFiles(FOLDER_PATH))
            // {
            //     var name = Path.GetFileName(file);
            //     if (Path.GetExtension(name) != EXTENSION_META && !fileNames.Contains(name))
            //     {
            //         AssetDatabase.DeleteAsset(file);
            //         changed = true;
            //     }
            // }

            if (changed)
            {
                AssetDatabase.Refresh();
                AssetDatabase.SaveAssets();
            }
        }

        static bool GenerateScriptFromContext(GeneratorContext context)
        {
            var changed = false;

            var folderPath = context.overrideFolderPath ?? UnityCodeGenUtility.defaultFolderPath;

            if (!Directory.Exists(folderPath))
            {
                Directory.CreateDirectory(folderPath);
            }

            foreach (var code in context.codeList)
            {
                var hierarchy = code.fileName.Split('/');
                var fileName = hierarchy[hierarchy.Length - 1];
                var path = folderPath;
                for (int i = 0; i < hierarchy.Length; i++)
                {
                    path += "/" + hierarchy[i];
                    if (i == hierarchy.Length - 1) break;
                    if (!Directory.Exists(path))
                    {
                        Directory.CreateDirectory(path);
                    }
                }

                if (File.Exists(path))
                {
                    var text = File.ReadAllText(path);
                    if (text == code.text)
                    {
                        // fileNames.Add(code.fileName);
                        continue;
                    }
                }

                File.WriteAllText(path, code.text);
                // fileNames.Add(code.fileName);
                changed = true;
            }
            
            return changed;
        }
    }

}

================================================
FILE: Assets/UnityCodeGen/Editor/Utils/ScriptFileGenerator.cs.meta
================================================
fileFormatVersion: 2
guid: baab6cdaea8de4502b39347e43e52c4d
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/UnityCodeGen/Editor/Utils.meta
================================================
fileFormatVersion: 2
guid: d54ccfe58f28548af9fa4414edbcfb3a
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/UnityCodeGen/Editor.meta
================================================
fileFormatVersion: 2
guid: 909e2019934834fae9f46ed0781155ed
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/UnityCodeGen/Samples~/Tags & Layers/Editor/AnnulusGames.UnityCodeGen.Samples.TagsAndLayers.Editor.asmdef
================================================
{
    "name": "AnnulusGames.UnityCodeGen.Samples.TagsAndLayers.Editor",
    "rootNamespace": "",
    "references": [
        "GUID:81d29a5e4682947dfa73ba6bd09fe0be"
    ],
    "includePlatforms": [
        "Editor"
    ],
    "excludePlatforms": [],
    "allowUnsafeCode": false,
    "overrideReferences": false,
    "precompiledReferences": [],
    "autoReferenced": true,
    "defineConstraints": [],
    "versionDefines": [],
    "noEngineReferences": false
}

================================================
FILE: Assets/UnityCodeGen/Samples~/Tags & Layers/Editor/AnnulusGames.UnityCodeGen.Samples.TagsAndLayers.Editor.asmdef.meta
================================================
fileFormatVersion: 2
guid: 305b8537f51ba4b77b20a2a43a0fbc23
AssemblyDefinitionImporter:
  externalObjects: {}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/UnityCodeGen/Samples~/Tags & Layers/Editor/LayersGenerator.cs
================================================
using System.Linq;
using UnityEngine;
using UnityEditorInternal;

namespace UnityCodeGen.Samples.TagsAndLayers
{
    [Generator]
    public class LayersGenerator : ICodeGenerator
    {
        public void Execute(GeneratorContext context)
        {
            var tags = InternalEditorUtility.layers
                .Select(x => $"public const int {x.Replace(" ", string.Empty)} = {LayerMask.NameToLayer(x)};");
            var fields = string.Join("\n\t", tags);
            var code =
@$"//<auto-generated/>
public static class Layers
{{
    {fields}
}}";
            context.AddCode("Tags & Layers/Layers.Generated.cs", code);
        }
    }
}

================================================
FILE: Assets/UnityCodeGen/Samples~/Tags & Layers/Editor/LayersGenerator.cs.meta
================================================
fileFormatVersion: 2
guid: 3b6e0724a537348d0b49ebeac5195510
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/UnityCodeGen/Samples~/Tags & Layers/Editor/SortingLayersGenerator.cs
================================================
using System.Linq;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using UnityEditorInternal;

namespace UnityCodeGen.Samples.TagsAndLayers
{
    [Generator]
    public class SortingLayersGenerator : ICodeGenerator
    {
        public void Execute(GeneratorContext context)
        {
            var tagManager = new SerializedObject(AssetDatabase.LoadAllAssetsAtPath("ProjectSettings/TagManager.asset")[0]);
            var sortingLayer = tagManager.FindProperty("m_SortingLayers");
            var list = new List<string>();
            for (int i = 0; i < sortingLayer.arraySize; ++i)
            {
                list.Add(sortingLayer.GetArrayElementAtIndex(i).displayName);
            }
            var layers = list
                .Select(x => $"public const string {x.Replace(" ", string.Empty)} = \"{x}\";");
            var fields = string.Join("\n\t", layers);
            var code =
@$"//<auto-generated/>
public static class SortingLayers
{{
    {fields}
}}";
            context.AddCode("Tags & Layers/SortingLayers.Generated.cs", code);
        }
    }
}

================================================
FILE: Assets/UnityCodeGen/Samples~/Tags & Layers/Editor/SortingLayersGenerator.cs.meta
================================================
fileFormatVersion: 2
guid: d8ea2bc9baf9a43ec919eeceb37efc2a
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/UnityCodeGen/Samples~/Tags & Layers/Editor/TagsGenerator.cs
================================================
using System.Linq;
using UnityEditorInternal;

namespace UnityCodeGen.Samples.TagsAndLayers
{
    [Generator]
    public class TagsGenerator : ICodeGenerator
    {
        public void Execute(GeneratorContext context)
        {
            var tags = InternalEditorUtility.tags
                .Select(x => $"public const string {x.Replace(" ", string.Empty)} = \"{x}\";");
            var fields = string.Join("\n\t", tags);
            var code =
@$"//<auto-generated/>
public static class Tags
{{
    {fields}
}}";
            context.AddCode("Tags & Layers/Tags.Generated.cs", code);
        }
    }
}

================================================
FILE: Assets/UnityCodeGen/Samples~/Tags & Layers/Editor/TagsGenerator.cs.meta
================================================
fileFormatVersion: 2
guid: cb6c2e2aea37049bfb1ac699f1aeaabd
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/UnityCodeGen/Samples~/Tags & Layers/Editor.meta
================================================
fileFormatVersion: 2
guid: f69ab95fa787948b6b39c24a13619948
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/UnityCodeGen/package.json
================================================
{
    "name": "com.annulusgames.unity-codegen",
    "displayName": "Unity CodeGen",
    "version": "1.0.0",
    "unity": "2020.1",
    "license": "MIT",
    "author": {
        "name": "Annulus Games",
        "url": "https://github.com/AnnulusGames"
    },
    "description": "Code Generation Library for Unity Editor",
    "dependencies": {

    },
    "samples": [
        {
            "displayName": "Tags & Layers",
            "description": "A sample that generates a class that manages Tags, Layers and Sorting Layers with constants.",
            "path": "Samples~/Tags & Layers"
        }
    ]
}


================================================
FILE: Assets/UnityCodeGen/package.json.meta
================================================
fileFormatVersion: 2
guid: 27b09209611ec460a919e4ebd38c6885
TextScriptImporter:
  externalObjects: {}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: Assets/UnityCodeGen.meta
================================================
fileFormatVersion: 2
guid: 2c979dc12a90b489d8e2b188dcd83759
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData: 
  assetBundleName: 
  assetBundleVariant: 


================================================
FILE: LICENSE
================================================
MIT License

Copyright (c) 2023 Annulus Games

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


================================================
FILE: Packages/manifest.json
================================================
{
  "dependencies": {
    "com.unity.collab-proxy": "1.17.7",
    "com.unity.feature.development": "1.0.1",
    "com.unity.textmeshpro": "3.0.6",
    "com.unity.timeline": "1.7.2",
    "com.unity.ugui": "1.0.0",
    "com.unity.visualscripting": "1.8.0",
    "com.unity.modules.ai": "1.0.0",
    "com.unity.modules.androidjni": "1.0.0",
    "com.unity.modules.animation": "1.0.0",
    "com.unity.modules.assetbundle": "1.0.0",
    "com.unity.modules.audio": "1.0.0",
    "com.unity.modules.cloth": "1.0.0",
    "com.unity.modules.director": "1.0.0",
    "com.unity.modules.imageconversion": "1.0.0",
    "com.unity.modules.imgui": "1.0.0",
    "com.unity.modules.jsonserialize": "1.0.0",
    "com.unity.modules.particlesystem": "1.0.0",
    "com.unity.modules.physics": "1.0.0",
    "com.unity.modules.physics2d": "1.0.0",
    "com.unity.modules.screencapture": "1.0.0",
    "com.unity.modules.terrain": "1.0.0",
    "com.unity.modules.terrainphysics": "1.0.0",
    "com.unity.modules.tilemap": "1.0.0",
    "com.unity.modules.ui": "1.0.0",
    "com.unity.modules.uielements": "1.0.0",
    "com.unity.modules.umbra": "1.0.0",
    "com.unity.modules.unityanalytics": "1.0.0",
    "com.unity.modules.unitywebrequest": "1.0.0",
    "com.unity.modules.unitywebrequestassetbundle": "1.0.0",
    "com.unity.modules.unitywebrequestaudio": "1.0.0",
    "com.unity.modules.unitywebrequesttexture": "1.0.0",
    "com.unity.modules.unitywebrequestwww": "1.0.0",
    "com.unity.modules.vehicles": "1.0.0",
    "com.unity.modules.video": "1.0.0",
    "com.unity.modules.vr": "1.0.0",
    "com.unity.modules.wind": "1.0.0",
    "com.unity.modules.xr": "1.0.0"
  }
}


================================================
FILE: Packages/packages-lock.json
================================================
{
  "dependencies": {
    "com.unity.collab-proxy": {
      "version": "1.17.7",
      "depth": 0,
      "source": "registry",
      "dependencies": {
        "com.unity.services.core": "1.0.1"
      },
      "url": "https://packages.unity.com"
    },
    "com.unity.editorcoroutines": {
      "version": "1.0.0",
      "depth": 1,
      "source": "registry",
      "dependencies": {},
      "url": "https://packages.unity.com"
    },
    "com.unity.ext.nunit": {
      "version": "1.0.6",
      "depth": 2,
      "source": "registry",
      "dependencies": {},
      "url": "https://packages.unity.com"
    },
    "com.unity.feature.development": {
      "version": "1.0.1",
      "depth": 0,
      "source": "builtin",
      "dependencies": {
        "com.unity.ide.visualstudio": "2.0.17",
        "com.unity.ide.rider": "3.0.17",
        "com.unity.ide.vscode": "1.2.5",
        "com.unity.editorcoroutines": "1.0.0",
        "com.unity.performance.profile-analyzer": "1.1.1",
        "com.unity.test-framework": "1.1.33",
        "com.unity.testtools.codecoverage": "1.2.2"
      }
    },
    "com.unity.ide.rider": {
      "version": "3.0.17",
      "depth": 1,
      "source": "registry",
      "dependencies": {
        "com.unity.ext.nunit": "1.0.6"
      },
      "url": "https://packages.unity.com"
    },
    "com.unity.ide.visualstudio": {
      "version": "2.0.17",
      "depth": 1,
      "source": "registry",
      "dependencies": {
        "com.unity.test-framework": "1.1.9"
      },
      "url": "https://packages.unity.com"
    },
    "com.unity.ide.vscode": {
      "version": "1.2.5",
      "depth": 1,
      "source": "registry",
      "dependencies": {},
      "url": "https://packages.unity.com"
    },
    "com.unity.nuget.newtonsoft-json": {
      "version": "3.0.2",
      "depth": 2,
      "source": "registry",
      "dependencies": {},
      "url": "https://packages.unity.com"
    },
    "com.unity.performance.profile-analyzer": {
      "version": "1.1.1",
      "depth": 1,
      "source": "registry",
      "dependencies": {},
      "url": "https://packages.unity.com"
    },
    "com.unity.services.core": {
      "version": "1.7.0",
      "depth": 1,
      "source": "registry",
      "dependencies": {
        "com.unity.modules.unitywebrequest": "1.0.0",
        "com.unity.nuget.newtonsoft-json": "3.0.2",
        "com.unity.modules.androidjni": "1.0.0"
      },
      "url": "https://packages.unity.com"
    },
    "com.unity.settings-manager": {
      "version": "2.0.1",
      "depth": 2,
      "source": "registry",
      "dependencies": {},
      "url": "https://packages.unity.com"
    },
    "com.unity.test-framework": {
      "version": "1.1.33",
      "depth": 1,
      "source": "registry",
      "dependencies": {
        "com.unity.ext.nunit": "1.0.6",
        "com.unity.modules.imgui": "1.0.0",
        "com.unity.modules.jsonserialize": "1.0.0"
      },
      "url": "https://packages.unity.com"
    },
    "com.unity.testtools.codecoverage": {
      "version": "1.2.2",
      "depth": 1,
      "source": "registry",
      "dependencies": {
        "com.unity.test-framework": "1.0.16",
        "com.unity.settings-manager": "1.0.1"
      },
      "url": "https://packages.unity.com"
    },
    "com.unity.textmeshpro": {
      "version": "3.0.6",
      "depth": 0,
      "source": "registry",
      "dependencies": {
        "com.unity.ugui": "1.0.0"
      },
      "url": "https://packages.unity.com"
    },
    "com.unity.timeline": {
      "version": "1.7.2",
      "depth": 0,
      "source": "registry",
      "dependencies": {
        "com.unity.modules.director": "1.0.0",
        "com.unity.modules.animation": "1.0.0",
        "com.unity.modules.audio": "1.0.0",
        "com.unity.modules.particlesystem": "1.0.0"
      },
      "url": "https://packages.unity.com"
    },
    "com.unity.ugui": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {
        "com.unity.modules.ui": "1.0.0",
        "com.unity.modules.imgui": "1.0.0"
      }
    },
    "com.unity.visualscripting": {
      "version": "1.8.0",
      "depth": 0,
      "source": "registry",
      "dependencies": {
        "com.unity.ugui": "1.0.0",
        "com.unity.modules.jsonserialize": "1.0.0"
      },
      "url": "https://packages.unity.com"
    },
    "com.unity.modules.ai": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {}
    },
    "com.unity.modules.androidjni": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {}
    },
    "com.unity.modules.animation": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {}
    },
    "com.unity.modules.assetbundle": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {}
    },
    "com.unity.modules.audio": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {}
    },
    "com.unity.modules.cloth": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {
        "com.unity.modules.physics": "1.0.0"
      }
    },
    "com.unity.modules.director": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {
        "com.unity.modules.audio": "1.0.0",
        "com.unity.modules.animation": "1.0.0"
      }
    },
    "com.unity.modules.imageconversion": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {}
    },
    "com.unity.modules.imgui": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {}
    },
    "com.unity.modules.jsonserialize": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {}
    },
    "com.unity.modules.particlesystem": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {}
    },
    "com.unity.modules.physics": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {}
    },
    "com.unity.modules.physics2d": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {}
    },
    "com.unity.modules.screencapture": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {
        "com.unity.modules.imageconversion": "1.0.0"
      }
    },
    "com.unity.modules.subsystems": {
      "version": "1.0.0",
      "depth": 1,
      "source": "builtin",
      "dependencies": {
        "com.unity.modules.jsonserialize": "1.0.0"
      }
    },
    "com.unity.modules.terrain": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {}
    },
    "com.unity.modules.terrainphysics": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {
        "com.unity.modules.physics": "1.0.0",
        "com.unity.modules.terrain": "1.0.0"
      }
    },
    "com.unity.modules.tilemap": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {
        "com.unity.modules.physics2d": "1.0.0"
      }
    },
    "com.unity.modules.ui": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {}
    },
    "com.unity.modules.uielements": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {
        "com.unity.modules.ui": "1.0.0",
        "com.unity.modules.imgui": "1.0.0",
        "com.unity.modules.jsonserialize": "1.0.0"
      }
    },
    "com.unity.modules.umbra": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {}
    },
    "com.unity.modules.unityanalytics": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {
        "com.unity.modules.unitywebrequest": "1.0.0",
        "com.unity.modules.jsonserialize": "1.0.0"
      }
    },
    "com.unity.modules.unitywebrequest": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {}
    },
    "com.unity.modules.unitywebrequestassetbundle": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {
        "com.unity.modules.assetbundle": "1.0.0",
        "com.unity.modules.unitywebrequest": "1.0.0"
      }
    },
    "com.unity.modules.unitywebrequestaudio": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {
        "com.unity.modules.unitywebrequest": "1.0.0",
        "com.unity.modules.audio": "1.0.0"
      }
    },
    "com.unity.modules.unitywebrequesttexture": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {
        "com.unity.modules.unitywebrequest": "1.0.0",
        "com.unity.modules.imageconversion": "1.0.0"
      }
    },
    "com.unity.modules.unitywebrequestwww": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {
        "com.unity.modules.unitywebrequest": "1.0.0",
        "com.unity.modules.unitywebrequestassetbundle": "1.0.0",
        "com.unity.modules.unitywebrequestaudio": "1.0.0",
        "com.unity.modules.audio": "1.0.0",
        "com.unity.modules.assetbundle": "1.0.0",
        "com.unity.modules.imageconversion": "1.0.0"
      }
    },
    "com.unity.modules.vehicles": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {
        "com.unity.modules.physics": "1.0.0"
      }
    },
    "com.unity.modules.video": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {
        "com.unity.modules.audio": "1.0.0",
        "com.unity.modules.ui": "1.0.0",
        "com.unity.modules.unitywebrequest": "1.0.0"
      }
    },
    "com.unity.modules.vr": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {
        "com.unity.modules.jsonserialize": "1.0.0",
        "com.unity.modules.physics": "1.0.0",
        "com.unity.modules.xr": "1.0.0"
      }
    },
    "com.unity.modules.wind": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {}
    },
    "com.unity.modules.xr": {
      "version": "1.0.0",
      "depth": 0,
      "source": "builtin",
      "dependencies": {
        "com.unity.modules.physics": "1.0.0",
        "com.unity.modules.jsonserialize": "1.0.0",
        "com.unity.modules.subsystems": "1.0.0"
      }
    }
  }
}


================================================
FILE: ProjectSettings/AudioManager.asset
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!11 &1
AudioManager:
  m_ObjectHideFlags: 0
  serializedVersion: 2
  m_Volume: 1
  Rolloff Scale: 1
  Doppler Factor: 1
  Default Speaker Mode: 2
  m_SampleRate: 0
  m_DSPBufferSize: 1024
  m_VirtualVoiceCount: 512
  m_RealVoiceCount: 32
  m_SpatializerPlugin: 
  m_AmbisonicDecoderPlugin: 
  m_DisableAudio: 0
  m_VirtualizeEffects: 1
  m_RequestedDSPBufferSize: 1024


================================================
FILE: ProjectSettings/ClusterInputManager.asset
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!236 &1
ClusterInputManager:
  m_ObjectHideFlags: 0
  m_Inputs: []


================================================
FILE: ProjectSettings/DynamicsManager.asset
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!55 &1
PhysicsManager:
  m_ObjectHideFlags: 0
  serializedVersion: 11
  m_Gravity: {x: 0, y: -9.81, z: 0}
  m_DefaultMaterial: {fileID: 0}
  m_BounceThreshold: 2
  m_SleepThreshold: 0.005
  m_DefaultContactOffset: 0.01
  m_DefaultSolverIterations: 6
  m_DefaultSolverVelocityIterations: 1
  m_QueriesHitBackfaces: 0
  m_QueriesHitTriggers: 1
  m_EnableAdaptiveForce: 0
  m_ClothInterCollisionDistance: 0
  m_ClothInterCollisionStiffness: 0
  m_ContactsGeneration: 1
  m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
  m_AutoSimulation: 1
  m_AutoSyncTransforms: 0
  m_ReuseCollisionCallbacks: 1
  m_ClothInterCollisionSettingsToggle: 0
  m_ContactPairsMode: 0
  m_BroadphaseType: 0
  m_WorldBounds:
    m_Center: {x: 0, y: 0, z: 0}
    m_Extent: {x: 250, y: 250, z: 250}
  m_WorldSubdivisions: 8
  m_FrictionType: 0
  m_EnableEnhancedDeterminism: 0
  m_EnableUnifiedHeightmaps: 1
  m_DefaultMaxAngluarSpeed: 7


================================================
FILE: ProjectSettings/EditorBuildSettings.asset
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1045 &1
EditorBuildSettings:
  m_ObjectHideFlags: 0
  serializedVersion: 2
  m_Scenes: []
  m_configObjects: {}


================================================
FILE: ProjectSettings/EditorSettings.asset
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!159 &1
EditorSettings:
  m_ObjectHideFlags: 0
  serializedVersion: 11
  m_ExternalVersionControlSupport: Visible Meta Files
  m_SerializationMode: 2
  m_LineEndingsForNewScripts: 0
  m_DefaultBehaviorMode: 0
  m_PrefabRegularEnvironment: {fileID: 0}
  m_PrefabUIEnvironment: {fileID: 0}
  m_SpritePackerMode: 0
  m_SpritePackerPaddingPower: 1
  m_EtcTextureCompressorBehavior: 1
  m_EtcTextureFastCompressor: 1
  m_EtcTextureNormalCompressor: 2
  m_EtcTextureBestCompressor: 4
  m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;rsp;asmref
  m_ProjectGenerationRootNamespace: 
  m_CollabEditorSettings:
    inProgressEnabled: 1
  m_EnableTextureStreamingInEditMode: 1
  m_EnableTextureStreamingInPlayMode: 1
  m_AsyncShaderCompilation: 1
  m_EnterPlayModeOptionsEnabled: 0
  m_EnterPlayModeOptions: 3
  m_ShowLightmapResolutionOverlay: 1
  m_UseLegacyProbeSampleCount: 0
  m_SerializeInlineMappingsOnOneLine: 1


================================================
FILE: ProjectSettings/GraphicsSettings.asset
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!30 &1
GraphicsSettings:
  m_ObjectHideFlags: 0
  serializedVersion: 13
  m_Deferred:
    m_Mode: 1
    m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0}
  m_DeferredReflections:
    m_Mode: 1
    m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0}
  m_ScreenSpaceShadows:
    m_Mode: 1
    m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0}
  m_LegacyDeferred:
    m_Mode: 1
    m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0}
  m_DepthNormals:
    m_Mode: 1
    m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0}
  m_MotionVectors:
    m_Mode: 1
    m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0}
  m_LightHalo:
    m_Mode: 1
    m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0}
  m_LensFlare:
    m_Mode: 1
    m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0}
  m_AlwaysIncludedShaders:
  - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0}
  - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0}
  - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0}
  - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0}
  - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0}
  - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0}
  m_PreloadedShaders: []
  m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000,
    type: 0}
  m_CustomRenderPipeline: {fileID: 0}
  m_TransparencySortMode: 0
  m_TransparencySortAxis: {x: 0, y: 0, z: 1}
  m_DefaultRenderingPath: 1
  m_DefaultMobileRenderingPath: 1
  m_TierSettings: []
  m_LightmapStripping: 0
  m_FogStripping: 0
  m_InstancingStripping: 0
  m_LightmapKeepPlain: 1
  m_LightmapKeepDirCombined: 1
  m_LightmapKeepDynamicPlain: 1
  m_LightmapKeepDynamicDirCombined: 1
  m_LightmapKeepShadowMask: 1
  m_LightmapKeepSubtractive: 1
  m_FogKeepLinear: 1
  m_FogKeepExp: 1
  m_FogKeepExp2: 1
  m_AlbedoSwatchInfos: []
  m_LightsUseLinearIntensity: 0
  m_LightsUseColorTemperature: 0
  m_LogWhenShaderIsCompiled: 0
  m_AllowEnlightenSupportForUpgradedProject: 0


================================================
FILE: ProjectSettings/InputManager.asset
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!13 &1
InputManager:
  m_ObjectHideFlags: 0
  serializedVersion: 2
  m_Axes:
  - serializedVersion: 3
    m_Name: Horizontal
    descriptiveName: 
    descriptiveNegativeName: 
    negativeButton: left
    positiveButton: right
    altNegativeButton: a
    altPositiveButton: d
    gravity: 3
    dead: 0.001
    sensitivity: 3
    snap: 1
    invert: 0
    type: 0
    axis: 0
    joyNum: 0
  - serializedVersion: 3
    m_Name: Vertical
    descriptiveName: 
    descriptiveNegativeName: 
    negativeButton: down
    positiveButton: up
    altNegativeButton: s
    altPositiveButton: w
    gravity: 3
    dead: 0.001
    sensitivity: 3
    snap: 1
    invert: 0
    type: 0
    axis: 0
    joyNum: 0
  - serializedVersion: 3
    m_Name: Fire1
    descriptiveName: 
    descriptiveNegativeName: 
    negativeButton: 
    positiveButton: left ctrl
    altNegativeButton: 
    altPositiveButton: mouse 0
    gravity: 1000
    dead: 0.001
    sensitivity: 1000
    snap: 0
    invert: 0
    type: 0
    axis: 0
    joyNum: 0
  - serializedVersion: 3
    m_Name: Fire2
    descriptiveName: 
    descriptiveNegativeName: 
    negativeButton: 
    positiveButton: left alt
    altNegativeButton: 
    altPositiveButton: mouse 1
    gravity: 1000
    dead: 0.001
    sensitivity: 1000
    snap: 0
    invert: 0
    type: 0
    axis: 0
    joyNum: 0
  - serializedVersion: 3
    m_Name: Fire3
    descriptiveName: 
    descriptiveNegativeName: 
    negativeButton: 
    positiveButton: left shift
    altNegativeButton: 
    altPositiveButton: mouse 2
    gravity: 1000
    dead: 0.001
    sensitivity: 1000
    snap: 0
    invert: 0
    type: 0
    axis: 0
    joyNum: 0
  - serializedVersion: 3
    m_Name: Jump
    descriptiveName: 
    descriptiveNegativeName: 
    negativeButton: 
    positiveButton: space
    altNegativeButton: 
    altPositiveButton: 
    gravity: 1000
    dead: 0.001
    sensitivity: 1000
    snap: 0
    invert: 0
    type: 0
    axis: 0
    joyNum: 0
  - serializedVersion: 3
    m_Name: Mouse X
    descriptiveName: 
    descriptiveNegativeName: 
    negativeButton: 
    positiveButton: 
    altNegativeButton: 
    altPositiveButton: 
    gravity: 0
    dead: 0
    sensitivity: 0.1
    snap: 0
    invert: 0
    type: 1
    axis: 0
    joyNum: 0
  - serializedVersion: 3
    m_Name: Mouse Y
    descriptiveName: 
    descriptiveNegativeName: 
    negativeButton: 
    positiveButton: 
    altNegativeButton: 
    altPositiveButton: 
    gravity: 0
    dead: 0
    sensitivity: 0.1
    snap: 0
    invert: 0
    type: 1
    axis: 1
    joyNum: 0
  - serializedVersion: 3
    m_Name: Mouse ScrollWheel
    descriptiveName: 
    descriptiveNegativeName: 
    negativeButton: 
    positiveButton: 
    altNegativeButton: 
    altPositiveButton: 
    gravity: 0
    dead: 0
    sensitivity: 0.1
    snap: 0
    invert: 0
    type: 1
    axis: 2
    joyNum: 0
  - serializedVersion: 3
    m_Name: Horizontal
    descriptiveName: 
    descriptiveNegativeName: 
    negativeButton: 
    positiveButton: 
    altNegativeButton: 
    altPositiveButton: 
    gravity: 0
    dead: 0.19
    sensitivity: 1
    snap: 0
    invert: 0
    type: 2
    axis: 0
    joyNum: 0
  - serializedVersion: 3
    m_Name: Vertical
    descriptiveName: 
    descriptiveNegativeName: 
    negativeButton: 
    positiveButton: 
    altNegativeButton: 
    altPositiveButton: 
    gravity: 0
    dead: 0.19
    sensitivity: 1
    snap: 0
    invert: 1
    type: 2
    axis: 1
    joyNum: 0
  - serializedVersion: 3
    m_Name: Fire1
    descriptiveName: 
    descriptiveNegativeName: 
    negativeButton: 
    positiveButton: joystick button 0
    altNegativeButton: 
    altPositiveButton: 
    gravity: 1000
    dead: 0.001
    sensitivity: 1000
    snap: 0
    invert: 0
    type: 0
    axis: 0
    joyNum: 0
  - serializedVersion: 3
    m_Name: Fire2
    descriptiveName: 
    descriptiveNegativeName: 
    negativeButton: 
    positiveButton: joystick button 1
    altNegativeButton: 
    altPositiveButton: 
    gravity: 1000
    dead: 0.001
    sensitivity: 1000
    snap: 0
    invert: 0
    type: 0
    axis: 0
    joyNum: 0
  - serializedVersion: 3
    m_Name: Fire3
    descriptiveName: 
    descriptiveNegativeName: 
    negativeButton: 
    positiveButton: joystick button 2
    altNegativeButton: 
    altPositiveButton: 
    gravity: 1000
    dead: 0.001
    sensitivity: 1000
    snap: 0
    invert: 0
    type: 0
    axis: 0
    joyNum: 0
  - serializedVersion: 3
    m_Name: Jump
    descriptiveName: 
    descriptiveNegativeName: 
    negativeButton: 
    positiveButton: joystick button 3
    altNegativeButton: 
    altPositiveButton: 
    gravity: 1000
    dead: 0.001
    sensitivity: 1000
    snap: 0
    invert: 0
    type: 0
    axis: 0
    joyNum: 0
  - serializedVersion: 3
    m_Name: Submit
    descriptiveName: 
    descriptiveNegativeName: 
    negativeButton: 
    positiveButton: return
    altNegativeButton: 
    altPositiveButton: joystick button 0
    gravity: 1000
    dead: 0.001
    sensitivity: 1000
    snap: 0
    invert: 0
    type: 0
    axis: 0
    joyNum: 0
  - serializedVersion: 3
    m_Name: Submit
    descriptiveName: 
    descriptiveNegativeName: 
    negativeButton: 
    positiveButton: enter
    altNegativeButton: 
    altPositiveButton: space
    gravity: 1000
    dead: 0.001
    sensitivity: 1000
    snap: 0
    invert: 0
    type: 0
    axis: 0
    joyNum: 0
  - serializedVersion: 3
    m_Name: Cancel
    descriptiveName: 
    descriptiveNegativeName: 
    negativeButton: 
    positiveButton: escape
    altNegativeButton: 
    altPositiveButton: joystick button 1
    gravity: 1000
    dead: 0.001
    sensitivity: 1000
    snap: 0
    invert: 0
    type: 0
    axis: 0
    joyNum: 0


================================================
FILE: ProjectSettings/MemorySettings.asset
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!387306366 &1
MemorySettings:
  m_ObjectHideFlags: 0
  m_EditorMemorySettings:
    m_MainAllocatorBlockSize: -1
    m_ThreadAllocatorBlockSize: -1
    m_MainGfxBlockSize: -1
    m_ThreadGfxBlockSize: -1
    m_CacheBlockSize: -1
    m_TypetreeBlockSize: -1
    m_ProfilerBlockSize: -1
    m_ProfilerEditorBlockSize: -1
    m_BucketAllocatorGranularity: -1
    m_BucketAllocatorBucketsCount: -1
    m_BucketAllocatorBlockSize: -1
    m_BucketAllocatorBlockCount: -1
    m_ProfilerBucketAllocatorGranularity: -1
    m_ProfilerBucketAllocatorBucketsCount: -1
    m_ProfilerBucketAllocatorBlockSize: -1
    m_ProfilerBucketAllocatorBlockCount: -1
    m_TempAllocatorSizeMain: -1
    m_JobTempAllocatorBlockSize: -1
    m_BackgroundJobTempAllocatorBlockSize: -1
    m_JobTempAllocatorReducedBlockSize: -1
    m_TempAllocatorSizeGIBakingWorker: -1
    m_TempAllocatorSizeNavMeshWorker: -1
    m_TempAllocatorSizeAudioWorker: -1
    m_TempAllocatorSizeCloudWorker: -1
    m_TempAllocatorSizeGfx: -1
    m_TempAllocatorSizeJobWorker: -1
    m_TempAllocatorSizeBackgroundWorker: -1
    m_TempAllocatorSizePreloadManager: -1
  m_PlatformMemorySettings: {}


================================================
FILE: ProjectSettings/NavMeshAreas.asset
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!126 &1
NavMeshProjectSettings:
  m_ObjectHideFlags: 0
  serializedVersion: 2
  areas:
  - name: Walkable
    cost: 1
  - name: Not Walkable
    cost: 1
  - name: Jump
    cost: 2
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  - name: 
    cost: 1
  m_LastAgentTypeID: -887442657
  m_Settings:
  - serializedVersion: 2
    agentTypeID: 0
    agentRadius: 0.5
    agentHeight: 2
    agentSlope: 45
    agentClimb: 0.75
    ledgeDropHeight: 0
    maxJumpAcrossDistance: 0
    minRegionArea: 2
    manualCellSize: 0
    cellSize: 0.16666667
    manualTileSize: 0
    tileSize: 256
    accuratePlacement: 0
    debug:
      m_Flags: 0
  m_SettingNames:
  - Humanoid


================================================
FILE: ProjectSettings/PackageManagerSettings.asset
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &1
MonoBehaviour:
  m_ObjectHideFlags: 61
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 0}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0}
  m_Name: 
  m_EditorClassIdentifier: 
  m_EnablePreReleasePackages: 0
  m_EnablePackageDependencies: 0
  m_AdvancedSettingsExpanded: 1
  m_ScopedRegistriesSettingsExpanded: 1
  m_SeeAllPackageVersions: 0
  oneTimeWarningShown: 0
  m_Registries:
  - m_Id: main
    m_Name: 
    m_Url: https://packages.unity.com
    m_Scopes: []
    m_IsDefault: 1
    m_Capabilities: 7
  m_UserSelectedRegistryName: 
  m_UserAddingNewScopedRegistry: 0
  m_RegistryInfoDraft:
    m_Modified: 0
    m_ErrorMessage: 
    m_UserModificationsInstanceId: -830
    m_OriginalInstanceId: -832
  m_LoadAssets: 0


================================================
FILE: ProjectSettings/Packages/com.unity.testtools.codecoverage/Settings.json
================================================
{
    "m_Dictionary": {
        "m_DictionaryValues": []
    }
}

================================================
FILE: ProjectSettings/Physics2DSettings.asset
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!19 &1
Physics2DSettings:
  m_ObjectHideFlags: 0
  serializedVersion: 4
  m_Gravity: {x: 0, y: -9.81}
  m_DefaultMaterial: {fileID: 0}
  m_VelocityIterations: 8
  m_PositionIterations: 3
  m_VelocityThreshold: 1
  m_MaxLinearCorrection: 0.2
  m_MaxAngularCorrection: 8
  m_MaxTranslationSpeed: 100
  m_MaxRotationSpeed: 360
  m_BaumgarteScale: 0.2
  m_BaumgarteTimeOfImpactScale: 0.75
  m_TimeToSleep: 0.5
  m_LinearSleepTolerance: 0.01
  m_AngularSleepTolerance: 2
  m_DefaultContactOffset: 0.01
  m_JobOptions:
    serializedVersion: 2
    useMultithreading: 0
    useConsistencySorting: 0
    m_InterpolationPosesPerJob: 100
    m_NewContactsPerJob: 30
    m_CollideContactsPerJob: 100
    m_ClearFlagsPerJob: 200
    m_ClearBodyForcesPerJob: 200
    m_SyncDiscreteFixturesPerJob: 50
    m_SyncContinuousFixturesPerJob: 50
    m_FindNearestContactsPerJob: 100
    m_UpdateTriggerContactsPerJob: 100
    m_IslandSolverCostThreshold: 100
    m_IslandSolverBodyCostScale: 1
    m_IslandSolverContactCostScale: 10
    m_IslandSolverJointCostScale: 10
    m_IslandSolverBodiesPerJob: 50
    m_IslandSolverContactsPerJob: 50
  m_AutoSimulation: 1
  m_QueriesHitTriggers: 1
  m_QueriesStartInColliders: 1
  m_CallbacksOnDisable: 1
  m_ReuseCollisionCallbacks: 1
  m_AutoSyncTransforms: 0
  m_AlwaysShowColliders: 0
  m_ShowColliderSleep: 1
  m_ShowColliderContacts: 0
  m_ShowColliderAABB: 0
  m_ContactArrowScale: 0.2
  m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412}
  m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432}
  m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745}
  m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804}
  m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff


================================================
FILE: ProjectSettings/PresetManager.asset
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1386491679 &1
PresetManager:
  m_ObjectHideFlags: 0
  serializedVersion: 2
  m_DefaultPresets: {}


================================================
FILE: ProjectSettings/ProjectSettings.asset
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!129 &1
PlayerSettings:
  m_ObjectHideFlags: 0
  serializedVersion: 25
  productGUID: 0491c595402044b419a638052da27744
  AndroidProfiler: 0
  AndroidFilterTouchesWhenObscured: 0
  AndroidEnableSustainedPerformanceMode: 0
  defaultScreenOrientation: 4
  targetDevice: 2
  useOnDemandResources: 0
  accelerometerFrequency: 60
  companyName: Annulus Games
  productName: UnityCodeGen
  defaultCursor: {fileID: 0}
  cursorHotspot: {x: 0, y: 0}
  m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1}
  m_ShowUnitySplashScreen: 1
  m_ShowUnitySplashLogo: 1
  m_SplashScreenOverlayOpacity: 1
  m_SplashScreenAnimation: 1
  m_SplashScreenLogoStyle: 1
  m_SplashScreenDrawMode: 0
  m_SplashScreenBackgroundAnimationZoom: 1
  m_SplashScreenLogoAnimationZoom: 1
  m_SplashScreenBackgroundLandscapeAspect: 1
  m_SplashScreenBackgroundPortraitAspect: 1
  m_SplashScreenBackgroundLandscapeUvs:
    serializedVersion: 2
    x: 0
    y: 0
    width: 1
    height: 1
  m_SplashScreenBackgroundPortraitUvs:
    serializedVersion: 2
    x: 0
    y: 0
    width: 1
    height: 1
  m_SplashScreenLogos: []
  m_VirtualRealitySplashScreen: {fileID: 0}
  m_HolographicTrackingLossScreen: {fileID: 0}
  defaultScreenWidth: 1920
  defaultScreenHeight: 1080
  defaultScreenWidthWeb: 960
  defaultScreenHeightWeb: 600
  m_StereoRenderingPath: 0
  m_ActiveColorSpace: 0
  m_SpriteBatchVertexThreshold: 300
  m_MTRendering: 1
  mipStripping: 0
  numberOfMipsStripped: 0
  m_StackTraceTypes: 010000000100000001000000010000000100000001000000
  iosShowActivityIndicatorOnLoading: -1
  androidShowActivityIndicatorOnLoading: -1
  iosUseCustomAppBackgroundBehavior: 0
  allowedAutorotateToPortrait: 1
  allowedAutorotateToPortraitUpsideDown: 1
  allowedAutorotateToLandscapeRight: 1
  allowedAutorotateToLandscapeLeft: 1
  useOSAutorotation: 1
  use32BitDisplayBuffer: 1
  preserveFramebufferAlpha: 0
  disableDepthAndStencilBuffers: 0
  androidStartInFullscreen: 1
  androidRenderOutsideSafeArea: 1
  androidUseSwappy: 1
  androidBlitType: 0
  androidResizableWindow: 0
  androidDefaultWindowWidth: 1920
  androidDefaultWindowHeight: 1080
  androidMinimumWindowWidth: 400
  androidMinimumWindowHeight: 300
  androidFullscreenMode: 1
  defaultIsNativeResolution: 1
  macRetinaSupport: 1
  runInBackground: 1
  captureSingleScreen: 0
  muteOtherAudioSources: 0
  Prepare IOS For Recording: 0
  Force IOS Speakers When Recording: 0
  deferSystemGesturesMode: 0
  hideHomeButton: 0
  submitAnalytics: 1
  usePlayerLog: 1
  bakeCollisionMeshes: 0
  forceSingleInstance: 0
  useFlipModelSwapchain: 1
  resizableWindow: 0
  useMacAppStoreValidation: 0
  macAppStoreCategory: public.app-category.games
  gpuSkinning: 1
  xboxPIXTextureCapture: 0
  xboxEnableAvatar: 0
  xboxEnableKinect: 0
  xboxEnableKinectAutoTracking: 0
  xboxEnableFitness: 0
  visibleInBackground: 1
  allowFullscreenSwitch: 1
  fullscreenMode: 1
  xboxSpeechDB: 0
  xboxEnableHeadOrientation: 0
  xboxEnableGuest: 0
  xboxEnablePIXSampling: 0
  metalFramebufferOnly: 0
  xboxOneResolution: 0
  xboxOneSResolution: 0
  xboxOneXResolution: 3
  xboxOneMonoLoggingLevel: 0
  xboxOneLoggingLevel: 1
  xboxOneDisableEsram: 0
  xboxOneEnableTypeOptimization: 0
  xboxOnePresentImmediateThreshold: 0
  switchQueueCommandMemory: 0
  switchQueueControlMemory: 16384
  switchQueueComputeMemory: 262144
  switchNVNShaderPoolsGranularity: 33554432
  switchNVNDefaultPoolsGranularity: 16777216
  switchNVNOtherPoolsGranularity: 16777216
  switchGpuScratchPoolGranularity: 2097152
  switchAllowGpuScratchShrinking: 0
  switchNVNMaxPublicTextureIDCount: 0
  switchNVNMaxPublicSamplerIDCount: 0
  switchNVNGraphicsFirmwareMemory: 32
  stadiaPresentMode: 0
  stadiaTargetFramerate: 0
  vulkanNumSwapchainBuffers: 3
  vulkanEnableSetSRGBWrite: 0
  vulkanEnablePreTransform: 1
  vulkanEnableLateAcquireNextImage: 0
  vulkanEnableCommandBufferRecycling: 1
  loadStoreDebugModeEnabled: 0
  bundleVersion: 0.1
  preloadedAssets: []
  metroInputSource: 0
  wsaTransparentSwapchain: 0
  m_HolographicPauseOnTrackingLoss: 1
  xboxOneDisableKinectGpuReservation: 1
  xboxOneEnable7thCore: 1
  vrSettings:
    enable360StereoCapture: 0
  isWsaHolographicRemotingEnabled: 0
  enableFrameTimingStats: 0
  enableOpenGLProfilerGPURecorders: 1
  useHDRDisplay: 0
  D3DHDRBitDepth: 0
  m_ColorGamuts: 00000000
  targetPixelDensity: 30
  resolutionScalingMode: 0
  resetResolutionOnWindowResize: 0
  androidSupportedAspectRatio: 1
  androidMaxAspectRatio: 2.1
  applicationIdentifier:
    Standalone: com.Annulus-Games.UnityCodeGen
  buildNumber:
    Standalone: 0
    iPhone: 0
    tvOS: 0
  overrideDefaultApplicationIdentifier: 0
  AndroidBundleVersionCode: 1
  AndroidMinSdkVersion: 22
  AndroidTargetSdkVersion: 0
  AndroidPreferredInstallLocation: 1
  aotOptions: 
  stripEngineCode: 1
  iPhoneStrippingLevel: 0
  iPhoneScriptCallOptimization: 0
  ForceInternetPermission: 0
  ForceSDCardPermission: 0
  CreateWallpaper: 0
  APKExpansionFiles: 0
  keepLoadedShadersAlive: 0
  StripUnusedMeshComponents: 1
  strictShaderVariantMatching: 0
  VertexChannelCompressionMask: 4054
  iPhoneSdkVersion: 988
  iOSTargetOSVersionString: 12.0
  tvOSSdkVersion: 0
  tvOSRequireExtendedGameController: 0
  tvOSTargetOSVersionString: 12.0
  uIPrerenderedIcon: 0
  uIRequiresPersistentWiFi: 0
  uIRequiresFullScreen: 1
  uIStatusBarHidden: 1
  uIExitOnSuspend: 0
  uIStatusBarStyle: 0
  appleTVSplashScreen: {fileID: 0}
  appleTVSplashScreen2x: {fileID: 0}
  tvOSSmallIconLayers: []
  tvOSSmallIconLayers2x: []
  tvOSLargeIconLayers: []
  tvOSLargeIconLayers2x: []
  tvOSTopShelfImageLayers: []
  tvOSTopShelfImageLayers2x: []
  tvOSTopShelfImageWideLayers: []
  tvOSTopShelfImageWideLayers2x: []
  iOSLaunchScreenType: 0
  iOSLaunchScreenPortrait: {fileID: 0}
  iOSLaunchScreenLandscape: {fileID: 0}
  iOSLaunchScreenBackgroundColor:
    serializedVersion: 2
    rgba: 0
  iOSLaunchScreenFillPct: 100
  iOSLaunchScreenSize: 100
  iOSLaunchScreenCustomXibPath: 
  iOSLaunchScreeniPadType: 0
  iOSLaunchScreeniPadImage: {fileID: 0}
  iOSLaunchScreeniPadBackgroundColor:
    serializedVersion: 2
    rgba: 0
  iOSLaunchScreeniPadFillPct: 100
  iOSLaunchScreeniPadSize: 100
  iOSLaunchScreeniPadCustomXibPath: 
  iOSLaunchScreenCustomStoryboardPath: 
  iOSLaunchScreeniPadCustomStoryboardPath: 
  iOSDeviceRequirements: []
  iOSURLSchemes: []
  macOSURLSchemes: []
  iOSBackgroundModes: 0
  iOSMetalForceHardShadows: 0
  metalEditorSupport: 1
  metalAPIValidation: 1
  iOSRenderExtraFrameOnPause: 0
  iosCopyPluginsCodeInsteadOfSymlink: 0
  appleDeveloperTeamID: 
  iOSManualSigningProvisioningProfileID: 
  tvOSManualSigningProvisioningProfileID: 
  iOSManualSigningProvisioningProfileType: 0
  tvOSManualSigningProvisioningProfileType: 0
  appleEnableAutomaticSigning: 0
  iOSRequireARKit: 0
  iOSAutomaticallyDetectAndAddCapabilities: 1
  appleEnableProMotion: 0
  shaderPrecisionModel: 0
  clonedFromGUID: c0afd0d1d80e3634a9dac47e8a0426ea
  templatePackageId: com.unity.template.3d@8.1.1
  templateDefaultScene: Assets/Scenes/SampleScene.unity
  useCustomMainManifest: 0
  useCustomLauncherManifest: 0
  useCustomMainGradleTemplate: 0
  useCustomLauncherGradleManifest: 0
  useCustomBaseGradleTemplate: 0
  useCustomGradlePropertiesTemplate: 0
  useCustomProguardFile: 0
  AndroidTargetArchitectures: 1
  AndroidTargetDevices: 0
  AndroidSplashScreenScale: 0
  androidSplashScreen: {fileID: 0}
  AndroidKeystoreName: 
  AndroidKeyaliasName: 
  AndroidEnableArmv9SecurityFeatures: 0
  AndroidBuildApkPerCpuArchitecture: 0
  AndroidTVCompatibility: 0
  AndroidIsGame: 1
  AndroidEnableTango: 0
  androidEnableBanner: 1
  androidUseLowAccuracyLocation: 0
  androidUseCustomKeystore: 0
  m_AndroidBanners:
  - width: 320
    height: 180
    banner: {fileID: 0}
  androidGamepadSupportLevel: 0
  chromeosInputEmulation: 1
  AndroidMinifyRelease: 0
  AndroidMinifyDebug: 0
  AndroidValidateAppBundleSize: 1
  AndroidAppBundleSizeToValidate: 150
  m_BuildTargetIcons: []
  m_BuildTargetPlatformIcons:
  - m_BuildTarget: tvOS
    m_Icons:
    - m_Textures: []
      m_Width: 1280
      m_Height: 768
      m_Kind: 0
      m_SubKind: 
    - m_Textures: []
      m_Width: 800
      m_Height: 480
      m_Kind: 0
      m_SubKind: 
    - m_Textures: []
      m_Width: 400
      m_Height: 240
      m_Kind: 0
      m_SubKind: 
    - m_Textures: []
      m_Width: 4640
      m_Height: 1440
      m_Kind: 1
      m_SubKind: 
    - m_Textures: []
      m_Width: 2320
      m_Height: 720
      m_Kind: 1
      m_SubKind: 
    - m_Textures: []
      m_Width: 3840
      m_Height: 1440
      m_Kind: 1
      m_SubKind: 
    - m_Textures: []
      m_Width: 1920
      m_Height: 720
      m_Kind: 1
      m_SubKind: 
  - m_BuildTarget: iPhone
    m_Icons:
    - m_Textures: []
      m_Width: 180
      m_Height: 180
      m_Kind: 0
      m_SubKind: iPhone
    - m_Textures: []
      m_Width: 120
      m_Height: 120
      m_Kind: 0
      m_SubKind: iPhone
    - m_Textures: []
      m_Width: 167
      m_Height: 167
      m_Kind: 0
      m_SubKind: iPad
    - m_Textures: []
      m_Width: 152
      m_Height: 152
      m_Kind: 0
      m_SubKind: iPad
    - m_Textures: []
      m_Width: 76
      m_Height: 76
      m_Kind: 0
      m_SubKind: iPad
    - m_Textures: []
      m_Width: 120
      m_Height: 120
      m_Kind: 3
      m_SubKind: iPhone
    - m_Textures: []
      m_Width: 80
      m_Height: 80
      m_Kind: 3
      m_SubKind: iPhone
    - m_Textures: []
      m_Width: 80
      m_Height: 80
      m_Kind: 3
      m_SubKind: iPad
    - m_Textures: []
      m_Width: 40
      m_Height: 40
      m_Kind: 3
      m_SubKind: iPad
    - m_Textures: []
      m_Width: 87
      m_Height: 87
      m_Kind: 1
      m_SubKind: iPhone
    - m_Textures: []
      m_Width: 58
      m_Height: 58
      m_Kind: 1
      m_SubKind: iPhone
    - m_Textures: []
      m_Width: 29
      m_Height: 29
      m_Kind: 1
      m_SubKind: iPhone
    - m_Textures: []
      m_Width: 58
      m_Height: 58
      m_Kind: 1
      m_SubKind: iPad
    - m_Textures: []
      m_Width: 29
      m_Height: 29
      m_Kind: 1
      m_SubKind: iPad
    - m_Textures: []
      m_Width: 60
      m_Height: 60
      m_Kind: 2
      m_SubKind: iPhone
    - m_Textures: []
      m_Width: 40
      m_Height: 40
      m_Kind: 2
      m_SubKind: iPhone
    - m_Textures: []
      m_Width: 40
      m_Height: 40
      m_Kind: 2
      m_SubKind: iPad
    - m_Textures: []
      m_Width: 20
      m_Height: 20
      m_Kind: 2
      m_SubKind: iPad
    - m_Textures: []
      m_Width: 1024
      m_Height: 1024
      m_Kind: 4
      m_SubKind: App Store
  - m_BuildTarget: Android
    m_Icons:
    - m_Textures: []
      m_Width: 432
      m_Height: 432
      m_Kind: 2
      m_SubKind: 
    - m_Textures: []
      m_Width: 324
      m_Height: 324
      m_Kind: 2
      m_SubKind: 
    - m_Textures: []
      m_Width: 216
      m_Height: 216
      m_Kind: 2
      m_SubKind: 
    - m_Textures: []
      m_Width: 162
      m_Height: 162
      m_Kind: 2
      m_SubKind: 
    - m_Textures: []
      m_Width: 108
      m_Height: 108
      m_Kind: 2
      m_SubKind: 
    - m_Textures: []
      m_Width: 81
      m_Height: 81
      m_Kind: 2
      m_SubKind: 
    - m_Textures: []
      m_Width: 192
      m_Height: 192
      m_Kind: 1
      m_SubKind: 
    - m_Textures: []
      m_Width: 144
      m_Height: 144
      m_Kind: 1
      m_SubKind: 
    - m_Textures: []
      m_Width: 96
      m_Height: 96
      m_Kind: 1
      m_SubKind: 
    - m_Textures: []
      m_Width: 72
      m_Height: 72
      m_Kind: 1
      m_SubKind: 
    - m_Textures: []
      m_Width: 48
      m_Height: 48
      m_Kind: 1
      m_SubKind: 
    - m_Textures: []
      m_Width: 36
      m_Height: 36
      m_Kind: 1
      m_SubKind: 
    - m_Textures: []
      m_Width: 192
      m_Height: 192
      m_Kind: 0
      m_SubKind: 
    - m_Textures: []
      m_Width: 144
      m_Height: 144
      m_Kind: 0
      m_SubKind: 
    - m_Textures: []
      m_Width: 96
      m_Height: 96
      m_Kind: 0
      m_SubKind: 
    - m_Textures: []
      m_Width: 72
      m_Height: 72
      m_Kind: 0
      m_SubKind: 
    - m_Textures: []
      m_Width: 48
      m_Height: 48
      m_Kind: 0
      m_SubKind: 
    - m_Textures: []
      m_Width: 36
      m_Height: 36
      m_Kind: 0
      m_SubKind: 
  m_BuildTargetBatching:
  - m_BuildTarget: Standalone
    m_StaticBatching: 1
    m_DynamicBatching: 0
  - m_BuildTarget: tvOS
    m_StaticBatching: 1
    m_DynamicBatching: 0
  - m_BuildTarget: Android
    m_StaticBatching: 1
    m_DynamicBatching: 0
  - m_BuildTarget: iPhone
    m_StaticBatching: 1
    m_DynamicBatching: 0
  - m_BuildTarget: WebGL
    m_StaticBatching: 0
    m_DynamicBatching: 0
  m_BuildTargetShaderSettings: []
  m_BuildTargetGraphicsJobs:
  - m_BuildTarget: MacStandaloneSupport
    m_GraphicsJobs: 0
  - m_BuildTarget: Switch
    m_GraphicsJobs: 1
  - m_BuildTarget: MetroSupport
    m_GraphicsJobs: 1
  - m_BuildTarget: AppleTVSupport
    m_GraphicsJobs: 0
  - m_BuildTarget: BJMSupport
    m_GraphicsJobs: 1
  - m_BuildTarget: LinuxStandaloneSupport
    m_GraphicsJobs: 1
  - m_BuildTarget: PS4Player
    m_GraphicsJobs: 1
  - m_BuildTarget: iOSSupport
    m_GraphicsJobs: 0
  - m_BuildTarget: WindowsStandaloneSupport
    m_GraphicsJobs: 1
  - m_BuildTarget: XboxOnePlayer
    m_GraphicsJobs: 1
  - m_BuildTarget: LuminSupport
    m_GraphicsJobs: 0
  - m_BuildTarget: AndroidPlayer
    m_GraphicsJobs: 0
  - m_BuildTarget: WebGLSupport
    m_GraphicsJobs: 0
  m_BuildTargetGraphicsJobMode:
  - m_BuildTarget: PS4Player
    m_GraphicsJobMode: 0
  - m_BuildTarget: XboxOnePlayer
    m_GraphicsJobMode: 0
  m_BuildTargetGraphicsAPIs:
  - m_BuildTarget: AndroidPlayer
    m_APIs: 150000000b000000
    m_Automatic: 1
  - m_BuildTarget: iOSSupport
    m_APIs: 10000000
    m_Automatic: 1
  - m_BuildTarget: AppleTVSupport
    m_APIs: 10000000
    m_Automatic: 1
  - m_BuildTarget: WebGLSupport
    m_APIs: 0b000000
    m_Automatic: 1
  m_BuildTargetVRSettings:
  - m_BuildTarget: Standalone
    m_Enabled: 0
    m_Devices:
    - Oculus
    - OpenVR
  m_DefaultShaderChunkSizeInMB: 16
  m_DefaultShaderChunkCount: 0
  openGLRequireES31: 0
  openGLRequireES31AEP: 0
  openGLRequireES32: 0
  m_TemplateCustomTags: {}
  mobileMTRendering:
    Android: 1
    iPhone: 1
    tvOS: 1
  m_BuildTargetGroupLightmapEncodingQuality:
  - m_BuildTarget: Android
    m_EncodingQuality: 1
  - m_BuildTarget: iPhone
    m_EncodingQuality: 1
  - m_BuildTarget: tvOS
    m_EncodingQuality: 1
  m_BuildTargetGroupHDRCubemapEncodingQuality:
  - m_BuildTarget: Android
    m_EncodingQuality: 1
  - m_BuildTarget: iPhone
    m_EncodingQuality: 1
  - m_BuildTarget: tvOS
    m_EncodingQuality: 1
  m_BuildTargetGroupLightmapSettings: []
  m_BuildTargetGroupLoadStoreDebugModeSettings: []
  m_BuildTargetNormalMapEncoding:
  - m_BuildTarget: Android
    m_Encoding: 1
  - m_BuildTarget: iPhone
    m_Encoding: 1
  - m_BuildTarget: tvOS
    m_Encoding: 1
  m_BuildTargetDefaultTextureCompressionFormat:
  - m_BuildTarget: Android
    m_Format: 3
  playModeTestRunnerEnabled: 0
  runPlayModeTestAsEditModeTest: 0
  actionOnDotNetUnhandledException: 1
  enableInternalProfiler: 0
  logObjCUncaughtExceptions: 1
  enableCrashReportAPI: 0
  cameraUsageDescription: 
  locationUsageDescription: 
  microphoneUsageDescription: 
  bluetoothUsageDescription: 
  macOSTargetOSVersion: 10.13.0
  switchNMETAOverride: 
  switchNetLibKey: 
  switchSocketMemoryPoolSize: 6144
  switchSocketAllocatorPoolSize: 128
  switchSocketConcurrencyLimit: 14
  switchScreenResolutionBehavior: 2
  switchUseCPUProfiler: 0
  switchUseGOLDLinker: 0
  switchLTOSetting: 0
  switchApplicationID: 0x01004b9000490000
  switchNSODependencies: 
  switchCompilerFlags: 
  switchTitleNames_0: 
  switchTitleNames_1: 
  switchTitleNames_2: 
  switchTitleNames_3: 
  switchTitleNames_4: 
  switchTitleNames_5: 
  switchTitleNames_6: 
  switchTitleNames_7: 
  switchTitleNames_8: 
  switchTitleNames_9: 
  switchTitleNames_10: 
  switchTitleNames_11: 
  switchTitleNames_12: 
  switchTitleNames_13: 
  switchTitleNames_14: 
  switchTitleNames_15: 
  switchPublisherNames_0: 
  switchPublisherNames_1: 
  switchPublisherNames_2: 
  switchPublisherNames_3: 
  switchPublisherNames_4: 
  switchPublisherNames_5: 
  switchPublisherNames_6: 
  switchPublisherNames_7: 
  switchPublisherNames_8: 
  switchPublisherNames_9: 
  switchPublisherNames_10: 
  switchPublisherNames_11: 
  switchPublisherNames_12: 
  switchPublisherNames_13: 
  switchPublisherNames_14: 
  switchPublisherNames_15: 
  switchIcons_0: {fileID: 0}
  switchIcons_1: {fileID: 0}
  switchIcons_2: {fileID: 0}
  switchIcons_3: {fileID: 0}
  switchIcons_4: {fileID: 0}
  switchIcons_5: {fileID: 0}
  switchIcons_6: {fileID: 0}
  switchIcons_7: {fileID: 0}
  switchIcons_8: {fileID: 0}
  switchIcons_9: {fileID: 0}
  switchIcons_10: {fileID: 0}
  switchIcons_11: {fileID: 0}
  switchIcons_12: {fileID: 0}
  switchIcons_13: {fileID: 0}
  switchIcons_14: {fileID: 0}
  switchIcons_15: {fileID: 0}
  switchSmallIcons_0: {fileID: 0}
  switchSmallIcons_1: {fileID: 0}
  switchSmallIcons_2: {fileID: 0}
  switchSmallIcons_3: {fileID: 0}
  switchSmallIcons_4: {fileID: 0}
  switchSmallIcons_5: {fileID: 0}
  switchSmallIcons_6: {fileID: 0}
  switchSmallIcons_7: {fileID: 0}
  switchSmallIcons_8: {fileID: 0}
  switchSmallIcons_9: {fileID: 0}
  switchSmallIcons_10: {fileID: 0}
  switchSmallIcons_11: {fileID: 0}
  switchSmallIcons_12: {fileID: 0}
  switchSmallIcons_13: {fileID: 0}
  switchSmallIcons_14: {fileID: 0}
  switchSmallIcons_15: {fileID: 0}
  switchManualHTML: 
  switchAccessibleURLs: 
  switchLegalInformation: 
  switchMainThreadStackSize: 1048576
  switchPresenceGroupId: 
  switchLogoHandling: 0
  switchReleaseVersion: 0
  switchDisplayVersion: 1.0.0
  switchStartupUserAccount: 0
  switchTouchScreenUsage: 0
  switchSupportedLanguagesMask: 0
  switchLogoType: 0
  switchApplicationErrorCodeCategory: 
  switchUserAccountSaveDataSize: 0
  switchUserAccountSaveDataJournalSize: 0
  switchApplicationAttribute: 0
  switchCardSpecSize: -1
  switchCardSpecClock: -1
  switchRatingsMask: 0
  switchRatingsInt_0: 0
  switchRatingsInt_1: 0
  switchRatingsInt_2: 0
  switchRatingsInt_3: 0
  switchRatingsInt_4: 0
  switchRatingsInt_5: 0
  switchRatingsInt_6: 0
  switchRatingsInt_7: 0
  switchRatingsInt_8: 0
  switchRatingsInt_9: 0
  switchRatingsInt_10: 0
  switchRatingsInt_11: 0
  switchRatingsInt_12: 0
  switchLocalCommunicationIds_0: 
  switchLocalCommunicationIds_1: 
  switchLocalCommunicationIds_2: 
  switchLocalCommunicationIds_3: 
  switchLocalCommunicationIds_4: 
  switchLocalCommunicationIds_5: 
  switchLocalCommunicationIds_6: 
  switchLocalCommunicationIds_7: 
  switchParentalControl: 0
  switchAllowsScreenshot: 1
  switchAllowsVideoCapturing: 1
  switchAllowsRuntimeAddOnContentInstall: 0
  switchDataLossConfirmation: 0
  switchUserAccountLockEnabled: 0
  switchSystemResourceMemory: 16777216
  switchSupportedNpadStyles: 22
  switchNativeFsCacheSize: 32
  switchIsHoldTypeHorizontal: 0
  switchSupportedNpadCount: 8
  switchSocketConfigEnabled: 0
  switchTcpInitialSendBufferSize: 32
  switchTcpInitialReceiveBufferSize: 64
  switchTcpAutoSendBufferSizeMax: 256
  switchTcpAutoReceiveBufferSizeMax: 256
  switchUdpSendBufferSize: 9
  switchUdpReceiveBufferSize: 42
  switchSocketBufferEfficiency: 4
  switchSocketInitializeEnabled: 1
  switchNetworkInterfaceManagerInitializeEnabled: 1
  switchPlayerConnectionEnabled: 1
  switchUseNewStyleFilepaths: 1
  switchUseLegacyFmodPriorities: 0
  switchUseMicroSleepForYield: 1
  switchEnableRamDiskSupport: 0
  switchMicroSleepForYieldTime: 25
  switchRamDiskSpaceSize: 12
  ps4NPAgeRating: 12
  ps4NPTitleSecret: 
  ps4NPTrophyPackPath: 
  ps4ParentalLevel: 11
  ps4ContentID: ED1633-NPXX51362_00-0000000000000000
  ps4Category: 0
  ps4MasterVersion: 01.00
  ps4AppVersion: 01.00
  ps4AppType: 0
  ps4ParamSfxPath: 
  ps4VideoOutPixelFormat: 0
  ps4VideoOutInitialWidth: 1920
  ps4VideoOutBaseModeInitialWidth: 1920
  ps4VideoOutReprojectionRate: 60
  ps4PronunciationXMLPath: 
  ps4PronunciationSIGPath: 
  ps4BackgroundImagePath: 
  ps4StartupImagePath: 
  ps4StartupImagesFolder: 
  ps4IconImagesFolder: 
  ps4SaveDataImagePath: 
  ps4SdkOverride: 
  ps4BGMPath: 
  ps4ShareFilePath: 
  ps4ShareOverlayImagePath: 
  ps4PrivacyGuardImagePath: 
  ps4ExtraSceSysFile: 
  ps4NPtitleDatPath: 
  ps4RemotePlayKeyAssignment: -1
  ps4RemotePlayKeyMappingDir: 
  ps4PlayTogetherPlayerCount: 0
  ps4EnterButtonAssignment: 1
  ps4ApplicationParam1: 0
  ps4ApplicationParam2: 0
  ps4ApplicationParam3: 0
  ps4ApplicationParam4: 0
  ps4DownloadDataSize: 0
  ps4GarlicHeapSize: 2048
  ps4ProGarlicHeapSize: 2560
  playerPrefsMaxSize: 32768
  ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ
  ps4pnSessions: 1
  ps4pnPresence: 1
  ps4pnFriends: 1
  ps4pnGameCustomData: 1
  playerPrefsSupport: 0
  enableApplicationExit: 0
  resetTempFolder: 1
  restrictedAudioUsageRights: 0
  ps4UseResolutionFallback: 0
  ps4ReprojectionSupport: 0
  ps4UseAudio3dBackend: 0
  ps4UseLowGarlicFragmentationMode: 1
  ps4SocialScreenEnabled: 0
  ps4ScriptOptimizationLevel: 0
  ps4Audio3dVirtualSpeakerCount: 14
  ps4attribCpuUsage: 0
  ps4PatchPkgPath: 
  ps4PatchLatestPkgPath: 
  ps4PatchChangeinfoPath: 
  ps4PatchDayOne: 0
  ps4attribUserManagement: 0
  ps4attribMoveSupport: 0
  ps4attrib3DSupport: 0
  ps4attribShareSupport: 0
  ps4attribExclusiveVR: 0
  ps4disableAutoHideSplash: 0
  ps4videoRecordingFeaturesUsed: 0
  ps4contentSearchFeaturesUsed: 0
  ps4CompatibilityPS5: 0
  ps4AllowPS5Detection: 0
  ps4GPU800MHz: 1
  ps4attribEyeToEyeDistanceSettingVR: 0
  ps4IncludedModules: []
  ps4attribVROutputEnabled: 0
  monoEnv: 
  splashScreenBackgroundSourceLandscape: {fileID: 0}
  splashScreenBackgroundSourcePortrait: {fileID: 0}
  blurSplashScreenBackground: 1
  spritePackerPolicy: 
  webGLMemorySize: 16
  webGLExceptionSupport: 1
  webGLNameFilesAsHashes: 0
  webGLShowDiagnostics: 0
  webGLDataCaching: 1
  webGLDebugSymbols: 0
  webGLEmscriptenArgs: 
  webGLModulesDirectory: 
  webGLTemplate: APPLICATION:Default
  webGLAnalyzeBuildSize: 0
  webGLUseEmbeddedResources: 0
  webGLCompressionFormat: 1
  webGLWasmArithmeticExceptions: 0
  webGLLinkerTarget: 1
  webGLThreadsSupport: 0
  webGLDecompressionFallback: 0
  webGLInitialMemorySize: 32
  webGLMaximumMemorySize: 2048
  webGLMemoryGrowthMode: 2
  webGLMemoryLinearGrowthStep: 16
  webGLMemoryGeometricGrowthStep: 0.2
  webGLMemoryGeometricGrowthCap: 96
  webGLPowerPreference: 2
  scriptingDefineSymbols: {}
  additionalCompilerArguments: {}
  platformArchitecture: {}
  scriptingBackend: {}
  il2cppCompilerConfiguration: {}
  il2cppCodeGeneration: {}
  managedStrippingLevel: {}
  incrementalIl2cppBuild: {}
  suppressCommonWarnings: 1
  allowUnsafeCode: 0
  useDeterministicCompilation: 1
  selectedPlatform: 0
  additionalIl2CppArgs: 
  scriptingRuntimeVersion: 1
  gcIncremental: 1
  gcWBarrierValidation: 0
  apiCompatibilityLevelPerPlatform: {}
  m_RenderingPath: 1
  m_MobileRenderingPath: 1
  metroPackageName: UniCodeGen
  metroPackageVersion: 
  metroCertificatePath: 
  metroCertificatePassword: 
  metroCertificateSubject: 
  metroCertificateIssuer: 
  metroCertificateNotAfter: 0000000000000000
  metroApplicationDescription: UniCodeGen
  wsaImages: {}
  metroTileShortName: 
  metroTileShowName: 0
  metroMediumTileShowName: 0
  metroLargeTileShowName: 0
  metroWideTileShowName: 0
  metroSupportStreamingInstall: 0
  metroLastRequiredScene: 0
  metroDefaultTileSize: 1
  metroTileForegroundText: 2
  metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0}
  metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, a: 1}
  metroSplashScreenUseBackgroundColor: 0
  platformCapabilities: {}
  metroTargetDeviceFamilies: {}
  metroFTAName: 
  metroFTAFileTypes: []
  metroProtocolName: 
  vcxProjDefaultLanguage: 
  XboxOneProductId: 
  XboxOneUpdateKey: 
  XboxOneSandboxId: 
  XboxOneContentId: 
  XboxOneTitleId: 
  XboxOneSCId: 
  XboxOneGameOsOverridePath: 
  XboxOnePackagingOverridePath: 
  XboxOneAppManifestOverridePath: 
  XboxOneVersion: 1.0.0.0
  XboxOnePackageEncryption: 0
  XboxOnePackageUpdateGranularity: 2
  XboxOneDescription: 
  XboxOneLanguage:
  - enus
  XboxOneCapability: []
  XboxOneGameRating: {}
  XboxOneIsContentPackage: 0
  XboxOneEnhancedXboxCompatibilityMode: 0
  XboxOneEnableGPUVariability: 1
  XboxOneSockets: {}
  XboxOneSplashScreen: {fileID: 0}
  XboxOneAllowedProductIds: []
  XboxOnePersistentLocalStorageSize: 0
  XboxOneXTitleMemory: 8
  XboxOneOverrideIdentityName: 
  XboxOneOverrideIdentityPublisher: 
  vrEditorSettings: {}
  cloudServicesEnabled:
    UNet: 1
  luminIcon:
    m_Name: 
    m_ModelFolderPath: 
    m_PortalFolderPath: 
  luminCert:
    m_CertPath: 
    m_SignPackage: 1
  luminIsChannelApp: 0
  luminVersion:
    m_VersionCode: 1
    m_VersionName: 
  hmiPlayerDataPath: 
  hmiForceSRGBBlit: 1
  embeddedLinuxEnableGamepadInput: 1
  hmiCpuConfiguration: 
  apiCompatibilityLevel: 6
  activeInputHandler: 0
  windowsGamepadBackendHint: 0
  cloudProjectId: 
  framebufferDepthMemorylessMode: 0
  qualitySettingsNames: []
  projectName: 
  organizationId: 
  cloudEnabled: 0
  legacyClampBlendShapeWeights: 0
  hmiLoadingImage: {fileID: 0}
  virtualTexturingSupportEnabled: 0
  insecureHttpOption: 0


================================================
FILE: ProjectSettings/ProjectVersion.txt
================================================
m_EditorVersion: 2022.2.2f1
m_EditorVersionWithRevision: 2022.2.2f1 (c93c5d3acf5b)


================================================
FILE: ProjectSettings/QualitySettings.asset
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!47 &1
QualitySettings:
  m_ObjectHideFlags: 0
  serializedVersion: 5
  m_CurrentQuality: 5
  m_QualitySettings:
  - serializedVersion: 3
    name: Very Low
    pixelLightCount: 0
    shadows: 0
    shadowResolution: 0
    shadowProjection: 1
    shadowCascades: 1
    shadowDistance: 15
    shadowNearPlaneOffset: 3
    shadowCascade2Split: 0.33333334
    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
    shadowmaskMode: 0
    skinWeights: 1
    globalTextureMipmapLimit: 1
    textureMipmapLimitSettings: []
    anisotropicTextures: 0
    antiAliasing: 0
    softParticles: 0
    softVegetation: 0
    realtimeReflectionProbes: 0
    billboardsFaceCameraPosition: 0
    useLegacyDetailDistribution: 1
    vSyncCount: 0
    lodBias: 0.3
    maximumLODLevel: 0
    enableLODCrossFade: 1
    streamingMipmapsActive: 0
    streamingMipmapsAddAllCameras: 1
    streamingMipmapsMemoryBudget: 512
    streamingMipmapsRenderersPerFrame: 512
    streamingMipmapsMaxLevelReduction: 2
    streamingMipmapsMaxFileIORequests: 1024
    particleRaycastBudget: 4
    asyncUploadTimeSlice: 2
    asyncUploadBufferSize: 16
    asyncUploadPersistentBuffer: 1
    resolutionScalingFixedDPIFactor: 1
    customRenderPipeline: {fileID: 0}
    terrainQualityOverrides: 0
    terrainPixelError: 1
    terrainDetailDensityScale: 1
    terrainBasemapDistance: 1000
    terrainDetailDistance: 80
    terrainTreeDistance: 5000
    terrainBillboardStart: 50
    terrainFadeLength: 5
    terrainMaxTrees: 50
    excludedTargetPlatforms: []
  - serializedVersion: 3
    name: Low
    pixelLightCount: 0
    shadows: 0
    shadowResolution: 0
    shadowProjection: 1
    shadowCascades: 1
    shadowDistance: 20
    shadowNearPlaneOffset: 3
    shadowCascade2Split: 0.33333334
    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
    shadowmaskMode: 0
    skinWeights: 2
    globalTextureMipmapLimit: 0
    textureMipmapLimitSettings: []
    anisotropicTextures: 0
    antiAliasing: 0
    softParticles: 0
    softVegetation: 0
    realtimeReflectionProbes: 0
    billboardsFaceCameraPosition: 0
    useLegacyDetailDistribution: 1
    vSyncCount: 0
    lodBias: 0.4
    maximumLODLevel: 0
    enableLODCrossFade: 1
    streamingMipmapsActive: 0
    streamingMipmapsAddAllCameras: 1
    streamingMipmapsMemoryBudget: 512
    streamingMipmapsRenderersPerFrame: 512
    streamingMipmapsMaxLevelReduction: 2
    streamingMipmapsMaxFileIORequests: 1024
    particleRaycastBudget: 16
    asyncUploadTimeSlice: 2
    asyncUploadBufferSize: 16
    asyncUploadPersistentBuffer: 1
    resolutionScalingFixedDPIFactor: 1
    customRenderPipeline: {fileID: 0}
    terrainQualityOverrides: 0
    terrainPixelError: 1
    terrainDetailDensityScale: 1
    terrainBasemapDistance: 1000
    terrainDetailDistance: 80
    terrainTreeDistance: 5000
    terrainBillboardStart: 50
    terrainFadeLength: 5
    terrainMaxTrees: 50
    excludedTargetPlatforms: []
  - serializedVersion: 3
    name: Medium
    pixelLightCount: 1
    shadows: 1
    shadowResolution: 0
    shadowProjection: 1
    shadowCascades: 1
    shadowDistance: 20
    shadowNearPlaneOffset: 3
    shadowCascade2Split: 0.33333334
    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
    shadowmaskMode: 0
    skinWeights: 2
    globalTextureMipmapLimit: 0
    textureMipmapLimitSettings: []
    anisotropicTextures: 1
    antiAliasing: 0
    softParticles: 0
    softVegetation: 0
    realtimeReflectionProbes: 0
    billboardsFaceCameraPosition: 0
    useLegacyDetailDistribution: 1
    vSyncCount: 1
    lodBias: 0.7
    maximumLODLevel: 0
    enableLODCrossFade: 1
    streamingMipmapsActive: 0
    streamingMipmapsAddAllCameras: 1
    streamingMipmapsMemoryBudget: 512
    streamingMipmapsRenderersPerFrame: 512
    streamingMipmapsMaxLevelReduction: 2
    streamingMipmapsMaxFileIORequests: 1024
    particleRaycastBudget: 64
    asyncUploadTimeSlice: 2
    asyncUploadBufferSize: 16
    asyncUploadPersistentBuffer: 1
    resolutionScalingFixedDPIFactor: 1
    customRenderPipeline: {fileID: 0}
    terrainQualityOverrides: 0
    terrainPixelError: 1
    terrainDetailDensityScale: 1
    terrainBasemapDistance: 1000
    terrainDetailDistance: 80
    terrainTreeDistance: 5000
    terrainBillboardStart: 50
    terrainFadeLength: 5
    terrainMaxTrees: 50
    excludedTargetPlatforms: []
  - serializedVersion: 3
    name: High
    pixelLightCount: 2
    shadows: 2
    shadowResolution: 1
    shadowProjection: 1
    shadowCascades: 2
    shadowDistance: 40
    shadowNearPlaneOffset: 3
    shadowCascade2Split: 0.33333334
    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
    shadowmaskMode: 1
    skinWeights: 2
    globalTextureMipmapLimit: 0
    textureMipmapLimitSettings: []
    anisotropicTextures: 1
    antiAliasing: 0
    softParticles: 0
    softVegetation: 1
    realtimeReflectionProbes: 1
    billboardsFaceCameraPosition: 1
    useLegacyDetailDistribution: 1
    vSyncCount: 1
    lodBias: 1
    maximumLODLevel: 0
    enableLODCrossFade: 1
    streamingMipmapsActive: 0
    streamingMipmapsAddAllCameras: 1
    streamingMipmapsMemoryBudget: 512
    streamingMipmapsRenderersPerFrame: 512
    streamingMipmapsMaxLevelReduction: 2
    streamingMipmapsMaxFileIORequests: 1024
    particleRaycastBudget: 256
    asyncUploadTimeSlice: 2
    asyncUploadBufferSize: 16
    asyncUploadPersistentBuffer: 1
    resolutionScalingFixedDPIFactor: 1
    customRenderPipeline: {fileID: 0}
    terrainQualityOverrides: 0
    terrainPixelError: 1
    terrainDetailDensityScale: 1
    terrainBasemapDistance: 1000
    terrainDetailDistance: 80
    terrainTreeDistance: 5000
    terrainBillboardStart: 50
    terrainFadeLength: 5
    terrainMaxTrees: 50
    excludedTargetPlatforms: []
  - serializedVersion: 3
    name: Very High
    pixelLightCount: 3
    shadows: 2
    shadowResolution: 2
    shadowProjection: 1
    shadowCascades: 2
    shadowDistance: 70
    shadowNearPlaneOffset: 3
    shadowCascade2Split: 0.33333334
    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
    shadowmaskMode: 1
    skinWeights: 4
    globalTextureMipmapLimit: 0
    textureMipmapLimitSettings: []
    anisotropicTextures: 2
    antiAliasing: 2
    softParticles: 1
    softVegetation: 1
    realtimeReflectionProbes: 1
    billboardsFaceCameraPosition: 1
    useLegacyDetailDistribution: 1
    vSyncCount: 1
    lodBias: 1.5
    maximumLODLevel: 0
    enableLODCrossFade: 1
    streamingMipmapsActive: 0
    streamingMipmapsAddAllCameras: 1
    streamingMipmapsMemoryBudget: 512
    streamingMipmapsRenderersPerFrame: 512
    streamingMipmapsMaxLevelReduction: 2
    streamingMipmapsMaxFileIORequests: 1024
    particleRaycastBudget: 1024
    asyncUploadTimeSlice: 2
    asyncUploadBufferSize: 16
    asyncUploadPersistentBuffer: 1
    resolutionScalingFixedDPIFactor: 1
    customRenderPipeline: {fileID: 0}
    terrainQualityOverrides: 0
    terrainPixelError: 1
    terrainDetailDensityScale: 1
    terrainBasemapDistance: 1000
    terrainDetailDistance: 80
    terrainTreeDistance: 5000
    terrainBillboardStart: 50
    terrainFadeLength: 5
    terrainMaxTrees: 50
    excludedTargetPlatforms: []
  - serializedVersion: 3
    name: Ultra
    pixelLightCount: 4
    shadows: 2
    shadowResolution: 2
    shadowProjection: 1
    shadowCascades: 4
    shadowDistance: 150
    shadowNearPlaneOffset: 3
    shadowCascade2Split: 0.33333334
    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
    shadowmaskMode: 1
    skinWeights: 4
    globalTextureMipmapLimit: 0
    textureMipmapLimitSettings: []
    anisotropicTextures: 2
    antiAliasing: 2
    softParticles: 1
    softVegetation: 1
    realtimeReflectionProbes: 1
    billboardsFaceCameraPosition: 1
    useLegacyDetailDistribution: 1
    vSyncCount: 1
    lodBias: 2
    maximumLODLevel: 0
    enableLODCrossFade: 1
    streamingMipmapsActive: 0
    streamingMipmapsAddAllCameras: 1
    streamingMipmapsMemoryBudget: 512
    streamingMipmapsRenderersPerFrame: 512
    streamingMipmapsMaxLevelReduction: 2
    streamingMipmapsMaxFileIORequests: 1024
    particleRaycastBudget: 4096
    asyncUploadTimeSlice: 2
    asyncUploadBufferSize: 16
    asyncUploadPersistentBuffer: 1
    resolutionScalingFixedDPIFactor: 1
    customRenderPipeline: {fileID: 0}
    terrainQualityOverrides: 0
    terrainPixelError: 1
    terrainDetailDensityScale: 1
    terrainBasemapDistance: 1000
    terrainDetailDistance: 80
    terrainTreeDistance: 5000
    terrainBillboardStart: 50
    terrainFadeLength: 5
    terrainMaxTrees: 50
    excludedTargetPlatforms: []
  m_TextureMipmapLimitGroupNames: []
  m_PerPlatformDefaultQuality:
    Android: 2
    Lumin: 5
    Nintendo 3DS: 5
    Nintendo Switch: 5
    PS4: 5
    PSP2: 2
    Server: 0
    Stadia: 5
    Standalone: 5
    WebGL: 3
    Windows Store Apps: 5
    XboxOne: 5
    iPhone: 2
    tvOS: 2


================================================
FILE: ProjectSettings/SceneTemplateSettings.json
================================================
{
    "templatePinStates": [],
    "dependencyTypeInfos": [
        {
            "userAdded": false,
            "type": "UnityEngine.AnimationClip",
            "ignore": false,
            "defaultInstantiationMode": 0,
            "supportsModification": true
        },
        {
            "userAdded": false,
            "type": "UnityEditor.Animations.AnimatorController",
            "ignore": false,
            "defaultInstantiationMode": 0,
            "supportsModification": true
        },
        {
            "userAdded": false,
            "type": "UnityEngine.AnimatorOverrideController",
            "ignore": false,
            "defaultInstantiationMode": 0,
            "supportsModification": true
        },
        {
            "userAdded": false,
            "type": "UnityEditor.Audio.AudioMixerController",
            "ignore": false,
            "defaultInstantiationMode": 0,
            "supportsModification": true
        },
        {
            "userAdded": false,
            "type": "UnityEngine.ComputeShader",
            "ignore": true,
            "defaultInstantiationMode": 1,
            "supportsModification": true
        },
        {
            "userAdded": false,
            "type": "UnityEngine.Cubemap",
            "ignore": false,
            "defaultInstantiationMode": 0,
            "supportsModification": true
        },
        {
            "userAdded": false,
            "type": "UnityEngine.GameObject",
            "ignore": false,
            "defaultInstantiationMode": 0,
            "supportsModification": true
        },
        {
            "userAdded": false,
            "type": "UnityEditor.LightingDataAsset",
            "ignore": false,
            "defaultInstantiationMode": 0,
            "supportsModification": false
        },
        {
            "userAdded": false,
            "type": "UnityEngine.LightingSettings",
            "ignore": false,
            "defaultInstantiationMode": 0,
            "supportsModification": true
        },
        {
            "userAdded": false,
            "type": "UnityEngine.Material",
            "ignore": false,
            "defaultInstantiationMode": 0,
            "supportsModification": true
        },
        {
            "userAdded": false,
            "type": "UnityEditor.MonoScript",
            "ignore": true,
            "defaultInstantiationMode": 1,
            "supportsModification": true
        },
        {
            "userAdded": false,
            "type": "UnityEngine.PhysicMaterial",
            "ignore": false,
            "defaultInstantiationMode": 0,
            "supportsModification": true
        },
        {
            "userAdded": false,
            "type": "UnityEngine.PhysicsMaterial2D",
            "ignore": false,
            "defaultInstantiationMode": 0,
            "supportsModification": true
        },
        {
            "userAdded": false,
            "type": "UnityEngine.Rendering.PostProcessing.PostProcessProfile",
            "ignore": false,
            "defaultInstantiationMode": 0,
            "supportsModification": true
        },
        {
            "userAdded": false,
            "type": "UnityEngine.Rendering.PostProcessing.PostProcessResources",
            "ignore": false,
            "defaultInstantiationMode": 0,
            "supportsModification": true
        },
        {
            "userAdded": false,
            "type": "UnityEngine.Rendering.VolumeProfile",
            "ignore": false,
            "defaultInstantiationMode": 0,
            "supportsModification": true
        },
        {
            "userAdded": false,
            "type": "UnityEditor.SceneAsset",
            "ignore": false,
            "defaultInstantiationMode": 0,
            "supportsModification": false
        },
        {
            "userAdded": false,
            "type": "UnityEngine.Shader",
            "ignore": true,
            "defaultInstantiationMode": 1,
            "supportsModification": true
        },
        {
            "userAdded": false,
            "type": "UnityEngine.ShaderVariantCollection",
            "ignore": true,
            "defaultInstantiationMode": 1,
            "supportsModification": true
        },
        {
            "userAdded": false,
            "type": "UnityEngine.Texture",
            "ignore": false,
            "defaultInstantiationMode": 0,
            "supportsModification": true
        },
        {
            "userAdded": false,
            "type": "UnityEngine.Texture2D",
            "ignore": false,
            "defaultInstantiationMode": 0,
            "supportsModification": true
        },
        {
            "userAdded": false,
            "type": "UnityEngine.Timeline.TimelineAsset",
            "ignore": false,
            "defaultInstantiationMode": 0,
            "supportsModification": true
        }
    ],
    "defaultDependencyTypeInfo": {
        "userAdded": false,
        "type": "<default_scene_template_dependencies>",
        "ignore": false,
        "defaultInstantiationMode": 1,
        "supportsModification": true
    },
    "newSceneOverride": 0
}

================================================
FILE: ProjectSettings/TagManager.asset
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!78 &1
TagManager:
  serializedVersion: 2
  tags: []
  layers:
  - Default
  - TransparentFX
  - Ignore Raycast
  - 
  - Water
  - UI
  - 
  - 
  - 
  - 
  - 
  - 
  - 
  - 
  - 
  - 
  - 
  - 
  - 
  - 
  - 
  - 
  - 
  - 
  - 
  - 
  - 
  - 
  - 
  - 
  - 
  - 
  m_SortingLayers:
  - name: Default
    uniqueID: 0
    locked: 0


================================================
FILE: ProjectSettings/TimeManager.asset
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!5 &1
TimeManager:
  m_ObjectHideFlags: 0
  Fixed Timestep: 0.02
  Maximum Allowed Timestep: 0.33333334
  m_TimeScale: 1
  Maximum Particle Timestep: 0.03


================================================
FILE: ProjectSettings/TimelineSettings.asset
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &1
MonoBehaviour:
  m_ObjectHideFlags: 61
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 0}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: a287be6c49135cd4f9b2b8666c39d999, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  assetDefaultFramerate: 60
  m_DefaultFrameRate: 60


================================================
FILE: ProjectSettings/UnityConnectSettings.asset
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!310 &1
UnityConnectSettings:
  m_ObjectHideFlags: 0
  serializedVersion: 1
  m_Enabled: 0
  m_TestMode: 0
  m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events
  m_EventUrl: https://cdp.cloud.unity3d.com/v1/events
  m_ConfigUrl: https://config.uca.cloud.unity3d.com
  m_DashboardUrl: https://dashboard.unity3d.com
  m_TestInitMode: 0
  CrashReportingSettings:
    m_EventUrl: https://perf-events.cloud.unity3d.com
    m_Enabled: 0
    m_LogBufferSize: 10
    m_CaptureEditorExceptions: 1
  UnityPurchasingSettings:
    m_Enabled: 0
    m_TestMode: 0
  UnityAnalyticsSettings:
    m_Enabled: 0
    m_TestMode: 0
    m_InitializeOnStartup: 1
    m_PackageRequiringCoreStatsPresent: 0
  UnityAdsSettings:
    m_Enabled: 0
    m_InitializeOnStartup: 1
    m_TestMode: 0
    m_IosGameId: 
    m_AndroidGameId: 
    m_GameIds: {}
    m_GameId: 
  PerformanceReportingSettings:
    m_Enabled: 0


================================================
FILE: ProjectSettings/VFXManager.asset
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!937362698 &1
VFXManager:
  m_ObjectHideFlags: 0
  m_IndirectShader: {fileID: 0}
  m_CopyBufferShader: {fileID: 0}
  m_SortShader: {fileID: 0}
  m_StripUpdateShader: {fileID: 0}
  m_RenderPipeSettingsPath: 
  m_FixedTimeStep: 0.016666668
  m_MaxDeltaTime: 0.05


================================================
FILE: ProjectSettings/VersionControlSettings.asset
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!890905787 &1
VersionControlSettings:
  m_ObjectHideFlags: 0
  m_Mode: Visible Meta Files
  m_CollabEditorSettings:
    inProgressEnabled: 1


================================================
FILE: ProjectSettings/XRSettings.asset
================================================
{
    "m_SettingKeys": [
        "VR Device Disabled",
        "VR Device User Alert"
    ],
    "m_SettingValues": [
        "False",
        "False"
    ]
}

================================================
FILE: README.md
================================================
# Unity CodeGen
Code Generation Library for Unity Editor

<img src="https://github.com/AnnulusGames/UnityCodeGen/blob/main/Assets/UnityCodeGen/Documentation~/Header.png" width="800">

[![license](https://img.shields.io/badge/LICENSE-MIT-green.svg)](LICENSE)

[日本語版READMEはこちら](README_JP.md)

## Overview
Unity CodeGen is a library that streamlines code generation on the Unity editor.
By defining your own Generator that inherits from ICodeGenerator, you can generate codeautomatically.

### Features
* Code generation can be implemented smoothly
* Code can be generated automatically when compiling

## Setup

### Requirement
* Unity 2020.1 or higher

### Install
1. Open the Package Manager from Window > Package Manager
2. "+" button > Add package from git URL
3. Enter the following to install
   * https://github.com/AnnulusGames/UnityCodeGen.git?path=/Assets/UnityCodeGen


or open Packages/manifest.json and add the following to the dependencies block.

```json
{
    "dependencies": {
        "com.annulusgames.unity-codegen": "https://github.com/AnnulusGames/UnityCodeGen.git?path=/Assets/UnityCodeGen"
    }
}
```

## Usage
Create a .cs file under any Editor folder and implement a class that inherits ICodeGenerator.
Below is a Generator that generates an empty Sample class.

```cs
using UnityCodeGen;

[Generator] // Add GeneratorAttribute
public class SampleGenerator : ICodeGenerator // Inherits ICodeGenerator
{
    public void Execute(GeneratorContext context) // Implement Execute method
    {
        context.AddCode("Sample.Generated.cs", // File name
@"// <auto-generated/>
namespace SampleNamespace.Generated
{
    public class Sample
    {

    }
}"
        );
    }
}
```

Back in the editor, select Tools/UnityCodeGen/Generate to generate code.

<img src="https://github.com/AnnulusGames/UnityCodeGen/blob/main/Assets/UnityCodeGen/Documentation~/img1.png" width="400">

Generated code is placed in Assets/UnityCodeGen.Generated.

```cs
// <auto-generated/>
namespace SampleNamespace.Generated
{
    public class Sample
    {

    }
}
```

## Specify Output Path
By using GeneratorContext.OverrideFolderPath, you can specify the output folder path.

```cs
public void Execute(GeneratorContext context)
{
    context.OverrideFolderPath("Assets/YourFolder/Generated");
    ...
}
```

## Auto-generate on Compile
It is possible to automate code generation by checking Tools/UnityCodeGen/Auto-generate on Compile.

<img src="https://github.com/AnnulusGames/UnityCodeGen/blob/main/Assets/UnityCodeGen/Documentation~/img2.png" width="400">

When Auto-generate on Compile is on, it will be automatically generated at the end of compilation and will be recompiled only if there is any change in the generated code.

## Unity Code Gen Utility
By using the UnityCodeGenUtility class, it is also possible to operate from your script.

``` cs
// get default output folder path
var path = UnityCodeGenUtility.defaultFolderPath;

// run generation
UnityCodeGenUtility.Generate();
```

## Advanced

### Perform processing on classes with specific attributes added
By using Unity's TypeCache, classes with specific attributes can be retrieved all at once.
This allows you to generate code for classes with specific attributes.

As an example, let's generate code that overrides ToString to display all public fields for a class with the AddToStringAttribute.

First, define the attributes used to identify the Generator.

```cs
using System;

public class AddToStringAttribute : Attribute { }
```

Next, create a Generator. Note that this file should be placed under any Editor folder.

```cs
using System.Linq;
using UnityEditor;
using UnityCodeGen;

[Generator]
public class AddToStringGenerator : ICodeGenerator
{
    public void Execute(GeneratorContext context)
    {
        var types = TypeCache.GetTypesWithAttribute<AddToStringAttribute>();
        foreach (var t in types)
        {
            var publicFields = t.GetFields()
                .Where(x => x.IsPublic && !x.IsStatic)
                .Select(x => $"{x.Name}:{{{x.Name}}}");

            var toString = string.Join(", ", publicFields);
            var code = 
$@"// <auto-generated/>
partial class {t.Name}
{{
    public override string ToString()
    {{
        return $""{toString}"";
    }}
}}";
            context.AddCode($"{t.FullName}.AddToString.Generated.cs", code);
        }
    }
}
```

You are now ready to generate.
Create a class and add AddToStringAttribute.

```cs
using UnityEngine;

[AddToString]
public partial class FooClass
{
    public int foo;
    public string bar;
    public Vector3 baz;
}
```

Executing Generate will generate FooClass.AddToString.Generated.cs under the UnityCodeGen.Generated folder.

```cs
// <auto-generated/>
partial class FooClass
{
    public override string ToString()
    {
        return $"foo:{foo}, bar:{bar}, baz:{baz}";
    }
}
```

## Samples

<img src="https://github.com/AnnulusGames/UnityCodeGen/blob/main/Assets/UnityCodeGen/Documentation~/img3.png" width="400">

Unity CodeGen samples are available from the Package Manager.
Below is a list of samples included in the package.

|  Sample Name  |  Description  |
| ---------- | ------ |
|  Tags & Layers |  A sample that generates a class that manages Tags, Layers and Sorting Layers with constants. |


## License

[MIT License](LICENSE)

================================================
FILE: README_JP.md
================================================
# Unity CodeGen
Code Generation Library for Unity Editor

<img src="https://github.com/AnnulusGames/UnityCodeGen/blob/main/Assets/UnityCodeGen/Documentation~/Header.png" width="800">

[![license](https://img.shields.io/badge/LICENSE-MIT-green.svg)](LICENSE)

[English README](README.md)

## 概要
Unity CodeGenは、Unityエディタ上でのコード生成を効率化するライブラリです。
ICodeGeneratorを継承した独自のGeneratorを定義することで、コードの生成を自動的に行うことができます。

### 特徴
* エディタ上でのコード生成をスムーズに実装可能
* コンパイル時に自動で生成が可能

## セットアップ

### 要件
* Unity 2020.1 以上

### インストール
1. Window > Package ManagerからPackage Managerを開く
2. 「+」ボタン > Add package from git URL
3. 以下を入力する
   * https://github.com/AnnulusGames/UnityCodeGen.git?path=/Assets/UnityCodeGen


あるいはPackages/manifest.jsonを開き、dependenciesブロックに以下を追記

```json
{
    "dependencies": {
        "com.annulusgames.unity-codegen": "https://github.com/AnnulusGames/UnityCodeGen.git?path=/Assets/UnityCodeGen"
    }
}
```

## 使い方
任意のEditorフォルダ以下にcsファイルを作成し、ICodeGeneratorを継承したクラスを実装します。
以下は、空のSampleクラスを生成するGeneratorです。

```cs
using UnityCodeGen;

[Generator] // Generator属性を追加
public class SampleGenerator : ICodeGenerator // ICodeGeneratorを継承
{
    public void Execute(GeneratorContext context) // Executeメソッドを実装
    {
        context.AddCode("Sample.Generated.cs", // ファイル名
@"// <auto-generated/>
namespace SampleNamespace.Generated
{
    public class Sample
    {

    }
}"
        );
    }
}
```

エディタに戻り、Tools/UnityCodeGen/Generateを選択してコードを生成します。

<img src="https://github.com/AnnulusGames/UnityCodeGen/blob/main/Assets/UnityCodeGen/Documentation~/img1.png" width="400">

生成されたコードは指定がない限りAssets/UnityCodeGen.Generatedに配置されます。

```cs
// <auto-generated/>
namespace SampleNamespace.Generated
{
    public class Sample
    {

    }
}
```

## 出力するパスを変更
GeneratorContext.OverrideFolderPathを利用することで、出力先のフォルダを指定することができます。

```cs
public void Execute(GeneratorContext context)
{
    context.OverrideFolderPath("Assets/YourFolder/Generated");
    ...
}
```

## コンパイル時に自動生成
Tools/UnityCodeGen/Auto-generate on Compileにチェックを入れることでコード生成を自動化することが可能です。

<img src="https://github.com/AnnulusGames/UnityCodeGen/blob/main/Assets/UnityCodeGen/Documentation~/img2.png" width="400">

Auto-generate on CompileがOnの場合、コンパイル終了時にGenerateを自動で実行し、生成コードになんらかの変更があった場合のみ再コンパイルを行います。

## UnityCodeGenUtility
UnityCodeGenUtilityクラスを利用することで、スクリプトから操作することも可能です。

```cs
// デフォルトの出力フォルダのパスを取得
var path = UnityCodeGenUtility.defaultFolderPath;

// 生成を実行
UnityCodeGenUtility.Generate();
```

## 応用

### 特定の属性が付加されたクラスに対して処理を行う
UnityのTypeCacheを利用することで、特定の属性が付加されたクラスを一括で取得することができます。
これを使うことで、特定の属性が付加されたクラスに対してコードを生成することが可能になります。

例として、AddToStringAttributeが付加されたクラスに対し、全てのpublicなフィールドを表示するようにToStringをoverrideするコードを生成してみましょう。

まずは、Generatorの識別に用いる属性を定義します。

```cs
using System;

public class AddToStringAttribute : Attribute { }
```

次にGeneratorを作成します。このファイルは任意のEditorフォルダ以下に配置する必要があることに注意してください。

```cs
using System.Linq;
using UnityEditor;
using UnityCodeGen;

[Generator]
public class AddToStringGenerator : ICodeGenerator
{
    public void Execute(GeneratorContext context)
    {
        var types = TypeCache.GetTypesWithAttribute<AddToStringAttribute>();
        foreach (var t in types)
        {
            var publicFields = t.GetFields()
                .Where(x => x.IsPublic && !x.IsStatic)
                .Select(x => $"{x.Name}:{{{x.Name}}}");

            var toString = string.Join(", ", publicFields);
            var code = 
$@"// <auto-generated/>
partial class {t.Name}
{{
    public override string ToString()
    {{
        return $""{toString}"";
    }}
}}";
            context.AddCode($"{t.FullName}.AddToString.Generated.cs", code);
        }
    }
}
```

これで生成の準備は完了です。
適当なクラスを作成し、AddToStringAttributeを追加します。

```cs
using UnityEngine;

[AddToString]
public partial class FooClass
{
    public int foo;
    public string bar;
    public Vector3 baz;
}
```

Generateを実行すると、UnityCodeGen.Generatedフォルダ以下にFooClass.AddToString.Generated.csが生成されます。
```cs
// <auto-generated/>
partial class FooClass
{
    public override string ToString()
    {
        return $"foo:{foo}, bar:{bar}, baz:{baz}";
    }
}
```

## サンプル

<img src="https://github.com/AnnulusGames/UnityCodeGen/blob/main/Assets/UnityCodeGen/Documentation~/img3.png" width="400">

Unity CodeGenのサンプルはPackage Managerから手に入れることができます。
以下は、パッケージに含まれるサンプルの一覧です。

|  サンプル名  |  説明  |
| ---------- | ------ |
|  Tags & Layers |  Tags、Layers、Sorting Layersを定数として管理するクラスを生成するサンプル。 |

## ライセンス

[MIT License](LICENSE)
Download .txt
gitextract_y2n4sr48/

├── .gitattributes
├── .gitignore
├── Assets/
│   ├── UnityCodeGen/
│   │   ├── Editor/
│   │   │   ├── AnnulusGames.UnityCodeGen.Editor.asmdef
│   │   │   ├── AnnulusGames.UnityCodeGen.Editor.asmdef.meta
│   │   │   ├── Core/
│   │   │   │   ├── CodeText.cs
│   │   │   │   ├── CodeText.cs.meta
│   │   │   │   ├── GeneratorAttribute.cs
│   │   │   │   ├── GeneratorAttribute.cs.meta
│   │   │   │   ├── GeneratorContext.cs
│   │   │   │   ├── GeneratorContext.cs.meta
│   │   │   │   ├── ICodeGenerator.cs
│   │   │   │   ├── ICodeGenerator.cs.meta
│   │   │   │   ├── UnityCodeGenUtility.cs
│   │   │   │   └── UnityCodeGenUtility.cs.meta
│   │   │   ├── Core.meta
│   │   │   ├── MenuItems.cs
│   │   │   ├── MenuItems.cs.meta
│   │   │   ├── Settings/
│   │   │   │   ├── UnityCodeGenSettings.cs
│   │   │   │   └── UnityCodeGenSettings.cs.meta
│   │   │   ├── Settings.meta
│   │   │   ├── Utils/
│   │   │   │   ├── ScriptFileGenerator.cs
│   │   │   │   └── ScriptFileGenerator.cs.meta
│   │   │   └── Utils.meta
│   │   ├── Editor.meta
│   │   ├── Samples~/
│   │   │   └── Tags & Layers/
│   │   │       ├── Editor/
│   │   │       │   ├── AnnulusGames.UnityCodeGen.Samples.TagsAndLayers.Editor.asmdef
│   │   │       │   ├── AnnulusGames.UnityCodeGen.Samples.TagsAndLayers.Editor.asmdef.meta
│   │   │       │   ├── LayersGenerator.cs
│   │   │       │   ├── LayersGenerator.cs.meta
│   │   │       │   ├── SortingLayersGenerator.cs
│   │   │       │   ├── SortingLayersGenerator.cs.meta
│   │   │       │   ├── TagsGenerator.cs
│   │   │       │   └── TagsGenerator.cs.meta
│   │   │       └── Editor.meta
│   │   ├── package.json
│   │   └── package.json.meta
│   └── UnityCodeGen.meta
├── LICENSE
├── Packages/
│   ├── manifest.json
│   └── packages-lock.json
├── ProjectSettings/
│   ├── AudioManager.asset
│   ├── ClusterInputManager.asset
│   ├── DynamicsManager.asset
│   ├── EditorBuildSettings.asset
│   ├── EditorSettings.asset
│   ├── GraphicsSettings.asset
│   ├── InputManager.asset
│   ├── MemorySettings.asset
│   ├── NavMeshAreas.asset
│   ├── PackageManagerSettings.asset
│   ├── Packages/
│   │   └── com.unity.testtools.codecoverage/
│   │       └── Settings.json
│   ├── Physics2DSettings.asset
│   ├── PresetManager.asset
│   ├── ProjectSettings.asset
│   ├── ProjectVersion.txt
│   ├── QualitySettings.asset
│   ├── SceneTemplateSettings.json
│   ├── TagManager.asset
│   ├── TimeManager.asset
│   ├── TimelineSettings.asset
│   ├── UnityConnectSettings.asset
│   ├── VFXManager.asset
│   ├── VersionControlSettings.asset
│   └── XRSettings.asset
├── README.md
└── README_JP.md
Download .txt
SYMBOL INDEX (24 symbols across 11 files)

FILE: Assets/UnityCodeGen/Editor/Core/CodeText.cs
  class CodeText (line 3) | internal class CodeText

FILE: Assets/UnityCodeGen/Editor/Core/GeneratorAttribute.cs
  class GeneratorAttribute (line 5) | [AttributeUsage(AttributeTargets.Class)]

FILE: Assets/UnityCodeGen/Editor/Core/GeneratorContext.cs
  class GeneratorContext (line 5) | public sealed class GeneratorContext
    method AddCode (line 13) | public void AddCode(string fileName, string text)
    method OverrideFolderPath (line 18) | public void OverrideFolderPath(string path)

FILE: Assets/UnityCodeGen/Editor/Core/ICodeGenerator.cs
  type ICodeGenerator (line 3) | public interface ICodeGenerator
    method Execute (line 5) | public void Execute(GeneratorContext context);

FILE: Assets/UnityCodeGen/Editor/Core/UnityCodeGenUtility.cs
  class UnityCodeGenUtility (line 3) | public static class UnityCodeGenUtility
    method Generate (line 7) | public static void Generate()

FILE: Assets/UnityCodeGen/Editor/MenuItems.cs
  class MenuItems (line 5) | static class MenuItems
    method Init (line 10) | [InitializeOnLoadMethod]
    method Generate (line 16) | [MenuItem(MENU_GENERATE)]
    method ToggleAutoGenerate (line 22) | [MenuItem(MENU_TOGGLE_AUTO_GENERATE)]

FILE: Assets/UnityCodeGen/Editor/Settings/UnityCodeGenSettings.cs
  class UnityCodeGenSettings (line 5) | public static class UnityCodeGenSettings

FILE: Assets/UnityCodeGen/Editor/Utils/ScriptFileGenerator.cs
  class ScriptFileGenerator (line 9) | internal static class ScriptFileGenerator
    method Initialize (line 32) | [InitializeOnLoadMethod]
    method Generate (line 45) | internal static void Generate()
    method GenerateScriptFromContext (line 84) | static bool GenerateScriptFromContext(GeneratorContext context)

FILE: Assets/UnityCodeGen/Samples~/Tags & Layers/Editor/LayersGenerator.cs
  class LayersGenerator (line 7) | [Generator]
    method Execute (line 10) | public void Execute(GeneratorContext context)

FILE: Assets/UnityCodeGen/Samples~/Tags & Layers/Editor/SortingLayersGenerator.cs
  class SortingLayersGenerator (line 9) | [Generator]
    method Execute (line 12) | public void Execute(GeneratorContext context)

FILE: Assets/UnityCodeGen/Samples~/Tags & Layers/Editor/TagsGenerator.cs
  class TagsGenerator (line 6) | [Generator]
    method Execute (line 9) | public void Execute(GeneratorContext context)
Condensed preview — 65 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (110K chars).
[
  {
    "path": ".gitattributes",
    "chars": 66,
    "preview": "# Auto detect text files and perform LF normalization\n* text=auto\n"
  },
  {
    "path": ".gitignore",
    "chars": 1324,
    "preview": "# This .gitignore file should be placed at the root of your Unity project directory\n#\n# Get latest from https://github.c"
  },
  {
    "path": "Assets/UnityCodeGen/Editor/AnnulusGames.UnityCodeGen.Editor.asmdef",
    "chars": 387,
    "preview": "{\n    \"name\": \"AnnulusGames.UnityCodeGen.Editor\",\n    \"rootNamespace\": \"\",\n    \"references\": [],\n    \"includePlatforms\":"
  },
  {
    "path": "Assets/UnityCodeGen/Editor/AnnulusGames.UnityCodeGen.Editor.asmdef.meta",
    "chars": 166,
    "preview": "fileFormatVersion: 2\nguid: 81d29a5e4682947dfa73ba6bd09fe0be\nAssemblyDefinitionImporter:\n  externalObjects: {}\n  userData"
  },
  {
    "path": "Assets/UnityCodeGen/Editor/Core/CodeText.cs",
    "chars": 126,
    "preview": "namespace UnityCodeGen\n{\n    internal class CodeText\n    {\n        public string fileName;\n        public string text;\n "
  },
  {
    "path": "Assets/UnityCodeGen/Editor/Core/CodeText.cs.meta",
    "chars": 243,
    "preview": "fileFormatVersion: 2\nguid: 1d7126fb29d2849a597d936778dbedd4\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n "
  },
  {
    "path": "Assets/UnityCodeGen/Editor/Core/GeneratorAttribute.cs",
    "chars": 145,
    "preview": "using System;\n\nnamespace UnityCodeGen\n{\n    [AttributeUsage(AttributeTargets.Class)]\n    public sealed class GeneratorAt"
  },
  {
    "path": "Assets/UnityCodeGen/Editor/Core/GeneratorAttribute.cs.meta",
    "chars": 243,
    "preview": "fileFormatVersion: 2\nguid: 2a85bd5042f1843a68ccc259b4e9f546\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n "
  },
  {
    "path": "Assets/UnityCodeGen/Editor/Core/GeneratorContext.cs",
    "chars": 634,
    "preview": "using System.Collections.Generic;\n\nnamespace UnityCodeGen\n{\n    public sealed class GeneratorContext\n    {\n        priva"
  },
  {
    "path": "Assets/UnityCodeGen/Editor/Core/GeneratorContext.cs.meta",
    "chars": 243,
    "preview": "fileFormatVersion: 2\nguid: 34c0377667ac24572a456cf84c47aa9c\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n "
  },
  {
    "path": "Assets/UnityCodeGen/Editor/Core/ICodeGenerator.cs",
    "chars": 130,
    "preview": "namespace UnityCodeGen\n{\n    public interface ICodeGenerator\n    {\n        public void Execute(GeneratorContext context)"
  },
  {
    "path": "Assets/UnityCodeGen/Editor/Core/ICodeGenerator.cs.meta",
    "chars": 243,
    "preview": "fileFormatVersion: 2\nguid: 584462a42ae54483eba7152b41c86e9b\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n "
  },
  {
    "path": "Assets/UnityCodeGen/Editor/Core/UnityCodeGenUtility.cs",
    "chars": 266,
    "preview": "namespace UnityCodeGen\n{\n    public static class UnityCodeGenUtility\n    {\n        public const string defaultFolderPath"
  },
  {
    "path": "Assets/UnityCodeGen/Editor/Core/UnityCodeGenUtility.cs.meta",
    "chars": 243,
    "preview": "fileFormatVersion: 2\nguid: 1c80887af80d8407b833eb2670ae2eae\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n "
  },
  {
    "path": "Assets/UnityCodeGen/Editor/Core.meta",
    "chars": 172,
    "preview": "fileFormatVersion: 2\nguid: e6b8efca00a3340c398c1120e98ea7bd\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  us"
  },
  {
    "path": "Assets/UnityCodeGen/Editor/MenuItems.cs",
    "chars": 871,
    "preview": "using UnityEditor;\n\nnamespace UnityCodeGen\n{\n    static class MenuItems\n    {\n        const string MENU_GENERATE = \"Tool"
  },
  {
    "path": "Assets/UnityCodeGen/Editor/MenuItems.cs.meta",
    "chars": 243,
    "preview": "fileFormatVersion: 2\nguid: 2aa0ed75c5b414fdebd1ea068e1e6b50\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n "
  },
  {
    "path": "Assets/UnityCodeGen/Editor/Settings/UnityCodeGenSettings.cs",
    "chars": 652,
    "preview": "using UnityEditor;\n\nnamespace UnityCodeGen\n{\n    public static class UnityCodeGenSettings\n    {\n        const string KEY"
  },
  {
    "path": "Assets/UnityCodeGen/Editor/Settings/UnityCodeGenSettings.cs.meta",
    "chars": 243,
    "preview": "fileFormatVersion: 2\nguid: 399313ef1fc1343fd80cab2c0e90a46a\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n "
  },
  {
    "path": "Assets/UnityCodeGen/Editor/Settings.meta",
    "chars": 172,
    "preview": "fileFormatVersion: 2\nguid: 191f0e1d40c654f20bf570a27ebeb5eb\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  us"
  },
  {
    "path": "Assets/UnityCodeGen/Editor/Utils/ScriptFileGenerator.cs",
    "chars": 3817,
    "preview": "using System;\nusing System.Linq;\nusing System.Reflection;\nusing System.IO;\nusing UnityEditor;\n\nnamespace UnityCodeGen\n{\n"
  },
  {
    "path": "Assets/UnityCodeGen/Editor/Utils/ScriptFileGenerator.cs.meta",
    "chars": 243,
    "preview": "fileFormatVersion: 2\nguid: baab6cdaea8de4502b39347e43e52c4d\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n "
  },
  {
    "path": "Assets/UnityCodeGen/Editor/Utils.meta",
    "chars": 172,
    "preview": "fileFormatVersion: 2\nguid: d54ccfe58f28548af9fa4414edbcfb3a\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  us"
  },
  {
    "path": "Assets/UnityCodeGen/Editor.meta",
    "chars": 172,
    "preview": "fileFormatVersion: 2\nguid: 909e2019934834fae9f46ed0781155ed\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  us"
  },
  {
    "path": "Assets/UnityCodeGen/Samples~/Tags & Layers/Editor/AnnulusGames.UnityCodeGen.Samples.TagsAndLayers.Editor.asmdef",
    "chars": 462,
    "preview": "{\n    \"name\": \"AnnulusGames.UnityCodeGen.Samples.TagsAndLayers.Editor\",\n    \"rootNamespace\": \"\",\n    \"references\": [\n   "
  },
  {
    "path": "Assets/UnityCodeGen/Samples~/Tags & Layers/Editor/AnnulusGames.UnityCodeGen.Samples.TagsAndLayers.Editor.asmdef.meta",
    "chars": 166,
    "preview": "fileFormatVersion: 2\nguid: 305b8537f51ba4b77b20a2a43a0fbc23\nAssemblyDefinitionImporter:\n  externalObjects: {}\n  userData"
  },
  {
    "path": "Assets/UnityCodeGen/Samples~/Tags & Layers/Editor/LayersGenerator.cs",
    "chars": 648,
    "preview": "using System.Linq;\nusing UnityEngine;\nusing UnityEditorInternal;\n\nnamespace UnityCodeGen.Samples.TagsAndLayers\n{\n    [Ge"
  },
  {
    "path": "Assets/UnityCodeGen/Samples~/Tags & Layers/Editor/LayersGenerator.cs.meta",
    "chars": 243,
    "preview": "fileFormatVersion: 2\nguid: 3b6e0724a537348d0b49ebeac5195510\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n "
  },
  {
    "path": "Assets/UnityCodeGen/Samples~/Tags & Layers/Editor/SortingLayersGenerator.cs",
    "chars": 1096,
    "preview": "using System.Linq;\nusing System.Collections.Generic;\nusing UnityEngine;\nusing UnityEditor;\nusing UnityEditorInternal;\n\nn"
  },
  {
    "path": "Assets/UnityCodeGen/Samples~/Tags & Layers/Editor/SortingLayersGenerator.cs.meta",
    "chars": 243,
    "preview": "fileFormatVersion: 2\nguid: d8ea2bc9baf9a43ec919eeceb37efc2a\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n "
  },
  {
    "path": "Assets/UnityCodeGen/Samples~/Tags & Layers/Editor/TagsGenerator.cs",
    "chars": 605,
    "preview": "using System.Linq;\nusing UnityEditorInternal;\n\nnamespace UnityCodeGen.Samples.TagsAndLayers\n{\n    [Generator]\n    public"
  },
  {
    "path": "Assets/UnityCodeGen/Samples~/Tags & Layers/Editor/TagsGenerator.cs.meta",
    "chars": 243,
    "preview": "fileFormatVersion: 2\nguid: cb6c2e2aea37049bfb1ac699f1aeaabd\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n "
  },
  {
    "path": "Assets/UnityCodeGen/Samples~/Tags & Layers/Editor.meta",
    "chars": 172,
    "preview": "fileFormatVersion: 2\nguid: f69ab95fa787948b6b39c24a13619948\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  us"
  },
  {
    "path": "Assets/UnityCodeGen/package.json",
    "chars": 608,
    "preview": "{\n    \"name\": \"com.annulusgames.unity-codegen\",\n    \"displayName\": \"Unity CodeGen\",\n    \"version\": \"1.0.0\",\n    \"unity\":"
  },
  {
    "path": "Assets/UnityCodeGen/package.json.meta",
    "chars": 158,
    "preview": "fileFormatVersion: 2\nguid: 27b09209611ec460a919e4ebd38c6885\nTextScriptImporter:\n  externalObjects: {}\n  userData: \n  ass"
  },
  {
    "path": "Assets/UnityCodeGen.meta",
    "chars": 172,
    "preview": "fileFormatVersion: 2\nguid: 2c979dc12a90b489d8e2b188dcd83759\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  us"
  },
  {
    "path": "LICENSE",
    "chars": 1070,
    "preview": "MIT License\n\nCopyright (c) 2023 Annulus Games\n\nPermission is hereby granted, free of charge, to any person obtaining a c"
  },
  {
    "path": "Packages/manifest.json",
    "chars": 1651,
    "preview": "{\n  \"dependencies\": {\n    \"com.unity.collab-proxy\": \"1.17.7\",\n    \"com.unity.feature.development\": \"1.0.1\",\n    \"com.uni"
  },
  {
    "path": "Packages/packages-lock.json",
    "chars": 10677,
    "preview": "{\n  \"dependencies\": {\n    \"com.unity.collab-proxy\": {\n      \"version\": \"1.17.7\",\n      \"depth\": 0,\n      \"source\": \"regi"
  },
  {
    "path": "ProjectSettings/AudioManager.asset",
    "chars": 416,
    "preview": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!11 &1\nAudioManager:\n  m_ObjectHideFlags: 0\n  serializedVersion: 2\n  m_Vo"
  },
  {
    "path": "ProjectSettings/ClusterInputManager.asset",
    "chars": 114,
    "preview": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!236 &1\nClusterInputManager:\n  m_ObjectHideFlags: 0\n  m_Inputs: []\n"
  },
  {
    "path": "ProjectSettings/DynamicsManager.asset",
    "chars": 1190,
    "preview": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!55 &1\nPhysicsManager:\n  m_ObjectHideFlags: 0\n  serializedVersion: 11\n  m"
  },
  {
    "path": "ProjectSettings/EditorBuildSettings.asset",
    "chars": 160,
    "preview": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!1045 &1\nEditorBuildSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion:"
  },
  {
    "path": "ProjectSettings/EditorSettings.asset",
    "chars": 970,
    "preview": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!159 &1\nEditorSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 11\n  "
  },
  {
    "path": "ProjectSettings/GraphicsSettings.asset",
    "chars": 2230,
    "preview": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!30 &1\nGraphicsSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 13\n "
  },
  {
    "path": "ProjectSettings/InputManager.asset",
    "chars": 5793,
    "preview": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!13 &1\nInputManager:\n  m_ObjectHideFlags: 0\n  serializedVersion: 2\n  m_Ax"
  },
  {
    "path": "ProjectSettings/MemorySettings.asset",
    "chars": 1192,
    "preview": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!387306366 &1\nMemorySettings:\n  m_ObjectHideFlags: 0\n  m_EditorMemorySett"
  },
  {
    "path": "ProjectSettings/NavMeshAreas.asset",
    "chars": 1308,
    "preview": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!126 &1\nNavMeshProjectSettings:\n  m_ObjectHideFlags: 0\n  serializedVersio"
  },
  {
    "path": "ProjectSettings/PackageManagerSettings.asset",
    "chars": 928,
    "preview": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!114 &1\nMonoBehaviour:\n  m_ObjectHideFlags: 61\n  m_CorrespondingSourceObj"
  },
  {
    "path": "ProjectSettings/Packages/com.unity.testtools.codecoverage/Settings.json",
    "chars": 64,
    "preview": "{\n    \"m_Dictionary\": {\n        \"m_DictionaryValues\": []\n    }\n}"
  },
  {
    "path": "ProjectSettings/Physics2DSettings.asset",
    "chars": 2028,
    "preview": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!19 &1\nPhysics2DSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 4\n "
  },
  {
    "path": "ProjectSettings/PresetManager.asset",
    "chars": 146,
    "preview": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!1386491679 &1\nPresetManager:\n  m_ObjectHideFlags: 0\n  serializedVersion:"
  },
  {
    "path": "ProjectSettings/ProjectSettings.asset",
    "chars": 25424,
    "preview": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!129 &1\nPlayerSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 25\n  "
  },
  {
    "path": "ProjectSettings/ProjectVersion.txt",
    "chars": 83,
    "preview": "m_EditorVersion: 2022.2.2f1\nm_EditorVersionWithRevision: 2022.2.2f1 (c93c5d3acf5b)\n"
  },
  {
    "path": "ProjectSettings/QualitySettings.asset",
    "chars": 8926,
    "preview": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!47 &1\nQualitySettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 5\n  m"
  },
  {
    "path": "ProjectSettings/SceneTemplateSettings.json",
    "chars": 5157,
    "preview": "{\n    \"templatePinStates\": [],\n    \"dependencyTypeInfos\": [\n        {\n            \"userAdded\": false,\n            \"type\""
  },
  {
    "path": "ProjectSettings/TagManager.asset",
    "chars": 378,
    "preview": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!78 &1\nTagManager:\n  serializedVersion: 2\n  tags: []\n  layers:\n  - Defaul"
  },
  {
    "path": "ProjectSettings/TimeManager.asset",
    "chars": 202,
    "preview": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!5 &1\nTimeManager:\n  m_ObjectHideFlags: 0\n  Fixed Timestep: 0.02\n  Maximu"
  },
  {
    "path": "ProjectSettings/TimelineSettings.asset",
    "chars": 436,
    "preview": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!114 &1\nMonoBehaviour:\n  m_ObjectHideFlags: 61\n  m_CorrespondingSourceObj"
  },
  {
    "path": "ProjectSettings/UnityConnectSettings.asset",
    "chars": 943,
    "preview": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!310 &1\nUnityConnectSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion:"
  },
  {
    "path": "ProjectSettings/VFXManager.asset",
    "chars": 308,
    "preview": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!937362698 &1\nVFXManager:\n  m_ObjectHideFlags: 0\n  m_IndirectShader: {fil"
  },
  {
    "path": "ProjectSettings/VersionControlSettings.asset",
    "chars": 188,
    "preview": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!890905787 &1\nVersionControlSettings:\n  m_ObjectHideFlags: 0\n  m_Mode: Vi"
  },
  {
    "path": "ProjectSettings/XRSettings.asset",
    "chars": 158,
    "preview": "{\n    \"m_SettingKeys\": [\n        \"VR Device Disabled\",\n        \"VR Device User Alert\"\n    ],\n    \"m_SettingValues\": [\n  "
  },
  {
    "path": "README.md",
    "chars": 5332,
    "preview": "# Unity CodeGen\nCode Generation Library for Unity Editor\n\n<img src=\"https://github.com/AnnulusGames/UnityCodeGen/blob/ma"
  },
  {
    "path": "README_JP.md",
    "chars": 4431,
    "preview": "# Unity CodeGen\nCode Generation Library for Unity Editor\n\n<img src=\"https://github.com/AnnulusGames/UnityCodeGen/blob/ma"
  }
]

About this extraction

This page contains the full source code of the AnnulusGames/UnityCodeGen GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 65 files (95.6 KB), approximately 32.8k tokens, and a symbol index with 24 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!