From 5c3e71a4204714b67ce4e905d8b9a0ed4b30f31a Mon Sep 17 00:00:00 2001 From: sana Date: Sat, 15 Feb 2025 18:50:31 +0900 Subject: [PATCH] Add RekornTools --- .../Komado/Chocolat/Animations/F_default.anim | 4439 +++++++++++++++++ .../Chocolat/Animations/F_default.anim.meta | 8 + Assets/RekornTools.meta | 8 + Assets/RekornTools/Avatar.meta | 8 + Assets/RekornTools/Avatar/Components.meta | 8 + .../Avatar/Components/LightEditor.meta | 8 + .../Avatar/Components/LightEditor/Editor.meta | 8 + .../LightEditor/Editor/LightEditor.cs | 74 + .../LightEditor/Editor/LightEditor.cs.meta | 3 + .../LightEditor/Editor/LightScenario.cs | 56 + .../LightEditor/Editor/LightScenario.cs.meta | 3 + .../LightEditor/Editor/LightScenarioDrawer.cs | 55 + .../Editor/LightScenarioDrawer.cs.meta | 3 + .../Editor/RekornTools.Avatar.Editor.asmref | 3 + .../RekornTools.Avatar.Editor.asmref.meta | 7 + .../Avatar/Components/SkinnedMeshTools.meta | 8 + .../SkinnedMeshTools/AvatarDresser.cs | 154 + .../SkinnedMeshTools/AvatarDresser.cs.meta | 11 + .../Components/SkinnedMeshTools/BoneFinder.cs | 107 + .../SkinnedMeshTools/BoneFinder.cs.meta | 3 + .../SkinnedMeshTools/BoneRenamer.cs | 47 + .../SkinnedMeshTools/BoneRenamer.cs.meta | 3 + .../Components/SkinnedMeshTools/Editor.meta | 3 + .../Editor/BoneFinderEditor.cs | 64 + .../Editor/BoneFinderEditor.cs.meta | 3 + .../Editor/MeshBonePairsEditor.cs | 67 + .../Editor/MeshBonePairsEditor.cs.meta | 3 + .../Editor/RekornTools.Avatar.Editor.asmref | 3 + .../RekornTools.Avatar.Editor.asmref.meta | 7 + .../Editor/RigExclusionDrawer.cs | 38 + .../Editor/RigExclusionDrawer.cs.meta | 3 + .../Editor/RigNamingConventionDrawer.cs | 58 + .../Editor/RigNamingConventionDrawer.cs.meta | 3 + .../SkinnedMeshTools/MeshBonePairs.cs | 49 + .../SkinnedMeshTools/MeshBonePairs.cs.meta | 3 + .../SkinnedMeshTools/MeshOptimizer.cs | 95 + .../SkinnedMeshTools/MeshOptimizer.cs.meta | 3 + .../SkinnedMeshTools/RigNamingConvention.cs | 125 + .../RigNamingConvention.cs.meta | 3 + .../Components/SkinnedMeshTools/RigPair.cs | 14 + .../SkinnedMeshTools/RigPair.cs.meta | 3 + .../Components/SkinnedMeshTools/_Generic.cs | 19 + .../SkinnedMeshTools/_Generic.cs.meta | 3 + .../Avatar/Components/TextureOptimizer.meta | 3 + .../TextureOptimizer/AssetManager.cs | 62 + .../TextureOptimizer/AssetManager.cs.meta | 11 + .../Components/TextureOptimizer/Editor.meta | 8 + .../Editor/AssetManagerEditor.cs | 40 + .../Editor/AssetManagerEditor.cs.meta | 3 + .../Editor/RekornTools.Avatar.Editor.asmref | 3 + .../RekornTools.Avatar.Editor.asmref.meta | 7 + .../Editor/ShaderPropertyDrawer.cs | 33 + .../Editor/ShaderPropertyDrawer.cs.meta | 3 + .../Editor/TexturePropertiesByShaderDrawer.cs | 46 + .../TexturePropertiesByShaderDrawer.cs.meta | 3 + .../Editor/TexturePropertyDrawer.cs | 31 + .../Editor/TexturePropertyDrawer.cs.meta | 3 + .../TextureOptimizer/ShaderProperty.cs | 50 + .../TextureOptimizer/ShaderProperty.cs.meta | 3 + .../TextureOptimizer/TextureOptimizer.cs | 164 + .../TextureOptimizer/TextureOptimizer.cs.meta | 3 + .../TextureOptimizerSettings.cs | 43 + .../TextureOptimizerSettings.cs.meta | 3 + .../TexturePropertiesTable.cs | 51 + .../TexturePropertiesTable.cs.meta | 3 + .../TextureOptimizer/TextureType.cs | 15 + .../TextureOptimizer/TextureType.cs.meta | 3 + .../Components/TextureOptimizer/_Generic.cs | 38 + .../TextureOptimizer/_Generic.cs.meta | 3 + Assets/RekornTools/Avatar/Core.meta | 8 + Assets/RekornTools/Avatar/Core/Attribute.meta | 3 + .../Avatar/Core/Attribute/ButtonAttribute.cs | 7 + .../Core/Attribute/ButtonAttribute.cs.meta | 3 + .../Core/Attribute/ItemNotSpanAttribute.cs | 7 + .../Attribute/ItemNotSpanAttribute.cs.meta | 3 + .../Core/Attribute/ReadOnlyListAttribute.cs | 7 + .../Attribute/ReadOnlyListAttribute.cs.meta | 11 + .../RekornTools/Avatar/Core/ComponentList.cs | 78 + .../Avatar/Core/ComponentList.cs.meta | 3 + .../RekornTools/Avatar/Core/Extensions.meta | 8 + .../Core/Extensions/DictionaryExtensions.cs | 26 + .../Extensions/DictionaryExtensions.cs.meta | 3 + .../Core/Extensions/EditorExtensions.cs | 36 + .../Core/Extensions/EditorExtensions.cs.meta | 3 + .../Core/Extensions/GameObjectExtensions.cs | 50 + .../Extensions/GameObjectExtensions.cs.meta | 3 + .../Core/Extensions/ReflectionExtensions.cs | 61 + .../Extensions/ReflectionExtensions.cs.meta | 3 + .../Extensions/ShaderPropertyExtensions.cs | 45 + .../ShaderPropertyExtensions.cs.meta | 11 + .../Core/Extensions/TransformExtensions.cs | 68 + .../Extensions/TransformExtensions.cs.meta | 3 + Assets/RekornTools/Avatar/Core/IValidate.cs | 7 + .../RekornTools/Avatar/Core/IValidate.cs.meta | 3 + Assets/RekornTools/Avatar/Core/ObjectList.cs | 22 + .../Avatar/Core/ObjectList.cs.meta | 3 + .../Avatar/Core/SerializedDictionary.cs | 44 + .../Avatar/Core/SerializedDictionary.cs.meta | 3 + .../Avatar/Core/SerializedKeyValue.cs | 24 + .../Avatar/Core/SerializedKeyValue.cs.meta | 3 + .../RekornTools/Avatar/Core/SerializedList.cs | 67 + .../Avatar/Core/SerializedList.cs.meta | 3 + Assets/RekornTools/Avatar/Core/Utils.meta | 8 + .../Avatar/Core/Utils/AssetHelper.cs | 28 + .../Avatar/Core/Utils/AssetHelper.cs.meta | 3 + .../Avatar/Core/Utils/AssetSize.cs | 53 + .../Avatar/Core/Utils/AssetSize.cs.meta | 3 + Assets/RekornTools/Avatar/Editor.meta | 8 + .../Avatar/Editor/DefaultEditor.cs | 35 + .../Avatar/Editor/DefaultEditor.cs.meta | 3 + Assets/RekornTools/Avatar/Editor/Drawer.meta | 3 + .../Editor/Drawer/HorizontalKeyValueDrawer.cs | 15 + .../Drawer/HorizontalKeyValueDrawer.cs.meta | 3 + .../Drawer/SerializedDictionaryDrawer.cs | 18 + .../Drawer/SerializedDictionaryDrawer.cs.meta | 3 + .../Editor/Drawer/SerializedKeyValueDrawer.cs | 18 + .../Drawer/SerializedKeyValueDrawer.cs.meta | 3 + .../Editor/Drawer/SerializedListDrawer.cs | 18 + .../Drawer/SerializedListDrawer.cs.meta | 3 + .../RekornTools/Avatar/Editor/Extensions.meta | 3 + .../Editor/Extensions/EditorGUIExtensions.cs | 38 + .../Extensions/EditorGUIExtensions.cs.meta | 3 + .../Extensions/EditorGUILayoutExtensions.cs | 35 + .../EditorGUILayoutExtensions.cs.meta | 3 + .../Editor/Extensions/ObjectExtensions.cs | 27 + .../Extensions/ObjectExtensions.cs.meta | 3 + .../Editor/Extensions/RectExtensions.cs | 41 + .../Editor/Extensions/RectExtensions.cs.meta | 3 + .../Editor/Extensions/ReflectionExtensions.cs | 45 + .../Extensions/ReflectionExtensions.cs.meta | 3 + .../Extensions/SerializationExtensions.cs | 19 + .../SerializationExtensions.cs.meta | 3 + .../Editor/RekornTools.Avatar.Editor.asmdef | 17 + .../RekornTools.Avatar.Editor.asmdef.meta | 7 + Assets/RekornTools/Avatar/Editor/Utils.meta | 8 + .../Avatar/Editor/Utils/BaseEditor.cs | 25 + .../Avatar/Editor/Utils/BaseEditor.cs.meta | 3 + .../Avatar/Editor/Utils/BaseEditorWindow.cs | 60 + .../Editor/Utils/BaseEditorWindow.cs.meta | 3 + .../Avatar/Editor/Utils/BasePropertyDrawer.cs | 32 + .../Editor/Utils/BasePropertyDrawer.cs.meta | 3 + .../Editor/Utils/ReorderableListHelper.cs | 132 + .../Utils/ReorderableListHelper.cs.meta | 3 + .../Editor/Utils/SerializedKeyValueHelper.cs | 61 + .../Utils/SerializedKeyValueHelper.cs.meta | 3 + .../Avatar/RekornTools.Avatar.asmdef | 16 + .../Avatar/RekornTools.Avatar.asmdef.meta | 7 + Assets/RekornTools/Core.meta | 8 + Assets/RekornTools/Core/RekornTools.asmdef | 13 + .../RekornTools/Core/RekornTools.asmdef.meta | 7 + Assets/RekornTools/Core/VERSION.json | 6 + Assets/RekornTools/Core/VERSION.json.meta | 3 + Assets/RekornTools/Core/VersionChecker.cs | 170 + .../RekornTools/Core/VersionChecker.cs.meta | 11 + Assets/RekornTools/Debug.meta | 8 + Assets/RekornTools/Debug/DrawArrow.cs | 119 + Assets/RekornTools/Debug/DrawArrow.cs.meta | 3 + Assets/RekornTools/Debug/DrawerHelper.cs | 26 + Assets/RekornTools/Debug/DrawerHelper.cs.meta | 3 + Assets/RekornTools/Debug/GizmoUtils.cs | 43 + Assets/RekornTools/Debug/GizmoUtils.cs.meta | 3 + Assets/RekornTools/Debug/HandleGizmos.cs | 101 + Assets/RekornTools/Debug/HandleGizmos.cs.meta | 11 + Assets/RekornTools/Debug/IGIzmos.cs | 7 + Assets/RekornTools/Debug/IGIzmos.cs.meta | 3 + Assets/RekornTools/Debug/NameTagGizmos.cs | 82 + .../RekornTools/Debug/NameTagGizmos.cs.meta | 11 + Assets/RekornTools/Debug/NormalGizmos.cs | 49 + Assets/RekornTools/Debug/NormalGizmos.cs.meta | 11 + Assets/RekornTools/Debug/PhysicsGizmos.cs | 74 + .../RekornTools/Debug/PhysicsGizmos.cs.meta | 11 + .../RekornTools/Debug/PositionCenterGizmos.cs | 53 + .../Debug/PositionCenterGizmos.cs.meta | 3 + .../RekornTools/Debug/PositionChainGizmos.cs | 54 + .../Debug/PositionChainGizmos.cs.meta | 3 + .../Debug/RekornTools.Debug.asmdef | 18 + .../Debug/RekornTools.Debug.asmdef.meta | 7 + Assets/RekornTools/LICENSE | 21 + Assets/RekornTools/LICENSE.meta | 3 + Assets/RekornTools/Math.meta | 8 + Assets/RekornTools/Math/Extensions.meta | 3 + .../Math/Extensions/BetweenExtensions.cs | 21 + .../Math/Extensions/BetweenExtensions.cs.meta | 11 + .../Math/Extensions/ListExtensions.cs | 52 + .../Math/Extensions/ListExtensions.cs.meta | 11 + .../Math/Extensions/MathfExtensions.cs | 17 + .../Math/Extensions/MathfExtensions.cs.meta | 11 + .../Math/Extensions/VectorExtensions.cs | 77 + .../Math/Extensions/VectorExtensions.cs.meta | 11 + .../RekornTools/Math/RekornTools.Math.asmdef | 13 + .../Math/RekornTools.Math.asmdef.meta | 7 + Assets/RekornTools/Presets.meta | 8 + .../RekornTools/Presets/Light Scenario.meta | 8 + .../Presets/Light Scenario/Custom.asset | 24 + .../Presets/Light Scenario/Custom.asset.meta | 8 + .../Presets/Light Scenario/Day.asset | 24 + .../Presets/Light Scenario/Day.asset.meta | 8 + .../Light Scenario/Full Brightness.asset | 24 + .../Light Scenario/Full Brightness.asset.meta | 8 + .../Presets/Light Scenario/Night.asset | 24 + .../Presets/Light Scenario/Night.asset.meta | 8 + .../Presets/Light Scenario/Pure Black.asset | 24 + .../Light Scenario/Pure Black.asset.meta | 8 + .../Presets/Light Scenario/Pure White.asset | 24 + .../Light Scenario/Pure White.asset.meta | 8 + .../Presets/Light Scenario/Skybox.meta | 8 + .../Presets/Light Scenario/Skybox/Custom.mat | 84 + .../Light Scenario/Skybox/Custom.mat.meta | 8 + .../Presets/Light Scenario/Skybox/Earth.mat | 84 + .../Light Scenario/Skybox/Earth.mat.meta | 8 + .../Light Scenario/Skybox/Full Brightness.mat | 118 + .../Skybox/Full Brightness.mat.meta | 8 + .../Light Scenario/Skybox/Pure Black.mat | 118 + .../Light Scenario/Skybox/Pure Black.mat.meta | 8 + .../Light Scenario/Skybox/Pure White.mat | 118 + .../Light Scenario/Skybox/Pure White.mat.meta | 8 + .../Presets/Light Scenario/Sunrise.asset | 24 + .../Presets/Light Scenario/Sunrise.asset.meta | 8 + .../Presets/Light Scenario/Sunset.asset | 24 + .../Presets/Light Scenario/Sunset.asset.meta | 8 + .../RekornTools/Presets/Rekorn Tools.prefab | 391 ++ .../Presets/Rekorn Tools.prefab.meta | 7 + .../RekornTools/Presets/Texture Importer.meta | 8 + .../Alpha Texture Importer.preset | 394 ++ .../Alpha Texture Importer.preset.meta | 8 + .../Default Texture Importer.preset | 438 ++ .../Default Texture Importer.preset.meta | 8 + .../Emissive Texture Importer.preset | 394 ++ .../Emissive Texture Importer.preset.meta | 8 + .../Icon Texture Importer.preset | 438 ++ .../Icon Texture Importer.preset.meta | 8 + .../Mask Texture Importer.preset | 438 ++ .../Mask Texture Importer.preset.meta | 8 + .../Normal Texture Importer.preset | 394 ++ .../Normal Texture Importer.preset.meta | 8 + .../Opaque Texture Importer.preset | 394 ++ .../Opaque Texture Importer.preset.meta | 8 + .../Sampler Texture Importer.preset | 394 ++ .../Sampler Texture Importer.preset.meta | 8 + .../Texture Optimizer Settings.asset | 40 + .../Texture Optimizer Settings.asset.meta | 8 + .../Texture Properties Table.asset | 1113 +++++ .../Texture Properties Table.asset.meta | 8 + Assets/RekornTools/README.md | 49 + Assets/RekornTools/README.md.meta | 3 + Assets/RekornTools/Tests.meta | 8 + Assets/RekornTools/Tests/AvatarDresserTest.cs | 92 + .../Tests/AvatarDresserTest.cs.meta | 11 + .../Tests/RekornTools.Tests.asmdef | 23 + .../Tests/RekornTools.Tests.asmdef.meta | 7 + 250 files changed, 14833 insertions(+) create mode 100644 Assets/02_Assets/01_Avatar/Komado/Chocolat/Animations/F_default.anim create mode 100644 Assets/02_Assets/01_Avatar/Komado/Chocolat/Animations/F_default.anim.meta create mode 100644 Assets/RekornTools.meta create mode 100644 Assets/RekornTools/Avatar.meta create mode 100644 Assets/RekornTools/Avatar/Components.meta create mode 100644 Assets/RekornTools/Avatar/Components/LightEditor.meta create mode 100644 Assets/RekornTools/Avatar/Components/LightEditor/Editor.meta create mode 100644 Assets/RekornTools/Avatar/Components/LightEditor/Editor/LightEditor.cs create mode 100644 Assets/RekornTools/Avatar/Components/LightEditor/Editor/LightEditor.cs.meta create mode 100644 Assets/RekornTools/Avatar/Components/LightEditor/Editor/LightScenario.cs create mode 100644 Assets/RekornTools/Avatar/Components/LightEditor/Editor/LightScenario.cs.meta create mode 100644 Assets/RekornTools/Avatar/Components/LightEditor/Editor/LightScenarioDrawer.cs create mode 100644 Assets/RekornTools/Avatar/Components/LightEditor/Editor/LightScenarioDrawer.cs.meta create mode 100644 Assets/RekornTools/Avatar/Components/LightEditor/Editor/RekornTools.Avatar.Editor.asmref create mode 100644 Assets/RekornTools/Avatar/Components/LightEditor/Editor/RekornTools.Avatar.Editor.asmref.meta create mode 100644 Assets/RekornTools/Avatar/Components/SkinnedMeshTools.meta create mode 100644 Assets/RekornTools/Avatar/Components/SkinnedMeshTools/AvatarDresser.cs create mode 100644 Assets/RekornTools/Avatar/Components/SkinnedMeshTools/AvatarDresser.cs.meta create mode 100644 Assets/RekornTools/Avatar/Components/SkinnedMeshTools/BoneFinder.cs create mode 100644 Assets/RekornTools/Avatar/Components/SkinnedMeshTools/BoneFinder.cs.meta create mode 100644 Assets/RekornTools/Avatar/Components/SkinnedMeshTools/BoneRenamer.cs create mode 100644 Assets/RekornTools/Avatar/Components/SkinnedMeshTools/BoneRenamer.cs.meta create mode 100644 Assets/RekornTools/Avatar/Components/SkinnedMeshTools/Editor.meta create mode 100644 Assets/RekornTools/Avatar/Components/SkinnedMeshTools/Editor/BoneFinderEditor.cs create mode 100644 Assets/RekornTools/Avatar/Components/SkinnedMeshTools/Editor/BoneFinderEditor.cs.meta create mode 100644 Assets/RekornTools/Avatar/Components/SkinnedMeshTools/Editor/MeshBonePairsEditor.cs create mode 100644 Assets/RekornTools/Avatar/Components/SkinnedMeshTools/Editor/MeshBonePairsEditor.cs.meta create mode 100644 Assets/RekornTools/Avatar/Components/SkinnedMeshTools/Editor/RekornTools.Avatar.Editor.asmref create mode 100644 Assets/RekornTools/Avatar/Components/SkinnedMeshTools/Editor/RekornTools.Avatar.Editor.asmref.meta create mode 100644 Assets/RekornTools/Avatar/Components/SkinnedMeshTools/Editor/RigExclusionDrawer.cs create mode 100644 Assets/RekornTools/Avatar/Components/SkinnedMeshTools/Editor/RigExclusionDrawer.cs.meta create mode 100644 Assets/RekornTools/Avatar/Components/SkinnedMeshTools/Editor/RigNamingConventionDrawer.cs create mode 100644 Assets/RekornTools/Avatar/Components/SkinnedMeshTools/Editor/RigNamingConventionDrawer.cs.meta create mode 100644 Assets/RekornTools/Avatar/Components/SkinnedMeshTools/MeshBonePairs.cs create mode 100644 Assets/RekornTools/Avatar/Components/SkinnedMeshTools/MeshBonePairs.cs.meta create mode 100644 Assets/RekornTools/Avatar/Components/SkinnedMeshTools/MeshOptimizer.cs create mode 100644 Assets/RekornTools/Avatar/Components/SkinnedMeshTools/MeshOptimizer.cs.meta create mode 100644 Assets/RekornTools/Avatar/Components/SkinnedMeshTools/RigNamingConvention.cs create mode 100644 Assets/RekornTools/Avatar/Components/SkinnedMeshTools/RigNamingConvention.cs.meta create mode 100644 Assets/RekornTools/Avatar/Components/SkinnedMeshTools/RigPair.cs create mode 100644 Assets/RekornTools/Avatar/Components/SkinnedMeshTools/RigPair.cs.meta create mode 100644 Assets/RekornTools/Avatar/Components/SkinnedMeshTools/_Generic.cs create mode 100644 Assets/RekornTools/Avatar/Components/SkinnedMeshTools/_Generic.cs.meta create mode 100644 Assets/RekornTools/Avatar/Components/TextureOptimizer.meta create mode 100644 Assets/RekornTools/Avatar/Components/TextureOptimizer/AssetManager.cs create mode 100644 Assets/RekornTools/Avatar/Components/TextureOptimizer/AssetManager.cs.meta create mode 100644 Assets/RekornTools/Avatar/Components/TextureOptimizer/Editor.meta create mode 100644 Assets/RekornTools/Avatar/Components/TextureOptimizer/Editor/AssetManagerEditor.cs create mode 100644 Assets/RekornTools/Avatar/Components/TextureOptimizer/Editor/AssetManagerEditor.cs.meta create mode 100644 Assets/RekornTools/Avatar/Components/TextureOptimizer/Editor/RekornTools.Avatar.Editor.asmref create mode 100644 Assets/RekornTools/Avatar/Components/TextureOptimizer/Editor/RekornTools.Avatar.Editor.asmref.meta create mode 100644 Assets/RekornTools/Avatar/Components/TextureOptimizer/Editor/ShaderPropertyDrawer.cs create mode 100644 Assets/RekornTools/Avatar/Components/TextureOptimizer/Editor/ShaderPropertyDrawer.cs.meta create mode 100644 Assets/RekornTools/Avatar/Components/TextureOptimizer/Editor/TexturePropertiesByShaderDrawer.cs create mode 100644 Assets/RekornTools/Avatar/Components/TextureOptimizer/Editor/TexturePropertiesByShaderDrawer.cs.meta create mode 100644 Assets/RekornTools/Avatar/Components/TextureOptimizer/Editor/TexturePropertyDrawer.cs create mode 100644 Assets/RekornTools/Avatar/Components/TextureOptimizer/Editor/TexturePropertyDrawer.cs.meta create mode 100644 Assets/RekornTools/Avatar/Components/TextureOptimizer/ShaderProperty.cs create mode 100644 Assets/RekornTools/Avatar/Components/TextureOptimizer/ShaderProperty.cs.meta create mode 100644 Assets/RekornTools/Avatar/Components/TextureOptimizer/TextureOptimizer.cs create mode 100644 Assets/RekornTools/Avatar/Components/TextureOptimizer/TextureOptimizer.cs.meta create mode 100644 Assets/RekornTools/Avatar/Components/TextureOptimizer/TextureOptimizerSettings.cs create mode 100644 Assets/RekornTools/Avatar/Components/TextureOptimizer/TextureOptimizerSettings.cs.meta create mode 100644 Assets/RekornTools/Avatar/Components/TextureOptimizer/TexturePropertiesTable.cs create mode 100644 Assets/RekornTools/Avatar/Components/TextureOptimizer/TexturePropertiesTable.cs.meta create mode 100644 Assets/RekornTools/Avatar/Components/TextureOptimizer/TextureType.cs create mode 100644 Assets/RekornTools/Avatar/Components/TextureOptimizer/TextureType.cs.meta create mode 100644 Assets/RekornTools/Avatar/Components/TextureOptimizer/_Generic.cs create mode 100644 Assets/RekornTools/Avatar/Components/TextureOptimizer/_Generic.cs.meta create mode 100644 Assets/RekornTools/Avatar/Core.meta create mode 100644 Assets/RekornTools/Avatar/Core/Attribute.meta create mode 100644 Assets/RekornTools/Avatar/Core/Attribute/ButtonAttribute.cs create mode 100644 Assets/RekornTools/Avatar/Core/Attribute/ButtonAttribute.cs.meta create mode 100644 Assets/RekornTools/Avatar/Core/Attribute/ItemNotSpanAttribute.cs create mode 100644 Assets/RekornTools/Avatar/Core/Attribute/ItemNotSpanAttribute.cs.meta create mode 100644 Assets/RekornTools/Avatar/Core/Attribute/ReadOnlyListAttribute.cs create mode 100644 Assets/RekornTools/Avatar/Core/Attribute/ReadOnlyListAttribute.cs.meta create mode 100644 Assets/RekornTools/Avatar/Core/ComponentList.cs create mode 100644 Assets/RekornTools/Avatar/Core/ComponentList.cs.meta create mode 100644 Assets/RekornTools/Avatar/Core/Extensions.meta create mode 100644 Assets/RekornTools/Avatar/Core/Extensions/DictionaryExtensions.cs create mode 100644 Assets/RekornTools/Avatar/Core/Extensions/DictionaryExtensions.cs.meta create mode 100644 Assets/RekornTools/Avatar/Core/Extensions/EditorExtensions.cs create mode 100644 Assets/RekornTools/Avatar/Core/Extensions/EditorExtensions.cs.meta create mode 100644 Assets/RekornTools/Avatar/Core/Extensions/GameObjectExtensions.cs create mode 100644 Assets/RekornTools/Avatar/Core/Extensions/GameObjectExtensions.cs.meta create mode 100644 Assets/RekornTools/Avatar/Core/Extensions/ReflectionExtensions.cs create mode 100644 Assets/RekornTools/Avatar/Core/Extensions/ReflectionExtensions.cs.meta create mode 100644 Assets/RekornTools/Avatar/Core/Extensions/ShaderPropertyExtensions.cs create mode 100644 Assets/RekornTools/Avatar/Core/Extensions/ShaderPropertyExtensions.cs.meta create mode 100644 Assets/RekornTools/Avatar/Core/Extensions/TransformExtensions.cs create mode 100644 Assets/RekornTools/Avatar/Core/Extensions/TransformExtensions.cs.meta create mode 100644 Assets/RekornTools/Avatar/Core/IValidate.cs create mode 100644 Assets/RekornTools/Avatar/Core/IValidate.cs.meta create mode 100644 Assets/RekornTools/Avatar/Core/ObjectList.cs create mode 100644 Assets/RekornTools/Avatar/Core/ObjectList.cs.meta create mode 100644 Assets/RekornTools/Avatar/Core/SerializedDictionary.cs create mode 100644 Assets/RekornTools/Avatar/Core/SerializedDictionary.cs.meta create mode 100644 Assets/RekornTools/Avatar/Core/SerializedKeyValue.cs create mode 100644 Assets/RekornTools/Avatar/Core/SerializedKeyValue.cs.meta create mode 100644 Assets/RekornTools/Avatar/Core/SerializedList.cs create mode 100644 Assets/RekornTools/Avatar/Core/SerializedList.cs.meta create mode 100644 Assets/RekornTools/Avatar/Core/Utils.meta create mode 100644 Assets/RekornTools/Avatar/Core/Utils/AssetHelper.cs create mode 100644 Assets/RekornTools/Avatar/Core/Utils/AssetHelper.cs.meta create mode 100644 Assets/RekornTools/Avatar/Core/Utils/AssetSize.cs create mode 100644 Assets/RekornTools/Avatar/Core/Utils/AssetSize.cs.meta create mode 100644 Assets/RekornTools/Avatar/Editor.meta create mode 100644 Assets/RekornTools/Avatar/Editor/DefaultEditor.cs create mode 100644 Assets/RekornTools/Avatar/Editor/DefaultEditor.cs.meta create mode 100644 Assets/RekornTools/Avatar/Editor/Drawer.meta create mode 100644 Assets/RekornTools/Avatar/Editor/Drawer/HorizontalKeyValueDrawer.cs create mode 100644 Assets/RekornTools/Avatar/Editor/Drawer/HorizontalKeyValueDrawer.cs.meta create mode 100644 Assets/RekornTools/Avatar/Editor/Drawer/SerializedDictionaryDrawer.cs create mode 100644 Assets/RekornTools/Avatar/Editor/Drawer/SerializedDictionaryDrawer.cs.meta create mode 100644 Assets/RekornTools/Avatar/Editor/Drawer/SerializedKeyValueDrawer.cs create mode 100644 Assets/RekornTools/Avatar/Editor/Drawer/SerializedKeyValueDrawer.cs.meta create mode 100644 Assets/RekornTools/Avatar/Editor/Drawer/SerializedListDrawer.cs create mode 100644 Assets/RekornTools/Avatar/Editor/Drawer/SerializedListDrawer.cs.meta create mode 100644 Assets/RekornTools/Avatar/Editor/Extensions.meta create mode 100644 Assets/RekornTools/Avatar/Editor/Extensions/EditorGUIExtensions.cs create mode 100644 Assets/RekornTools/Avatar/Editor/Extensions/EditorGUIExtensions.cs.meta create mode 100644 Assets/RekornTools/Avatar/Editor/Extensions/EditorGUILayoutExtensions.cs create mode 100644 Assets/RekornTools/Avatar/Editor/Extensions/EditorGUILayoutExtensions.cs.meta create mode 100644 Assets/RekornTools/Avatar/Editor/Extensions/ObjectExtensions.cs create mode 100644 Assets/RekornTools/Avatar/Editor/Extensions/ObjectExtensions.cs.meta create mode 100644 Assets/RekornTools/Avatar/Editor/Extensions/RectExtensions.cs create mode 100644 Assets/RekornTools/Avatar/Editor/Extensions/RectExtensions.cs.meta create mode 100644 Assets/RekornTools/Avatar/Editor/Extensions/ReflectionExtensions.cs create mode 100644 Assets/RekornTools/Avatar/Editor/Extensions/ReflectionExtensions.cs.meta create mode 100644 Assets/RekornTools/Avatar/Editor/Extensions/SerializationExtensions.cs create mode 100644 Assets/RekornTools/Avatar/Editor/Extensions/SerializationExtensions.cs.meta create mode 100644 Assets/RekornTools/Avatar/Editor/RekornTools.Avatar.Editor.asmdef create mode 100644 Assets/RekornTools/Avatar/Editor/RekornTools.Avatar.Editor.asmdef.meta create mode 100644 Assets/RekornTools/Avatar/Editor/Utils.meta create mode 100644 Assets/RekornTools/Avatar/Editor/Utils/BaseEditor.cs create mode 100644 Assets/RekornTools/Avatar/Editor/Utils/BaseEditor.cs.meta create mode 100644 Assets/RekornTools/Avatar/Editor/Utils/BaseEditorWindow.cs create mode 100644 Assets/RekornTools/Avatar/Editor/Utils/BaseEditorWindow.cs.meta create mode 100644 Assets/RekornTools/Avatar/Editor/Utils/BasePropertyDrawer.cs create mode 100644 Assets/RekornTools/Avatar/Editor/Utils/BasePropertyDrawer.cs.meta create mode 100644 Assets/RekornTools/Avatar/Editor/Utils/ReorderableListHelper.cs create mode 100644 Assets/RekornTools/Avatar/Editor/Utils/ReorderableListHelper.cs.meta create mode 100644 Assets/RekornTools/Avatar/Editor/Utils/SerializedKeyValueHelper.cs create mode 100644 Assets/RekornTools/Avatar/Editor/Utils/SerializedKeyValueHelper.cs.meta create mode 100644 Assets/RekornTools/Avatar/RekornTools.Avatar.asmdef create mode 100644 Assets/RekornTools/Avatar/RekornTools.Avatar.asmdef.meta create mode 100644 Assets/RekornTools/Core.meta create mode 100644 Assets/RekornTools/Core/RekornTools.asmdef create mode 100644 Assets/RekornTools/Core/RekornTools.asmdef.meta create mode 100644 Assets/RekornTools/Core/VERSION.json create mode 100644 Assets/RekornTools/Core/VERSION.json.meta create mode 100644 Assets/RekornTools/Core/VersionChecker.cs create mode 100644 Assets/RekornTools/Core/VersionChecker.cs.meta create mode 100644 Assets/RekornTools/Debug.meta create mode 100644 Assets/RekornTools/Debug/DrawArrow.cs create mode 100644 Assets/RekornTools/Debug/DrawArrow.cs.meta create mode 100644 Assets/RekornTools/Debug/DrawerHelper.cs create mode 100644 Assets/RekornTools/Debug/DrawerHelper.cs.meta create mode 100644 Assets/RekornTools/Debug/GizmoUtils.cs create mode 100644 Assets/RekornTools/Debug/GizmoUtils.cs.meta create mode 100644 Assets/RekornTools/Debug/HandleGizmos.cs create mode 100644 Assets/RekornTools/Debug/HandleGizmos.cs.meta create mode 100644 Assets/RekornTools/Debug/IGIzmos.cs create mode 100644 Assets/RekornTools/Debug/IGIzmos.cs.meta create mode 100644 Assets/RekornTools/Debug/NameTagGizmos.cs create mode 100644 Assets/RekornTools/Debug/NameTagGizmos.cs.meta create mode 100644 Assets/RekornTools/Debug/NormalGizmos.cs create mode 100644 Assets/RekornTools/Debug/NormalGizmos.cs.meta create mode 100644 Assets/RekornTools/Debug/PhysicsGizmos.cs create mode 100644 Assets/RekornTools/Debug/PhysicsGizmos.cs.meta create mode 100644 Assets/RekornTools/Debug/PositionCenterGizmos.cs create mode 100644 Assets/RekornTools/Debug/PositionCenterGizmos.cs.meta create mode 100644 Assets/RekornTools/Debug/PositionChainGizmos.cs create mode 100644 Assets/RekornTools/Debug/PositionChainGizmos.cs.meta create mode 100644 Assets/RekornTools/Debug/RekornTools.Debug.asmdef create mode 100644 Assets/RekornTools/Debug/RekornTools.Debug.asmdef.meta create mode 100644 Assets/RekornTools/LICENSE create mode 100644 Assets/RekornTools/LICENSE.meta create mode 100644 Assets/RekornTools/Math.meta create mode 100644 Assets/RekornTools/Math/Extensions.meta create mode 100644 Assets/RekornTools/Math/Extensions/BetweenExtensions.cs create mode 100644 Assets/RekornTools/Math/Extensions/BetweenExtensions.cs.meta create mode 100644 Assets/RekornTools/Math/Extensions/ListExtensions.cs create mode 100644 Assets/RekornTools/Math/Extensions/ListExtensions.cs.meta create mode 100644 Assets/RekornTools/Math/Extensions/MathfExtensions.cs create mode 100644 Assets/RekornTools/Math/Extensions/MathfExtensions.cs.meta create mode 100644 Assets/RekornTools/Math/Extensions/VectorExtensions.cs create mode 100644 Assets/RekornTools/Math/Extensions/VectorExtensions.cs.meta create mode 100644 Assets/RekornTools/Math/RekornTools.Math.asmdef create mode 100644 Assets/RekornTools/Math/RekornTools.Math.asmdef.meta create mode 100644 Assets/RekornTools/Presets.meta create mode 100644 Assets/RekornTools/Presets/Light Scenario.meta create mode 100644 Assets/RekornTools/Presets/Light Scenario/Custom.asset create mode 100644 Assets/RekornTools/Presets/Light Scenario/Custom.asset.meta create mode 100644 Assets/RekornTools/Presets/Light Scenario/Day.asset create mode 100644 Assets/RekornTools/Presets/Light Scenario/Day.asset.meta create mode 100644 Assets/RekornTools/Presets/Light Scenario/Full Brightness.asset create mode 100644 Assets/RekornTools/Presets/Light Scenario/Full Brightness.asset.meta create mode 100644 Assets/RekornTools/Presets/Light Scenario/Night.asset create mode 100644 Assets/RekornTools/Presets/Light Scenario/Night.asset.meta create mode 100644 Assets/RekornTools/Presets/Light Scenario/Pure Black.asset create mode 100644 Assets/RekornTools/Presets/Light Scenario/Pure Black.asset.meta create mode 100644 Assets/RekornTools/Presets/Light Scenario/Pure White.asset create mode 100644 Assets/RekornTools/Presets/Light Scenario/Pure White.asset.meta create mode 100644 Assets/RekornTools/Presets/Light Scenario/Skybox.meta create mode 100644 Assets/RekornTools/Presets/Light Scenario/Skybox/Custom.mat create mode 100644 Assets/RekornTools/Presets/Light Scenario/Skybox/Custom.mat.meta create mode 100644 Assets/RekornTools/Presets/Light Scenario/Skybox/Earth.mat create mode 100644 Assets/RekornTools/Presets/Light Scenario/Skybox/Earth.mat.meta create mode 100644 Assets/RekornTools/Presets/Light Scenario/Skybox/Full Brightness.mat create mode 100644 Assets/RekornTools/Presets/Light Scenario/Skybox/Full Brightness.mat.meta create mode 100644 Assets/RekornTools/Presets/Light Scenario/Skybox/Pure Black.mat create mode 100644 Assets/RekornTools/Presets/Light Scenario/Skybox/Pure Black.mat.meta create mode 100644 Assets/RekornTools/Presets/Light Scenario/Skybox/Pure White.mat create mode 100644 Assets/RekornTools/Presets/Light Scenario/Skybox/Pure White.mat.meta create mode 100644 Assets/RekornTools/Presets/Light Scenario/Sunrise.asset create mode 100644 Assets/RekornTools/Presets/Light Scenario/Sunrise.asset.meta create mode 100644 Assets/RekornTools/Presets/Light Scenario/Sunset.asset create mode 100644 Assets/RekornTools/Presets/Light Scenario/Sunset.asset.meta create mode 100644 Assets/RekornTools/Presets/Rekorn Tools.prefab create mode 100644 Assets/RekornTools/Presets/Rekorn Tools.prefab.meta create mode 100644 Assets/RekornTools/Presets/Texture Importer.meta create mode 100644 Assets/RekornTools/Presets/Texture Importer/Alpha Texture Importer.preset create mode 100644 Assets/RekornTools/Presets/Texture Importer/Alpha Texture Importer.preset.meta create mode 100644 Assets/RekornTools/Presets/Texture Importer/Default Texture Importer.preset create mode 100644 Assets/RekornTools/Presets/Texture Importer/Default Texture Importer.preset.meta create mode 100644 Assets/RekornTools/Presets/Texture Importer/Emissive Texture Importer.preset create mode 100644 Assets/RekornTools/Presets/Texture Importer/Emissive Texture Importer.preset.meta create mode 100644 Assets/RekornTools/Presets/Texture Importer/Icon Texture Importer.preset create mode 100644 Assets/RekornTools/Presets/Texture Importer/Icon Texture Importer.preset.meta create mode 100644 Assets/RekornTools/Presets/Texture Importer/Mask Texture Importer.preset create mode 100644 Assets/RekornTools/Presets/Texture Importer/Mask Texture Importer.preset.meta create mode 100644 Assets/RekornTools/Presets/Texture Importer/Normal Texture Importer.preset create mode 100644 Assets/RekornTools/Presets/Texture Importer/Normal Texture Importer.preset.meta create mode 100644 Assets/RekornTools/Presets/Texture Importer/Opaque Texture Importer.preset create mode 100644 Assets/RekornTools/Presets/Texture Importer/Opaque Texture Importer.preset.meta create mode 100644 Assets/RekornTools/Presets/Texture Importer/Sampler Texture Importer.preset create mode 100644 Assets/RekornTools/Presets/Texture Importer/Sampler Texture Importer.preset.meta create mode 100644 Assets/RekornTools/Presets/Texture Importer/Texture Optimizer Settings.asset create mode 100644 Assets/RekornTools/Presets/Texture Importer/Texture Optimizer Settings.asset.meta create mode 100644 Assets/RekornTools/Presets/Texture Importer/Texture Properties Table.asset create mode 100644 Assets/RekornTools/Presets/Texture Importer/Texture Properties Table.asset.meta create mode 100644 Assets/RekornTools/README.md create mode 100644 Assets/RekornTools/README.md.meta create mode 100644 Assets/RekornTools/Tests.meta create mode 100644 Assets/RekornTools/Tests/AvatarDresserTest.cs create mode 100644 Assets/RekornTools/Tests/AvatarDresserTest.cs.meta create mode 100644 Assets/RekornTools/Tests/RekornTools.Tests.asmdef create mode 100644 Assets/RekornTools/Tests/RekornTools.Tests.asmdef.meta diff --git a/Assets/02_Assets/01_Avatar/Komado/Chocolat/Animations/F_default.anim b/Assets/02_Assets/01_Avatar/Komado/Chocolat/Animations/F_default.anim new file mode 100644 index 0000000..510d475 --- /dev/null +++ b/Assets/02_Assets/01_Avatar/Komado/Chocolat/Animations/F_default.anim @@ -0,0 +1,4439 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: F_default + serializedVersion: 7 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: [] + m_ScaleCurves: [] + m_FloatCurves: + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eyebrow_down + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.Option_hoppe + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.Option_shy_1 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.Option_shy_3 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.Option_sweat_1 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.Option_sweat_2 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.Option_sweat_3 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.Option_tear_2 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.Option_tear_simple + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eye_>< + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eye_angry + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eye_big + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eye_dark + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eye_guruguru + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eye_happy + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eye_happy_R + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eye_heart + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eye_look_inside + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eye_look_up_2 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eye_marushiro + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eye_pupil_+_big + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eye_pupil_small + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eye_shiitake + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eye_sleepy + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eye_small + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eye_smile_1 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eye_surprise + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eye_uru + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: "blendShape.eye_\u3007_1" + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eyebrow_angry_1 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eyebrow_angry_1_R + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eyebrow_angry_2 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eyebrow_sad_1 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eyebrow_sad_2 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eyebrow_smile + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eyebrow_straight + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eyebrow_tare + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eyebrow_trouble + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eyebrow_up + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eyelid_line_2_down + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.highlight_1_big + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.highlight_1_down + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.highlight_1_up + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: "blendShape.highlight_1_\xD7" + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.highlight_2_big + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: "blendShape.highlight_2_\xD7" + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.highlight_sub_1_big + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: "blendShape.highlight_sub_1_\xD7" + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.highlight_sub_2_big + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: "blendShape.highlight_sub_2_\xD7" + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.jitome_1 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.jitome_2 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.lower_eyelid_down_2 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.lower_eyelid_up_2 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.lower_eyelid_up_2_L + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.mouth_A_1 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.mouth_A_2 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.mouth_E_2 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.mouth_I_1_open + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.mouth_I_2 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.mouth_I_3 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.mouth_I_3_open + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.mouth_O_1 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.mouth_O_2 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.mouth_U_2 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.mouth_U_3 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.mouth_angry_1 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.mouth_angry_2 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.mouth_grin_R + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.mouth_grin_R_open + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.mouth_hawa + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.mouth_narrow + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.mouth_pero_2 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.mouth_pero_4 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.mouth_smile_1 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.mouth_smile_1_L + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.mouth_smile_2 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.mouth_tehepero_1 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.mouth_wide + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: "blendShape.mouth_\u039B_2" + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: "blendShape.mouth_\u03C9_open_1" + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: "blendShape.mouth_\u03C9_open_2" + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: "blendShape.mouth_\u25A1" + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.upper_tooth_up + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.yaeba_L + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eye_blink_1 + path: Body + classID: 137 + script: {fileID: 0} + flags: 0 + m_PPtrCurves: [] + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 2073732236 + attribute: 155473842 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 1810484773 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 2428880384 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 2127275820 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 1846980202 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 4146069456 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 2149109574 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 2710987560 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 1770633432 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 411808946 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 1633112602 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 2261335207 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 1553678426 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 241540623 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 528217930 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 3503340791 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 3246045029 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 364411753 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 656474328 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 2587900498 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 3593394905 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 1821179245 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 3819478698 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 1352974074 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 3570638480 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 1953743770 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 1210315314 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 3308204928 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 1830732814 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 1766206630 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 857374070 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 4031741212 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 1285054330 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 3583053504 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 2533065548 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 583373919 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 3110469866 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 218993179 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 3266011310 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 3885261431 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 2943073215 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 1214076747 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 253931454 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 2211696987 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 3905667439 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 2439413429 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 793260895 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 3309107918 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 1760053647 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 3616101664 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 1515954899 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 3276993385 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 1615533691 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 3915304365 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 4260154152 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 1267004735 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 3532498053 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 3582200921 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 1304953946 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 3701404989 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 2878981547 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 42321 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 1092278325 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 3625159055 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 3382882089 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 3198525375 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 3317820945 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 1556660139 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 1333433487 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 3594918979 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 192337702 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 1230192683 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 1208039119 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 2707592186 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 2849953153 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 3618732112 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 819430459 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 2633601993 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 1805468892 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 1947912477 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 1302259391 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 3566712581 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 2056120645 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 1681304303 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 3969236219 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2073732236 + attribute: 3725681348 + script: {fileID: 0} + typeID: 137 + customType: 20 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 0 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 0 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eyebrow_down + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.Option_hoppe + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.Option_shy_1 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.Option_shy_3 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.Option_sweat_1 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.Option_sweat_2 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.Option_sweat_3 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.Option_tear_2 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.Option_tear_simple + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eye_>< + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eye_angry + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eye_big + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eye_dark + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eye_guruguru + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eye_happy + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eye_happy_R + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eye_heart + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eye_look_inside + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eye_look_up_2 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eye_marushiro + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eye_pupil_+_big + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eye_pupil_small + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eye_shiitake + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eye_sleepy + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eye_small + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eye_smile_1 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eye_surprise + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eye_uru + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: "blendShape.eye_\u3007_1" + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eyebrow_angry_1 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eyebrow_angry_1_R + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eyebrow_angry_2 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eyebrow_sad_1 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eyebrow_sad_2 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eyebrow_smile + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eyebrow_straight + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eyebrow_tare + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eyebrow_trouble + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eyebrow_up + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eyelid_line_2_down + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.highlight_1_big + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.highlight_1_down + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.highlight_1_up + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: "blendShape.highlight_1_\xD7" + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.highlight_2_big + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: "blendShape.highlight_2_\xD7" + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.highlight_sub_1_big + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: "blendShape.highlight_sub_1_\xD7" + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.highlight_sub_2_big + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: "blendShape.highlight_sub_2_\xD7" + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.jitome_1 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.jitome_2 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.lower_eyelid_down_2 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.lower_eyelid_up_2 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.lower_eyelid_up_2_L + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.mouth_A_1 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.mouth_A_2 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.mouth_E_2 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.mouth_I_1_open + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.mouth_I_2 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.mouth_I_3 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.mouth_I_3_open + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.mouth_O_1 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.mouth_O_2 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.mouth_U_2 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.mouth_U_3 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.mouth_angry_1 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.mouth_angry_2 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.mouth_grin_R + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.mouth_grin_R_open + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.mouth_hawa + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.mouth_narrow + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.mouth_pero_2 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.mouth_pero_4 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.mouth_smile_1 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.mouth_smile_1_L + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.mouth_smile_2 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.mouth_tehepero_1 + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.mouth_wide + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: "blendShape.mouth_\u039B_2" + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: "blendShape.mouth_\u03C9_open_1" + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: "blendShape.mouth_\u03C9_open_2" + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: "blendShape.mouth_\u25A1" + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.upper_tooth_up + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.yaeba_L + path: Body + classID: 137 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: blendShape.eye_blink_1 + path: Body + classID: 137 + script: {fileID: 0} + flags: 0 + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Assets/02_Assets/01_Avatar/Komado/Chocolat/Animations/F_default.anim.meta b/Assets/02_Assets/01_Avatar/Komado/Chocolat/Animations/F_default.anim.meta new file mode 100644 index 0000000..8119b7d --- /dev/null +++ b/Assets/02_Assets/01_Avatar/Komado/Chocolat/Animations/F_default.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3305beb2138e64147a9128f10533c35e +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools.meta b/Assets/RekornTools.meta new file mode 100644 index 0000000..f59d7a8 --- /dev/null +++ b/Assets/RekornTools.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 18de0e02918b4b7429642f58b19d1441 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Avatar.meta b/Assets/RekornTools/Avatar.meta new file mode 100644 index 0000000..862e46a --- /dev/null +++ b/Assets/RekornTools/Avatar.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dcb027a5c532a6a4e98a7c28a182f831 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Avatar/Components.meta b/Assets/RekornTools/Avatar/Components.meta new file mode 100644 index 0000000..fbff736 --- /dev/null +++ b/Assets/RekornTools/Avatar/Components.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1de2ade747570954880c52da75ff2c6f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Avatar/Components/LightEditor.meta b/Assets/RekornTools/Avatar/Components/LightEditor.meta new file mode 100644 index 0000000..40dcb04 --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/LightEditor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f37a7a5cf7195f74e97b23ed35b6ff58 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Avatar/Components/LightEditor/Editor.meta b/Assets/RekornTools/Avatar/Components/LightEditor/Editor.meta new file mode 100644 index 0000000..33f466a --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/LightEditor/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cef04c0973a08b8478649cd5978e0c78 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Avatar/Components/LightEditor/Editor/LightEditor.cs b/Assets/RekornTools/Avatar/Components/LightEditor/Editor/LightEditor.cs new file mode 100644 index 0000000..4d60d02 --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/LightEditor/Editor/LightEditor.cs @@ -0,0 +1,74 @@ +using UnityEditor; +using UnityEditor.SceneManagement; +using UnityEngine; +using UnityEngine.SceneManagement; +using static UnityEditor.EditorGUILayout; +using static RekornTools.Avatar.Editor.EditorGUILayoutExtensions; + +namespace RekornTools.Avatar.Editor +{ + public sealed class LightEditor : BaseEditorWindow + { + [SerializeField] bool _ignoreLighting; + [SerializeField] Light _sun; + [SerializeField] LightScenario _scenario; + + [MenuItem("Tools/Rekorn Tools/Light Editor")] + static void OnWindowOpen() => + GetWindow("Light Editor")?.Show(); + + protected override void Enable() + { + EditorSceneManager.activeSceneChangedInEditMode += OnSceneChanged; + FindSun(); + } + + protected override void Disable() + { + EditorSceneManager.activeSceneChangedInEditMode -= OnSceneChanged; + } + + void OnSceneChanged(Scene prev, Scene current) => FindSun(); + + void FindSun() + { + const string sunName = "Directional Light"; + _sun = GameObject.Find(sunName)?.GetComponent(); + if (_sun == null) _sun = new GameObject(sunName).AddComponent(); + } + + protected override void Draw() + { + LabelField("Light Preset", EditorStyles.boldLabel); + + _ignoreLighting = Toggle("Ignore Lighting", _ignoreLighting); + SetCurrentSceneViewLighting(!_ignoreLighting); + + _scenario = ObjectField("Scenario", _scenario, false); + DrawLightScenario(); + } + + static void SetCurrentSceneViewLighting(bool isEnable) + { + var sceneViews = SceneView.sceneViews; + if (sceneViews == null) return; + + foreach (SceneView view in sceneViews) + { + if (view == null) continue; + + view.sceneLighting = isEnable; + view.Repaint(); + } + } + + void DrawLightScenario() + { + if (_scenario == null) return; + + HorizontalLine(); + _scenario.DrawEditor(_ignoreLighting); + _scenario.Apply(_sun); + } + } +} diff --git a/Assets/RekornTools/Avatar/Components/LightEditor/Editor/LightEditor.cs.meta b/Assets/RekornTools/Avatar/Components/LightEditor/Editor/LightEditor.cs.meta new file mode 100644 index 0000000..c9c5bfc --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/LightEditor/Editor/LightEditor.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: eb83d4315df64c9b9fadb3db1672a1b1 +timeCreated: 1648893669 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Components/LightEditor/Editor/LightScenario.cs b/Assets/RekornTools/Avatar/Components/LightEditor/Editor/LightScenario.cs new file mode 100644 index 0000000..6a98d0f --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/LightEditor/Editor/LightScenario.cs @@ -0,0 +1,56 @@ +using JetBrains.Annotations; +using UnityEngine; +using UnityEngine.Rendering; + +namespace RekornTools.Avatar.Editor +{ + [CreateAssetMenu(menuName = "Rekorn Tools/Light Scenario")] + public sealed partial class LightScenario : ScriptableObject, IValidate + { + [SerializeField] Material Skybox; + [SerializeField] bool UseShadow; + [SerializeField] float ReflectionIntensity; + + [SerializeField] Vector3 SunDirection; + + [SerializeField] bool SyncColor; + [SerializeField] Color SunColor; + [SerializeField] float SunIntensity; + + [SerializeField] bool UseSkyboxColor; + [SerializeField] Color SkyColor; + [SerializeField] float SkyboxIntensity; + + AmbientMode AmbientMode => UseSkyboxColor && !SyncColor ? AmbientMode.Skybox : AmbientMode.Flat; + + public void OnValidate() + { + var direction = SunDirection; + direction.x = Mathf.Clamp(direction.x, -1f, 1f); + direction.y = Mathf.Clamp(direction.y, -1f, 1f); + direction.z = Mathf.Clamp(direction.z, -1f, 1f); + if (direction == Vector3.zero) direction = -Vector3.up; + SunDirection = direction; + } + + internal void Apply([CanBeNull] Light light) + { + RenderSettings.skybox = Skybox; + RenderSettings.reflectionIntensity = ReflectionIntensity; + RenderSettings.ambientMode = AmbientMode; + RenderSettings.ambientIntensity = SkyboxIntensity; + RenderSettings.ambientLight = (SyncColor ? SunColor : SkyColor) * SkyboxIntensity; + RenderSettings.sun = light; + + if (light != null) + { + light.gameObject.SetActive(true); + light.shadowStrength = 1f; + light.shadows = UseShadow ? LightShadows.Soft : LightShadows.None; + light.transform.rotation = Quaternion.LookRotation(SunDirection); + light.color = SunColor; + light.intensity = SunIntensity; + } + } + } +} diff --git a/Assets/RekornTools/Avatar/Components/LightEditor/Editor/LightScenario.cs.meta b/Assets/RekornTools/Avatar/Components/LightEditor/Editor/LightScenario.cs.meta new file mode 100644 index 0000000..5ccc6d4 --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/LightEditor/Editor/LightScenario.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 271094caa09e4937b2690fdce7b07442 +timeCreated: 1647705266 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Components/LightEditor/Editor/LightScenarioDrawer.cs b/Assets/RekornTools/Avatar/Components/LightEditor/Editor/LightScenarioDrawer.cs new file mode 100644 index 0000000..3fb1753 --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/LightEditor/Editor/LightScenarioDrawer.cs @@ -0,0 +1,55 @@ +using UnityEditor; +using UnityEngine; +using static UnityEditor.EditorGUILayout; +using static RekornTools.Avatar.Editor.EditorGUILayoutExtensions; + +namespace RekornTools.Avatar.Editor +{ + public sealed partial class LightScenario + { + [CustomEditor(typeof(LightScenario))] + sealed class LightScenarioDrawer : BaseEditor + { + protected override void Draw(LightScenario t) + { + LabelField("Light Scenario", EditorStyles.boldLabel); + + t.Skybox = ObjectField("Skybox", t.Skybox, false); + t.UseShadow = Toggle("Use Shadow", t.UseShadow); + t.ReflectionIntensity = Slider("Reflection Intensity", t.ReflectionIntensity, 0, 1); + t.SunDirection = Vector3Field("Sun Direction", t.SunDirection); + + HorizontalLine(); + + BeginHorizontal(); + { + LabelField("Sun Light", GUILayout.Width(100)); + t.SyncColor = Toggle(t.SyncColor, GUILayout.Width(20)); + t.SunColor = ColorField(t.SunColor, GUILayout.Width(60)); + t.SunIntensity = Slider(t.SunIntensity, 0f, 8f); + } + EndHorizontal(); + + BeginHorizontal(); + { + LabelField("Ambient Light", GUILayout.Width(100)); + + if (t.SyncColor) + { + LabelField("Color Synced", EditorStyles.helpBox, GUILayout.Width(80)); + } + else + { + t.UseSkyboxColor = Toggle(t.UseSkyboxColor, GUILayout.Width(20)); + + if (t.UseSkyboxColor) LabelField("Skybox", EditorStyles.helpBox, GUILayout.Width(60)); + else t.SkyColor = ColorField(t.SkyColor, GUILayout.Width(60)); + } + + t.SkyboxIntensity = Slider(t.SkyboxIntensity, 0f, 8f); + } + EndHorizontal(); + } + } + } +} diff --git a/Assets/RekornTools/Avatar/Components/LightEditor/Editor/LightScenarioDrawer.cs.meta b/Assets/RekornTools/Avatar/Components/LightEditor/Editor/LightScenarioDrawer.cs.meta new file mode 100644 index 0000000..b21ddb0 --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/LightEditor/Editor/LightScenarioDrawer.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: f03d24aafb5a4791af11e953c3b57ed1 +timeCreated: 1647701543 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Components/LightEditor/Editor/RekornTools.Avatar.Editor.asmref b/Assets/RekornTools/Avatar/Components/LightEditor/Editor/RekornTools.Avatar.Editor.asmref new file mode 100644 index 0000000..7de191c --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/LightEditor/Editor/RekornTools.Avatar.Editor.asmref @@ -0,0 +1,3 @@ +{ + "reference": "GUID:3b7023146530b954c921ee55ab65dbff" +} \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Components/LightEditor/Editor/RekornTools.Avatar.Editor.asmref.meta b/Assets/RekornTools/Avatar/Components/LightEditor/Editor/RekornTools.Avatar.Editor.asmref.meta new file mode 100644 index 0000000..21c6499 --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/LightEditor/Editor/RekornTools.Avatar.Editor.asmref.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 30a3de862c721a74b9c29fbf15c0e4c2 +AssemblyDefinitionReferenceImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Avatar/Components/SkinnedMeshTools.meta b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools.meta new file mode 100644 index 0000000..b94df5a --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2fb37031fdf826a42bf75fbf5585f804 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/AvatarDresser.cs b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/AvatarDresser.cs new file mode 100644 index 0000000..3e22a0a --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/AvatarDresser.cs @@ -0,0 +1,154 @@ +#if UNITY_EDITOR +using System; +using System.Collections.Generic; +using JetBrains.Annotations; +using UnityEditor; +using UnityEngine; + +namespace RekornTools.Avatar +{ + public enum DresserMode + { + DirectTransform, + ParentConstraint, + WeightTransfer, + } + + [ExecuteInEditMode] + public sealed class AvatarDresser : MonoBehaviour + { + [SerializeField] DresserMode _dresserMode = DresserMode.DirectTransform; + + [Header("Avatar Settings")] + [SerializeField] Animator _avatar; + + [Header("Cloth Settings")] + [SerializeField] string _clothPrefix; + [SerializeField] string _clothSuffix; + [SerializeField] Transform _clothRoot; + [SerializeField] Transform _clothArmature; + + [Header("Bone Exclusions")] + [SerializeField] [NotNull] BonePairs _boneExclusions = new BonePairs(); + + void OnValidate() + { + if (_clothRoot != null && _clothArmature == null) _clothArmature = _clothRoot.Find("Armature"); + } + + [Button] + public void Apply() + { + switch (_dresserMode) + { + case DresserMode.DirectTransform: + ApplyDirectTransform(); + break; + case DresserMode.ParentConstraint: + ApplyParentConstraint(); + break; + case DresserMode.WeightTransfer: + ApplyWeightTransfer(); + break; + } + } + + void ApplyDirectTransform() + { + if (_avatar == null || _clothRoot == null) + { + this.ShowConfirmDialog("Avatar or cloth is not set."); + return; + } + + if (_clothArmature == null) + { + this.ShowConfirmDialog("Cloth armature is not set."); + return; + } + + _clothRoot.gameObject.UnpackPrefab(); + + var bones = _clothArmature.GetComponentsInChildren(); + var meshes = _clothRoot.GetComponentsInChildren(); + + if (bones == null || meshes == null) + { + this.ShowConfirmDialog("No bones or meshes found."); + Undo.PerformUndo(); + return; + } + + var result = CreateMeshBonePairs(_clothRoot.name, transform); + result.Bones.AddRange(bones); + result.Meshes.AddRange(meshes); + + TransferBones(bones, _avatar.transform); + TransferExcludedBones(_boneExclusions); + RenameBones(bones, _clothPrefix, _clothSuffix); + TransferMeshes(_clothRoot, _avatar.transform); + } + + void ApplyParentConstraint() + { + this.ShowConfirmDialog("ParentConstraint is not implemented yet."); + } + + + void ApplyWeightTransfer() + { + this.ShowConfirmDialog("WeightTransfer is not implemented yet."); + } + + [NotNull] + static MeshBonePairs CreateMeshBonePairs([NotNull] string title, [CanBeNull] Transform parent) + { + var undo = "CreateMeshBonePairs"; + { + var go = new GameObject($"[{title}]"); + Undo.RegisterCreatedObjectUndo(go, undo); + Undo.SetTransformParent(go.transform, parent, undo); + return Undo.AddComponent(go) ?? throw new NullReferenceException(undo); + } + } + + static void TransferBones([NotNull] IEnumerable bones, [NotNull] Transform targetParent) + { + var undo = "TransferBones"; + foreach (var bone in bones) + { + if (bone == null) continue; + + var avatarBone = targetParent.FindRecursive(bone.name); + if (avatarBone != null) Undo.SetTransformParent(bone, avatarBone, undo); + } + } + + static void TransferExcludedBones([NotNull] BonePairs boneExclusions) + { + var undo = "TransferExcludedBones"; + foreach (var exclusion in boneExclusions) + { + if (exclusion == null || exclusion.Source == null) continue; + Undo.SetTransformParent(exclusion.Source, exclusion.Target, undo); + } + } + + static void RenameBones([NotNull] IEnumerable bones, [CanBeNull] string prefix, [CanBeNull] string suffix) + { + var undo = "RenameBones"; + foreach (var bone in bones) + { + if (bone == null) continue; + bone.UndoableAction(undo, () => bone.name = $"{prefix}{bone.name}{suffix}"); + } + } + + static void TransferMeshes([NotNull] Transform source, [CanBeNull] Transform parent) + { + var undo = "TransferMeshes"; + Undo.SetTransformParent(source, parent, undo); + } + } +} +#endif diff --git a/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/AvatarDresser.cs.meta b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/AvatarDresser.cs.meta new file mode 100644 index 0000000..3cae414 --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/AvatarDresser.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1736ac66ad9eb1445bbad42ac0db8a2b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/BoneFinder.cs b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/BoneFinder.cs new file mode 100644 index 0000000..f0cbaca --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/BoneFinder.cs @@ -0,0 +1,107 @@ +#if UNITY_EDITOR +using System.Collections.Generic; +using System.Linq; +using JetBrains.Annotations; +using UnityEngine; + +namespace RekornTools.Avatar +{ + [ExecuteInEditMode] + [RequireComponent(typeof(MeshBonePairs))] + public sealed class BoneFinder : MonoBehaviour + { + [field: SerializeField] [CanBeNull] public Transform MeshParent { get; set; } + [field: SerializeField] [CanBeNull] public Transform BoneParent { get; set; } + + [field: SerializeField] [CanBeNull] public string MeshKeyword { get; set; } + [field: SerializeField] [CanBeNull] public string BoneKeyword { get; set; } + + [CanBeNull] public SkinnedMeshRenderers Meshes => _meshBonePairs ? _meshBonePairs.Meshes : null; + [CanBeNull] public Transforms Bones => _meshBonePairs ? _meshBonePairs.Bones : null; + + [CanBeNull] MeshBonePairs _meshBonePairs; + + void Awake() => _meshBonePairs = GetComponent(); + + public void FindMeshesFromTargetWithKeyword() + { + if (_meshBonePairs == null) return; + + _meshBonePairs.UndoableAction(() => Meshes?.Initialize(MeshParent, MeshKeyword)); + if (Meshes?.Count == 0) this.ShowConfirmDialog("No objects found"); + } + + public void FindBonesFromTargetWithKeyword() + { + if (_meshBonePairs == null) return; + + _meshBonePairs.UndoableAction(() => + { + Bones?.Initialize(BoneParent, BoneKeyword); + Bones?.RemoveRange(Meshes?.Select(x => x == null ? null : x.transform)); + Bones?.Remove(BoneParent); + }); + + if (Bones?.Count == 0) this.ShowConfirmDialog("No objects found"); + } + + public void FindBonesFromWeights() + { + if (_meshBonePairs == null) return; + + if (Meshes?.Count == 0) + { + this.ShowConfirmDialog("There are no meshes to find bones from."); + return; + } + + var bones = new List(); + + foreach (var bone in + from m in Meshes + where m + from b in m.bones + where b != null && !bones.Contains(b) + select b) + { + bones.Add(bone); + } + + _meshBonePairs.UndoableAction(() => Bones?.Initialize(bones)); + + if (Bones?.Count == 0) + this.ShowConfirmDialog("Failed to find any bones from meshes.\n" + + "You might need to check meshes is valid or bone weights are not set to zero."); + } + + public void FindBonesFromWeightsRecursive() + { + FindBonesFromWeights(); + + if (_meshBonePairs == null || Bones == null) return; + + var children = GetChildrenRecursive(Bones); + _meshBonePairs.UndoableAction(() => Bones.AddRange(children)); + } + + [NotNull] + static List GetChildrenRecursive([NotNull] Transforms target) + { + var children = new List(); + + foreach (var child in + from t in target + where t != null + select t.GetComponentsInChildren(true)) + { + if (child == null) continue; + children.AddRange(child.Where(c => !AlreadyInList(c))); + } + + return children; + + bool AlreadyInList(Transform b) => target.Contains(b) || children.Contains(b); + } + } +} +#endif diff --git a/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/BoneFinder.cs.meta b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/BoneFinder.cs.meta new file mode 100644 index 0000000..6493c08 --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/BoneFinder.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 39ebfe4ca23f40638645de61e45056a3 +timeCreated: 1647154999 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/BoneRenamer.cs b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/BoneRenamer.cs new file mode 100644 index 0000000..b867764 --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/BoneRenamer.cs @@ -0,0 +1,47 @@ +#if UNITY_EDITOR +using JetBrains.Annotations; +using UnityEngine; + +namespace RekornTools.Avatar +{ + [ExecuteInEditMode] + public sealed class BoneRenamer : MonoBehaviour + { + [Header("Source")] + [SerializeField] Transform _parent; + [SerializeField] RigNamingConvention _sourceNaming = RigNamingConvention.Default; + + [Header("Target")] + [SerializeField] RigNamingConvention _targetNaming = RigNamingConvention.Default; + + [Header("Rename Token")] + [SerializeField] [NotNull] NamePairs _renameToken = new NamePairs(); + + [Header("Rename Exclusions")] + [SerializeField] [NotNull] Transforms _exclusions = new Transforms(); + + [Button] + public void Rename() + { + if (_parent == null) return; + + _parent.InvokeRecursive(x => + { + if (x == null || _exclusions.Contains(x)) return; + + var newName = x.name; + + foreach (var token in _renameToken) + { + if (string.IsNullOrWhiteSpace(token?.Source)) continue; + newName = newName.Replace(token.Source, token.Target); + } + + newName = RigNamingConvention.Convert(newName, _sourceNaming, _targetNaming); + + x.gameObject.UndoableAction(() => x.name = newName); + }); + } + } +} +#endif diff --git a/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/BoneRenamer.cs.meta b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/BoneRenamer.cs.meta new file mode 100644 index 0000000..de7366b --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/BoneRenamer.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 01a7cdc3de5c42298b1b7fab6d20dd23 +timeCreated: 1652202099 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/Editor.meta b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/Editor.meta new file mode 100644 index 0000000..67ef486 --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/Editor.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 5827a1255c85cf849b44c5475b00fa3d +timeCreated: 1647270296 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/Editor/BoneFinderEditor.cs b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/Editor/BoneFinderEditor.cs new file mode 100644 index 0000000..fad68ad --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/Editor/BoneFinderEditor.cs @@ -0,0 +1,64 @@ +using JetBrains.Annotations; +using UnityEditor; +using UnityEngine; +using static RekornTools.Avatar.Editor.EditorGUILayoutExtensions; +using static UnityEditor.EditorGUILayout; + +namespace RekornTools.Avatar.Editor +{ + [CustomEditor(typeof(BoneFinder))] + public sealed class BoneFinderEditor : BaseEditor + { + protected override void Draw(BoneFinder t) + { + EditorGUIUtility.labelWidth = EditorGUIUtility.currentViewWidth / 5; + + DrawMeshFinder(t); + HorizontalLine(); + + if (t.Meshes?.Count > 0) + { + DrawBoneFinder(t); + HorizontalLine(); + DrawWeightedBoneFinder(t); + } + } + + static void DrawMeshFinder([NotNull] BoneFinder t) + { + BeginHorizontal(); + { + LabelField("Mesh Finder", EditorStyles.boldLabel); + if (GUILayout.Button("Find")) t.FindMeshesFromTargetWithKeyword(); + } + EndHorizontal(); + + t.MeshParent = ObjectField("Parent", t.MeshParent, true); + t.MeshKeyword = TextField("Keyword", t.MeshKeyword); + } + + static void DrawBoneFinder([NotNull] BoneFinder t) + { + BeginHorizontal(); + { + LabelField("Bone Finder", EditorStyles.boldLabel); + if (GUILayout.Button("Find")) t.FindBonesFromTargetWithKeyword(); + } + EndHorizontal(); + + t.BoneParent = ObjectField("Parent", t.BoneParent, true); + t.BoneKeyword = TextField("Keyword", t.BoneKeyword); + } + + static void DrawWeightedBoneFinder([NotNull] BoneFinder t) + { + BeginHorizontal(); + { + LabelField("Bone Finder (From Weights)", EditorStyles.boldLabel); + if (GUILayout.Button("Find")) t.FindBonesFromWeights(); + if (GUILayout.Button("Find Recursive")) t.FindBonesFromWeightsRecursive(); + } + EndHorizontal(); + } + } +} diff --git a/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/Editor/BoneFinderEditor.cs.meta b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/Editor/BoneFinderEditor.cs.meta new file mode 100644 index 0000000..e5ac4ab --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/Editor/BoneFinderEditor.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: c53f396d5de4481b92de12c77addb82e +timeCreated: 1647274570 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/Editor/MeshBonePairsEditor.cs b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/Editor/MeshBonePairsEditor.cs new file mode 100644 index 0000000..c9a1309 --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/Editor/MeshBonePairsEditor.cs @@ -0,0 +1,67 @@ +using JetBrains.Annotations; +using UnityEditor; +using UnityEngine; +using static UnityEditor.EditorGUILayout; + +namespace RekornTools.Avatar.Editor +{ + [CustomEditor(typeof(MeshBonePairs))] + public sealed class MeshBonePairsEditor : BaseEditor + { + bool _meshesFoldout = true; + bool _bonesFoldout = false; + + protected override void Draw(MeshBonePairs t) + { + EditorGUIUtility.labelWidth = EditorGUIUtility.currentViewWidth / 5; + + DrawLists(); + DrawButton(t); + } + + void DrawLists() + { + LabelField("Lists", EditorStyles.boldLabel); + { + _meshesFoldout = Foldout(_meshesFoldout, "Meshes"); + if (_meshesFoldout) PropertyField(serializedObject.ResolveProperty(nameof(MeshBonePairs.Meshes)), true); + + _bonesFoldout = Foldout(_bonesFoldout, "Bones"); + if (_bonesFoldout) PropertyField(serializedObject.ResolveProperty(nameof(MeshBonePairs.Bones)), true); + } + } + + static void DrawButton([NotNull] MeshBonePairs t) + { + LabelField("Actions", EditorStyles.boldLabel); + { + BeginHorizontal(); + { + LabelField("Select Items", EditorStyles.miniBoldLabel); + if (GUILayout.Button("All")) t.SelectAll(); + if (GUILayout.Button("Meshes")) t.SelectMeshes(); + if (GUILayout.Button("Bones")) t.SelectBones(); + } + EndHorizontal(); + + BeginHorizontal(); + { + LabelField("Clear List", EditorStyles.miniBoldLabel); + if (GUILayout.Button("All")) t.ClearAll(); + if (GUILayout.Button("Meshes")) t.ClearMeshes(); + if (GUILayout.Button("Bones")) t.ClearBones(); + } + EndHorizontal(); + + BeginHorizontal(); + { + LabelField("Destroy Items", EditorStyles.miniBoldLabel); + if (GUILayout.Button("All")) t.DestroyAll(); + if (GUILayout.Button("Meshes")) t.DestroyMeshes(); + if (GUILayout.Button("Bones")) t.DestroyBones(); + } + EndHorizontal(); + } + } + } +} diff --git a/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/Editor/MeshBonePairsEditor.cs.meta b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/Editor/MeshBonePairsEditor.cs.meta new file mode 100644 index 0000000..0fdd8e4 --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/Editor/MeshBonePairsEditor.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 400c2ba7b80440c186deb21fbfcaee86 +timeCreated: 1647273214 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/Editor/RekornTools.Avatar.Editor.asmref b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/Editor/RekornTools.Avatar.Editor.asmref new file mode 100644 index 0000000..7de191c --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/Editor/RekornTools.Avatar.Editor.asmref @@ -0,0 +1,3 @@ +{ + "reference": "GUID:3b7023146530b954c921ee55ab65dbff" +} \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/Editor/RekornTools.Avatar.Editor.asmref.meta b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/Editor/RekornTools.Avatar.Editor.asmref.meta new file mode 100644 index 0000000..55fa65b --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/Editor/RekornTools.Avatar.Editor.asmref.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8c4c27fbd96440e4c80aeb8ee460ff77 +AssemblyDefinitionReferenceImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/Editor/RigExclusionDrawer.cs b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/Editor/RigExclusionDrawer.cs new file mode 100644 index 0000000..f27bca3 --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/Editor/RigExclusionDrawer.cs @@ -0,0 +1,38 @@ +using UnityEditor; +using UnityEngine; + +namespace RekornTools.Avatar.Editor +{ + [CustomPropertyDrawer(typeof(RigPair<>), true)] + public sealed class RigExclusionDrawer : BasePropertyDrawer + { + protected override void DrawProperty(Rect rect, SerializedProperty property, GUIContent title, int indent) + { + rect.height = 0f; + + var avatarBoneName = property.ResolveProperty(nameof(RigPair.Target)); + var clothBoneName = property.ResolveProperty(nameof(RigPair.Source)); + + rect.AppendHeight(avatarBoneName); + + var x = rect.x; + var width = rect.width; + rect.width = 0f; + + rect.AppendWidth(width * 0.45f); + clothBoneName.PropertyField(rect); + + rect.AppendWidth(width * 0.1f); + EditorGUI.LabelField(rect, "▶", new GUIStyle(EditorStyles.label) { alignment = TextAnchor.MiddleCenter }); + + rect.AppendWidth(width * 0.45f); + avatarBoneName.PropertyField(rect); + + rect.x = x; + rect.width = width; + } + + public override float GetPropertyHeight(SerializedProperty property, GUIContent _) => + EditorGUIExtensions.SingleItemHeight; + } +} diff --git a/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/Editor/RigExclusionDrawer.cs.meta b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/Editor/RigExclusionDrawer.cs.meta new file mode 100644 index 0000000..592d7b8 --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/Editor/RigExclusionDrawer.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: ebe222154c9041a0be3358e9d4631ba8 +timeCreated: 1652015597 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/Editor/RigNamingConventionDrawer.cs b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/Editor/RigNamingConventionDrawer.cs new file mode 100644 index 0000000..5eb9d51 --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/Editor/RigNamingConventionDrawer.cs @@ -0,0 +1,58 @@ +using UnityEditor; +using UnityEngine; + +namespace RekornTools.Avatar.Editor +{ + [CustomPropertyDrawer(typeof(RigNamingConvention))] + public sealed class RigNamingConventionDrawer : BasePropertyDrawer + { + protected override void DrawProperty(Rect rect, SerializedProperty property, GUIContent _, int indent) + { + var x = rect.x; + var fullWidth = rect.width; + + rect.width = 0f; + rect.height = 0f; + rect.AppendHeight(EditorGUIExtensions.SingleItemHeight); + + var type = property.ResolveProperty(nameof(RigNamingConvention.ModifierPosition)); + var splitter = property.ResolveProperty(nameof(RigNamingConvention.Splitter)); + var left = property.ResolveProperty(nameof(RigNamingConvention.ModifierLeft)); + var right = property.ResolveProperty(nameof(RigNamingConvention.ModifierRight)); + + DrawElement(0.3f, left); + DrawElement(0.3f, right); + DrawElement(0.2f, type); + DrawElement(0.2f, splitter); + + rect.x = x; + rect.width = fullWidth; + + rect.AppendHeight(EditorGUIExtensions.SingleItemHeight); + EditorGUI.HelpBox(rect, GetPreviewText(), MessageType.Info); + + void DrawElement(float weight, SerializedProperty prop) + { + var padding = EditorGUIUtility.standardVerticalSpacing; + rect.AppendWidth(fullWidth * weight - padding); + prop.PropertyField(rect); + rect.AppendWidth(padding); + } + + string GetPreviewText() + { + var t = type?.enumValueIndex; + var s = splitter?.stringValue; + var l = left?.stringValue; + var r = right?.stringValue; + + return t == (int)ModifierPosition.Front + ? $"Head / {l}{s}Arm / {r}{s}Leg / {r}{s}Leg.001" + : $"Head / Arm{s}{l} / Leg{s}{r} / Leg{s}{r}.001"; + } + } + + public override float GetPropertyHeight(SerializedProperty property, GUIContent _) => + EditorGUIExtensions.SingleItemHeight * 2; + } +} diff --git a/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/Editor/RigNamingConventionDrawer.cs.meta b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/Editor/RigNamingConventionDrawer.cs.meta new file mode 100644 index 0000000..7ffb1d8 --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/Editor/RigNamingConventionDrawer.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 279b4f784c124925bc94a2fd1caf4e42 +timeCreated: 1652010490 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/MeshBonePairs.cs b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/MeshBonePairs.cs new file mode 100644 index 0000000..4bc4192 --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/MeshBonePairs.cs @@ -0,0 +1,49 @@ +#if UNITY_EDITOR +using System.Linq; +using JetBrains.Annotations; +using UnityEditor; +using UnityEngine; + +namespace RekornTools.Avatar +{ + [ExecuteInEditMode] + public sealed class MeshBonePairs : MonoBehaviour + { + // ReSharper disable AutoPropertyCanBeMadeGetOnly.Local + [field: SerializeField] [NotNull] public SkinnedMeshRenderers Meshes { get; private set; } = new SkinnedMeshRenderers(); + [field: SerializeField] [NotNull] public Transforms Bones { get; private set; } = new Transforms(); + // ReSharper restore AutoPropertyCanBeMadeGetOnly.Local + + public void SelectAll() + { + var selection = new Object[] { }; + + if (Meshes.TryGetSelections(out var meshSelections)) + selection = selection.Concat(meshSelections).ToArray(); + if (Bones.TryGetSelections(out var boneSelections)) + selection = selection.Concat(boneSelections).ToArray(); + + if (selection.Length > 0) Selection.objects = selection; + } + + public void ClearAll() + { + ClearMeshes(); + ClearBones(); + } + + public void DestroyAll() + { + DestroyMeshes(); + DestroyBones(); + } + + public void SelectMeshes() => Meshes.SelectComponents(); + public void SelectBones() => Bones.SelectComponents(); + public void ClearMeshes() => this.UndoableAction(() => Meshes.Clear()); + public void ClearBones() => this.UndoableAction(() => Bones.Clear()); + public void DestroyMeshes() => this.UndoableAction(() => Meshes.DestroyItems()); + public void DestroyBones() => this.UndoableAction(() => Bones.DestroyItems()); + } +} +#endif diff --git a/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/MeshBonePairs.cs.meta b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/MeshBonePairs.cs.meta new file mode 100644 index 0000000..e88e935 --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/MeshBonePairs.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 2a8d66205c7440078d1f5d62a41e3baa +timeCreated: 1647268279 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/MeshOptimizer.cs b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/MeshOptimizer.cs new file mode 100644 index 0000000..757b163 --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/MeshOptimizer.cs @@ -0,0 +1,95 @@ +#if UNITY_EDITOR +using System.Diagnostics.CodeAnalysis; +using JetBrains.Annotations; +using UnityEngine; + +namespace RekornTools.Avatar +{ + [ExecuteInEditMode] + public sealed class MeshOptimizer : MonoBehaviour + { + [SerializeField] Transform parent; + [SerializeField] SkinnedMeshRenderers meshes = new SkinnedMeshRenderers(); + [SerializeField] Transform anchorOverride; + [SerializeField] Bounds boundingBox = new Bounds(Vector3.zero, Vector3.one * 2); + + [SerializeField] [HideInInspector] Transform _prevParent; + + void Awake() => Refresh(); + + void OnValidate() + { + if (_prevParent != parent) Refresh(); + } + + [Button] + void Refresh() + { + _prevParent = parent; + meshes?.Initialize(parent); + } + + void OnDrawGizmosSelected() + { + if (meshes == null) return; + foreach (var mesh in meshes) + { + if (mesh == null) continue; + + var prevBounds = mesh.localBounds; + { + DrawBounds(mesh, Color.yellow); + + mesh.localBounds = boundingBox; + RepaintRenderer(mesh); + + DrawBounds(mesh, Color.green); + } + mesh.localBounds = prevBounds; + } + } + + static void DrawBounds([System.Diagnostics.CodeAnalysis.NotNull] Renderer renderer, Color color) + { + var rotation = renderer.transform.rotation; + if (renderer is SkinnedMeshRenderer) + { + var transformRoot = renderer.transform.root; + if (transformRoot != null) + rotation = transformRoot.rotation; + } + + var bounds = renderer.bounds; + var matrix = Matrix4x4.TRS(bounds.center, rotation, bounds.size); + Gizmos.matrix = matrix; + Gizmos.color = color; + Gizmos.DrawWireCube(Vector3.zero, Vector3.one); + } + + [SuppressMessage("ReSharper", "Unity.InefficientPropertyAccess")] + static void RepaintRenderer([System.Diagnostics.CodeAnalysis.NotNull] Renderer renderer) + { + renderer.enabled = false; + renderer.enabled = true; + } + + [Button] + void Optimize() + { + if (meshes == null) return; + foreach (var mesh in meshes) + { + if (mesh == null) continue; + mesh.UndoableAction(() => + { + mesh.probeAnchor = anchorOverride; + mesh.localBounds = boundingBox; + mesh.updateWhenOffscreen = false; + mesh.skinnedMotionVectors = false; + mesh.allowOcclusionWhenDynamic = true; + }); + } + } + } +} +#endif diff --git a/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/MeshOptimizer.cs.meta b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/MeshOptimizer.cs.meta new file mode 100644 index 0000000..22d5205 --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/MeshOptimizer.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 25aa88844e30426d955b4cd11ffc1b85 +timeCreated: 1647594398 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/RigNamingConvention.cs b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/RigNamingConvention.cs new file mode 100644 index 0000000..ef2a0b3 --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/RigNamingConvention.cs @@ -0,0 +1,125 @@ +using System; +using JetBrains.Annotations; +using UnityEngine; + +namespace RekornTools.Avatar +{ + public enum ModifierPosition + { + Front, + End, + } + + public enum ModifierType + { + None, + Both, + Left, + Right, + } + + [Serializable] + public struct RigNamingConvention + { + public static RigNamingConvention Default = new RigNamingConvention + { + ModifierPosition = ModifierPosition.End, + Splitter = "_", + ModifierLeft = "L", + ModifierRight = "R", + }; + + [field: SerializeField] public ModifierPosition ModifierPosition { get; private set; } + [field: SerializeField] [CanBeNull] public string Splitter { get; private set; } + [field: SerializeField] [CanBeNull] public string ModifierLeft { get; private set; } + [field: SerializeField] [CanBeNull] public string ModifierRight { get; private set; } + + public RigNamingConvention(ModifierPosition modifierPosition, [CanBeNull] string splitter, [CanBeNull] string modifierLeft, [CanBeNull] string modifierRight) + { + ModifierPosition = modifierPosition; + Splitter = splitter; + ModifierLeft = modifierLeft; + ModifierRight = modifierRight; + } + + [NotNull] public string FrontLeft => $"{ModifierLeft}{Splitter}"; + [NotNull] public string FrontRight => $"{ModifierRight}{Splitter}"; + [NotNull] public string EndLeft => $"{Splitter}{ModifierLeft}"; + [NotNull] public string EndRight => $"{Splitter}{ModifierRight}"; + + public string GetModifier(ModifierType type) + { + var pos = ModifierPosition; + if (pos == ModifierPosition.Front && type == ModifierType.Left) return FrontLeft; + if (pos == ModifierPosition.Front && type == ModifierType.Right) return FrontRight; + if (pos == ModifierPosition.End && type == ModifierType.Left) return EndLeft; + if (pos == ModifierPosition.End && type == ModifierType.Right) return EndRight; + return null; + } + + public ModifierType GetModifierType([NotNull] string name) + { + var isLeft = false; + var isRight = false; + + if (ModifierPosition == ModifierPosition.Front) + { + isLeft = name.Contains(FrontLeft); + isRight = name.Contains(FrontRight); + } + else + { + isLeft = name.Contains(EndLeft); + isRight = name.Contains(EndRight); + } + + if (isLeft && isRight) return ModifierType.Both; + else if (isLeft) return ModifierType.Left; + else if (isRight) return ModifierType.Right; + else return ModifierType.None; + } + + [NotNull] + public static string Convert([NotNull] string name, RigNamingConvention src, RigNamingConvention dst) + { + var type = src.GetModifierType(name); + + switch (type) + { + case ModifierType.None: + return name; + case ModifierType.Both: + Debug.LogWarning($"Bone name {name} contains both left and right modifiers. Skipping."); + return name; + case ModifierType.Left: + case ModifierType.Right: + var from = src.GetModifier(type) ?? throw new ArgumentException("Unknown modifier type."); + var to = dst.GetModifier(type) ?? throw new ArgumentException("Unknown modifier type."); + return ReplaceModifier(name, from, to, src.ModifierPosition, dst.ModifierPosition); + default: + throw new ArgumentException("Unknown modifier type."); + } + } + + + [NotNull] + static string ReplaceModifier([NotNull] string name, [NotNull] string from, [NotNull] string to, ModifierPosition srcPosition, ModifierPosition dstPosition) + { + if (srcPosition == dstPosition) + { + return name.Replace(from, to); + } + else + { + if (srcPosition == ModifierPosition.Front) + { + return name.Replace(from, null) + to; + } + else + { + return to + name.Replace(from, null); + } + } + } + } +} diff --git a/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/RigNamingConvention.cs.meta b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/RigNamingConvention.cs.meta new file mode 100644 index 0000000..5232ef7 --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/RigNamingConvention.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 14b6076337fd4c8683016eb662323a15 +timeCreated: 1652010530 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/RigPair.cs b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/RigPair.cs new file mode 100644 index 0000000..92a32fb --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/RigPair.cs @@ -0,0 +1,14 @@ +using System; +using UnityEngine; + +namespace RekornTools.Avatar +{ + public sealed class RigPair : RigPair { } + + [Serializable] + public class RigPair + { + [field: SerializeField] public T Target { get; private set; } + [field: SerializeField] public T Source { get; private set; } + } +} diff --git a/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/RigPair.cs.meta b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/RigPair.cs.meta new file mode 100644 index 0000000..4e72efa --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/RigPair.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: f21f9635a0f244929d34173bf8bad8e0 +timeCreated: 1652015576 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/_Generic.cs b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/_Generic.cs new file mode 100644 index 0000000..3f10af3 --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/_Generic.cs @@ -0,0 +1,19 @@ +using System; +using UnityEngine; + +namespace RekornTools.Avatar +{ +#region List + [Serializable] public sealed class SkinnedMeshRenderers : ComponentList { } + + [Serializable] public sealed class Transforms : ComponentList { } + + [Serializable] public sealed class BonePairs : SerializedList { } + + [Serializable] public sealed class NamePairs : SerializedList { } + + [Serializable] public sealed class BonePair : RigPair { } + + [Serializable] public sealed class NamePair : RigPair { } +#endregion // List +} diff --git a/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/_Generic.cs.meta b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/_Generic.cs.meta new file mode 100644 index 0000000..db443d8 --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/SkinnedMeshTools/_Generic.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 87c24b26e4ff49d19fef1a3bd6179aa3 +timeCreated: 1648312351 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Components/TextureOptimizer.meta b/Assets/RekornTools/Avatar/Components/TextureOptimizer.meta new file mode 100644 index 0000000..cbf5557 --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/TextureOptimizer.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: c74404ee945c407d89bcc4399747bca0 +timeCreated: 1649570418 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Components/TextureOptimizer/AssetManager.cs b/Assets/RekornTools/Avatar/Components/TextureOptimizer/AssetManager.cs new file mode 100644 index 0000000..4b651fe --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/TextureOptimizer/AssetManager.cs @@ -0,0 +1,62 @@ +#if UNITY_EDITOR +using System.Linq; +using JetBrains.Annotations; +using UnityEditor; +using UnityEngine; + +namespace RekornTools.Avatar +{ + [ExecuteInEditMode] + public sealed class AssetManager : MonoBehaviour, IValidate + { + [SerializeField] public Transform Parent; + + [SerializeField] [ReadOnlyList] [NotNull] public Renderers Renderers = new Renderers(); + [SerializeField] [ReadOnlyList] [NotNull] public Materials Materials = new Materials(); + [SerializeField] [ReadOnlyList] [NotNull] public Shaders Shaders = new Shaders(); + [SerializeField] [ReadOnlyList] [NotNull] public Textures Textures = new Textures(); + + [SerializeField] [HideInInspector] Transform _prevParent; + + void Awake() => Refresh(); + + public void OnValidate() + { + if (_prevParent != Parent) Refresh(); + } + + [Button] + public void Refresh() + { + _prevParent = Parent; + Renderers.Initialize(Parent); + + Materials.Clear(); + Shaders.Clear(); + Textures.Clear(); + + foreach (var (material, shader) in + from r in Renderers + from material in r.sharedMaterials + select (material, material.shader)) + { + if (!Materials.Contains(material)) Materials.Add(material); + if (!Shaders.Contains(shader)) Shaders.Add(shader); + + AppendTexturesList(material, shader); + } + } + + void AppendTexturesList([CanBeNull] Material material, [CanBeNull] Shader shader) + { + if (material == null || shader == null) return; + for (var i = 0; i < ShaderUtil.GetPropertyCount(shader); i++) + { + if (ShaderUtil.GetPropertyType(shader, i) != ShaderUtil.ShaderPropertyType.TexEnv) continue; + var texture = material.GetTexture(ShaderUtil.GetPropertyName(shader, i)); + if (texture != null && !Textures.Contains(texture)) Textures.Add(texture); + } + } + } +} +#endif diff --git a/Assets/RekornTools/Avatar/Components/TextureOptimizer/AssetManager.cs.meta b/Assets/RekornTools/Avatar/Components/TextureOptimizer/AssetManager.cs.meta new file mode 100644 index 0000000..54e4876 --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/TextureOptimizer/AssetManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9c2ae58bf68685849a8aea8c5e5de75e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Avatar/Components/TextureOptimizer/Editor.meta b/Assets/RekornTools/Avatar/Components/TextureOptimizer/Editor.meta new file mode 100644 index 0000000..6973fa7 --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/TextureOptimizer/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 27bc343648a6c9849b4f183357667f96 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Avatar/Components/TextureOptimizer/Editor/AssetManagerEditor.cs b/Assets/RekornTools/Avatar/Components/TextureOptimizer/Editor/AssetManagerEditor.cs new file mode 100644 index 0000000..c1411c2 --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/TextureOptimizer/Editor/AssetManagerEditor.cs @@ -0,0 +1,40 @@ +using JetBrains.Annotations; +using UnityEditor; +using UnityEngine; +using static RekornTools.Avatar.Editor.EditorGUILayoutExtensions; +using static UnityEditor.EditorGUILayout; + +namespace RekornTools.Avatar.Editor +{ + [CustomEditor(typeof(AssetManager))] + public sealed class AssetManagerEditor : BaseEditor + { + bool _renderersFoldout; + bool _materialsFoldout; + bool _shadersFoldout; + bool _texturesFoldout; + + protected override void Draw(AssetManager t) + { + t.Parent = ObjectField("Parent", t.Parent, true); + + DrawLists(ref _renderersFoldout, nameof(AssetManager.Renderers), t.Renderers); + DrawLists(ref _materialsFoldout, nameof(AssetManager.Materials), t.Materials); + DrawLists(ref _shadersFoldout, nameof(AssetManager.Shaders), t.Shaders); + DrawLists(ref _texturesFoldout, nameof(AssetManager.Textures), t.Textures); + + if (GUILayout.Button("Refresh")) t.Refresh(); + } + + void DrawLists(ref bool foldout, [NotNull] string property, [NotNull] ObjectList list) where T : Object + { + BeginHorizontal(); + { + foldout = Foldout(foldout, typeof(T).Name); + if (GUILayout.Button("Select All")) list.SelectComponents(); + } + EndHorizontal(); + if (foldout) PropertyField(serializedObject.ResolveProperty(property), true); + } + } +} diff --git a/Assets/RekornTools/Avatar/Components/TextureOptimizer/Editor/AssetManagerEditor.cs.meta b/Assets/RekornTools/Avatar/Components/TextureOptimizer/Editor/AssetManagerEditor.cs.meta new file mode 100644 index 0000000..3c7b307 --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/TextureOptimizer/Editor/AssetManagerEditor.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: bc4868172d3a484d88f546bd3ddda028 +timeCreated: 1651999120 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Components/TextureOptimizer/Editor/RekornTools.Avatar.Editor.asmref b/Assets/RekornTools/Avatar/Components/TextureOptimizer/Editor/RekornTools.Avatar.Editor.asmref new file mode 100644 index 0000000..7de191c --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/TextureOptimizer/Editor/RekornTools.Avatar.Editor.asmref @@ -0,0 +1,3 @@ +{ + "reference": "GUID:3b7023146530b954c921ee55ab65dbff" +} \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Components/TextureOptimizer/Editor/RekornTools.Avatar.Editor.asmref.meta b/Assets/RekornTools/Avatar/Components/TextureOptimizer/Editor/RekornTools.Avatar.Editor.asmref.meta new file mode 100644 index 0000000..d76ceb4 --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/TextureOptimizer/Editor/RekornTools.Avatar.Editor.asmref.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b97982f805b37b746876c09880c83db3 +AssemblyDefinitionReferenceImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Avatar/Components/TextureOptimizer/Editor/ShaderPropertyDrawer.cs b/Assets/RekornTools/Avatar/Components/TextureOptimizer/Editor/ShaderPropertyDrawer.cs new file mode 100644 index 0000000..122179e --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/TextureOptimizer/Editor/ShaderPropertyDrawer.cs @@ -0,0 +1,33 @@ +using UnityEditor; +using UnityEngine; + +namespace RekornTools.Avatar.Editor +{ + [CustomPropertyDrawer(typeof(ShaderProperty))] + public sealed class ShaderPropertyDrawer : BasePropertyDrawer + { + protected override void DrawProperty(Rect rect, SerializedProperty property, GUIContent _, int __) + { + var padding = EditorGUIUtility.standardVerticalSpacing; + var fullWidth = rect.width; + + rect.width = 0f; + + DrawElement(0.15f, nameof(ShaderProperty.Shader)); + DrawElement(0.1f, nameof(ShaderProperty.Index)); + DrawElement(0.15f, nameof(ShaderProperty.Type)); + DrawElement(0.4f, nameof(ShaderProperty.Name)); + DrawElement(0.2f, nameof(ShaderProperty.TextureType), false); + + void DrawElement(float weight, string propertyName, bool isReadOnly = true) + { + if (propertyName == null) return; + + var prop = property.ResolveProperty(propertyName); + rect.AppendWidth(fullWidth * weight - padding); + prop.DisabledPropertyField(rect, isReadOnly); + rect.AppendWidth(padding); + } + } + } +} diff --git a/Assets/RekornTools/Avatar/Components/TextureOptimizer/Editor/ShaderPropertyDrawer.cs.meta b/Assets/RekornTools/Avatar/Components/TextureOptimizer/Editor/ShaderPropertyDrawer.cs.meta new file mode 100644 index 0000000..b592f7a --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/TextureOptimizer/Editor/ShaderPropertyDrawer.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 24cd6b4b6ad94fcdb9b936ea07df86c4 +timeCreated: 1647777014 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Components/TextureOptimizer/Editor/TexturePropertiesByShaderDrawer.cs b/Assets/RekornTools/Avatar/Components/TextureOptimizer/Editor/TexturePropertiesByShaderDrawer.cs new file mode 100644 index 0000000..34483d8 --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/TextureOptimizer/Editor/TexturePropertiesByShaderDrawer.cs @@ -0,0 +1,46 @@ +using JetBrains.Annotations; +using UnityEditor; +using UnityEngine; + +namespace RekornTools.Avatar.Editor +{ + [CustomPropertyDrawer(typeof(TexturePropertiesByShader))] + public sealed class TexturePropertiesByShaderDrawer : SerializedKeyValueDrawer + { + [NotNull] readonly ReorderableListHelper _listHelper = new ReorderableListHelper(SerializedList.FieldName, true); + + protected override void DrawProperty(Rect rect, SerializedProperty property, GUIContent _, int indent) + { + var helper = Helper.Update(property); + var key = helper.Key; + var value = helper.Value; + + rect.ApplyIndent(++indent); + var foldoutWidth = 10f; + var keyWidth = rect.width - foldoutWidth; + + rect.width = 0f; + rect.height = helper.KeyHeight; + + rect.AppendWidth(foldoutWidth); + property.isExpanded = EditorGUI.Foldout(rect, property.isExpanded, GUIContent.none); + + rect.AppendWidth(keyWidth); + key.DisabledPropertyField(rect); + + if (property.isExpanded) + { + rect.AppendHeight(helper.ValueHeight); + _listHelper.Update(value).Draw(rect); + } + } + + public override float GetPropertyHeight(SerializedProperty property, GUIContent _) + { + var helper = Helper.Update(property); + return property?.isExpanded ?? false + ? helper.ValueHeight + : helper.KeyHeight; + } + } +} diff --git a/Assets/RekornTools/Avatar/Components/TextureOptimizer/Editor/TexturePropertiesByShaderDrawer.cs.meta b/Assets/RekornTools/Avatar/Components/TextureOptimizer/Editor/TexturePropertiesByShaderDrawer.cs.meta new file mode 100644 index 0000000..93cca00 --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/TextureOptimizer/Editor/TexturePropertiesByShaderDrawer.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 37bf0b354c0846e39f5f593c120db2fd +timeCreated: 1651138620 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Components/TextureOptimizer/Editor/TexturePropertyDrawer.cs b/Assets/RekornTools/Avatar/Components/TextureOptimizer/Editor/TexturePropertyDrawer.cs new file mode 100644 index 0000000..424f474 --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/TextureOptimizer/Editor/TexturePropertyDrawer.cs @@ -0,0 +1,31 @@ +using UnityEditor; +using UnityEngine; + +namespace RekornTools.Avatar.Editor +{ + [CustomPropertyDrawer(typeof(TextureProperty))] + public sealed class TexturePropertyDrawer : BasePropertyDrawer + { + protected override void DrawProperty(Rect rect, SerializedProperty property, GUIContent _, int __) + { + var padding = EditorGUIUtility.standardVerticalSpacing; + var fullWidth = rect.width; + + rect.width = 0f; + + DrawElement(0.2f, nameof(ShaderProperty.Index)); + DrawElement(0.6f, nameof(ShaderProperty.Name)); + DrawElement(0.2f, nameof(ShaderProperty.TextureType), false); + + void DrawElement(float weight, string propertyName, bool isReadOnly = true) + { + if (propertyName == null) return; + + var prop = property.ResolveProperty(propertyName); + rect.AppendWidth(fullWidth * weight - padding); + prop.DisabledPropertyField(rect, isReadOnly); + rect.AppendWidth(padding); + } + } + } +} diff --git a/Assets/RekornTools/Avatar/Components/TextureOptimizer/Editor/TexturePropertyDrawer.cs.meta b/Assets/RekornTools/Avatar/Components/TextureOptimizer/Editor/TexturePropertyDrawer.cs.meta new file mode 100644 index 0000000..fd7ac17 --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/TextureOptimizer/Editor/TexturePropertyDrawer.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: c89824b979c0494ca396f2f9255207d0 +timeCreated: 1651137470 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Components/TextureOptimizer/ShaderProperty.cs b/Assets/RekornTools/Avatar/Components/TextureOptimizer/ShaderProperty.cs new file mode 100644 index 0000000..0f7192a --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/TextureOptimizer/ShaderProperty.cs @@ -0,0 +1,50 @@ +using System; +using JetBrains.Annotations; +using UnityEngine; +using UnityEngine.Rendering; + +namespace RekornTools.Avatar +{ + [Serializable] + public class TextureProperty : ShaderProperty + { + public TextureProperty([NotNull] Shader shader, int index, ShaderPropertyType type, [NotNull] string name) : base(shader, index, type, name) { } + + public TextureProperty([NotNull] Shader shader, int index) : base(shader, index) { } + } + + [Serializable] + public class ShaderProperty + { + [field: SerializeField] public Shader Shader { get; private set; } + [field: SerializeField] public int Index { get; private set; } + [field: SerializeField] public ShaderPropertyType Type { get; private set; } + [field: SerializeField] public string Name { get; private set; } + [field: SerializeField] public TextureType TextureType { get; set; } + + public ShaderProperty([NotNull] Shader shader, int index, ShaderPropertyType type, [NotNull] string name) + { + Shader = shader; + Index = index; + Type = type; + Name = name; + + if (type == ShaderPropertyType.Texture) TextureType = AssumeTextureType(name); + } + + public ShaderProperty([NotNull] Shader shader, int index) : + this(shader, index, shader.GetPropertyType(index), shader.GetPropertyName(index) ?? "null") { } + + static TextureType AssumeTextureType([NotNull] string name) + { + var token = name.ToLower(); + + if (token.Contains("normal")) return TextureType.Normal; + if (token.Contains("emissi")) return TextureType.Emissive; + if (token.Contains("sample") || token.Contains("pos")) return TextureType.Sampler; + if (token.Contains("mask") || token.Contains("map")) return TextureType.Mask; + + return TextureType.Default; + } + } +} diff --git a/Assets/RekornTools/Avatar/Components/TextureOptimizer/ShaderProperty.cs.meta b/Assets/RekornTools/Avatar/Components/TextureOptimizer/ShaderProperty.cs.meta new file mode 100644 index 0000000..fb54f57 --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/TextureOptimizer/ShaderProperty.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 6377e8b9104b46b8b6ce76e326d14812 +timeCreated: 1647783353 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Components/TextureOptimizer/TextureOptimizer.cs b/Assets/RekornTools/Avatar/Components/TextureOptimizer/TextureOptimizer.cs new file mode 100644 index 0000000..ea03b5f --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/TextureOptimizer/TextureOptimizer.cs @@ -0,0 +1,164 @@ +#if UNITY_EDITOR +using System.Linq; +using JetBrains.Annotations; +using UnityEditor; +using UnityEngine; + +namespace RekornTools.Avatar +{ + [ExecuteInEditMode] + public sealed class TextureOptimizer : MonoBehaviour + { + [Header("Target")] + [SerializeField] Transform _parent; + [SerializeField] [NotNull] Renderers _meshes = new Renderers(); + + [Header("Textures")] + [SerializeField] TexturePropertiesTable _propertiesTable; + [SerializeField] [ReadOnlyList] [ItemNotSpan] [NotNull] TexturesMapByType _texturesMap = new TexturesMapByType(); + + [Header("Optimizer")] + [SerializeField] TextureOptimizerSettings _optimizerSettings; + + [SerializeField] [HideInInspector] Transform _prevParent; + [SerializeField] [HideInInspector] TexturePropertiesTable _prevTable; + + void Awake() => _meshes.Initialize(_parent); + + void OnValidate() + { + if (_prevParent != _parent || _prevTable != _propertiesTable) Refresh(); + } + + [Button] + void Refresh() + { + _prevParent = _parent; + _meshes.Initialize(_parent); + + _prevTable = _propertiesTable; + ResetTexturesMap(); + AssignTexturesMap(); + } + + void ResetTexturesMap() + { + _texturesMap.Clear(); + _texturesMap.MatchDictionaryKey(_ => new Textures()); + _texturesMap.Remove(TextureType.Ignore); + } + + void AssignTexturesMap() + { + if (_propertiesTable == null) return; + foreach (var properties in _propertiesTable.TexturePropertiesMap.Values) + { + if (properties == null) continue; + foreach (var property in properties) + { + if (property == null) continue; + AssignTextureProperty(property); + } + } + } + + void AssignTextureProperty([NotNull] ShaderProperty property) + { + var type = property.TextureType; + if (type == TextureType.Ignore) return; + _texturesMap[type]?.AddRange(GetTextureList(property)); + } + + [CanBeNull] + Textures GetTextureList([NotNull] ShaderProperty property) + { + var list = new Textures(); + foreach (var mesh in _meshes) + { + if (mesh == null) continue; + AddTextures(mesh.sharedMaterials); + } + + return list.Count == 0 ? null : list; + + void AddTextures(Material[] materials) + { + if (materials == null) return; + foreach (var material in materials) + if (TryFindMatchingTexture(material, property, out var texture)) + AppendTexture(texture); + } + + void AppendTexture(Texture texture) + { + if (!list.Contains(texture)) list.Add(texture); + } + } + + bool TryFindMatchingTexture([CanBeNull] Material material, [NotNull] ShaderProperty property, [CanBeNull] out Texture texture) + { + texture = null; + if (material == null) return false; + if (material.shader != property.Shader) return false; + if (!material.HasProperty(property.Name)) return false; + + texture = material.GetTexture(property.Name); + if (texture == null) return false; + if (IsTextureExist(texture)) return false; + + return true; + } + + bool IsTextureExist([NotNull] Texture texture) => + _texturesMap.Any(x => x.Value?.Contains(texture) == true); + + [Button] + void Optimize() + { + if (_propertiesTable != null) _propertiesTable.UpdateTable(); + + if (_optimizerSettings == null) + { + this.ShowConfirmDialog("You need to set the optimizer settings first."); + return; + } + + if (!EditorUtility.DisplayDialog("Warning" + , "This operation will reimport all textures from list. " + + "This operation can't be undone, and takes huge amount of time." + , "Proceed" + , "Abort")) return; + + ApplyPreset(_texturesMap, _optimizerSettings.PresetMap); + } + + void ApplyPreset([NotNull] TexturesMapByType texturesMapByType, [NotNull] TexturePresetMapByType presets) + { + var count = 0; + var prevSize = new AssetSize(0L, 0L); + var newSize = new AssetSize(0L, 0L); + + foreach (var map in texturesMapByType) + { + if (!presets.TryGetValue(map.Key, out var preset)) continue; + if (preset == null) continue; + if (map.Value == null) continue; + + foreach (var texture in map.Value) + { + count++; + prevSize += AssetSize.GetAssetSize(texture); + AssetHelper.ApplyPreset(texture, preset); + newSize += AssetSize.GetAssetSize(texture); + } + } + + var savedSize = newSize - prevSize; + this.ShowConfirmDialog($"Total {count} textures optimized.\n" + + $"[Before] {prevSize.ToString()}\n" + + $"[After] {newSize.ToString()}\n" + + $"[Saved] {savedSize.ToString()}\n"); + } + } +} +#endif diff --git a/Assets/RekornTools/Avatar/Components/TextureOptimizer/TextureOptimizer.cs.meta b/Assets/RekornTools/Avatar/Components/TextureOptimizer/TextureOptimizer.cs.meta new file mode 100644 index 0000000..9c371c1 --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/TextureOptimizer/TextureOptimizer.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 8b3cf9caebe14c7a815cfbf232f86cdd +timeCreated: 1647707466 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Components/TextureOptimizer/TextureOptimizerSettings.cs b/Assets/RekornTools/Avatar/Components/TextureOptimizer/TextureOptimizerSettings.cs new file mode 100644 index 0000000..ebf8d31 --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/TextureOptimizer/TextureOptimizerSettings.cs @@ -0,0 +1,43 @@ +using System.Collections.Generic; +using JetBrains.Annotations; +using UnityEditor; +using UnityEditor.Presets; +using UnityEngine; + +namespace RekornTools.Avatar +{ + [CreateAssetMenu(menuName = "Rekorn Tools/Texture Optimizer Settings")] + public sealed class TextureOptimizerSettings : ScriptableObject, IValidate + { + [SerializeField] [ReadOnlyList] [NotNull] + public TexturePresetMapByType PresetMap = new TexturePresetMapByType(); + + [NotNull] readonly IReadOnlyCollection _types = DictionaryExtensions.GetKeys(); + + public void OnEnable() => UpdateTable(); + + public void OnValidate() => ClearInvalidPreset(); + + void UpdateTable() + { + PresetMap.MatchDictionaryKey(_ => default); + PresetMap.Remove(TextureType.Ignore); + } + + void ClearInvalidPreset() + { + foreach (var type in _types) + { + if (type == TextureType.Ignore) continue; + if (!PresetMap.TryGetValue(type, out var preset)) continue; + if (preset == null) continue; + + if (!IsPresetTypeValid(preset, $"{nameof(UnityEditor)}.{nameof(TextureImporter)}")) + PresetMap[type] = null; + } + } + + static bool IsPresetTypeValid([NotNull] Preset preset, [NotNull] string name) => + preset.GetPresetType().GetManagedTypeName()?.Equals(name) ?? false; + } +} diff --git a/Assets/RekornTools/Avatar/Components/TextureOptimizer/TextureOptimizerSettings.cs.meta b/Assets/RekornTools/Avatar/Components/TextureOptimizer/TextureOptimizerSettings.cs.meta new file mode 100644 index 0000000..ac58ae6 --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/TextureOptimizer/TextureOptimizerSettings.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: a3f4698d610241f38d8d77c8b50f9520 +timeCreated: 1647969551 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Components/TextureOptimizer/TexturePropertiesTable.cs b/Assets/RekornTools/Avatar/Components/TextureOptimizer/TexturePropertiesTable.cs new file mode 100644 index 0000000..b6f95e7 --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/TextureOptimizer/TexturePropertiesTable.cs @@ -0,0 +1,51 @@ +using System.Linq; +using JetBrains.Annotations; +using UnityEngine; +using UnityEngine.Rendering; + +namespace RekornTools.Avatar +{ + [CreateAssetMenu(menuName = "Rekorn Tools/Texture Properties Table")] + public sealed class TexturePropertiesTable : ScriptableObject + { + [SerializeField] [ReadOnlyList] [ItemNotSpan] [NotNull] + public TexturePropertiesMapByShader TexturePropertiesMap = new TexturePropertiesMapByShader(); + + public void OnEnable() => UpdateTable(); + + [Button] + public void UpdateTable() + { + var shaders = ShaderPropertyExtensions.AllUserShadersInProject?.ToList(); + if (shaders == null) return; + + TexturePropertiesMap.MatchDictionaryKey(shaders, GetTexturePropertyList); + } + + [Button] + public void ResetTable() + { + TexturePropertiesMap.Clear(); + UpdateTable(); + } + + [CanBeNull] + public static TextureProperties GetTexturePropertyList([CanBeNull] Shader shader) + { + if (shader == null) return null; + + var count = shader.GetPropertyCount(); + if (count == 0) return null; + + var properties = new TextureProperties(); + for (var i = 0; i < count; i++) + { + if (shader.GetPropertyFlags(i) == ShaderPropertyFlags.HideInInspector) continue; + if (shader.GetPropertyType(i) != ShaderPropertyType.Texture) continue; + properties.Add(new TextureProperty(shader, i)); + } + + return properties.Count == 0 ? null : properties; + } + } +} diff --git a/Assets/RekornTools/Avatar/Components/TextureOptimizer/TexturePropertiesTable.cs.meta b/Assets/RekornTools/Avatar/Components/TextureOptimizer/TexturePropertiesTable.cs.meta new file mode 100644 index 0000000..53f19a4 --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/TextureOptimizer/TexturePropertiesTable.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 89d3ec4237704783bffc3ea47b9602ba +timeCreated: 1649259700 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Components/TextureOptimizer/TextureType.cs b/Assets/RekornTools/Avatar/Components/TextureOptimizer/TextureType.cs new file mode 100644 index 0000000..5e2f583 --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/TextureOptimizer/TextureType.cs @@ -0,0 +1,15 @@ +namespace RekornTools.Avatar +{ + public enum TextureType + { + Ignore, + Default, + Opaque, + Alpha, + Emissive, + Normal, + Mask, + Sampler, + Icon, + } +} diff --git a/Assets/RekornTools/Avatar/Components/TextureOptimizer/TextureType.cs.meta b/Assets/RekornTools/Avatar/Components/TextureOptimizer/TextureType.cs.meta new file mode 100644 index 0000000..207f98b --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/TextureOptimizer/TextureType.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: a195c1996f2d4f5fa94918055616049d +timeCreated: 1647969618 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Components/TextureOptimizer/_Generic.cs b/Assets/RekornTools/Avatar/Components/TextureOptimizer/_Generic.cs new file mode 100644 index 0000000..a920a9a --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/TextureOptimizer/_Generic.cs @@ -0,0 +1,38 @@ +using System; +using UnityEditor.Presets; +using UnityEngine; + +namespace RekornTools.Avatar +{ +#region BasicList + [Serializable] public sealed class Materials : ObjectList { } + + [Serializable] public sealed class Shaders : ObjectList { } + + [Serializable] public sealed class Textures : ObjectList { } +#endregion // BasicList + +#region List + [Serializable] public sealed class Renderers : ComponentList { } + + [Serializable] public sealed class TextureProperties : SerializedList { } + + [Serializable] public sealed class ShaderProperties : SerializedList { } +#endregion // List + +#region Dictionary + [Serializable] public sealed class TexturePresetMapByType : SerializedDictionary { } + + [Serializable] public sealed class TexturesMapByType : SerializedDictionary { } + + [Serializable] public sealed class TexturePropertiesMapByShader : SerializedDictionary { } +#endregion // Dictionary + +#region KeyValue + [Serializable] public sealed class TexturePresetByType : HorizontalKeyValue { } + + [Serializable] public sealed class TexturesByType : HorizontalKeyValue { } + + [Serializable] public sealed class TexturePropertiesByShader : SerializedKeyValue { } +#endregion // KeyValue +} diff --git a/Assets/RekornTools/Avatar/Components/TextureOptimizer/_Generic.cs.meta b/Assets/RekornTools/Avatar/Components/TextureOptimizer/_Generic.cs.meta new file mode 100644 index 0000000..5736023 --- /dev/null +++ b/Assets/RekornTools/Avatar/Components/TextureOptimizer/_Generic.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 23146dc6476945f5a8e68d26668fb2ab +timeCreated: 1649590899 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Core.meta b/Assets/RekornTools/Avatar/Core.meta new file mode 100644 index 0000000..433700c --- /dev/null +++ b/Assets/RekornTools/Avatar/Core.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 29a60d6815d0ef34cb350ccb2de0dd06 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Avatar/Core/Attribute.meta b/Assets/RekornTools/Avatar/Core/Attribute.meta new file mode 100644 index 0000000..4919757 --- /dev/null +++ b/Assets/RekornTools/Avatar/Core/Attribute.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: f1d673a55cf464346bbd91d1668d7408 +timeCreated: 1647965920 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Core/Attribute/ButtonAttribute.cs b/Assets/RekornTools/Avatar/Core/Attribute/ButtonAttribute.cs new file mode 100644 index 0000000..d49c813 --- /dev/null +++ b/Assets/RekornTools/Avatar/Core/Attribute/ButtonAttribute.cs @@ -0,0 +1,7 @@ +using System; + +namespace RekornTools.Avatar +{ + [AttributeUsage(AttributeTargets.Method)] + public sealed class ButtonAttribute : Attribute { } +} diff --git a/Assets/RekornTools/Avatar/Core/Attribute/ButtonAttribute.cs.meta b/Assets/RekornTools/Avatar/Core/Attribute/ButtonAttribute.cs.meta new file mode 100644 index 0000000..964dfc7 --- /dev/null +++ b/Assets/RekornTools/Avatar/Core/Attribute/ButtonAttribute.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 4b1f8999d73645448c2b92698a946981 +timeCreated: 1651836246 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Core/Attribute/ItemNotSpanAttribute.cs b/Assets/RekornTools/Avatar/Core/Attribute/ItemNotSpanAttribute.cs new file mode 100644 index 0000000..98f590c --- /dev/null +++ b/Assets/RekornTools/Avatar/Core/Attribute/ItemNotSpanAttribute.cs @@ -0,0 +1,7 @@ +using System; + +namespace RekornTools.Avatar +{ + [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property)] + public sealed class ItemNotSpanAttribute : Attribute { } +} diff --git a/Assets/RekornTools/Avatar/Core/Attribute/ItemNotSpanAttribute.cs.meta b/Assets/RekornTools/Avatar/Core/Attribute/ItemNotSpanAttribute.cs.meta new file mode 100644 index 0000000..8ad73a0 --- /dev/null +++ b/Assets/RekornTools/Avatar/Core/Attribute/ItemNotSpanAttribute.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: f59b59bc60b84f45994be7a7a285252d +timeCreated: 1647965702 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Core/Attribute/ReadOnlyListAttribute.cs b/Assets/RekornTools/Avatar/Core/Attribute/ReadOnlyListAttribute.cs new file mode 100644 index 0000000..9b9c74f --- /dev/null +++ b/Assets/RekornTools/Avatar/Core/Attribute/ReadOnlyListAttribute.cs @@ -0,0 +1,7 @@ +using System; + +namespace RekornTools.Avatar +{ + [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property)] + public sealed class ReadOnlyListAttribute : Attribute { } +} diff --git a/Assets/RekornTools/Avatar/Core/Attribute/ReadOnlyListAttribute.cs.meta b/Assets/RekornTools/Avatar/Core/Attribute/ReadOnlyListAttribute.cs.meta new file mode 100644 index 0000000..c5a06bb --- /dev/null +++ b/Assets/RekornTools/Avatar/Core/Attribute/ReadOnlyListAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 18838e3ca6514e5b8572f939b2f476d5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Avatar/Core/ComponentList.cs b/Assets/RekornTools/Avatar/Core/ComponentList.cs new file mode 100644 index 0000000..d5c8fd0 --- /dev/null +++ b/Assets/RekornTools/Avatar/Core/ComponentList.cs @@ -0,0 +1,78 @@ +using System.Collections.Generic; +using System.Linq; +using System.Text; +using JetBrains.Annotations; +using UnityEditor; +using UnityEngine; + +namespace RekornTools.Avatar +{ + [System.Serializable] + public class ComponentList : ObjectList where T : Component + { + void ShowDialog([NotNull] string message) + { + var header = $"[{nameof(ObjectList)}<{typeof(T).Name}>]"; + Debug.LogWarning($"{header} {message}"); + EditorUtility.DisplayDialog(header, message, "Confirm"); + } + +#region UnityObject + public void DestroyItems() + { + var destroyTarget = new List(); + var destroyFailed = new StringBuilder(); + + foreach (var o in this) + { + if (o == null) + { + // ReSharper disable once ExpressionIsAlwaysNull + destroyTarget.Add(o); + } + else if (!IsObjectPrefab(o)) + { + Undo.DestroyObjectImmediate(o.gameObject); + destroyTarget.Add(o); + } + else + { + destroyFailed.Append($"{o.name}, "); + } + } + + if (destroyFailed.Length > 0) + { + var objectsList = destroyFailed.ToString().TrimEnd(',', ' '); + ShowDialog($"Failed to destroy following objects: {objectsList}\n" + + "You might need to unpack prefabs before destroy them."); + } + + RemoveRange(destroyTarget); + } + + static bool IsObjectPrefab([NotNull] Object o) => + o && PrefabUtility.GetPrefabInstanceStatus(o) == PrefabInstanceStatus.Connected; + + public void Initialize([CanBeNull] Transform parent, [CanBeNull] string keyword = null) + { + var objects = parent == null + ? GameObjectExtensions.GetAllGameObjectsInScene?.SelectMany(x => x == null ? null : x.GetComponents()) + : parent.GetComponentsInChildren(true); + + if (keyword != null && !string.IsNullOrWhiteSpace(keyword)) + objects = objects?.Where(x => x != null && x.name.Contains(keyword)); + + Initialize(objects?.Where(x => x)); + } +#endregion // UnityObject + +#region Selection + public override bool TryGetSelections(out Object[] selections) + { + selections = this.Select(x => x == null ? null : x.gameObject as Object).ToArray(); + return selections.Length != 0; + } +#endregion // Selection + } +} diff --git a/Assets/RekornTools/Avatar/Core/ComponentList.cs.meta b/Assets/RekornTools/Avatar/Core/ComponentList.cs.meta new file mode 100644 index 0000000..ca8531d --- /dev/null +++ b/Assets/RekornTools/Avatar/Core/ComponentList.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: fe3d0359e861479cb02ecd2c47cca64a +timeCreated: 1647187947 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Core/Extensions.meta b/Assets/RekornTools/Avatar/Core/Extensions.meta new file mode 100644 index 0000000..a50105a --- /dev/null +++ b/Assets/RekornTools/Avatar/Core/Extensions.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e79b2b7c27306924aa13cd7dc57fbee0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Avatar/Core/Extensions/DictionaryExtensions.cs b/Assets/RekornTools/Avatar/Core/Extensions/DictionaryExtensions.cs new file mode 100644 index 0000000..e038ed4 --- /dev/null +++ b/Assets/RekornTools/Avatar/Core/Extensions/DictionaryExtensions.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using JetBrains.Annotations; + +namespace RekornTools.Avatar +{ + public static class DictionaryExtensions + { + public static void MatchDictionaryKey([NotNull] this Dictionary target, [NotNull] Func getValue) where T : Enum => + target.MatchDictionaryKey(GetKeys(), getValue); + + public static void MatchDictionaryKey([NotNull] this Dictionary target, [NotNull] IReadOnlyCollection types, [NotNull] Func getValue) + { + var keys = target.Keys.ToList(); + var toAdd = types.Except(keys).ToList(); + var toRemove = keys.Except(types).ToList(); + + foreach (var key in toAdd) target.Add(key, getValue.Invoke(key)); + foreach (var key in toRemove) target.Remove(key); + } + + [NotNull] public static IReadOnlyCollection GetKeys() where T : Enum => + Enum.GetValues(typeof(T)).Cast().ToList(); + } +} diff --git a/Assets/RekornTools/Avatar/Core/Extensions/DictionaryExtensions.cs.meta b/Assets/RekornTools/Avatar/Core/Extensions/DictionaryExtensions.cs.meta new file mode 100644 index 0000000..9e60659 --- /dev/null +++ b/Assets/RekornTools/Avatar/Core/Extensions/DictionaryExtensions.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: b07bd8be77b54b4cbe90d413eab28d03 +timeCreated: 1651155774 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Core/Extensions/EditorExtensions.cs b/Assets/RekornTools/Avatar/Core/Extensions/EditorExtensions.cs new file mode 100644 index 0000000..31a6232 --- /dev/null +++ b/Assets/RekornTools/Avatar/Core/Extensions/EditorExtensions.cs @@ -0,0 +1,36 @@ +using System; +using JetBrains.Annotations; +using UnityEngine; +using Object = UnityEngine.Object; + + +#if UNITY_EDITOR +using UnityEditor; +#endif // UNITY_EDITOR + +namespace RekornTools.Avatar +{ + public static class EditorExtensions + { + public static void ShowConfirmDialog([NotNull] this T script, [NotNull] string message) where T : MonoBehaviour + { + var header = $"[{typeof(T)}({script.gameObject.name})]"; + Debug.LogWarning($"{header} {message}"); +#if UNITY_EDITOR + EditorUtility.DisplayDialog(header, message, "Confirm"); +#endif // UNITY_EDITOR + } + + public static void UndoableAction([NotNull] this Object target, [NotNull] Action action) => + UndoableAction(target, target.name, action); + + public static void UndoableAction([NotNull] this Object target, [NotNull] string actionName, [NotNull] Action action) + { +#if UNITY_EDITOR + Undo.RegisterCompleteObjectUndo(target, actionName); + action(); + Undo.FlushUndoRecordObjects(); +#endif // UNITY_EDITOR + } + } +} diff --git a/Assets/RekornTools/Avatar/Core/Extensions/EditorExtensions.cs.meta b/Assets/RekornTools/Avatar/Core/Extensions/EditorExtensions.cs.meta new file mode 100644 index 0000000..dbfd925 --- /dev/null +++ b/Assets/RekornTools/Avatar/Core/Extensions/EditorExtensions.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: c24484bfde984bc184d95ce33634e57b +timeCreated: 1649607325 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Core/Extensions/GameObjectExtensions.cs b/Assets/RekornTools/Avatar/Core/Extensions/GameObjectExtensions.cs new file mode 100644 index 0000000..f2756bc --- /dev/null +++ b/Assets/RekornTools/Avatar/Core/Extensions/GameObjectExtensions.cs @@ -0,0 +1,50 @@ +using System.Collections.Generic; +using System.Linq; +using JetBrains.Annotations; +using UnityEngine; + +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace RekornTools.Avatar +{ + public static class GameObjectExtensions + { + public static void BackupGameObject([NotNull] this Object obj) + { + var backup = Object.Instantiate(obj); + Undo.RegisterCreatedObjectUndo(backup, "Backup Cloth"); + } + + public static void UnpackPrefab([CanBeNull] this GameObject prefab) + { + if (PrefabUtility.GetPrefabInstanceStatus(prefab) != PrefabInstanceStatus.Connected) return; + var target = PrefabUtility.GetOutermostPrefabInstanceRoot(prefab); + PrefabUtility.UnpackPrefabInstance(target, PrefabUnpackMode.OutermostRoot, InteractionMode.UserAction); + } + + [CanBeNull] + public static IEnumerable AllGameObjectsInProject => + Resources.FindObjectsOfTypeAll(typeof(GameObject)) as GameObject[]; + + [CanBeNull] + public static IEnumerable GetAllGameObjectsInScene => + AllGameObjectsInProject?.Where(IsEditableSceneObject); + + static bool IsEditableSceneObject([CanBeNull] GameObject go) + { + if (go == null) return false; + + var root = go.transform.root; + if (root == null) root = go.transform; + +#if UNITY_EDITOR + var isStoredOnDisk = EditorUtility.IsPersistent(root); +#else + var isStoredOnDisk = false; +#endif + return !isStoredOnDisk && !(root.hideFlags == HideFlags.NotEditable || root.hideFlags == HideFlags.HideAndDontSave); + } + } +} diff --git a/Assets/RekornTools/Avatar/Core/Extensions/GameObjectExtensions.cs.meta b/Assets/RekornTools/Avatar/Core/Extensions/GameObjectExtensions.cs.meta new file mode 100644 index 0000000..79a8bb2 --- /dev/null +++ b/Assets/RekornTools/Avatar/Core/Extensions/GameObjectExtensions.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 9c43c7164e54445c8b4ac98ae09d0b19 +timeCreated: 1647276663 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Core/Extensions/ReflectionExtensions.cs b/Assets/RekornTools/Avatar/Core/Extensions/ReflectionExtensions.cs new file mode 100644 index 0000000..d270c4a --- /dev/null +++ b/Assets/RekornTools/Avatar/Core/Extensions/ReflectionExtensions.cs @@ -0,0 +1,61 @@ +using System; +using System.Reflection; +using System.Text; +using JetBrains.Annotations; + +namespace RekornTools.Avatar +{ + public static class ReflectionExtensions + { +#region Attribute + public static readonly BindingFlags Everything = ~BindingFlags.Default; + + public static (MemberInfo, Type) GetFieldOrProperty([CanBeNull] this Type type, [CanBeNull] string name) + { + if (string.IsNullOrWhiteSpace(name)) return (null, type); + + var fieldInfo = type?.GetField(name, Everything); + if (fieldInfo != null) return (fieldInfo, fieldInfo.FieldType); + + var propertyInfo = type?.GetProperty(name, Everything); + if (propertyInfo != null) return (propertyInfo, propertyInfo.PropertyType); + + return (null, type); + } +#endregion // Attribute + +#region Property + [NotNull] static readonly StringBuilder Sb = new StringBuilder(); + + [NotNull] const string AutoPropertyHeader = "<"; + [NotNull] const string AutoPropertyFooter = ">k__BackingField"; + + public static bool IsAutoProperty([NotNull] string name) => + name.StartsWith(AutoPropertyHeader, StringComparison.Ordinal) + && name.EndsWith(AutoPropertyFooter, StringComparison.Ordinal); + + [NotNull] + public static string ResolveDisplayName([NotNull] string name) + { + if (!IsAutoProperty(name)) return name; + + name = name.Remove(0, AutoPropertyHeader.Length); + name = name.Remove(name.Length - AutoPropertyFooter.Length, AutoPropertyFooter.Length); + + return name; + } + + [NotNull] + public static string ResolveFieldName([NotNull] string name) + { + if (IsAutoProperty(name)) return name; + + Sb.Clear(); + Sb.Append(AutoPropertyHeader); + Sb.Append(name); + Sb.Append(AutoPropertyFooter); + return Sb.ToString(); + } +#endregion // Property + } +} diff --git a/Assets/RekornTools/Avatar/Core/Extensions/ReflectionExtensions.cs.meta b/Assets/RekornTools/Avatar/Core/Extensions/ReflectionExtensions.cs.meta new file mode 100644 index 0000000..e2d2e00 --- /dev/null +++ b/Assets/RekornTools/Avatar/Core/Extensions/ReflectionExtensions.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: b90ac13fa7054288ac26ae16cfe31ca9 +timeCreated: 1651847493 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Core/Extensions/ShaderPropertyExtensions.cs b/Assets/RekornTools/Avatar/Core/Extensions/ShaderPropertyExtensions.cs new file mode 100644 index 0000000..8003e50 --- /dev/null +++ b/Assets/RekornTools/Avatar/Core/Extensions/ShaderPropertyExtensions.cs @@ -0,0 +1,45 @@ +using System.Collections.Generic; +using System.Linq; +using JetBrains.Annotations; +using UnityEngine; + +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace RekornTools.Avatar +{ + public static class ShaderPropertyExtensions + { + [CanBeNull] + public static IEnumerable AllUserShadersInProject => + from material in AllMaterialsInProject + let shader = material.shader + where shader != null + select shader; + + [CanBeNull] + public static IEnumerable AllMaterialsInProject => +#if UNITY_EDITOR + from guid in AssetDatabase.FindAssets("t:Material") + let path = AssetDatabase.GUIDToAssetPath(guid) + let material = AssetDatabase.LoadAssetAtPath(path) + where material != null + select material; +#else + null; +#endif + + [CanBeNull] + public static IEnumerable AllShadersInProject => +#if UNITY_EDITOR + from guid in AssetDatabase.FindAssets("t:Shader") + let path = AssetDatabase.GUIDToAssetPath(guid) + let shader = AssetDatabase.LoadAssetAtPath(path) + where shader != null + select shader; +#else + null; +#endif + } +} diff --git a/Assets/RekornTools/Avatar/Core/Extensions/ShaderPropertyExtensions.cs.meta b/Assets/RekornTools/Avatar/Core/Extensions/ShaderPropertyExtensions.cs.meta new file mode 100644 index 0000000..7a20f15 --- /dev/null +++ b/Assets/RekornTools/Avatar/Core/Extensions/ShaderPropertyExtensions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0007637d95157434a824ad5122f62b1c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Avatar/Core/Extensions/TransformExtensions.cs b/Assets/RekornTools/Avatar/Core/Extensions/TransformExtensions.cs new file mode 100644 index 0000000..5e8ae42 --- /dev/null +++ b/Assets/RekornTools/Avatar/Core/Extensions/TransformExtensions.cs @@ -0,0 +1,68 @@ +using System; +using JetBrains.Annotations; +using UnityEngine; + +namespace RekornTools.Avatar +{ + public static class TransformExtensions + { + public static void InvokeRecursive([NotNull] this Transform parent, [NotNull] Action action) + { + action.Invoke(parent); + + foreach (Transform child in parent) + { + if (child == null) continue; + child.InvokeRecursive(action); + } + } + + [CanBeNull] + public static Transform FindRecursive([NotNull] this Transform parent, [NotNull] string name) + { + if (parent.name == name) return parent; + + foreach (Transform child in parent) + { + if (child == null) continue; + if (child.name == name) return child; + var result = child.FindRecursive(name); + if (result != null) return result; + } + + return null; + } + + public static Bounds TransformBounds([NotNull] this Transform transform, Bounds localBounds) + { + var center = transform.TransformPoint(localBounds.center); + + var extents = localBounds.extents; + var axisX = transform.TransformVector(extents.x, 0, 0); + var axisY = transform.TransformVector(0, extents.y, 0); + var axisZ = transform.TransformVector(0, 0, extents.z); + + extents.x = Mathf.Abs(axisX.x) + Mathf.Abs(axisY.x) + Mathf.Abs(axisZ.x); + extents.y = Mathf.Abs(axisX.y) + Mathf.Abs(axisY.y) + Mathf.Abs(axisZ.y); + extents.z = Mathf.Abs(axisX.z) + Mathf.Abs(axisY.z) + Mathf.Abs(axisZ.z); + + return new Bounds { center = center, extents = extents }; + } + + public static Bounds InverseTransformBounds([NotNull] this Transform transform, Bounds localBounds) + { + var center = transform.InverseTransformPoint(localBounds.center); + + var extents = localBounds.extents; + var axisX = transform.InverseTransformVector(extents.x, 0, 0); + var axisY = transform.InverseTransformVector(0, extents.y, 0); + var axisZ = transform.InverseTransformVector(0, 0, extents.z); + + extents.x = Mathf.Abs(axisX.x) + Mathf.Abs(axisY.x) + Mathf.Abs(axisZ.x); + extents.y = Mathf.Abs(axisX.y) + Mathf.Abs(axisY.y) + Mathf.Abs(axisZ.y); + extents.z = Mathf.Abs(axisX.z) + Mathf.Abs(axisY.z) + Mathf.Abs(axisZ.z); + + return new Bounds { center = center, extents = extents }; + } + } +} diff --git a/Assets/RekornTools/Avatar/Core/Extensions/TransformExtensions.cs.meta b/Assets/RekornTools/Avatar/Core/Extensions/TransformExtensions.cs.meta new file mode 100644 index 0000000..cb14fe2 --- /dev/null +++ b/Assets/RekornTools/Avatar/Core/Extensions/TransformExtensions.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 926d769f1dfc4f66b1e105bfa2d67db2 +timeCreated: 1648135240 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Core/IValidate.cs b/Assets/RekornTools/Avatar/Core/IValidate.cs new file mode 100644 index 0000000..55dc0fd --- /dev/null +++ b/Assets/RekornTools/Avatar/Core/IValidate.cs @@ -0,0 +1,7 @@ +namespace RekornTools.Avatar +{ + public interface IValidate + { + void OnValidate(); + } +} \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Core/IValidate.cs.meta b/Assets/RekornTools/Avatar/Core/IValidate.cs.meta new file mode 100644 index 0000000..b9f0583 --- /dev/null +++ b/Assets/RekornTools/Avatar/Core/IValidate.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 0811a75b3d044aebae9d2b3439ccd8a5 +timeCreated: 1651128798 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Core/ObjectList.cs b/Assets/RekornTools/Avatar/Core/ObjectList.cs new file mode 100644 index 0000000..acdf157 --- /dev/null +++ b/Assets/RekornTools/Avatar/Core/ObjectList.cs @@ -0,0 +1,22 @@ +using System.Linq; +using JetBrains.Annotations; +using UnityEditor; +using UnityEngine; + +namespace RekornTools.Avatar +{ + [System.Serializable] + public class ObjectList : SerializedList where T : Object + { + public void SelectComponents() + { + if (TryGetSelections(out var selections)) Selection.objects = selections; + } + + public virtual bool TryGetSelections([NotNull] out Object[] selections) + { + selections = this.Select(x => x == null ? null : x as Object).ToArray(); + return selections.Length != 0; + } + } +} diff --git a/Assets/RekornTools/Avatar/Core/ObjectList.cs.meta b/Assets/RekornTools/Avatar/Core/ObjectList.cs.meta new file mode 100644 index 0000000..fad6c3c --- /dev/null +++ b/Assets/RekornTools/Avatar/Core/ObjectList.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 40d9a2e62dd3405f85ee17be3e922a54 +timeCreated: 1652002210 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Core/SerializedDictionary.cs b/Assets/RekornTools/Avatar/Core/SerializedDictionary.cs new file mode 100644 index 0000000..b9b1ad7 --- /dev/null +++ b/Assets/RekornTools/Avatar/Core/SerializedDictionary.cs @@ -0,0 +1,44 @@ +using System; +using System.Collections.Generic; +using JetBrains.Annotations; +using UnityEngine; + +namespace RekornTools.Avatar +{ + public sealed class SerializedDictionary : SerializedDictionary + { + [NotNull] public const string FieldName = nameof(Items); + } + + [Serializable] + public class SerializedDictionary : + Dictionary, ISerializationCallbackReceiver + where TKeyValue : SerializedKeyValue, new() + { + [SerializeField] [NotNull] protected List Items = new List(); + + public void OnBeforeSerialize() + { + Items.Clear(); + foreach (var item in this) + { + var pair = new TKeyValue + { + Key = item.Key, + Value = item.Value, + }; + + Items.Add(pair); + } + } + + public void OnAfterDeserialize() + { + Clear(); + foreach (var item in Items) + { + Add(item.Key, item.Value); + } + } + } +} diff --git a/Assets/RekornTools/Avatar/Core/SerializedDictionary.cs.meta b/Assets/RekornTools/Avatar/Core/SerializedDictionary.cs.meta new file mode 100644 index 0000000..5f5b6e8 --- /dev/null +++ b/Assets/RekornTools/Avatar/Core/SerializedDictionary.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 34bd198ed40c442bb43c305a864d753e +timeCreated: 1651120815 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Core/SerializedKeyValue.cs b/Assets/RekornTools/Avatar/Core/SerializedKeyValue.cs new file mode 100644 index 0000000..388e8f5 --- /dev/null +++ b/Assets/RekornTools/Avatar/Core/SerializedKeyValue.cs @@ -0,0 +1,24 @@ +using UnityEngine; +using System; +using JetBrains.Annotations; + +namespace RekornTools.Avatar +{ + public sealed class SerializedKeyValue : SerializedKeyValue { } + + [Serializable] public class HorizontalKeyValue : SerializedKeyValue { } + + [Serializable] public class SerializedKeyValue + { + [field: SerializeField] [CanBeNull] public K Key { get; set; } + [field: SerializeField] [CanBeNull] public V Value { get; set; } + + protected SerializedKeyValue() { } + + protected SerializedKeyValue([CanBeNull] K key, [CanBeNull] V value) + { + Key = key; + Value = value; + } + } +} diff --git a/Assets/RekornTools/Avatar/Core/SerializedKeyValue.cs.meta b/Assets/RekornTools/Avatar/Core/SerializedKeyValue.cs.meta new file mode 100644 index 0000000..caa91a6 --- /dev/null +++ b/Assets/RekornTools/Avatar/Core/SerializedKeyValue.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: bfc26b3e497a4d4a85759ca208c7f097 +timeCreated: 1647761218 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Core/SerializedList.cs b/Assets/RekornTools/Avatar/Core/SerializedList.cs new file mode 100644 index 0000000..2f59a64 --- /dev/null +++ b/Assets/RekornTools/Avatar/Core/SerializedList.cs @@ -0,0 +1,67 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using JetBrains.Annotations; +using UnityEngine; + +namespace RekornTools.Avatar +{ + public sealed class SerializedList : SerializedList + { + [NotNull] public const string FieldName = nameof(Items); + } + + [Serializable] + public class SerializedList : IList + { + [SerializeField] [NotNull] protected List Items = new List(); + +#region Interface + public IEnumerator GetEnumerator() => Items.GetEnumerator(); + IEnumerator IEnumerable.GetEnumerator() => ((IEnumerable)Items).GetEnumerator(); + + public void Add(T item) => Items.Add(item); + public bool Remove(T item) => Items.Remove(item); + + public bool Contains(T item) => Items.Contains(item); + public int IndexOf(T item) => Items.IndexOf(item); + + public void Insert(int index, T item) => Items.Insert(index, item); + public void RemoveAt(int index) => Items.RemoveAt(index); + + public void CopyTo(T[] array, int arrayIndex) => Items.CopyTo(array, arrayIndex); + public void Clear() => Items.Clear(); + + public int Count => Items.Count; + public bool IsReadOnly => false; + + [CanBeNull] public T this[int index] + { + get => Items[index]; + set => Items[index] = value; + } +#endregion // Interface + +#region Extensions + public void AddRange([CanBeNull] IEnumerable target) + { + if (target == null) return; + + foreach (var item in target) Add(item); + } + + public void RemoveRange([CanBeNull] IEnumerable target) + { + if (target == null) return; + + foreach (var item in target) Remove(item); + } + + public void Initialize([CanBeNull] IEnumerable target) + { + Clear(); + AddRange(target); + } +#endregion // Extensions + } +} diff --git a/Assets/RekornTools/Avatar/Core/SerializedList.cs.meta b/Assets/RekornTools/Avatar/Core/SerializedList.cs.meta new file mode 100644 index 0000000..3e1895c --- /dev/null +++ b/Assets/RekornTools/Avatar/Core/SerializedList.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 1c676172cbd04671929f7f939191940c +timeCreated: 1647766736 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Core/Utils.meta b/Assets/RekornTools/Avatar/Core/Utils.meta new file mode 100644 index 0000000..1bf20ea --- /dev/null +++ b/Assets/RekornTools/Avatar/Core/Utils.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dd1e30eddda114e41a7d292ce95b292f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Avatar/Core/Utils/AssetHelper.cs b/Assets/RekornTools/Avatar/Core/Utils/AssetHelper.cs new file mode 100644 index 0000000..4eb5312 --- /dev/null +++ b/Assets/RekornTools/Avatar/Core/Utils/AssetHelper.cs @@ -0,0 +1,28 @@ +using JetBrains.Annotations; +using UnityEngine; +using UnityEditor; +using UnityEditor.Presets; + +namespace RekornTools.Avatar +{ + public static class AssetHelper + { + public static void ApplyPreset([CanBeNull] Object obj, [NotNull] Preset preset) + { + var importer = GetAssetImporter(obj); + if (importer == null) return; + + preset.ApplyTo(importer); + importer.SaveAndReimport(); + } + + [CanBeNull] + public static AssetImporter GetAssetImporter([CanBeNull] Object obj) + { + if (obj == null) return null; + + var path = AssetDatabase.GetAssetPath(obj); + return AssetImporter.GetAtPath(path); + } + } +} diff --git a/Assets/RekornTools/Avatar/Core/Utils/AssetHelper.cs.meta b/Assets/RekornTools/Avatar/Core/Utils/AssetHelper.cs.meta new file mode 100644 index 0000000..a7fd367 --- /dev/null +++ b/Assets/RekornTools/Avatar/Core/Utils/AssetHelper.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 723e44e206034e2cbc189d28c000f919 +timeCreated: 1651916928 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Core/Utils/AssetSize.cs b/Assets/RekornTools/Avatar/Core/Utils/AssetSize.cs new file mode 100644 index 0000000..e532737 --- /dev/null +++ b/Assets/RekornTools/Avatar/Core/Utils/AssetSize.cs @@ -0,0 +1,53 @@ +using System.Diagnostics.CodeAnalysis; +using System.Reflection; +using JetBrains.Annotations; +using UnityEditor; +using UnityEngine; +using UnityEngine.Profiling; + +namespace RekornTools.Avatar +{ + readonly struct AssetSize + { + [CanBeNull] string RuntimeBytes => FormatBytes(Runtime); + [CanBeNull] string StorageBytes => FormatBytes(Storage); + + [CanBeNull] static string FormatBytes(long size) + { + var absoluteSize = size < 0L ? -size : size; + return size < 0L ? $"-{EditorUtility.FormatBytes(absoluteSize)}" : EditorUtility.FormatBytes(absoluteSize); + } + + long Runtime { get; } + long Storage { get; } + + public AssetSize(long runtime, long storage) + { + Runtime = runtime; + Storage = storage; + } + + public override string ToString() => $"{RuntimeBytes} (Runtime) / {StorageBytes} (Storage)"; + + public static AssetSize operator +(AssetSize left, AssetSize right) => + new AssetSize(left.Runtime + right.Runtime, left.Storage + right.Storage); + + public static AssetSize operator -(AssetSize left, AssetSize right) => + new AssetSize(left.Runtime - right.Runtime, left.Storage - right.Storage); + + + [SuppressMessage("ReSharper", "SuggestBaseTypeForParameter")] + public static AssetSize GetAssetSize([CanBeNull] Texture texture) + { + if (texture == null) return new AssetSize(0L, 0L); + + var type = Assembly.Load("UnityEditor.dll")?.GetType("UnityEditor.TextureUtil"); + var methodInfo = type?.GetMethod("GetStorageMemorySizeLong", BindingFlags.Static | BindingFlags.Instance | BindingFlags.Public); + + var runtime = Profiler.GetRuntimeMemorySizeLong(texture); + var storage = (long)(methodInfo?.Invoke(null, new object[] { texture }) ?? 0L); + + return new AssetSize(runtime, storage); + } + } +} diff --git a/Assets/RekornTools/Avatar/Core/Utils/AssetSize.cs.meta b/Assets/RekornTools/Avatar/Core/Utils/AssetSize.cs.meta new file mode 100644 index 0000000..80f5261 --- /dev/null +++ b/Assets/RekornTools/Avatar/Core/Utils/AssetSize.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 98cc089d82a649d894716c041f1cf302 +timeCreated: 1651915630 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Editor.meta b/Assets/RekornTools/Avatar/Editor.meta new file mode 100644 index 0000000..397009d --- /dev/null +++ b/Assets/RekornTools/Avatar/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e4c863746506ed24099c2b50d3bd860d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Avatar/Editor/DefaultEditor.cs b/Assets/RekornTools/Avatar/Editor/DefaultEditor.cs new file mode 100644 index 0000000..9468b77 --- /dev/null +++ b/Assets/RekornTools/Avatar/Editor/DefaultEditor.cs @@ -0,0 +1,35 @@ +using System; +using System.Linq; +using System.Reflection; +using JetBrains.Annotations; +using UnityEditor; +using UnityEngine; +using Object = UnityEngine.Object; + +namespace RekornTools.Avatar.Editor +{ + [CustomEditor(typeof(Object), true)] + public class DefaultEditor : UnityEditor.Editor + { + public override void OnInspectorGUI() + { + base.OnInspectorGUI(); + if (target != null) DrawButton(target); + } + + static void DrawButton([NotNull] Object obj) + { + var methods = obj.GetType() + .GetMembers(ReflectionExtensions.Everything) + .Where(x => Attribute.IsDefined(x, typeof(ButtonAttribute))); + + foreach (var memberInfo in methods) + { + if (GUILayout.Button(memberInfo.Name)) + { + (memberInfo as MethodInfo)?.Invoke(obj, null); + } + } + } + } +} diff --git a/Assets/RekornTools/Avatar/Editor/DefaultEditor.cs.meta b/Assets/RekornTools/Avatar/Editor/DefaultEditor.cs.meta new file mode 100644 index 0000000..b48d3f5 --- /dev/null +++ b/Assets/RekornTools/Avatar/Editor/DefaultEditor.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 595f909514944f41bea203cabdd05289 +timeCreated: 1651837473 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Editor/Drawer.meta b/Assets/RekornTools/Avatar/Editor/Drawer.meta new file mode 100644 index 0000000..1e35325 --- /dev/null +++ b/Assets/RekornTools/Avatar/Editor/Drawer.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 77922a7bfeb245aeb7ce01f4de01f865 +timeCreated: 1651845849 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Editor/Drawer/HorizontalKeyValueDrawer.cs b/Assets/RekornTools/Avatar/Editor/Drawer/HorizontalKeyValueDrawer.cs new file mode 100644 index 0000000..e7c947b --- /dev/null +++ b/Assets/RekornTools/Avatar/Editor/Drawer/HorizontalKeyValueDrawer.cs @@ -0,0 +1,15 @@ +using UnityEditor; +using UnityEngine; + +namespace RekornTools.Avatar.Editor +{ + [CustomPropertyDrawer(typeof(HorizontalKeyValue<,>), true)] + public class HorizontalKeyValueDrawer : SerializedKeyValueDrawer + { + protected override void DrawProperty(Rect rect, SerializedProperty property, GUIContent _, int __) => + Helper.Update(property).DrawHorizontal(rect, 0.2f, true); + + public override float GetPropertyHeight(SerializedProperty property, GUIContent _) => + Helper.Update(property).MaxHeight; + } +} diff --git a/Assets/RekornTools/Avatar/Editor/Drawer/HorizontalKeyValueDrawer.cs.meta b/Assets/RekornTools/Avatar/Editor/Drawer/HorizontalKeyValueDrawer.cs.meta new file mode 100644 index 0000000..89481f0 --- /dev/null +++ b/Assets/RekornTools/Avatar/Editor/Drawer/HorizontalKeyValueDrawer.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: c361f71bb5d145d799e4c5acf5a6eb95 +timeCreated: 1651151339 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Editor/Drawer/SerializedDictionaryDrawer.cs b/Assets/RekornTools/Avatar/Editor/Drawer/SerializedDictionaryDrawer.cs new file mode 100644 index 0000000..4b03721 --- /dev/null +++ b/Assets/RekornTools/Avatar/Editor/Drawer/SerializedDictionaryDrawer.cs @@ -0,0 +1,18 @@ +using JetBrains.Annotations; +using UnityEditor; +using UnityEngine; + +namespace RekornTools.Avatar.Editor +{ + [CustomPropertyDrawer(typeof(SerializedDictionary<,,>), true)] + public class SerializedDictionaryDrawer : BasePropertyDrawer + { + [NotNull] protected readonly ReorderableListHelper Helper = new ReorderableListHelper(SerializedDictionary.FieldName); + + protected override void DrawProperty(Rect rect, SerializedProperty property, GUIContent _, int __) => + Helper.Update(property).Draw(rect); + + public override float GetPropertyHeight(SerializedProperty property, GUIContent _) => + Helper.Update(property).GetHeight(); + } +} diff --git a/Assets/RekornTools/Avatar/Editor/Drawer/SerializedDictionaryDrawer.cs.meta b/Assets/RekornTools/Avatar/Editor/Drawer/SerializedDictionaryDrawer.cs.meta new file mode 100644 index 0000000..ca11035 --- /dev/null +++ b/Assets/RekornTools/Avatar/Editor/Drawer/SerializedDictionaryDrawer.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: fdd74bcc06a84639adfe2a5d2441d911 +timeCreated: 1651124787 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Editor/Drawer/SerializedKeyValueDrawer.cs b/Assets/RekornTools/Avatar/Editor/Drawer/SerializedKeyValueDrawer.cs new file mode 100644 index 0000000..981d688 --- /dev/null +++ b/Assets/RekornTools/Avatar/Editor/Drawer/SerializedKeyValueDrawer.cs @@ -0,0 +1,18 @@ +using JetBrains.Annotations; +using UnityEditor; +using UnityEngine; + +namespace RekornTools.Avatar.Editor +{ + [CustomPropertyDrawer(typeof(SerializedKeyValue<,>))] + public class SerializedKeyValueDrawer : BasePropertyDrawer + { + [NotNull] protected static readonly SerializedKeyValueHelper Helper = new SerializedKeyValueHelper(); + + protected override void DrawProperty(Rect rect, SerializedProperty property, GUIContent _, int __) => + Helper.Update(property).DrawVertical(rect, true); + + public override float GetPropertyHeight(SerializedProperty property, GUIContent _) => + Helper.Update(property).TotalHeight; + } +} diff --git a/Assets/RekornTools/Avatar/Editor/Drawer/SerializedKeyValueDrawer.cs.meta b/Assets/RekornTools/Avatar/Editor/Drawer/SerializedKeyValueDrawer.cs.meta new file mode 100644 index 0000000..f99f181 --- /dev/null +++ b/Assets/RekornTools/Avatar/Editor/Drawer/SerializedKeyValueDrawer.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: ab5179e0b0a448358188fab34fe04146 +timeCreated: 1647768087 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Editor/Drawer/SerializedListDrawer.cs b/Assets/RekornTools/Avatar/Editor/Drawer/SerializedListDrawer.cs new file mode 100644 index 0000000..b7c890d --- /dev/null +++ b/Assets/RekornTools/Avatar/Editor/Drawer/SerializedListDrawer.cs @@ -0,0 +1,18 @@ +using JetBrains.Annotations; +using UnityEditor; +using UnityEngine; + +namespace RekornTools.Avatar.Editor +{ + [CustomPropertyDrawer(typeof(SerializedList<>), true)] + public class SerializedListDrawer : BasePropertyDrawer + { + [NotNull] protected readonly ReorderableListHelper Helper = new ReorderableListHelper(SerializedList.FieldName); + + protected override void DrawProperty(Rect rect, SerializedProperty property, GUIContent _, int __) => + Helper.Update(property).Draw(rect); + + public override float GetPropertyHeight(SerializedProperty property, GUIContent _) => + Helper.Update(property).GetHeight(); + } +} diff --git a/Assets/RekornTools/Avatar/Editor/Drawer/SerializedListDrawer.cs.meta b/Assets/RekornTools/Avatar/Editor/Drawer/SerializedListDrawer.cs.meta new file mode 100644 index 0000000..8533fd0 --- /dev/null +++ b/Assets/RekornTools/Avatar/Editor/Drawer/SerializedListDrawer.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 0a696f02478a441f922bb49409d84fa8 +timeCreated: 1647187925 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Editor/Extensions.meta b/Assets/RekornTools/Avatar/Editor/Extensions.meta new file mode 100644 index 0000000..f7e2653 --- /dev/null +++ b/Assets/RekornTools/Avatar/Editor/Extensions.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 141eda41f276420ca7615989b3e6038e +timeCreated: 1649559727 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Editor/Extensions/EditorGUIExtensions.cs b/Assets/RekornTools/Avatar/Editor/Extensions/EditorGUIExtensions.cs new file mode 100644 index 0000000..4ce9784 --- /dev/null +++ b/Assets/RekornTools/Avatar/Editor/Extensions/EditorGUIExtensions.cs @@ -0,0 +1,38 @@ +using JetBrains.Annotations; +using UnityEditor; +using UnityEngine; +using static UnityEditor.EditorGUI; + +namespace RekornTools.Avatar.Editor +{ + public static class EditorGUIExtensions + { +#region Decorator + public static readonly float SingleItemHeight = EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing; +#endregion // Decorator + +#region Extensions + public static bool DisabledPropertyField([CanBeNull] this SerializedProperty obj, Rect rect, bool isDisabled = true) + { + BeginDisabledGroup(isDisabled); + var result = obj.PropertyField(rect); + EndDisabledGroup(); + return result; + } + + public static bool PropertyField([CanBeNull] this SerializedProperty obj, Rect rect, [CanBeNull] string title = null) + { + if (obj == null) + { + LabelField(rect, "ERROR:", "SerializedProperty is null"); + return false; + } + + return EditorGUI.PropertyField(rect, obj, title != null ? new GUIContent(title) : GUIContent.none, true); + } + + public static float GetHeight([CanBeNull] this SerializedProperty obj) => + obj == null ? SingleItemHeight : GetPropertyHeight(obj, true); +#endregion // Extensions + } +} diff --git a/Assets/RekornTools/Avatar/Editor/Extensions/EditorGUIExtensions.cs.meta b/Assets/RekornTools/Avatar/Editor/Extensions/EditorGUIExtensions.cs.meta new file mode 100644 index 0000000..6a4b549 --- /dev/null +++ b/Assets/RekornTools/Avatar/Editor/Extensions/EditorGUIExtensions.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: f8eb3236c0c04ddb89f1cfd500ef8bb6 +timeCreated: 1647779061 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Editor/Extensions/EditorGUILayoutExtensions.cs b/Assets/RekornTools/Avatar/Editor/Extensions/EditorGUILayoutExtensions.cs new file mode 100644 index 0000000..bb626d2 --- /dev/null +++ b/Assets/RekornTools/Avatar/Editor/Extensions/EditorGUILayoutExtensions.cs @@ -0,0 +1,35 @@ +using System; +using JetBrains.Annotations; +using UnityEditor; +using UnityEngine; +using static UnityEditor.EditorGUILayout; + +namespace RekornTools.Avatar.Editor +{ + public static class EditorGUILayoutExtensions + { +#region Decorator + public static void HorizontalLine() + { + var skin = GUI.skin; + var style = GUIStyle.none; + if (skin != null) style = skin.horizontalSlider; + + LabelField("", style); + } +#endregion // Decorator + +#region Extensions + [CanBeNull] public static T ObjectField([CanBeNull] string label, [CanBeNull] T obj, bool allowSceneObjects) + where T : UnityEngine.Object => + (T)EditorGUILayout.ObjectField(label, obj, typeof(T), allowSceneObjects); + + [CanBeNull] public static T EnumDropdown([CanBeNull] string label, [NotNull] T selected) + where T : Enum + { + var e = EnumPopup(label, selected); + return e != null ? (T)e : selected; + } +#endregion // Extensions + } +} diff --git a/Assets/RekornTools/Avatar/Editor/Extensions/EditorGUILayoutExtensions.cs.meta b/Assets/RekornTools/Avatar/Editor/Extensions/EditorGUILayoutExtensions.cs.meta new file mode 100644 index 0000000..0d59f5a --- /dev/null +++ b/Assets/RekornTools/Avatar/Editor/Extensions/EditorGUILayoutExtensions.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: b823816a09b04d479c40ce4898acac17 +timeCreated: 1648911852 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Editor/Extensions/ObjectExtensions.cs b/Assets/RekornTools/Avatar/Editor/Extensions/ObjectExtensions.cs new file mode 100644 index 0000000..4a92de1 --- /dev/null +++ b/Assets/RekornTools/Avatar/Editor/Extensions/ObjectExtensions.cs @@ -0,0 +1,27 @@ +using JetBrains.Annotations; +using UnityEditor; +using UnityEngine; + +namespace RekornTools.Avatar.Editor +{ + public static class ObjectExtensions + { +#region Editor + public static void DrawEditor([NotNull] this Object obj, bool isDisabled) + { + EditorGUI.BeginDisabledGroup(isDisabled); + { + obj.DrawEditor(); + } + EditorGUI.EndDisabledGroup(); + } + + public static void DrawEditor([NotNull] this T obj) where T : Object + { + var editor = UnityEditor.Editor.CreateEditor(obj); + if (editor != null) editor.OnInspectorGUI(); + EditorUtility.SetDirty(obj); + } +#endregion // Editor + } +} diff --git a/Assets/RekornTools/Avatar/Editor/Extensions/ObjectExtensions.cs.meta b/Assets/RekornTools/Avatar/Editor/Extensions/ObjectExtensions.cs.meta new file mode 100644 index 0000000..1a61790 --- /dev/null +++ b/Assets/RekornTools/Avatar/Editor/Extensions/ObjectExtensions.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: e7e370d736234fe68ac287b4e324a163 +timeCreated: 1648968524 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Editor/Extensions/RectExtensions.cs b/Assets/RekornTools/Avatar/Editor/Extensions/RectExtensions.cs new file mode 100644 index 0000000..138a8bd --- /dev/null +++ b/Assets/RekornTools/Avatar/Editor/Extensions/RectExtensions.cs @@ -0,0 +1,41 @@ +using JetBrains.Annotations; +using UnityEditor; +using UnityEngine; + +namespace RekornTools.Avatar.Editor +{ + public static class RectExtensions + { + public static readonly float IndentWidth = 15f; + + public static void ApplyIndent(this ref Rect rect, int indent) + { + rect.x += indent * IndentWidth; + rect.width -= indent * IndentWidth; + } + + public static void RevertIndent(this ref Rect rect, int indent) + { + rect.x -= indent * IndentWidth; + rect.width += indent * IndentWidth; + } + + public static void AppendWidth(this ref Rect rect, float width) + { + rect.x += rect.width; + rect.width = width; + } + + public static void AppendHeight(this ref Rect rect, float height) + { + rect.y += rect.height; + rect.height = height; + } + + public static void AppendHeight(this ref Rect rect, [CanBeNull] SerializedProperty property) + { + rect.AppendHeight(property.GetHeight()); + rect.y += EditorGUIUtility.standardVerticalSpacing; + } + } +} diff --git a/Assets/RekornTools/Avatar/Editor/Extensions/RectExtensions.cs.meta b/Assets/RekornTools/Avatar/Editor/Extensions/RectExtensions.cs.meta new file mode 100644 index 0000000..cc15006 --- /dev/null +++ b/Assets/RekornTools/Avatar/Editor/Extensions/RectExtensions.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 04a0584ee11f468eba3b20e2124dc04c +timeCreated: 1648286787 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Editor/Extensions/ReflectionExtensions.cs b/Assets/RekornTools/Avatar/Editor/Extensions/ReflectionExtensions.cs new file mode 100644 index 0000000..7cc62b0 --- /dev/null +++ b/Assets/RekornTools/Avatar/Editor/Extensions/ReflectionExtensions.cs @@ -0,0 +1,45 @@ +using System; +using System.Reflection; +using JetBrains.Annotations; +using UnityEditor; + +namespace RekornTools.Avatar.Editor +{ + public static class ReflectionExtensions + { +#region Attribute + public static readonly BindingFlags Everything = ~BindingFlags.Default; + + [CanBeNull] + public static T GetAttribute([CanBeNull] this SerializedProperty property, bool inherit = true) where T : Attribute + { + var attributes = property.GetAttributes(inherit); + return attributes?.Length > 0 ? attributes[0] : null; + } + + [CanBeNull] + public static T[] GetAttributes([CanBeNull] this SerializedProperty property, bool inherit = true) where T : Attribute + { + var member = property?.GetFieldOrProperty(); + return member?.GetCustomAttributes(typeof(T), inherit) as T[]; + } + + [CanBeNull] + static MemberInfo GetFieldOrProperty([NotNull] this SerializedProperty property) + { + var target = property.serializedObject?.targetObject; + var paths = property.propertyPath?.Split('.'); + if (target == null || paths == null) return null; + + var type = target.GetType(); + MemberInfo member = null; + foreach (var name in paths) + { + (member, type) = type.GetFieldOrProperty(name); + } + + return member; + } +#endregion // Attribute + } +} diff --git a/Assets/RekornTools/Avatar/Editor/Extensions/ReflectionExtensions.cs.meta b/Assets/RekornTools/Avatar/Editor/Extensions/ReflectionExtensions.cs.meta new file mode 100644 index 0000000..8334b54 --- /dev/null +++ b/Assets/RekornTools/Avatar/Editor/Extensions/ReflectionExtensions.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: e40ac22c01cd4f558f369793d4fdb6f5 +timeCreated: 1648959043 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Editor/Extensions/SerializationExtensions.cs b/Assets/RekornTools/Avatar/Editor/Extensions/SerializationExtensions.cs new file mode 100644 index 0000000..af05e3e --- /dev/null +++ b/Assets/RekornTools/Avatar/Editor/Extensions/SerializationExtensions.cs @@ -0,0 +1,19 @@ +using JetBrains.Annotations; +using UnityEditor; +using static RekornTools.Avatar.ReflectionExtensions; + +namespace RekornTools.Avatar.Editor +{ + public static class SerializationExtensions + { + [CanBeNull] public static SerializedProperty ResolveProperty( + [CanBeNull] this SerializedObject obj, + [NotNull] string name) => + obj?.FindProperty(name) ?? obj?.FindProperty(ResolveFieldName(name)); + + [CanBeNull] public static SerializedProperty ResolveProperty( + [CanBeNull] this SerializedProperty prop, + [NotNull] string name) => + prop?.FindPropertyRelative(name) ?? prop?.FindPropertyRelative(ResolveFieldName(name)); + } +} diff --git a/Assets/RekornTools/Avatar/Editor/Extensions/SerializationExtensions.cs.meta b/Assets/RekornTools/Avatar/Editor/Extensions/SerializationExtensions.cs.meta new file mode 100644 index 0000000..9ef6e09 --- /dev/null +++ b/Assets/RekornTools/Avatar/Editor/Extensions/SerializationExtensions.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: f51acac88325484aa5818ef322ec26b9 +timeCreated: 1648960345 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Editor/RekornTools.Avatar.Editor.asmdef b/Assets/RekornTools/Avatar/Editor/RekornTools.Avatar.Editor.asmdef new file mode 100644 index 0000000..be6a8e5 --- /dev/null +++ b/Assets/RekornTools/Avatar/Editor/RekornTools.Avatar.Editor.asmdef @@ -0,0 +1,17 @@ +{ + "name": "RekornTools.Avatar.Editor", + "references": [ + "GUID:901025ec65c25d34f8bb0ab1968520c3" + ], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Editor/RekornTools.Avatar.Editor.asmdef.meta b/Assets/RekornTools/Avatar/Editor/RekornTools.Avatar.Editor.asmdef.meta new file mode 100644 index 0000000..f79ceef --- /dev/null +++ b/Assets/RekornTools/Avatar/Editor/RekornTools.Avatar.Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 3b7023146530b954c921ee55ab65dbff +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Avatar/Editor/Utils.meta b/Assets/RekornTools/Avatar/Editor/Utils.meta new file mode 100644 index 0000000..b178251 --- /dev/null +++ b/Assets/RekornTools/Avatar/Editor/Utils.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bb128c369c2cc554285e2e3754b7f3c3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Avatar/Editor/Utils/BaseEditor.cs b/Assets/RekornTools/Avatar/Editor/Utils/BaseEditor.cs new file mode 100644 index 0000000..bc26efe --- /dev/null +++ b/Assets/RekornTools/Avatar/Editor/Utils/BaseEditor.cs @@ -0,0 +1,25 @@ +using JetBrains.Annotations; +using UnityEditor; + +namespace RekornTools.Avatar.Editor +{ + public abstract class BaseEditor : UnityEditor.Editor where T : UnityEngine.Object + { + T _target; + + void OnEnable() => _target = target as T; + + public override void OnInspectorGUI() + { + if (_target == null) return; + + Undo.RecordObject(_target, typeof(T).Name); + { + Draw(_target); + if (_target is IValidate validate) validate.OnValidate(); + } + } + + protected abstract void Draw([NotNull] T t); + } +} diff --git a/Assets/RekornTools/Avatar/Editor/Utils/BaseEditor.cs.meta b/Assets/RekornTools/Avatar/Editor/Utils/BaseEditor.cs.meta new file mode 100644 index 0000000..71e704a --- /dev/null +++ b/Assets/RekornTools/Avatar/Editor/Utils/BaseEditor.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: dc24ea4a883a4561a072282ea314051f +timeCreated: 1651126749 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Editor/Utils/BaseEditorWindow.cs b/Assets/RekornTools/Avatar/Editor/Utils/BaseEditorWindow.cs new file mode 100644 index 0000000..dabf6ff --- /dev/null +++ b/Assets/RekornTools/Avatar/Editor/Utils/BaseEditorWindow.cs @@ -0,0 +1,60 @@ +using JetBrains.Annotations; +using UnityEditor; +using UnityEngine; + +namespace RekornTools.Avatar.Editor +{ + public abstract class BaseEditorWindow : EditorWindow + { + [NotNull] static string PrefPath => $"{Application.identifier}/{typeof(T)}"; + + Vector2 _scrollPosition = Vector2.zero; + bool _isSerializedFieldsReady; + + void OnEnable() + { + EditorApplication.quitting += SaveSerializedData; + LoadSerializedData(); + Enable(); + _isSerializedFieldsReady = true; + } + + void OnDisable() + { + EditorApplication.quitting -= SaveSerializedData; + SaveSerializedData(); + Disable(); + _isSerializedFieldsReady = false; + } + + void LoadSerializedData() + { + var data = EditorPrefs.GetString(PrefPath, EditorJsonUtility.ToJson(this, false)); + EditorJsonUtility.FromJsonOverwrite(data, this); + } + + void SaveSerializedData() + { + var data = EditorJsonUtility.ToJson(this, false); + EditorPrefs.SetString(PrefPath, data); + } + + protected virtual void Enable() { } + protected virtual void Disable() { } + + public void OnGUI() + { + _scrollPosition = GUILayout.BeginScrollView(_scrollPosition); + { + Undo.RecordObject(this, typeof(T).Name); + { + if (_isSerializedFieldsReady) Draw(); + } + Repaint(); + } + GUILayout.EndScrollView(); + } + + protected abstract void Draw(); + } +} diff --git a/Assets/RekornTools/Avatar/Editor/Utils/BaseEditorWindow.cs.meta b/Assets/RekornTools/Avatar/Editor/Utils/BaseEditorWindow.cs.meta new file mode 100644 index 0000000..cac1d8c --- /dev/null +++ b/Assets/RekornTools/Avatar/Editor/Utils/BaseEditorWindow.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 50e8fe1a92fb405e88ec68c6b887834e +timeCreated: 1649551775 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Editor/Utils/BasePropertyDrawer.cs b/Assets/RekornTools/Avatar/Editor/Utils/BasePropertyDrawer.cs new file mode 100644 index 0000000..47153f3 --- /dev/null +++ b/Assets/RekornTools/Avatar/Editor/Utils/BasePropertyDrawer.cs @@ -0,0 +1,32 @@ +using JetBrains.Annotations; +using UnityEditor; +using UnityEngine; + +namespace RekornTools.Avatar.Editor +{ + public abstract class BasePropertyDrawer : PropertyDrawer + { + public override void OnGUI(Rect rect, [CanBeNull] SerializedProperty property, [CanBeNull] GUIContent label) + { + if (property == null) return; + + var indent = EditorGUI.indentLevel; + EditorGUI.BeginProperty(rect, label, property); + { + EditorGUI.BeginChangeCheck(); + { + EditorGUI.indentLevel = 0; + rect.ApplyIndent(indent); + DrawProperty(rect, property, label, indent); + } + if (EditorGUI.EndChangeCheck()) property.serializedObject?.ApplyModifiedProperties(); + } + EditorGUI.EndProperty(); + EditorGUI.indentLevel = indent; + } + + protected abstract void DrawProperty(Rect rect, [NotNull] SerializedProperty property, [CanBeNull] GUIContent label, int indent); + + public override float GetPropertyHeight([CanBeNull] SerializedProperty property, [CanBeNull] GUIContent _) => property.GetHeight(); + } +} diff --git a/Assets/RekornTools/Avatar/Editor/Utils/BasePropertyDrawer.cs.meta b/Assets/RekornTools/Avatar/Editor/Utils/BasePropertyDrawer.cs.meta new file mode 100644 index 0000000..5d80b0f --- /dev/null +++ b/Assets/RekornTools/Avatar/Editor/Utils/BasePropertyDrawer.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 78389a6497d24deeabafd709cd58b3be +timeCreated: 1649559225 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Editor/Utils/ReorderableListHelper.cs b/Assets/RekornTools/Avatar/Editor/Utils/ReorderableListHelper.cs new file mode 100644 index 0000000..f117949 --- /dev/null +++ b/Assets/RekornTools/Avatar/Editor/Utils/ReorderableListHelper.cs @@ -0,0 +1,132 @@ +using System; +using System.Collections.Generic; +using JetBrains.Annotations; +using UnityEditor; +using UnityEditorInternal; +using UnityEngine; + +namespace RekornTools.Avatar.Editor +{ + /// + /// Do not create static class of this, it will cause key collisions of cache dictionary. + /// + public sealed class ReorderableListHelper + { + [NotNull] readonly Dictionary _cache = new Dictionary(); + + [NotNull] readonly string _listName; + + [CanBeNull] SerializedProperty _container; + [CanBeNull] SerializedProperty _listContainer; + [CanBeNull] ReorderableList _list; + + bool IsReadOnly => _container.GetAttribute() != null || _isReadOnly; + readonly bool _isReadOnly; + + bool ItemNotSpan => _container.GetAttribute() != null || _itemNotSpan; + readonly bool _itemNotSpan; + + public ReorderableListHelper([NotNull] string listName, bool isReadOnly = false, bool itemNotSpan = false) + { + _listName = listName; + _isReadOnly = isReadOnly; + _itemNotSpan = itemNotSpan; + } + + [NotNull] public ReorderableListHelper Update([CanBeNull] SerializedProperty container) + { + if (_container != container) + { + _container = container; + + var listContainer = container?.ResolveProperty(_listName); + if (_listContainer != listContainer) + { + _listContainer = listContainer; + + UpdateList(); + } + } + + return this; + } + + public void Draw(Rect rect) + { + rect.ApplyIndent(EditorGUI.indentLevel); + if (_list == null) + { + EditorGUI.LabelField(rect, "ERROR:", "SerializedProperty is null"); + return; + } + + _list.DoList(rect); + } + + public float GetHeight() + { + try + { + return _list?.GetHeight() ?? EditorGUIExtensions.SingleItemHeight; + } + catch (NullReferenceException) + { + return EditorGUIExtensions.SingleItemHeight; + } + } + + void UpdateList() + { + if (_listContainer?.propertyPath == null) return; + + if (_cache.ContainsKey(_listContainer.propertyPath)) + { + _list = _cache[_listContainer.propertyPath]; + } + else + { + _list = CreateList(_listContainer, null, IsReadOnly, ItemNotSpan); + _cache.Add(_listContainer.propertyPath, _list); + } + } + + [NotNull] + static ReorderableList CreateList( + [NotNull] SerializedProperty property, [CanBeNull] string header, bool isReadOnly, bool itemNotSpan) + { + var list = new ReorderableList(property.serializedObject, property) + { + draggable = !isReadOnly, + displayAdd = !isReadOnly, + displayRemove = !isReadOnly, + }; + + if (string.IsNullOrWhiteSpace(header)) list.headerHeight = 0f; + + list.drawHeaderCallback += OnDrawHeader; + list.drawElementCallback += OnDrawElement; + + if (itemNotSpan) list.elementHeightCallback += OnGetHeight; + else list.elementHeight = GetElementHeight(); + + return list; + + void OnDrawElement(Rect rect, int index, bool isActive, bool isFocused) + { + rect.RevertIndent(EditorGUI.indentLevel); + GetElement(index).PropertyField(rect); + } + + float OnGetHeight(int index) => GetElement(index).GetHeight(); + + float GetElementHeight() => + property.arraySize > 0 + ? OnGetHeight(0) + EditorGUIUtility.standardVerticalSpacing + : EditorGUIExtensions.SingleItemHeight; + + SerializedProperty GetElement(int index) => property.GetArrayElementAtIndex(index); + + void OnDrawHeader(Rect rect) => EditorGUI.LabelField(rect, header); + } + } +} diff --git a/Assets/RekornTools/Avatar/Editor/Utils/ReorderableListHelper.cs.meta b/Assets/RekornTools/Avatar/Editor/Utils/ReorderableListHelper.cs.meta new file mode 100644 index 0000000..1c56d06 --- /dev/null +++ b/Assets/RekornTools/Avatar/Editor/Utils/ReorderableListHelper.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 231b29614436402bb33ae79a9dfc2f4c +timeCreated: 1647792250 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/Editor/Utils/SerializedKeyValueHelper.cs b/Assets/RekornTools/Avatar/Editor/Utils/SerializedKeyValueHelper.cs new file mode 100644 index 0000000..bc883d6 --- /dev/null +++ b/Assets/RekornTools/Avatar/Editor/Utils/SerializedKeyValueHelper.cs @@ -0,0 +1,61 @@ +using JetBrains.Annotations; +using UnityEditor; +using UnityEngine; +using static RekornTools.Avatar.ReflectionExtensions; + +namespace RekornTools.Avatar.Editor +{ + public sealed class SerializedKeyValueHelper + { + [CanBeNull] public SerializedProperty Key { get; private set; } + [CanBeNull] public SerializedProperty Value { get; private set; } + + [NotNull] readonly string _keyName = ResolveFieldName(nameof(SerializedKeyValue.Key)); + [NotNull] readonly string _valueName = ResolveFieldName(nameof(SerializedKeyValue.Value)); + + [CanBeNull] SerializedProperty _container; + + [NotNull] public SerializedKeyValueHelper Update([CanBeNull] SerializedProperty container) + { + if (_container != container) + { + _container = container; + + Key = container?.ResolveProperty(_keyName); + Value = container?.ResolveProperty(_valueName); + } + + return this; + } + + public float KeyHeight => Key.GetHeight() + EditorGUIUtility.standardVerticalSpacing; + public float ValueHeight => Value.GetHeight() + EditorGUIUtility.standardVerticalSpacing; + + public float MaxHeight => Mathf.Max(Key.GetHeight(), Value.GetHeight()); + public float TotalHeight => Key.GetHeight() + Value.GetHeight(); + + public void DrawVertical(Rect rect, bool keyDisabled = false, bool valueDisabled = false) + { + rect.height = 0f; + + rect.AppendHeight(KeyHeight); + Key.DisabledPropertyField(rect, keyDisabled); + + rect.AppendHeight(ValueHeight); + Value.DisabledPropertyField(rect, valueDisabled); + } + + public void DrawHorizontal(Rect rect, float keyWeight = 0.5f, bool keyDisabled = false, bool valueDisabled = false) + { + var keyWidth = rect.width * keyWeight; + var valueWidth = rect.width - keyWidth; + rect.width = 0f; + + rect.AppendWidth(keyWidth); + Key.DisabledPropertyField(rect, keyDisabled); + + rect.AppendWidth(valueWidth); + Value.DisabledPropertyField(rect, valueDisabled); + } + } +} diff --git a/Assets/RekornTools/Avatar/Editor/Utils/SerializedKeyValueHelper.cs.meta b/Assets/RekornTools/Avatar/Editor/Utils/SerializedKeyValueHelper.cs.meta new file mode 100644 index 0000000..4fccd7d --- /dev/null +++ b/Assets/RekornTools/Avatar/Editor/Utils/SerializedKeyValueHelper.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: f5356ee2ed50488fb45f26b28a29d6ba +timeCreated: 1648292452 \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/RekornTools.Avatar.asmdef b/Assets/RekornTools/Avatar/RekornTools.Avatar.asmdef new file mode 100644 index 0000000..452d904 --- /dev/null +++ b/Assets/RekornTools/Avatar/RekornTools.Avatar.asmdef @@ -0,0 +1,16 @@ +{ + "name": "RekornTools.Avatar", + "references": [], + "includePlatforms": [ + "CloudRendering", + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Assets/RekornTools/Avatar/RekornTools.Avatar.asmdef.meta b/Assets/RekornTools/Avatar/RekornTools.Avatar.asmdef.meta new file mode 100644 index 0000000..16403b1 --- /dev/null +++ b/Assets/RekornTools/Avatar/RekornTools.Avatar.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 901025ec65c25d34f8bb0ab1968520c3 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Core.meta b/Assets/RekornTools/Core.meta new file mode 100644 index 0000000..55f369f --- /dev/null +++ b/Assets/RekornTools/Core.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 13465c81073935b44ac4a2e639a29690 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Core/RekornTools.asmdef b/Assets/RekornTools/Core/RekornTools.asmdef new file mode 100644 index 0000000..f37a8b2 --- /dev/null +++ b/Assets/RekornTools/Core/RekornTools.asmdef @@ -0,0 +1,13 @@ +{ + "name": "RekornTools", + "references": [], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Assets/RekornTools/Core/RekornTools.asmdef.meta b/Assets/RekornTools/Core/RekornTools.asmdef.meta new file mode 100644 index 0000000..f466f6e --- /dev/null +++ b/Assets/RekornTools/Core/RekornTools.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d816c7d64e1c17b4bb0c33046cefb1a8 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Core/VERSION.json b/Assets/RekornTools/Core/VERSION.json new file mode 100644 index 0000000..12ddc39 --- /dev/null +++ b/Assets/RekornTools/Core/VERSION.json @@ -0,0 +1,6 @@ +{ + "version": "1.1.0", + "server": "https://raw.githubusercontent.com/urun4m0r1/RekornTools.Avatar/master/VERSION.json", + "github": "https://github.com/urun4m0r1/RekornTools.Avatar", + "booth": "https://rekorn.booth.pm/items/3860932" +} diff --git a/Assets/RekornTools/Core/VERSION.json.meta b/Assets/RekornTools/Core/VERSION.json.meta new file mode 100644 index 0000000..c9c6f32 --- /dev/null +++ b/Assets/RekornTools/Core/VERSION.json.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 685afcbf86da4c6886ae4a62330fd066 +timeCreated: 1652003351 \ No newline at end of file diff --git a/Assets/RekornTools/Core/VersionChecker.cs b/Assets/RekornTools/Core/VersionChecker.cs new file mode 100644 index 0000000..248df0b --- /dev/null +++ b/Assets/RekornTools/Core/VersionChecker.cs @@ -0,0 +1,170 @@ +#if UNITY_EDITOR +using System; +using System.Linq; +using System.Text; +using JetBrains.Annotations; +using UnityEditor; +using UnityEngine; +using UnityEngine.Networking; + +namespace RekornTools +{ + [Serializable] + public struct VersionInfo + { + [SerializeField] public string version; + [SerializeField] public string server; + [SerializeField] public string github; + [SerializeField] public string booth; + + public bool IsEmpty() => + string.IsNullOrWhiteSpace(version) + && string.IsNullOrWhiteSpace(server) + && string.IsNullOrWhiteSpace(github) + && string.IsNullOrWhiteSpace(booth); + } + + [InitializeOnLoad] + public class VersionChecker + { + [NotNull] static string PrefPath => $"{Application.identifier}/{nameof(VersionChecker)}"; + + static VersionChecker() => CheckNewVersion(); + + static void CheckNewVersion() + { + var regex = new System.Text.RegularExpressions.Regex(@"(?:.*/|.*\\)?Core/(VERSION\.json)"); + var path = AssetDatabase.FindAssets("VERSION t:TextAsset") + .Select(AssetDatabase.GUIDToAssetPath) + .FirstOrDefault(x => regex.IsMatch(x)); + + var local = ParseLocalVersion(path); + + if (local.IsEmpty()) + { + Debug.LogWarning("Failed to parse update server info."); + return; + } + + var skipVersion = EditorPrefs.GetString(PrefPath); + if (skipVersion == local.version) return; + + GetRemoteVersion( + local.server + , remote => CheckVersion(local, remote) + , message => CheckNetwork(local, message ?? "Unknown")); + } + + static VersionInfo ParseLocalVersion([CanBeNull] string path) + { + if (string.IsNullOrWhiteSpace(path)) + { + Debug.LogWarning("VersionChecker: Could not find local version file."); + return default; + } + + var textAsset = AssetDatabase.LoadAssetAtPath(path); + if (textAsset == null) + { + Debug.LogWarning("VersionChecker: Could not find local version file."); + return default; + } + + return JsonUtility.FromJson(textAsset.text); + } + + static void GetRemoteVersion([NotNull] string server, [CanBeNull] Action onSuccess, [CanBeNull] Action onError) + { + var www = UnityWebRequest.Get(server); + + var request = www?.SendWebRequest(); + if (request == null) + { + onError?.Invoke("Can't reach server."); + return; + } + + request.completed += x => + { + if (www.result is UnityWebRequest.Result.ConnectionError or UnityWebRequest.Result.ProtocolError) + { + onError?.Invoke(www.error); + return; + } + + var rawData = www.downloadHandler?.data; + if (rawData == null) + { + onError?.Invoke("Failed to get data from server."); + return; + } + + var jsonString = Encoding.UTF8.GetString(rawData, 3, rawData.Length - 3); + var remote = JsonUtility.FromJson(jsonString); + + onSuccess?.Invoke(remote); + + www.Dispose(); + }; + } + + static void CheckVersion(VersionInfo local, VersionInfo remote) + { + if (remote.version == local.version) return; + + var response = EditorUtility.DisplayDialogComplex( + $"RekornTools {local.version}" + , $"New version {remote.version} is available.\n" + + $"You can download it with buttons below." + , "Download", "Close", "Skip this version"); + + ShowDownloadDialog(remote, response); + } + + static void CheckNetwork(VersionInfo local, [NotNull] string message) + { + var response = EditorUtility.DisplayDialogComplex( + $"RekornTools {local.version}" + , $"Update server unreachable. ({message})\n" + + $"Maybe you are offline or server is down.\n" + + $"You can try download latest version with buttons below." + , "Download", "Close", "Skip this version"); + + ShowDownloadDialog(local, response); + } + + static void ShowDownloadDialog(VersionInfo info, int response) + { + switch (response) + { + case 0: + var link = GetDownloadLink(info); + if (!string.IsNullOrWhiteSpace(link)) Application.OpenURL(link); + break; + case 1: + break; + case 2: + EditorPrefs.SetString(PrefPath, info.version); + break; + } + } + + static string GetDownloadLink(VersionInfo info) + { + var response = EditorUtility.DisplayDialogComplex( + $"RekornTools {info.version}" + , $"Choose where to download the new version." + , "Github", "Close", "Booth"); + + switch (response) + { + case 0: return info.github; + case 1: return null; + case 2: return info.booth; + } + + return null; + } + } +} +#endif diff --git a/Assets/RekornTools/Core/VersionChecker.cs.meta b/Assets/RekornTools/Core/VersionChecker.cs.meta new file mode 100644 index 0000000..333725c --- /dev/null +++ b/Assets/RekornTools/Core/VersionChecker.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2445602931c3702428ba81b35c54f755 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Debug.meta b/Assets/RekornTools/Debug.meta new file mode 100644 index 0000000..cc56217 --- /dev/null +++ b/Assets/RekornTools/Debug.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e411608d5a0d87c4e96b85cc6d300d4d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Debug/DrawArrow.cs b/Assets/RekornTools/Debug/DrawArrow.cs new file mode 100644 index 0000000..63a3ff8 --- /dev/null +++ b/Assets/RekornTools/Debug/DrawArrow.cs @@ -0,0 +1,119 @@ +using UnityEngine; + +namespace RekornTools.Debug +{ + /// + /// Based on https://forum.unity3d.com/threads/debug-drawarrow.85980/ + /// + public static class DrawArrow + { + public static void ForGizmo( + Vector3 pos, + Vector3 direction, + float arrowHeadLength = 0.25f, + float arrowHeadAngle = 20.0f, + float arrowPosition = 0.5f) + { + ForGizmo(pos, direction, Gizmos.color, arrowHeadLength, arrowHeadAngle, arrowPosition); + } + + public static void ForGizmoTwoPoints( + Vector3 from, + Vector3 to, + float arrowHeadLength = 0.25f, + float arrowHeadAngle = 20.0f, + float arrowPosition = 0.5f) + { + ForGizmoTwoPoints(from, to, Gizmos.color, arrowHeadLength, arrowHeadAngle, arrowPosition); + } + + public static void ForGizmo( + Vector3 pos, + Vector3 direction, + Color color, + float arrowHeadLength = 0.25f, + float arrowHeadAngle = 20.0f, + float arrowPosition = 0.5f) + { + Gizmos.color = color; + Gizmos.DrawRay(pos, direction); + DrawArrowEnd(true, pos, direction, color, arrowHeadLength, arrowHeadAngle, arrowPosition); + } + + public static void ForGizmoTwoPoints( + Vector3 from, + Vector3 to, + Color color, + float arrowHeadLength = 0.25f, + float arrowHeadAngle = 20.0f, + float arrowPosition = 0.5f) + { + Gizmos.color = color; + Gizmos.DrawLine(from, to); + Vector3 direction = to - from; + DrawArrowEnd(true, from, direction, color, arrowHeadLength, arrowHeadAngle, arrowPosition); + } + + public static void ForDebug( + Vector3 pos, + Vector3 direction, + float arrowHeadLength = 0.25f, + float arrowHeadAngle = 20.0f, + float arrowPosition = 0.5f) + { + ForDebug(pos, direction, Color.white, arrowHeadLength, arrowHeadAngle, arrowPosition); + } + + public static void ForDebug( + Vector3 pos, + Vector3 direction, + Color color, + float arrowHeadLength = 0.25f, + float arrowHeadAngle = 20.0f, + float arrowPosition = 0.5f) + { + UnityEngine.Debug.DrawRay(pos, direction, color); + DrawArrowEnd(false, pos, direction, color, arrowHeadLength, arrowHeadAngle, arrowPosition); + } + + private static void DrawArrowEnd( + bool gizmos, + Vector3 pos, + Vector3 direction, + Color color, + float arrowHeadLength = 0.25f, + float arrowHeadAngle = 20.0f, + float arrowPosition = 0.5f) + { + Vector3 right = + (Quaternion.LookRotation(direction) * Quaternion.Euler(arrowHeadAngle, 0, 0) * Vector3.back) * + arrowHeadLength; + Vector3 left = + (Quaternion.LookRotation(direction) * Quaternion.Euler(-arrowHeadAngle, 0, 0) * Vector3.back) * + arrowHeadLength; + Vector3 up = (Quaternion.LookRotation(direction) * Quaternion.Euler(0, arrowHeadAngle, 0) * Vector3.back) * + arrowHeadLength; + Vector3 down = + (Quaternion.LookRotation(direction) * Quaternion.Euler(0, -arrowHeadAngle, 0) * Vector3.back) * + arrowHeadLength; + + Vector3 arrowTip = pos + (direction * arrowPosition); + + if (gizmos) + { + Gizmos.color = color; + Gizmos.DrawRay(arrowTip, right); + Gizmos.DrawRay(arrowTip, left); + Gizmos.DrawRay(arrowTip, up); + Gizmos.DrawRay(arrowTip, down); + } + else + { + UnityEngine.Debug.DrawRay(arrowTip, right, color); + UnityEngine.Debug.DrawRay(arrowTip, left, color); + UnityEngine.Debug.DrawRay(arrowTip, up, color); + UnityEngine.Debug.DrawRay(arrowTip, down, color); + } + } + } +} diff --git a/Assets/RekornTools/Debug/DrawArrow.cs.meta b/Assets/RekornTools/Debug/DrawArrow.cs.meta new file mode 100644 index 0000000..65ad4da --- /dev/null +++ b/Assets/RekornTools/Debug/DrawArrow.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 72b00569c4f1490da5d8b3cf73712095 +timeCreated: 1647251791 \ No newline at end of file diff --git a/Assets/RekornTools/Debug/DrawerHelper.cs b/Assets/RekornTools/Debug/DrawerHelper.cs new file mode 100644 index 0000000..4d4b353 --- /dev/null +++ b/Assets/RekornTools/Debug/DrawerHelper.cs @@ -0,0 +1,26 @@ +using System; +using JetBrains.Annotations; +using UnityEngine; + +namespace RekornTools.Debug +{ + public static class DrawerHelper + { + public static bool WillDrawOnSelected([NotNull] this IGizmos target) => + target.DrawMode is DrawMode.Always || target.DrawMode is DrawMode.OnSelected; + public static bool WillDrawOnNonSelected([NotNull] this IGizmos target) => + target.DrawMode is DrawMode.Always || target.DrawMode is DrawMode.OnNonSelected; + + public static void DrawOnSelected([NotNull] this T target, [NotNull] Action action) + where T : MonoBehaviour, IGizmos + { + if (target.WillDrawOnSelected()) action(target); + } + + public static void DrawOnNonSelected([NotNull] this T target, [NotNull] Action action) + where T : MonoBehaviour, IGizmos + { + if (target.WillDrawOnNonSelected()) action(target); + } + } +} diff --git a/Assets/RekornTools/Debug/DrawerHelper.cs.meta b/Assets/RekornTools/Debug/DrawerHelper.cs.meta new file mode 100644 index 0000000..4f28054 --- /dev/null +++ b/Assets/RekornTools/Debug/DrawerHelper.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: d987f79fd21940c0b866ec16731ede96 +timeCreated: 1647317721 \ No newline at end of file diff --git a/Assets/RekornTools/Debug/GizmoUtils.cs b/Assets/RekornTools/Debug/GizmoUtils.cs new file mode 100644 index 0000000..d552666 --- /dev/null +++ b/Assets/RekornTools/Debug/GizmoUtils.cs @@ -0,0 +1,43 @@ +using System; +using UnityEditor; +using UnityEngine; + +namespace RekornTools.Debug +{ + public static class GizmoUtils + { + public static float ZoomLevel + { + get + { + if (SceneView.currentDrawingSceneView != null) return SceneView.currentDrawingSceneView.size; + + return 1; + } + } + + public static float InversedZoomLevel => 1f / ZoomLevel; + + public static float ClampedZoomLevel(float farDistance) => Mathf.Clamp(ZoomLevel, 1f, farDistance); + public static float ClampedInversedZoomLevel(float farDistance) => 1f / ClampedZoomLevel(farDistance); + + public static void DrawThickLine(Vector3 start, Vector3 end, float thickness, Color color) => + Handles.DrawBezier(start, end, start, end, color, null, thickness); + } + + [Flags] public enum TransformTool + { + None = 0, + Move = 1 << 0, + Rotate = 1 << 1, + Scale = 1 << 2, + } + + public enum DrawMode + { + Invisible, + OnSelected, + OnNonSelected, + Always, + } +} diff --git a/Assets/RekornTools/Debug/GizmoUtils.cs.meta b/Assets/RekornTools/Debug/GizmoUtils.cs.meta new file mode 100644 index 0000000..2efa794 --- /dev/null +++ b/Assets/RekornTools/Debug/GizmoUtils.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 1da21ac2b403492daa27b6f3857c1398 +timeCreated: 1646976261 \ No newline at end of file diff --git a/Assets/RekornTools/Debug/HandleGizmos.cs b/Assets/RekornTools/Debug/HandleGizmos.cs new file mode 100644 index 0000000..3ad3f88 --- /dev/null +++ b/Assets/RekornTools/Debug/HandleGizmos.cs @@ -0,0 +1,101 @@ +#if UNITY_EDITOR +using UnityEditor; +#endif + +using JetBrains.Annotations; +using UnityEngine; + +namespace RekornTools.Debug +{ + [DisallowMultipleComponent] + public sealed class HandleGizmos : MonoBehaviour, IGizmos + { +#if UNITY_EDITOR + [field: SerializeField] public DrawMode DrawMode { get; set; } = DrawMode.OnSelected; + [SerializeField] TransformTool tool = TransformTool.Move | TransformTool.Rotate; + + bool _isSelected; + + [UsedImplicitly] + [CanEditMultipleObjects] + [CustomEditor(typeof(HandleGizmos))] + public sealed class Drawer : Editor + { + void OnEnable() + { + SceneView.duringSceneGui -= OnScene; + SceneView.duringSceneGui += OnScene; + } + + void OnScene([CanBeNull] SceneView sceneView) + { + var component = target as HandleGizmos; + if (component == null) return; + + DrawGizmos(component); + } + + [DrawGizmo(GizmoType.Selected)] + static void OnSelected([NotNull] HandleGizmos t, GizmoType _) => t._isSelected = true; + + [DrawGizmo(GizmoType.NonSelected)] + static void OnNonSelected([NotNull] HandleGizmos t, GizmoType _) => t._isSelected = false; + + static void DrawGizmos([NotNull] HandleGizmos target) + { + if (target.tool == TransformTool.None) return; + + if (target._isSelected) + { + Tools.current = Tool.Custom; + if (target.WillDrawOnSelected()) DrawHandles(target); + } + else + { + if (target.WillDrawOnNonSelected()) DrawHandles(target); + } + } + + static void DrawHandles([NotNull] HandleGizmos target) + { + DrawCustomHandles(target, out var position, out var rotation, out var scale); + + if (GUI.changed) + { + Transform t = target.transform; + + Undo.RecordObject(t, "Transform Change"); + { + t.position = position; + t.localRotation = rotation; + t.localScale = scale; + } + } + } + + static void DrawCustomHandles([NotNull] HandleGizmos target, out Vector3 p, out Quaternion r, out Vector3 s) + { + var t = target.transform; + p = t.position; + r = t.localRotation; + s = t.localScale; + + var flagMove = target.tool.HasFlag(TransformTool.Move); + var flagRotate = target.tool.HasFlag(TransformTool.Rotate); + var flagScale = target.tool.HasFlag(TransformTool.Scale); + + if (flagMove && flagRotate && flagScale) + { + Handles.TransformHandle(ref p, ref r, ref s); + } + else + { + if (flagScale) s = Handles.ScaleHandle(s, p, r, HandleUtility.GetHandleSize(p) * 1.25f); + if (flagMove) p = Handles.PositionHandle(p, r); + if (flagRotate) r = Handles.RotationHandle(r, p); + } + } + } +#endif + } +} diff --git a/Assets/RekornTools/Debug/HandleGizmos.cs.meta b/Assets/RekornTools/Debug/HandleGizmos.cs.meta new file mode 100644 index 0000000..b784572 --- /dev/null +++ b/Assets/RekornTools/Debug/HandleGizmos.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4acdb241ae8246b790b6c986e10c922c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 7174288486110832750, guid: 0000000000000000d000000000000000, type: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Debug/IGIzmos.cs b/Assets/RekornTools/Debug/IGIzmos.cs new file mode 100644 index 0000000..a9d6e45 --- /dev/null +++ b/Assets/RekornTools/Debug/IGIzmos.cs @@ -0,0 +1,7 @@ +namespace RekornTools.Debug +{ + public interface IGizmos + { + DrawMode DrawMode { get; set; } + } +} diff --git a/Assets/RekornTools/Debug/IGIzmos.cs.meta b/Assets/RekornTools/Debug/IGIzmos.cs.meta new file mode 100644 index 0000000..f31a111 --- /dev/null +++ b/Assets/RekornTools/Debug/IGIzmos.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 5977aeae92314b58b4d6423945533f8b +timeCreated: 1647244245 \ No newline at end of file diff --git a/Assets/RekornTools/Debug/NameTagGizmos.cs b/Assets/RekornTools/Debug/NameTagGizmos.cs new file mode 100644 index 0000000..2e923ee --- /dev/null +++ b/Assets/RekornTools/Debug/NameTagGizmos.cs @@ -0,0 +1,82 @@ +#if UNITY_EDITOR +using RekornTools.Math; +using UnityEditor; +#endif + +using JetBrains.Annotations; +using UnityEngine; + +namespace RekornTools.Debug +{ + [DisallowMultipleComponent] + public sealed class NameTagGizmos : MonoBehaviour, IGizmos + { +#if UNITY_EDITOR + [field: SerializeField] public DrawMode DrawMode { get; set; } = DrawMode.OnSelected; + [SerializeField] string nameOverride = string.Empty; + + [Header("Font Settings")] + [SerializeField] bool autoScaled = true; + + [SerializeField] Color textColor = Color.white; + [SerializeField, Range(0f, 100f)] int fontSize = 80; + [SerializeField, Range(1f, 10f)] float fontSizeClippingDistance = 5f; + + [Header("Position")] + [SerializeField] bool distanceAutoScaled = true; + + [SerializeField] Color lineColor = Color.magenta; + [SerializeField] VectorExtensions.NormalAxis axis = VectorExtensions.NormalAxis.Up; + + [SerializeField, Range(0f, 10f)] float distance = 1.5f; + + readonly GUIStyle _style = new GUIStyle(); + + [UsedImplicitly] public sealed class GizmosDrawer + { + [DrawGizmo(GizmoType.Selected)] + static void OnSelected([NotNull] NameTagGizmos t, GizmoType _) => t.DrawOnSelected(DrawGizmos); + + [DrawGizmo(GizmoType.NonSelected)] + static void OnNonSelected([NotNull] NameTagGizmos t, GizmoType _) => t.DrawOnNonSelected(DrawGizmos); + + static void DrawGizmos([NotNull] NameTagGizmos target) + { + if (target._style != null) + { + target._style.fontSize = GetScaledFontSize(target.fontSize); + if (target._style.normal != null) target._style.normal.textColor = target.textColor; + } + + var tagName = string.IsNullOrWhiteSpace(target.nameOverride) + ? target.gameObject.name + : target.nameOverride; + + var t = target.transform; + var p = t.position; + var tp = p + VectorExtensions.GetNormal(target.axis) * GetScaledLength(target.distance); + + Handles.Label(tp, tagName, target._style); + + Gizmos.color = target.lineColor; + Gizmos.DrawLine(p, tp); + + int GetScaledFontSize(int size) + { + var result = size; + if (target.autoScaled) + result = (int)(result * GizmoUtils.ClampedInversedZoomLevel(target.fontSizeClippingDistance)); + return result; + } + + float GetScaledLength(float length) + { + var result = length; + if (!target.distanceAutoScaled) result *= GizmoUtils.ZoomLevel; + return result; + } + } + } +#endif + } +} diff --git a/Assets/RekornTools/Debug/NameTagGizmos.cs.meta b/Assets/RekornTools/Debug/NameTagGizmos.cs.meta new file mode 100644 index 0000000..c0bf591 --- /dev/null +++ b/Assets/RekornTools/Debug/NameTagGizmos.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ca88cb7103964d65845184596c6bc5df +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 1206586993520771344, guid: 0000000000000000d000000000000000, type: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Debug/NormalGizmos.cs b/Assets/RekornTools/Debug/NormalGizmos.cs new file mode 100644 index 0000000..4734351 --- /dev/null +++ b/Assets/RekornTools/Debug/NormalGizmos.cs @@ -0,0 +1,49 @@ +using JetBrains.Annotations; +using UnityEditor; +using UnityEngine; + +namespace RekornTools.Debug +{ + [DisallowMultipleComponent] + public sealed class NormalGizmos : MonoBehaviour, IGizmos + { +#if UNITY_EDITOR + [field: SerializeField] public DrawMode DrawMode { get; set; } = DrawMode.OnSelected; + [SerializeField] bool autoScaled = true; + [SerializeField, Range(0f, 10f)] float lineLength = 1f; + [SerializeField, Range(0f, 30f)] float lineThickness = 5f; + + [UsedImplicitly] public sealed class GizmosDrawer + { + [DrawGizmo(GizmoType.Selected)] + static void OnSelected([NotNull] NormalGizmos t, GizmoType _) => t.DrawOnSelected(DrawGizmos); + + [DrawGizmo(GizmoType.NonSelected)] + static void OnNonSelected([NotNull] NormalGizmos t, GizmoType _) => t.DrawOnNonSelected(DrawGizmos); + + static void DrawGizmos([NotNull] NormalGizmos target) + { + var t = target.transform; + var p = t.position; + + var scaledLength = GetScaledLength(target.lineLength); + + var px = p + t.right * scaledLength; + var py = p + t.up * scaledLength; + var pz = p + t.forward * scaledLength; + + GizmoUtils.DrawThickLine(p, px, target.lineThickness, Color.red); + GizmoUtils.DrawThickLine(p, py, target.lineThickness, Color.green); + GizmoUtils.DrawThickLine(p, pz, target.lineThickness, Color.blue); + + float GetScaledLength(float length) + { + var result = length; + if (!target.autoScaled) result *= GizmoUtils.ZoomLevel; + return result; + } + } + } +#endif + } +} diff --git a/Assets/RekornTools/Debug/NormalGizmos.cs.meta b/Assets/RekornTools/Debug/NormalGizmos.cs.meta new file mode 100644 index 0000000..c4680e8 --- /dev/null +++ b/Assets/RekornTools/Debug/NormalGizmos.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2bfea2a088ee0f74db99654dd198afcf +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: -5487077368411116049, guid: 0000000000000000d000000000000000, type: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Debug/PhysicsGizmos.cs b/Assets/RekornTools/Debug/PhysicsGizmos.cs new file mode 100644 index 0000000..9724233 --- /dev/null +++ b/Assets/RekornTools/Debug/PhysicsGizmos.cs @@ -0,0 +1,74 @@ +using JetBrains.Annotations; +using UnityEditor; +using UnityEngine; + +namespace RekornTools.Debug +{ + [DisallowMultipleComponent] + public sealed class PhysicsGizmos : MonoBehaviour, IGizmos + { +#if UNITY_EDITOR + [field: SerializeField] public DrawMode DrawMode { get; set; } = DrawMode.OnSelected; + [SerializeField, Range(0f, 1f)] float minMovement = 0.01f; + [SerializeField, Range(0f, 30f)] float velocityThickness = 5f; + [SerializeField] Color velocityColor = Color.yellow; + [SerializeField, Range(0f, 30f)] float accelerationThickness = 10f; + [SerializeField] Color accelerationColor = Color.magenta; + + Vector3 _prevPosition; + Vector3 _prevVelocity; + Vector3 _velocity; + Vector3 _acceleration; + float _inversedFixedDeltaTime; + bool _wasMoved; + + void Awake() + { + _inversedFixedDeltaTime = 1f / Time.fixedDeltaTime; + } + + void FixedUpdate() + { + var currentPosition = transform.position; + + var deltaPosition = currentPosition - _prevPosition; + _velocity = deltaPosition * _inversedFixedDeltaTime; + + var deltaVelocity = _velocity - _prevVelocity; + _acceleration = deltaVelocity * _inversedFixedDeltaTime; + + _prevPosition = currentPosition; + _prevVelocity = _velocity; + + _wasMoved = deltaPosition.sqrMagnitude > minMovement * minMovement; + } + + [UsedImplicitly] public sealed class GizmosDrawer + { + [DrawGizmo(GizmoType.Selected)] + static void OnSelected([NotNull] PhysicsGizmos t, GizmoType _) => t.DrawOnSelected(DrawGizmos); + + [DrawGizmo(GizmoType.NonSelected)] + static void OnNonSelected([NotNull] PhysicsGizmos t, GizmoType _) => t.DrawOnNonSelected(DrawGizmos); + + static void DrawGizmos([NotNull] PhysicsGizmos target) + { + var po = target.transform.position; + var pv = po + target._velocity; + var pa = po + target._acceleration; + + if (target._wasMoved) + { + Color vColor = target.velocityColor; + GizmoUtils.DrawThickLine(po, pv, target.velocityThickness, vColor); + DrawArrow.ForGizmoTwoPoints(po, pv, vColor); + + Color aColor = target.accelerationColor; + GizmoUtils.DrawThickLine(po, pa, target.accelerationThickness, aColor); + DrawArrow.ForGizmoTwoPoints(po, pa, aColor); + } + } + } +#endif + } +} diff --git a/Assets/RekornTools/Debug/PhysicsGizmos.cs.meta b/Assets/RekornTools/Debug/PhysicsGizmos.cs.meta new file mode 100644 index 0000000..22328b7 --- /dev/null +++ b/Assets/RekornTools/Debug/PhysicsGizmos.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e3ef49a289c4dbe4ea7023a082f6b0da +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Debug/PositionCenterGizmos.cs b/Assets/RekornTools/Debug/PositionCenterGizmos.cs new file mode 100644 index 0000000..5d258cf --- /dev/null +++ b/Assets/RekornTools/Debug/PositionCenterGizmos.cs @@ -0,0 +1,53 @@ +using System.Collections.Generic; +using JetBrains.Annotations; +using UnityEditor; +using UnityEngine; + +namespace RekornTools.Debug +{ + [DisallowMultipleComponent] + public sealed class PositionCenterGizmos : MonoBehaviour, IGizmos + { +#if UNITY_EDITOR + [field: SerializeField] public DrawMode DrawMode { get; set; } = DrawMode.OnSelected; + [SerializeField] Gradient colorGradient = new Gradient(); + [SerializeField, Range(0f, 30f)] float lineThickness = 5f; + [SerializeField] bool drawDirection = true; + [SerializeField] Color directionColor = Color.white; + [SerializeField] List targets = new List(); + + [UsedImplicitly] public sealed class GizmosDrawer + { + [DrawGizmo(GizmoType.Selected)] + static void OnSelected([NotNull] PositionCenterGizmos t, GizmoType _) => t.DrawOnSelected(DrawGizmos); + + [DrawGizmo(GizmoType.NonSelected)] + static void OnNonSelected([NotNull] PositionCenterGizmos t, GizmoType _) => t.DrawOnNonSelected(DrawGizmos); + + static void DrawGizmos([NotNull] PositionCenterGizmos target) + { + var targets = target.targets; + if (targets == null) return; + if (targets.Count < 1) return; + + var po = target.transform.position; + for (var i = 0; i < targets.Count; i++) + { + var t = targets[i]; + if (t == null) continue; + + var p = t.position; + + if (target.colorGradient != null) + { + var color = target.colorGradient.Evaluate(i / (targets.Count - 1f)); + GizmoUtils.DrawThickLine(po, p, target.lineThickness, color); + } + + if (target.drawDirection) DrawArrow.ForGizmoTwoPoints(po, p, target.directionColor); + } + } + } +#endif + } +} diff --git a/Assets/RekornTools/Debug/PositionCenterGizmos.cs.meta b/Assets/RekornTools/Debug/PositionCenterGizmos.cs.meta new file mode 100644 index 0000000..c388e6b --- /dev/null +++ b/Assets/RekornTools/Debug/PositionCenterGizmos.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 0317b5d99b7c4d96885980fba6a56629 +timeCreated: 1647313137 \ No newline at end of file diff --git a/Assets/RekornTools/Debug/PositionChainGizmos.cs b/Assets/RekornTools/Debug/PositionChainGizmos.cs new file mode 100644 index 0000000..8f203a1 --- /dev/null +++ b/Assets/RekornTools/Debug/PositionChainGizmos.cs @@ -0,0 +1,54 @@ +using System.Collections.Generic; +using JetBrains.Annotations; +using UnityEditor; +using UnityEngine; + +namespace RekornTools.Debug +{ + [DisallowMultipleComponent] + public class PositionChainGizmos : MonoBehaviour, IGizmos + { +#if UNITY_EDITOR + [field: SerializeField] public DrawMode DrawMode { get; set; } = DrawMode.OnSelected; + [SerializeField] Gradient colorGradient = new Gradient(); + [SerializeField, Range(0f, 30f)] float lineThickness = 5f; + [SerializeField] bool drawDirection = true; + [SerializeField] Color directionColor = Color.white; + [SerializeField] List targets = new List(); + + [UsedImplicitly] public class GizmosDrawer + { + [DrawGizmo(GizmoType.Selected)] + static void OnSelected([NotNull] PositionChainGizmos t, GizmoType _) => t.DrawOnSelected(DrawGizmos); + + [DrawGizmo(GizmoType.NonSelected)] + static void OnNonSelected([NotNull] PositionChainGizmos t, GizmoType _) => t.DrawOnNonSelected(DrawGizmos); + + static void DrawGizmos([NotNull] PositionChainGizmos target) + { + var targets = target.targets; + if (targets == null) return; + if (targets.Count < 2) return; + for (var i = 0; i < targets.Count - 1; i++) + { + var t1 = targets[i]; + var t2 = targets[i + 1]; + + if (t1 == null || t2 == null) continue; + + var p1 = t1.position; + var p2 = t2.position; + + if (target.colorGradient != null) + { + var color = target.colorGradient.Evaluate(i / (targets.Count - 1f)); + GizmoUtils.DrawThickLine(p1, p2, target.lineThickness, color); + } + + if (target.drawDirection) DrawArrow.ForGizmoTwoPoints(p1, p2, target.directionColor); + } + } + } +#endif + } +} diff --git a/Assets/RekornTools/Debug/PositionChainGizmos.cs.meta b/Assets/RekornTools/Debug/PositionChainGizmos.cs.meta new file mode 100644 index 0000000..13f4974 --- /dev/null +++ b/Assets/RekornTools/Debug/PositionChainGizmos.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: cfaf16657bb8460ea9198fa529f2441e +timeCreated: 1647243925 \ No newline at end of file diff --git a/Assets/RekornTools/Debug/RekornTools.Debug.asmdef b/Assets/RekornTools/Debug/RekornTools.Debug.asmdef new file mode 100644 index 0000000..e9d48e5 --- /dev/null +++ b/Assets/RekornTools/Debug/RekornTools.Debug.asmdef @@ -0,0 +1,18 @@ +{ + "name": "RekornTools.Debug", + "references": [ + "GUID:2618654c3f986a34286d6d44683fbbb4" + ], + "includePlatforms": [ + "CloudRendering", + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Assets/RekornTools/Debug/RekornTools.Debug.asmdef.meta b/Assets/RekornTools/Debug/RekornTools.Debug.asmdef.meta new file mode 100644 index 0000000..954633a --- /dev/null +++ b/Assets/RekornTools/Debug/RekornTools.Debug.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 6dfefc15ca150264591f3dc3467ce4dd +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/LICENSE b/Assets/RekornTools/LICENSE new file mode 100644 index 0000000..dab864b --- /dev/null +++ b/Assets/RekornTools/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 Rekorn + +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. diff --git a/Assets/RekornTools/LICENSE.meta b/Assets/RekornTools/LICENSE.meta new file mode 100644 index 0000000..e4fa83f --- /dev/null +++ b/Assets/RekornTools/LICENSE.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 171ddef443824249a18d139d497d786b +timeCreated: 1651229113 \ No newline at end of file diff --git a/Assets/RekornTools/Math.meta b/Assets/RekornTools/Math.meta new file mode 100644 index 0000000..495a5c1 --- /dev/null +++ b/Assets/RekornTools/Math.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9a2b076e585d6994a886a185f9f5cf83 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Math/Extensions.meta b/Assets/RekornTools/Math/Extensions.meta new file mode 100644 index 0000000..babacf7 --- /dev/null +++ b/Assets/RekornTools/Math/Extensions.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 01a0915bd8584eb686550f2dc7613da1 +timeCreated: 1645148311 \ No newline at end of file diff --git a/Assets/RekornTools/Math/Extensions/BetweenExtensions.cs b/Assets/RekornTools/Math/Extensions/BetweenExtensions.cs new file mode 100644 index 0000000..af6949b --- /dev/null +++ b/Assets/RekornTools/Math/Extensions/BetweenExtensions.cs @@ -0,0 +1,21 @@ +using System; + +// ReSharper disable InconsistentNaming + +namespace RekornTools.Math +{ + public static class BetweenExtensions + { + public static bool IsBetweenII(this T value, T min, T max) where T : struct, IComparable => + min.CompareTo(value) <= 0 && value.CompareTo(max) <= 0; + + public static bool IsBetweenEI(this T value, T min, T max) where T : struct, IComparable => + min.CompareTo(value) < 0 && value.CompareTo(max) <= 0; + + public static bool IsBetweenIE(this T value, T min, T max) where T : struct, IComparable => + min.CompareTo(value) <= 0 && value.CompareTo(max) < 0; + + public static bool IsBetweenEE(this T value, T min, T max) where T : struct, IComparable => + min.CompareTo(value) < 0 && value.CompareTo(max) < 0; + } +} diff --git a/Assets/RekornTools/Math/Extensions/BetweenExtensions.cs.meta b/Assets/RekornTools/Math/Extensions/BetweenExtensions.cs.meta new file mode 100644 index 0000000..d32c078 --- /dev/null +++ b/Assets/RekornTools/Math/Extensions/BetweenExtensions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f24b478e2bb3413f85416479257692de +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Math/Extensions/ListExtensions.cs b/Assets/RekornTools/Math/Extensions/ListExtensions.cs new file mode 100644 index 0000000..fe8ee22 --- /dev/null +++ b/Assets/RekornTools/Math/Extensions/ListExtensions.cs @@ -0,0 +1,52 @@ +using System; +using System.Collections.Generic; +using JetBrains.Annotations; + +namespace RekornTools.Math +{ + public static class ListExtensions + { + public static int FindNearestBiggerIndex( + [NotNull] this IReadOnlyList list, [NotNull] T2 target, [NotNull] Func selector) + { + var i = list.BinarySearch(target, selector); + + return ClampArrayIndex(i >= 0 ? i : ~i, 0, list.Count); + } + + public static int FindNearestSmallerIndex( + [NotNull] this IReadOnlyList list, [NotNull] T2 target, [NotNull] Func selector) + { + var i = list.BinarySearch(target, selector); + + return ClampArrayIndex(i >= 0 ? i : ~i - 1, 0, list.Count); + } + + private static int ClampArrayIndex(int i, int from, int to) + { + if (i < from) i = from; + if (i >= to) i = to - 1; + return i; + } + + private static int BinarySearch([NotNull] this IReadOnlyList list, [NotNull] T2 target, [NotNull] Func selector) + { + var min = 0; + var max = list.Count - 1; + var comparer = Comparer.Default; + + while (min <= max) + { + var mid = min + ((max - min) >> 1); + var num = comparer.Compare(selector(list[mid]), target); + + if (num == 0) return mid; + + if (num < 0) min = mid + 1; + else max = mid - 1; + } + + return ~min; + } + } +} diff --git a/Assets/RekornTools/Math/Extensions/ListExtensions.cs.meta b/Assets/RekornTools/Math/Extensions/ListExtensions.cs.meta new file mode 100644 index 0000000..6609c0c --- /dev/null +++ b/Assets/RekornTools/Math/Extensions/ListExtensions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 837e58a2394145edb6d36f7b51b02bf6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Math/Extensions/MathfExtensions.cs b/Assets/RekornTools/Math/Extensions/MathfExtensions.cs new file mode 100644 index 0000000..72ccc5e --- /dev/null +++ b/Assets/RekornTools/Math/Extensions/MathfExtensions.cs @@ -0,0 +1,17 @@ +using UnityEngine; + +namespace RekornTools.Math +{ + public static class MathfExtensions + { + public static int LerpInt(int prevValue, int nextValue, float lerpSpeed, int lerpStep) + { + var lerpValue = Mathf.Lerp(prevValue, nextValue, lerpSpeed); + var answer = AbsMax(lerpValue, lerpStep); + return (int)answer; + } + + public static float AbsMax(float a, float b) => Mathf.Max(Mathf.Abs(a), Mathf.Abs(b)); + public static float AbsMin(float a, float b) => Mathf.Min(Mathf.Abs(a), Mathf.Abs(b)); + } +} diff --git a/Assets/RekornTools/Math/Extensions/MathfExtensions.cs.meta b/Assets/RekornTools/Math/Extensions/MathfExtensions.cs.meta new file mode 100644 index 0000000..6122b92 --- /dev/null +++ b/Assets/RekornTools/Math/Extensions/MathfExtensions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 47dc8770955e4e4693233341fcc6dc1a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Math/Extensions/VectorExtensions.cs b/Assets/RekornTools/Math/Extensions/VectorExtensions.cs new file mode 100644 index 0000000..bb763a3 --- /dev/null +++ b/Assets/RekornTools/Math/Extensions/VectorExtensions.cs @@ -0,0 +1,77 @@ +using System.Diagnostics.CodeAnalysis; +using JetBrains.Annotations; +using UnityEngine; + +namespace RekornTools.Math +{ + public static class VectorExtensions + { + public enum NormalAxis + { + Up, + Down, + Left, + Right, + Forward, + Back, + } + + public static Vector3 GetNormal(NormalAxis axis) + { + switch (axis) + { + case NormalAxis.Up: return Vector3.up; + case NormalAxis.Down: return Vector3.down; + case NormalAxis.Left: return Vector3.left; + case NormalAxis.Right: return Vector3.right; + case NormalAxis.Forward: return Vector3.forward; + case NormalAxis.Back: return Vector3.back; + default: return Vector3.zero; + } + } + + [SuppressMessage("ReSharper", "Unity.InefficientPropertyAccess")] + public static Vector3 GetNormal([System.Diagnostics.CodeAnalysis.NotNull] this Transform vector, NormalAxis axis) + { + switch (axis) + { + case NormalAxis.Up: return vector.up; + case NormalAxis.Down: return -vector.up; + case NormalAxis.Left: return -vector.right; + case NormalAxis.Right: return vector.right; + case NormalAxis.Forward: return vector.forward; + case NormalAxis.Back: return -vector.forward; + default: return Vector3.zero; + } + } + + public static Vector2 ConvertXZ(this Vector3 input) => new Vector2(input.x, input.z); + public static Vector3 ConvertXZ(this Vector2 input) => new Vector3(input.x, 0f, input.y); + + public static Vector2 ClampMagnitude(this Vector2 v, float min, float max) + { + double sm = v.sqrMagnitude; + if (sm > (double)max * max) return v.normalized * max; + if (sm < (double)min * min) return v.normalized * min; + + return v; + } + + public static Vector3 ClampMagnitudePlain(this Vector3 v, float min, float max) + { + var y = v.y; + v = v.ConvertXZ().ClampMagnitude(min, max).ConvertXZ(); + v.y = y; + return v; + } + + public static Vector3 ClampMagnitude(this Vector3 v, float min, float max) + { + double sm = v.sqrMagnitude; + if (sm > (double)max * max) return v.normalized * max; + if (sm < (double)min * min) return v.normalized * min; + + return v; + } + } +} diff --git a/Assets/RekornTools/Math/Extensions/VectorExtensions.cs.meta b/Assets/RekornTools/Math/Extensions/VectorExtensions.cs.meta new file mode 100644 index 0000000..b05f99f --- /dev/null +++ b/Assets/RekornTools/Math/Extensions/VectorExtensions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d326e957fe4b42009a5e9095da15bb25 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Math/RekornTools.Math.asmdef b/Assets/RekornTools/Math/RekornTools.Math.asmdef new file mode 100644 index 0000000..ecb66d1 --- /dev/null +++ b/Assets/RekornTools/Math/RekornTools.Math.asmdef @@ -0,0 +1,13 @@ +{ + "name": "RekornTools.Math", + "references": [], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Assets/RekornTools/Math/RekornTools.Math.asmdef.meta b/Assets/RekornTools/Math/RekornTools.Math.asmdef.meta new file mode 100644 index 0000000..c086ef2 --- /dev/null +++ b/Assets/RekornTools/Math/RekornTools.Math.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 2618654c3f986a34286d6d44683fbbb4 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Presets.meta b/Assets/RekornTools/Presets.meta new file mode 100644 index 0000000..78af52c --- /dev/null +++ b/Assets/RekornTools/Presets.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 011d685c78250d84bae9844ae08fe998 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Presets/Light Scenario.meta b/Assets/RekornTools/Presets/Light Scenario.meta new file mode 100644 index 0000000..4979787 --- /dev/null +++ b/Assets/RekornTools/Presets/Light Scenario.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cb1437a79d294fe4db3e63000bceb834 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Presets/Light Scenario/Custom.asset b/Assets/RekornTools/Presets/Light Scenario/Custom.asset new file mode 100644 index 0000000..c9d0f05 --- /dev/null +++ b/Assets/RekornTools/Presets/Light Scenario/Custom.asset @@ -0,0 +1,24 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + 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: 271094caa09e4937b2690fdce7b07442, type: 3} + m_Name: Custom + m_EditorClassIdentifier: + Skybox: {fileID: 2100000, guid: 785a5790ee41cd141b8ab52eefee35c4, type: 2} + UseShadow: 1 + ReflectionIntensity: 0.5 + SunDirection: {x: 0.5, y: -1, z: -0} + SyncColor: 0 + SunColor: {r: 1, g: 1, b: 1, a: 0} + SunIntensity: 4 + UseSkyboxColor: 0 + SkyColor: {r: 0.5566038, g: 0.5566038, b: 0.5566038, a: 0} + SkyboxIntensity: 0.5 diff --git a/Assets/RekornTools/Presets/Light Scenario/Custom.asset.meta b/Assets/RekornTools/Presets/Light Scenario/Custom.asset.meta new file mode 100644 index 0000000..a60be6b --- /dev/null +++ b/Assets/RekornTools/Presets/Light Scenario/Custom.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a47a674b4ad598b47a9c1ca2dae1e3ad +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Presets/Light Scenario/Day.asset b/Assets/RekornTools/Presets/Light Scenario/Day.asset new file mode 100644 index 0000000..77bcb43 --- /dev/null +++ b/Assets/RekornTools/Presets/Light Scenario/Day.asset @@ -0,0 +1,24 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + 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: 271094caa09e4937b2690fdce7b07442, type: 3} + m_Name: Day + m_EditorClassIdentifier: + Skybox: {fileID: 2100000, guid: 07ba3fd7d8c509743a614aaa14e363c4, type: 2} + UseShadow: 1 + ReflectionIntensity: 0.5 + SunDirection: {x: -0.5, y: -1, z: 0.5} + SyncColor: 0 + SunColor: {r: 1, g: 1, b: 1, a: 0} + SunIntensity: 3 + UseSkyboxColor: 1 + SkyColor: {r: 0, g: 0, b: 0, a: 0} + SkyboxIntensity: 1 diff --git a/Assets/RekornTools/Presets/Light Scenario/Day.asset.meta b/Assets/RekornTools/Presets/Light Scenario/Day.asset.meta new file mode 100644 index 0000000..6ad2557 --- /dev/null +++ b/Assets/RekornTools/Presets/Light Scenario/Day.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7216d4cc814a1374c85e2e99a553bf32 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Presets/Light Scenario/Full Brightness.asset b/Assets/RekornTools/Presets/Light Scenario/Full Brightness.asset new file mode 100644 index 0000000..fc414be --- /dev/null +++ b/Assets/RekornTools/Presets/Light Scenario/Full Brightness.asset @@ -0,0 +1,24 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + 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: 271094caa09e4937b2690fdce7b07442, type: 3} + m_Name: Full Brightness + m_EditorClassIdentifier: + Skybox: {fileID: 2100000, guid: 08583edbd95894646806a995e12cbb84, type: 2} + UseShadow: 0 + ReflectionIntensity: 1 + SunDirection: {x: -0, y: -1, z: -0} + SyncColor: 0 + SunColor: {r: 1, g: 1, b: 1, a: 0} + SunIntensity: 8 + UseSkyboxColor: 0 + SkyColor: {r: 1, g: 1, b: 1, a: 0} + SkyboxIntensity: 8 diff --git a/Assets/RekornTools/Presets/Light Scenario/Full Brightness.asset.meta b/Assets/RekornTools/Presets/Light Scenario/Full Brightness.asset.meta new file mode 100644 index 0000000..137ae4a --- /dev/null +++ b/Assets/RekornTools/Presets/Light Scenario/Full Brightness.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c6069d58d4b0d4f4f8c7274547910dbc +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Presets/Light Scenario/Night.asset b/Assets/RekornTools/Presets/Light Scenario/Night.asset new file mode 100644 index 0000000..87096aa --- /dev/null +++ b/Assets/RekornTools/Presets/Light Scenario/Night.asset @@ -0,0 +1,24 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + 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: 271094caa09e4937b2690fdce7b07442, type: 3} + m_Name: Night + m_EditorClassIdentifier: + Skybox: {fileID: 2100000, guid: 07ba3fd7d8c509743a614aaa14e363c4, type: 2} + UseShadow: 1 + ReflectionIntensity: 0.5 + SunDirection: {x: 0.5, y: 0.1, z: -0.5} + SyncColor: 0 + SunColor: {r: 0.5, g: 0.5, b: 0.5, a: 0} + SunIntensity: 0.2 + UseSkyboxColor: 1 + SkyColor: {r: 0.5, g: 0.5, b: 0.5, a: 0} + SkyboxIntensity: 0.5 diff --git a/Assets/RekornTools/Presets/Light Scenario/Night.asset.meta b/Assets/RekornTools/Presets/Light Scenario/Night.asset.meta new file mode 100644 index 0000000..c884620 --- /dev/null +++ b/Assets/RekornTools/Presets/Light Scenario/Night.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c7876793e31651448a5571852ca1efad +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Presets/Light Scenario/Pure Black.asset b/Assets/RekornTools/Presets/Light Scenario/Pure Black.asset new file mode 100644 index 0000000..282ba48 --- /dev/null +++ b/Assets/RekornTools/Presets/Light Scenario/Pure Black.asset @@ -0,0 +1,24 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + 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: 271094caa09e4937b2690fdce7b07442, type: 3} + m_Name: Pure Black + m_EditorClassIdentifier: + Skybox: {fileID: 2100000, guid: 88a4c4612ececc246a81cf410d55d1e3, type: 2} + UseShadow: 1 + ReflectionIntensity: 0 + SunDirection: {x: -0, y: -1, z: -0} + SyncColor: 0 + SunColor: {r: 0, g: 0, b: 0, a: 0} + SunIntensity: 0 + UseSkyboxColor: 0 + SkyColor: {r: 0, g: 0, b: 0, a: 0} + SkyboxIntensity: 0 diff --git a/Assets/RekornTools/Presets/Light Scenario/Pure Black.asset.meta b/Assets/RekornTools/Presets/Light Scenario/Pure Black.asset.meta new file mode 100644 index 0000000..e71de5d --- /dev/null +++ b/Assets/RekornTools/Presets/Light Scenario/Pure Black.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 042903a12028f2d49a164be6f4fd2ba5 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Presets/Light Scenario/Pure White.asset b/Assets/RekornTools/Presets/Light Scenario/Pure White.asset new file mode 100644 index 0000000..b3aa2ea --- /dev/null +++ b/Assets/RekornTools/Presets/Light Scenario/Pure White.asset @@ -0,0 +1,24 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + 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: 271094caa09e4937b2690fdce7b07442, type: 3} + m_Name: Pure White + m_EditorClassIdentifier: + Skybox: {fileID: 2100000, guid: adde8ff8e7d4eaa4e81f4f41ec30bf3f, type: 2} + UseShadow: 0 + ReflectionIntensity: 0 + SunDirection: {x: -0, y: -1, z: -0} + SyncColor: 1 + SunColor: {r: 1, g: 1, b: 1, a: 0} + SunIntensity: 1 + UseSkyboxColor: 0 + SkyColor: {r: 1, g: 1, b: 1, a: 0} + SkyboxIntensity: 1 diff --git a/Assets/RekornTools/Presets/Light Scenario/Pure White.asset.meta b/Assets/RekornTools/Presets/Light Scenario/Pure White.asset.meta new file mode 100644 index 0000000..58f6fc3 --- /dev/null +++ b/Assets/RekornTools/Presets/Light Scenario/Pure White.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 86e0532678b7b8448931109b7c30683d +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Presets/Light Scenario/Skybox.meta b/Assets/RekornTools/Presets/Light Scenario/Skybox.meta new file mode 100644 index 0000000..5df61aa --- /dev/null +++ b/Assets/RekornTools/Presets/Light Scenario/Skybox.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8a51e747c19ce0949a50aaaa41dc8170 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Presets/Light Scenario/Skybox/Custom.mat b/Assets/RekornTools/Presets/Light Scenario/Skybox/Custom.mat new file mode 100644 index 0000000..e9a26fa --- /dev/null +++ b/Assets/RekornTools/Presets/Light Scenario/Skybox/Custom.mat @@ -0,0 +1,84 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Custom + m_Shader: {fileID: 106, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _SUNDISK_HIGH_QUALITY + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AtmosphereThickness: 1.22 + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _Exposure: 1.3 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SunDisk: 2 + - _SunSize: 0.04 + - _SunSizeConvergence: 5 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _GroundColor: {r: 0.21176471, g: 0.25677755, b: 0.34117648, a: 1} + - _SkyTint: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/RekornTools/Presets/Light Scenario/Skybox/Custom.mat.meta b/Assets/RekornTools/Presets/Light Scenario/Skybox/Custom.mat.meta new file mode 100644 index 0000000..5c53a61 --- /dev/null +++ b/Assets/RekornTools/Presets/Light Scenario/Skybox/Custom.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 785a5790ee41cd141b8ab52eefee35c4 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Presets/Light Scenario/Skybox/Earth.mat b/Assets/RekornTools/Presets/Light Scenario/Skybox/Earth.mat new file mode 100644 index 0000000..9a0777f --- /dev/null +++ b/Assets/RekornTools/Presets/Light Scenario/Skybox/Earth.mat @@ -0,0 +1,84 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Earth + m_Shader: {fileID: 106, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _SUNDISK_HIGH_QUALITY + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AtmosphereThickness: 1 + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _Exposure: 1.3 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SunDisk: 2 + - _SunSize: 0.04 + - _SunSizeConvergence: 5 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _GroundColor: {r: 0.36899996, g: 0.34899998, b: 0.34099993, a: 1} + - _SkyTint: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/RekornTools/Presets/Light Scenario/Skybox/Earth.mat.meta b/Assets/RekornTools/Presets/Light Scenario/Skybox/Earth.mat.meta new file mode 100644 index 0000000..f1b875c --- /dev/null +++ b/Assets/RekornTools/Presets/Light Scenario/Skybox/Earth.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 07ba3fd7d8c509743a614aaa14e363c4 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Presets/Light Scenario/Skybox/Full Brightness.mat b/Assets/RekornTools/Presets/Light Scenario/Skybox/Full Brightness.mat new file mode 100644 index 0000000..6fe125c --- /dev/null +++ b/Assets/RekornTools/Presets/Light Scenario/Skybox/Full Brightness.mat @@ -0,0 +1,118 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Full Brightness + m_Shader: {fileID: 106, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _MAPPING_LATITUDE_LONGITUDE_LAYOUT _SUNDISK_SIMPLE + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BackTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DownTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _FrontTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _LeftTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _RightTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Tex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _UpTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AtmosphereThickness: 1 + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _Exposure: 8 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _ImageType: 0 + - _Layout: 0 + - _Mapping: 1 + - _Metallic: 0 + - _MirrorOnBack: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _Rotation: 0 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SunDisk: 1 + - _SunSize: 1 + - _SunSizeConvergence: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _GroundColor: {r: 1, g: 1, b: 1, a: 1} + - _SkyTint: {r: 1, g: 1, b: 1, a: 1} + - _Tint: {r: 1, g: 1, b: 1, a: 0.5} diff --git a/Assets/RekornTools/Presets/Light Scenario/Skybox/Full Brightness.mat.meta b/Assets/RekornTools/Presets/Light Scenario/Skybox/Full Brightness.mat.meta new file mode 100644 index 0000000..ed38b25 --- /dev/null +++ b/Assets/RekornTools/Presets/Light Scenario/Skybox/Full Brightness.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 08583edbd95894646806a995e12cbb84 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Presets/Light Scenario/Skybox/Pure Black.mat b/Assets/RekornTools/Presets/Light Scenario/Skybox/Pure Black.mat new file mode 100644 index 0000000..02499c0 --- /dev/null +++ b/Assets/RekornTools/Presets/Light Scenario/Skybox/Pure Black.mat @@ -0,0 +1,118 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Pure Black + m_Shader: {fileID: 103, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _MAPPING_LATITUDE_LONGITUDE_LAYOUT _SUNDISK_SIMPLE + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BackTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DownTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _FrontTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _LeftTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _RightTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Tex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _UpTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AtmosphereThickness: 1 + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _Exposure: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _ImageType: 0 + - _Layout: 0 + - _Mapping: 1 + - _Metallic: 0 + - _MirrorOnBack: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _Rotation: 0 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SunDisk: 1 + - _SunSize: 1 + - _SunSizeConvergence: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _GroundColor: {r: 1, g: 1, b: 1, a: 1} + - _SkyTint: {r: 1, g: 1, b: 1, a: 1} + - _Tint: {r: 0, g: 0, b: 0, a: 0.5} diff --git a/Assets/RekornTools/Presets/Light Scenario/Skybox/Pure Black.mat.meta b/Assets/RekornTools/Presets/Light Scenario/Skybox/Pure Black.mat.meta new file mode 100644 index 0000000..9dfe806 --- /dev/null +++ b/Assets/RekornTools/Presets/Light Scenario/Skybox/Pure Black.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 88a4c4612ececc246a81cf410d55d1e3 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Presets/Light Scenario/Skybox/Pure White.mat b/Assets/RekornTools/Presets/Light Scenario/Skybox/Pure White.mat new file mode 100644 index 0000000..69cd26b --- /dev/null +++ b/Assets/RekornTools/Presets/Light Scenario/Skybox/Pure White.mat @@ -0,0 +1,118 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Pure White + m_Shader: {fileID: 103, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _MAPPING_LATITUDE_LONGITUDE_LAYOUT _SUNDISK_SIMPLE + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BackTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DownTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _FrontTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _LeftTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _RightTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Tex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _UpTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AtmosphereThickness: 1 + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _Exposure: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _ImageType: 0 + - _Layout: 0 + - _Mapping: 1 + - _Metallic: 0 + - _MirrorOnBack: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _Rotation: 0 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SunDisk: 1 + - _SunSize: 1 + - _SunSizeConvergence: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _GroundColor: {r: 1, g: 1, b: 1, a: 1} + - _SkyTint: {r: 1, g: 1, b: 1, a: 1} + - _Tint: {r: 1, g: 1, b: 1, a: 0.5} diff --git a/Assets/RekornTools/Presets/Light Scenario/Skybox/Pure White.mat.meta b/Assets/RekornTools/Presets/Light Scenario/Skybox/Pure White.mat.meta new file mode 100644 index 0000000..170203c --- /dev/null +++ b/Assets/RekornTools/Presets/Light Scenario/Skybox/Pure White.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: adde8ff8e7d4eaa4e81f4f41ec30bf3f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Presets/Light Scenario/Sunrise.asset b/Assets/RekornTools/Presets/Light Scenario/Sunrise.asset new file mode 100644 index 0000000..9daf327 --- /dev/null +++ b/Assets/RekornTools/Presets/Light Scenario/Sunrise.asset @@ -0,0 +1,24 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + 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: 271094caa09e4937b2690fdce7b07442, type: 3} + m_Name: Sunrise + m_EditorClassIdentifier: + Skybox: {fileID: 2100000, guid: 07ba3fd7d8c509743a614aaa14e363c4, type: 2} + UseShadow: 1 + ReflectionIntensity: 0.5 + SunDirection: {x: 0, y: 0.05, z: -0.5} + SyncColor: 0 + SunColor: {r: 0, g: 0.71642184, b: 1, a: 0} + SunIntensity: 1 + UseSkyboxColor: 0 + SkyColor: {r: 1, g: 0.3795064, b: 0, a: 0} + SkyboxIntensity: 0.5 diff --git a/Assets/RekornTools/Presets/Light Scenario/Sunrise.asset.meta b/Assets/RekornTools/Presets/Light Scenario/Sunrise.asset.meta new file mode 100644 index 0000000..2539d12 --- /dev/null +++ b/Assets/RekornTools/Presets/Light Scenario/Sunrise.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 30043cbe83153aa4e90d266ac0e865bc +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Presets/Light Scenario/Sunset.asset b/Assets/RekornTools/Presets/Light Scenario/Sunset.asset new file mode 100644 index 0000000..8f5c1f2 --- /dev/null +++ b/Assets/RekornTools/Presets/Light Scenario/Sunset.asset @@ -0,0 +1,24 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + 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: 271094caa09e4937b2690fdce7b07442, type: 3} + m_Name: Sunset + m_EditorClassIdentifier: + Skybox: {fileID: 2100000, guid: 07ba3fd7d8c509743a614aaa14e363c4, type: 2} + UseShadow: 1 + ReflectionIntensity: 0.5 + SunDirection: {x: 0.5, y: 0.01, z: -0.5} + SyncColor: 0 + SunColor: {r: 1, g: 0.50985616, b: 0, a: 0} + SunIntensity: 0.5 + UseSkyboxColor: 1 + SkyColor: {r: 0, g: 0, b: 0, a: 0} + SkyboxIntensity: 0.5 diff --git a/Assets/RekornTools/Presets/Light Scenario/Sunset.asset.meta b/Assets/RekornTools/Presets/Light Scenario/Sunset.asset.meta new file mode 100644 index 0000000..44c5e11 --- /dev/null +++ b/Assets/RekornTools/Presets/Light Scenario/Sunset.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 233e5a6ef8085f94298a288da7d87b57 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Presets/Rekorn Tools.prefab b/Assets/RekornTools/Presets/Rekorn Tools.prefab new file mode 100644 index 0000000..b8987e5 --- /dev/null +++ b/Assets/RekornTools/Presets/Rekorn Tools.prefab @@ -0,0 +1,391 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &3527896265422754665 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2282721658063701435} + - component: {fileID: 1284315707096903102} + m_Layer: 0 + m_Name: Avatar Dresser + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2282721658063701435 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3527896265422754665} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 6641233036261945921} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1284315707096903102 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3527896265422754665} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1736ac66ad9eb1445bbad42ac0db8a2b, type: 3} + m_Name: + m_EditorClassIdentifier: + _dresserMode: 0 + _avatar: {fileID: 0} + _clothPrefix: + _clothSuffix: + _clothRoot: {fileID: 0} + _clothArmature: {fileID: 0} + _boneExclusions: + Items: [] +--- !u!1 &6123033526789892994 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5903845703858136240} + - component: {fileID: 7454582641523592409} + m_Layer: 0 + m_Name: Bone Renamer + m_TagString: EditorOnly + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 4294967295 + m_IsActive: 1 +--- !u!4 &5903845703858136240 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6123033526789892994} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 6641233036261945921} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &7454582641523592409 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6123033526789892994} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01a7cdc3de5c42298b1b7fab6d20dd23, type: 3} + m_Name: + m_EditorClassIdentifier: + _parent: {fileID: 0} + _sourceNaming: + k__BackingField: 1 + k__BackingField: _ + k__BackingField: L + k__BackingField: R + _targetNaming: + k__BackingField: 1 + k__BackingField: _ + k__BackingField: L + k__BackingField: R + _renameToken: + Items: [] + _exclusions: + Items: [] +--- !u!1 &6641233035632871741 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6641233035632871743} + - component: {fileID: 6641233035632871713} + - component: {fileID: 6641233035632871742} + m_Layer: 0 + m_Name: Bone Finder + m_TagString: EditorOnly + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 4294967295 + m_IsActive: 1 +--- !u!4 &6641233035632871743 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6641233035632871741} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 6641233036261945921} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &6641233035632871713 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6641233035632871741} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2a8d66205c7440078d1f5d62a41e3baa, type: 3} + m_Name: + m_EditorClassIdentifier: + k__BackingField: + Items: [] + k__BackingField: + Items: [] +--- !u!114 &6641233035632871742 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6641233035632871741} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 39ebfe4ca23f40638645de61e45056a3, type: 3} + m_Name: + m_EditorClassIdentifier: + k__BackingField: {fileID: 0} + k__BackingField: {fileID: 0} + k__BackingField: + k__BackingField: +--- !u!1 &6641233035737980004 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6641233035737980007} + - component: {fileID: 6641233035737980006} + m_Layer: 0 + m_Name: Asset Manager + m_TagString: EditorOnly + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 4294967295 + m_IsActive: 1 +--- !u!4 &6641233035737980007 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6641233035737980004} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 6641233036261945921} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &6641233035737980006 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6641233035737980004} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9c2ae58bf68685849a8aea8c5e5de75e, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 0} + Renderers: + Items: [] + Materials: + Items: [] + Shaders: + Items: [] + Textures: + Items: [] + _prevParent: {fileID: 0} +--- !u!1 &6641233036143860345 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6641233036143860344} + - component: {fileID: 6641233036143860346} + m_Layer: 0 + m_Name: Texture Optimizer + m_TagString: EditorOnly + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 4294967295 + m_IsActive: 1 +--- !u!4 &6641233036143860344 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6641233036143860345} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 6641233036261945921} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &6641233036143860346 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6641233036143860345} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8b3cf9caebe14c7a815cfbf232f86cdd, type: 3} + m_Name: + m_EditorClassIdentifier: + _parent: {fileID: 0} + _meshes: + Items: [] + _propertiesTable: {fileID: 11400000, guid: 41244db2fc7ec854eaf855c1d646a05e, type: 2} + _texturesMap: + Items: + - k__BackingField: 1 + k__BackingField: + Items: [] + - k__BackingField: 2 + k__BackingField: + Items: [] + - k__BackingField: 3 + k__BackingField: + Items: [] + - k__BackingField: 4 + k__BackingField: + Items: [] + - k__BackingField: 5 + k__BackingField: + Items: [] + - k__BackingField: 6 + k__BackingField: + Items: [] + - k__BackingField: 7 + k__BackingField: + Items: [] + - k__BackingField: 8 + k__BackingField: + Items: [] + _optimizerSettings: {fileID: 11400000, guid: 37322b49eed470842bf7eaf696f64c46, type: 2} + _prevParent: {fileID: 0} + _prevTable: {fileID: 11400000, guid: 41244db2fc7ec854eaf855c1d646a05e, type: 2} +--- !u!1 &6641233036212931384 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6641233036212931386} + - component: {fileID: 6641233036212931387} + m_Layer: 0 + m_Name: Mesh Optimizer + m_TagString: EditorOnly + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 4294967295 + m_IsActive: 1 +--- !u!4 &6641233036212931386 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6641233036212931384} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 6641233036261945921} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &6641233036212931387 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6641233036212931384} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 25aa88844e30426d955b4cd11ffc1b85, type: 3} + m_Name: + m_EditorClassIdentifier: + parent: {fileID: 0} + meshes: + Items: [] + anchorOverride: {fileID: 0} + boundingBox: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 1, y: 1, z: 1} + _prevParent: {fileID: 0} +--- !u!1 &6641233036261945950 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6641233036261945921} + m_Layer: 0 + m_Name: Rekorn Tools + m_TagString: EditorOnly + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 4294967295 + m_IsActive: 1 +--- !u!4 &6641233036261945921 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6641233036261945950} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 2282721658063701435} + - {fileID: 5903845703858136240} + - {fileID: 6641233035632871743} + - {fileID: 6641233036212931386} + - {fileID: 6641233035737980007} + - {fileID: 6641233036143860344} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Assets/RekornTools/Presets/Rekorn Tools.prefab.meta b/Assets/RekornTools/Presets/Rekorn Tools.prefab.meta new file mode 100644 index 0000000..f4f178d --- /dev/null +++ b/Assets/RekornTools/Presets/Rekorn Tools.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 6ab3562a383d05e4f965639bfbc0fbff +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Presets/Texture Importer.meta b/Assets/RekornTools/Presets/Texture Importer.meta new file mode 100644 index 0000000..2b935a6 --- /dev/null +++ b/Assets/RekornTools/Presets/Texture Importer.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fa319d125453b4f4596e2bf15bb616b3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Presets/Texture Importer/Alpha Texture Importer.preset b/Assets/RekornTools/Presets/Texture Importer/Alpha Texture Importer.preset new file mode 100644 index 0000000..932f0da --- /dev/null +++ b/Assets/RekornTools/Presets/Texture Importer/Alpha Texture Importer.preset @@ -0,0 +1,394 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!181963792 &2655988077585873504 +Preset: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Alpha Texture Importer + m_TargetType: + m_NativeTypeID: 1006 + m_ManagedTypePPtr: {fileID: 0} + m_ManagedTypeFallback: + m_Properties: + - target: {fileID: 0} + propertyPath: m_ExternalObjects.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MipMapMode + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_EnableMipMap + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_sRGBTexture + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LinearTexture + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_FadeOut + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_BorderMipMap + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MipMapsPreserveCoverage + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_AlphaTestReferenceValue + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MipMapFadeDistanceStart + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MipMapFadeDistanceEnd + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ConvertToNormalMap + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ExternalNormalMap + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_HeightScale + value: 0.25 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_NormalMapFilter + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_IsReadable + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_StreamingMipmaps + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_StreamingMipmapsPriority + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrayScaleToAlpha + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GenerateCubemap + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_CubemapConvolution + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SeamlessCubemap + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureFormat + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MaxTextureSize + value: 2048 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureSettings.m_FilterMode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureSettings.m_Aniso + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureSettings.m_MipBias + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureSettings.m_WrapU + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureSettings.m_WrapV + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureSettings.m_WrapW + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_NPOTScale + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_Lightmap + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_CompressionQuality + value: 50 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteMode + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteExtrude + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteMeshType + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_Alignment + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpritePivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpritePivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpritePixelsToUnits + value: 100 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteBorder.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteBorder.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteBorder.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteBorder.w + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteGenerateFallbackPhysicsShape + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_AlphaUsage + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_AlphaIsTransparency + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteTessellationDetail + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureType + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureShape + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SingleChannelComponent + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MaxTextureSizeSet + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_CompressionQualitySet + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureFormatSet + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ApplyGammaDecoding + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.size + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_BuildTarget + value: DefaultTexturePlatform + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_MaxTextureSize + value: 2048 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_ResizeAlgorithm + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_TextureFormat + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_TextureCompression + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_CompressionQuality + value: 50 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_CrunchedCompression + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_AllowsAlphaSplitting + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_Overridden + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_AndroidETC2FallbackOverride + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_ForceMaximumCompressionQuality_BC6H_BC7 + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_BuildTarget + value: Standalone + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_MaxTextureSize + value: 2048 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_ResizeAlgorithm + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_TextureFormat + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_TextureCompression + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_CompressionQuality + value: 50 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_CrunchedCompression + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_AllowsAlphaSplitting + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_Overridden + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_AndroidETC2FallbackOverride + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_ForceMaximumCompressionQuality_BC6H_BC7 + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Sprites.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Outline.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_PhysicsShape.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Bones.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_SpriteID + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_InternalID + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Vertices.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Indices.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Edges.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Weights.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_SecondaryTextures.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpritePackingTag + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PSDRemoveMatte + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PSDShowRemoveMatteOption + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_UserData + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_AssetBundleName + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_AssetBundleVariant + value: + objectReference: {fileID: 0} diff --git a/Assets/RekornTools/Presets/Texture Importer/Alpha Texture Importer.preset.meta b/Assets/RekornTools/Presets/Texture Importer/Alpha Texture Importer.preset.meta new file mode 100644 index 0000000..c6d1b03 --- /dev/null +++ b/Assets/RekornTools/Presets/Texture Importer/Alpha Texture Importer.preset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: df42b2d94c1d96745a1b972c07fb2dc8 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2655988077585873504 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Presets/Texture Importer/Default Texture Importer.preset b/Assets/RekornTools/Presets/Texture Importer/Default Texture Importer.preset new file mode 100644 index 0000000..deb7ee6 --- /dev/null +++ b/Assets/RekornTools/Presets/Texture Importer/Default Texture Importer.preset @@ -0,0 +1,438 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!181963792 &2655988077585873504 +Preset: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Default Texture Importer + m_TargetType: + m_NativeTypeID: 1006 + m_ManagedTypePPtr: {fileID: 0} + m_ManagedTypeFallback: + m_Properties: + - target: {fileID: 0} + propertyPath: m_ExternalObjects.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MipMapMode + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_EnableMipMap + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_sRGBTexture + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LinearTexture + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_FadeOut + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_BorderMipMap + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MipMapsPreserveCoverage + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_AlphaTestReferenceValue + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MipMapFadeDistanceStart + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MipMapFadeDistanceEnd + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ConvertToNormalMap + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ExternalNormalMap + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_HeightScale + value: 0.25 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_NormalMapFilter + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_IsReadable + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_StreamingMipmaps + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_StreamingMipmapsPriority + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrayScaleToAlpha + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GenerateCubemap + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_CubemapConvolution + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SeamlessCubemap + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureFormat + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MaxTextureSize + value: 2048 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureSettings.m_FilterMode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureSettings.m_Aniso + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureSettings.m_MipBias + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureSettings.m_WrapU + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureSettings.m_WrapV + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureSettings.m_WrapW + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_NPOTScale + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_Lightmap + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_CompressionQuality + value: 50 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteMode + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteExtrude + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteMeshType + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_Alignment + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpritePivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpritePivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpritePixelsToUnits + value: 100 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteBorder.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteBorder.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteBorder.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteBorder.w + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteGenerateFallbackPhysicsShape + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_AlphaUsage + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_AlphaIsTransparency + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteTessellationDetail + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureType + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureShape + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SingleChannelComponent + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MaxTextureSizeSet + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_CompressionQualitySet + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureFormatSet + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ApplyGammaDecoding + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.size + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_BuildTarget + value: DefaultTexturePlatform + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_MaxTextureSize + value: 2048 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_ResizeAlgorithm + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_TextureFormat + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_TextureCompression + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_CompressionQuality + value: 50 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_CrunchedCompression + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_AllowsAlphaSplitting + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_Overridden + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_AndroidETC2FallbackOverride + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_ForceMaximumCompressionQuality_BC6H_BC7 + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_BuildTarget + value: Standalone + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_MaxTextureSize + value: 2048 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_ResizeAlgorithm + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_TextureFormat + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_TextureCompression + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_CompressionQuality + value: 50 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_CrunchedCompression + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_AllowsAlphaSplitting + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_Overridden + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_AndroidETC2FallbackOverride + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_ForceMaximumCompressionQuality_BC6H_BC7 + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[2].m_BuildTarget + value: Android + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[2].m_MaxTextureSize + value: 2048 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[2].m_ResizeAlgorithm + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[2].m_TextureFormat + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[2].m_TextureCompression + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[2].m_CompressionQuality + value: 50 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[2].m_CrunchedCompression + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[2].m_AllowsAlphaSplitting + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[2].m_Overridden + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[2].m_AndroidETC2FallbackOverride + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[2].m_ForceMaximumCompressionQuality_BC6H_BC7 + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Sprites.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Outline.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_PhysicsShape.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Bones.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_SpriteID + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_InternalID + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Vertices.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Indices.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Edges.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Weights.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_SecondaryTextures.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpritePackingTag + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PSDRemoveMatte + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PSDShowRemoveMatteOption + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_UserData + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_AssetBundleName + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_AssetBundleVariant + value: + objectReference: {fileID: 0} diff --git a/Assets/RekornTools/Presets/Texture Importer/Default Texture Importer.preset.meta b/Assets/RekornTools/Presets/Texture Importer/Default Texture Importer.preset.meta new file mode 100644 index 0000000..473260c --- /dev/null +++ b/Assets/RekornTools/Presets/Texture Importer/Default Texture Importer.preset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b022044b873e2544a9cca8f510093700 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2655988077585873504 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Presets/Texture Importer/Emissive Texture Importer.preset b/Assets/RekornTools/Presets/Texture Importer/Emissive Texture Importer.preset new file mode 100644 index 0000000..1af6d14 --- /dev/null +++ b/Assets/RekornTools/Presets/Texture Importer/Emissive Texture Importer.preset @@ -0,0 +1,394 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!181963792 &2655988077585873504 +Preset: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Emissive Texture Importer + m_TargetType: + m_NativeTypeID: 1006 + m_ManagedTypePPtr: {fileID: 0} + m_ManagedTypeFallback: + m_Properties: + - target: {fileID: 0} + propertyPath: m_ExternalObjects.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MipMapMode + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_EnableMipMap + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_sRGBTexture + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LinearTexture + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_FadeOut + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_BorderMipMap + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MipMapsPreserveCoverage + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_AlphaTestReferenceValue + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MipMapFadeDistanceStart + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MipMapFadeDistanceEnd + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ConvertToNormalMap + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ExternalNormalMap + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_HeightScale + value: 0.25 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_NormalMapFilter + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_IsReadable + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_StreamingMipmaps + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_StreamingMipmapsPriority + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrayScaleToAlpha + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GenerateCubemap + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_CubemapConvolution + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SeamlessCubemap + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureFormat + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MaxTextureSize + value: 2048 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureSettings.m_FilterMode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureSettings.m_Aniso + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureSettings.m_MipBias + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureSettings.m_WrapU + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureSettings.m_WrapV + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureSettings.m_WrapW + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_NPOTScale + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_Lightmap + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_CompressionQuality + value: 50 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteMode + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteExtrude + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteMeshType + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_Alignment + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpritePivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpritePivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpritePixelsToUnits + value: 100 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteBorder.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteBorder.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteBorder.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteBorder.w + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteGenerateFallbackPhysicsShape + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_AlphaUsage + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_AlphaIsTransparency + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteTessellationDetail + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureType + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureShape + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SingleChannelComponent + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MaxTextureSizeSet + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_CompressionQualitySet + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureFormatSet + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ApplyGammaDecoding + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.size + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_BuildTarget + value: DefaultTexturePlatform + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_MaxTextureSize + value: 1024 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_ResizeAlgorithm + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_TextureFormat + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_TextureCompression + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_CompressionQuality + value: 50 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_CrunchedCompression + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_AllowsAlphaSplitting + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_Overridden + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_AndroidETC2FallbackOverride + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_ForceMaximumCompressionQuality_BC6H_BC7 + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_BuildTarget + value: Standalone + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_MaxTextureSize + value: 1024 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_ResizeAlgorithm + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_TextureFormat + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_TextureCompression + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_CompressionQuality + value: 50 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_CrunchedCompression + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_AllowsAlphaSplitting + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_Overridden + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_AndroidETC2FallbackOverride + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_ForceMaximumCompressionQuality_BC6H_BC7 + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Sprites.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Outline.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_PhysicsShape.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Bones.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_SpriteID + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_InternalID + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Vertices.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Indices.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Edges.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Weights.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_SecondaryTextures.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpritePackingTag + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PSDRemoveMatte + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PSDShowRemoveMatteOption + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_UserData + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_AssetBundleName + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_AssetBundleVariant + value: + objectReference: {fileID: 0} diff --git a/Assets/RekornTools/Presets/Texture Importer/Emissive Texture Importer.preset.meta b/Assets/RekornTools/Presets/Texture Importer/Emissive Texture Importer.preset.meta new file mode 100644 index 0000000..7b403ac --- /dev/null +++ b/Assets/RekornTools/Presets/Texture Importer/Emissive Texture Importer.preset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8fd8ffccd4b41ee4bb78aae17e3415ea +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2655988077585873504 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Presets/Texture Importer/Icon Texture Importer.preset b/Assets/RekornTools/Presets/Texture Importer/Icon Texture Importer.preset new file mode 100644 index 0000000..cf792d0 --- /dev/null +++ b/Assets/RekornTools/Presets/Texture Importer/Icon Texture Importer.preset @@ -0,0 +1,438 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!181963792 &2655988077585873504 +Preset: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Icon Texture Importer + m_TargetType: + m_NativeTypeID: 1006 + m_ManagedTypePPtr: {fileID: 0} + m_ManagedTypeFallback: + m_Properties: + - target: {fileID: 0} + propertyPath: m_ExternalObjects.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MipMapMode + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_EnableMipMap + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_sRGBTexture + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LinearTexture + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_FadeOut + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_BorderMipMap + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MipMapsPreserveCoverage + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_AlphaTestReferenceValue + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MipMapFadeDistanceStart + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MipMapFadeDistanceEnd + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ConvertToNormalMap + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ExternalNormalMap + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_HeightScale + value: 0.25 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_NormalMapFilter + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_IsReadable + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_StreamingMipmaps + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_StreamingMipmapsPriority + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrayScaleToAlpha + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GenerateCubemap + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_CubemapConvolution + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SeamlessCubemap + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureFormat + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MaxTextureSize + value: 2048 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureSettings.m_FilterMode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureSettings.m_Aniso + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureSettings.m_MipBias + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureSettings.m_WrapU + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureSettings.m_WrapV + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureSettings.m_WrapW + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_NPOTScale + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_Lightmap + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_CompressionQuality + value: 50 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteMode + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteExtrude + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteMeshType + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_Alignment + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpritePivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpritePivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpritePixelsToUnits + value: 100 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteBorder.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteBorder.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteBorder.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteBorder.w + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteGenerateFallbackPhysicsShape + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_AlphaUsage + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_AlphaIsTransparency + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteTessellationDetail + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureType + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureShape + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SingleChannelComponent + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MaxTextureSizeSet + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_CompressionQualitySet + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureFormatSet + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ApplyGammaDecoding + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.size + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_BuildTarget + value: DefaultTexturePlatform + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_MaxTextureSize + value: 64 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_ResizeAlgorithm + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_TextureFormat + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_TextureCompression + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_CompressionQuality + value: 50 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_CrunchedCompression + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_AllowsAlphaSplitting + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_Overridden + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_AndroidETC2FallbackOverride + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_ForceMaximumCompressionQuality_BC6H_BC7 + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_BuildTarget + value: Standalone + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_MaxTextureSize + value: 64 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_ResizeAlgorithm + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_TextureFormat + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_TextureCompression + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_CompressionQuality + value: 50 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_CrunchedCompression + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_AllowsAlphaSplitting + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_Overridden + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_AndroidETC2FallbackOverride + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_ForceMaximumCompressionQuality_BC6H_BC7 + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[2].m_BuildTarget + value: Android + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[2].m_MaxTextureSize + value: 64 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[2].m_ResizeAlgorithm + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[2].m_TextureFormat + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[2].m_TextureCompression + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[2].m_CompressionQuality + value: 50 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[2].m_CrunchedCompression + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[2].m_AllowsAlphaSplitting + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[2].m_Overridden + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[2].m_AndroidETC2FallbackOverride + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[2].m_ForceMaximumCompressionQuality_BC6H_BC7 + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Sprites.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Outline.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_PhysicsShape.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Bones.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_SpriteID + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_InternalID + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Vertices.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Indices.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Edges.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Weights.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_SecondaryTextures.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpritePackingTag + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PSDRemoveMatte + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PSDShowRemoveMatteOption + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_UserData + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_AssetBundleName + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_AssetBundleVariant + value: + objectReference: {fileID: 0} diff --git a/Assets/RekornTools/Presets/Texture Importer/Icon Texture Importer.preset.meta b/Assets/RekornTools/Presets/Texture Importer/Icon Texture Importer.preset.meta new file mode 100644 index 0000000..6e30f66 --- /dev/null +++ b/Assets/RekornTools/Presets/Texture Importer/Icon Texture Importer.preset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d257b393b6cab474889d7df0cbded30a +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2655988077585873504 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Presets/Texture Importer/Mask Texture Importer.preset b/Assets/RekornTools/Presets/Texture Importer/Mask Texture Importer.preset new file mode 100644 index 0000000..ad492f8 --- /dev/null +++ b/Assets/RekornTools/Presets/Texture Importer/Mask Texture Importer.preset @@ -0,0 +1,438 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!181963792 &2655988077585873504 +Preset: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Mask Texture Importer + m_TargetType: + m_NativeTypeID: 1006 + m_ManagedTypePPtr: {fileID: 0} + m_ManagedTypeFallback: + m_Properties: + - target: {fileID: 0} + propertyPath: m_ExternalObjects.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MipMapMode + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_EnableMipMap + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_sRGBTexture + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LinearTexture + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_FadeOut + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_BorderMipMap + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MipMapsPreserveCoverage + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_AlphaTestReferenceValue + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MipMapFadeDistanceStart + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MipMapFadeDistanceEnd + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ConvertToNormalMap + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ExternalNormalMap + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_HeightScale + value: 0.25 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_NormalMapFilter + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_IsReadable + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_StreamingMipmaps + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_StreamingMipmapsPriority + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrayScaleToAlpha + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GenerateCubemap + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_CubemapConvolution + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SeamlessCubemap + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureFormat + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MaxTextureSize + value: 2048 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureSettings.m_FilterMode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureSettings.m_Aniso + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureSettings.m_MipBias + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureSettings.m_WrapU + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureSettings.m_WrapV + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureSettings.m_WrapW + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_NPOTScale + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_Lightmap + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_CompressionQuality + value: 50 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteMode + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteExtrude + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteMeshType + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_Alignment + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpritePivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpritePivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpritePixelsToUnits + value: 100 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteBorder.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteBorder.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteBorder.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteBorder.w + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteGenerateFallbackPhysicsShape + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_AlphaUsage + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_AlphaIsTransparency + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteTessellationDetail + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureType + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureShape + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SingleChannelComponent + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MaxTextureSizeSet + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_CompressionQualitySet + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureFormatSet + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ApplyGammaDecoding + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.size + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_BuildTarget + value: DefaultTexturePlatform + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_MaxTextureSize + value: 256 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_ResizeAlgorithm + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_TextureFormat + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_TextureCompression + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_CompressionQuality + value: 50 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_CrunchedCompression + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_AllowsAlphaSplitting + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_Overridden + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_AndroidETC2FallbackOverride + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_ForceMaximumCompressionQuality_BC6H_BC7 + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_BuildTarget + value: Standalone + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_MaxTextureSize + value: 256 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_ResizeAlgorithm + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_TextureFormat + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_TextureCompression + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_CompressionQuality + value: 50 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_CrunchedCompression + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_AllowsAlphaSplitting + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_Overridden + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_AndroidETC2FallbackOverride + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_ForceMaximumCompressionQuality_BC6H_BC7 + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[2].m_BuildTarget + value: Android + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[2].m_MaxTextureSize + value: 256 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[2].m_ResizeAlgorithm + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[2].m_TextureFormat + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[2].m_TextureCompression + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[2].m_CompressionQuality + value: 50 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[2].m_CrunchedCompression + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[2].m_AllowsAlphaSplitting + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[2].m_Overridden + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[2].m_AndroidETC2FallbackOverride + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[2].m_ForceMaximumCompressionQuality_BC6H_BC7 + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Sprites.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Outline.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_PhysicsShape.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Bones.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_SpriteID + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_InternalID + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Vertices.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Indices.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Edges.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Weights.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_SecondaryTextures.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpritePackingTag + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PSDRemoveMatte + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PSDShowRemoveMatteOption + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_UserData + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_AssetBundleName + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_AssetBundleVariant + value: + objectReference: {fileID: 0} diff --git a/Assets/RekornTools/Presets/Texture Importer/Mask Texture Importer.preset.meta b/Assets/RekornTools/Presets/Texture Importer/Mask Texture Importer.preset.meta new file mode 100644 index 0000000..dc7fe30 --- /dev/null +++ b/Assets/RekornTools/Presets/Texture Importer/Mask Texture Importer.preset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 78159e61c06a58b4b986826f432432b3 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2655988077585873504 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Presets/Texture Importer/Normal Texture Importer.preset b/Assets/RekornTools/Presets/Texture Importer/Normal Texture Importer.preset new file mode 100644 index 0000000..1106d23 --- /dev/null +++ b/Assets/RekornTools/Presets/Texture Importer/Normal Texture Importer.preset @@ -0,0 +1,394 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!181963792 &2655988077585873504 +Preset: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Normal Texture Importer + m_TargetType: + m_NativeTypeID: 1006 + m_ManagedTypePPtr: {fileID: 0} + m_ManagedTypeFallback: + m_Properties: + - target: {fileID: 0} + propertyPath: m_ExternalObjects.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MipMapMode + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_EnableMipMap + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_sRGBTexture + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LinearTexture + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_FadeOut + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_BorderMipMap + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MipMapsPreserveCoverage + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_AlphaTestReferenceValue + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MipMapFadeDistanceStart + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MipMapFadeDistanceEnd + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ConvertToNormalMap + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ExternalNormalMap + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_HeightScale + value: 0.25 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_NormalMapFilter + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_IsReadable + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_StreamingMipmaps + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_StreamingMipmapsPriority + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrayScaleToAlpha + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GenerateCubemap + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_CubemapConvolution + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SeamlessCubemap + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureFormat + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MaxTextureSize + value: 2048 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureSettings.m_FilterMode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureSettings.m_Aniso + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureSettings.m_MipBias + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureSettings.m_WrapU + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureSettings.m_WrapV + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureSettings.m_WrapW + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_NPOTScale + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_Lightmap + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_CompressionQuality + value: 50 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteMode + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteExtrude + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteMeshType + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_Alignment + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpritePivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpritePivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpritePixelsToUnits + value: 100 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteBorder.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteBorder.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteBorder.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteBorder.w + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteGenerateFallbackPhysicsShape + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_AlphaUsage + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_AlphaIsTransparency + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteTessellationDetail + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureType + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureShape + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SingleChannelComponent + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MaxTextureSizeSet + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_CompressionQualitySet + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureFormatSet + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ApplyGammaDecoding + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.size + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_BuildTarget + value: DefaultTexturePlatform + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_MaxTextureSize + value: 512 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_ResizeAlgorithm + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_TextureFormat + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_TextureCompression + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_CompressionQuality + value: 50 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_CrunchedCompression + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_AllowsAlphaSplitting + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_Overridden + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_AndroidETC2FallbackOverride + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_ForceMaximumCompressionQuality_BC6H_BC7 + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_BuildTarget + value: Standalone + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_MaxTextureSize + value: 512 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_ResizeAlgorithm + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_TextureFormat + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_TextureCompression + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_CompressionQuality + value: 50 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_CrunchedCompression + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_AllowsAlphaSplitting + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_Overridden + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_AndroidETC2FallbackOverride + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_ForceMaximumCompressionQuality_BC6H_BC7 + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Sprites.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Outline.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_PhysicsShape.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Bones.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_SpriteID + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_InternalID + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Vertices.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Indices.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Edges.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Weights.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_SecondaryTextures.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpritePackingTag + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PSDRemoveMatte + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PSDShowRemoveMatteOption + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_UserData + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_AssetBundleName + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_AssetBundleVariant + value: + objectReference: {fileID: 0} diff --git a/Assets/RekornTools/Presets/Texture Importer/Normal Texture Importer.preset.meta b/Assets/RekornTools/Presets/Texture Importer/Normal Texture Importer.preset.meta new file mode 100644 index 0000000..d0c700c --- /dev/null +++ b/Assets/RekornTools/Presets/Texture Importer/Normal Texture Importer.preset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ae88a98d0b19bcf48980df130aa7d2be +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2655988077585873504 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Presets/Texture Importer/Opaque Texture Importer.preset b/Assets/RekornTools/Presets/Texture Importer/Opaque Texture Importer.preset new file mode 100644 index 0000000..0e5be6a --- /dev/null +++ b/Assets/RekornTools/Presets/Texture Importer/Opaque Texture Importer.preset @@ -0,0 +1,394 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!181963792 &2655988077585873504 +Preset: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Opaque Texture Importer + m_TargetType: + m_NativeTypeID: 1006 + m_ManagedTypePPtr: {fileID: 0} + m_ManagedTypeFallback: + m_Properties: + - target: {fileID: 0} + propertyPath: m_ExternalObjects.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MipMapMode + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_EnableMipMap + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_sRGBTexture + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LinearTexture + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_FadeOut + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_BorderMipMap + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MipMapsPreserveCoverage + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_AlphaTestReferenceValue + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MipMapFadeDistanceStart + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MipMapFadeDistanceEnd + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ConvertToNormalMap + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ExternalNormalMap + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_HeightScale + value: 0.25 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_NormalMapFilter + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_IsReadable + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_StreamingMipmaps + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_StreamingMipmapsPriority + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrayScaleToAlpha + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GenerateCubemap + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_CubemapConvolution + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SeamlessCubemap + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureFormat + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MaxTextureSize + value: 2048 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureSettings.m_FilterMode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureSettings.m_Aniso + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureSettings.m_MipBias + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureSettings.m_WrapU + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureSettings.m_WrapV + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureSettings.m_WrapW + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_NPOTScale + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_Lightmap + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_CompressionQuality + value: 50 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteMode + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteExtrude + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteMeshType + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_Alignment + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpritePivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpritePivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpritePixelsToUnits + value: 100 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteBorder.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteBorder.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteBorder.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteBorder.w + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteGenerateFallbackPhysicsShape + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_AlphaUsage + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_AlphaIsTransparency + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteTessellationDetail + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureType + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureShape + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SingleChannelComponent + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MaxTextureSizeSet + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_CompressionQualitySet + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureFormatSet + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ApplyGammaDecoding + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.size + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_BuildTarget + value: DefaultTexturePlatform + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_MaxTextureSize + value: 2048 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_ResizeAlgorithm + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_TextureFormat + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_TextureCompression + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_CompressionQuality + value: 50 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_CrunchedCompression + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_AllowsAlphaSplitting + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_Overridden + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_AndroidETC2FallbackOverride + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_ForceMaximumCompressionQuality_BC6H_BC7 + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_BuildTarget + value: Standalone + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_MaxTextureSize + value: 2048 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_ResizeAlgorithm + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_TextureFormat + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_TextureCompression + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_CompressionQuality + value: 50 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_CrunchedCompression + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_AllowsAlphaSplitting + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_Overridden + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_AndroidETC2FallbackOverride + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_ForceMaximumCompressionQuality_BC6H_BC7 + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Sprites.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Outline.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_PhysicsShape.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Bones.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_SpriteID + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_InternalID + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Vertices.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Indices.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Edges.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Weights.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_SecondaryTextures.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpritePackingTag + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PSDRemoveMatte + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PSDShowRemoveMatteOption + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_UserData + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_AssetBundleName + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_AssetBundleVariant + value: + objectReference: {fileID: 0} diff --git a/Assets/RekornTools/Presets/Texture Importer/Opaque Texture Importer.preset.meta b/Assets/RekornTools/Presets/Texture Importer/Opaque Texture Importer.preset.meta new file mode 100644 index 0000000..0a9784e --- /dev/null +++ b/Assets/RekornTools/Presets/Texture Importer/Opaque Texture Importer.preset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7b0f4ad9514ff9c4db09f6ef160b89f9 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2655988077585873504 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Presets/Texture Importer/Sampler Texture Importer.preset b/Assets/RekornTools/Presets/Texture Importer/Sampler Texture Importer.preset new file mode 100644 index 0000000..43411ae --- /dev/null +++ b/Assets/RekornTools/Presets/Texture Importer/Sampler Texture Importer.preset @@ -0,0 +1,394 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!181963792 &2655988077585873504 +Preset: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Sampler Texture Importer + m_TargetType: + m_NativeTypeID: 1006 + m_ManagedTypePPtr: {fileID: 0} + m_ManagedTypeFallback: + m_Properties: + - target: {fileID: 0} + propertyPath: m_ExternalObjects.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MipMapMode + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_EnableMipMap + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_sRGBTexture + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LinearTexture + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_FadeOut + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_BorderMipMap + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MipMapsPreserveCoverage + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_AlphaTestReferenceValue + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MipMapFadeDistanceStart + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MipMapFadeDistanceEnd + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ConvertToNormalMap + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ExternalNormalMap + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_HeightScale + value: 0.25 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_NormalMapFilter + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_IsReadable + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_StreamingMipmaps + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_StreamingMipmapsPriority + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GrayScaleToAlpha + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GenerateCubemap + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_CubemapConvolution + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SeamlessCubemap + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureFormat + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MaxTextureSize + value: 2048 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureSettings.m_FilterMode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureSettings.m_Aniso + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureSettings.m_MipBias + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureSettings.m_WrapU + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureSettings.m_WrapV + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureSettings.m_WrapW + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_NPOTScale + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_Lightmap + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_CompressionQuality + value: 50 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteMode + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteExtrude + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteMeshType + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_Alignment + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpritePivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpritePivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpritePixelsToUnits + value: 100 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteBorder.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteBorder.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteBorder.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteBorder.w + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteGenerateFallbackPhysicsShape + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_AlphaUsage + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_AlphaIsTransparency + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteTessellationDetail + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureType + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureShape + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SingleChannelComponent + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MaxTextureSizeSet + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_CompressionQualitySet + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TextureFormatSet + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ApplyGammaDecoding + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.size + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_BuildTarget + value: DefaultTexturePlatform + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_MaxTextureSize + value: 256 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_ResizeAlgorithm + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_TextureFormat + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_TextureCompression + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_CompressionQuality + value: 50 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_CrunchedCompression + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_AllowsAlphaSplitting + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_Overridden + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_AndroidETC2FallbackOverride + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[0].m_ForceMaximumCompressionQuality_BC6H_BC7 + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_BuildTarget + value: Standalone + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_MaxTextureSize + value: 256 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_ResizeAlgorithm + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_TextureFormat + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_TextureCompression + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_CompressionQuality + value: 50 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_CrunchedCompression + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_AllowsAlphaSplitting + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_Overridden + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_AndroidETC2FallbackOverride + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PlatformSettings.Array.data[1].m_ForceMaximumCompressionQuality_BC6H_BC7 + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Sprites.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Outline.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_PhysicsShape.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Bones.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_SpriteID + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_InternalID + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Vertices.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Indices.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Edges.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_Weights.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpriteSheet.m_SecondaryTextures.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SpritePackingTag + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PSDRemoveMatte + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PSDShowRemoveMatteOption + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_UserData + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_AssetBundleName + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_AssetBundleVariant + value: + objectReference: {fileID: 0} diff --git a/Assets/RekornTools/Presets/Texture Importer/Sampler Texture Importer.preset.meta b/Assets/RekornTools/Presets/Texture Importer/Sampler Texture Importer.preset.meta new file mode 100644 index 0000000..b42a17b --- /dev/null +++ b/Assets/RekornTools/Presets/Texture Importer/Sampler Texture Importer.preset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7fd722547a7cbab449f7d1464fd8e8e5 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2655988077585873504 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Presets/Texture Importer/Texture Optimizer Settings.asset b/Assets/RekornTools/Presets/Texture Importer/Texture Optimizer Settings.asset new file mode 100644 index 0000000..990c18f --- /dev/null +++ b/Assets/RekornTools/Presets/Texture Importer/Texture Optimizer Settings.asset @@ -0,0 +1,40 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + 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: a3f4698d610241f38d8d77c8b50f9520, type: 3} + m_Name: Texture Optimizer Settings + m_EditorClassIdentifier: + PresetMap: + Items: + - k__BackingField: 1 + k__BackingField: {fileID: 2655988077585873504, guid: b022044b873e2544a9cca8f510093700, + type: 2} + - k__BackingField: 2 + k__BackingField: {fileID: 2655988077585873504, guid: 7b0f4ad9514ff9c4db09f6ef160b89f9, + type: 2} + - k__BackingField: 3 + k__BackingField: {fileID: 2655988077585873504, guid: df42b2d94c1d96745a1b972c07fb2dc8, + type: 2} + - k__BackingField: 4 + k__BackingField: {fileID: 2655988077585873504, guid: 8fd8ffccd4b41ee4bb78aae17e3415ea, + type: 2} + - k__BackingField: 5 + k__BackingField: {fileID: 2655988077585873504, guid: ae88a98d0b19bcf48980df130aa7d2be, + type: 2} + - k__BackingField: 6 + k__BackingField: {fileID: 2655988077585873504, guid: 78159e61c06a58b4b986826f432432b3, + type: 2} + - k__BackingField: 7 + k__BackingField: {fileID: 2655988077585873504, guid: 7fd722547a7cbab449f7d1464fd8e8e5, + type: 2} + - k__BackingField: 8 + k__BackingField: {fileID: 2655988077585873504, guid: d257b393b6cab474889d7df0cbded30a, + type: 2} diff --git a/Assets/RekornTools/Presets/Texture Importer/Texture Optimizer Settings.asset.meta b/Assets/RekornTools/Presets/Texture Importer/Texture Optimizer Settings.asset.meta new file mode 100644 index 0000000..f39146b --- /dev/null +++ b/Assets/RekornTools/Presets/Texture Importer/Texture Optimizer Settings.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 37322b49eed470842bf7eaf696f64c46 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Presets/Texture Importer/Texture Properties Table.asset b/Assets/RekornTools/Presets/Texture Importer/Texture Properties Table.asset new file mode 100644 index 0000000..46d2bce --- /dev/null +++ b/Assets/RekornTools/Presets/Texture Importer/Texture Properties Table.asset @@ -0,0 +1,1113 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + 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: 89d3ec4237704783bffc3ea47b9602ba, type: 3} + m_Name: Texture Properties Table + m_EditorClassIdentifier: + TexturePropertiesMap: + Items: + - k__BackingField: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + k__BackingField: + Items: + - k__BackingField: {fileID: 46, guid: 0000000000000000f000000000000000, + type: 0} + k__BackingField: 1 + k__BackingField: 4 + k__BackingField: _MainTex + k__BackingField: 1 + - k__BackingField: {fileID: 46, guid: 0000000000000000f000000000000000, + type: 0} + k__BackingField: 7 + k__BackingField: 4 + k__BackingField: _MetallicGlossMap + k__BackingField: 6 + - k__BackingField: {fileID: 46, guid: 0000000000000000f000000000000000, + type: 0} + k__BackingField: 11 + k__BackingField: 4 + k__BackingField: _BumpMap + k__BackingField: 6 + - k__BackingField: {fileID: 46, guid: 0000000000000000f000000000000000, + type: 0} + k__BackingField: 13 + k__BackingField: 4 + k__BackingField: _ParallaxMap + k__BackingField: 6 + - k__BackingField: {fileID: 46, guid: 0000000000000000f000000000000000, + type: 0} + k__BackingField: 15 + k__BackingField: 4 + k__BackingField: _OcclusionMap + k__BackingField: 6 + - k__BackingField: {fileID: 46, guid: 0000000000000000f000000000000000, + type: 0} + k__BackingField: 17 + k__BackingField: 4 + k__BackingField: _EmissionMap + k__BackingField: 4 + - k__BackingField: {fileID: 46, guid: 0000000000000000f000000000000000, + type: 0} + k__BackingField: 18 + k__BackingField: 4 + k__BackingField: _DetailMask + k__BackingField: 6 + - k__BackingField: {fileID: 46, guid: 0000000000000000f000000000000000, + type: 0} + k__BackingField: 19 + k__BackingField: 4 + k__BackingField: _DetailAlbedoMap + k__BackingField: 6 + - k__BackingField: {fileID: 46, guid: 0000000000000000f000000000000000, + type: 0} + k__BackingField: 21 + k__BackingField: 4 + k__BackingField: _DetailNormalMap + k__BackingField: 5 + - k__BackingField: {fileID: 4800000, guid: 9baf30ce95c751649b14d96da3a4b4d5, + type: 3} + k__BackingField: + Items: + - k__BackingField: {fileID: 4800000, guid: 9baf30ce95c751649b14d96da3a4b4d5, + type: 3} + k__BackingField: 4 + k__BackingField: 4 + k__BackingField: _MainTex + k__BackingField: 1 + - k__BackingField: {fileID: 4800000, guid: 9baf30ce95c751649b14d96da3a4b4d5, + type: 3} + k__BackingField: 9 + k__BackingField: 4 + k__BackingField: _1st_ShadeMap + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: 9baf30ce95c751649b14d96da3a4b4d5, + type: 3} + k__BackingField: 13 + k__BackingField: 4 + k__BackingField: _2nd_ShadeMap + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: 9baf30ce95c751649b14d96da3a4b4d5, + type: 3} + k__BackingField: 17 + k__BackingField: 4 + k__BackingField: _NormalMap + k__BackingField: 5 + - k__BackingField: {fileID: 4800000, guid: 9baf30ce95c751649b14d96da3a4b4d5, + type: 3} + k__BackingField: 32 + k__BackingField: 4 + k__BackingField: _Set_1st_ShadePosition + k__BackingField: 7 + - k__BackingField: {fileID: 4800000, guid: 9baf30ce95c751649b14d96da3a4b4d5, + type: 3} + k__BackingField: 33 + k__BackingField: 4 + k__BackingField: _Set_2nd_ShadePosition + k__BackingField: 7 + - k__BackingField: {fileID: 4800000, guid: 9baf30ce95c751649b14d96da3a4b4d5, + type: 3} + k__BackingField: 35 + k__BackingField: 4 + k__BackingField: _HighColor_Tex + k__BackingField: 1 + - k__BackingField: {fileID: 4800000, guid: 9baf30ce95c751649b14d96da3a4b4d5, + type: 3} + k__BackingField: 43 + k__BackingField: 4 + k__BackingField: _Set_HighColorMask + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: 9baf30ce95c751649b14d96da3a4b4d5, + type: 3} + k__BackingField: 59 + k__BackingField: 4 + k__BackingField: _Set_RimLightMask + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: 9baf30ce95c751649b14d96da3a4b4d5, + type: 3} + k__BackingField: 62 + k__BackingField: 4 + k__BackingField: _MatCap_Sampler + k__BackingField: 7 + - k__BackingField: {fileID: 4800000, guid: 9baf30ce95c751649b14d96da3a4b4d5, + type: 3} + k__BackingField: 71 + k__BackingField: 4 + k__BackingField: _NormalMapForMatCap + k__BackingField: 5 + - k__BackingField: {fileID: 4800000, guid: 9baf30ce95c751649b14d96da3a4b4d5, + type: 3} + k__BackingField: 76 + k__BackingField: 4 + k__BackingField: _Set_MatcapMask + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: 9baf30ce95c751649b14d96da3a4b4d5, + type: 3} + k__BackingField: 81 + k__BackingField: 4 + k__BackingField: _Emissive_Tex + k__BackingField: 4 + - k__BackingField: {fileID: 4800000, guid: 9baf30ce95c751649b14d96da3a4b4d5, + type: 3} + k__BackingField: 98 + k__BackingField: 4 + k__BackingField: _Outline_Sampler + k__BackingField: 7 + - k__BackingField: {fileID: 4800000, guid: 9baf30ce95c751649b14d96da3a4b4d5, + type: 3} + k__BackingField: 103 + k__BackingField: 4 + k__BackingField: _OutlineTex + k__BackingField: 1 + - k__BackingField: {fileID: 4800000, guid: 9baf30ce95c751649b14d96da3a4b4d5, + type: 3} + k__BackingField: 106 + k__BackingField: 4 + k__BackingField: _BakedNormal + k__BackingField: 5 + - k__BackingField: {fileID: 4800000, guid: 0962f7b93c5ff444885d8aa8b539e6de, + type: 3} + k__BackingField: + Items: + - k__BackingField: {fileID: 4800000, guid: 0962f7b93c5ff444885d8aa8b539e6de, + type: 3} + k__BackingField: 0 + k__BackingField: 4 + k__BackingField: _BaseColortex + k__BackingField: 1 + - k__BackingField: {fileID: 4800000, guid: 0962f7b93c5ff444885d8aa8b539e6de, + type: 3} + k__BackingField: 2 + k__BackingField: 4 + k__BackingField: _SurfaceClolrtex + k__BackingField: 1 + - k__BackingField: {fileID: 4800000, guid: 0962f7b93c5ff444885d8aa8b539e6de, + type: 3} + k__BackingField: 4 + k__BackingField: 4 + k__BackingField: _Normal + k__BackingField: 5 + - k__BackingField: {fileID: 4800000, guid: 0962f7b93c5ff444885d8aa8b539e6de, + type: 3} + k__BackingField: 5 + k__BackingField: 4 + k__BackingField: _alpha + k__BackingField: 1 + - k__BackingField: {fileID: 4800000, guid: aebd33b74ef849a4882b4a8d55f0f0c9, + type: 3} + k__BackingField: + Items: + - k__BackingField: {fileID: 4800000, guid: aebd33b74ef849a4882b4a8d55f0f0c9, + type: 3} + k__BackingField: 4 + k__BackingField: 4 + k__BackingField: _ClippingMask + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: aebd33b74ef849a4882b4a8d55f0f0c9, + type: 3} + k__BackingField: 9 + k__BackingField: 4 + k__BackingField: _MainTex + k__BackingField: 1 + - k__BackingField: {fileID: 4800000, guid: aebd33b74ef849a4882b4a8d55f0f0c9, + type: 3} + k__BackingField: 14 + k__BackingField: 4 + k__BackingField: _1st_ShadeMap + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: aebd33b74ef849a4882b4a8d55f0f0c9, + type: 3} + k__BackingField: 18 + k__BackingField: 4 + k__BackingField: _2nd_ShadeMap + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: aebd33b74ef849a4882b4a8d55f0f0c9, + type: 3} + k__BackingField: 22 + k__BackingField: 4 + k__BackingField: _NormalMap + k__BackingField: 5 + - k__BackingField: {fileID: 4800000, guid: aebd33b74ef849a4882b4a8d55f0f0c9, + type: 3} + k__BackingField: 37 + k__BackingField: 4 + k__BackingField: _ShadingGradeMap + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: aebd33b74ef849a4882b4a8d55f0f0c9, + type: 3} + k__BackingField: 41 + k__BackingField: 4 + k__BackingField: _HighColor_Tex + k__BackingField: 1 + - k__BackingField: {fileID: 4800000, guid: aebd33b74ef849a4882b4a8d55f0f0c9, + type: 3} + k__BackingField: 49 + k__BackingField: 4 + k__BackingField: _Set_HighColorMask + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: aebd33b74ef849a4882b4a8d55f0f0c9, + type: 3} + k__BackingField: 65 + k__BackingField: 4 + k__BackingField: _Set_RimLightMask + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: aebd33b74ef849a4882b4a8d55f0f0c9, + type: 3} + k__BackingField: 68 + k__BackingField: 4 + k__BackingField: _MatCap_Sampler + k__BackingField: 7 + - k__BackingField: {fileID: 4800000, guid: aebd33b74ef849a4882b4a8d55f0f0c9, + type: 3} + k__BackingField: 77 + k__BackingField: 4 + k__BackingField: _NormalMapForMatCap + k__BackingField: 5 + - k__BackingField: {fileID: 4800000, guid: aebd33b74ef849a4882b4a8d55f0f0c9, + type: 3} + k__BackingField: 82 + k__BackingField: 4 + k__BackingField: _Set_MatcapMask + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: aebd33b74ef849a4882b4a8d55f0f0c9, + type: 3} + k__BackingField: 87 + k__BackingField: 4 + k__BackingField: _Emissive_Tex + k__BackingField: 4 + - k__BackingField: {fileID: 4800000, guid: aebd33b74ef849a4882b4a8d55f0f0c9, + type: 3} + k__BackingField: 104 + k__BackingField: 4 + k__BackingField: _Outline_Sampler + k__BackingField: 7 + - k__BackingField: {fileID: 4800000, guid: aebd33b74ef849a4882b4a8d55f0f0c9, + type: 3} + k__BackingField: 110 + k__BackingField: 4 + k__BackingField: _OutlineTex + k__BackingField: 1 + - k__BackingField: {fileID: 4800000, guid: aebd33b74ef849a4882b4a8d55f0f0c9, + type: 3} + k__BackingField: 113 + k__BackingField: 4 + k__BackingField: _BakedNormal + k__BackingField: 5 + - k__BackingField: {fileID: 4800000, guid: cd7e85b59edbb7740841003baeb510b5, + type: 3} + k__BackingField: + Items: + - k__BackingField: {fileID: 4800000, guid: cd7e85b59edbb7740841003baeb510b5, + type: 3} + k__BackingField: 4 + k__BackingField: 4 + k__BackingField: _ClippingMask + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: cd7e85b59edbb7740841003baeb510b5, + type: 3} + k__BackingField: 9 + k__BackingField: 4 + k__BackingField: _MainTex + k__BackingField: 1 + - k__BackingField: {fileID: 4800000, guid: cd7e85b59edbb7740841003baeb510b5, + type: 3} + k__BackingField: 14 + k__BackingField: 4 + k__BackingField: _1st_ShadeMap + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: cd7e85b59edbb7740841003baeb510b5, + type: 3} + k__BackingField: 18 + k__BackingField: 4 + k__BackingField: _2nd_ShadeMap + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: cd7e85b59edbb7740841003baeb510b5, + type: 3} + k__BackingField: 22 + k__BackingField: 4 + k__BackingField: _NormalMap + k__BackingField: 5 + - k__BackingField: {fileID: 4800000, guid: cd7e85b59edbb7740841003baeb510b5, + type: 3} + k__BackingField: 37 + k__BackingField: 4 + k__BackingField: _ShadingGradeMap + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: cd7e85b59edbb7740841003baeb510b5, + type: 3} + k__BackingField: 41 + k__BackingField: 4 + k__BackingField: _HighColor_Tex + k__BackingField: 1 + - k__BackingField: {fileID: 4800000, guid: cd7e85b59edbb7740841003baeb510b5, + type: 3} + k__BackingField: 49 + k__BackingField: 4 + k__BackingField: _Set_HighColorMask + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: cd7e85b59edbb7740841003baeb510b5, + type: 3} + k__BackingField: 65 + k__BackingField: 4 + k__BackingField: _Set_RimLightMask + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: cd7e85b59edbb7740841003baeb510b5, + type: 3} + k__BackingField: 68 + k__BackingField: 4 + k__BackingField: _MatCap_Sampler + k__BackingField: 7 + - k__BackingField: {fileID: 4800000, guid: cd7e85b59edbb7740841003baeb510b5, + type: 3} + k__BackingField: 77 + k__BackingField: 4 + k__BackingField: _NormalMapForMatCap + k__BackingField: 5 + - k__BackingField: {fileID: 4800000, guid: cd7e85b59edbb7740841003baeb510b5, + type: 3} + k__BackingField: 83 + k__BackingField: 4 + k__BackingField: _Set_MatcapMask + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: cd7e85b59edbb7740841003baeb510b5, + type: 3} + k__BackingField: 88 + k__BackingField: 4 + k__BackingField: _Emissive_Tex + k__BackingField: 4 + - k__BackingField: {fileID: 211, guid: 0000000000000000f000000000000000, + type: 0} + k__BackingField: + Items: + - k__BackingField: {fileID: 211, guid: 0000000000000000f000000000000000, + type: 0} + k__BackingField: 0 + k__BackingField: 4 + k__BackingField: _MainTex + k__BackingField: 1 + - k__BackingField: {fileID: 211, guid: 0000000000000000f000000000000000, + type: 0} + k__BackingField: 4 + k__BackingField: 4 + k__BackingField: _BumpMap + k__BackingField: 6 + - k__BackingField: {fileID: 211, guid: 0000000000000000f000000000000000, + type: 0} + k__BackingField: 6 + k__BackingField: 4 + k__BackingField: _EmissionMap + k__BackingField: 4 + - k__BackingField: {fileID: 4800000, guid: df12117ecd77c31469c224178886498e, + type: 3} + k__BackingField: + Items: + - k__BackingField: {fileID: 4800000, guid: df12117ecd77c31469c224178886498e, + type: 3} + k__BackingField: 16 + k__BackingField: 4 + k__BackingField: _MainTex + k__BackingField: 1 + - k__BackingField: {fileID: 4800000, guid: df12117ecd77c31469c224178886498e, + type: 3} + k__BackingField: 20 + k__BackingField: 4 + k__BackingField: _MainGradationTex + k__BackingField: 1 + - k__BackingField: {fileID: 4800000, guid: df12117ecd77c31469c224178886498e, + type: 3} + k__BackingField: 21 + k__BackingField: 4 + k__BackingField: _MainColorAdjustMask + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: df12117ecd77c31469c224178886498e, + type: 3} + k__BackingField: 24 + k__BackingField: 4 + k__BackingField: _Main2ndTex + k__BackingField: 1 + - k__BackingField: {fileID: 4800000, guid: df12117ecd77c31469c224178886498e, + type: 3} + k__BackingField: 35 + k__BackingField: 4 + k__BackingField: _Main2ndBlendMask + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: df12117ecd77c31469c224178886498e, + type: 3} + k__BackingField: 38 + k__BackingField: 4 + k__BackingField: _Main2ndDissolveMask + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: df12117ecd77c31469c224178886498e, + type: 3} + k__BackingField: 39 + k__BackingField: 4 + k__BackingField: _Main2ndDissolveNoiseMask + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: df12117ecd77c31469c224178886498e, + type: 3} + k__BackingField: 48 + k__BackingField: 4 + k__BackingField: _Main3rdTex + k__BackingField: 1 + - k__BackingField: {fileID: 4800000, guid: df12117ecd77c31469c224178886498e, + type: 3} + k__BackingField: 59 + k__BackingField: 4 + k__BackingField: _Main3rdBlendMask + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: df12117ecd77c31469c224178886498e, + type: 3} + k__BackingField: 62 + k__BackingField: 4 + k__BackingField: _Main3rdDissolveMask + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: df12117ecd77c31469c224178886498e, + type: 3} + k__BackingField: 63 + k__BackingField: 4 + k__BackingField: _Main3rdDissolveNoiseMask + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: df12117ecd77c31469c224178886498e, + type: 3} + k__BackingField: 71 + k__BackingField: 4 + k__BackingField: _AlphaMask + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: df12117ecd77c31469c224178886498e, + type: 3} + k__BackingField: 75 + k__BackingField: 4 + k__BackingField: _BumpMap + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: df12117ecd77c31469c224178886498e, + type: 3} + k__BackingField: 78 + k__BackingField: 4 + k__BackingField: _Bump2ndMap + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: df12117ecd77c31469c224178886498e, + type: 3} + k__BackingField: 80 + k__BackingField: 4 + k__BackingField: _Bump2ndScaleMask + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: df12117ecd77c31469c224178886498e, + type: 3} + k__BackingField: 82 + k__BackingField: 4 + k__BackingField: _AnisotropyTangentMap + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: df12117ecd77c31469c224178886498e, + type: 3} + k__BackingField: 84 + k__BackingField: 4 + k__BackingField: _AnisotropyScaleMask + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: df12117ecd77c31469c224178886498e, + type: 3} + k__BackingField: 95 + k__BackingField: 4 + k__BackingField: _AnisotropyShiftNoiseMask + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: df12117ecd77c31469c224178886498e, + type: 3} + k__BackingField: 101 + k__BackingField: 4 + k__BackingField: _BacklightColorTex + k__BackingField: 1 + - k__BackingField: {fileID: 4800000, guid: df12117ecd77c31469c224178886498e, + type: 3} + k__BackingField: 112 + k__BackingField: 4 + k__BackingField: _ShadowStrengthMask + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: df12117ecd77c31469c224178886498e, + type: 3} + k__BackingField: 113 + k__BackingField: 4 + k__BackingField: _ShadowBorderMask + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: df12117ecd77c31469c224178886498e, + type: 3} + k__BackingField: 114 + k__BackingField: 4 + k__BackingField: _ShadowBlurMask + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: df12117ecd77c31469c224178886498e, + type: 3} + k__BackingField: 118 + k__BackingField: 4 + k__BackingField: _ShadowColorTex + k__BackingField: 1 + - k__BackingField: {fileID: 4800000, guid: df12117ecd77c31469c224178886498e, + type: 3} + k__BackingField: 123 + k__BackingField: 4 + k__BackingField: _Shadow2ndColorTex + k__BackingField: 1 + - k__BackingField: {fileID: 4800000, guid: df12117ecd77c31469c224178886498e, + type: 3} + k__BackingField: 128 + k__BackingField: 4 + k__BackingField: _Shadow3rdColorTex + k__BackingField: 1 + - k__BackingField: {fileID: 4800000, guid: df12117ecd77c31469c224178886498e, + type: 3} + k__BackingField: 138 + k__BackingField: 4 + k__BackingField: _SmoothnessTex + k__BackingField: 1 + - k__BackingField: {fileID: 4800000, guid: df12117ecd77c31469c224178886498e, + type: 3} + k__BackingField: 140 + k__BackingField: 4 + k__BackingField: _MetallicGlossMap + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: df12117ecd77c31469c224178886498e, + type: 3} + k__BackingField: 151 + k__BackingField: 4 + k__BackingField: _ReflectionColorTex + k__BackingField: 1 + - k__BackingField: {fileID: 4800000, guid: df12117ecd77c31469c224178886498e, + type: 3} + k__BackingField: 153 + k__BackingField: 4 + k__BackingField: _ReflectionCubeTex + k__BackingField: 1 + - k__BackingField: {fileID: 4800000, guid: df12117ecd77c31469c224178886498e, + type: 3} + k__BackingField: 159 + k__BackingField: 4 + k__BackingField: _MatCapTex + k__BackingField: 1 + - k__BackingField: {fileID: 4800000, guid: df12117ecd77c31469c224178886498e, + type: 3} + k__BackingField: 165 + k__BackingField: 4 + k__BackingField: _MatCapBlendMask + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: df12117ecd77c31469c224178886498e, + type: 3} + k__BackingField: 174 + k__BackingField: 4 + k__BackingField: _MatCapBumpMap + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: df12117ecd77c31469c224178886498e, + type: 3} + k__BackingField: 178 + k__BackingField: 4 + k__BackingField: _MatCap2ndTex + k__BackingField: 1 + - k__BackingField: {fileID: 4800000, guid: df12117ecd77c31469c224178886498e, + type: 3} + k__BackingField: 184 + k__BackingField: 4 + k__BackingField: _MatCap2ndBlendMask + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: df12117ecd77c31469c224178886498e, + type: 3} + k__BackingField: 193 + k__BackingField: 4 + k__BackingField: _MatCap2ndBumpMap + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: df12117ecd77c31469c224178886498e, + type: 3} + k__BackingField: 197 + k__BackingField: 4 + k__BackingField: _RimColorTex + k__BackingField: 1 + - k__BackingField: {fileID: 4800000, guid: df12117ecd77c31469c224178886498e, + type: 3} + k__BackingField: 216 + k__BackingField: 4 + k__BackingField: _GlitterColorTex + k__BackingField: 1 + - k__BackingField: {fileID: 4800000, guid: df12117ecd77c31469c224178886498e, + type: 3} + k__BackingField: 228 + k__BackingField: 4 + k__BackingField: _EmissionMap + k__BackingField: 4 + - k__BackingField: {fileID: 4800000, guid: df12117ecd77c31469c224178886498e, + type: 3} + k__BackingField: 232 + k__BackingField: 4 + k__BackingField: _EmissionBlendMask + k__BackingField: 4 + - k__BackingField: {fileID: 4800000, guid: df12117ecd77c31469c224178886498e, + type: 3} + k__BackingField: 236 + k__BackingField: 4 + k__BackingField: _EmissionGradTex + k__BackingField: 4 + - k__BackingField: {fileID: 4800000, guid: df12117ecd77c31469c224178886498e, + type: 3} + k__BackingField: 260 + k__BackingField: 4 + k__BackingField: _Emission2ndMap + k__BackingField: 4 + - k__BackingField: {fileID: 4800000, guid: df12117ecd77c31469c224178886498e, + type: 3} + k__BackingField: 264 + k__BackingField: 4 + k__BackingField: _Emission2ndBlendMask + k__BackingField: 4 + - k__BackingField: {fileID: 4800000, guid: df12117ecd77c31469c224178886498e, + type: 3} + k__BackingField: 268 + k__BackingField: 4 + k__BackingField: _Emission2ndGradTex + k__BackingField: 4 + - k__BackingField: {fileID: 4800000, guid: df12117ecd77c31469c224178886498e, + type: 3} + k__BackingField: 291 + k__BackingField: 4 + k__BackingField: _ParallaxMap + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: df12117ecd77c31469c224178886498e, + type: 3} + k__BackingField: 301 + k__BackingField: 4 + k__BackingField: _AudioLinkMask + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: df12117ecd77c31469c224178886498e, + type: 3} + k__BackingField: 314 + k__BackingField: 4 + k__BackingField: _AudioLinkLocalMap + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: df12117ecd77c31469c224178886498e, + type: 3} + k__BackingField: 316 + k__BackingField: 4 + k__BackingField: _DissolveMask + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: df12117ecd77c31469c224178886498e, + type: 3} + k__BackingField: 317 + k__BackingField: 4 + k__BackingField: _DissolveNoiseMask + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: df12117ecd77c31469c224178886498e, + type: 3} + k__BackingField: 353 + k__BackingField: 4 + k__BackingField: _BaseMap + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: 85d6126cae43b6847aff4b13f4adb8ec, + type: 3} + k__BackingField: + Items: + - k__BackingField: {fileID: 4800000, guid: 85d6126cae43b6847aff4b13f4adb8ec, + type: 3} + k__BackingField: 16 + k__BackingField: 4 + k__BackingField: _MainTex + k__BackingField: 1 + - k__BackingField: {fileID: 4800000, guid: 85d6126cae43b6847aff4b13f4adb8ec, + type: 3} + k__BackingField: 20 + k__BackingField: 4 + k__BackingField: _MainGradationTex + k__BackingField: 1 + - k__BackingField: {fileID: 4800000, guid: 85d6126cae43b6847aff4b13f4adb8ec, + type: 3} + k__BackingField: 21 + k__BackingField: 4 + k__BackingField: _MainColorAdjustMask + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: 85d6126cae43b6847aff4b13f4adb8ec, + type: 3} + k__BackingField: 24 + k__BackingField: 4 + k__BackingField: _Main2ndTex + k__BackingField: 1 + - k__BackingField: {fileID: 4800000, guid: 85d6126cae43b6847aff4b13f4adb8ec, + type: 3} + k__BackingField: 35 + k__BackingField: 4 + k__BackingField: _Main2ndBlendMask + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: 85d6126cae43b6847aff4b13f4adb8ec, + type: 3} + k__BackingField: 38 + k__BackingField: 4 + k__BackingField: _Main2ndDissolveMask + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: 85d6126cae43b6847aff4b13f4adb8ec, + type: 3} + k__BackingField: 39 + k__BackingField: 4 + k__BackingField: _Main2ndDissolveNoiseMask + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: 85d6126cae43b6847aff4b13f4adb8ec, + type: 3} + k__BackingField: 48 + k__BackingField: 4 + k__BackingField: _Main3rdTex + k__BackingField: 1 + - k__BackingField: {fileID: 4800000, guid: 85d6126cae43b6847aff4b13f4adb8ec, + type: 3} + k__BackingField: 59 + k__BackingField: 4 + k__BackingField: _Main3rdBlendMask + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: 85d6126cae43b6847aff4b13f4adb8ec, + type: 3} + k__BackingField: 62 + k__BackingField: 4 + k__BackingField: _Main3rdDissolveMask + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: 85d6126cae43b6847aff4b13f4adb8ec, + type: 3} + k__BackingField: 63 + k__BackingField: 4 + k__BackingField: _Main3rdDissolveNoiseMask + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: 85d6126cae43b6847aff4b13f4adb8ec, + type: 3} + k__BackingField: 71 + k__BackingField: 4 + k__BackingField: _AlphaMask + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: 85d6126cae43b6847aff4b13f4adb8ec, + type: 3} + k__BackingField: 75 + k__BackingField: 4 + k__BackingField: _BumpMap + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: 85d6126cae43b6847aff4b13f4adb8ec, + type: 3} + k__BackingField: 78 + k__BackingField: 4 + k__BackingField: _Bump2ndMap + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: 85d6126cae43b6847aff4b13f4adb8ec, + type: 3} + k__BackingField: 80 + k__BackingField: 4 + k__BackingField: _Bump2ndScaleMask + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: 85d6126cae43b6847aff4b13f4adb8ec, + type: 3} + k__BackingField: 82 + k__BackingField: 4 + k__BackingField: _AnisotropyTangentMap + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: 85d6126cae43b6847aff4b13f4adb8ec, + type: 3} + k__BackingField: 84 + k__BackingField: 4 + k__BackingField: _AnisotropyScaleMask + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: 85d6126cae43b6847aff4b13f4adb8ec, + type: 3} + k__BackingField: 95 + k__BackingField: 4 + k__BackingField: _AnisotropyShiftNoiseMask + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: 85d6126cae43b6847aff4b13f4adb8ec, + type: 3} + k__BackingField: 101 + k__BackingField: 4 + k__BackingField: _BacklightColorTex + k__BackingField: 1 + - k__BackingField: {fileID: 4800000, guid: 85d6126cae43b6847aff4b13f4adb8ec, + type: 3} + k__BackingField: 112 + k__BackingField: 4 + k__BackingField: _ShadowStrengthMask + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: 85d6126cae43b6847aff4b13f4adb8ec, + type: 3} + k__BackingField: 113 + k__BackingField: 4 + k__BackingField: _ShadowBorderMask + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: 85d6126cae43b6847aff4b13f4adb8ec, + type: 3} + k__BackingField: 114 + k__BackingField: 4 + k__BackingField: _ShadowBlurMask + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: 85d6126cae43b6847aff4b13f4adb8ec, + type: 3} + k__BackingField: 118 + k__BackingField: 4 + k__BackingField: _ShadowColorTex + k__BackingField: 1 + - k__BackingField: {fileID: 4800000, guid: 85d6126cae43b6847aff4b13f4adb8ec, + type: 3} + k__BackingField: 123 + k__BackingField: 4 + k__BackingField: _Shadow2ndColorTex + k__BackingField: 1 + - k__BackingField: {fileID: 4800000, guid: 85d6126cae43b6847aff4b13f4adb8ec, + type: 3} + k__BackingField: 128 + k__BackingField: 4 + k__BackingField: _Shadow3rdColorTex + k__BackingField: 1 + - k__BackingField: {fileID: 4800000, guid: 85d6126cae43b6847aff4b13f4adb8ec, + type: 3} + k__BackingField: 138 + k__BackingField: 4 + k__BackingField: _SmoothnessTex + k__BackingField: 1 + - k__BackingField: {fileID: 4800000, guid: 85d6126cae43b6847aff4b13f4adb8ec, + type: 3} + k__BackingField: 140 + k__BackingField: 4 + k__BackingField: _MetallicGlossMap + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: 85d6126cae43b6847aff4b13f4adb8ec, + type: 3} + k__BackingField: 151 + k__BackingField: 4 + k__BackingField: _ReflectionColorTex + k__BackingField: 1 + - k__BackingField: {fileID: 4800000, guid: 85d6126cae43b6847aff4b13f4adb8ec, + type: 3} + k__BackingField: 153 + k__BackingField: 4 + k__BackingField: _ReflectionCubeTex + k__BackingField: 1 + - k__BackingField: {fileID: 4800000, guid: 85d6126cae43b6847aff4b13f4adb8ec, + type: 3} + k__BackingField: 159 + k__BackingField: 4 + k__BackingField: _MatCapTex + k__BackingField: 1 + - k__BackingField: {fileID: 4800000, guid: 85d6126cae43b6847aff4b13f4adb8ec, + type: 3} + k__BackingField: 165 + k__BackingField: 4 + k__BackingField: _MatCapBlendMask + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: 85d6126cae43b6847aff4b13f4adb8ec, + type: 3} + k__BackingField: 174 + k__BackingField: 4 + k__BackingField: _MatCapBumpMap + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: 85d6126cae43b6847aff4b13f4adb8ec, + type: 3} + k__BackingField: 178 + k__BackingField: 4 + k__BackingField: _MatCap2ndTex + k__BackingField: 1 + - k__BackingField: {fileID: 4800000, guid: 85d6126cae43b6847aff4b13f4adb8ec, + type: 3} + k__BackingField: 184 + k__BackingField: 4 + k__BackingField: _MatCap2ndBlendMask + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: 85d6126cae43b6847aff4b13f4adb8ec, + type: 3} + k__BackingField: 193 + k__BackingField: 4 + k__BackingField: _MatCap2ndBumpMap + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: 85d6126cae43b6847aff4b13f4adb8ec, + type: 3} + k__BackingField: 197 + k__BackingField: 4 + k__BackingField: _RimColorTex + k__BackingField: 1 + - k__BackingField: {fileID: 4800000, guid: 85d6126cae43b6847aff4b13f4adb8ec, + type: 3} + k__BackingField: 216 + k__BackingField: 4 + k__BackingField: _GlitterColorTex + k__BackingField: 1 + - k__BackingField: {fileID: 4800000, guid: 85d6126cae43b6847aff4b13f4adb8ec, + type: 3} + k__BackingField: 228 + k__BackingField: 4 + k__BackingField: _EmissionMap + k__BackingField: 4 + - k__BackingField: {fileID: 4800000, guid: 85d6126cae43b6847aff4b13f4adb8ec, + type: 3} + k__BackingField: 232 + k__BackingField: 4 + k__BackingField: _EmissionBlendMask + k__BackingField: 4 + - k__BackingField: {fileID: 4800000, guid: 85d6126cae43b6847aff4b13f4adb8ec, + type: 3} + k__BackingField: 236 + k__BackingField: 4 + k__BackingField: _EmissionGradTex + k__BackingField: 4 + - k__BackingField: {fileID: 4800000, guid: 85d6126cae43b6847aff4b13f4adb8ec, + type: 3} + k__BackingField: 260 + k__BackingField: 4 + k__BackingField: _Emission2ndMap + k__BackingField: 4 + - k__BackingField: {fileID: 4800000, guid: 85d6126cae43b6847aff4b13f4adb8ec, + type: 3} + k__BackingField: 264 + k__BackingField: 4 + k__BackingField: _Emission2ndBlendMask + k__BackingField: 4 + - k__BackingField: {fileID: 4800000, guid: 85d6126cae43b6847aff4b13f4adb8ec, + type: 3} + k__BackingField: 268 + k__BackingField: 4 + k__BackingField: _Emission2ndGradTex + k__BackingField: 4 + - k__BackingField: {fileID: 4800000, guid: 85d6126cae43b6847aff4b13f4adb8ec, + type: 3} + k__BackingField: 291 + k__BackingField: 4 + k__BackingField: _ParallaxMap + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: 85d6126cae43b6847aff4b13f4adb8ec, + type: 3} + k__BackingField: 301 + k__BackingField: 4 + k__BackingField: _AudioLinkMask + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: 85d6126cae43b6847aff4b13f4adb8ec, + type: 3} + k__BackingField: 314 + k__BackingField: 4 + k__BackingField: _AudioLinkLocalMap + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: 85d6126cae43b6847aff4b13f4adb8ec, + type: 3} + k__BackingField: 316 + k__BackingField: 4 + k__BackingField: _DissolveMask + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: 85d6126cae43b6847aff4b13f4adb8ec, + type: 3} + k__BackingField: 317 + k__BackingField: 4 + k__BackingField: _DissolveNoiseMask + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: 85d6126cae43b6847aff4b13f4adb8ec, + type: 3} + k__BackingField: 353 + k__BackingField: 4 + k__BackingField: _BaseMap + k__BackingField: 6 + - k__BackingField: {fileID: 106, guid: 0000000000000000f000000000000000, + type: 0} + k__BackingField: + Items: [] + - k__BackingField: {fileID: 103, guid: 0000000000000000f000000000000000, + type: 0} + k__BackingField: + Items: + - k__BackingField: {fileID: 103, guid: 0000000000000000f000000000000000, + type: 0} + k__BackingField: 3 + k__BackingField: 4 + k__BackingField: _Tex + k__BackingField: 1 + - k__BackingField: {fileID: 10752, guid: 0000000000000000f000000000000000, + type: 0} + k__BackingField: + Items: + - k__BackingField: {fileID: 10752, guid: 0000000000000000f000000000000000, + type: 0} + k__BackingField: 0 + k__BackingField: 4 + k__BackingField: _MainTex + k__BackingField: 1 + - k__BackingField: {fileID: 10723, guid: 0000000000000000f000000000000000, + type: 0} + k__BackingField: + Items: + - k__BackingField: {fileID: 10723, guid: 0000000000000000f000000000000000, + type: 0} + k__BackingField: 0 + k__BackingField: 4 + k__BackingField: _MainTex + k__BackingField: 1 + - k__BackingField: {fileID: 4800000, guid: 0b7113dea2069fc4e8943843eff19f70, + type: 3} + k__BackingField: + Items: + - k__BackingField: {fileID: 4800000, guid: 0b7113dea2069fc4e8943843eff19f70, + type: 3} + k__BackingField: 0 + k__BackingField: 4 + k__BackingField: _MainTex + k__BackingField: 1 + - k__BackingField: {fileID: 4800000, guid: 0b7113dea2069fc4e8943843eff19f70, + type: 3} + k__BackingField: 2 + k__BackingField: 4 + k__BackingField: _MetallicGlossMap + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: 0b7113dea2069fc4e8943843eff19f70, + type: 3} + k__BackingField: 5 + k__BackingField: 4 + k__BackingField: _BumpMap + k__BackingField: 6 + - k__BackingField: {fileID: 4800000, guid: 0b7113dea2069fc4e8943843eff19f70, + type: 3} + k__BackingField: 7 + k__BackingField: 4 + k__BackingField: _EmissionMap + k__BackingField: 4 + - k__BackingField: {fileID: 4800000, guid: 9200bec112b65ec4fbbbd33fa89c20f4, + type: 3} + k__BackingField: + Items: + - k__BackingField: {fileID: 4800000, guid: 9200bec112b65ec4fbbbd33fa89c20f4, + type: 3} + k__BackingField: 0 + k__BackingField: 4 + k__BackingField: _MainTex + k__BackingField: 1 + - k__BackingField: {fileID: 4800000, guid: 2dcd9e0568e0a6f45b92c60ba2eb16a0, + type: 3} + k__BackingField: + Items: + - k__BackingField: {fileID: 4800000, guid: 2dcd9e0568e0a6f45b92c60ba2eb16a0, + type: 3} + k__BackingField: 0 + k__BackingField: 4 + k__BackingField: _MainTex + k__BackingField: 1 + - k__BackingField: {fileID: 200, guid: 0000000000000000f000000000000000, + type: 0} + k__BackingField: + Items: + - k__BackingField: {fileID: 200, guid: 0000000000000000f000000000000000, + type: 0} + k__BackingField: 1 + k__BackingField: 4 + k__BackingField: _MainTex + k__BackingField: 1 + - k__BackingField: {fileID: 4800000, guid: 693137b858e4dc64c83be531351f45e6, + type: 3} + k__BackingField: + Items: + - k__BackingField: {fileID: 4800000, guid: 693137b858e4dc64c83be531351f45e6, + type: 3} + k__BackingField: 0 + k__BackingField: 4 + k__BackingField: _MainTex + k__BackingField: 1 + - k__BackingField: {fileID: 4800000, guid: 9788d723ed7eac946a9a599e4a6ba940, + type: 3} + k__BackingField: + Items: + - k__BackingField: {fileID: 4800000, guid: 9788d723ed7eac946a9a599e4a6ba940, + type: 3} + k__BackingField: 0 + k__BackingField: 4 + k__BackingField: _MainTex + k__BackingField: 1 diff --git a/Assets/RekornTools/Presets/Texture Importer/Texture Properties Table.asset.meta b/Assets/RekornTools/Presets/Texture Importer/Texture Properties Table.asset.meta new file mode 100644 index 0000000..90fa5d6 --- /dev/null +++ b/Assets/RekornTools/Presets/Texture Importer/Texture Properties Table.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 41244db2fc7ec854eaf855c1d646a05e +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/README.md b/Assets/RekornTools/README.md new file mode 100644 index 0000000..d354b28 --- /dev/null +++ b/Assets/RekornTools/README.md @@ -0,0 +1,49 @@ +# RekornTools.Avatar ✨ + +--- + +VRChat SDK 3.0 을 이용한 아바타 제작에 유용한 툴 모음집 + +VRChat SDK 3.0を用いたアバター製作に有用なエティターツールパッケージ + +Useful sets of unity editor avatar creation tools for VRChat SDK 3.0 + +## README 🌏 + +--- + +한국어: https://bit.ly/3FZWjUE + +日本語: https://bit.ly/3lqeObf + +English: https://bit.ly/3FXDUIb + +# Requirements + +--- + +Unity 2022.3.6f1+ + +# Changelog + +--- + +[2024-01-01: v1.1.0] Migrate to Unity 2022.3.6f1 + +[2022-05-20: v1.0.0] Released + +# Contacts + +--- + +****📧**** [urun4m0r1@gmail.com](mailto:urun4m0r1@gmail.com) + +****✨**** [twitter.com/rekorn_vr](https://twitter.com/rekorn_vr) + +# Repository + +--- + +****🛒**** [Rekorn`s TechnoMarket - BOOTH](https://rekorn.booth.pm/) + +****📦**** [github.com/urun4m0r1/RekornTools.Avatar](https://github.com/urun4m0r1/RekornTools.Avatar) diff --git a/Assets/RekornTools/README.md.meta b/Assets/RekornTools/README.md.meta new file mode 100644 index 0000000..6b37e65 --- /dev/null +++ b/Assets/RekornTools/README.md.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: be1df9bd50474702a1d3fb5868004269 +timeCreated: 1651230330 \ No newline at end of file diff --git a/Assets/RekornTools/Tests.meta b/Assets/RekornTools/Tests.meta new file mode 100644 index 0000000..92a38b0 --- /dev/null +++ b/Assets/RekornTools/Tests.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 86e64ae18cf8810428b78a5e355049c4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Tests/AvatarDresserTest.cs b/Assets/RekornTools/Tests/AvatarDresserTest.cs new file mode 100644 index 0000000..7ef0a58 --- /dev/null +++ b/Assets/RekornTools/Tests/AvatarDresserTest.cs @@ -0,0 +1,92 @@ +using NUnit.Framework; +using RekornTools.Avatar; + +namespace Tests +{ + public sealed class AvatarDresserTest + { + [Test] + public void TestNamingConverterA() + { + var src = new RigNamingConvention(ModifierPosition.Front, ".", "L", "R"); + var dst = new RigNamingConvention(ModifierPosition.Front, "_", "l", "r"); + + var name1A = "L_Arm"; + var name1B = "L_Arm"; + var name2A = "L.Leg"; + var name2B = "l_Leg"; + var name3A = "Head.L"; + var name3B = "Head.L"; + var name4A = "R.Torso"; + var name4B = "r_Torso"; + + Assert.AreEqual(name1B, RigNamingConvention.Convert(name1A, src, dst)); + Assert.AreEqual(name2B, RigNamingConvention.Convert(name2A, src, dst)); + Assert.AreEqual(name3B, RigNamingConvention.Convert(name3A, src, dst)); + Assert.AreEqual(name4B, RigNamingConvention.Convert(name4A, src, dst)); + } + + [Test] + public void TestNamingConverterB() + { + var src = new RigNamingConvention(ModifierPosition.End, ".", "L", "R"); + var dst = new RigNamingConvention(ModifierPosition.Front, "_", "l", "r"); + + var name1A = "L_Arm"; + var name1B = "L_Arm"; + var name2A = "Leg.L"; + var name2B = "l_Leg"; + var name3A = "L.Head"; + var name3B = "L.Head"; + var name4A = "Torso.R"; + var name4B = "r_Torso"; + + Assert.AreEqual(name1B, RigNamingConvention.Convert(name1A, src, dst)); + Assert.AreEqual(name2B, RigNamingConvention.Convert(name2A, src, dst)); + Assert.AreEqual(name3B, RigNamingConvention.Convert(name3A, src, dst)); + Assert.AreEqual(name4B, RigNamingConvention.Convert(name4A, src, dst)); + } + + [Test] + public void TestNamingConverterC() + { + var src = new RigNamingConvention(ModifierPosition.End, ".", "L", "R"); + var dst = new RigNamingConvention(ModifierPosition.Front, "_", "l", "r"); + + var name1A = "L_Arm.001"; + var name1B = "L_Arm.001"; + var name2A = "Leg.L.001"; + var name2B = "l_Leg.001"; + var name3A = "L.Head.001"; + var name3B = "L.Head.001"; + var name4A = "Torso.R.001"; + var name4B = "r_Torso.001"; + + Assert.AreEqual(name1B, RigNamingConvention.Convert(name1A, src, dst)); + Assert.AreEqual(name2B, RigNamingConvention.Convert(name2A, src, dst)); + Assert.AreEqual(name3B, RigNamingConvention.Convert(name3A, src, dst)); + Assert.AreEqual(name4B, RigNamingConvention.Convert(name4A, src, dst)); + } + + [Test] + public void TestNamingConverterD() + { + var src = new RigNamingConvention(ModifierPosition.End, ".", "L", "R"); + var dst = new RigNamingConvention(ModifierPosition.Front, "_", "l", "r"); + + var name1A = "L_Arm_R"; + var name1B = "L_Arm_R"; + var name2A = "L.Leg.L"; + var name2B = "l_Leg"; + var name3A = "Head.L.R"; + var name3B = "Head.L.R"; + var name4A = "Torso.R.L"; + var name4B = "Torso.R.L"; + + Assert.AreEqual(name1B, RigNamingConvention.Convert(name1A, src, dst)); + Assert.AreEqual(name2B, RigNamingConvention.Convert(name2A, src, dst)); + Assert.AreEqual(name3B, RigNamingConvention.Convert(name3A, src, dst)); + Assert.AreEqual(name4B, RigNamingConvention.Convert(name4A, src, dst)); + } + } +} diff --git a/Assets/RekornTools/Tests/AvatarDresserTest.cs.meta b/Assets/RekornTools/Tests/AvatarDresserTest.cs.meta new file mode 100644 index 0000000..5d00565 --- /dev/null +++ b/Assets/RekornTools/Tests/AvatarDresserTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c3a07db5e51b3434797bbc3c61043960 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RekornTools/Tests/RekornTools.Tests.asmdef b/Assets/RekornTools/Tests/RekornTools.Tests.asmdef new file mode 100644 index 0000000..7eb78f0 --- /dev/null +++ b/Assets/RekornTools/Tests/RekornTools.Tests.asmdef @@ -0,0 +1,23 @@ +{ + "name": "RekornTools.Tests", + "references": [ + "UnityEngine.TestRunner", + "UnityEditor.TestRunner", + "RekornTools.Avatar" + ], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": true, + "precompiledReferences": [ + "nunit.framework.dll" + ], + "autoReferenced": false, + "defineConstraints": [ + "UNITY_INCLUDE_TESTS" + ], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Assets/RekornTools/Tests/RekornTools.Tests.asmdef.meta b/Assets/RekornTools/Tests/RekornTools.Tests.asmdef.meta new file mode 100644 index 0000000..b61384c --- /dev/null +++ b/Assets/RekornTools/Tests/RekornTools.Tests.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9ae9749abe639c143a1651d9da8c400d +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: