destroyed proj

This commit is contained in:
2025-03-15 12:37:32 +01:00
parent be2b7c5a44
commit 4872192479
426 changed files with 22755 additions and 3101 deletions

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 477e251f53db31c4daa72d10a331cf5a
guid: e08de2af45a4b6047b119b06afdb8784
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@@ -0,0 +1,114 @@
%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: 468a46d0ae32c3544b7d98094e6448a9, type: 3}
m_Name: AddressableAssetSettings
m_EditorClassIdentifier:
m_DefaultGroup: bc748cda1de45d8488107d01987d6cf0
m_currentHash:
serializedVersion: 2
Hash: 00000000000000000000000000000000
m_OptimizeCatalogSize: 0
m_BuildRemoteCatalog: 0
m_CatalogRequestsTimeout: 0
m_DisableCatalogUpdateOnStart: 0
m_InternalIdNamingMode: 0
m_InternalBundleIdMode: 1
m_AssetLoadMode: 0
m_BundledAssetProviderType:
m_AssemblyName:
m_ClassName:
m_AssetBundleProviderType:
m_AssemblyName:
m_ClassName:
m_IgnoreUnsupportedFilesInBuild: 0
m_UniqueBundleIds: 0
m_EnableJsonCatalog: 0
m_NonRecursiveBuilding: 1
m_CCDEnabled: 0
m_maxConcurrentWebRequests: 3
m_UseUWRForLocalBundles: 0
m_BundleTimeout: 0
m_BundleRetryCount: 0
m_BundleRedirectLimit: -1
m_SharedBundleSettings: 0
m_SharedBundleSettingsCustomGroupIndex: 0
m_ContiguousBundles: 1
m_StripUnityVersionFromBundleBuild: 0
m_DisableVisibleSubAssetRepresentations: 0
m_BuiltInBundleNaming: 0
mBuiltInBundleCustomNaming:
m_MonoScriptBundleNaming: 0
m_CheckForContentUpdateRestrictionsOption: 0
m_MonoScriptBundleCustomNaming:
m_RemoteCatalogBuildPath:
m_Id:
m_RemoteCatalogLoadPath:
m_Id:
m_ContentStateBuildPathProfileVariableName:
m_CustomContentStateBuildPath:
m_ContentStateBuildPath:
m_BuildAddressablesWithPlayerBuild: 0
m_overridePlayerVersion: '[UnityEditor.PlayerSettings.bundleVersion]'
m_GroupAssets:
- {fileID: 11400000, guid: 92eaf63d85ebc674eb5cae99dfd97ab8, type: 2}
m_BuildSettings:
m_LogResourceManagerExceptions: 1
m_BundleBuildPath: Temp/com.unity.addressables/AssetBundles
m_ProfileSettings:
m_Profiles:
- m_InheritedParent:
m_Id: 70b0881feb138274aa0793424a32f509
m_ProfileName: Default
m_Values:
- m_Id: 018fc3ce3b5c32a4984d1d9fbb67a909
m_Value: '[UnityEngine.AddressableAssets.Addressables.BuildPath]/[BuildTarget]'
- m_Id: 0393be1e21ec9d548a7c104f635942d8
m_Value: <undefined>
- m_Id: 195f5cf6f639dcd408d8493fce9cae15
m_Value: '[UnityEditor.EditorUserBuildSettings.activeBuildTarget]'
- m_Id: 6629386984a3bae46b67354df7aa3dd9
m_Value: '{UnityEngine.AddressableAssets.Addressables.RuntimePath}/[BuildTarget]'
- m_Id: 6a01bc1b152ff9b4bb57c15e07106e5e
m_Value: 'ServerData/[BuildTarget]'
m_ProfileEntryNames:
- m_Id: 018fc3ce3b5c32a4984d1d9fbb67a909
m_Name: Local.BuildPath
m_InlineUsage: 0
- m_Id: 0393be1e21ec9d548a7c104f635942d8
m_Name: Remote.LoadPath
m_InlineUsage: 0
- m_Id: 195f5cf6f639dcd408d8493fce9cae15
m_Name: BuildTarget
m_InlineUsage: 0
- m_Id: 6629386984a3bae46b67354df7aa3dd9
m_Name: Local.LoadPath
m_InlineUsage: 0
- m_Id: 6a01bc1b152ff9b4bb57c15e07106e5e
m_Name: Remote.BuildPath
m_InlineUsage: 0
m_ProfileVersion: 1
m_LabelTable:
m_LabelNames:
- default
m_SchemaTemplates: []
m_GroupTemplateObjects:
- {fileID: 11400000, guid: 8f53aef2659c96f458eb1a172a2751aa, type: 2}
m_InitializationObjects: []
m_CertificateHandlerType:
m_AssemblyName:
m_ClassName:
m_ActivePlayerDataBuilderIndex: 2
m_DataBuilders:
- {fileID: 11400000, guid: 8dcb874e2f2b8684196a6756e4847cd3, type: 2}
- {fileID: 11400000, guid: 0bad587639952fb4faddc0ced2411c87, type: 2}
- {fileID: 11400000, guid: 0569e87acc082334facdccab2f2e6d3c, type: 2}
m_ActiveProfileId: 70b0881feb138274aa0793424a32f509

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: cd0a0373004116246aa996f6fc5a4dbb
guid: 6da7fe9a25e1ab64fa6b4ca4b1074e41
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: c1ad1644f34e55a4d912533e416f7c06
guid: f60238e0c5114f34290d04e7822a30ba
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@@ -0,0 +1,78 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &-9135795107451069390
MonoBehaviour:
m_ObjectHideFlags: 1
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: e5d17a21594effb4e9591490b009e7aa, type: 3}
m_Name: BundledAssetGroupSchema
m_EditorClassIdentifier:
m_Group: {fileID: 0}
m_InternalBundleIdMode: 1
m_Compression: 1
m_IncludeAddressInCatalog: 1
m_IncludeGUIDInCatalog: 1
m_IncludeLabelsInCatalog: 1
m_InternalIdNamingMode: 0
m_CacheClearBehavior: 0
m_IncludeInBuild: 1
m_BundledAssetProviderType:
m_AssemblyName:
m_ClassName:
m_ForceUniqueProvider: 0
m_UseAssetBundleCache: 1
m_UseAssetBundleCrc: 1
m_UseAssetBundleCrcForCachedBundles: 1
m_UseUWRForLocalBundles: 0
m_Timeout: 0
m_ChunkedTransfer: 0
m_RedirectLimit: -1
m_RetryCount: 0
m_BuildPath:
m_Id:
m_LoadPath:
m_Id:
m_BundleMode: 0
m_AssetBundleProviderType:
m_AssemblyName:
m_ClassName:
m_UseDefaultSchemaSettings: 0
m_SelectedPathPairIndex: 0
m_BundleNaming: 0
m_AssetLoadMode: 0
--- !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: 1a3c5d64ac83548c09dd1678b9f6f1cd, type: 3}
m_Name: Packed Assets
m_EditorClassIdentifier:
m_SchemaObjects:
- {fileID: -9135795107451069390}
- {fileID: 19628808413638517}
m_Description: Pack assets into asset bundles.
m_Settings: {fileID: 11400000, guid: 6da7fe9a25e1ab64fa6b4ca4b1074e41, type: 2}
--- !u!114 &19628808413638517
MonoBehaviour:
m_ObjectHideFlags: 1
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: 5834b5087d578d24c926ce20cd31e6d6, type: 3}
m_Name: ContentUpdateGroupSchema
m_EditorClassIdentifier:
m_Group: {fileID: 0}
m_StaticContent: 0

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 8dbc756213844754099dfa00bb8a0e1c
guid: 8f53aef2659c96f458eb1a172a2751aa
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 058affda123cfef469f642bdd7f0f404
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,33 @@
%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: bbb281ee3bf0b054c82ac2347e9e782c, type: 3}
m_Name: Default Local Group
m_EditorClassIdentifier:
m_GroupName: Default Local Group
m_GUID: bc748cda1de45d8488107d01987d6cf0
m_SerializeEntries:
- m_GUID: 99c9720ab356a0642a771bea13969a05
m_Address: Assets/Dev/dev_gamemode_main.unity
m_ReadOnly: 0
m_SerializedLabels: []
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: c5a555fd0308dc546b2a31af07869f90
m_Address: Packages/com.rebootreality.rebootkit/Runtime/Assets/FPPKit/Prefabs/FPPSetup.prefab
m_ReadOnly: 0
m_SerializedLabels: []
FlaggedDuringContentUpdateRestriction: 0
m_ReadOnly: 0
m_Settings: {fileID: 11400000, guid: 6da7fe9a25e1ab64fa6b4ca4b1074e41, type: 2}
m_SchemaSet:
m_Schemas:
- {fileID: 11400000, guid: b667883b96e76a047ba3d63794b28821, type: 2}
- {fileID: 11400000, guid: 9f1cf36a5e2492f4283ea2c6192b6777, type: 2}

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: ed71246d15e0b49489a7b30565fe399a
guid: 92eaf63d85ebc674eb5cae99dfd97ab8
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: b091fe28258d90743b56102aceaae802
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,47 @@
%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: e5d17a21594effb4e9591490b009e7aa, type: 3}
m_Name: Default Local Group_BundledAssetGroupSchema
m_EditorClassIdentifier:
m_Group: {fileID: 11400000, guid: 92eaf63d85ebc674eb5cae99dfd97ab8, type: 2}
m_InternalBundleIdMode: 1
m_Compression: 1
m_IncludeAddressInCatalog: 1
m_IncludeGUIDInCatalog: 1
m_IncludeLabelsInCatalog: 1
m_InternalIdNamingMode: 0
m_CacheClearBehavior: 0
m_IncludeInBuild: 1
m_BundledAssetProviderType:
m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.BundledAssetProvider
m_ForceUniqueProvider: 0
m_UseAssetBundleCache: 1
m_UseAssetBundleCrc: 1
m_UseAssetBundleCrcForCachedBundles: 1
m_UseUWRForLocalBundles: 0
m_Timeout: 0
m_ChunkedTransfer: 0
m_RedirectLimit: -1
m_RetryCount: 0
m_BuildPath:
m_Id: 018fc3ce3b5c32a4984d1d9fbb67a909
m_LoadPath:
m_Id: 6629386984a3bae46b67354df7aa3dd9
m_BundleMode: 0
m_AssetBundleProviderType:
m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider
m_UseDefaultSchemaSettings: 0
m_SelectedPathPairIndex: 0
m_BundleNaming: 0
m_AssetLoadMode: 0

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 5e5151b700607a64ab4bd379fe585868
guid: b667883b96e76a047ba3d63794b28821
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000

View File

@@ -0,0 +1,16 @@
%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: 5834b5087d578d24c926ce20cd31e6d6, type: 3}
m_Name: Default Local Group_ContentUpdateGroupSchema
m_EditorClassIdentifier:
m_Group: {fileID: 11400000, guid: 92eaf63d85ebc674eb5cae99dfd97ab8, type: 2}
m_StaticContent: 0

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 9f1cf36a5e2492f4283ea2c6192b6777
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 4884ec52c30f9da489a5f6773a8babe5
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,20 @@
%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: 88d21199f5d473f4db36845f2318f180, type: 3}
m_Name: BuildScriptFastMode
m_EditorClassIdentifier:
instanceProviderType:
m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.InstanceProvider
sceneProviderType:
m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.SceneProvider

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 8dcb874e2f2b8684196a6756e4847cd3
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,20 @@
%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: 3e2e0ffa088c91d41a086d0b8cb16bdc, type: 3}
m_Name: BuildScriptPackedMode
m_EditorClassIdentifier:
instanceProviderType:
m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.InstanceProvider
sceneProviderType:
m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.SceneProvider

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 0569e87acc082334facdccab2f2e6d3c
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,20 @@
%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: ad8c280d42ee0ed41a27db23b43dd2bf, type: 3}
m_Name: BuildScriptPackedPlayMode
m_EditorClassIdentifier:
instanceProviderType:
m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.InstanceProvider
sceneProviderType:
m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.SceneProvider

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 0bad587639952fb4faddc0ced2411c87
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,15 @@
%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: 3a189bb168d8d90478a09ea08c2f3d72, type: 3}
m_Name: DefaultObject
m_EditorClassIdentifier:
m_AddressableAssetSettingsGuid: 6da7fe9a25e1ab64fa6b4ca4b1074e41

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: c8d42b7835d2aed4ab2248118e3f239d
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,5 @@
namespace Code {
public static class GameConsts {
public const string AssetMenu = "Posadzka/";
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: f207d27fba454fc99f43d0fadbdd6dcc
timeCreated: 1741208863

View File

@@ -0,0 +1,30 @@
using System.Threading;
using Code;
using Cysharp.Threading.Tasks;
using RebootKit.Engine;
using RebootKit.Engine.Foundation;
namespace posadzka.code {
public class GameplayGameModeController : IController {
private GameplayGameModeAsset.Config _config;
public GameplayGameModeController(GameplayGameModeAsset.Config config) {
_config = config;
}
public void Dispose() {
}
public async UniTask OnStart(CancellationToken cancellationToken) {
await RR.World().Load(_config.WorldConfig.Config);
}
public void OnStop() {
}
public void OnTick() {
}
}
}

View File

@@ -0,0 +1,22 @@
using System;
using posadzka.code;
using RebootKit.Engine.Services.Game;
using RebootKit.Engine.Services.Simulation;
using UnityEngine;
namespace Code {
[CreateAssetMenu(menuName = GameConsts.AssetMenu + "Gameplay Game Mode")]
public class GameplayGameModeAsset : GameModeAsset {
[Serializable]
public class Config {
public WorldConfigAsset WorldConfig;
}
[SerializeField]
private Config _config;
public override void ConfigureGameMode(GameMode gameMode) {
gameMode.AddController(new GameplayGameModeController(_config));
}
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 4cd7e49de6a6445e8c74a7c236483322
timeCreated: 1741208836

View File

@@ -0,0 +1,17 @@
{
"name": "posadzka",
"rootNamespace": "posadzka",
"references": [
"GUID:284059c7949783646b281a1b815580e6",
"GUID:f51ebe6a0ceec4240a699833d6309b23"
],
"includePlatforms": [],
"excludePlatforms": [],
"allowUnsafeCode": false,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": [],
"versionDefines": [],
"noEngineReferences": false
}

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 1f08ebe8a61f0c84e811ab1f7e9d1080
AssemblyDefinitionImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,5 +1,260 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &-8299899638604294112
MonoBehaviour:
m_ObjectHideFlags: 3
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: 70afe9e12c7a7ed47911bb608a23a8ff, type: 3}
m_Name: SplitToning
m_EditorClassIdentifier:
active: 1
shadows:
m_OverrideState: 1
m_Value: {r: 0.5, g: 0.5, b: 0.5, a: 1}
highlights:
m_OverrideState: 1
m_Value: {r: 0.5, g: 0.5, b: 0.5, a: 1}
balance:
m_OverrideState: 1
m_Value: 0
--- !u!114 &-6260248028241132399
MonoBehaviour:
m_ObjectHideFlags: 3
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: 0b2db86121404754db890f4c8dfe81b2, type: 3}
m_Name: Bloom
m_EditorClassIdentifier:
active: 1
skipIterations:
m_OverrideState: 1
m_Value: 1
threshold:
m_OverrideState: 1
m_Value: 0.9
intensity:
m_OverrideState: 1
m_Value: 0
scatter:
m_OverrideState: 1
m_Value: 0.7
clamp:
m_OverrideState: 1
m_Value: 65472
tint:
m_OverrideState: 1
m_Value: {r: 1, g: 1, b: 1, a: 1}
highQualityFiltering:
m_OverrideState: 1
m_Value: 0
downscale:
m_OverrideState: 1
m_Value: 0
maxIterations:
m_OverrideState: 1
m_Value: 6
dirtTexture:
m_OverrideState: 1
m_Value: {fileID: 0}
dimension: 1
dirtIntensity:
m_OverrideState: 1
m_Value: 0
--- !u!114 &-5609251016017277293
MonoBehaviour:
m_ObjectHideFlags: 3
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: 6bd486065ce11414fa40e631affc4900, type: 3}
m_Name: ProbeVolumesOptions
m_EditorClassIdentifier:
active: 1
normalBias:
m_OverrideState: 1
m_Value: 0.05
viewBias:
m_OverrideState: 1
m_Value: 0.1
scaleBiasWithMinProbeDistance:
m_OverrideState: 1
m_Value: 0
samplingNoise:
m_OverrideState: 1
m_Value: 0.1
animateSamplingNoise:
m_OverrideState: 1
m_Value: 1
leakReductionMode:
m_OverrideState: 1
m_Value: 2
minValidDotProductValue:
m_OverrideState: 1
m_Value: 0.1
occlusionOnlyReflectionNormalization:
m_OverrideState: 1
m_Value: 1
intensityMultiplier:
m_OverrideState: 1
m_Value: 1
skyOcclusionIntensityMultiplier:
m_OverrideState: 1
m_Value: 1
worldOffset:
m_OverrideState: 1
m_Value: {x: 0, y: 0, z: 0}
--- !u!114 &-3459710295462755850
MonoBehaviour:
m_ObjectHideFlags: 3
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: c5e1dc532bcb41949b58bc4f2abfbb7e, type: 3}
m_Name: LensDistortion
m_EditorClassIdentifier:
active: 1
intensity:
m_OverrideState: 1
m_Value: 0
xMultiplier:
m_OverrideState: 1
m_Value: 1
yMultiplier:
m_OverrideState: 1
m_Value: 1
center:
m_OverrideState: 1
m_Value: {x: 0.5, y: 0.5}
scale:
m_OverrideState: 1
m_Value: 1
--- !u!114 &-2673905870377860765
MonoBehaviour:
m_ObjectHideFlags: 3
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: 221518ef91623a7438a71fef23660601, type: 3}
m_Name: WhiteBalance
m_EditorClassIdentifier:
active: 1
temperature:
m_OverrideState: 1
m_Value: 0
tint:
m_OverrideState: 1
m_Value: 0
--- !u!114 &-1929290040497888066
MonoBehaviour:
m_ObjectHideFlags: 3
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: c01700fd266d6914ababb731e09af2eb, type: 3}
m_Name: DepthOfField
m_EditorClassIdentifier:
active: 1
mode:
m_OverrideState: 1
m_Value: 0
gaussianStart:
m_OverrideState: 1
m_Value: 10
gaussianEnd:
m_OverrideState: 1
m_Value: 30
gaussianMaxRadius:
m_OverrideState: 1
m_Value: 1
highQualitySampling:
m_OverrideState: 1
m_Value: 0
focusDistance:
m_OverrideState: 1
m_Value: 10
aperture:
m_OverrideState: 1
m_Value: 5.6
focalLength:
m_OverrideState: 1
m_Value: 50
bladeCount:
m_OverrideState: 1
m_Value: 5
bladeCurvature:
m_OverrideState: 1
m_Value: 1
bladeRotation:
m_OverrideState: 1
m_Value: 0
--- !u!114 &-1899571858441854302
MonoBehaviour:
m_ObjectHideFlags: 3
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: 29fa0085f50d5e54f8144f766051a691, type: 3}
m_Name: FilmGrain
m_EditorClassIdentifier:
active: 1
type:
m_OverrideState: 1
m_Value: 0
intensity:
m_OverrideState: 1
m_Value: 0
response:
m_OverrideState: 1
m_Value: 0.8
texture:
m_OverrideState: 1
m_Value: {fileID: 0}
--- !u!114 &-1547716678389945873
MonoBehaviour:
m_ObjectHideFlags: 3
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: 5485954d14dfb9a4c8ead8edb0ded5b1, type: 3}
m_Name: LiftGammaGain
m_EditorClassIdentifier:
active: 1
lift:
m_OverrideState: 1
m_Value: {x: 1, y: 1, z: 1, w: 0}
gamma:
m_OverrideState: 1
m_Value: {x: 1, y: 1, z: 1, w: 0}
gain:
m_OverrideState: 1
m_Value: {x: 1, y: 1, z: 1, w: 0}
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -12,4 +267,529 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: d7fd9488000d3734a9e00ee676215985, type: 3}
m_Name: DefaultVolumeProfile
m_EditorClassIdentifier:
components: []
components:
- {fileID: 6134922300343424433}
- {fileID: 3701952890792375117}
- {fileID: 7236618996094458840}
- {fileID: -1899571858441854302}
- {fileID: -1547716678389945873}
- {fileID: 7933365599458753573}
- {fileID: 5726565210832562111}
- {fileID: -1929290040497888066}
- {fileID: 6056855497371471870}
- {fileID: -2673905870377860765}
- {fileID: -6260248028241132399}
- {fileID: -3459710295462755850}
- {fileID: 7621875663918567143}
- {fileID: 7142826232866814168}
- {fileID: -8299899638604294112}
- {fileID: 4799091489421839365}
- {fileID: 464747032197062586}
- {fileID: 7800253976762326728}
- {fileID: -5609251016017277293}
--- !u!114 &464747032197062586
MonoBehaviour:
m_ObjectHideFlags: 3
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: fb60a22f311433c4c962b888d1393f88, type: 3}
m_Name: PaniniProjection
m_EditorClassIdentifier:
active: 1
distance:
m_OverrideState: 1
m_Value: 0
cropToFit:
m_OverrideState: 1
m_Value: 1
--- !u!114 &3701952890792375117
MonoBehaviour:
m_ObjectHideFlags: 3
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: 3eb4b772797da9440885e8bd939e9560, type: 3}
m_Name: ColorCurves
m_EditorClassIdentifier:
active: 1
master:
m_OverrideState: 1
m_Value:
<length>k__BackingField: 2
m_Loop: 0
m_ZeroValue: 0
m_Range: 1
m_Curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 1
outSlope: 1
tangentMode: 0
weightedMode: 0
inWeight: 0
outWeight: 0
- serializedVersion: 3
time: 1
value: 1
inSlope: 1
outSlope: 1
tangentMode: 0
weightedMode: 0
inWeight: 0
outWeight: 0
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
red:
m_OverrideState: 1
m_Value:
<length>k__BackingField: 2
m_Loop: 0
m_ZeroValue: 0
m_Range: 1
m_Curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 1
outSlope: 1
tangentMode: 0
weightedMode: 0
inWeight: 0
outWeight: 0
- serializedVersion: 3
time: 1
value: 1
inSlope: 1
outSlope: 1
tangentMode: 0
weightedMode: 0
inWeight: 0
outWeight: 0
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
green:
m_OverrideState: 1
m_Value:
<length>k__BackingField: 2
m_Loop: 0
m_ZeroValue: 0
m_Range: 1
m_Curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 1
outSlope: 1
tangentMode: 0
weightedMode: 0
inWeight: 0
outWeight: 0
- serializedVersion: 3
time: 1
value: 1
inSlope: 1
outSlope: 1
tangentMode: 0
weightedMode: 0
inWeight: 0
outWeight: 0
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
blue:
m_OverrideState: 1
m_Value:
<length>k__BackingField: 2
m_Loop: 0
m_ZeroValue: 0
m_Range: 1
m_Curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 1
outSlope: 1
tangentMode: 0
weightedMode: 0
inWeight: 0
outWeight: 0
- serializedVersion: 3
time: 1
value: 1
inSlope: 1
outSlope: 1
tangentMode: 0
weightedMode: 0
inWeight: 0
outWeight: 0
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
hueVsHue:
m_OverrideState: 1
m_Value:
<length>k__BackingField: 0
m_Loop: 1
m_ZeroValue: 0.5
m_Range: 1
m_Curve:
serializedVersion: 2
m_Curve: []
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
hueVsSat:
m_OverrideState: 1
m_Value:
<length>k__BackingField: 0
m_Loop: 1
m_ZeroValue: 0.5
m_Range: 1
m_Curve:
serializedVersion: 2
m_Curve: []
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
satVsSat:
m_OverrideState: 1
m_Value:
<length>k__BackingField: 0
m_Loop: 0
m_ZeroValue: 0.5
m_Range: 1
m_Curve:
serializedVersion: 2
m_Curve: []
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
lumVsSat:
m_OverrideState: 1
m_Value:
<length>k__BackingField: 0
m_Loop: 0
m_ZeroValue: 0.5
m_Range: 1
m_Curve:
serializedVersion: 2
m_Curve: []
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
--- !u!114 &4799091489421839365
MonoBehaviour:
m_ObjectHideFlags: 3
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: e021b4c809a781e468c2988c016ebbea, type: 3}
m_Name: ColorLookup
m_EditorClassIdentifier:
active: 1
texture:
m_OverrideState: 1
m_Value: {fileID: 0}
dimension: 1
contribution:
m_OverrideState: 1
m_Value: 0
--- !u!114 &5726565210832562111
MonoBehaviour:
m_ObjectHideFlags: 3
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: 81180773991d8724ab7f2d216912b564, type: 3}
m_Name: ChromaticAberration
m_EditorClassIdentifier:
active: 1
intensity:
m_OverrideState: 1
m_Value: 0
--- !u!114 &6056855497371471870
MonoBehaviour:
m_ObjectHideFlags: 3
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: 06437c1ff663d574d9447842ba0a72e4, type: 3}
m_Name: ScreenSpaceLensFlare
m_EditorClassIdentifier:
active: 1
intensity:
m_OverrideState: 1
m_Value: 0
tintColor:
m_OverrideState: 1
m_Value: {r: 1, g: 1, b: 1, a: 1}
bloomMip:
m_OverrideState: 1
m_Value: 1
firstFlareIntensity:
m_OverrideState: 1
m_Value: 1
secondaryFlareIntensity:
m_OverrideState: 1
m_Value: 1
warpedFlareIntensity:
m_OverrideState: 1
m_Value: 1
warpedFlareScale:
m_OverrideState: 1
m_Value: {x: 1, y: 1}
samples:
m_OverrideState: 1
m_Value: 1
sampleDimmer:
m_OverrideState: 1
m_Value: 0.5
vignetteEffect:
m_OverrideState: 1
m_Value: 1
startingPosition:
m_OverrideState: 1
m_Value: 1.25
scale:
m_OverrideState: 1
m_Value: 1.5
streaksIntensity:
m_OverrideState: 1
m_Value: 0
streaksLength:
m_OverrideState: 1
m_Value: 0.5
streaksOrientation:
m_OverrideState: 1
m_Value: 0
streaksThreshold:
m_OverrideState: 1
m_Value: 0.25
resolution:
m_OverrideState: 1
m_Value: 4
chromaticAbberationIntensity:
m_OverrideState: 1
m_Value: 0.5
--- !u!114 &6134922300343424433
MonoBehaviour:
m_ObjectHideFlags: 3
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: cdfbdbb87d3286943a057f7791b43141, type: 3}
m_Name: ChannelMixer
m_EditorClassIdentifier:
active: 1
redOutRedIn:
m_OverrideState: 1
m_Value: 100
redOutGreenIn:
m_OverrideState: 1
m_Value: 0
redOutBlueIn:
m_OverrideState: 1
m_Value: 0
greenOutRedIn:
m_OverrideState: 1
m_Value: 0
greenOutGreenIn:
m_OverrideState: 1
m_Value: 100
greenOutBlueIn:
m_OverrideState: 1
m_Value: 0
blueOutRedIn:
m_OverrideState: 1
m_Value: 0
blueOutGreenIn:
m_OverrideState: 1
m_Value: 0
blueOutBlueIn:
m_OverrideState: 1
m_Value: 100
--- !u!114 &7142826232866814168
MonoBehaviour:
m_ObjectHideFlags: 3
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: 97c23e3b12dc18c42a140437e53d3951, type: 3}
m_Name: Tonemapping
m_EditorClassIdentifier:
active: 1
mode:
m_OverrideState: 1
m_Value: 0
neutralHDRRangeReductionMode:
m_OverrideState: 1
m_Value: 2
acesPreset:
m_OverrideState: 1
m_Value: 3
hueShiftAmount:
m_OverrideState: 1
m_Value: 0
detectPaperWhite:
m_OverrideState: 1
m_Value: 0
paperWhite:
m_OverrideState: 1
m_Value: 300
detectBrightnessLimits:
m_OverrideState: 1
m_Value: 1
minNits:
m_OverrideState: 1
m_Value: 0.005
maxNits:
m_OverrideState: 1
m_Value: 1000
--- !u!114 &7236618996094458840
MonoBehaviour:
m_ObjectHideFlags: 3
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: 899c54efeace73346a0a16faa3afe726, type: 3}
m_Name: Vignette
m_EditorClassIdentifier:
active: 1
color:
m_OverrideState: 1
m_Value: {r: 0, g: 0, b: 0, a: 1}
center:
m_OverrideState: 1
m_Value: {x: 0.5, y: 0.5}
intensity:
m_OverrideState: 1
m_Value: 0
smoothness:
m_OverrideState: 1
m_Value: 0.2
rounded:
m_OverrideState: 1
m_Value: 0
--- !u!114 &7621875663918567143
MonoBehaviour:
m_ObjectHideFlags: 3
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: 66f335fb1ffd8684294ad653bf1c7564, type: 3}
m_Name: ColorAdjustments
m_EditorClassIdentifier:
active: 1
postExposure:
m_OverrideState: 1
m_Value: 0
contrast:
m_OverrideState: 1
m_Value: 0
colorFilter:
m_OverrideState: 1
m_Value: {r: 1, g: 1, b: 1, a: 1}
hueShift:
m_OverrideState: 1
m_Value: 0
saturation:
m_OverrideState: 1
m_Value: 0
--- !u!114 &7800253976762326728
MonoBehaviour:
m_ObjectHideFlags: 3
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: 558a8e2b6826cf840aae193990ba9f2e, type: 3}
m_Name: ShadowsMidtonesHighlights
m_EditorClassIdentifier:
active: 1
shadows:
m_OverrideState: 1
m_Value: {x: 1, y: 1, z: 1, w: 0}
midtones:
m_OverrideState: 1
m_Value: {x: 1, y: 1, z: 1, w: 0}
highlights:
m_OverrideState: 1
m_Value: {x: 1, y: 1, z: 1, w: 0}
shadowsStart:
m_OverrideState: 1
m_Value: 0
shadowsEnd:
m_OverrideState: 1
m_Value: 0.3
highlightsStart:
m_OverrideState: 1
m_Value: 0.55
highlightsEnd:
m_OverrideState: 1
m_Value: 1
--- !u!114 &7933365599458753573
MonoBehaviour:
m_ObjectHideFlags: 3
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: ccf1aba9553839d41ae37dd52e9ebcce, type: 3}
m_Name: MotionBlur
m_EditorClassIdentifier:
active: 1
mode:
m_OverrideState: 1
m_Value: 0
quality:
m_OverrideState: 1
m_Value: 0
intensity:
m_OverrideState: 1
m_Value: 0
clamp:
m_OverrideState: 1
m_Value: 0.05

8
Assets/Dev.meta Normal file
View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: e39b320578909fe48b0c48f5f3b0a044
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -13,7 +13,7 @@ OcclusionCullingSettings:
--- !u!104 &2
RenderSettings:
m_ObjectHideFlags: 0
serializedVersion: 9
serializedVersion: 10
m_Fog: 0
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
m_FogMode: 3
@@ -42,8 +42,8 @@ RenderSettings:
--- !u!157 &3
LightmapSettings:
m_ObjectHideFlags: 0
serializedVersion: 12
m_GIWorkflowMode: 1
serializedVersion: 13
m_BakeOnSceneLoad: 0
m_GISettings:
serializedVersion: 2
m_BounceScale: 1
@@ -66,9 +66,6 @@ LightmapSettings:
m_LightmapParameters: {fileID: 0}
m_LightmapsBakeMode: 1
m_TextureCompression: 1
m_FinalGather: 0
m_FinalGatherFiltering: 1
m_FinalGatherRayCount: 256
m_ReflectionCompression: 2
m_MixedBakeMode: 2
m_BakeBackend: 1
@@ -179,6 +176,9 @@ MeshRenderer:
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
@@ -227,90 +227,6 @@ Transform:
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &9010203
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 9010207}
- component: {fileID: 9010206}
- component: {fileID: 9010205}
m_Layer: 5
m_Name: CanvasCrosshair
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &9010205
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9010203}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
m_Name:
m_EditorClassIdentifier:
m_UiScaleMode: 0
m_ReferencePixelsPerUnit: 100
m_ScaleFactor: 1
m_ReferenceResolution: {x: 800, y: 600}
m_ScreenMatchMode: 0
m_MatchWidthOrHeight: 0
m_PhysicalUnit: 3
m_FallbackScreenDPI: 96
m_DefaultSpriteDPI: 96
m_DynamicPixelsPerUnit: 1
m_PresetInfoIsWorld: 0
--- !u!223 &9010206
Canvas:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9010203}
m_Enabled: 1
serializedVersion: 3
m_RenderMode: 0
m_Camera: {fileID: 330585545}
m_PlaneDistance: 0.1
m_PixelPerfect: 0
m_ReceivesEvents: 1
m_OverrideSorting: 0
m_OverridePixelPerfect: 0
m_SortingBucketNormalizedSize: 0
m_VertexColorAlwaysGammaSpace: 1
m_AdditionalShaderChannelsFlag: 0
m_UpdateRectTransformForStandalone: 0
m_SortingLayerID: 0
m_SortingOrder: 0
m_TargetDisplay: 0
--- !u!224 &9010207
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9010203}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0, y: 0, z: 0}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 503175864}
m_Father: {fileID: 330585546}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0, y: 0}
--- !u!1001 &9266861
PrefabInstance:
m_ObjectHideFlags: 0
@@ -437,6 +353,9 @@ MeshRenderer:
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
@@ -644,179 +563,6 @@ MeshCollider:
m_Convex: 1
m_CookingOptions: 30
m_Mesh: {fileID: 4731840015933613875, guid: 5cefbb3c9ca215b448e9af676cb1aa4f, type: 3}
--- !u!1 &330585543
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 330585546}
- component: {fileID: 330585545}
- component: {fileID: 330585544}
- component: {fileID: 330585547}
- component: {fileID: 330585548}
m_Layer: 0
m_Name: Main Camera
m_TagString: MainCamera
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!81 &330585544
AudioListener:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 330585543}
m_Enabled: 1
--- !u!20 &330585545
Camera:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 330585543}
m_Enabled: 1
serializedVersion: 2
m_ClearFlags: 1
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
m_projectionMatrixMode: 1
m_GateFitMode: 2
m_FOVAxisMode: 0
m_Iso: 200
m_ShutterSpeed: 0.005
m_Aperture: 16
m_FocusDistance: 10
m_FocalLength: 50
m_BladeCount: 5
m_Curvature: {x: 2, y: 11}
m_BarrelClipping: 0.25
m_Anamorphism: 0
m_SensorSize: {x: 36, y: 24}
m_LensShift: {x: 0, y: 0}
m_NormalizedViewPortRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
near clip plane: 0.3
far clip plane: 1000
field of view: 80
orthographic: 0
orthographic size: 5
m_Depth: -1
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_RenderingPath: -1
m_TargetTexture: {fileID: 0}
m_TargetDisplay: 0
m_TargetEye: 3
m_HDR: 1
m_AllowMSAA: 1
m_AllowDynamicResolution: 0
m_ForceIntoRT: 0
m_OcclusionCulling: 1
m_StereoConvergence: 10
m_StereoSeparation: 0.022
--- !u!4 &330585546
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 330585543}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 1.75, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 9010207}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &330585547
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 330585543}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3}
m_Name:
m_EditorClassIdentifier:
m_RenderShadows: 1
m_RequiresDepthTextureOption: 2
m_RequiresOpaqueTextureOption: 2
m_CameraType: 0
m_Cameras: []
m_RendererIndex: -1
m_VolumeLayerMask:
serializedVersion: 2
m_Bits: 1
m_VolumeTrigger: {fileID: 0}
m_VolumeFrameworkUpdateModeOption: 2
m_RenderPostProcessing: 1
m_Antialiasing: 0
m_AntialiasingQuality: 2
m_StopNaN: 0
m_Dithering: 0
m_ClearDepth: 1
m_AllowXRRendering: 1
m_AllowHDROutput: 1
m_UseScreenCoordOverride: 0
m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0}
m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0}
m_RequiresDepthTexture: 0
m_RequiresColorTexture: 0
m_Version: 2
m_TaaSettings:
m_Quality: 3
m_FrameInfluence: 0.1
m_JitterScale: 1
m_MipBias: 0
m_VarianceClampScale: 0.9
m_ContrastAdaptiveSharpening: 0
--- !u!114 &330585548
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 330585543}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 72ece51f2901e7445ab60da3685d6b5f, type: 3}
m_Name:
m_EditorClassIdentifier:
m_ShowDebugText: 0
m_ShowCameraFrustum: 1
m_IgnoreTimeScale: 0
m_WorldUpOverride: {fileID: 0}
m_UpdateMethod: 2
m_BlendUpdateMethod: 1
m_DefaultBlend:
m_Style: 0
m_Time: 2
m_CustomCurve:
serializedVersion: 2
m_Curve: []
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
m_CustomBlends: {fileID: 0}
m_CameraCutEvent:
m_PersistentCalls:
m_Calls: []
m_CameraActivatedEvent:
m_PersistentCalls:
m_Calls: []
--- !u!1 &340121189
GameObject:
m_ObjectHideFlags: 0
@@ -867,6 +613,9 @@ MeshRenderer:
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
@@ -957,6 +706,9 @@ MeshRenderer:
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
@@ -1218,81 +970,6 @@ Rigidbody:
m_Interpolate: 0
m_Constraints: 0
m_CollisionDetection: 1
--- !u!1 &503175863
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 503175864}
- component: {fileID: 503175866}
- component: {fileID: 503175865}
m_Layer: 5
m_Name: Crosshair
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &503175864
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 503175863}
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_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 9010207}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 39, y: 39}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &503175865
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 503175863}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0.9716981, g: 0.91266793, b: 0.8479441, a: 0.19215687}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: -2006807628, guid: f68ccc14f83f6a74586729066501e5ee, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!222 &503175866
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 503175863}
m_CullTransparentMesh: 1
--- !u!1 &503687363
GameObject:
m_ObjectHideFlags: 0
@@ -1343,6 +1020,9 @@ MeshRenderer:
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
@@ -1557,6 +1237,9 @@ MeshRenderer:
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
@@ -1707,9 +1390,8 @@ Light:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 765481450}
m_Enabled: 1
serializedVersion: 10
serializedVersion: 11
m_Type: 1
m_Shape: 0
m_Color: {r: 0.0072089583, g: 0.26792687, b: 0.509434, a: 1}
m_Intensity: 0.1
m_Range: 10
@@ -1759,8 +1441,12 @@ Light:
m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
m_UseBoundingSphereOverride: 0
m_UseViewFrustumForShadowCasterCull: 1
m_ForceVisible: 0
m_ShadowRadius: 0
m_ShadowAngle: 0
m_LightUnit: 1
m_LuxAtDistance: 1
m_EnableSpotReflector: 1
--- !u!4 &765481453
Transform:
m_ObjectHideFlags: 0
@@ -1826,6 +1512,9 @@ MeshRenderer:
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
@@ -1909,6 +1598,9 @@ MeshRenderer:
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
@@ -2041,6 +1733,9 @@ MeshRenderer:
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
@@ -2338,6 +2033,9 @@ MeshRenderer:
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
@@ -2421,6 +2119,9 @@ MeshRenderer:
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
@@ -2504,6 +2205,9 @@ MeshRenderer:
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
@@ -2587,6 +2291,9 @@ MeshRenderer:
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
@@ -2710,8 +2417,7 @@ LightingSettings:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
serializedVersion: 6
m_GIWorkflowMode: 1
serializedVersion: 9
m_EnableBakedLightmaps: 1
m_EnableRealtimeLightmaps: 0
m_RealtimeEnvironmentLighting: 1
@@ -2721,6 +2427,8 @@ LightingSettings:
m_UsingShadowmask: 1
m_BakeBackend: 1
m_LightmapMaxSize: 1024
m_LightmapSizeFixed: 0
m_UseMipmapLimits: 1
m_BakeResolution: 40
m_Padding: 2
m_LightmapCompression: 3
@@ -2734,13 +2442,11 @@ LightingSettings:
m_FilterMode: 1
m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0}
m_ExportTrainingData: 0
m_EnableWorkerProcessBaking: 1
m_TrainingDataDestination: TrainingData
m_RealtimeResolution: 2
m_ForceWhiteAlbedo: 0
m_ForceUpdates: 0
m_FinalGather: 0
m_FinalGatherRayCount: 256
m_FinalGatherFiltering: 1
m_PVRCulling: 1
m_PVRSampling: 1
m_PVRDirectSampleCount: 32
@@ -2764,99 +2470,7 @@ LightingSettings:
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
m_PVRFilteringAtrousPositionSigmaIndirect: 2
m_PVRFilteringAtrousPositionSigmaAO: 1
m_PVRTiledBaking: 0
m_NumRaysToShootPerTexel: -1
m_RespectSceneVisibilityWhenBakingGI: 0
--- !u!1 &1676266384
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1676266387}
- component: {fileID: 1676266386}
- component: {fileID: 1676266388}
m_Layer: 0
m_Name: EventSystem
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &1676266386
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1676266384}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3}
m_Name:
m_EditorClassIdentifier:
m_FirstSelected: {fileID: 0}
m_sendNavigationEvents: 1
m_DragThreshold: 10
--- !u!4 &1676266387
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1676266384}
serializedVersion: 2
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_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1676266388
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1676266384}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 01614664b831546d2ae94a42149d80ac, type: 3}
m_Name:
m_EditorClassIdentifier:
m_SendPointerHoverToParent: 1
m_MoveRepeatDelay: 0.5
m_MoveRepeatRate: 0.1
m_XRTrackingOrigin: {fileID: 0}
m_ActionsAsset: {fileID: -944628639613478452, guid: ca9f5fa95ffab41fb9a615ab714db018,
type: 3}
m_PointAction: {fileID: -1654692200621890270, guid: ca9f5fa95ffab41fb9a615ab714db018,
type: 3}
m_MoveAction: {fileID: -8784545083839296357, guid: ca9f5fa95ffab41fb9a615ab714db018,
type: 3}
m_SubmitAction: {fileID: 392368643174621059, guid: ca9f5fa95ffab41fb9a615ab714db018,
type: 3}
m_CancelAction: {fileID: 7727032971491509709, guid: ca9f5fa95ffab41fb9a615ab714db018,
type: 3}
m_LeftClickAction: {fileID: 3001919216989983466, guid: ca9f5fa95ffab41fb9a615ab714db018,
type: 3}
m_MiddleClickAction: {fileID: -2185481485913320682, guid: ca9f5fa95ffab41fb9a615ab714db018,
type: 3}
m_RightClickAction: {fileID: -4090225696740746782, guid: ca9f5fa95ffab41fb9a615ab714db018,
type: 3}
m_ScrollWheelAction: {fileID: 6240969308177333660, guid: ca9f5fa95ffab41fb9a615ab714db018,
type: 3}
m_TrackedDevicePositionAction: {fileID: 6564999863303420839, guid: ca9f5fa95ffab41fb9a615ab714db018,
type: 3}
m_TrackedDeviceOrientationAction: {fileID: 7970375526676320489, guid: ca9f5fa95ffab41fb9a615ab714db018,
type: 3}
m_DeselectOnBackgroundClick: 1
m_PointerBehavior: 0
m_CursorLockBehavior: 0
m_ScrollDeltaPerTick: 6
--- !u!1 &1695603700
GameObject:
m_ObjectHideFlags: 0
@@ -3155,9 +2769,8 @@ Light:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1901684836}
m_Enabled: 1
serializedVersion: 10
serializedVersion: 11
m_Type: 2
m_Shape: 0
m_Color: {r: 1, g: 0.9833402, b: 0.1745283, a: 1}
m_Intensity: 10.25
m_Range: 10
@@ -3207,8 +2820,12 @@ Light:
m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
m_UseBoundingSphereOverride: 0
m_UseViewFrustumForShadowCasterCull: 1
m_ForceVisible: 0
m_ShadowRadius: 0
m_ShadowAngle: 0
m_LightUnit: 1
m_LuxAtDistance: 1
m_EnableSpotReflector: 1
--- !u!1 &1954528286
GameObject:
m_ObjectHideFlags: 0
@@ -3258,9 +2875,8 @@ Light:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1954528286}
m_Enabled: 1
serializedVersion: 10
serializedVersion: 11
m_Type: 0
m_Shape: 0
m_Color: {r: 0.9622642, g: 0.95139134, b: 0.8033998, a: 1}
m_Intensity: 34.08
m_Range: 10
@@ -3310,8 +2926,12 @@ Light:
m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
m_UseBoundingSphereOverride: 0
m_UseViewFrustumForShadowCasterCull: 1
m_ForceVisible: 0
m_ShadowRadius: 0
m_ShadowAngle: 0
m_LightUnit: 1
m_LuxAtDistance: 1
m_EnableSpotReflector: 1
--- !u!4 &1954528289
Transform:
m_ObjectHideFlags: 0
@@ -3384,6 +3004,9 @@ MeshRenderer:
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
@@ -3436,7 +3059,6 @@ Transform:
SceneRoots:
m_ObjectHideFlags: 0
m_Roots:
- {fileID: 330585546}
- {fileID: 832575519}
- {fileID: 341739537}
- {fileID: 2081706525}
@@ -3450,7 +3072,6 @@ SceneRoots:
- {fileID: 1060675711}
- {fileID: 140873045}
- {fileID: 512784095}
- {fileID: 1676266387}
- {fileID: 8186777}
- {fileID: 423578102}
- {fileID: 1099951389}

8
Assets/Plugins.meta Normal file
View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 2e119bbe05ada6643a93c09e9b57c5ca
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: fd056298735624f468ee28a35bb7faac
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 8828e73deeb9a1245bc9dcc11bffba30
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 6eeab58dea03d6649b73b74861f55312
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,15 @@
fileFormatVersion: 2
guid: 31f20cb97742f2f4d948452249a89d6d
timeCreated: 1502706485
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 106670
packageName: Rainbow Hierarchy 2
packageVersion: 2.6.2
assetPath: Assets/Plugins/Borodar/RainbowHierarchy/Demo/DemoColors.unity
uploadId: 716077

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,15 @@
fileFormatVersion: 2
guid: aa2219c016490de4ea3249875a0fdc97
timeCreated: 1502706485
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 106670
packageName: Rainbow Hierarchy 2
packageVersion: 2.6.2
assetPath: Assets/Plugins/Borodar/RainbowHierarchy/Demo/DemoComponents.unity
uploadId: 716077

View File

@@ -0,0 +1,6 @@
This software includes third-party software subject to the associated copyrights, as follows:
Name: Unity-Reorderable-List
Repo: https://github.com/cfoulston/Unity-Reorderable-List
License: MIT (https://github.com/cfoulston/Unity-Reorderable-List/blob/master/LICENSE)
Copyright (c) 2017 Chris Foulston

View File

@@ -0,0 +1,14 @@
fileFormatVersion: 2
guid: 080d95922e5bb36408c013f72c278870
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 106670
packageName: Rainbow Hierarchy 2
packageVersion: 2.6.2
assetPath: Assets/Plugins/Borodar/RainbowHierarchy/NOTICES.txt
uploadId: 716077

Binary file not shown.

View File

@@ -0,0 +1,14 @@
fileFormatVersion: 2
guid: 338f04d1760f4ca49a47e14bb0bf4e9e
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 106670
packageName: Rainbow Hierarchy 2
packageVersion: 2.6.2
assetPath: Assets/Plugins/Borodar/RainbowHierarchy/QuickStart.pdf
uploadId: 716077

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 4d28b25f9acea2446a92a376b467f673
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 3a4659fa6059d5c41a7154e883f8a9c7
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: c0e52a2f833afe545b555cb1edb01dcd
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,20 @@
using System.Diagnostics.CodeAnalysis;
using UnityEngine;
namespace Borodar.RainbowHierarchy
{
[SuppressMessage("ReSharper", "ConvertIfStatementToNullCoalescingExpression")]
public static class ColorHelper
{
public static readonly Color POPUP_BORDER_CLR_FREE = new Color(0.51f, 0.51f, 0.51f);
public static readonly Color POPUP_BORDER_CLR_PRO = new Color(0.13f, 0.13f, 0.13f);
public static readonly Color POPUP_BACKGROUND_CLR_FREE = new Color(0.83f, 0.83f, 0.83f);
public static readonly Color POPUP_BACKGROUND_CLR_PRO = new Color(0.18f, 0.18f, 0.18f);
public static readonly Color SEPARATOR_CLR_1_FREE = new Color(0.65f, 0.65f, 0.65f, 1f);
public static readonly Color SEPARATOR_CLR_2_FREE = new Color(0.9f, 0.9f, 0.9f, 1f);
public static readonly Color SEPARATOR_CLR_1_PRO = new Color(0.13f, 0.13f, 0.13f, 1f);
public static readonly Color SEPARATOR_CLR_2_PRO = new Color(0.22f, 0.22f, 0.22f, 1f);
}
}

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: f5afe207c4e956942a1f9bef022c3a98
AssetOrigin:
serializedVersion: 1
productId: 106670
packageName: Rainbow Hierarchy 2
packageVersion: 2.6.2
assetPath: Assets/Plugins/Borodar/RainbowHierarchy/Scripts/Editor/Helpers/ColorHelper.cs
uploadId: 716077

View File

@@ -0,0 +1,227 @@
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.IO;
using System.Linq;
using UnityEditor;
using UnityEngine;
namespace Borodar.RainbowHierarchy
{
[SuppressMessage("ReSharper", "ConvertIfStatementToNullCoalescingExpression")]
public static class HierarchyEditorUtility
{
private static Texture2D _editIcon;
private static Texture2D _settingsIcon;
private static Texture2D _filterIcon;
private static Texture2D _deleteIcon;
private static Texture2D _foldoutFirstIcon;
private static Texture2D _foldoutMiddleIcon;
private static Texture2D _foldoutLastIcon;
private static Texture2D _foldoutLevelsIcon;
private static string _projectName;
private static string _projectPath;
private static string _tempDir;
//---------------------------------------------------------------------
// Project
//---------------------------------------------------------------------
[SuppressMessage("ReSharper", "InvertIf")]
public static string ProjectName
{
get
{
if (_projectName == null)
{
var path = Application.dataPath.Split('/');
_projectName = path[path.Length - 2];
}
return _projectName;
}
}
[SuppressMessage("ReSharper", "InvertIf")]
public static string ProjectPath
{
get
{
if (_projectPath == null)
{
_projectPath = Path.GetDirectoryName(Application.dataPath);
}
return _projectPath;
}
}
[SuppressMessage("ReSharper", "InvertIf")]
public static string TempDir
{
get
{
if (_tempDir == null)
{
_tempDir = $"{ProjectPath}/Temp";
}
return _tempDir;
}
}
//---------------------------------------------------------------------
// Windows
//---------------------------------------------------------------------
public static IEnumerable<EditorWindow> GetAllWindowsByType(string type)
{
var objectList = Resources.FindObjectsOfTypeAll(typeof(EditorWindow));
var windows = from obj in objectList where obj.GetType().ToString() == type select (EditorWindow) obj;
return windows;
}
//---------------------------------------------------------------------
// Scene
//---------------------------------------------------------------------
public static void UpdateSceneConfigVisibility(bool isVisible)
{
var rulesetInstances = HierarchyRulesetV2.Instances;
if (rulesetInstances == null || rulesetInstances.Count < 1) return;
foreach (var ruleset in rulesetInstances)
{
if (ruleset == null) return;
ruleset.transform.hideFlags = isVisible
? HideFlags.None
: HideFlags.HideInHierarchy;
}
EditorApplication.DirtyHierarchyWindowSorting();
}
public static string GetTransformPath(Transform transform)
{
var path = transform.name;
while (transform.parent != null)
{
transform = transform.parent;
path = $"{transform.name}/{path}";
}
return $"/{path}";
}
//---------------------------------------------------------------------
// GUI
//---------------------------------------------------------------------
public static bool SearchField(ref string query, ref Enum filter, Enum defaultFilter, params GUILayoutOption[] options)
{
var queryBefore = query;
var filterBefore = filter;
var changed = false;
GUILayout.BeginHorizontal();
var queryRect = GUILayoutUtility.GetRect(GUIContent.none, "ToolbarSearchTextFieldPopup", options);
queryRect.x += 2f;
queryRect.width -= 13f;
var filterRect = queryRect;
filterRect.width = 20f;
filter = EditorGUI.EnumPopup(filterRect, filter, "label");
if (!Equals(filter, filterBefore)) changed = true;
query = EditorGUI.TextField(queryRect, GUIContent.none, query, "ToolbarSearchTextField");
if (query != null && !query.Equals(queryBefore)) changed = true;
var cancelRect = queryRect;
cancelRect.x += queryRect.width;
cancelRect.width = 12f;
if (GUI.Button(cancelRect, GUIContent.none, "ToolbarSearchCancelButton"))
{
query = string.Empty;
filter = defaultFilter;
changed = true;
// workaround for bug with selected text
GUIUtility.keyboardControl = 0;
}
GUILayout.EndHorizontal();
return changed;
}
//---------------------------------------------------------------------
// Icons
//---------------------------------------------------------------------
public static Texture2D GetEditIcon()
{
return GetTexture(ref _editIcon, HierarchyEditorTexture.IcnEdit);
}
public static Texture2D GetSettingsButtonIcon()
{
return GetTexture(ref _settingsIcon, HierarchyEditorTexture.IcnSettings);
}
public static Texture2D GetFilterButtonIcon()
{
return GetTexture(ref _filterIcon, HierarchyEditorTexture.IcnFilter);
}
public static Texture2D GetDeleteButtonIcon()
{
return GetTexture(ref _deleteIcon, HierarchyEditorTexture.IcnDelete);
}
public static Texture2D GetFoldoutIcon(SiblingIndex index)
{
switch (index)
{
case SiblingIndex.First:
return GetTexture(ref _foldoutFirstIcon, HierarchyEditorTexture.IcnFoldoutFirst);
case SiblingIndex.Middle:
return GetTexture(ref _foldoutMiddleIcon, HierarchyEditorTexture.IcnFoldoutMiddle);
case SiblingIndex.Last:
return GetTexture(ref _foldoutLastIcon, HierarchyEditorTexture.IcnFoldoutLast);
default:
throw new ArgumentOutOfRangeException("index", index, null);
}
}
public static Texture2D GetFoldoutLevelsIcon()
{
return GetTexture(ref _foldoutLevelsIcon, HierarchyEditorTexture.IcnFoldoutLevels);
}
//---------------------------------------------------------------------
// Helpers
//---------------------------------------------------------------------
private static Texture2D GetTexture(ref Texture2D texture, HierarchyEditorTexture type)
{
if (texture == null)
texture = HierarchyEditorTexturesStorage.GetTexture(type);
return texture;
}
//---------------------------------------------------------------------
// Nested
//---------------------------------------------------------------------
public enum SiblingIndex
{
First,
Middle,
Last
}
}
}

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 706f956b3ade11845b3ebc2c47f0fe00
AssetOrigin:
serializedVersion: 1
productId: 106670
packageName: Rainbow Hierarchy 2
packageVersion: 2.6.2
assetPath: Assets/Plugins/Borodar/RainbowHierarchy/Scripts/Editor/Helpers/HierarchyEditorUtility.cs
uploadId: 716077

View File

@@ -0,0 +1,124 @@
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Reflection;
using UnityEditor;
using UnityEditor.IMGUI.Controls;
using UnityEngine;
namespace Borodar.RainbowHierarchy
{
[InitializeOnLoad]
public static class HierarchyWindowAdapter
{
private const string EDITOR_WINDOW_TYPE = "UnityEditor.SceneHierarchyWindow";
private const double EDITOR_WINDOWS_CACHE_TTL = 2;
private const BindingFlags INSTANCE_PRIVATE = BindingFlags.Instance | BindingFlags.NonPublic;
private const BindingFlags INSTANCE_PUBLIC = BindingFlags.Instance | BindingFlags.Public;
private static readonly FieldInfo SCENE_HIERARCHY_FIELD;
private static readonly FieldInfo TREE_VIEW_FIELD;
private static readonly PropertyInfo TREE_VIEW_DATA_PROPERTY;
private static readonly MethodInfo TREE_VIEW_ITEMS_METHOD;
private static readonly PropertyInfo TREE_VIEW_OBJECT_PROPERTY;
// Windows cache
private static double _nextWindowsUpdate;
private static EditorWindow[] _windowsCache;
//---------------------------------------------------------------------
// Ctor
//---------------------------------------------------------------------
static HierarchyWindowAdapter()
{
// Reflection
var assembly = Assembly.GetAssembly(typeof(EditorWindow));
var hierarchyWindowType = assembly.GetType("UnityEditor.SceneHierarchyWindow");
SCENE_HIERARCHY_FIELD = hierarchyWindowType.GetField("m_SceneHierarchy", INSTANCE_PRIVATE);
var sceneHierarchyType = assembly.GetType("UnityEditor.SceneHierarchy");
TREE_VIEW_FIELD = sceneHierarchyType.GetField("m_TreeView", INSTANCE_PRIVATE);
var treeViewType = assembly.GetType("UnityEditor.IMGUI.Controls.TreeViewController");
TREE_VIEW_DATA_PROPERTY = treeViewType.GetProperty("data", INSTANCE_PUBLIC);
var treeViewDataType = assembly.GetType("UnityEditor.GameObjectTreeViewDataSource");
TREE_VIEW_ITEMS_METHOD = treeViewDataType.GetMethod("GetRows", INSTANCE_PUBLIC);
var treeViewItem = assembly.GetType("UnityEditor.GameObjectTreeViewItem");
TREE_VIEW_OBJECT_PROPERTY = treeViewItem.GetProperty("objectPPTR", INSTANCE_PUBLIC);
// Callbacks
HierarchyRulesetV2.OnRulesetChangeCallback += ApplyDefaultIconsToAll;
}
//---------------------------------------------------------------------
// Public
//---------------------------------------------------------------------
public static EditorWindow GetFirstHierarchyWindow()
{
return GetAllHierarchyWindows().FirstOrDefault();
}
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
[SuppressMessage("ReSharper", "InvertIf")]
public static IEnumerable<EditorWindow> GetAllHierarchyWindows(bool forceUpdate = false)
{
if (forceUpdate || _nextWindowsUpdate < EditorApplication.timeSinceStartup)
{
_nextWindowsUpdate = EditorApplication.timeSinceStartup + EDITOR_WINDOWS_CACHE_TTL;
_windowsCache = HierarchyEditorUtility.GetAllWindowsByType(EDITOR_WINDOW_TYPE).ToArray();
}
return _windowsCache;
}
public static void ApplyIconByInstanceId(int instanceId, Texture2D icon)
{
var hierarchyWindows = GetAllHierarchyWindows();
foreach (var window in hierarchyWindows)
{
var treeViewItems = GetTreeViewItems(window);
var treeViewItem = treeViewItems.FirstOrDefault(item => item.id == instanceId);
if (treeViewItem != null) treeViewItem.icon = icon;
}
}
//---------------------------------------------------------------------
// Helpers
//---------------------------------------------------------------------
private static IEnumerable<TreeViewItem> GetTreeViewItems(EditorWindow window)
{
var sceneHierarchy = SCENE_HIERARCHY_FIELD.GetValue(window);
var treeView = TREE_VIEW_FIELD.GetValue(sceneHierarchy);
var treeViewData = TREE_VIEW_DATA_PROPERTY.GetValue(treeView, null);
var treeViewItems = (IEnumerable<TreeViewItem>) TREE_VIEW_ITEMS_METHOD.Invoke(treeViewData, null);
return treeViewItems;
}
private static void ApplyDefaultIconsToAll()
{
var hierarchyWindows = GetAllHierarchyWindows(true);
foreach (var window in hierarchyWindows)
{
var treeViewItems = GetTreeViewItems(window);
foreach (var item in treeViewItems)
{
var gameObject = TREE_VIEW_OBJECT_PROPERTY.GetValue(item, null);
if (gameObject == null) continue;
item.icon = PrefabUtility.GetIconForGameObject((GameObject) gameObject);
}
}
EditorApplication.RepaintHierarchyWindow();
}
}
}

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: f23b31e6bba538a4cae0907091949e50
AssetOrigin:
serializedVersion: 1
productId: 106670
packageName: Rainbow Hierarchy 2
packageVersion: 2.6.2
assetPath: Assets/Plugins/Borodar/RainbowHierarchy/Scripts/Editor/Helpers/HierarchyWindowAdapter.cs
uploadId: 716077

View File

@@ -0,0 +1,24 @@
using UnityEngine;
namespace Borodar.RainbowHierarchy
{
internal static class RHLogger
{
private const string TAG = "<b>[RH]</b>";
public static void Log(string message)
{
Debug.Log($"{TAG} {message}");
}
public static void LogWarning(string message)
{
Debug.LogWarning($"{TAG} {message}");
}
public static void LogError(string message)
{
Debug.LogError($"{TAG} {message}");
}
}
}

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 7f02ac93f4c0323408795cc555a9241b
AssetOrigin:
serializedVersion: 1
productId: 106670
packageName: Rainbow Hierarchy 2
packageVersion: 2.6.2
assetPath: Assets/Plugins/Borodar/RainbowHierarchy/Scripts/Editor/Helpers/RHLogger.cs
uploadId: 716077

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 1b51128ba8e08d8498b38a08a4377290
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,54 @@
using System.IO;
using UnityEditor;
using UnityEditor.SceneManagement;
using UnityEngine;
using static Borodar.RainbowHierarchy.HierarchyRulesetV2;
using static Borodar.RainbowHierarchy.RHLogger;
namespace Borodar.RainbowHierarchy
{
[InitializeOnLoad]
public static class EditorProxyInitializer
{
static EditorProxyInitializer()
{
HierarchyEditorProxy.UpdateOldRuleset = (gameObject) =>
{
var dialogResult = EditorUtility.DisplayDialog
(
"Rainbow Hierarchy Update",
"This scene contains a ruleset from the older Rainbow Hierarchy version. Do you want to update it now?",
"Yes",
"No"
);
if (!dialogResult) return;
var scene = gameObject.scene;
var sceneName = scene.name;
var filePath = $"{HierarchyEditorUtility.TempDir}/{sceneName}.{EXTENSION}";
// Export old ruleset and override version
if (gameObject.TryGetComponent<HierarchyRuleset>(out var rulesetV1))
{
HierarchyRulesetExporter.ExportRulesetV1(rulesetV1, filePath);
Object.DestroyImmediate(rulesetV1);
}
else
{
LogError($"Cannot find ruleset component on: {gameObject.name}");
return;
}
gameObject.AddComponent<HierarchyRulesetV2>();
// Import ruleset data (all upgrade steps will be done automatically)
HierarchyRulesetImporter.ImportRuleset(filePath);
EditorSceneManager.SaveScene(scene);
File.Delete(filePath);
Log($"Ruleset successfully updated to latest version: {sceneName}");
};
}
}
}

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 490a06b1f08a54f43aee59f4a25d7580
AssetOrigin:
serializedVersion: 1
productId: 106670
packageName: Rainbow Hierarchy 2
packageVersion: 2.6.2
assetPath: Assets/Plugins/Borodar/RainbowHierarchy/Scripts/Editor/Port/EditorProxyInitializer.cs
uploadId: 716077

View File

@@ -0,0 +1,119 @@
using System.IO;
using System.Linq;
using UnityEditor;
using UnityEngine;
using static Borodar.RainbowHierarchy.HierarchyRulesetV2;
using static Borodar.RainbowHierarchy.RHLogger;
namespace Borodar.RainbowHierarchy
{
public static class HierarchyRulesetExporter
{
//---------------------------------------------------------------------
// Public
//---------------------------------------------------------------------
public static void Export()
{
var dirPath = EditorUtility.SaveFolderPanel("Export Rulesets", "", "");
if (string.IsNullOrEmpty(dirPath)) return;
ExportRuleset(dirPath);
ExportCustomIcons(dirPath);
}
public static void ExportRulesetV1(HierarchyRuleset ruleset, string filePath)
{
ConvertObjectRefsToPathsV1(ruleset);
var rulesetJson = EditorJsonUtility.ToJson(ruleset);
var wrapper = new HierarchyRulesetWrapper {
Version = HierarchyRuleset.VERSION,
RulesetJson = rulesetJson
};
var wrapperJson = EditorJsonUtility.ToJson(wrapper, true);
File.WriteAllText(filePath, wrapperJson);
Log($"Ruleset successfully exported:\n{filePath}");
}
//---------------------------------------------------------------------
// Helpers
//---------------------------------------------------------------------
private static void ExportRuleset(string dirPath)
{
foreach (var ruleset in Instances)
{
ConvertObjectRefsToPaths(ruleset);
var rulesetJson = EditorJsonUtility.ToJson(ruleset);
var wrapper = new HierarchyRulesetWrapper { RulesetJson = rulesetJson };
var wrapperJson = EditorJsonUtility.ToJson(wrapper, true);
var sceneName = ruleset.gameObject.scene.name;
var filePath = $"{dirPath}/{sceneName}.{EXTENSION}";
File.WriteAllText(filePath, wrapperJson);
Log($"Ruleset successfully exported:\n{filePath}");
}
}
private static void ConvertObjectRefsToPaths(HierarchyRulesetV2 ruleset)
{
foreach (var rule in ruleset.Rules)
{
if (rule.Type != HierarchyRule.KeyType.Object) continue;
if (rule.GameObject == null) continue;
var transform = rule.GameObject.transform;
var path = HierarchyEditorUtility.GetTransformPath(transform);
rule.Name = path;
}
}
private static void ConvertObjectRefsToPathsV1(HierarchyRuleset ruleset)
{
foreach (var rule in ruleset.Rules)
{
if (rule.Type != HierarchyRule.KeyType.Object) continue;
if (rule.GameObject == null) continue;
var transform = rule.GameObject.transform;
var path = HierarchyEditorUtility.GetTransformPath(transform);
rule.Name = path;
}
}
private static void ExportCustomIcons(string dirPath)
{
foreach (var ruleset in Instances)
{
var roots = new Object[] { ruleset };
var allDependencies = EditorUtility.CollectDependencies(roots);
var textureDependencies = (from dependency in allDependencies
where dependency is Texture2D
select AssetDatabase.GetAssetPath(dependency))
.ToArray();
var sceneName = ruleset.gameObject.scene.name;
if (!textureDependencies.Any())
{
Log($"There is no custom icons in ruleset: {sceneName}.\nSkipping package export.");
continue;
}
var packagePath = $"{dirPath}/{sceneName}.unitypackage";
AssetDatabase.ExportPackage(textureDependencies, packagePath);
Log($"Package with custom icons successfully exported:\n{packagePath}");
}
}
}
}

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: fb37551f26ecf5249ad80c84af95358f
AssetOrigin:
serializedVersion: 1
productId: 106670
packageName: Rainbow Hierarchy 2
packageVersion: 2.6.2
assetPath: Assets/Plugins/Borodar/RainbowHierarchy/Scripts/Editor/Port/HierarchyRulesetExporter.cs
uploadId: 716077

View File

@@ -0,0 +1,131 @@
using System.IO;
using System.Text.RegularExpressions;
using UnityEditor;
using UnityEngine;
using UnityEngine.SceneManagement;
using static Borodar.RainbowHierarchy.HierarchyRulesetV2;
using static Borodar.RainbowHierarchy.RHLogger;
namespace Borodar.RainbowHierarchy
{
public static class HierarchyRulesetImporter
{
//---------------------------------------------------------------------
// Public
//---------------------------------------------------------------------
public static void Import()
{
var path = EditorUtility.OpenFilePanel("Import Ruleset", "", EXTENSION);
if (string.IsNullOrEmpty(path)) return;
ImportCustomIcons(path);
ImportRuleset(path);
}
public static void ImportRuleset(string path)
{
var wrapperJson = File.ReadAllText(path);
var wrapper = new HierarchyRulesetWrapper();
EditorJsonUtility.FromJsonOverwrite(wrapperJson, wrapper);
if (wrapper.Version < VERSION)
{
UpdateFromOlderVersions(wrapper);
}
var activeScene = SceneManager.GetActiveScene();
var activeRuleset = GetRulesetByScene(activeScene, true);
Undo.RecordObject(activeRuleset, "Hierarchy Ruleset Import");
EditorJsonUtility.FromJsonOverwrite(wrapper.RulesetJson, activeRuleset);
ConvertPathsToObjectRefs(activeRuleset);
Log("Ruleset successfully imported.");
}
//---------------------------------------------------------------------
// Helpers
//---------------------------------------------------------------------
private static void UpdateFromOlderVersions(HierarchyRulesetWrapper wrapper)
{
if (wrapper.Version <= 1)
{
// Convert all icon IDs to xxx00 (e.g 5432 -> 543200)
wrapper.RulesetJson = Regex.Replace(
wrapper.RulesetJson,
"\"IconType\":[1-9]\\d*",
match => $"{match}00");
// Convert all background IDs to xxx00 (e.g 5432 -> 543200)
wrapper.RulesetJson = Regex.Replace(
wrapper.RulesetJson,
"\"BackgroundType\":[1-9]\\d*",
match => $"{match}00");
// Replace particular values
wrapper.RulesetJson = wrapper.RulesetJson
// General
.Replace("\"IconType\":100000,", "\"IconType\":125650,") // CmpAssemblyDefinitionAsset
.Replace("\"IconType\":101000,", "\"IconType\":125250,") // CmpCsScript
.Replace("\"IconType\":102000,", "\"IconType\":125000,") // CmpDefaultAsset
.Replace("\"IconType\":111000,", "\"IconType\":125750,") // CmpShader
.Replace("\"IconType\":112000,", "\"IconType\":125150,") // CmpTextAsset
.Replace("\"IconType\":115000,", "\"IconType\":125550,") // CmpVisualTreeAsset
// Miscellaneous
.Replace("\"IconType\":181000,", "\"IconType\":117000,") // Animation
.Replace("\"IconType\":182000,", "\"IconType\":117350,") // Animator
// Rendering
.Replace("\"IconType\":293000,", "\"IconType\":169500,") // Light
.Replace("\"IconType\":294000,", "\"IconType\":169550,") // LightProbeGroup
.Replace("\"IconType\":295000,", "\"IconType\":169560,") // LightProbeProxyVolume
;
}
}
private static void ConvertPathsToObjectRefs(HierarchyRulesetV2 ruleset)
{
for (var i = ruleset.Rules.Count - 1; i >= 0; i--)
{
var rule = ruleset.Rules[i];
if (rule.Type != HierarchyRule.KeyType.Object) continue;
if (string.IsNullOrEmpty(rule.Name))
{
ruleset.Rules.RemoveAt(i);
continue;
}
var gameObject = GameObject.Find(rule.Name);
if (gameObject != null)
{
// Replace
rule.GameObject = gameObject;
rule.Name = string.Empty;
}
else
{
// Delete
ruleset.Rules.RemoveAt(i);
}
}
}
private static void ImportCustomIcons(string path)
{
var importDir = Path.GetDirectoryName(path);
var importFileName = Path.GetFileNameWithoutExtension(path);
var packagePath = $"{importDir}/{importFileName}.unitypackage";
if (!File.Exists(packagePath))
{
Log("There is no package with custom icons. Skipping package import.");
return;
}
AssetDatabase.ImportPackage(packagePath, true);
}
}
}

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 5163ed631bd3bed4e90800fb96800cac
AssetOrigin:
serializedVersion: 1
productId: 106670
packageName: Rainbow Hierarchy 2
packageVersion: 2.6.2
assetPath: Assets/Plugins/Borodar/RainbowHierarchy/Scripts/Editor/Port/HierarchyRulesetImporter.cs
uploadId: 716077

View File

@@ -0,0 +1,11 @@
namespace Borodar.RainbowHierarchy
{
internal sealed class HierarchyRulesetWrapper
{
#pragma warning disable 414
public int Version = HierarchyRulesetV2.VERSION;
#pragma warning restore 414
public string RulesetJson;
}
}

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: afb932c346aec4c478e65191a53801a8
AssetOrigin:
serializedVersion: 1
productId: 106670
packageName: Rainbow Hierarchy 2
packageVersion: 2.6.2
assetPath: Assets/Plugins/Borodar/RainbowHierarchy/Scripts/Editor/Port/HierarchyRulesetWrapper.cs
uploadId: 716077

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 0b4b81ad75c9b784783e362a89368bac
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,209 @@
using System.Diagnostics.CodeAnalysis;
using UnityEditor;
using UnityEngine;
using static Borodar.RainbowHierarchy.HierarchyEditorUtility;
namespace Borodar.RainbowHierarchy
{
public static class HierarchyPreferences
{
private const float PREF_LABEL_WIDTH = 150f;
private const string EDIT_MODIFIER_PKEY = "Borodar.RainbowHierarchy.EditMod.";
private const string EDIT_MODIFIER_HINT = "Modifier key that is used to show configuration dialogue when clicking on an object in the hierarchy.";
private const EventModifiers EDIT_MODIFIER_DEFAULT = EventModifiers.Alt;
private const string DRAG_MODIFIER_PKEY = "Borodar.RainbowHierarchy.DragMod.";
private const string DRAG_MODIFIER_HINT = "Modifier key that is used to drag configuration dialogue.";
private const EventModifiers DRAG_MODIFIER_DEFAULT = EventModifiers.Shift;
private const string HIDE_CONFIG_PKEY = "Borodar.RainbowHierarchy.HideConfig.";
private const string HIDE_CONFIG_HINT = "Change this setting to show/hide the RainbowHierarchyConf object in the hierarchy window.";
private const bool HIDE_CONFIG_DEFAULT = false;
private const string HIERARCHY_TREE_PKEY = "Borodar.RainbowHierarchy.ShowHierarchyTree.";
private const string HIERARCHY_TREE_HINT = "Change this setting to show/hide the \"branches\" in the hierarchy window.";
private const bool HIERARCHY_TREE_DEFAULT = true;
private const string ROW_SHADING_PKEY = "Borodar.RainbowHierarchy.RowShading.";
private const string ROW_SHADING_HINT = "Change this setting to enable/disable row shading in the hierarchy window.";
private const bool ROW_SHADING_DEFAULT = true;
private static readonly EditorPrefsModifierKey EDIT_MODIFIER_PREF;
private static readonly EditorPrefsModifierKey DRAG_MODIFIER_PREF;
private static readonly EditorPrefsBoolean HIDE_CONFIG_PREF;
private static readonly EditorPrefsBoolean HIERARCHY_TREE_PREF;
private static readonly EditorPrefsBoolean ROW_SHADING_PREF;
private static EventModifiers _editModifier;
private static EventModifiers _dragModifier;
public static bool HideConfig;
//---------------------------------------------------------------------
// Properties
//---------------------------------------------------------------------
public static bool ShowHierarchyTree { get; private set; }
public static bool DrawRowShading { get; private set; }
//---------------------------------------------------------------------
// Ctors
//---------------------------------------------------------------------
static HierarchyPreferences()
{
// General
var editModifierLabel = new GUIContent("Edit Modifier", EDIT_MODIFIER_HINT);
EDIT_MODIFIER_PREF = new EditorPrefsModifierKey(EDIT_MODIFIER_PKEY + ProjectName, EDIT_MODIFIER_DEFAULT, editModifierLabel);
EDIT_MODIFIER_PREF.Changed += OnEditModifierChanged;
_editModifier = EDIT_MODIFIER_PREF.Value;
var dragModifierLabel = new GUIContent("Drag Modifier", DRAG_MODIFIER_HINT);
DRAG_MODIFIER_PREF = new EditorPrefsModifierKey(DRAG_MODIFIER_PKEY + ProjectName, DRAG_MODIFIER_DEFAULT, dragModifierLabel);
DRAG_MODIFIER_PREF.Changed += OnDragModifierChanged;
_dragModifier = DRAG_MODIFIER_PREF.Value;
var hideConfigLabel = new GUIContent("Hide Config", HIDE_CONFIG_HINT);
HIDE_CONFIG_PREF = new EditorPrefsBoolean(HIDE_CONFIG_PKEY + ProjectName, HIDE_CONFIG_DEFAULT, hideConfigLabel, PREF_LABEL_WIDTH);
HIDE_CONFIG_PREF.Changed += OnHideConfigChanged;
HideConfig = HIDE_CONFIG_PREF.Value;
// Enhancements
var hierarchyTreeLabel = new GUIContent("Hierarchy Tree", HIERARCHY_TREE_HINT);
HIERARCHY_TREE_PREF = new EditorPrefsBoolean(HIERARCHY_TREE_PKEY + ProjectName, HIERARCHY_TREE_DEFAULT, hierarchyTreeLabel, PREF_LABEL_WIDTH);
HIERARCHY_TREE_PREF.Changed += OnHierarchyTreeChanged;
ShowHierarchyTree = HIERARCHY_TREE_PREF.Value;
var rowShadingLabel = new GUIContent("Row Shading", ROW_SHADING_HINT);
ROW_SHADING_PREF = new EditorPrefsBoolean(ROW_SHADING_PKEY + ProjectName, ROW_SHADING_DEFAULT, rowShadingLabel, PREF_LABEL_WIDTH);
ROW_SHADING_PREF.Changed += OnRowShadingChanged;
DrawRowShading = ROW_SHADING_PREF.Value;
}
//---------------------------------------------------------------------
// Public
//---------------------------------------------------------------------
[SettingsProvider]
[SuppressMessage("ReSharper", "UnusedMember.Global")]
public static SettingsProvider CreateSettingProvider()
{
return new SettingsProvider("Borodar/RainbowHierarchy", SettingsScope.Project)
{
label = AssetInfo.NAME,
guiHandler = OnGUI
};
}
public static bool IsEditModifierPressed(Event e)
{
return (e.modifiers & _editModifier) == _editModifier;
}
public static bool IsDragModifierPressed(Event e)
{
return (e.modifiers & _dragModifier) == _dragModifier;
}
//---------------------------------------------------------------------
// Messages
//---------------------------------------------------------------------
private static void OnGUI(string searchContext)
{
DrawGeneralSection();
DrawEnhancementsSection();
DrawImportExportSection();
DrawVersionAtBottom();
}
//---------------------------------------------------------------------
// OnChange
//---------------------------------------------------------------------
private static void OnEditModifierChanged(EventModifiers value)
{
_editModifier = value;
}
private static void OnDragModifierChanged(EventModifiers value)
{
_dragModifier = value;
}
private static void OnHideConfigChanged(bool value)
{
HideConfig = value;
UpdateSceneConfigVisibility(!value);
}
private static void OnHierarchyTreeChanged(bool value)
{
ShowHierarchyTree = value;
EditorApplication.RepaintHierarchyWindow();
}
private static void OnRowShadingChanged(bool value)
{
DrawRowShading = value;
EditorApplication.RepaintHierarchyWindow();
}
//---------------------------------------------------------------------
// Helpers
//---------------------------------------------------------------------
private static void DrawGeneralSection()
{
DrawHeader("General");
EDIT_MODIFIER_PREF.Draw();
DRAG_MODIFIER_PREF.Draw();
TinySeparator();
HIDE_CONFIG_PREF.Draw();
}
private static void DrawEnhancementsSection()
{
DrawHeader("Enhancements");
HIERARCHY_TREE_PREF.Draw();
TinySeparator();
ROW_SHADING_PREF.Draw();
}
private static void DrawImportExportSection()
{
DrawHeader("Import / Export Ruleset (Current Scene)");
EditorGUILayout.BeginHorizontal();
{
if (GUILayout.Button("Import")) HierarchyRulesetImporter.Import();;
if (GUILayout.Button("Export")) HierarchyRulesetExporter.Export();
}
EditorGUILayout.EndHorizontal();
}
private static void DrawVersionAtBottom()
{
GUILayout.FlexibleSpace();
EditorGUILayout.LabelField("Version " + AssetInfo.VERSION, EditorStyles.centeredGreyMiniLabel);
}
private static void DrawHeader(string label)
{
EditorGUILayout.Separator();
EditorGUILayout.LabelField(label, EditorStyles.boldLabel);
EditorGUILayout.Separator();
}
private static void TinySeparator()
{
GUILayoutUtility.GetRect(0f, 0f);
}
}
}

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 2042b261749a0f445852e9bccb9fc16f
AssetOrigin:
serializedVersion: 1
productId: 106670
packageName: Rainbow Hierarchy 2
packageVersion: 2.6.2
assetPath: Assets/Plugins/Borodar/RainbowHierarchy/Scripts/Editor/Prefs/HierarchyPreferences.cs
uploadId: 716077

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: aadfdb1af2564164c82e867ffc82322b
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,48 @@
using UnityEditor;
using UnityEngine;
namespace Borodar.RainbowHierarchy
{
public class EditorPrefsBoolean : EditorPrefsItem<bool>
{
private readonly float _labelWidth;
//---------------------------------------------------------------------
// Ctors
//---------------------------------------------------------------------
public EditorPrefsBoolean(string key, bool defaultValue, GUIContent label, float labelWidth)
: base(key, defaultValue, label)
{
_labelWidth = labelWidth;
}
//---------------------------------------------------------------------
// Properties
//---------------------------------------------------------------------
public override bool Value
{
get
{
return EditorPrefs.GetBool(Key, DefaultValue);
}
set
{
if (Value == value) return;
EditorPrefs.SetBool(Key, value);
OnValueChanged(value);
}
}
//---------------------------------------------------------------------
// Public
//---------------------------------------------------------------------
public override void Draw()
{
EditorGUIUtility.labelWidth = _labelWidth;
Value = EditorGUILayout.Toggle(Label, Value);
}
}
}

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 58b12300e92a4024e80ebdcc971eb99a
AssetOrigin:
serializedVersion: 1
productId: 106670
packageName: Rainbow Hierarchy 2
packageVersion: 2.6.2
assetPath: Assets/Plugins/Borodar/RainbowHierarchy/Scripts/Editor/Prefs/Items/EditorPrefsBoolean.cs
uploadId: 716077

View File

@@ -0,0 +1,60 @@
using System;
using UnityEngine;
namespace Borodar.RainbowHierarchy
{
public abstract class EditorPrefsItem<T>
{
protected readonly string Key;
protected readonly GUIContent Label;
protected readonly T DefaultValue;
//---------------------------------------------------------------------
// Properties
//---------------------------------------------------------------------
public abstract T Value { get; set; }
//---------------------------------------------------------------------
// Events
//---------------------------------------------------------------------
public event Action<T> Changed;
//---------------------------------------------------------------------
// Ctors
//---------------------------------------------------------------------
protected EditorPrefsItem(string key, T defaultValue, GUIContent label)
{
if (string.IsNullOrEmpty(key))
{
throw new ArgumentNullException(nameof(key));
}
Key = key;
DefaultValue = defaultValue;
Label = label;
}
//---------------------------------------------------------------------
// Public
//---------------------------------------------------------------------
public abstract void Draw();
public static implicit operator T(EditorPrefsItem<T> s)
{
return s.Value;
}
//---------------------------------------------------------------------
// Protected
//---------------------------------------------------------------------
protected void OnValueChanged(T value)
{
Changed?.Invoke(value);
}
}
}

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: f9fbb9f2704df024d81d73f8193af9e8
AssetOrigin:
serializedVersion: 1
productId: 106670
packageName: Rainbow Hierarchy 2
packageVersion: 2.6.2
assetPath: Assets/Plugins/Borodar/RainbowHierarchy/Scripts/Editor/Prefs/Items/EditorPrefsItem.cs
uploadId: 716077

View File

@@ -0,0 +1,42 @@
using System;
using UnityEditor;
using UnityEngine;
namespace Borodar.RainbowHierarchy
{
public class EditorPrefsModifierKey : EditorPrefsItem<EventModifiers> {
//---------------------------------------------------------------------
// Ctors
//---------------------------------------------------------------------
public EditorPrefsModifierKey(string key, EventModifiers defaultValue, GUIContent label)
: base(key, defaultValue, label) { }
//---------------------------------------------------------------------
// Properties
//---------------------------------------------------------------------
public override EventModifiers Value {
get
{
var index = EditorPrefs.GetInt(Key, (int) DefaultValue);
return (Enum.IsDefined(typeof(EventModifiers), index)) ? (EventModifiers) index : DefaultValue;
}
set
{
if (Value == value) return;
EditorPrefs.SetInt(Key, (int) value);
OnValueChanged(value);
}
}
//---------------------------------------------------------------------
// Public
//---------------------------------------------------------------------
public override void Draw() {
Value = (EventModifiers) EditorGUILayout.EnumPopup(Label, Value);
}
}
}

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 5499329b412119a45b04357956aeda19
AssetOrigin:
serializedVersion: 1
productId: 106670
packageName: Rainbow Hierarchy 2
packageVersion: 2.6.2
assetPath: Assets/Plugins/Borodar/RainbowHierarchy/Scripts/Editor/Prefs/Items/EditorPrefsModifierKey.cs
uploadId: 716077

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: ca69afbdf78a7564cae7ca1a53c6fe08
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2017 Chris Foulston
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.

View File

@@ -0,0 +1,14 @@
fileFormatVersion: 2
guid: 609221f9a89122145b14c121a191318e
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 106670
packageName: Rainbow Hierarchy 2
packageVersion: 2.6.2
assetPath: Assets/Plugins/Borodar/RainbowHierarchy/Scripts/Editor/RList/LICENSE
uploadId: 716077

View File

@@ -0,0 +1,110 @@
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace Borodar.RainbowHierarchy.RList {
[Serializable]
public abstract class ReorderableArray<T> : ICloneable, IList<T>, ICollection<T>, IEnumerable<T> {
[SerializeField]
private List<T> array = new List<T>();
public ReorderableArray()
: this(0) {
}
public ReorderableArray(int length) {
array = new List<T>(length);
}
public T this[int index] {
get { return array[index]; }
set { array[index] = value; }
}
public int Length {
get { return array.Count; }
}
public bool IsReadOnly {
get { return false; }
}
public int Count {
get { return array.Count; }
}
public object Clone() {
return new List<T>(array);
}
public void CopyFrom(IEnumerable<T> value) {
array.Clear();
array.AddRange(value);
}
public bool Contains(T value) {
return array.Contains(value);
}
public int IndexOf(T value) {
return array.IndexOf(value);
}
public void Insert(int index, T item) {
array.Insert(index, item);
}
public void RemoveAt(int index) {
array.RemoveAt(index);
}
public void Add(T item) {
array.Add(item);
}
public void Clear() {
array.Clear();
}
public void CopyTo(T[] array, int arrayIndex) {
this.array.CopyTo(array, arrayIndex);
}
public bool Remove(T item) {
return array.Remove(item);
}
public T[] ToArray() {
return array.ToArray();
}
public IEnumerator<T> GetEnumerator() {
return array.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator() {
return array.GetEnumerator();
}
}
}

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: ff2fb36905dd14a47916cba5057343f0
AssetOrigin:
serializedVersion: 1
productId: 106670
packageName: Rainbow Hierarchy 2
packageVersion: 2.6.2
assetPath: Assets/Plugins/Borodar/RainbowHierarchy/Scripts/Editor/RList/ReorderableArray.cs
uploadId: 716077

View File

@@ -0,0 +1,53 @@
using System;
using UnityEngine;
namespace Borodar.RainbowHierarchy.RList {
public class ReorderableAttribute : PropertyAttribute {
public bool add;
public bool remove;
public bool draggable;
public bool singleLine;
public bool paginate;
public bool sortable;
public int pageSize;
public string elementNameProperty;
public string elementNameOverride;
public string elementIconPath;
public Type surrogateType;
public string surrogateProperty;
public ReorderableAttribute()
: this(null) {
}
public ReorderableAttribute(string elementNameProperty)
: this(true, true, true, elementNameProperty, null, null) {
}
public ReorderableAttribute(string elementNameProperty, string elementIconPath)
: this(true, true, true, elementNameProperty, null, elementIconPath) {
}
public ReorderableAttribute(string elementNameProperty, string elementNameOverride, string elementIconPath)
: this(true, true, true, elementNameProperty, elementNameOverride, elementIconPath) {
}
public ReorderableAttribute(bool add, bool remove, bool draggable, string elementNameProperty = null, string elementIconPath = null)
: this(add, remove, draggable, elementNameProperty, null, elementIconPath) {
}
public ReorderableAttribute(bool add, bool remove, bool draggable, string elementNameProperty = null, string elementNameOverride = null, string elementIconPath = null) {
this.add = add;
this.remove = remove;
this.draggable = draggable;
this.elementNameProperty = elementNameProperty;
this.elementNameOverride = elementNameOverride;
this.elementIconPath = elementIconPath;
sortable = true;
}
}
}

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: a742bfa155a4d6f429285e9960422f18
AssetOrigin:
serializedVersion: 1
productId: 106670
packageName: Rainbow Hierarchy 2
packageVersion: 2.6.2
assetPath: Assets/Plugins/Borodar/RainbowHierarchy/Scripts/Editor/RList/ReorderableAttribute.cs
uploadId: 716077

View File

@@ -0,0 +1,141 @@
using System;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
using Object = UnityEngine.Object;
namespace Borodar.RainbowHierarchy.RList {
[CustomPropertyDrawer(typeof(ReorderableAttribute))]
public class ReorderableDrawer : PropertyDrawer {
public const string ARRAY_PROPERTY_NAME = "array";
private static Dictionary<int, ReorderableList> lists = new Dictionary<int, ReorderableList>();
[Obsolete("CanCacheInspectorGUI has been deprecated and is no longer used.", false)]
public override bool CanCacheInspectorGUI(SerializedProperty property) {
return false;
}
public override float GetPropertyHeight(SerializedProperty property, GUIContent label) {
ReorderableList list = GetList(property, attribute as ReorderableAttribute, ARRAY_PROPERTY_NAME);
return list != null ? list.GetHeight() : EditorGUIUtility.singleLineHeight;
}
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) {
ReorderableList list = GetList(property, attribute as ReorderableAttribute, ARRAY_PROPERTY_NAME);
if (list != null) {
list.DoList(EditorGUI.IndentedRect(position), label);
}
else {
GUI.Label(position, "Array must extend from ReorderableArray", EditorStyles.label);
}
}
public static int GetListId(SerializedProperty property) {
if (property != null) {
int h1 = property.serializedObject.targetObject.GetHashCode();
int h2 = property.propertyPath.GetHashCode();
return (((h1 << 5) + h1) ^ h2);
}
return 0;
}
public static ReorderableList GetList(SerializedProperty property, string arrayPropertyName) {
return GetList(property, null, GetListId(property), arrayPropertyName);
}
public static ReorderableList GetList(SerializedProperty property, ReorderableAttribute attrib, string arrayPropertyName) {
return GetList(property, attrib, GetListId(property), arrayPropertyName);
}
public static ReorderableList GetList(SerializedProperty property, int id, string arrayPropertyName) {
return GetList(property, null, id, arrayPropertyName);
}
public static ReorderableList GetList(SerializedProperty property, ReorderableAttribute attrib, int id, string arrayPropertyName) {
if (property == null) {
return null;
}
ReorderableList list = null;
SerializedProperty array = property.FindPropertyRelative(arrayPropertyName);
if (array != null && array.isArray) {
if (!lists.TryGetValue(id, out list)) {
if (attrib != null) {
Texture icon = !string.IsNullOrEmpty(attrib.elementIconPath) ? AssetDatabase.GetCachedIcon(attrib.elementIconPath) : null;
ReorderableList.ElementDisplayType displayType = attrib.singleLine ? ReorderableList.ElementDisplayType.SingleLine : ReorderableList.ElementDisplayType.Auto;
list = new ReorderableList(array, attrib.add, attrib.remove, attrib.draggable, displayType, attrib.elementNameProperty, attrib.elementNameOverride, icon);
list.paginate = attrib.paginate;
list.pageSize = attrib.pageSize;
list.sortable = attrib.sortable;
//handle surrogate if any
if (attrib.surrogateType != null) {
SurrogateCallback callback = new SurrogateCallback(attrib.surrogateProperty);
list.surrogate = new ReorderableList.Surrogate(attrib.surrogateType, callback.SetReference);
}
}
else {
list = new ReorderableList(array, true, true, true);
}
lists.Add(id, list);
}
else {
list.List = array;
}
}
return list;
}
private struct SurrogateCallback {
private string property;
internal SurrogateCallback(string property) {
this.property = property;
}
internal void SetReference(SerializedProperty element, Object objectReference, ReorderableList list) {
SerializedProperty prop = !string.IsNullOrEmpty(property) ? element.FindPropertyRelative(property) : null;
if (prop != null && prop.propertyType == SerializedPropertyType.ObjectReference) {
prop.objectReferenceValue = objectReference;
}
}
}
}
}

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 7e6c549c0f86e7d4bb4d52b49fd1052c
AssetOrigin:
serializedVersion: 1
productId: 106670
packageName: Rainbow Hierarchy 2
packageVersion: 2.6.2
assetPath: Assets/Plugins/Borodar/RainbowHierarchy/Scripts/Editor/RList/ReorderableDrawer.cs
uploadId: 716077

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: bc6c2a114d6b2a646a7240a0b7517898
AssetOrigin:
serializedVersion: 1
productId: 106670
packageName: Rainbow Hierarchy 2
packageVersion: 2.6.2
assetPath: Assets/Plugins/Borodar/RainbowHierarchy/Scripts/Editor/RList/ReorderableList.cs
uploadId: 716077

View File

@@ -0,0 +1,353 @@
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using UnityEditor;
using UnityEditor.SceneManagement;
using UnityEngine;
using SiblingIndex = Borodar.RainbowHierarchy.HierarchyEditorUtility.SiblingIndex;
namespace Borodar.RainbowHierarchy
{
[InitializeOnLoad]
public static class RainbowHierarchyGUI
{
private const float DRAW_OFFSET = 28f;
private static readonly Color ROW_SHADING_COLOR = new Color(0f, 0f, 0f, 0.03f);
private static readonly List<GameObject> RECURSIVE_OBJECTS = new List<GameObject>();
private static bool _multiSelection;
//---------------------------------------------------------------------
// Ctor
//---------------------------------------------------------------------
static RainbowHierarchyGUI()
{
EditorApplication.hierarchyChanged += HierarchyWindowChanged;
EditorApplication.hierarchyWindowItemOnGUI += RainbowHierarchyItemOnGUI;
HierarchyRulesetV2.OnRulesetChangeCallback += OnRulesetChange;
}
//---------------------------------------------------------------------
// Delegates
//---------------------------------------------------------------------
private static void HierarchyWindowChanged()
{
HierarchyEditorUtility.UpdateSceneConfigVisibility(!HierarchyPreferences.HideConfig);
RECURSIVE_OBJECTS.Clear();
}
private static void OnRulesetChange()
{
RECURSIVE_OBJECTS.Clear();
}
private static void RainbowHierarchyItemOnGUI(int instanceId, Rect selectionRect)
{
var gameObject = (GameObject)EditorUtility.InstanceIDToObject(instanceId);
if (gameObject == null) return;
DrawRowShading(selectionRect);
DrawFoldouts(gameObject, selectionRect);
ReplaceHierarchyTextures(instanceId, gameObject, selectionRect);
DrawEditIcon(gameObject, selectionRect);
}
//---------------------------------------------------------------------
// GUI
//---------------------------------------------------------------------
private static void DrawRowShading(Rect selectionRect)
{
if (!HierarchyPreferences.DrawRowShading) return;
var isOdd = Mathf.FloorToInt(((selectionRect.y - 4) / 16) % 2) != 0;
if (isOdd) return;
var foldoutRect = new Rect(selectionRect);
foldoutRect.width += selectionRect.x + 16f;
foldoutRect.height += 1f;
foldoutRect.x = DRAW_OFFSET;
// Background
EditorGUI.DrawRect(foldoutRect, ROW_SHADING_COLOR);
// Top line
foldoutRect.height = 1f;
EditorGUI.DrawRect(foldoutRect, ROW_SHADING_COLOR);
// Bottom line
foldoutRect.y += 16f;
EditorGUI.DrawRect(foldoutRect, ROW_SHADING_COLOR);
}
private static void DrawFoldouts(GameObject gameObject, Rect selectionRect)
{
if (!HierarchyPreferences.ShowHierarchyTree || IsShowInSearch(selectionRect)) return;
const float textureWidth = 128f;
var fx = Mathf.Max(DRAW_OFFSET, selectionRect.x - textureWidth - 16f);
var fw = Mathf.Min(textureWidth, selectionRect.x - 16f - DRAW_OFFSET);
var foldoutRect = new Rect(selectionRect) {width = fw, x = fx};
var tw = foldoutRect.width / textureWidth;
var texCoords = new Rect(1 - tw,0,tw,1f);
GUI.DrawTextureWithTexCoords(foldoutRect, HierarchyEditorUtility.GetFoldoutLevelsIcon(), texCoords);
var transform = gameObject.transform;
if (transform.childCount > 0) return;
var index = GetSiblingIndex(transform);
foldoutRect.width = 16f;
foldoutRect.x = selectionRect.x - 16f;
GUI.DrawTexture(foldoutRect, HierarchyEditorUtility.GetFoldoutIcon(index));
}
private static void ReplaceHierarchyTextures(int instanceId, GameObject gameObject, Rect selectionRect)
{
if (EditorSceneManager.IsPreviewSceneObject(gameObject)) return;
var currentScene = gameObject.scene;
var ruleset = HierarchyRulesetV2.GetRulesetByScene(currentScene);
if (ruleset == null || ruleset.Rules.Count == 0) return;
var normalItem = ruleset.GetRule(gameObject);
var recursiveItem = GetRecursiveItemByObject(gameObject, ruleset);
if (normalItem != null)
{
UpdateRecursiveObjectsList(ruleset, normalItem, gameObject);
if (recursiveItem != null)
{
DrawItemWithBiggerPriority(instanceId, selectionRect, ruleset, normalItem, recursiveItem);
}
else
{
DrawNormalItem(instanceId, selectionRect, normalItem);
}
}
else if (recursiveItem != null)
{
DrawRecursiveItem(instanceId, selectionRect, recursiveItem);
}
}
private static void DrawEditIcon(GameObject gameObject, Rect selectionRect)
{
if (!HierarchyPreferences.IsEditModifierPressed(Event.current))
{
_multiSelection = false;
return;
}
if (EditorSceneManager.IsPreviewSceneObject(gameObject)) return;
var isMouseOver = selectionRect.Contains(Event.current.mousePosition);
var isSelected = IsSelected(gameObject);
_multiSelection = isSelected ? isMouseOver || _multiSelection : !isMouseOver && _multiSelection;
// if mouse is not over current object icon or selected group
if (!isMouseOver && (!isSelected || !_multiSelection)) return;
var editIcon = HierarchyEditorUtility.GetEditIcon();
DrawCustomIcon(editIcon, selectionRect);
if (GUI.Button(selectionRect, GUIContent.none, GUIStyle.none))
{
ShowPopupWindow(selectionRect, gameObject);
}
EditorApplication.RepaintHierarchyWindow();
}
//---------------------------------------------------------------------
// Helpers
//---------------------------------------------------------------------
private static void DrawItemWithBiggerPriority(int instanceId, Rect selectionRect, HierarchyRulesetV2 conf, HierarchyRule normalRule, HierarchyRule recursiveRule)
{
if (recursiveRule.Priority > normalRule.Priority)
{
DrawRecursiveItem(instanceId, selectionRect, recursiveRule);
}
else if (recursiveRule.Priority == normalRule.Priority)
{
DrawItemWithGreaterOrdinal(instanceId, selectionRect, conf, normalRule, recursiveRule);
}
else
{
DrawNormalItem(instanceId, selectionRect, normalRule);
}
}
private static void DrawItemWithGreaterOrdinal(int instanceId, Rect selectionRect, HierarchyRulesetV2 conf, HierarchyRule normalRule, HierarchyRule recursiveRule)
{
if (recursiveRule.Ordinal > normalRule.Ordinal)
{
DrawRecursiveItem(instanceId, selectionRect, recursiveRule);
}
else
{
DrawNormalItem(instanceId, selectionRect, normalRule);
}
}
private static void DrawNormalItem(int instanceId, Rect selectionRect, HierarchyRule normalRule)
{
ReplaceIcon(instanceId, normalRule);
DrawCustomBackground(normalRule, selectionRect);
}
private static void DrawRecursiveItem(int instanceId, Rect selectionRect, HierarchyRule recursiveRule)
{
if (recursiveRule.IsIconRecursive) ReplaceIcon(instanceId, recursiveRule);
if (recursiveRule.IsBackgroundRecursive) DrawCustomBackground(recursiveRule, selectionRect);
}
private static void ReplaceIcon(int instanceId, HierarchyRule rule)
{
if (rule == null || !rule.HasIcon()) return;
var icon = rule.HasCustomIcon()
? rule.IconTexture
: HierarchyIconsStorage.GetIcon(rule.IconType);
HierarchyWindowAdapter.ApplyIconByInstanceId(instanceId, icon);
}
private static void DrawCustomIcon(Texture icon, Rect selectionRect)
{
var iconRect = new Rect(selectionRect) {width = 16f};
GUI.DrawTexture(iconRect, icon);
}
private static void DrawCustomBackground(HierarchyRule rule, Rect selectionRect)
{
if (rule == null || !rule.HasBackground()) return;
selectionRect.x += 17f;
var background = rule.HasCustomBackground()
? rule.BackgroundTexture
: HierarchyBackgroundsStorage.GetBackground(rule.BackgroundType);
GUI.DrawTexture(selectionRect, background);
}
private static void ShowPopupWindow(Rect selectionRect, GameObject currentObject)
{
var window = HierarchyPopupWindow.GetDraggableWindow();
var position = GUIUtility.GUIToScreenPoint(selectionRect.position + new Vector2(0, selectionRect.height + 2));
if (_multiSelection)
{
var gameObjects = Selection.gameObjects.ToList();
var index = gameObjects.IndexOf(currentObject);
window.ShowWithParams(position, gameObjects, index);
}
else
{
window.ShowWithParams(position, new List<GameObject> {currentObject}, 0);
}
}
private static HierarchyRule GetRecursiveItemByObject(GameObject gameObject, HierarchyRulesetV2 ruleset)
{
for (var i = RECURSIVE_OBJECTS.Count - 1; i >= 0; i--)
{
if (RECURSIVE_OBJECTS[i] == null)
{
RECURSIVE_OBJECTS.RemoveAt(i);
continue;
}
if (!gameObject.transform.IsChildOf(RECURSIVE_OBJECTS[i].transform))
{
continue;
}
var parentRule = ruleset.GetRule(RECURSIVE_OBJECTS[i]);
if (parentRule == null)
{
RECURSIVE_OBJECTS.RemoveAt(i);
continue;
}
if (parentRule.IsRecursive())
{
return parentRule;
}
}
return null;
}
[SuppressMessage("ReSharper", "InvertIf")]
private static void UpdateRecursiveObjectsList(HierarchyRulesetV2 conf, HierarchyRule currentRule, GameObject currentObject)
{
if (currentRule.IsRecursive())
{
if (!RECURSIVE_OBJECTS.Contains(currentObject))
{
for (var index = 0; index < RECURSIVE_OBJECTS.Count; index++)
{
var listObject = RECURSIVE_OBJECTS[index];
if (listObject == null) continue;
var listItem = conf.GetRule(listObject);
if (listItem == null) continue;
if (currentRule.Priority < listItem.Priority)
{
RECURSIVE_OBJECTS.Insert(index, currentObject);
return;
}
if (currentRule.Priority == listItem.Priority)
{
var currentOrdinal = conf.Rules.IndexOf(currentRule);
var listOrdinal = conf.Rules.IndexOf(listItem);
if (currentOrdinal < listOrdinal)
{
RECURSIVE_OBJECTS.Insert(index, currentObject);
return;
}
}
}
RECURSIVE_OBJECTS.Add(currentObject);
}
}
else
{
RECURSIVE_OBJECTS.Remove(currentObject);
}
}
private static bool IsSelected(GameObject gameObject)
{
return Selection.gameObjects.Contains(gameObject);
}
private static bool IsShowInSearch(Rect iconRect)
{
return iconRect.x == 16f;
}
[SuppressMessage("ReSharper", "ConvertIfStatementToReturnStatement")]
private static SiblingIndex GetSiblingIndex(Transform transform)
{
var parent = transform.parent;
var parentChildCount = (parent != null) ? parent.childCount : transform.gameObject.scene.rootCount;
var siblingIndex = transform.GetSiblingIndex();
if (siblingIndex == 0) return SiblingIndex.First;
if (siblingIndex == parentChildCount - 1) return SiblingIndex.Last;
return SiblingIndex.Middle;
}
}
}

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: e1e9709c7ea6ee64bb8e4a6962b09dbd
AssetOrigin:
serializedVersion: 1
productId: 106670
packageName: Rainbow Hierarchy 2
packageVersion: 2.6.2
assetPath: Assets/Plugins/Borodar/RainbowHierarchy/Scripts/Editor/RainbowHierarchyGUI.cs
uploadId: 716077

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: bcc187ba40bab2e4abb458923e06c026
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,222 @@
using UnityEditor;
using UnityEngine;
namespace Borodar.RainbowHierarchy
{
[CustomPropertyDrawer(typeof(HierarchyRule))]
public class HierarchyRuleDrawer: PropertyDrawer
{
private const float PADDING = 8f;
private const float SPACING = 2f;
private const float LINE_HEIGHT = 18f;
private const float LABELS_WIDTH = 92f;
private const float ICON_WIDTH = 16f;
private const float PROPERTY_HEIGHT = 142f;
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
{
var isHidden = property.FindPropertyRelative("IsHidden").boolValue;
if (isHidden) return;
var originalPosition = position;
var serializedItem = new SerializedItemWrapper(property);
var serializedObject = property.serializedObject;
DrawLabels(ref position, serializedItem);
DrawValues(ref position, originalPosition, serializedItem, serializedObject);
}
public override float GetPropertyHeight(SerializedProperty property, GUIContent label)
{
var isHidden = property.FindPropertyRelative("IsHidden").boolValue;
if (isHidden) return 0;
var iconType = property.FindPropertyRelative("IconType");
var backgroundType = property.FindPropertyRelative("BackgroundType");
var hasCustomIcon = (iconType.intValue == (int) HierarchyIcon.Custom);
var hasCustomBackground = (backgroundType.intValue == (int) HierarchyBackground.Custom);
var height = PROPERTY_HEIGHT;
if (hasCustomIcon) height += LINE_HEIGHT + SPACING;
if (hasCustomBackground) height += LINE_HEIGHT + SPACING;
return height;
}
//---------------------------------------------------------------------
// Helpers
//---------------------------------------------------------------------
private static void DrawLabels(ref Rect position, SerializedItemWrapper item)
{
position.y += PADDING;
position.width = LABELS_WIDTH;
position.height = LINE_HEIGHT;
EditorGUI.PropertyField(position, item.ItemType, GUIContent.none);
position.y += LINE_HEIGHT + SPACING * 2f;
EditorGUI.LabelField(position, "Priority");
position.y += LINE_HEIGHT + SPACING * 3f;
EditorGUI.LabelField(position, "Icon");
position.y += LINE_HEIGHT + SPACING;
if (item.HasIcon)
{
position.width = ICON_WIDTH;
position.height = ICON_WIDTH;
var texture = (item.HasCustomIcon)
? (Texture2D) item.IconTexture.objectReferenceValue
: HierarchyIconsStorage.GetIcon(item.IconType.intValue);
if (texture != null) GUI.DrawTexture(position, texture);
position.width = LABELS_WIDTH;
position.height = LINE_HEIGHT;
}
position.y += (item.HasCustomIcon) ? 2f * LINE_HEIGHT + PADDING : LINE_HEIGHT + PADDING - SPACING;
EditorGUI.LabelField(position, "Background");
position.y += LINE_HEIGHT + SPACING;
if (item.HasBackground)
{
position.width = ICON_WIDTH * 3f;
position.height = ICON_WIDTH;
var texture = (item.HasCustomBackground)
? (Texture2D) item.Background.objectReferenceValue
: HierarchyBackgroundsStorage.GetBackground(item.BackgroundType.intValue);
if (texture != null) GUI.DrawTexture(position, texture);
}
}
private static void DrawValues(ref Rect position, Rect originalPosition, SerializedItemWrapper item, SerializedObject serializedObject)
{
EditorGUI.BeginChangeCheck();
position.x += LABELS_WIDTH + PADDING;
position.y = originalPosition.y + PADDING;
position.width = originalPosition.width - LABELS_WIDTH - PADDING;
var property = item.ItemType.intValue == 0 ? item.GameObject : item.Name;
EditorGUI.PropertyField(position, property, GUIContent.none);
position.y += LINE_HEIGHT + SPACING * 2f;
EditorGUI.PropertyField(position, item.Priority, GUIContent.none);
position.y += LINE_HEIGHT + SPACING * 3f;
DrawIconPopupMenu(position, item.Property, item.IconType.intValue);
if (item.HasCustomIcon)
{
position.y += LINE_HEIGHT + SPACING + 1f;
EditorGUI.PropertyField(position, item.IconTexture, GUIContent.none);
position.y -= SPACING;
}
position.y += LINE_HEIGHT + SPACING;
EditorGUI.PropertyField(position, item.IconRecursive, GUIContent.none);
position.x += ICON_WIDTH;
EditorGUI.LabelField(position, "Recursive");
position.x -= ICON_WIDTH;
position.y += LINE_HEIGHT + PADDING;
DrawBackgroundPopupMenu(position, item.Property, item.BackgroundType.intValue);
if (item.HasCustomBackground)
{
position.y += LINE_HEIGHT + SPACING + 1f;
EditorGUI.PropertyField(position, item.Background, GUIContent.none);
position.y -= SPACING;
}
position.y += LINE_HEIGHT + SPACING;
EditorGUI.PropertyField(position, item.BackgroundRecursive, GUIContent.none);
position.x += ICON_WIDTH;
EditorGUI.LabelField(position, "Recursive");
position.x -= ICON_WIDTH;
if (EditorGUI.EndChangeCheck()) serializedObject.ApplyModifiedProperties();
}
private static void DrawIconPopupMenu(Rect rect, SerializedProperty property, int iconType)
{
var menuName = ((HierarchyIcon) iconType).ToString();
if (GUI.Button(rect, new GUIContent(menuName), "MiniPopup"))
{
var screenPoint = GUIUtility.GUIToScreenPoint(rect.position);
var window = HierarchyIconsPopup.GetDraggableWindow();
window.ShowWithParams(screenPoint, property);
}
}
private static void DrawBackgroundPopupMenu(Rect rect, SerializedProperty property, int backgroundType)
{
var menuName = ((HierarchyBackground) backgroundType).ToString();
if (GUI.Button(rect, new GUIContent(menuName), "MiniPopup"))
{
var screenPoint = GUIUtility.GUIToScreenPoint(rect.position);
var window = HierarchyBackgroundsPopup.GetDraggableWindow();
window.ShowWithParams(screenPoint, property);
}
}
//---------------------------------------------------------------------
// Nested
//---------------------------------------------------------------------
private class SerializedItemWrapper
{
public readonly SerializedProperty Property;
public readonly SerializedProperty ItemType;
public readonly SerializedProperty Name;
public readonly SerializedProperty GameObject;
public readonly SerializedProperty Priority;
public readonly SerializedProperty IconType;
public readonly SerializedProperty IconTexture;
public readonly SerializedProperty IconRecursive;
public readonly SerializedProperty BackgroundType;
public readonly SerializedProperty Background;
public readonly SerializedProperty BackgroundRecursive;
public readonly bool HasIcon;
public readonly bool HasCustomIcon;
public readonly bool HasBackground;
public readonly bool HasCustomBackground;
public SerializedItemWrapper(SerializedProperty property)
{
Property = property;
ItemType = property.FindPropertyRelative("Type");
Name = property.FindPropertyRelative("Name");
GameObject = property.FindPropertyRelative("GameObject");
Priority = property.FindPropertyRelative("Priority");
IconType = property.FindPropertyRelative("IconType");
IconTexture = property.FindPropertyRelative("IconTexture");
IconRecursive = property.FindPropertyRelative("IsIconRecursive");
BackgroundType = property.FindPropertyRelative("BackgroundType");
Background = property.FindPropertyRelative("BackgroundTexture");
BackgroundRecursive = property.FindPropertyRelative("IsBackgroundRecursive");
HasIcon = (IconType.intValue != (int) HierarchyIcon.None);
HasCustomIcon = (IconType.intValue == (int) HierarchyIcon.Custom);
HasBackground = (BackgroundType.intValue != (int) HierarchyBackground.None);
HasCustomBackground = (BackgroundType.intValue == (int) HierarchyBackground.Custom);
}
}
}
}

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 760af7340c7200b489d74bd3240977bf
AssetOrigin:
serializedVersion: 1
productId: 106670
packageName: Rainbow Hierarchy 2
packageVersion: 2.6.2
assetPath: Assets/Plugins/Borodar/RainbowHierarchy/Scripts/Editor/Ruleset/HierarchyRuleDrawer.cs
uploadId: 716077

View File

@@ -0,0 +1,23 @@
using UnityEditor;
using UnityEngine;
namespace Borodar.RainbowHierarchy
{
[CustomEditor(typeof(HierarchyRuleset), true)]
public class HierarchyRulesetEditor : Editor
{
public override void OnInspectorGUI()
{
EditorGUILayout.HelpBox
(
"This ruleset created from the older Rainbow Hierarchy version. Do you want to update it now?",
MessageType.Warning
);
if (GUILayout.Button("Update Ruleset"))
{
HierarchyEditorProxy.UpdateOldRuleset?.Invoke(((HierarchyRuleset) target).gameObject);
}
}
}
}

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 9164b5f0313f1bc4391c5f9ab0cca57d
AssetOrigin:
serializedVersion: 1
productId: 106670
packageName: Rainbow Hierarchy 2
packageVersion: 2.6.2
assetPath: Assets/Plugins/Borodar/RainbowHierarchy/Scripts/Editor/Ruleset/HierarchyRulesetEditor.cs
uploadId: 716077

View File

@@ -0,0 +1,394 @@
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using Borodar.RainbowHierarchy.RList;
using UnityEditor;
using UnityEngine;
using static Borodar.RainbowHierarchy.HierarchyRule;
using static UnityEngine.SendMessageOptions;
namespace Borodar.RainbowHierarchy
{
[CustomEditor(typeof(HierarchyRulesetV2), true)]
public class HierarchyRulesetEditorV2 : Editor
{
private const string SEARCH_RESULTS_TITLE = "Search Results";
private const string PROP_NAME_ITEMS = "Rules";
private const string NEGATIVE_LOOKAHEAD = "(?!.*)"; // Regex that matches nothing
private static readonly Dictionary<HierarchyRulesetV2, List<HierarchyRulesetEditorV2>> EDITORS_BY_CONF =
new Dictionary<HierarchyRulesetV2, List<HierarchyRulesetEditorV2>>();
private SerializedProperty _itemsProperty;
private ReorderableList _reorderableList;
private string _query = string.Empty;
private Enum _filter = Filter.All;
private bool _matchCase;
private bool _useRegex;
private string _warningMessage;
//---------------------------------------------------------------------
// Properties
//---------------------------------------------------------------------
public bool ForceUpdate { get; set; }
public int SearchTab { get; set; }
public GameObject GameObject { get; set; }
//---------------------------------------------------------------------
// Messages
//---------------------------------------------------------------------
protected void OnEnable()
{
var ruleset = (HierarchyRulesetV2) target;
if (EDITORS_BY_CONF.TryGetValue(ruleset, out var editors))
{
editors.Add(this);
}
else
{
var list = new List<HierarchyRulesetEditorV2> {this};
EDITORS_BY_CONF.Add(ruleset, list);
}
_itemsProperty = serializedObject.FindProperty(PROP_NAME_ITEMS);
_reorderableList = new ReorderableList(_itemsProperty)
{
label = new GUIContent(string.Empty),
elementDisplayType = ReorderableList.ElementDisplayType.SingleLine,
headerHeight = 0f,
expandable = false,
paginate = true,
pageSize = 10,
};
_reorderableList.onChangedCallback += (list) => OnRulesetChange();
// ReSharper disable once DelegateSubtraction
Undo.undoRedoPerformed -= OnRulesetChange;
Undo.undoRedoPerformed += OnRulesetChange;
}
protected void OnDisable()
{
var ruleset = (HierarchyRulesetV2) target;
if (EDITORS_BY_CONF.TryGetValue(ruleset, out var editors))
{
editors.Remove(this);
if (editors.Count == 0) EDITORS_BY_CONF.Remove(ruleset);
}
ClearHiddenFlags();
// ReSharper disable once DelegateSubtraction
Undo.undoRedoPerformed -= OnRulesetChange;
}
public override void OnInspectorGUI()
{
GUILayout.Space(4f);
var searchTabBefore = SearchTab;
SearchTab = GUILayout.Toolbar(SearchTab, new [] {"Filter by object", "Filter by name"});
ForceUpdate |= SearchTab != searchTabBefore;
EditorGUILayout.BeginVertical("AvatarMappingBox");
{
GUILayout.Space(6f);
switch (SearchTab)
{
case 0: // Object
{
DrawSearchByFolderPanel(ForceUpdate);
break;
}
case 1: // Name
{
DrawSearchByKeyPanel(ForceUpdate);
break;
}
default:
throw new ArgumentOutOfRangeException(nameof(SearchTab), SearchTab, null);
}
if (!string.IsNullOrEmpty(_warningMessage))
{
EditorGUILayout.HelpBox(_warningMessage, MessageType.Warning);
}
GUILayout.Space(4f);
}
EditorGUILayout.EndVertical();
GUILayout.Space(2f);
serializedObject.Update();
DrawHierarchyList();
}
//---------------------------------------------------------------------
// Public
//---------------------------------------------------------------------
public static void ShowInspector(HierarchyRulesetV2 ruleset, GameObject currentObject = null)
{
Selection.activeObject = ruleset;
// Workaround with double delay to make sure all Inspectors already enabled
EditorApplication.delayCall += () => EditorApplication.delayCall += () =>
{
if (!EDITORS_BY_CONF.TryGetValue(ruleset, out var editors)) return;
foreach (var editor in editors)
{
editor.GameObject = currentObject;
editor.ForceUpdate = true;
editor.SearchTab = 0;
editor.Repaint();
}
};
}
//---------------------------------------------------------------------
// Helpers
//---------------------------------------------------------------------
private void DrawSearchByFolderPanel(bool forceUpdate)
{
var assetBefore = GameObject;
GameObject = (GameObject) EditorGUILayout.ObjectField(GameObject, typeof(GameObject), true);
if (!forceUpdate && GameObject == assetBefore) return;
if (GameObject == null)
{
ClearHiddenFlags();
}
else
{
ApplyHiddenFlagsByAsset();
}
}
private void DrawSearchByKeyPanel(bool forceUpdate)
{
EditorGUILayout.BeginHorizontal();
var queryChanged = HierarchyEditorUtility.SearchField(ref _query, ref _filter, Filter.All);
EditorGUILayout.EndHorizontal();
EditorGUILayout.BeginHorizontal();
if (!Equals(_filter, Filter.All))
{
var rect = GUILayoutUtility.GetRect(GUIContent.none, "MiniLabel");
rect.x += 2f;
rect.y += 1f;
rect.width = 55f;
GUI.Label(rect, $"➔ {_filter}", "MiniLabel");
}
GUILayout.FlexibleSpace();
var matchCaseBefore = _matchCase;
_matchCase = EditorGUILayout.ToggleLeft("Match case", _matchCase, "MiniLabel", GUILayout.Width(83f));
var matchCaseChanged = _matchCase != matchCaseBefore;
var useRegexBefore = _useRegex;
_useRegex = EditorGUILayout.ToggleLeft("Regex", _useRegex, "MiniLabel", GUILayout.Width(58f));
var useRegexChanged = _useRegex != useRegexBefore;
EditorGUILayout.EndHorizontal();
if (!forceUpdate && !queryChanged && !matchCaseChanged && !useRegexChanged) return;
_warningMessage = string.Empty;
ApplyFilters();
}
private void ApplyFilters()
{
var isDefaultFilter = Equals(Filter.All, _filter);
if (string.IsNullOrEmpty(_query) && isDefaultFilter)
{
ClearHiddenFlags();
}
else
{
ApplyHiddenFlagsByKey();
}
}
private void ClearHiddenFlags()
{
if (_itemsProperty == null) return;
for (var i = 0; i < _itemsProperty.arraySize; i++)
{
var item = _itemsProperty.GetArrayElementAtIndex(i);
item.FindPropertyRelative("IsHidden").boolValue = false;
}
serializedObject.ApplyModifiedProperties();
_reorderableList.canAdd = true;
_reorderableList.headerHeight = 0f;
_reorderableList.label.text = string.Empty;
_reorderableList.paginate = true;
}
private void ApplyHiddenFlagsByAsset()
{
foreach (var rule in ((HierarchyRulesetV2) target).Rules)
{
var match = false;
switch (rule.Type)
{
case KeyType.Object:
match |= rule.GameObject == GameObject;
match |= rule.IsRecursive() && GameObject.transform.IsChildOf(rule.GameObject.transform);
break;
case KeyType.Name:
match |= rule.Name == GameObject.name;
if (rule.IsRecursive())
{
var parent = GameObject.transform.parent;
while (parent != null)
{
match |= rule.Name == parent.name;
if (match) break;
parent = parent.parent;
}
}
break;
default:
throw new ArgumentOutOfRangeException();
}
rule.IsHidden = !match;
}
_reorderableList.canAdd = false;
_reorderableList.headerHeight = 18f;
_reorderableList.label.text = SEARCH_RESULTS_TITLE;
_reorderableList.paginate = false;
}
private void ApplyHiddenFlagsByKey()
{
var regex = (_useRegex) ? MakeRegexFromQuery() : null;
for (var i = 0; i < _itemsProperty.arraySize; i++)
{
var item = _itemsProperty.GetArrayElementAtIndex(i);
var isHidden = item.FindPropertyRelative("IsHidden");
switch (_filter)
{
case Filter.All:
var isObject = KeyHasSameType(item, KeyType.Object);
isHidden.boolValue = !NameContainsQuery(item, regex, isObject);
break;
case Filter.Object:
isHidden.boolValue = !KeyHasSameType(item, KeyType.Object) || !NameContainsQuery(item, regex, true);
break;
case Filter.Name:
isHidden.boolValue = !KeyHasSameType(item, KeyType.Name) || !NameContainsQuery(item, regex, false);
break;
default:
throw new ArgumentOutOfRangeException(nameof(_filter), _filter, null);
}
}
_itemsProperty.serializedObject.ApplyModifiedProperties();
_reorderableList.canAdd = false;
_reorderableList.headerHeight = 18f;
_reorderableList.label = new GUIContent(SEARCH_RESULTS_TITLE);
_reorderableList.paginate = false;
}
private Regex MakeRegexFromQuery()
{
var options = _matchCase ? RegexOptions.None : RegexOptions.IgnoreCase;
try
{
return new Regex(_query, options);
}
catch (ArgumentException ex)
{
_warningMessage = ex.Message;
return new Regex(NEGATIVE_LOOKAHEAD);
}
}
private static bool KeyHasSameType(SerializedProperty item, KeyType keyType)
{
var propType = item.FindPropertyRelative("Type").enumValueIndex;
return propType == (int) keyType;
}
private bool NameContainsQuery(SerializedProperty item, Regex regex, bool isObject)
{
var key = KeyToString(item, isObject);
// Regex search
if (_useRegex)
{
var match = regex.Match(key);
return match.Success;
}
// Simple search
var comparison = _matchCase ? StringComparison.Ordinal : StringComparison.OrdinalIgnoreCase;
return key.IndexOf(_query, comparison) >= 0;
}
private string KeyToString(SerializedProperty item, bool isObject)
{
if (isObject)
{
var reference = item.FindPropertyRelative("GameObject").objectReferenceValue;
return reference != null ? reference.name : string.Empty;
}
else
{
return item.FindPropertyRelative("Name").stringValue;
}
}
private void DrawHierarchyList()
{
EditorGUI.BeginChangeCheck();
_reorderableList.DoLayoutList();
// Track changes in reorderable list
if (EditorGUI.EndChangeCheck())
{
OnRulesetChange();
}
}
private void OnRulesetChange()
{
((HierarchyRulesetV2) target).SendMessage("OnRulesetChange", DontRequireReceiver);
serializedObject.ApplyModifiedProperties();
}
//---------------------------------------------------------------------
// Nested
//---------------------------------------------------------------------
private enum Filter
{
All, Name, Object
}
}
}

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 266803d19a0606046912a8e90cd4d473
AssetOrigin:
serializedVersion: 1
productId: 106670
packageName: Rainbow Hierarchy 2
packageVersion: 2.6.2
assetPath: Assets/Plugins/Borodar/RainbowHierarchy/Scripts/Editor/Ruleset/HierarchyRulesetEditorV2.cs
uploadId: 716077

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 14bb12a5a0bb93949baf55633fae3d8b
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 34a68908649d9a3428ce44fa1b31b9a2
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,53 @@
using System;
using System.Collections.Generic;
using UnityEngine;
using StorageHelper = Borodar.RainbowHierarchy.TexturesStorageHelper<Borodar.RainbowHierarchy.HierarchyBackground>;
namespace Borodar.RainbowHierarchy
{
public static class HierarchyBackgroundsStorage
{
private static readonly Dictionary<HierarchyBackground, Texture2D> BACKGROUND_TEXTURES = new Dictionary<HierarchyBackground, Texture2D>();
private static readonly Dictionary<HierarchyBackground, Lazy<string>> BACKGROUND_STRINGS = new Dictionary<HierarchyBackground, Lazy<string>>()
{
{HierarchyBackground.ClrRed, new Lazy<string>(()=> "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAqElEQVQ4EZWRgQ3DIAwEoZNklOy/QydpqjRPZevyhIhEAj7YfzZQ38uyllK+GNuhNT6DEXF5ttcx6av/Jec91b2oAVCaQ66snrMTQIMnMnbSBLBtahq43zQBTHzcgWgzpi6HHbA9dnOn8xU68sDlRU6vMAsJdsuPI3TkyLKVRZonAAo4xLzXvwFQlHRqOr1IXqICHqRxpPMSVZFVZ2AtP47gBsJG1bVff5VFJEHEsuQUAAAAAElFTkSuQmCC")},
{HierarchyBackground.ClrVermilion, new Lazy<string>(()=> "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAApUlEQVQ4EZ1QiRGAMAhr3cJtHMD9F3AM34YzXqCnVr1DUkhCaZ7GfkgpbSWWEuuZZ8nADHDYM25XCvj2EtlQ+w+aRINWmYmUTIM4PZ5V4zANUFR3xU4gBwzJaiC9ZrjTIE78tUKzSO7nVtBbKBa+g+BcK6Dz9QbG5xtEcTxzdFWnAQlvWVczfGegxCdT94hPRPbiCu4RdWok0qDKdytUxLOgQ1DKB60fIWpsPsbCAAAAAElFTkSuQmCC")},
{HierarchyBackground.ClrOrange, new Lazy<string>(()=> "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAsUlEQVQ4EZWQAQ7DIAwDYb/ob/axvXbP2FqGozpyQ0ArEiK49iW0vl/bs5Ry9P3tez/Pj5yodcPn3ke/ZKtmYteiXglok8BKRqYRALLSZ8BBJ8Bo0k5hIl+amE5AnEBDWscJ/B+oaVUPk3EChCI9A0WP/0SYlR6NGcyezQkQ0JDCsrBrBLhwo7CmBNg4N8Kw2pQEQNAn4J4tfZr5FaCBf2DmJyAGtJOCh5qA4cNEiI3KD5IJJZo84XQDAAAAAElFTkSuQmCC")},
{HierarchyBackground.ClrAmber, new Lazy<string>(()=> "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAqklEQVQ4EZWRAQ6DMAwD2/1iv+HDe9WesQGrOzkyTisVpFCL2pdE1PfruZVS9lZHq6/Up+lRqed4NBOe+j/ifYa6iuQjAIFZSBHJQwBMSletANXwVAJWAhqmPgnghzsn1okJEEz7DWg+6WUCvxzkcxOugO4rEyi0NyTAu6/AuocAJd/SCvApRiD3TP+CGwnz1eIvpAsm7FRw17MV1KgMbQQdKyDglxqkTuAf96cnzA70DsIAAAAASUVORK5CYII=")},
{HierarchyBackground.ClrYellow, new Lazy<string>(()=> "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAsElEQVQ4EY1TCRKDMAiE/sLf9P/f8BmtTYFIu4BkdAa5ls1KRt737UlEH7G32HF6jV9ELDbENDY764Y1/EMa+ozp8rspTxircwJL8vhFnhnZCRSLJBnoXIjR2kACB608ELPFSADNoKYhnHAkaIDLcruD5RQ0ww7wEwATwrzEoCAgm6Qc4jvIjZw3fP9rVGlZ3tVQwaCCO6cWjBNk5px3an5LVOY7Q4WoU1Cklsn5B48vAIEn/yp7a7UAAAAASUVORK5CYII=")},
{HierarchyBackground.ClrLime, new Lazy<string>(()=> "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAqUlEQVQ4Ea2Qiw3CMAxEE7Zgmy7cqRgDSsmzuOgS1MpIteT4dz47ruvjvpRS3k1fTbevxX8eKDVht1sLkL1pDe/PRwTZ5hm3i4ANXOZYNc+HLwIAXpwnicAtmCqCCKzqZJYe7jRsQOBNmQ0g7jcgyDaBlQxfUPLM+pbg+gZz4YxEtdjYj6gCNkMYGBF4M37mHmD6DWjKTAXn0m9A0qdmyK79AmyZqT9bfgCtoyjL+TMqmQAAAABJRU5ErkJggg==")},
{HierarchyBackground.ClrChartreuse, new Lazy<string>(()=> "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAArElEQVQ4EZWRgQ3DMAgE7W7RbbpYpu0YSeqCk4+ep64cS8jAw4GTuryfr1LKx2w328hW89Vc9xzq9ocFOA3OnzvVABCEOiaw1H0AQovRAtDFs5Pz7lcAmEz17h6HO5GzuwFAuXvuBECXiwMmAGF5pV3fwLEqxlGDiDcIowb1Kc2AJP5IpCEjQCo8YfrM6zd6g4qyQJcTGBtos8YGS729BgCZNhX2rRmQRkxg2hejsySZiTECtgAAAABJRU5ErkJggg==")},
{HierarchyBackground.ClrHarlequin, new Lazy<string>(()=> "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAr0lEQVQ4EY1RWxLEIAjDvUSv0+89/F6oT0HTRqRdO0MFAiFo+v6mWUS2bHu2tdpCp/psqNGe7ZN/+A44L2dy2HETjLSLdFU3ged2o2roqxIIFPBgRMEKzAeBBgxGzWEOBAqyAvbDxpqkS3wrizEbwgpKWVlkeJ2eoIgfWUGHNK8QC/2ThYJhyY7vukSVzCTsu54mvFbwDU93wHkbihWUlsFmDAU8yHwQGBsVPrndkBNLLyVSzgXMlAAAAABJRU5ErkJggg==")},
{HierarchyBackground.ClrGreen, new Lazy<string>(()=> "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAmElEQVQ4EZWRCxKAIAhEtTN4oO7c8fqYkDQELpPNmAjLAzGXrawppauto62z72TvYFHs1S7tQF99tqk/5wjgb2Y2wjwLcJ0KgMia7oS9stawSwCmM3i04IoArhJCIgDSazDbGmDbG0G0huzpVwg7GFWMfNQBHGKUKLHPDPg+Egl2PQOWoSE6IYJqANIgPxcRAN3HTRhlav8N3vMf/ZzaXywAAAAASUVORK5CYII=")},
{HierarchyBackground.ClrEmerald, new Lazy<string>(()=> "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAnUlEQVQ4EZ1RQQ6AIAwD3+FjPPltH6aClFgcyBaFZLCwtuvAz9u6OOfOFCHFcccuTuQM1FlDHqa0cUUmxtliohTwBlEtSQEVZBQ8BYa6Q5gCmK2dz2j8lCgAB39dZDwFIDnioPzCCBlNq0f8MsILo43wAqJdWtIp8moEjZSZ2kYHQ2SIUkBrYN3nplKgna9Hlk6BL78AsCz2yL27eAFBSiFE/wbSXQAAAABJRU5ErkJggg==")},
{HierarchyBackground.ClrSpringGreen, new Lazy<string>(()=> "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAuElEQVQ4EY1QiRHDMAizu0W2yVqdt2PkcQFHOSHXbXNHwFgPuC6v51pKOSxOi/2KjbLXHMB4Ph7286/2dP/1jAvuRw0BBzSgpKZ2woQrBJjsBHZiAe43J0FASSoIkaEPAVZWMZA1D2+ggE9nNUorDON1hcRhjNcVK6gbAalUlJ1DwDxCje6TLfW1bCFwebAV10rCOUxmK/w7QXoDJs0mUExfATN9z8EdhLECK090gsu4qCEwIf1s1zfz0iebR6oUSwAAAABJRU5ErkJggg==")},
{HierarchyBackground.ClrAquamarine, new Lazy<string>(()=> "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAm0lEQVQ4Ea2QgQ2AIAwEwS3cxnWdyzFUkEdKPgVJjZoUHmmvT/28rYtzLqQ4Upxl32mHlkCO3EGHKS34Ygqf1ctFANZiNOIvCoB/QluBXgAgM501wxmctQBwaC65smgNfnyCTuywbsfiAAWWIg2qM2D7Oml4ZgfDxM4lmtYZfHagG5iB/AQusg60DhEOrEXs9r8ZoDs/gbuwbnIuS1cjyK4dccAAAAAASUVORK5CYII=")},
{HierarchyBackground.ClrCyan, new Lazy<string>(()=> "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAtUlEQVQ4EY2RixHEIAhE9bpIN+m/jZRx+RyQwDwxOpcZZHWXFWJdtm0tpZwSh8T+xBdZsYfyzik+P7Lod90p1hqoBVlX3GBU0Ja3O6253KCl+o6c50XWzauBqCj0Ys15hEqDIAUEZrXgzpgGHZmK89b0NBjdykJqDNOAwlE3+Txegc5qlPduzvNuBBfNcu4gXkEJksQ0ZAd6HiPYhso/sJnxJ45upVfWxAgUzfB0hFmhc+zA8A9ikycD6t24QAAAAABJRU5ErkJggg==")},
{HierarchyBackground.ClrSkyBlue, new Lazy<string>(()=> "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAsElEQVQ4EY2Qiw3DMAhE7W7Rbbpwp+oYbZIa1EPPH5pEQjnguAPX+/P1KKXsLbYWH8S74VWI4/xbI+k7BNqfGOVSkThHApawSYyZGUpg7qwr3MxNJHDVkbzuhNGPTuyxbmJVG5BkmE5jr8slQGUjjHk39EuMc0hgRTirdSdYQtfsBNanDdg8c49+dgK3CfKwpdczAQ5l2DfOBC6fIwF/EFjFCX+UnCMBmyU3cChBnfALCzcmyTdoAdUAAAAASUVORK5CYII=")},
{HierarchyBackground.ClrAzure, new Lazy<string>(()=> "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAs0lEQVQ4EaWRgRGDMAhFk27RbVys03aMVi2QEl+ISb2rdyjC5/E1+f54LimlVWKTeCNekp8FNdtNRHplid2y+U11flnuAC2y6aLZUxfuDriyPcI6BxRcAZrGHegwh0af02kIoIMjH6HKwkzAuZQ7D2zNHBCHf4zV+b9OwSh0wK3RUV0ZEwdonUOExZnmnYCm0b0QX5paaU5hvrV0idFK/Ynqn83OwLfAJa0DdtTaiIC6OfgAbicnnDm2y8cAAAAASUVORK5CYII=")},
{HierarchyBackground.ClrCerulean, new Lazy<string>(()=> "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAr0lEQVQ4EY2SgRHCMAwDE7ZgGwZg/wUYA0qJfHXu42Jw79w6liLZTfr1/ri11rYR7xEvxHPk34Kc7TJIevqI3bLfL/H8Ud5dQEWCTvr33V2g4h7FbI8LVEeIIs0FBFRGYKfGpwDBk9NRoMkyghYEM4FoMk+hslmi5FnOETJX1tnBaQQSs5wdiDPvQQQyAXZgHB8hAnGdCS73ICUBYKfKl1Mou0Jw/gPVqA7OkkaT/gE58CRsKSA1HwAAAABJRU5ErkJggg==")},
{HierarchyBackground.ClrBlue, new Lazy<string>(()=> "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAArElEQVQ4EZWQAQ6AIAhFtdt0i+5/ku5QaUDSPojL2lj4+TzQvK77llK6KArFCXFQHgV6ykKm6KuRGGkKyFEx0LyvKoAmmqHeGLAeSQHUkJGAOTajLkMUwKbpqUDMCEA6eEzqh7xvwC4sYo6EbsjfDRAmuQKALCmcux4jKIDFtrb8RlfwunlEQ5448JbvIzJ5eu0Gl230Ctzs12u+4U96FDB0fRTMFT68XVk2vgEQ1iRfQ76zdwAAAABJRU5ErkJggg==")},
{HierarchyBackground.ClrIndigo, new Lazy<string>(()=> "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAq0lEQVQ4EY2S0Q2EMAxDWyZhlNvh9v9mCEAcDkr1GgoXpEKIHcdG1O+8fEopO8521jrr4HjfOft0knTV6/H3fkSGC9yASBy8a2l1AeEZF5FzUGCw5LUl152DTIzIaQ4sz+u+C2QEm2EEqrOmLvuqmwMCGuAmCrDfOSDAgVhzkdWMkBEhR3WLEDc9vdOBcdzBDXhSQF8z7T8wOwAzZRfB1BJT/AadgzibiWRiP5amKH4XBiZzAAAAAElFTkSuQmCC")},
{HierarchyBackground.ClrViolet, new Lazy<string>(()=> "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAArklEQVQ4EZWSAQ7DIAhFdXfZPXq5nXWH2FonzJ88xSWsCQXh+0Db+rg/j1LK2e3q9h72grdYZnXVbM956y976tf99W6mFsAXie1BJ0Bir0s4qccCsGDKda0GnGA6ggTyFCq3800T7Iq7XJiMgEzXoCGAHUOnUWTe4koAi6HTADDvMQGZCVbNdImkU/grNv10BArTMB3BaSDwPpAOP9h0BAozE0xfYe24rgUn2OL2AUS9JrOiCXynAAAAAElFTkSuQmCC")},
{HierarchyBackground.ClrPurple, new Lazy<string>(()=> "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAArElEQVQ4EY2Qiw3DMAhE7Y6UCbp0huoM+Tg+5ItOJqRYIoA5Hjh1XX7fUsrZbe92DL+JR6wGHe389ASndasW5T+mJwAJIDwRTO9NTwAatUjQX0+ATkfTnBPk7gmYn8CGN289BECYeYLTEIDVdD0nHKuoxmICoobRF7pKABQK0UlhNwoKeBVGRQKyE3VLMBsBKGQgTkMACkrXGJOeDjT3T8xu4EDcwBWCi3mzdgHb3ST1vqEGMwAAAABJRU5ErkJggg==")},
{HierarchyBackground.ClrMagenta, new Lazy<string>(()=> "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAuElEQVQ4EZWSgRHDIAhFsSt1ge4/RBZpGwso6ZNorvUO/crnBXOW7b49ROStsWu8ejyxmo6wfORM7zedbBSN6qpNtp8NeixfA5ATs2I7y+ASgFzwK1AIIJ2acILNc1yBpitNsMOiA6ddVa5yAWBrK6+dn3wBYGtTY6dmH39iZZK61/rCDtwTHWh2qKGxAYb0FwbA+X6tss8NSUzuYLCvNuzMNTtgEb/Ec2rzHE+ZZJqyzuC/X2IGygdrCCcSvgMbtAAAAABJRU5ErkJggg==")},
{HierarchyBackground.ClrFuchsia, new Lazy<string>(()=> "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAArklEQVQ4EZ2QARLDIAgEtS/Li/OrvqJJU4/MMSeUpFNnkBNhEftzWZfW2j7sPWwTew39zZiDmu0xNqx+Ot8PV7OIeZ2AOS0D4z3PRwVgwq2vANUIGjddAarO+gfQ0x8oXRMrGOL+B1p8VZDuOII9J93mgDaCLkfIpWckjcYXKBmp8UxgjOMPPKZ01SyG17jpATCPzUlBo5Ar5XAEJCidBbeeACX/CuMI1uSf7tb0A2xIJvWEOFUAAAAAAElFTkSuQmCC")},
{HierarchyBackground.ClrRose, new Lazy<string>(()=> "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAuElEQVQ4EZWRAQ7CMAwDW37DL/gW7+UZMEYd5s5yGgkqZXNS55Jp/XG931pr24j3iJfEc2gP3KNG33YZCU4fsYf6ZqeexSTQ0wiAjgLEQJ06CvWDAJ/o+YoATyfAJ3q+AsCzE+CGaoNUrwDVBqleAdKkY0WthyZAL/xzNNcNQhOA5BeIeqDnX8AUpSNfneThBm5OxsOgG8TWBOgFvJ77gJkT4E3VBrORggA0aFO1gXqCQQCB/7xjyAdN/ienW2LnbwAAAABJRU5ErkJggg==")},
{HierarchyBackground.ClrCrimson, new Lazy<string>(()=> "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAs0lEQVQ4EYWS0Q3DIAxEIat0kf53/w26RZNQ2+iiM+6lkQzHYT8wSn8/Xs/W2mFxWuwUH9O/Ajles282+NfndI3jUlmseR2AnFaB6z7WQwGQ8HdWANUC+6EVQJ3Mb+A6vQHTOVHB3Lc3mKlcfFdQ9rY2S+M6ZbcafJBr2UItnU5pDY/IZE9d1wCufvoPmM4axT6zHxo38AXTWTOA/dAAOJvpXHSrARjp/HxVBSgtqETlRwtfnlAndOonlR0AAAAASUVORK5CYII=")},
};
//---------------------------------------------------------------------
// Public
//---------------------------------------------------------------------
public static Texture2D GetBackground(int type)
{
return GetBackground((HierarchyBackground) type);
}
public static Texture2D GetBackground(HierarchyBackground type)
{
return StorageHelper.GetTexture(type, FilterMode.Bilinear, BACKGROUND_STRINGS, BACKGROUND_TEXTURES);
}
}
}

Some files were not shown because too many files have changed in this diff Show More