├── .github
└── FUNDING.yml
├── CathodeEditorUnity
├── ProjectSettings
│ ├── ProjectVersion.txt
│ ├── ClusterInputManager.asset
│ ├── PresetManager.asset
│ ├── XRSettings.asset
│ ├── VersionControlSettings.asset
│ ├── TimeManager.asset
│ ├── EditorBuildSettings.asset
│ ├── VFXManager.asset
│ ├── AudioManager.asset
│ ├── TimelineSettings.asset
│ ├── TagManager.asset
│ ├── UnityConnectSettings.asset
│ ├── PackageManagerSettings.asset
│ ├── EditorSettings.asset
│ ├── DynamicsManager.asset
│ ├── MemorySettings.asset
│ ├── QualitySettings.asset
│ ├── NavMeshAreas.asset
│ ├── Physics2DSettings.asset
│ ├── GraphicsSettings.asset
│ ├── SceneTemplateSettings.json
│ ├── InputManager.asset
│ └── ProjectSettings.asset
├── Assets
│ ├── Libraries
│ │ ├── System.Memory.dll
│ │ ├── System.Buffers.dll
│ │ ├── System.Numerics.Vectors.dll
│ │ ├── System.Runtime.CompilerServices.Unsafe.dll
│ │ ├── System.Memory.dll.meta
│ │ ├── System.Numerics.Vectors.dll.meta
│ │ ├── System.Runtime.CompilerServices.Unsafe.dll.meta
│ │ └── System.Buffers.dll.meta
│ ├── Plugins
│ │ ├── Newtonsoft.Json.dll
│ │ ├── WebsocketSharp
│ │ │ ├── websocket-sharp.dll
│ │ │ ├── LICENSE.txt.meta
│ │ │ ├── websocket-sharp.dll.meta
│ │ │ └── LICENSE.txt
│ │ ├── WebsocketSharp.meta
│ │ └── Newtonsoft.Json.dll.meta
│ ├── StreamingAssets
│ │ ├── sound_names.bin
│ │ ├── NodeDBs
│ │ │ ├── cathode_enum_lut.bin
│ │ │ ├── composite_paths.bin
│ │ │ ├── cathode_entity_lut.bin
│ │ │ ├── cathode_shortguid_lut.bin
│ │ │ ├── composite_entity_names.bin
│ │ │ ├── entity_parameter_names.bin
│ │ │ ├── composite_parameter_info.bin
│ │ │ ├── cathode_enum_lut.bin.meta
│ │ │ ├── composite_paths.bin.meta
│ │ │ ├── cathode_entity_lut.bin.meta
│ │ │ ├── cathode_shortguid_lut.bin.meta
│ │ │ ├── composite_entity_names.bin.meta
│ │ │ ├── composite_parameter_info.bin.meta
│ │ │ └── entity_parameter_names.bin.meta
│ │ ├── sound_names.bin.meta
│ │ └── NodeDBs.meta
│ ├── Scene.unity.meta
│ ├── Plugins.meta
│ ├── Scripts.meta
│ ├── CathodeLib.meta
│ ├── Libraries.meta
│ ├── StreamingAssets.meta
│ ├── Scripts
│ │ ├── EntityOverride.cs
│ │ ├── AlienScene.cs.meta
│ │ ├── EditorSetup.cs.meta
│ │ ├── EntityOverride.cs.meta
│ │ ├── CathodeLibExtensions.cs.meta
│ │ ├── CommandsEditorConnection.cs.meta
│ │ ├── EditorSetup.cs
│ │ ├── CathodeLibExtensions.cs
│ │ ├── CommandsEditorConnection.cs
│ │ └── AlienScene.cs
│ ├── Black Sky.mat.meta
│ ├── Black Sky.mat
│ └── Scene.unity
├── OPENCAGE_EXCEPTIONS
├── .gitignore
└── Packages
│ ├── manifest.json
│ └── packages-lock.json
├── .gitmodules
├── README.md
├── LICENSE
└── OpenCAGE.wlt
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | github: MattFiler
2 | ko_fi: MattFiler
3 | custom: https://www.paypal.me/mattfiler
4 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/ProjectSettings/ProjectVersion.txt:
--------------------------------------------------------------------------------
1 | m_EditorVersion: 2022.3.9f1
2 | m_EditorVersionWithRevision: 2022.3.9f1 (ea401c316338)
3 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/Assets/Libraries/System.Memory.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCAGE/LevelViewer/HEAD/CathodeEditorUnity/Assets/Libraries/System.Memory.dll
--------------------------------------------------------------------------------
/CathodeEditorUnity/Assets/Plugins/Newtonsoft.Json.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCAGE/LevelViewer/HEAD/CathodeEditorUnity/Assets/Plugins/Newtonsoft.Json.dll
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "CathodeEditorUnity/Assets/CathodeLib"]
2 | path = CathodeEditorUnity/Assets/CathodeLib
3 | url = https://github.com/OpenCAGE/CathodeLib
4 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/Assets/Libraries/System.Buffers.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCAGE/LevelViewer/HEAD/CathodeEditorUnity/Assets/Libraries/System.Buffers.dll
--------------------------------------------------------------------------------
/CathodeEditorUnity/Assets/StreamingAssets/sound_names.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCAGE/LevelViewer/HEAD/CathodeEditorUnity/Assets/StreamingAssets/sound_names.bin
--------------------------------------------------------------------------------
/CathodeEditorUnity/Assets/Libraries/System.Numerics.Vectors.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCAGE/LevelViewer/HEAD/CathodeEditorUnity/Assets/Libraries/System.Numerics.Vectors.dll
--------------------------------------------------------------------------------
/CathodeEditorUnity/Assets/Plugins/WebsocketSharp/websocket-sharp.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCAGE/LevelViewer/HEAD/CathodeEditorUnity/Assets/Plugins/WebsocketSharp/websocket-sharp.dll
--------------------------------------------------------------------------------
/CathodeEditorUnity/Assets/StreamingAssets/NodeDBs/cathode_enum_lut.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCAGE/LevelViewer/HEAD/CathodeEditorUnity/Assets/StreamingAssets/NodeDBs/cathode_enum_lut.bin
--------------------------------------------------------------------------------
/CathodeEditorUnity/Assets/StreamingAssets/NodeDBs/composite_paths.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCAGE/LevelViewer/HEAD/CathodeEditorUnity/Assets/StreamingAssets/NodeDBs/composite_paths.bin
--------------------------------------------------------------------------------
/CathodeEditorUnity/ProjectSettings/ClusterInputManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!236 &1
4 | ClusterInputManager:
5 | m_ObjectHideFlags: 0
6 | m_Inputs: []
7 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/Assets/StreamingAssets/NodeDBs/cathode_entity_lut.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCAGE/LevelViewer/HEAD/CathodeEditorUnity/Assets/StreamingAssets/NodeDBs/cathode_entity_lut.bin
--------------------------------------------------------------------------------
/CathodeEditorUnity/Assets/StreamingAssets/NodeDBs/cathode_shortguid_lut.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCAGE/LevelViewer/HEAD/CathodeEditorUnity/Assets/StreamingAssets/NodeDBs/cathode_shortguid_lut.bin
--------------------------------------------------------------------------------
/CathodeEditorUnity/Assets/StreamingAssets/NodeDBs/composite_entity_names.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCAGE/LevelViewer/HEAD/CathodeEditorUnity/Assets/StreamingAssets/NodeDBs/composite_entity_names.bin
--------------------------------------------------------------------------------
/CathodeEditorUnity/Assets/StreamingAssets/NodeDBs/entity_parameter_names.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCAGE/LevelViewer/HEAD/CathodeEditorUnity/Assets/StreamingAssets/NodeDBs/entity_parameter_names.bin
--------------------------------------------------------------------------------
/CathodeEditorUnity/Assets/Libraries/System.Runtime.CompilerServices.Unsafe.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCAGE/LevelViewer/HEAD/CathodeEditorUnity/Assets/Libraries/System.Runtime.CompilerServices.Unsafe.dll
--------------------------------------------------------------------------------
/CathodeEditorUnity/Assets/StreamingAssets/NodeDBs/composite_parameter_info.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenCAGE/LevelViewer/HEAD/CathodeEditorUnity/Assets/StreamingAssets/NodeDBs/composite_parameter_info.bin
--------------------------------------------------------------------------------
/CathodeEditorUnity/Assets/Scene.unity.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: fb6f1c497c254f346ac26080dedd611a
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/ProjectSettings/PresetManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!1386491679 &1
4 | PresetManager:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | m_DefaultPresets: {}
8 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/Assets/Plugins.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: f591e2e954b199041ac528f623ed782c
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/Assets/Scripts.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 27cb4a5820ec3094c9967f14f5344cdc
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/Assets/CathodeLib.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 6575f4a329c3ac64aa8357ee467d13bc
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/Assets/Libraries.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 32c1fbf8179facf4198b5d18f403ffa5
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/Assets/StreamingAssets/sound_names.bin.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 4f4c37b33d449ad49847253f9b057d18
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/Assets/Plugins/WebsocketSharp/LICENSE.txt.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d74fa36e3e2fb9e46bf7f2fe39c37c5e
3 | TextScriptImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/Assets/StreamingAssets.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 72a3a8c186bad53479023250278d0bba
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/Assets/Plugins/WebsocketSharp.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 22baf531152339845afa8924c2facd26
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/Assets/StreamingAssets/NodeDBs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 87b25fa7cff984647889d744b157c61c
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/Assets/StreamingAssets/NodeDBs/cathode_enum_lut.bin.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 10e5914b2d3c687448d3ef6b0a1124f5
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/Assets/StreamingAssets/NodeDBs/composite_paths.bin.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 16e408306c0cc4e4887bf7d14f043580
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/ProjectSettings/XRSettings.asset:
--------------------------------------------------------------------------------
1 | {
2 | "m_SettingKeys": [
3 | "VR Device Disabled",
4 | "VR Device User Alert"
5 | ],
6 | "m_SettingValues": [
7 | "False",
8 | "False"
9 | ]
10 | }
--------------------------------------------------------------------------------
/CathodeEditorUnity/Assets/Scripts/EntityOverride.cs:
--------------------------------------------------------------------------------
1 | using System.Collections;
2 | using System.Collections.Generic;
3 | using UnityEngine;
4 |
5 | public class EntityOverride : MonoBehaviour
6 | {
7 | public GameObject PointedEntity;
8 |
9 | }
10 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/Assets/StreamingAssets/NodeDBs/cathode_entity_lut.bin.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 80cbe01d7765f8140b6d5daf2cb9318b
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/Assets/StreamingAssets/NodeDBs/cathode_shortguid_lut.bin.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 0996b5e7961e4fe428a7535ce6919c57
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/Assets/Black Sky.mat.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: e9f719a0e0221754182954253f450a4a
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 2100000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/Assets/StreamingAssets/NodeDBs/composite_entity_names.bin.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 3ff77252b396a1b4681eb4b246ec1787
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/Assets/StreamingAssets/NodeDBs/composite_parameter_info.bin.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 7e35bd9a4de51f64b90742cb95e79df4
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/Assets/StreamingAssets/NodeDBs/entity_parameter_names.bin.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: ce289ca5382b5df458ad1fc53cda8327
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/ProjectSettings/VersionControlSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!890905787 &1
4 | VersionControlSettings:
5 | m_ObjectHideFlags: 0
6 | m_Mode: Visible Meta Files
7 | m_CollabEditorSettings:
8 | inProgressEnabled: 1
9 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/ProjectSettings/TimeManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!5 &1
4 | TimeManager:
5 | m_ObjectHideFlags: 0
6 | Fixed Timestep: 0.02
7 | Maximum Allowed Timestep: 0.33333334
8 | m_TimeScale: 1
9 | Maximum Particle Timestep: 0.03
10 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/Assets/Scripts/AlienScene.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 96ee70b3d02f2e6468af5a5770ee5b2d
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/Assets/Scripts/EditorSetup.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: c676b182e5e4dc944a010cc28eb113f8
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/Assets/Scripts/EntityOverride.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 12db062dca605b44b865197b923522ae
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/Assets/Scripts/CathodeLibExtensions.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: c2f6e9e5a548f7e44afa8970eadce335
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/ProjectSettings/EditorBuildSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!1045 &1
4 | EditorBuildSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | m_Scenes:
8 | - enabled: 1
9 | path: Assets/Scene.unity
10 | guid: fb6f1c497c254f346ac26080dedd611a
11 | m_configObjects: {}
12 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/Assets/Scripts/CommandsEditorConnection.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d4fc09d870dd2b848898660f132d23fa
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/ProjectSettings/VFXManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!937362698 &1
4 | VFXManager:
5 | m_ObjectHideFlags: 0
6 | m_IndirectShader: {fileID: 0}
7 | m_CopyBufferShader: {fileID: 0}
8 | m_SortShader: {fileID: 0}
9 | m_StripUpdateShader: {fileID: 0}
10 | m_RenderPipeSettingsPath:
11 | m_FixedTimeStep: 0.016666668
12 | m_MaxDeltaTime: 0.05
13 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/ProjectSettings/AudioManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!11 &1
4 | AudioManager:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | m_Volume: 1
8 | Rolloff Scale: 1
9 | Doppler Factor: 1
10 | Default Speaker Mode: 2
11 | m_SampleRate: 0
12 | m_DSPBufferSize: 1024
13 | m_VirtualVoiceCount: 512
14 | m_RealVoiceCount: 32
15 | m_SpatializerPlugin:
16 | m_AmbisonicDecoderPlugin:
17 | m_DisableAudio: 0
18 | m_VirtualizeEffects: 1
19 | m_RequestedDSPBufferSize: 1024
20 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Alien: Isolation Level Viewer
2 |
3 |
4 |
5 | A 3D companion to OpenCAGE's Commands Editor. The two tools should be used alongside eachother: enable the Level Viewer connection in the script editor to start a websocket between them.
6 |
7 | Changes made in the script editor will be reflected in the Unity scene.
8 |
9 | This tool is included in [OpenCAGE](https://github.com/MattFiler/OpenCAGE)! Read more about the setup process [here](http://opencage.co.uk/docs/level-viewer).
10 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/ProjectSettings/TimelineSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &1
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 61
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_GameObject: {fileID: 0}
10 | m_Enabled: 1
11 | m_EditorHideFlags: 0
12 | m_Script: {fileID: 11500000, guid: a287be6c49135cd4f9b2b8666c39d999, type: 3}
13 | m_Name:
14 | m_EditorClassIdentifier:
15 | assetDefaultFramerate: 60
16 | m_DefaultFrameRate: 60
17 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/ProjectSettings/TagManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!78 &1
4 | TagManager:
5 | serializedVersion: 2
6 | tags:
7 | - pointed
8 | layers:
9 | - Default
10 | - TransparentFX
11 | - Ignore Raycast
12 | -
13 | - Water
14 | - UI
15 | -
16 | -
17 | -
18 | -
19 | -
20 | -
21 | -
22 | -
23 | -
24 | -
25 | -
26 | -
27 | -
28 | -
29 | -
30 | -
31 | -
32 | -
33 | -
34 | -
35 | -
36 | -
37 | -
38 | -
39 | -
40 | -
41 | m_SortingLayers:
42 | - name: Default
43 | uniqueID: 0
44 | locked: 0
45 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/OPENCAGE_EXCEPTIONS:
--------------------------------------------------------------------------------
1 | Assets\CathodeLib\.git
2 | Assets\CathodeLib\AlienBML\.git
3 | Assets\CathodeLib\CathodeLib\CathodeLib.sln
4 | Assets\CathodeLib\CathodeLib\CathodeLib.csproj
5 | Assets\CathodeLib\CathodeLib\Properties\Resources.resx
6 | Assets\CathodeLib\CathodeLib\Properties\Resources.Designer.cs
7 | Assets\CathodeLib\CathodeLib\Resources\sound_names.bin
8 | Assets\CathodeLib\CathodeLib\Resources\NodeDBs\cathode_entity_lut.bin
9 | Assets\CathodeLib\CathodeLib\Resources\NodeDBs\cathode_enum_lut.bin
10 | Assets\CathodeLib\CathodeLib\Resources\NodeDBs\cathode_shortguid_lut.bin
11 | Assets\CathodeLib\CathodeLib\Resources\NodeDBs\composite_entity_names.bin
12 | Assets\CathodeLib\CathodeLib\Resources\NodeDBs\composite_parameter_info.bin
13 | Assets\CathodeLib\CathodeLib\Resources\NodeDBs\composite_paths.bin
--------------------------------------------------------------------------------
/CathodeEditorUnity/Assets/Libraries/System.Memory.dll.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: f44c5c20db0f09544a968fd4d77371e7
3 | PluginImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | iconMap: {}
7 | executionOrder: {}
8 | defineConstraints: []
9 | isPreloaded: 0
10 | isOverridable: 0
11 | isExplicitlyReferenced: 0
12 | validateReferences: 1
13 | platformData:
14 | - first:
15 | Any:
16 | second:
17 | enabled: 1
18 | settings: {}
19 | - first:
20 | Editor: Editor
21 | second:
22 | enabled: 0
23 | settings:
24 | DefaultValueInitialized: true
25 | - first:
26 | Windows Store Apps: WindowsStoreApps
27 | second:
28 | enabled: 0
29 | settings:
30 | CPU: AnyCPU
31 | userData:
32 | assetBundleName:
33 | assetBundleVariant:
34 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/Assets/Plugins/Newtonsoft.Json.dll.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 9e5f3b2a8720e2d4a83910d23f396c6e
3 | PluginImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | iconMap: {}
7 | executionOrder: {}
8 | defineConstraints: []
9 | isPreloaded: 0
10 | isOverridable: 0
11 | isExplicitlyReferenced: 0
12 | validateReferences: 1
13 | platformData:
14 | - first:
15 | Any:
16 | second:
17 | enabled: 1
18 | settings: {}
19 | - first:
20 | Editor: Editor
21 | second:
22 | enabled: 0
23 | settings:
24 | DefaultValueInitialized: true
25 | - first:
26 | Windows Store Apps: WindowsStoreApps
27 | second:
28 | enabled: 0
29 | settings:
30 | CPU: AnyCPU
31 | userData:
32 | assetBundleName:
33 | assetBundleVariant:
34 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/Assets/Libraries/System.Numerics.Vectors.dll.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 661c2c153849ff6409305dc747fa0849
3 | PluginImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | iconMap: {}
7 | executionOrder: {}
8 | defineConstraints: []
9 | isPreloaded: 0
10 | isOverridable: 0
11 | isExplicitlyReferenced: 0
12 | validateReferences: 1
13 | platformData:
14 | - first:
15 | Any:
16 | second:
17 | enabled: 1
18 | settings: {}
19 | - first:
20 | Editor: Editor
21 | second:
22 | enabled: 0
23 | settings:
24 | DefaultValueInitialized: true
25 | - first:
26 | Windows Store Apps: WindowsStoreApps
27 | second:
28 | enabled: 0
29 | settings:
30 | CPU: AnyCPU
31 | userData:
32 | assetBundleName:
33 | assetBundleVariant:
34 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/Assets/Plugins/WebsocketSharp/websocket-sharp.dll.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 65f5f7833b240ea4ea59a39d3fed1f07
3 | PluginImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | iconMap: {}
7 | executionOrder: {}
8 | defineConstraints: []
9 | isPreloaded: 0
10 | isOverridable: 0
11 | isExplicitlyReferenced: 0
12 | validateReferences: 1
13 | platformData:
14 | - first:
15 | Any:
16 | second:
17 | enabled: 1
18 | settings: {}
19 | - first:
20 | Editor: Editor
21 | second:
22 | enabled: 0
23 | settings:
24 | DefaultValueInitialized: true
25 | - first:
26 | Windows Store Apps: WindowsStoreApps
27 | second:
28 | enabled: 0
29 | settings:
30 | CPU: AnyCPU
31 | userData:
32 | assetBundleName:
33 | assetBundleVariant:
34 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/Assets/Libraries/System.Runtime.CompilerServices.Unsafe.dll.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 1e72a6a393236294eb16f18d5853d364
3 | PluginImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | iconMap: {}
7 | executionOrder: {}
8 | defineConstraints: []
9 | isPreloaded: 0
10 | isOverridable: 0
11 | isExplicitlyReferenced: 0
12 | validateReferences: 1
13 | platformData:
14 | - first:
15 | Any:
16 | second:
17 | enabled: 1
18 | settings: {}
19 | - first:
20 | Editor: Editor
21 | second:
22 | enabled: 0
23 | settings:
24 | DefaultValueInitialized: true
25 | - first:
26 | Windows Store Apps: WindowsStoreApps
27 | second:
28 | enabled: 0
29 | settings:
30 | CPU: AnyCPU
31 | userData:
32 | assetBundleName:
33 | assetBundleVariant:
34 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/ProjectSettings/UnityConnectSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!310 &1
4 | UnityConnectSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 1
7 | m_Enabled: 0
8 | m_TestMode: 0
9 | m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events
10 | m_EventUrl: https://cdp.cloud.unity3d.com/v1/events
11 | m_ConfigUrl: https://config.uca.cloud.unity3d.com
12 | m_TestInitMode: 0
13 | CrashReportingSettings:
14 | m_EventUrl: https://perf-events.cloud.unity3d.com
15 | m_Enabled: 0
16 | m_LogBufferSize: 10
17 | m_CaptureEditorExceptions: 1
18 | UnityPurchasingSettings:
19 | m_Enabled: 0
20 | m_TestMode: 0
21 | UnityAnalyticsSettings:
22 | m_Enabled: 0
23 | m_TestMode: 0
24 | m_InitializeOnStartup: 1
25 | UnityAdsSettings:
26 | m_Enabled: 0
27 | m_InitializeOnStartup: 1
28 | m_TestMode: 0
29 | m_IosGameId:
30 | m_AndroidGameId:
31 | m_GameIds: {}
32 | m_GameId:
33 | PerformanceReportingSettings:
34 | m_Enabled: 0
35 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 Matt Filer
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/Assets/Plugins/WebsocketSharp/LICENSE.txt:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2010-2020 sta.blockhead
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in
13 | all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | THE SOFTWARE.
--------------------------------------------------------------------------------
/CathodeEditorUnity/ProjectSettings/PackageManagerSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &1
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 61
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_GameObject: {fileID: 0}
10 | m_Enabled: 1
11 | m_EditorHideFlags: 0
12 | m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0}
13 | m_Name:
14 | m_EditorClassIdentifier:
15 | m_EnablePreviewPackages: 0
16 | m_EnablePackageDependencies: 0
17 | m_AdvancedSettingsExpanded: 1
18 | m_ScopedRegistriesSettingsExpanded: 1
19 | oneTimeWarningShown: 0
20 | m_Registries:
21 | - m_Id: main
22 | m_Name:
23 | m_Url: https://packages.unity.com
24 | m_Scopes: []
25 | m_IsDefault: 1
26 | m_Capabilities: 7
27 | m_UserSelectedRegistryName:
28 | m_UserAddingNewScopedRegistry: 0
29 | m_RegistryInfoDraft:
30 | m_ErrorMessage:
31 | m_Original:
32 | m_Id:
33 | m_Name:
34 | m_Url:
35 | m_Scopes: []
36 | m_IsDefault: 0
37 | m_Capabilities: 0
38 | m_Modified: 0
39 | m_Name:
40 | m_Url:
41 | m_Scopes:
42 | -
43 | m_SelectedScopeIndex: 0
44 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/ProjectSettings/EditorSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!159 &1
4 | EditorSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 9
7 | m_ExternalVersionControlSupport: Visible Meta Files
8 | m_SerializationMode: 2
9 | m_LineEndingsForNewScripts: 0
10 | m_DefaultBehaviorMode: 0
11 | m_PrefabRegularEnvironment: {fileID: 0}
12 | m_PrefabUIEnvironment: {fileID: 0}
13 | m_SpritePackerMode: 0
14 | m_SpritePackerPaddingPower: 1
15 | m_EtcTextureCompressorBehavior: 1
16 | m_EtcTextureFastCompressor: 1
17 | m_EtcTextureNormalCompressor: 2
18 | m_EtcTextureBestCompressor: 4
19 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;rsp;asmref
20 | m_ProjectGenerationRootNamespace:
21 | m_CollabEditorSettings:
22 | inProgressEnabled: 1
23 | m_EnableTextureStreamingInEditMode: 1
24 | m_EnableTextureStreamingInPlayMode: 1
25 | m_AsyncShaderCompilation: 1
26 | m_EnterPlayModeOptionsEnabled: 0
27 | m_EnterPlayModeOptions: 3
28 | m_ShowLightmapResolutionOverlay: 1
29 | m_UseLegacyProbeSampleCount: 0
30 | m_AssetPipelineMode: 1
31 | m_CacheServerMode: 0
32 | m_CacheServerEndpoint:
33 | m_CacheServerNamespacePrefix: default
34 | m_CacheServerEnableDownload: 1
35 | m_CacheServerEnableUpload: 1
36 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/ProjectSettings/DynamicsManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!55 &1
4 | PhysicsManager:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 11
7 | m_Gravity: {x: 0, y: -9.81, z: 0}
8 | m_DefaultMaterial: {fileID: 0}
9 | m_BounceThreshold: 2
10 | m_SleepThreshold: 0.005
11 | m_DefaultContactOffset: 0.01
12 | m_DefaultSolverIterations: 6
13 | m_DefaultSolverVelocityIterations: 1
14 | m_QueriesHitBackfaces: 0
15 | m_QueriesHitTriggers: 1
16 | m_EnableAdaptiveForce: 0
17 | m_ClothInterCollisionDistance: 0
18 | m_ClothInterCollisionStiffness: 0
19 | m_ContactsGeneration: 1
20 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
21 | m_AutoSimulation: 1
22 | m_AutoSyncTransforms: 0
23 | m_ReuseCollisionCallbacks: 1
24 | m_ClothInterCollisionSettingsToggle: 0
25 | m_ContactPairsMode: 0
26 | m_BroadphaseType: 0
27 | m_WorldBounds:
28 | m_Center: {x: 0, y: 0, z: 0}
29 | m_Extent: {x: 250, y: 250, z: 250}
30 | m_WorldSubdivisions: 8
31 | m_FrictionType: 0
32 | m_EnableEnhancedDeterminism: 0
33 | m_EnableUnifiedHeightmaps: 1
34 | m_DefaultMaxAngluarSpeed: 7
35 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/ProjectSettings/MemorySettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!387306366 &1
4 | MemorySettings:
5 | m_ObjectHideFlags: 0
6 | m_EditorMemorySettings:
7 | m_MainAllocatorBlockSize: -1
8 | m_ThreadAllocatorBlockSize: -1
9 | m_MainGfxBlockSize: -1
10 | m_ThreadGfxBlockSize: -1
11 | m_CacheBlockSize: -1
12 | m_TypetreeBlockSize: -1
13 | m_ProfilerBlockSize: -1
14 | m_ProfilerEditorBlockSize: -1
15 | m_BucketAllocatorGranularity: -1
16 | m_BucketAllocatorBucketsCount: -1
17 | m_BucketAllocatorBlockSize: -1
18 | m_BucketAllocatorBlockCount: -1
19 | m_ProfilerBucketAllocatorGranularity: -1
20 | m_ProfilerBucketAllocatorBucketsCount: -1
21 | m_ProfilerBucketAllocatorBlockSize: -1
22 | m_ProfilerBucketAllocatorBlockCount: -1
23 | m_TempAllocatorSizeMain: -1
24 | m_JobTempAllocatorBlockSize: -1
25 | m_BackgroundJobTempAllocatorBlockSize: -1
26 | m_JobTempAllocatorReducedBlockSize: -1
27 | m_TempAllocatorSizeGIBakingWorker: -1
28 | m_TempAllocatorSizeNavMeshWorker: -1
29 | m_TempAllocatorSizeAudioWorker: -1
30 | m_TempAllocatorSizeCloudWorker: -1
31 | m_TempAllocatorSizeGfx: -1
32 | m_TempAllocatorSizeJobWorker: -1
33 | m_TempAllocatorSizeBackgroundWorker: -1
34 | m_TempAllocatorSizePreloadManager: -1
35 | m_PlatformMemorySettings: {}
36 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/.gitignore:
--------------------------------------------------------------------------------
1 | # This .gitignore file should be placed at the root of your Unity project directory
2 | #
3 | # Get latest from https://github.com/github/gitignore/blob/master/Unity.gitignore
4 | #
5 | /[Ll]ibrary/
6 | /[Tt]emp/
7 | /[Oo]bj/
8 | /[Bb]uild/
9 | /[Bb]uilds/
10 | /[Ll]ogs/
11 | /[Uu]ser[Ss]ettings/
12 |
13 | # MemoryCaptures can get excessive in size.
14 | # They also could contain extremely sensitive data
15 | /[Mm]emoryCaptures/
16 |
17 | # Asset meta data should only be ignored when the corresponding asset is also ignored
18 | !/[Aa]ssets/**/*.meta
19 |
20 | # Uncomment this line if you wish to ignore the asset store tools plugin
21 | # /[Aa]ssets/AssetStoreTools*
22 |
23 | # Autogenerated Jetbrains Rider plugin
24 | /[Aa]ssets/Plugins/Editor/JetBrains*
25 |
26 | # Visual Studio cache directory
27 | .vs/
28 |
29 | # Gradle cache directory
30 | .gradle/
31 |
32 | # Autogenerated VS/MD/Consulo solution and project files
33 | ExportedObj/
34 | .consulo/
35 | *.csproj
36 | *.unityproj
37 | *.sln
38 | *.suo
39 | *.tmp
40 | *.user
41 | *.userprefs
42 | *.pidb
43 | *.booproj
44 | *.svd
45 | *.pdb
46 | *.mdb
47 | *.opendb
48 | *.VC.db
49 |
50 | # Unity3D generated meta files
51 | *.pidb.meta
52 | *.pdb.meta
53 | *.mdb.meta
54 |
55 | # Unity3D generated file on crash reports
56 | sysinfo.txt
57 |
58 | # Builds
59 | *.apk
60 | *.aab
61 | *.unitypackage
62 |
63 | # Crashlytics generated file
64 | crashlytics-build.properties
65 |
66 | # Packed Addressables
67 | /[Aa]ssets/[Aa]ddressable[Aa]ssets[Dd]ata/*/*.bin*
68 |
69 | # Temporary auto-generated Android Assets
70 | /[Aa]ssets/[Ss]treamingAssets/aa.meta
71 | /[Aa]ssets/[Ss]treamingAssets/aa/*
72 |
73 | .vsconfig
--------------------------------------------------------------------------------
/CathodeEditorUnity/ProjectSettings/QualitySettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!47 &1
4 | QualitySettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 5
7 | m_CurrentQuality: 0
8 | m_QualitySettings:
9 | - serializedVersion: 2
10 | name: Very Low
11 | pixelLightCount: 0
12 | shadows: 0
13 | shadowResolution: 0
14 | shadowProjection: 1
15 | shadowCascades: 1
16 | shadowDistance: 15
17 | shadowNearPlaneOffset: 3
18 | shadowCascade2Split: 0.33333334
19 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
20 | shadowmaskMode: 0
21 | skinWeights: 1
22 | textureQuality: 1
23 | anisotropicTextures: 0
24 | antiAliasing: 0
25 | softParticles: 0
26 | softVegetation: 0
27 | realtimeReflectionProbes: 0
28 | billboardsFaceCameraPosition: 0
29 | vSyncCount: 0
30 | lodBias: 0.3
31 | maximumLODLevel: 0
32 | streamingMipmapsActive: 0
33 | streamingMipmapsAddAllCameras: 1
34 | streamingMipmapsMemoryBudget: 512
35 | streamingMipmapsRenderersPerFrame: 512
36 | streamingMipmapsMaxLevelReduction: 2
37 | streamingMipmapsMaxFileIORequests: 1024
38 | particleRaycastBudget: 4
39 | asyncUploadTimeSlice: 2
40 | asyncUploadBufferSize: 16
41 | asyncUploadPersistentBuffer: 1
42 | resolutionScalingFixedDPIFactor: 1
43 | customRenderPipeline: {fileID: 0}
44 | excludedTargetPlatforms: []
45 | m_PerPlatformDefaultQuality:
46 | Android: 0
47 | Lumin: 0
48 | Nintendo 3DS: 0
49 | Nintendo Switch: 0
50 | PS4: 0
51 | PSP2: 0
52 | Stadia: 0
53 | Standalone: 0
54 | WebGL: 0
55 | Windows Store Apps: 0
56 | XboxOne: 0
57 | iPhone: 0
58 | tvOS: 0
59 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/ProjectSettings/NavMeshAreas.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!126 &1
4 | NavMeshProjectSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | areas:
8 | - name: Walkable
9 | cost: 1
10 | - name: Not Walkable
11 | cost: 1
12 | - name: Jump
13 | cost: 2
14 | - name:
15 | cost: 1
16 | - name:
17 | cost: 1
18 | - name:
19 | cost: 1
20 | - name:
21 | cost: 1
22 | - name:
23 | cost: 1
24 | - name:
25 | cost: 1
26 | - name:
27 | cost: 1
28 | - name:
29 | cost: 1
30 | - name:
31 | cost: 1
32 | - name:
33 | cost: 1
34 | - name:
35 | cost: 1
36 | - name:
37 | cost: 1
38 | - name:
39 | cost: 1
40 | - name:
41 | cost: 1
42 | - name:
43 | cost: 1
44 | - name:
45 | cost: 1
46 | - name:
47 | cost: 1
48 | - name:
49 | cost: 1
50 | - name:
51 | cost: 1
52 | - name:
53 | cost: 1
54 | - name:
55 | cost: 1
56 | - name:
57 | cost: 1
58 | - name:
59 | cost: 1
60 | - name:
61 | cost: 1
62 | - name:
63 | cost: 1
64 | - name:
65 | cost: 1
66 | - name:
67 | cost: 1
68 | - name:
69 | cost: 1
70 | - name:
71 | cost: 1
72 | m_LastAgentTypeID: -887442657
73 | m_Settings:
74 | - serializedVersion: 2
75 | agentTypeID: 0
76 | agentRadius: 0.5
77 | agentHeight: 2
78 | agentSlope: 45
79 | agentClimb: 0.75
80 | ledgeDropHeight: 0
81 | maxJumpAcrossDistance: 0
82 | minRegionArea: 2
83 | manualCellSize: 0
84 | cellSize: 0.16666667
85 | manualTileSize: 0
86 | tileSize: 256
87 | accuratePlacement: 0
88 | debug:
89 | m_Flags: 0
90 | m_SettingNames:
91 | - Humanoid
92 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/Assets/Libraries/System.Buffers.dll.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: faeaac64c819eb2428c118423a1abe21
3 | PluginImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | iconMap: {}
7 | executionOrder: {}
8 | defineConstraints: []
9 | isPreloaded: 0
10 | isOverridable: 0
11 | isExplicitlyReferenced: 0
12 | validateReferences: 1
13 | platformData:
14 | - first:
15 | : Any
16 | second:
17 | enabled: 0
18 | settings:
19 | Exclude Editor: 0
20 | Exclude Linux64: 1
21 | Exclude OSXUniversal: 1
22 | Exclude WebGL: 0
23 | Exclude Win: 0
24 | Exclude Win64: 0
25 | - first:
26 | Any:
27 | second:
28 | enabled: 1
29 | settings: {}
30 | - first:
31 | Editor: Editor
32 | second:
33 | enabled: 1
34 | settings:
35 | CPU: AnyCPU
36 | DefaultValueInitialized: true
37 | OS: AnyOS
38 | - first:
39 | Standalone: Linux64
40 | second:
41 | enabled: 0
42 | settings:
43 | CPU: None
44 | - first:
45 | Standalone: OSXUniversal
46 | second:
47 | enabled: 0
48 | settings:
49 | CPU: None
50 | - first:
51 | Standalone: Win
52 | second:
53 | enabled: 1
54 | settings:
55 | CPU: x86
56 | - first:
57 | Standalone: Win64
58 | second:
59 | enabled: 1
60 | settings:
61 | CPU: x86_64
62 | - first:
63 | WebGL: WebGL
64 | second:
65 | enabled: 1
66 | settings: {}
67 | - first:
68 | Windows Store Apps: WindowsStoreApps
69 | second:
70 | enabled: 0
71 | settings:
72 | CPU: AnyCPU
73 | userData:
74 | assetBundleName:
75 | assetBundleVariant:
76 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/Packages/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "dependencies": {
3 | "com.unity.ai.navigation": "1.1.4",
4 | "com.unity.collab-proxy": "2.0.7",
5 | "com.unity.ide.rider": "3.0.24",
6 | "com.unity.ide.visualstudio": "2.0.18",
7 | "com.unity.ide.vscode": "1.2.5",
8 | "com.unity.test-framework": "1.1.33",
9 | "com.unity.timeline": "1.7.5",
10 | "com.unity.toolchain.win-x86_64-linux-x86_64": "2.0.4",
11 | "com.unity.ugui": "1.0.0",
12 | "com.unity.modules.ai": "1.0.0",
13 | "com.unity.modules.androidjni": "1.0.0",
14 | "com.unity.modules.animation": "1.0.0",
15 | "com.unity.modules.assetbundle": "1.0.0",
16 | "com.unity.modules.audio": "1.0.0",
17 | "com.unity.modules.cloth": "1.0.0",
18 | "com.unity.modules.director": "1.0.0",
19 | "com.unity.modules.imageconversion": "1.0.0",
20 | "com.unity.modules.imgui": "1.0.0",
21 | "com.unity.modules.jsonserialize": "1.0.0",
22 | "com.unity.modules.particlesystem": "1.0.0",
23 | "com.unity.modules.physics": "1.0.0",
24 | "com.unity.modules.physics2d": "1.0.0",
25 | "com.unity.modules.screencapture": "1.0.0",
26 | "com.unity.modules.terrain": "1.0.0",
27 | "com.unity.modules.terrainphysics": "1.0.0",
28 | "com.unity.modules.tilemap": "1.0.0",
29 | "com.unity.modules.ui": "1.0.0",
30 | "com.unity.modules.uielements": "1.0.0",
31 | "com.unity.modules.umbra": "1.0.0",
32 | "com.unity.modules.unityanalytics": "1.0.0",
33 | "com.unity.modules.unitywebrequest": "1.0.0",
34 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0",
35 | "com.unity.modules.unitywebrequestaudio": "1.0.0",
36 | "com.unity.modules.unitywebrequesttexture": "1.0.0",
37 | "com.unity.modules.unitywebrequestwww": "1.0.0",
38 | "com.unity.modules.vehicles": "1.0.0",
39 | "com.unity.modules.video": "1.0.0",
40 | "com.unity.modules.vr": "1.0.0",
41 | "com.unity.modules.wind": "1.0.0",
42 | "com.unity.modules.xr": "1.0.0"
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/ProjectSettings/Physics2DSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!19 &1
4 | Physics2DSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 4
7 | m_Gravity: {x: 0, y: -9.81}
8 | m_DefaultMaterial: {fileID: 0}
9 | m_VelocityIterations: 8
10 | m_PositionIterations: 3
11 | m_VelocityThreshold: 1
12 | m_MaxLinearCorrection: 0.2
13 | m_MaxAngularCorrection: 8
14 | m_MaxTranslationSpeed: 100
15 | m_MaxRotationSpeed: 360
16 | m_BaumgarteScale: 0.2
17 | m_BaumgarteTimeOfImpactScale: 0.75
18 | m_TimeToSleep: 0.5
19 | m_LinearSleepTolerance: 0.01
20 | m_AngularSleepTolerance: 2
21 | m_DefaultContactOffset: 0.01
22 | m_JobOptions:
23 | serializedVersion: 2
24 | useMultithreading: 0
25 | useConsistencySorting: 0
26 | m_InterpolationPosesPerJob: 100
27 | m_NewContactsPerJob: 30
28 | m_CollideContactsPerJob: 100
29 | m_ClearFlagsPerJob: 200
30 | m_ClearBodyForcesPerJob: 200
31 | m_SyncDiscreteFixturesPerJob: 50
32 | m_SyncContinuousFixturesPerJob: 50
33 | m_FindNearestContactsPerJob: 100
34 | m_UpdateTriggerContactsPerJob: 100
35 | m_IslandSolverCostThreshold: 100
36 | m_IslandSolverBodyCostScale: 1
37 | m_IslandSolverContactCostScale: 10
38 | m_IslandSolverJointCostScale: 10
39 | m_IslandSolverBodiesPerJob: 50
40 | m_IslandSolverContactsPerJob: 50
41 | m_AutoSimulation: 1
42 | m_QueriesHitTriggers: 1
43 | m_QueriesStartInColliders: 1
44 | m_CallbacksOnDisable: 1
45 | m_ReuseCollisionCallbacks: 1
46 | m_AutoSyncTransforms: 0
47 | m_AlwaysShowColliders: 0
48 | m_ShowColliderSleep: 1
49 | m_ShowColliderContacts: 0
50 | m_ShowColliderAABB: 0
51 | m_ContactArrowScale: 0.2
52 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412}
53 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432}
54 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745}
55 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804}
56 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
57 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/Assets/Scripts/EditorSetup.cs:
--------------------------------------------------------------------------------
1 | //#define LOCAL_DEV
2 |
3 | #if UNITY_EDITOR
4 | using System.Collections;
5 | using System.Collections.Generic;
6 | using UnityEngine;
7 | using UnityEditor;
8 | using System.Linq;
9 | using UnityEditor.SceneManagement;
10 | using System.IO;
11 | using System.Reflection;
12 | using UnityEngine.SceneManagement;
13 |
14 | [InitializeOnLoad]
15 | public class SetSceneAndDisableTools
16 | {
17 | static bool _sceneLoaded;
18 | static bool _tryingToPlay;
19 |
20 | static SetSceneAndDisableTools()
21 | {
22 | #if !LOCAL_DEV
23 | EditorApplication.update += WaitForSceneAndPlay;
24 | EditorApplication.update += ForceGizmo;
25 | #endif
26 | }
27 |
28 | static void WaitForSceneAndPlay()
29 | {
30 | if (EditorApplication.isPlayingOrWillChangePlaymode)
31 | return;
32 |
33 | if (!_sceneLoaded)
34 | {
35 | var activeScene = SceneManager.GetActiveScene();
36 | if (activeScene == null || activeScene.path != "Assets/Scene.unity")
37 | {
38 | EditorSceneManager.OpenScene("Assets/Scene.unity");
39 | return; // wait for next update to continue
40 | }
41 | _sceneLoaded = true;
42 | }
43 |
44 | if (!_tryingToPlay)
45 | {
46 | _tryingToPlay = true;
47 | EditorApplication.EnterPlaymode();
48 | }
49 | }
50 |
51 | static void ForceGizmo()
52 | {
53 | if (Tools.current != Tool.Move)
54 | Tools.current = Tool.Move;
55 | }
56 | }
57 |
58 | #if !LOCAL_DEV
59 | [InitializeOnLoad]
60 | public static class CloseAllExceptSceneView
61 | {
62 | static CloseAllExceptSceneView()
63 | {
64 | EditorApplication.delayCall += () =>
65 | {
66 | foreach (var window in Resources.FindObjectsOfTypeAll())
67 | {
68 | if (!(window is SceneView))
69 | window.Close();
70 | }
71 |
72 | var sceneView = SceneView.lastActiveSceneView;
73 | if (sceneView != null)
74 | {
75 | var maximizeMethod = typeof(EditorWindow).GetMethod("Maximize", BindingFlags.NonPublic | BindingFlags.Instance);
76 | maximizeMethod?.Invoke(sceneView, new object[] { true });
77 |
78 | sceneView.sceneLighting = false;
79 | sceneView.Repaint();
80 | }
81 | };
82 | }
83 | }
84 | #endif
85 | #endif
--------------------------------------------------------------------------------
/CathodeEditorUnity/ProjectSettings/GraphicsSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!30 &1
4 | GraphicsSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 15
7 | m_Deferred:
8 | m_Mode: 1
9 | m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0}
10 | m_DeferredReflections:
11 | m_Mode: 1
12 | m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0}
13 | m_ScreenSpaceShadows:
14 | m_Mode: 1
15 | m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0}
16 | m_DepthNormals:
17 | m_Mode: 1
18 | m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0}
19 | m_MotionVectors:
20 | m_Mode: 1
21 | m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0}
22 | m_LightHalo:
23 | m_Mode: 1
24 | m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0}
25 | m_LensFlare:
26 | m_Mode: 1
27 | m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0}
28 | m_VideoShadersIncludeMode: 2
29 | m_AlwaysIncludedShaders:
30 | - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0}
31 | - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0}
32 | - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0}
33 | - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0}
34 | - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0}
35 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0}
36 | - {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
37 | m_PreloadedShaders: []
38 | m_PreloadShadersBatchTimeLimit: -1
39 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000,
40 | type: 0}
41 | m_CustomRenderPipeline: {fileID: 0}
42 | m_TransparencySortMode: 0
43 | m_TransparencySortAxis: {x: 0, y: 0, z: 1}
44 | m_DefaultRenderingPath: 1
45 | m_DefaultMobileRenderingPath: 1
46 | m_TierSettings: []
47 | m_LightmapStripping: 0
48 | m_FogStripping: 0
49 | m_InstancingStripping: 0
50 | m_BrgStripping: 0
51 | m_LightmapKeepPlain: 1
52 | m_LightmapKeepDirCombined: 1
53 | m_LightmapKeepDynamicPlain: 1
54 | m_LightmapKeepDynamicDirCombined: 1
55 | m_LightmapKeepShadowMask: 1
56 | m_LightmapKeepSubtractive: 1
57 | m_FogKeepLinear: 1
58 | m_FogKeepExp: 1
59 | m_FogKeepExp2: 1
60 | m_AlbedoSwatchInfos: []
61 | m_LightsUseLinearIntensity: 0
62 | m_LightsUseColorTemperature: 0
63 | m_DefaultRenderingLayerMask: 1
64 | m_LogWhenShaderIsCompiled: 0
65 | m_SRPDefaultSettings: {}
66 | m_LightProbeOutsideHullStrategy: 0
67 | m_CameraRelativeLightCulling: 0
68 | m_CameraRelativeShadowCulling: 0
69 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/Assets/Black Sky.mat:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!21 &2100000
4 | Material:
5 | serializedVersion: 8
6 | m_ObjectHideFlags: 0
7 | m_CorrespondingSourceObject: {fileID: 0}
8 | m_PrefabInstance: {fileID: 0}
9 | m_PrefabAsset: {fileID: 0}
10 | m_Name: Black Sky
11 | m_Shader: {fileID: 106, guid: 0000000000000000f000000000000000, type: 0}
12 | m_Parent: {fileID: 0}
13 | m_ModifiedSerializedProperties: 0
14 | m_ValidKeywords:
15 | - _SUNDISK_NONE
16 | m_InvalidKeywords: []
17 | m_LightmapFlags: 4
18 | m_EnableInstancingVariants: 0
19 | m_DoubleSidedGI: 0
20 | m_CustomRenderQueue: -1
21 | stringTagMap: {}
22 | disabledShaderPasses: []
23 | m_LockedProperties:
24 | m_SavedProperties:
25 | serializedVersion: 3
26 | m_TexEnvs:
27 | - _BackTex:
28 | m_Texture: {fileID: 0}
29 | m_Scale: {x: 1, y: 1}
30 | m_Offset: {x: 0, y: 0}
31 | - _BumpMap:
32 | m_Texture: {fileID: 0}
33 | m_Scale: {x: 1, y: 1}
34 | m_Offset: {x: 0, y: 0}
35 | - _DetailAlbedoMap:
36 | m_Texture: {fileID: 0}
37 | m_Scale: {x: 1, y: 1}
38 | m_Offset: {x: 0, y: 0}
39 | - _DetailMask:
40 | m_Texture: {fileID: 0}
41 | m_Scale: {x: 1, y: 1}
42 | m_Offset: {x: 0, y: 0}
43 | - _DetailNormalMap:
44 | m_Texture: {fileID: 0}
45 | m_Scale: {x: 1, y: 1}
46 | m_Offset: {x: 0, y: 0}
47 | - _DownTex:
48 | m_Texture: {fileID: 0}
49 | m_Scale: {x: 1, y: 1}
50 | m_Offset: {x: 0, y: 0}
51 | - _EmissionMap:
52 | m_Texture: {fileID: 0}
53 | m_Scale: {x: 1, y: 1}
54 | m_Offset: {x: 0, y: 0}
55 | - _FrontTex:
56 | m_Texture: {fileID: 0}
57 | m_Scale: {x: 1, y: 1}
58 | m_Offset: {x: 0, y: 0}
59 | - _LeftTex:
60 | m_Texture: {fileID: 0}
61 | m_Scale: {x: 1, y: 1}
62 | m_Offset: {x: 0, y: 0}
63 | - _MainTex:
64 | m_Texture: {fileID: 0}
65 | m_Scale: {x: 1, y: 1}
66 | m_Offset: {x: 0, y: 0}
67 | - _MetallicGlossMap:
68 | m_Texture: {fileID: 0}
69 | m_Scale: {x: 1, y: 1}
70 | m_Offset: {x: 0, y: 0}
71 | - _OcclusionMap:
72 | m_Texture: {fileID: 0}
73 | m_Scale: {x: 1, y: 1}
74 | m_Offset: {x: 0, y: 0}
75 | - _ParallaxMap:
76 | m_Texture: {fileID: 0}
77 | m_Scale: {x: 1, y: 1}
78 | m_Offset: {x: 0, y: 0}
79 | - _RightTex:
80 | m_Texture: {fileID: 0}
81 | m_Scale: {x: 1, y: 1}
82 | m_Offset: {x: 0, y: 0}
83 | - _UpTex:
84 | m_Texture: {fileID: 0}
85 | m_Scale: {x: 1, y: 1}
86 | m_Offset: {x: 0, y: 0}
87 | m_Ints: []
88 | m_Floats:
89 | - _AtmosphereThickness: 1
90 | - _BumpScale: 1
91 | - _Cutoff: 0.5
92 | - _DetailNormalMapScale: 1
93 | - _DstBlend: 0
94 | - _Exposure: 0
95 | - _GlossMapScale: 1
96 | - _Glossiness: 0.5
97 | - _GlossyReflections: 1
98 | - _Metallic: 0
99 | - _Mode: 0
100 | - _OcclusionStrength: 1
101 | - _Parallax: 0.02
102 | - _SmoothnessTextureChannel: 0
103 | - _SpecularHighlights: 1
104 | - _SrcBlend: 1
105 | - _SunDisk: 0
106 | - _SunSize: 0.04
107 | - _SunSizeConvergence: 5
108 | - _UVSec: 0
109 | - _ZWrite: 1
110 | m_Colors:
111 | - _Color: {r: 1, g: 1, b: 1, a: 1}
112 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
113 | - _GroundColor: {r: 0, g: 0, b: 0, a: 1}
114 | - _SkyTint: {r: 0, g: 0, b: 0, a: 1}
115 | m_BuildTextureStacks: []
116 | m_AllowLocking: 1
117 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/ProjectSettings/SceneTemplateSettings.json:
--------------------------------------------------------------------------------
1 | {
2 | "templatePinStates": [],
3 | "dependencyTypeInfos": [
4 | {
5 | "userAdded": false,
6 | "type": "UnityEngine.AnimationClip",
7 | "ignore": false,
8 | "defaultInstantiationMode": 0,
9 | "supportsModification": true
10 | },
11 | {
12 | "userAdded": false,
13 | "type": "UnityEditor.Animations.AnimatorController",
14 | "ignore": false,
15 | "defaultInstantiationMode": 0,
16 | "supportsModification": true
17 | },
18 | {
19 | "userAdded": false,
20 | "type": "UnityEngine.AnimatorOverrideController",
21 | "ignore": false,
22 | "defaultInstantiationMode": 0,
23 | "supportsModification": true
24 | },
25 | {
26 | "userAdded": false,
27 | "type": "UnityEditor.Audio.AudioMixerController",
28 | "ignore": false,
29 | "defaultInstantiationMode": 0,
30 | "supportsModification": true
31 | },
32 | {
33 | "userAdded": false,
34 | "type": "UnityEngine.ComputeShader",
35 | "ignore": true,
36 | "defaultInstantiationMode": 1,
37 | "supportsModification": true
38 | },
39 | {
40 | "userAdded": false,
41 | "type": "UnityEngine.Cubemap",
42 | "ignore": false,
43 | "defaultInstantiationMode": 0,
44 | "supportsModification": true
45 | },
46 | {
47 | "userAdded": false,
48 | "type": "UnityEngine.GameObject",
49 | "ignore": false,
50 | "defaultInstantiationMode": 0,
51 | "supportsModification": true
52 | },
53 | {
54 | "userAdded": false,
55 | "type": "UnityEditor.LightingDataAsset",
56 | "ignore": false,
57 | "defaultInstantiationMode": 0,
58 | "supportsModification": false
59 | },
60 | {
61 | "userAdded": false,
62 | "type": "UnityEngine.LightingSettings",
63 | "ignore": false,
64 | "defaultInstantiationMode": 0,
65 | "supportsModification": true
66 | },
67 | {
68 | "userAdded": false,
69 | "type": "UnityEngine.Material",
70 | "ignore": false,
71 | "defaultInstantiationMode": 0,
72 | "supportsModification": true
73 | },
74 | {
75 | "userAdded": false,
76 | "type": "UnityEditor.MonoScript",
77 | "ignore": true,
78 | "defaultInstantiationMode": 1,
79 | "supportsModification": true
80 | },
81 | {
82 | "userAdded": false,
83 | "type": "UnityEngine.PhysicMaterial",
84 | "ignore": false,
85 | "defaultInstantiationMode": 0,
86 | "supportsModification": true
87 | },
88 | {
89 | "userAdded": false,
90 | "type": "UnityEngine.PhysicsMaterial2D",
91 | "ignore": false,
92 | "defaultInstantiationMode": 0,
93 | "supportsModification": true
94 | },
95 | {
96 | "userAdded": false,
97 | "type": "UnityEngine.Rendering.PostProcessing.PostProcessProfile",
98 | "ignore": false,
99 | "defaultInstantiationMode": 0,
100 | "supportsModification": true
101 | },
102 | {
103 | "userAdded": false,
104 | "type": "UnityEngine.Rendering.PostProcessing.PostProcessResources",
105 | "ignore": false,
106 | "defaultInstantiationMode": 0,
107 | "supportsModification": true
108 | },
109 | {
110 | "userAdded": false,
111 | "type": "UnityEngine.Rendering.VolumeProfile",
112 | "ignore": false,
113 | "defaultInstantiationMode": 0,
114 | "supportsModification": true
115 | },
116 | {
117 | "userAdded": false,
118 | "type": "UnityEditor.SceneAsset",
119 | "ignore": false,
120 | "defaultInstantiationMode": 0,
121 | "supportsModification": false
122 | },
123 | {
124 | "userAdded": false,
125 | "type": "UnityEngine.Shader",
126 | "ignore": true,
127 | "defaultInstantiationMode": 1,
128 | "supportsModification": true
129 | },
130 | {
131 | "userAdded": false,
132 | "type": "UnityEngine.ShaderVariantCollection",
133 | "ignore": true,
134 | "defaultInstantiationMode": 1,
135 | "supportsModification": true
136 | },
137 | {
138 | "userAdded": false,
139 | "type": "UnityEngine.Texture",
140 | "ignore": false,
141 | "defaultInstantiationMode": 0,
142 | "supportsModification": true
143 | },
144 | {
145 | "userAdded": false,
146 | "type": "UnityEngine.Texture2D",
147 | "ignore": false,
148 | "defaultInstantiationMode": 0,
149 | "supportsModification": true
150 | },
151 | {
152 | "userAdded": false,
153 | "type": "UnityEngine.Timeline.TimelineAsset",
154 | "ignore": false,
155 | "defaultInstantiationMode": 0,
156 | "supportsModification": true
157 | }
158 | ],
159 | "defaultDependencyTypeInfo": {
160 | "userAdded": false,
161 | "type": "",
162 | "ignore": false,
163 | "defaultInstantiationMode": 1,
164 | "supportsModification": true
165 | },
166 | "newSceneOverride": 0
167 | }
--------------------------------------------------------------------------------
/CathodeEditorUnity/Assets/Scene.unity:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!29 &1
4 | OcclusionCullingSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | m_OcclusionBakeSettings:
8 | smallestOccluder: 5
9 | smallestHole: 0.25
10 | backfaceThreshold: 100
11 | m_SceneGUID: 00000000000000000000000000000000
12 | m_OcclusionCullingData: {fileID: 0}
13 | --- !u!104 &2
14 | RenderSettings:
15 | m_ObjectHideFlags: 0
16 | serializedVersion: 9
17 | m_Fog: 0
18 | m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
19 | m_FogMode: 3
20 | m_FogDensity: 0.01
21 | m_LinearFogStart: 0
22 | m_LinearFogEnd: 300
23 | m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
24 | m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
25 | m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
26 | m_AmbientIntensity: 1
27 | m_AmbientMode: 0
28 | m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
29 | m_SkyboxMaterial: {fileID: 2100000, guid: e9f719a0e0221754182954253f450a4a, type: 2}
30 | m_HaloStrength: 0.5
31 | m_FlareStrength: 1
32 | m_FlareFadeSpeed: 3
33 | m_HaloTexture: {fileID: 0}
34 | m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
35 | m_DefaultReflectionMode: 0
36 | m_DefaultReflectionResolution: 128
37 | m_ReflectionBounces: 1
38 | m_ReflectionIntensity: 1
39 | m_CustomReflection: {fileID: 0}
40 | m_Sun: {fileID: 0}
41 | m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
42 | m_UseRadianceAmbientProbe: 0
43 | --- !u!157 &3
44 | LightmapSettings:
45 | m_ObjectHideFlags: 0
46 | serializedVersion: 12
47 | m_GIWorkflowMode: 1
48 | m_GISettings:
49 | serializedVersion: 2
50 | m_BounceScale: 1
51 | m_IndirectOutputScale: 1
52 | m_AlbedoBoost: 1
53 | m_EnvironmentLightingMode: 0
54 | m_EnableBakedLightmaps: 1
55 | m_EnableRealtimeLightmaps: 0
56 | m_LightmapEditorSettings:
57 | serializedVersion: 12
58 | m_Resolution: 2
59 | m_BakeResolution: 40
60 | m_AtlasSize: 1024
61 | m_AO: 0
62 | m_AOMaxDistance: 1
63 | m_CompAOExponent: 1
64 | m_CompAOExponentDirect: 0
65 | m_ExtractAmbientOcclusion: 0
66 | m_Padding: 2
67 | m_LightmapParameters: {fileID: 0}
68 | m_LightmapsBakeMode: 1
69 | m_TextureCompression: 1
70 | m_FinalGather: 0
71 | m_FinalGatherFiltering: 1
72 | m_FinalGatherRayCount: 256
73 | m_ReflectionCompression: 2
74 | m_MixedBakeMode: 2
75 | m_BakeBackend: 1
76 | m_PVRSampling: 1
77 | m_PVRDirectSampleCount: 32
78 | m_PVRSampleCount: 500
79 | m_PVRBounces: 2
80 | m_PVREnvironmentSampleCount: 500
81 | m_PVREnvironmentReferencePointCount: 2048
82 | m_PVRFilteringMode: 2
83 | m_PVRDenoiserTypeDirect: 0
84 | m_PVRDenoiserTypeIndirect: 0
85 | m_PVRDenoiserTypeAO: 0
86 | m_PVRFilterTypeDirect: 0
87 | m_PVRFilterTypeIndirect: 0
88 | m_PVRFilterTypeAO: 0
89 | m_PVREnvironmentMIS: 0
90 | m_PVRCulling: 1
91 | m_PVRFilteringGaussRadiusDirect: 1
92 | m_PVRFilteringGaussRadiusIndirect: 5
93 | m_PVRFilteringGaussRadiusAO: 2
94 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5
95 | m_PVRFilteringAtrousPositionSigmaIndirect: 2
96 | m_PVRFilteringAtrousPositionSigmaAO: 1
97 | m_ExportTrainingData: 0
98 | m_TrainingDataDestination: TrainingData
99 | m_LightProbeSampleCountMultiplier: 4
100 | m_LightingDataAsset: {fileID: 0}
101 | m_LightingSettings: {fileID: 4890085278179872738, guid: 047d0fa661c902c4f9da37ac60678f8c,
102 | type: 2}
103 | --- !u!196 &4
104 | NavMeshSettings:
105 | serializedVersion: 2
106 | m_ObjectHideFlags: 0
107 | m_BuildSettings:
108 | serializedVersion: 3
109 | agentTypeID: 0
110 | agentRadius: 0.5
111 | agentHeight: 2
112 | agentSlope: 45
113 | agentClimb: 0.4
114 | ledgeDropHeight: 0
115 | maxJumpAcrossDistance: 0
116 | minRegionArea: 2
117 | manualCellSize: 0
118 | cellSize: 0.16666667
119 | manualTileSize: 0
120 | tileSize: 256
121 | buildHeightMesh: 0
122 | maxJobWorkers: 0
123 | preserveTilesOutsideBounds: 0
124 | debug:
125 | m_Flags: 0
126 | m_NavMeshData: {fileID: 0}
127 | --- !u!1 &255634070
128 | GameObject:
129 | m_ObjectHideFlags: 0
130 | m_CorrespondingSourceObject: {fileID: 0}
131 | m_PrefabInstance: {fileID: 0}
132 | m_PrefabAsset: {fileID: 0}
133 | serializedVersion: 6
134 | m_Component:
135 | - component: {fileID: 255634072}
136 | - component: {fileID: 255634073}
137 | - component: {fileID: 255634074}
138 | m_Layer: 0
139 | m_Name: Level Loader
140 | m_TagString: Untagged
141 | m_Icon: {fileID: 0}
142 | m_NavMeshLayer: 0
143 | m_StaticEditorFlags: 0
144 | m_IsActive: 1
145 | --- !u!4 &255634072
146 | Transform:
147 | m_ObjectHideFlags: 0
148 | m_CorrespondingSourceObject: {fileID: 0}
149 | m_PrefabInstance: {fileID: 0}
150 | m_PrefabAsset: {fileID: 0}
151 | m_GameObject: {fileID: 255634070}
152 | serializedVersion: 2
153 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
154 | m_LocalPosition: {x: 0, y: 0, z: 0}
155 | m_LocalScale: {x: 1, y: 1, z: 1}
156 | m_ConstrainProportionsScale: 0
157 | m_Children: []
158 | m_Father: {fileID: 0}
159 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
160 | --- !u!114 &255634073
161 | MonoBehaviour:
162 | m_ObjectHideFlags: 0
163 | m_CorrespondingSourceObject: {fileID: 0}
164 | m_PrefabInstance: {fileID: 0}
165 | m_PrefabAsset: {fileID: 0}
166 | m_GameObject: {fileID: 255634070}
167 | m_Enabled: 1
168 | m_EditorHideFlags: 0
169 | m_Script: {fileID: 11500000, guid: 96ee70b3d02f2e6468af5a5770ee5b2d, type: 3}
170 | m_Name:
171 | m_EditorClassIdentifier:
172 | --- !u!114 &255634074
173 | MonoBehaviour:
174 | m_ObjectHideFlags: 0
175 | m_CorrespondingSourceObject: {fileID: 0}
176 | m_PrefabInstance: {fileID: 0}
177 | m_PrefabAsset: {fileID: 0}
178 | m_GameObject: {fileID: 255634070}
179 | m_Enabled: 1
180 | m_EditorHideFlags: 0
181 | m_Script: {fileID: 11500000, guid: d4fc09d870dd2b848898660f132d23fa, type: 3}
182 | m_Name:
183 | m_EditorClassIdentifier:
184 | --- !u!1660057539 &9223372036854775807
185 | SceneRoots:
186 | m_ObjectHideFlags: 0
187 | m_Roots:
188 | - {fileID: 255634072}
189 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/ProjectSettings/InputManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!13 &1
4 | InputManager:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | m_Axes:
8 | - serializedVersion: 3
9 | m_Name: Horizontal
10 | descriptiveName:
11 | descriptiveNegativeName:
12 | negativeButton: left
13 | positiveButton: right
14 | altNegativeButton: a
15 | altPositiveButton: d
16 | gravity: 3
17 | dead: 0.001
18 | sensitivity: 3
19 | snap: 1
20 | invert: 0
21 | type: 0
22 | axis: 0
23 | joyNum: 0
24 | - serializedVersion: 3
25 | m_Name: Vertical
26 | descriptiveName:
27 | descriptiveNegativeName:
28 | negativeButton: down
29 | positiveButton: up
30 | altNegativeButton: s
31 | altPositiveButton: w
32 | gravity: 3
33 | dead: 0.001
34 | sensitivity: 3
35 | snap: 1
36 | invert: 0
37 | type: 0
38 | axis: 0
39 | joyNum: 0
40 | - serializedVersion: 3
41 | m_Name: Fire1
42 | descriptiveName:
43 | descriptiveNegativeName:
44 | negativeButton:
45 | positiveButton: left ctrl
46 | altNegativeButton:
47 | altPositiveButton: mouse 0
48 | gravity: 1000
49 | dead: 0.001
50 | sensitivity: 1000
51 | snap: 0
52 | invert: 0
53 | type: 0
54 | axis: 0
55 | joyNum: 0
56 | - serializedVersion: 3
57 | m_Name: Fire2
58 | descriptiveName:
59 | descriptiveNegativeName:
60 | negativeButton:
61 | positiveButton: left alt
62 | altNegativeButton:
63 | altPositiveButton: mouse 1
64 | gravity: 1000
65 | dead: 0.001
66 | sensitivity: 1000
67 | snap: 0
68 | invert: 0
69 | type: 0
70 | axis: 0
71 | joyNum: 0
72 | - serializedVersion: 3
73 | m_Name: Fire3
74 | descriptiveName:
75 | descriptiveNegativeName:
76 | negativeButton:
77 | positiveButton: left shift
78 | altNegativeButton:
79 | altPositiveButton: mouse 2
80 | gravity: 1000
81 | dead: 0.001
82 | sensitivity: 1000
83 | snap: 0
84 | invert: 0
85 | type: 0
86 | axis: 0
87 | joyNum: 0
88 | - serializedVersion: 3
89 | m_Name: Jump
90 | descriptiveName:
91 | descriptiveNegativeName:
92 | negativeButton:
93 | positiveButton: space
94 | altNegativeButton:
95 | altPositiveButton:
96 | gravity: 1000
97 | dead: 0.001
98 | sensitivity: 1000
99 | snap: 0
100 | invert: 0
101 | type: 0
102 | axis: 0
103 | joyNum: 0
104 | - serializedVersion: 3
105 | m_Name: Mouse X
106 | descriptiveName:
107 | descriptiveNegativeName:
108 | negativeButton:
109 | positiveButton:
110 | altNegativeButton:
111 | altPositiveButton:
112 | gravity: 0
113 | dead: 0
114 | sensitivity: 0.1
115 | snap: 0
116 | invert: 0
117 | type: 1
118 | axis: 0
119 | joyNum: 0
120 | - serializedVersion: 3
121 | m_Name: Mouse Y
122 | descriptiveName:
123 | descriptiveNegativeName:
124 | negativeButton:
125 | positiveButton:
126 | altNegativeButton:
127 | altPositiveButton:
128 | gravity: 0
129 | dead: 0
130 | sensitivity: 0.1
131 | snap: 0
132 | invert: 0
133 | type: 1
134 | axis: 1
135 | joyNum: 0
136 | - serializedVersion: 3
137 | m_Name: Mouse ScrollWheel
138 | descriptiveName:
139 | descriptiveNegativeName:
140 | negativeButton:
141 | positiveButton:
142 | altNegativeButton:
143 | altPositiveButton:
144 | gravity: 0
145 | dead: 0
146 | sensitivity: 0.1
147 | snap: 0
148 | invert: 0
149 | type: 1
150 | axis: 2
151 | joyNum: 0
152 | - serializedVersion: 3
153 | m_Name: Horizontal
154 | descriptiveName:
155 | descriptiveNegativeName:
156 | negativeButton:
157 | positiveButton:
158 | altNegativeButton:
159 | altPositiveButton:
160 | gravity: 0
161 | dead: 0.19
162 | sensitivity: 1
163 | snap: 0
164 | invert: 0
165 | type: 2
166 | axis: 0
167 | joyNum: 0
168 | - serializedVersion: 3
169 | m_Name: Vertical
170 | descriptiveName:
171 | descriptiveNegativeName:
172 | negativeButton:
173 | positiveButton:
174 | altNegativeButton:
175 | altPositiveButton:
176 | gravity: 0
177 | dead: 0.19
178 | sensitivity: 1
179 | snap: 0
180 | invert: 1
181 | type: 2
182 | axis: 1
183 | joyNum: 0
184 | - serializedVersion: 3
185 | m_Name: Fire1
186 | descriptiveName:
187 | descriptiveNegativeName:
188 | negativeButton:
189 | positiveButton: joystick button 0
190 | altNegativeButton:
191 | altPositiveButton:
192 | gravity: 1000
193 | dead: 0.001
194 | sensitivity: 1000
195 | snap: 0
196 | invert: 0
197 | type: 0
198 | axis: 0
199 | joyNum: 0
200 | - serializedVersion: 3
201 | m_Name: Fire2
202 | descriptiveName:
203 | descriptiveNegativeName:
204 | negativeButton:
205 | positiveButton: joystick button 1
206 | altNegativeButton:
207 | altPositiveButton:
208 | gravity: 1000
209 | dead: 0.001
210 | sensitivity: 1000
211 | snap: 0
212 | invert: 0
213 | type: 0
214 | axis: 0
215 | joyNum: 0
216 | - serializedVersion: 3
217 | m_Name: Fire3
218 | descriptiveName:
219 | descriptiveNegativeName:
220 | negativeButton:
221 | positiveButton: joystick button 2
222 | altNegativeButton:
223 | altPositiveButton:
224 | gravity: 1000
225 | dead: 0.001
226 | sensitivity: 1000
227 | snap: 0
228 | invert: 0
229 | type: 0
230 | axis: 0
231 | joyNum: 0
232 | - serializedVersion: 3
233 | m_Name: Jump
234 | descriptiveName:
235 | descriptiveNegativeName:
236 | negativeButton:
237 | positiveButton: joystick button 3
238 | altNegativeButton:
239 | altPositiveButton:
240 | gravity: 1000
241 | dead: 0.001
242 | sensitivity: 1000
243 | snap: 0
244 | invert: 0
245 | type: 0
246 | axis: 0
247 | joyNum: 0
248 | - serializedVersion: 3
249 | m_Name: Submit
250 | descriptiveName:
251 | descriptiveNegativeName:
252 | negativeButton:
253 | positiveButton: return
254 | altNegativeButton:
255 | altPositiveButton: joystick button 0
256 | gravity: 1000
257 | dead: 0.001
258 | sensitivity: 1000
259 | snap: 0
260 | invert: 0
261 | type: 0
262 | axis: 0
263 | joyNum: 0
264 | - serializedVersion: 3
265 | m_Name: Submit
266 | descriptiveName:
267 | descriptiveNegativeName:
268 | negativeButton:
269 | positiveButton: enter
270 | altNegativeButton:
271 | altPositiveButton: space
272 | gravity: 1000
273 | dead: 0.001
274 | sensitivity: 1000
275 | snap: 0
276 | invert: 0
277 | type: 0
278 | axis: 0
279 | joyNum: 0
280 | - serializedVersion: 3
281 | m_Name: Cancel
282 | descriptiveName:
283 | descriptiveNegativeName:
284 | negativeButton:
285 | positiveButton: escape
286 | altNegativeButton:
287 | altPositiveButton: joystick button 1
288 | gravity: 1000
289 | dead: 0.001
290 | sensitivity: 1000
291 | snap: 0
292 | invert: 0
293 | type: 0
294 | axis: 0
295 | joyNum: 0
296 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/Assets/Scripts/CathodeLibExtensions.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using static CATHODE.Models;
4 | using CathodeLib;
5 | using UnityEngine;
6 | using System.IO;
7 |
8 | public static class CathodeLibExtensions
9 | {
10 | /* Convert a CS2 submesh to Unity Mesh */
11 | public static Mesh ToMesh(this CS2.Component.LOD.Submesh submesh)
12 | {
13 | Mesh mesh = new Mesh();
14 |
15 | List indices = new List();
16 | List vertices = new List();
17 | List normals = new List();
18 | List tangents = new List();
19 | List uv0 = new List();
20 | List uv1 = new List();
21 | List uv2 = new List();
22 | List uv3 = new List();
23 | List uv7 = new List();
24 |
25 | //TODO: implement skeleton lookup for the indexes
26 | List boneIndex = new List(); //The indexes of 4 bones that affect each vertex
27 | List boneWeight = new List(); //The weights for each bone
28 |
29 | if (submesh == null || submesh.content.Length == 0)
30 | return mesh;
31 |
32 | using (BinaryReader reader = new BinaryReader(new MemoryStream(submesh.content)))
33 | {
34 | for (int i = 0; i < submesh.VertexFormat.Elements.Count; ++i)
35 | {
36 | if (i == submesh.VertexFormat.Elements.Count - 1)
37 | {
38 | //TODO: should probably properly verify VariableType here
39 | // if (submesh.VertexFormat.Elements[i].Count != 1 || submesh.VertexFormat.Elements[i][0].VariableType != VBFE_InputType.INDICIES_U16)
40 | // throw new Exception("unexpected format");
41 |
42 | for (int x = 0; x < submesh.IndexCount; x++)
43 | indices.Add(reader.ReadUInt16());
44 |
45 | continue;
46 | }
47 |
48 | for (int x = 0; x < submesh.VertexCount; ++x)
49 | {
50 | for (int y = 0; y < submesh.VertexFormat.Elements[i].Count; ++y)
51 | {
52 | AlienVBF.Element format = submesh.VertexFormat.Elements[i][y];
53 | switch (format.VariableType)
54 | {
55 | case VBFE_InputType.VECTOR3:
56 | {
57 | Vector3 v = new Vector3(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle());
58 | switch (format.ShaderSlot)
59 | {
60 | case VBFE_InputSlot.NORMAL:
61 | normals.Add(v);
62 | break;
63 | case VBFE_InputSlot.TANGENT:
64 | tangents.Add(new Vector4((float)v.x, (float)v.y, (float)v.z, 0));
65 | break;
66 | case VBFE_InputSlot.UV:
67 | //TODO: 3D UVW
68 | break;
69 | };
70 | break;
71 | }
72 | case VBFE_InputType.INT32:
73 | {
74 | int v = reader.ReadInt32();
75 | switch (format.ShaderSlot)
76 | {
77 | case VBFE_InputSlot.COLOUR:
78 | //??
79 | break;
80 | }
81 | break;
82 | }
83 | case VBFE_InputType.VECTOR4_BYTE:
84 | {
85 | Vector4 v = new Vector4(reader.ReadByte(), reader.ReadByte(), reader.ReadByte(), reader.ReadByte());
86 | switch (format.ShaderSlot)
87 | {
88 | case VBFE_InputSlot.BONE_INDICES:
89 | boneIndex.Add(v);
90 | break;
91 | }
92 | break;
93 | }
94 | case VBFE_InputType.VECTOR4_BYTE_DIV255:
95 | {
96 | Vector4 v = new Vector4(reader.ReadByte(), reader.ReadByte(), reader.ReadByte(), reader.ReadByte());
97 | v /= 255.0f;
98 | switch (format.ShaderSlot)
99 | {
100 | case VBFE_InputSlot.BONE_WEIGHTS:
101 | boneWeight.Add(v / (v.x + v.y + v.z + v.w));
102 | break;
103 | case VBFE_InputSlot.UV:
104 | uv2.Add(new Vector2(v.x, v.y));
105 | uv3.Add(new Vector2(v.z, v.w));
106 | break;
107 | }
108 | break;
109 | }
110 | case VBFE_InputType.VECTOR2_INT16_DIV2048:
111 | {
112 | Vector2 v = new Vector2(reader.ReadInt16() / 2048.0f, reader.ReadInt16() / 2048.0f);
113 | switch (format.ShaderSlot)
114 | {
115 | case VBFE_InputSlot.UV:
116 | if (format.VariantIndex == 0) uv0.Add(v);
117 | else if (format.VariantIndex == 1)
118 | {
119 | // TODO: We can figure this out based on AlienVBFE.
120 | //Material->Material.Flags |= Material_HasTexCoord1;
121 | uv1.Add(v);
122 | }
123 | else if (format.VariantIndex == 2) uv2.Add(v);
124 | else if (format.VariantIndex == 3) uv3.Add(v);
125 | else if (format.VariantIndex == 7) uv7.Add(v);
126 | break;
127 | }
128 | break;
129 | }
130 | case VBFE_InputType.VECTOR4_INT16_DIVMAX:
131 | {
132 | Vector4 v = new Vector4(reader.ReadInt16(), reader.ReadInt16(), reader.ReadInt16(), reader.ReadInt16());
133 | v /= (float)Int16.MaxValue;
134 | if (v.w != 0 && v.w != -1 && v.w != 1) throw new Exception("Unexpected vert W");
135 | v *= submesh.ScaleFactor; //Account for scale
136 | switch (format.ShaderSlot)
137 | {
138 | case VBFE_InputSlot.VERTEX:
139 | vertices.Add(new Vector3(v.x, v.y, v.z));
140 | break;
141 | }
142 | break;
143 | }
144 | case VBFE_InputType.VECTOR4_BYTE_NORM:
145 | {
146 | Vector4 v = new Vector4(reader.ReadByte(), reader.ReadByte(), reader.ReadByte(), reader.ReadByte());
147 | v /= (float)byte.MaxValue - 0.5f;
148 | v = Vector4.Normalize(v);
149 | switch (format.ShaderSlot)
150 | {
151 | case VBFE_InputSlot.NORMAL:
152 | normals.Add(new Vector3(v.x, v.y, v.z));
153 | break;
154 | case VBFE_InputSlot.TANGENT:
155 | break;
156 | case VBFE_InputSlot.BITANGENT:
157 | break;
158 | }
159 | break;
160 | }
161 | }
162 | }
163 | }
164 | Utilities.Align(reader, 16);
165 | }
166 | }
167 |
168 | if (vertices.Count == 0) return mesh;
169 |
170 | mesh.SetVertices(vertices);
171 | mesh.SetNormals(normals);
172 | mesh.SetIndices(indices, MeshTopology.Triangles, 0); //0??
173 | mesh.SetTangents(tangents);
174 | mesh.SetUVs(0, uv0);
175 | mesh.SetUVs(1, uv1);
176 | mesh.SetUVs(2, uv2);
177 | mesh.SetUVs(3, uv3);
178 | mesh.SetUVs(7, uv7);
179 | //mesh.SetBoneWeights(InBoneWeights.ToArray());
180 | mesh.RecalculateBounds();
181 | mesh.RecalculateNormals();
182 | mesh.RecalculateTangents();
183 |
184 | return mesh;
185 | }
186 | }
--------------------------------------------------------------------------------
/CathodeEditorUnity/Packages/packages-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "dependencies": {
3 | "com.unity.ai.navigation": {
4 | "version": "1.1.4",
5 | "depth": 0,
6 | "source": "registry",
7 | "dependencies": {
8 | "com.unity.modules.ai": "1.0.0"
9 | },
10 | "url": "https://packages.unity.com"
11 | },
12 | "com.unity.collab-proxy": {
13 | "version": "2.0.7",
14 | "depth": 0,
15 | "source": "registry",
16 | "dependencies": {},
17 | "url": "https://packages.unity.com"
18 | },
19 | "com.unity.ext.nunit": {
20 | "version": "1.0.6",
21 | "depth": 1,
22 | "source": "registry",
23 | "dependencies": {},
24 | "url": "https://packages.unity.com"
25 | },
26 | "com.unity.ide.rider": {
27 | "version": "3.0.24",
28 | "depth": 0,
29 | "source": "registry",
30 | "dependencies": {
31 | "com.unity.ext.nunit": "1.0.6"
32 | },
33 | "url": "https://packages.unity.com"
34 | },
35 | "com.unity.ide.visualstudio": {
36 | "version": "2.0.18",
37 | "depth": 0,
38 | "source": "registry",
39 | "dependencies": {
40 | "com.unity.test-framework": "1.1.9"
41 | },
42 | "url": "https://packages.unity.com"
43 | },
44 | "com.unity.ide.vscode": {
45 | "version": "1.2.5",
46 | "depth": 0,
47 | "source": "registry",
48 | "dependencies": {},
49 | "url": "https://packages.unity.com"
50 | },
51 | "com.unity.sysroot": {
52 | "version": "2.0.5",
53 | "depth": 1,
54 | "source": "registry",
55 | "dependencies": {},
56 | "url": "https://packages.unity.com"
57 | },
58 | "com.unity.sysroot.linux-x86_64": {
59 | "version": "2.0.4",
60 | "depth": 1,
61 | "source": "registry",
62 | "dependencies": {
63 | "com.unity.sysroot": "2.0.5"
64 | },
65 | "url": "https://packages.unity.com"
66 | },
67 | "com.unity.test-framework": {
68 | "version": "1.1.33",
69 | "depth": 0,
70 | "source": "registry",
71 | "dependencies": {
72 | "com.unity.ext.nunit": "1.0.6",
73 | "com.unity.modules.imgui": "1.0.0",
74 | "com.unity.modules.jsonserialize": "1.0.0"
75 | },
76 | "url": "https://packages.unity.com"
77 | },
78 | "com.unity.timeline": {
79 | "version": "1.7.5",
80 | "depth": 0,
81 | "source": "registry",
82 | "dependencies": {
83 | "com.unity.modules.director": "1.0.0",
84 | "com.unity.modules.animation": "1.0.0",
85 | "com.unity.modules.audio": "1.0.0",
86 | "com.unity.modules.particlesystem": "1.0.0"
87 | },
88 | "url": "https://packages.unity.com"
89 | },
90 | "com.unity.toolchain.win-x86_64-linux-x86_64": {
91 | "version": "2.0.4",
92 | "depth": 0,
93 | "source": "registry",
94 | "dependencies": {
95 | "com.unity.sysroot": "2.0.5",
96 | "com.unity.sysroot.linux-x86_64": "2.0.4"
97 | },
98 | "url": "https://packages.unity.com"
99 | },
100 | "com.unity.ugui": {
101 | "version": "1.0.0",
102 | "depth": 0,
103 | "source": "builtin",
104 | "dependencies": {
105 | "com.unity.modules.ui": "1.0.0",
106 | "com.unity.modules.imgui": "1.0.0"
107 | }
108 | },
109 | "com.unity.modules.ai": {
110 | "version": "1.0.0",
111 | "depth": 0,
112 | "source": "builtin",
113 | "dependencies": {}
114 | },
115 | "com.unity.modules.androidjni": {
116 | "version": "1.0.0",
117 | "depth": 0,
118 | "source": "builtin",
119 | "dependencies": {}
120 | },
121 | "com.unity.modules.animation": {
122 | "version": "1.0.0",
123 | "depth": 0,
124 | "source": "builtin",
125 | "dependencies": {}
126 | },
127 | "com.unity.modules.assetbundle": {
128 | "version": "1.0.0",
129 | "depth": 0,
130 | "source": "builtin",
131 | "dependencies": {}
132 | },
133 | "com.unity.modules.audio": {
134 | "version": "1.0.0",
135 | "depth": 0,
136 | "source": "builtin",
137 | "dependencies": {}
138 | },
139 | "com.unity.modules.cloth": {
140 | "version": "1.0.0",
141 | "depth": 0,
142 | "source": "builtin",
143 | "dependencies": {
144 | "com.unity.modules.physics": "1.0.0"
145 | }
146 | },
147 | "com.unity.modules.director": {
148 | "version": "1.0.0",
149 | "depth": 0,
150 | "source": "builtin",
151 | "dependencies": {
152 | "com.unity.modules.audio": "1.0.0",
153 | "com.unity.modules.animation": "1.0.0"
154 | }
155 | },
156 | "com.unity.modules.imageconversion": {
157 | "version": "1.0.0",
158 | "depth": 0,
159 | "source": "builtin",
160 | "dependencies": {}
161 | },
162 | "com.unity.modules.imgui": {
163 | "version": "1.0.0",
164 | "depth": 0,
165 | "source": "builtin",
166 | "dependencies": {}
167 | },
168 | "com.unity.modules.jsonserialize": {
169 | "version": "1.0.0",
170 | "depth": 0,
171 | "source": "builtin",
172 | "dependencies": {}
173 | },
174 | "com.unity.modules.particlesystem": {
175 | "version": "1.0.0",
176 | "depth": 0,
177 | "source": "builtin",
178 | "dependencies": {}
179 | },
180 | "com.unity.modules.physics": {
181 | "version": "1.0.0",
182 | "depth": 0,
183 | "source": "builtin",
184 | "dependencies": {}
185 | },
186 | "com.unity.modules.physics2d": {
187 | "version": "1.0.0",
188 | "depth": 0,
189 | "source": "builtin",
190 | "dependencies": {}
191 | },
192 | "com.unity.modules.screencapture": {
193 | "version": "1.0.0",
194 | "depth": 0,
195 | "source": "builtin",
196 | "dependencies": {
197 | "com.unity.modules.imageconversion": "1.0.0"
198 | }
199 | },
200 | "com.unity.modules.subsystems": {
201 | "version": "1.0.0",
202 | "depth": 1,
203 | "source": "builtin",
204 | "dependencies": {
205 | "com.unity.modules.jsonserialize": "1.0.0"
206 | }
207 | },
208 | "com.unity.modules.terrain": {
209 | "version": "1.0.0",
210 | "depth": 0,
211 | "source": "builtin",
212 | "dependencies": {}
213 | },
214 | "com.unity.modules.terrainphysics": {
215 | "version": "1.0.0",
216 | "depth": 0,
217 | "source": "builtin",
218 | "dependencies": {
219 | "com.unity.modules.physics": "1.0.0",
220 | "com.unity.modules.terrain": "1.0.0"
221 | }
222 | },
223 | "com.unity.modules.tilemap": {
224 | "version": "1.0.0",
225 | "depth": 0,
226 | "source": "builtin",
227 | "dependencies": {
228 | "com.unity.modules.physics2d": "1.0.0"
229 | }
230 | },
231 | "com.unity.modules.ui": {
232 | "version": "1.0.0",
233 | "depth": 0,
234 | "source": "builtin",
235 | "dependencies": {}
236 | },
237 | "com.unity.modules.uielements": {
238 | "version": "1.0.0",
239 | "depth": 0,
240 | "source": "builtin",
241 | "dependencies": {
242 | "com.unity.modules.ui": "1.0.0",
243 | "com.unity.modules.imgui": "1.0.0",
244 | "com.unity.modules.jsonserialize": "1.0.0"
245 | }
246 | },
247 | "com.unity.modules.umbra": {
248 | "version": "1.0.0",
249 | "depth": 0,
250 | "source": "builtin",
251 | "dependencies": {}
252 | },
253 | "com.unity.modules.unityanalytics": {
254 | "version": "1.0.0",
255 | "depth": 0,
256 | "source": "builtin",
257 | "dependencies": {
258 | "com.unity.modules.unitywebrequest": "1.0.0",
259 | "com.unity.modules.jsonserialize": "1.0.0"
260 | }
261 | },
262 | "com.unity.modules.unitywebrequest": {
263 | "version": "1.0.0",
264 | "depth": 0,
265 | "source": "builtin",
266 | "dependencies": {}
267 | },
268 | "com.unity.modules.unitywebrequestassetbundle": {
269 | "version": "1.0.0",
270 | "depth": 0,
271 | "source": "builtin",
272 | "dependencies": {
273 | "com.unity.modules.assetbundle": "1.0.0",
274 | "com.unity.modules.unitywebrequest": "1.0.0"
275 | }
276 | },
277 | "com.unity.modules.unitywebrequestaudio": {
278 | "version": "1.0.0",
279 | "depth": 0,
280 | "source": "builtin",
281 | "dependencies": {
282 | "com.unity.modules.unitywebrequest": "1.0.0",
283 | "com.unity.modules.audio": "1.0.0"
284 | }
285 | },
286 | "com.unity.modules.unitywebrequesttexture": {
287 | "version": "1.0.0",
288 | "depth": 0,
289 | "source": "builtin",
290 | "dependencies": {
291 | "com.unity.modules.unitywebrequest": "1.0.0",
292 | "com.unity.modules.imageconversion": "1.0.0"
293 | }
294 | },
295 | "com.unity.modules.unitywebrequestwww": {
296 | "version": "1.0.0",
297 | "depth": 0,
298 | "source": "builtin",
299 | "dependencies": {
300 | "com.unity.modules.unitywebrequest": "1.0.0",
301 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0",
302 | "com.unity.modules.unitywebrequestaudio": "1.0.0",
303 | "com.unity.modules.audio": "1.0.0",
304 | "com.unity.modules.assetbundle": "1.0.0",
305 | "com.unity.modules.imageconversion": "1.0.0"
306 | }
307 | },
308 | "com.unity.modules.vehicles": {
309 | "version": "1.0.0",
310 | "depth": 0,
311 | "source": "builtin",
312 | "dependencies": {
313 | "com.unity.modules.physics": "1.0.0"
314 | }
315 | },
316 | "com.unity.modules.video": {
317 | "version": "1.0.0",
318 | "depth": 0,
319 | "source": "builtin",
320 | "dependencies": {
321 | "com.unity.modules.audio": "1.0.0",
322 | "com.unity.modules.ui": "1.0.0",
323 | "com.unity.modules.unitywebrequest": "1.0.0"
324 | }
325 | },
326 | "com.unity.modules.vr": {
327 | "version": "1.0.0",
328 | "depth": 0,
329 | "source": "builtin",
330 | "dependencies": {
331 | "com.unity.modules.jsonserialize": "1.0.0",
332 | "com.unity.modules.physics": "1.0.0",
333 | "com.unity.modules.xr": "1.0.0"
334 | }
335 | },
336 | "com.unity.modules.wind": {
337 | "version": "1.0.0",
338 | "depth": 0,
339 | "source": "builtin",
340 | "dependencies": {}
341 | },
342 | "com.unity.modules.xr": {
343 | "version": "1.0.0",
344 | "depth": 0,
345 | "source": "builtin",
346 | "dependencies": {
347 | "com.unity.modules.physics": "1.0.0",
348 | "com.unity.modules.jsonserialize": "1.0.0",
349 | "com.unity.modules.subsystems": "1.0.0"
350 | }
351 | }
352 | }
353 | }
354 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/Assets/Scripts/CommandsEditorConnection.cs:
--------------------------------------------------------------------------------
1 | using Newtonsoft.Json;
2 | using System;
3 | using System.Collections;
4 | using System.Collections.Generic;
5 | using System.Threading;
6 | using UnityEditor;
7 | using UnityEngine;
8 | using WebSocketSharp;
9 | using CATHODE.Scripting;
10 | using System.IO;
11 | using UnityEngine.UIElements;
12 | using System.Linq;
13 | using CATHODE.Scripting.Internal;
14 |
15 | [RequireComponent(typeof(AlienScene))]
16 | public class CommandsEditorConnection : MonoBehaviour
17 | {
18 | private WebSocket _client;
19 | private AlienScene _scene;
20 |
21 | private readonly object _lock = new object();
22 |
23 | private string _levelName = "";
24 |
25 | private string _pathToAI = "";
26 | public string PathToAI => _pathToAI;
27 |
28 | private List _pathComposites;
29 | private List _pathEntities;
30 | private bool _compositeLoaded;
31 | private bool _entitySelected;
32 | private uint _currentComposite;
33 | private uint _currentEntity;
34 |
35 | private uint _currentEntityGOID = 0;
36 |
37 | private Vector3 _position;
38 | private Vector3 _rotation;
39 | private Tuple _movedEntity = null;
40 | private bool _movingPointed = false;
41 | private bool _pointedPos = false;
42 |
43 | List> _renderable;
44 | private Tuple _renderableEntity = null;
45 |
46 | private Tuple _addedEntity = null;
47 | private Tuple _removedEntity = null;
48 | private ShortGuid _removedComposite = ShortGuid.Invalid;
49 |
50 | //settings
51 | public bool FocusSelected => _focusSelected;
52 | private bool _focusSelected = false;
53 |
54 | void Start()
55 | {
56 | _scene = GetComponent();
57 | StartCoroutine(ReconnectLoop());
58 | }
59 |
60 | /* Recieve data from Commands Editor and sync it to our local Commands object */
61 | private void OnMessage(object sender, MessageEventArgs e)
62 | {
63 | //Debug.Log(e.Data);
64 |
65 | Packet packet = JsonConvert.DeserializeObject(e.Data);
66 |
67 | if (packet.version != new Packet().version)
68 | {
69 | Debug.LogError("Your Commands Editor is utilising a different API version than this Unity client!!\nPlease ensure both are up to date.");
70 | return;
71 | }
72 |
73 | //if (packet.dirty)
74 | //{
75 | // Debug.LogError("Content has been modified inside the Commands editor without saving before opening Unity. Please save inside the Commands editor and re-play Unity to sync changes.");
76 | // return;
77 | //}
78 |
79 | lock (_lock)
80 | {
81 | _levelName = packet.level_name;
82 | _pathToAI = packet.system_folder;
83 |
84 | _pathComposites = packet.path_composites;
85 | _pathEntities = packet.path_entities;
86 |
87 | _compositeLoaded = _pathComposites.Count != 0;
88 | _entitySelected = _compositeLoaded && _pathComposites.Count == _pathEntities.Count;
89 |
90 | _currentComposite = _compositeLoaded ? _pathComposites[_pathComposites.Count - 1] : 0;
91 | _currentEntity = _entitySelected ? _pathEntities[_pathEntities.Count - 1] : 0;
92 |
93 | _focusSelected = packet.focus_object;
94 | }
95 |
96 | switch (packet.packet_event)
97 | {
98 | case PacketEvent.ENTITY_MOVED:
99 | {
100 | lock (_lock)
101 | {
102 | _position = new Vector3(packet.position.X, packet.position.Y, packet.position.Z);
103 | _rotation = new Vector3(packet.rotation.X, packet.rotation.Y, packet.rotation.Z);
104 | _movingPointed = false;
105 | _pointedPos = false;
106 |
107 | ShortGuid entityID = new ShortGuid(packet.entity);
108 | ShortGuid compositeID = new ShortGuid(packet.composite);
109 | Composite composite = LevelContent.CommandsPAK.Entries.FirstOrDefault(o => o.shortGUID == compositeID);
110 | if (composite != null)
111 | {
112 | Entity entity = null;
113 | switch (packet.entity_variant)
114 | {
115 | case EntityVariant.FUNCTION:
116 | entity = composite.functions.FirstOrDefault(o => o.shortGUID == entityID);
117 | break;
118 | case EntityVariant.VARIABLE:
119 | entity = composite.variables.FirstOrDefault(o => o.shortGUID == entityID);
120 | break;
121 | case EntityVariant.ALIAS:
122 | entity = composite.aliases.FirstOrDefault(o => o.shortGUID == entityID);
123 | break;
124 | case EntityVariant.PROXY:
125 | entity = composite.proxies.FirstOrDefault(o => o.shortGUID == entityID);
126 | break;
127 | }
128 | if (entity != null)
129 | {
130 | if (packet.has_transform)
131 | {
132 | Parameter position = entity.GetParameter("position");
133 | if (position == null || position?.content?.dataType == DataType.TRANSFORM)
134 | position = entity.AddParameter("position", new cTransform());
135 | cTransform transform = (cTransform)position.content;
136 | transform.position = new Vector3(packet.position.X, packet.position.Y, packet.position.Z);
137 | transform.rotation = new Vector3(packet.rotation.X, packet.rotation.Y, packet.rotation.Z);
138 | }
139 | else
140 | {
141 | entity.RemoveParameter("position");
142 | }
143 |
144 | //If this entity points to another, resolve it to apply the transform correctly in scene
145 | switch (entity.variant)
146 | {
147 | case EntityVariant.PROXY:
148 | HandlePointedTransform(packet, out entityID, out compositeID, ((ProxyEntity)entity).proxy, LevelContent.CommandsPAK.EntryPoints[0]);
149 | break;
150 | case EntityVariant.ALIAS:
151 | HandlePointedTransform(packet, out entityID, out compositeID, ((AliasEntity)entity).alias, composite);
152 | break;
153 | }
154 | }
155 | }
156 |
157 | _movedEntity = new Tuple(compositeID, entityID);
158 | }
159 | break;
160 | }
161 | case PacketEvent.ENTITY_RESOURCE_MODIFIED:
162 | {
163 | lock (_lock)
164 | {
165 | ShortGuid entityID = new ShortGuid(packet.entity);
166 | ShortGuid compositeID = new ShortGuid(packet.composite);
167 | Composite composite = LevelContent.CommandsPAK.Entries.FirstOrDefault(o => o.shortGUID == compositeID);
168 | if (composite != null)
169 | {
170 | Entity entity = null;
171 | switch (packet.entity_variant)
172 | {
173 | case EntityVariant.FUNCTION:
174 | entity = composite.functions.FirstOrDefault(o => o.shortGUID == entityID);
175 | break;
176 | case EntityVariant.VARIABLE:
177 | entity = composite.variables.FirstOrDefault(o => o.shortGUID == entityID);
178 | break;
179 | case EntityVariant.ALIAS:
180 | entity = composite.aliases.FirstOrDefault(o => o.shortGUID == entityID);
181 | break;
182 | case EntityVariant.PROXY:
183 | entity = composite.proxies.FirstOrDefault(o => o.shortGUID == entityID);
184 | break;
185 | }
186 | if (entity != null)
187 | {
188 | LevelContent.RemappedResources.Remove(entity);
189 | LevelContent.RemappedResources.Add(entity, packet.renderable);
190 | }
191 | }
192 |
193 | _renderable = packet.renderable;
194 | _renderableEntity = new Tuple(compositeID, entityID);
195 | }
196 | break;
197 | }
198 | case PacketEvent.ENTITY_ADDED:
199 | {
200 | lock (_lock)
201 | {
202 | Composite composite = LevelContent.CommandsPAK.Entries.FirstOrDefault(o => o.shortGUID.ToUInt32() == packet.composite);
203 | if (composite != null)
204 | {
205 | switch (packet.entity_variant)
206 | {
207 | case EntityVariant.FUNCTION:
208 | composite.functions.Add(new FunctionEntity() { shortGUID = new ShortGuid(packet.entity), function = new ShortGuid(packet.entity_function) });
209 | break;
210 | case EntityVariant.VARIABLE:
211 | composite.variables.Add(new VariableEntity() { shortGUID = new ShortGuid(packet.entity) });
212 | break;
213 | case EntityVariant.ALIAS:
214 | EntityPath alias = new EntityPath() { path = new ShortGuid[packet.entity_pointed.Count] };
215 | for (int i = 0; i < packet.entity_pointed.Count; i++)
216 | alias.path[i] = new ShortGuid(packet.entity_pointed[i]);
217 | composite.aliases.Add(new AliasEntity() { shortGUID = new ShortGuid(packet.entity), alias = alias });
218 | break;
219 | case EntityVariant.PROXY:
220 | EntityPath proxy = new EntityPath() { path = new ShortGuid[packet.entity_pointed.Count] };
221 | for (int i = 0; i < packet.entity_pointed.Count; i++)
222 | proxy.path[i] = new ShortGuid(packet.entity_pointed[i]);
223 | composite.proxies.Add(new ProxyEntity() { shortGUID = new ShortGuid(packet.entity), proxy = proxy });
224 | break;
225 | }
226 | }
227 |
228 | _addedEntity = new Tuple(new ShortGuid(packet.composite), new ShortGuid(packet.entity));
229 | }
230 | break;
231 | }
232 | case PacketEvent.ENTITY_DELETED:
233 | {
234 | lock (_lock)
235 | {
236 | Composite composite = LevelContent.CommandsPAK.Entries.FirstOrDefault(o => o.shortGUID.ToUInt32() == packet.composite);
237 | if (composite != null)
238 | {
239 | switch (packet.entity_variant)
240 | {
241 | case EntityVariant.FUNCTION:
242 | composite.functions.RemoveAll(o => o.shortGUID == new ShortGuid(packet.entity));
243 | break;
244 | case EntityVariant.ALIAS:
245 | composite.aliases.RemoveAll(o => o.shortGUID == new ShortGuid(packet.entity));
246 | break;
247 | case EntityVariant.VARIABLE:
248 | composite.variables.RemoveAll(o => o.shortGUID == new ShortGuid(packet.entity));
249 | break;
250 | case EntityVariant.PROXY:
251 | composite.proxies.RemoveAll(o => o.shortGUID == new ShortGuid(packet.entity));
252 | break;
253 | }
254 | }
255 |
256 | _removedEntity = new Tuple(new ShortGuid(packet.composite), new ShortGuid(packet.entity));
257 | }
258 | break;
259 | }
260 | case PacketEvent.COMPOSITE_ADDED:
261 | {
262 | lock (_lock)
263 | {
264 | LevelContent.CommandsPAK.Entries.Add(new Composite() { shortGUID = new ShortGuid(packet.composite) });
265 | }
266 | break;
267 | }
268 | case PacketEvent.COMPOSITE_DELETED:
269 | {
270 | lock (_lock)
271 | {
272 | LevelContent.CommandsPAK.Entries.RemoveAll(o => o.shortGUID == new ShortGuid(packet.composite));
273 |
274 | _removedComposite = new ShortGuid(packet.composite);
275 | }
276 | break;
277 | }
278 | }
279 | }
280 | private void HandlePointedTransform(Packet packet, out ShortGuid entityID, out ShortGuid compositeID, EntityPath path, Composite startComposite)
281 | {
282 | Entity pEnt = path.GetPointedEntity(LevelContent.CommandsPAK, startComposite, out Composite pComp);
283 | entityID = pEnt != null ? pEnt.shortGUID : ShortGuid.Invalid;
284 | compositeID = pComp != null ? pComp.shortGUID : ShortGuid.Invalid;
285 | if (!packet.has_transform)
286 | {
287 | _pointedPos = false;
288 | Parameter p = pEnt.GetParameter("position");
289 | if (p != null && p?.content?.dataType == DataType.TRANSFORM)
290 | {
291 | cTransform pT = (cTransform)p.content;
292 | _position = pT.position;
293 | _rotation = pT.rotation;
294 | }
295 | else
296 | {
297 | _position = Vector3.zero;
298 | _rotation = Vector3.zero;
299 | }
300 | }
301 | else
302 | {
303 | _pointedPos = true;
304 | }
305 | _movingPointed = true;
306 | }
307 |
308 | /* Sync any changes that happened with our Unity scene */
309 | private void FixedUpdate()
310 | {
311 | if (_levelName != "" && _scene.LevelName != _levelName)
312 | {
313 | _scene.LoadLevel(_levelName);
314 | }
315 |
316 | if (_compositeLoaded)
317 | {
318 | if (_scene.CompositeID != _pathComposites[0])
319 | _scene.PopulateComposite(new ShortGuid(_pathComposites[0]));
320 | //if (_loader.highlighted) <- todo: add highlighting for actual active composite. the modification should apply to ALL instances of the composite too, unless we apply as aliases in the editor... hmm...
321 | }
322 |
323 | if (_addedEntity != null)
324 | {
325 | Debug.Log("Adding entity: " + _addedEntity.Item2.ToUInt32());
326 | _scene.AddEntity(_addedEntity.Item1, _addedEntity.Item2);
327 | _addedEntity = null;
328 | }
329 |
330 | if (_removedEntity != null)
331 | {
332 | Debug.Log("Removing entity: " + _removedEntity.Item2.ToUInt32());
333 | _scene.RemoveEntity(_removedEntity.Item1, _removedEntity.Item2);
334 | _removedEntity = null;
335 | }
336 |
337 | if (_removedComposite != ShortGuid.Invalid)
338 | {
339 | Debug.Log("Removing composite: " + _removedComposite.ToUInt32());
340 | _scene.RemoveComposite(_removedComposite);
341 | _removedComposite = ShortGuid.Invalid;
342 | }
343 |
344 | if (_renderableEntity != null)
345 | {
346 | Debug.Log("Updating renderables for entity: " + _renderableEntity.Item2.ToUInt32() + " [" + _renderable.Count + "]");
347 | _scene.UpdateRenderable(_renderableEntity.Item1, _renderableEntity.Item2, _renderable);
348 | _renderableEntity = null;
349 | }
350 |
351 | if (_movedEntity != null)
352 | {
353 | Debug.Log("Updating transform for entity: " + _movedEntity.Item2.ToUInt32() + " [" + _position + ", " + _rotation + "]");
354 | _scene.RepositionEntity(_movedEntity.Item1, _movedEntity.Item2, _position, Quaternion.Euler(_rotation), _movingPointed, _pointedPos);
355 | _movedEntity = null;
356 | }
357 |
358 | if (_currentEntityGOID != _currentEntity)
359 | {
360 | Debug.Log("Selecting entity: " + _currentEntity);
361 | _scene.SelectEntity(_pathEntities);
362 | _currentEntityGOID = _currentEntity;
363 | }
364 | }
365 |
366 | private IEnumerator ReconnectLoop()
367 | {
368 | yield return new WaitForEndOfFrame();
369 |
370 | while (true)
371 | {
372 | if (_client != null)
373 | {
374 | _client.OnMessage -= OnMessage;
375 | }
376 |
377 | _client = new WebSocket("ws://localhost:1702/commands_editor");
378 | _client.OnMessage += OnMessage;
379 |
380 | Debug.Log("Trying to connect to Commands Editor...");
381 |
382 | while (!_client.IsAlive)
383 | {
384 | try { _client.Connect(); } catch { }
385 | yield return new WaitForSeconds(1.5f);
386 | }
387 |
388 | Debug.Log("Connected to Commands Editor!");
389 |
390 | while (_client != null && _client.IsAlive)
391 | yield return new WaitForSeconds(0.1f);
392 |
393 | _client.Close();
394 |
395 | Debug.LogWarning("Disconnected from Commands Editor!");
396 | }
397 | }
398 |
399 | public void SendMessage(Packet content)
400 | {
401 | _client.Send(JsonConvert.SerializeObject(content));
402 | }
403 |
404 |
405 |
406 | #region PACKET
407 | //TODO: Keep this in sync with clients
408 | public enum PacketEvent
409 | {
410 | LEVEL_LOADED,
411 |
412 | COMPOSITE_SELECTED,
413 | COMPOSITE_RELOADED,
414 | COMPOSITE_DELETED,
415 | COMPOSITE_ADDED,
416 |
417 | ENTITY_SELECTED,
418 | ENTITY_MOVED,
419 | ENTITY_DELETED,
420 | ENTITY_ADDED,
421 | ENTITY_RESOURCE_MODIFIED,
422 |
423 | GENERIC_DATA_SYNC,
424 | }
425 |
426 | public class Packet
427 | {
428 | public Packet(PacketEvent packet_event = PacketEvent.GENERIC_DATA_SYNC)
429 | {
430 | this.packet_event = packet_event;
431 | }
432 |
433 | //Packet metadata
434 | public PacketEvent packet_event;
435 | public int version = 4;
436 |
437 | //Setup metadata
438 | public string level_name = "";
439 | public string system_folder = "";
440 |
441 | //Selection metadata
442 | public List path_entities = new List();
443 | public List path_composites = new List();
444 | public uint entity;
445 | public uint composite;
446 |
447 | //Transform
448 | public bool has_transform = false;
449 | public System.Numerics.Vector3 position = new System.Numerics.Vector3();
450 | public System.Numerics.Vector3 rotation = new System.Numerics.Vector3();
451 |
452 | //Renderable resource
453 | public List> renderable = new List>(); //Model Index, Material Index
454 |
455 | //Modified entity info
456 | public EntityVariant entity_variant;
457 | public uint entity_function; //For function entities
458 | public List entity_pointed; //For alias/proxy entities
459 |
460 | //Track if things have changed
461 | public bool dirty = false;
462 |
463 | //Settings
464 | public bool focus_object = false;
465 | }
466 | #endregion
467 | }
--------------------------------------------------------------------------------
/CathodeEditorUnity/ProjectSettings/ProjectSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!129 &1
4 | PlayerSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 26
7 | productGUID: 6a7db360a67caf34d8dc6c0832ab1a34
8 | AndroidProfiler: 0
9 | AndroidFilterTouchesWhenObscured: 0
10 | AndroidEnableSustainedPerformanceMode: 0
11 | defaultScreenOrientation: 4
12 | targetDevice: 2
13 | useOnDemandResources: 0
14 | accelerometerFrequency: 60
15 | companyName: OpenCAGE
16 | productName: Commands Renderer
17 | defaultCursor: {fileID: 0}
18 | cursorHotspot: {x: 0, y: 0}
19 | m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1}
20 | m_ShowUnitySplashScreen: 1
21 | m_ShowUnitySplashLogo: 1
22 | m_SplashScreenOverlayOpacity: 1
23 | m_SplashScreenAnimation: 1
24 | m_SplashScreenLogoStyle: 1
25 | m_SplashScreenDrawMode: 0
26 | m_SplashScreenBackgroundAnimationZoom: 1
27 | m_SplashScreenLogoAnimationZoom: 1
28 | m_SplashScreenBackgroundLandscapeAspect: 1
29 | m_SplashScreenBackgroundPortraitAspect: 1
30 | m_SplashScreenBackgroundLandscapeUvs:
31 | serializedVersion: 2
32 | x: 0
33 | y: 0
34 | width: 1
35 | height: 1
36 | m_SplashScreenBackgroundPortraitUvs:
37 | serializedVersion: 2
38 | x: 0
39 | y: 0
40 | width: 1
41 | height: 1
42 | m_SplashScreenLogos: []
43 | m_VirtualRealitySplashScreen: {fileID: 0}
44 | m_HolographicTrackingLossScreen: {fileID: 0}
45 | defaultScreenWidth: 1024
46 | defaultScreenHeight: 768
47 | defaultScreenWidthWeb: 960
48 | defaultScreenHeightWeb: 600
49 | m_StereoRenderingPath: 0
50 | m_ActiveColorSpace: 0
51 | m_SpriteBatchVertexThreshold: 300
52 | m_MTRendering: 1
53 | mipStripping: 0
54 | numberOfMipsStripped: 0
55 | numberOfMipsStrippedPerMipmapLimitGroup: {}
56 | m_StackTraceTypes: 010000000100000001000000010000000100000001000000
57 | iosShowActivityIndicatorOnLoading: -1
58 | androidShowActivityIndicatorOnLoading: -1
59 | iosUseCustomAppBackgroundBehavior: 0
60 | allowedAutorotateToPortrait: 1
61 | allowedAutorotateToPortraitUpsideDown: 1
62 | allowedAutorotateToLandscapeRight: 1
63 | allowedAutorotateToLandscapeLeft: 1
64 | useOSAutorotation: 1
65 | use32BitDisplayBuffer: 1
66 | preserveFramebufferAlpha: 0
67 | disableDepthAndStencilBuffers: 0
68 | androidStartInFullscreen: 1
69 | androidRenderOutsideSafeArea: 1
70 | androidUseSwappy: 1
71 | androidBlitType: 0
72 | androidResizableWindow: 0
73 | androidDefaultWindowWidth: 1920
74 | androidDefaultWindowHeight: 1080
75 | androidMinimumWindowWidth: 400
76 | androidMinimumWindowHeight: 300
77 | androidFullscreenMode: 1
78 | defaultIsNativeResolution: 1
79 | macRetinaSupport: 1
80 | runInBackground: 1
81 | captureSingleScreen: 0
82 | muteOtherAudioSources: 0
83 | Prepare IOS For Recording: 0
84 | Force IOS Speakers When Recording: 0
85 | deferSystemGesturesMode: 0
86 | hideHomeButton: 0
87 | submitAnalytics: 1
88 | usePlayerLog: 1
89 | dedicatedServerOptimizations: 0
90 | bakeCollisionMeshes: 0
91 | forceSingleInstance: 0
92 | useFlipModelSwapchain: 1
93 | resizableWindow: 1
94 | useMacAppStoreValidation: 0
95 | macAppStoreCategory: public.app-category.games
96 | gpuSkinning: 1
97 | xboxPIXTextureCapture: 0
98 | xboxEnableAvatar: 0
99 | xboxEnableKinect: 0
100 | xboxEnableKinectAutoTracking: 0
101 | xboxEnableFitness: 0
102 | visibleInBackground: 1
103 | allowFullscreenSwitch: 1
104 | fullscreenMode: 3
105 | xboxSpeechDB: 0
106 | xboxEnableHeadOrientation: 0
107 | xboxEnableGuest: 0
108 | xboxEnablePIXSampling: 0
109 | metalFramebufferOnly: 0
110 | xboxOneResolution: 0
111 | xboxOneSResolution: 0
112 | xboxOneXResolution: 3
113 | xboxOneMonoLoggingLevel: 0
114 | xboxOneLoggingLevel: 1
115 | xboxOneDisableEsram: 0
116 | xboxOneEnableTypeOptimization: 0
117 | xboxOnePresentImmediateThreshold: 0
118 | switchQueueCommandMemory: 0
119 | switchQueueControlMemory: 16384
120 | switchQueueComputeMemory: 262144
121 | switchNVNShaderPoolsGranularity: 33554432
122 | switchNVNDefaultPoolsGranularity: 16777216
123 | switchNVNOtherPoolsGranularity: 16777216
124 | switchGpuScratchPoolGranularity: 2097152
125 | switchAllowGpuScratchShrinking: 0
126 | switchNVNMaxPublicTextureIDCount: 0
127 | switchNVNMaxPublicSamplerIDCount: 0
128 | switchNVNGraphicsFirmwareMemory: 32
129 | switchMaxWorkerMultiple: 8
130 | stadiaPresentMode: 0
131 | stadiaTargetFramerate: 0
132 | vulkanNumSwapchainBuffers: 3
133 | vulkanEnableSetSRGBWrite: 0
134 | vulkanEnablePreTransform: 0
135 | vulkanEnableLateAcquireNextImage: 0
136 | vulkanEnableCommandBufferRecycling: 1
137 | loadStoreDebugModeEnabled: 0
138 | bundleVersion: 1.0
139 | preloadedAssets: []
140 | metroInputSource: 0
141 | wsaTransparentSwapchain: 0
142 | m_HolographicPauseOnTrackingLoss: 1
143 | xboxOneDisableKinectGpuReservation: 1
144 | xboxOneEnable7thCore: 1
145 | vrSettings:
146 | enable360StereoCapture: 0
147 | isWsaHolographicRemotingEnabled: 0
148 | enableFrameTimingStats: 0
149 | enableOpenGLProfilerGPURecorders: 1
150 | useHDRDisplay: 0
151 | hdrBitDepth: 0
152 | m_ColorGamuts: 00000000
153 | targetPixelDensity: 30
154 | resolutionScalingMode: 0
155 | resetResolutionOnWindowResize: 0
156 | androidSupportedAspectRatio: 1
157 | androidMaxAspectRatio: 2.1
158 | applicationIdentifier:
159 | Standalone: com.OpenCAGE.Commands-Renderer
160 | buildNumber:
161 | Standalone: 0
162 | VisionOS: 0
163 | iPhone: 0
164 | tvOS: 0
165 | overrideDefaultApplicationIdentifier: 0
166 | AndroidBundleVersionCode: 1
167 | AndroidMinSdkVersion: 22
168 | AndroidTargetSdkVersion: 0
169 | AndroidPreferredInstallLocation: 1
170 | aotOptions:
171 | stripEngineCode: 1
172 | iPhoneStrippingLevel: 0
173 | iPhoneScriptCallOptimization: 0
174 | ForceInternetPermission: 0
175 | ForceSDCardPermission: 0
176 | CreateWallpaper: 0
177 | APKExpansionFiles: 0
178 | keepLoadedShadersAlive: 0
179 | StripUnusedMeshComponents: 1
180 | strictShaderVariantMatching: 0
181 | VertexChannelCompressionMask: 4054
182 | iPhoneSdkVersion: 988
183 | iOSTargetOSVersionString: 12.0
184 | tvOSSdkVersion: 0
185 | tvOSRequireExtendedGameController: 0
186 | tvOSTargetOSVersionString: 12.0
187 | VisionOSSdkVersion: 0
188 | VisionOSTargetOSVersionString: 1.0
189 | uIPrerenderedIcon: 0
190 | uIRequiresPersistentWiFi: 0
191 | uIRequiresFullScreen: 1
192 | uIStatusBarHidden: 1
193 | uIExitOnSuspend: 0
194 | uIStatusBarStyle: 0
195 | appleTVSplashScreen: {fileID: 0}
196 | appleTVSplashScreen2x: {fileID: 0}
197 | tvOSSmallIconLayers: []
198 | tvOSSmallIconLayers2x: []
199 | tvOSLargeIconLayers: []
200 | tvOSLargeIconLayers2x: []
201 | tvOSTopShelfImageLayers: []
202 | tvOSTopShelfImageLayers2x: []
203 | tvOSTopShelfImageWideLayers: []
204 | tvOSTopShelfImageWideLayers2x: []
205 | iOSLaunchScreenType: 0
206 | iOSLaunchScreenPortrait: {fileID: 0}
207 | iOSLaunchScreenLandscape: {fileID: 0}
208 | iOSLaunchScreenBackgroundColor:
209 | serializedVersion: 2
210 | rgba: 0
211 | iOSLaunchScreenFillPct: 100
212 | iOSLaunchScreenSize: 100
213 | iOSLaunchScreenCustomXibPath:
214 | iOSLaunchScreeniPadType: 0
215 | iOSLaunchScreeniPadImage: {fileID: 0}
216 | iOSLaunchScreeniPadBackgroundColor:
217 | serializedVersion: 2
218 | rgba: 0
219 | iOSLaunchScreeniPadFillPct: 100
220 | iOSLaunchScreeniPadSize: 100
221 | iOSLaunchScreeniPadCustomXibPath:
222 | iOSLaunchScreenCustomStoryboardPath:
223 | iOSLaunchScreeniPadCustomStoryboardPath:
224 | iOSDeviceRequirements: []
225 | iOSURLSchemes: []
226 | macOSURLSchemes: []
227 | iOSBackgroundModes: 0
228 | iOSMetalForceHardShadows: 0
229 | metalEditorSupport: 1
230 | metalAPIValidation: 1
231 | iOSRenderExtraFrameOnPause: 0
232 | iosCopyPluginsCodeInsteadOfSymlink: 0
233 | appleDeveloperTeamID:
234 | iOSManualSigningProvisioningProfileID:
235 | tvOSManualSigningProvisioningProfileID:
236 | VisionOSManualSigningProvisioningProfileID:
237 | iOSManualSigningProvisioningProfileType: 0
238 | tvOSManualSigningProvisioningProfileType: 0
239 | VisionOSManualSigningProvisioningProfileType: 0
240 | appleEnableAutomaticSigning: 0
241 | iOSRequireARKit: 0
242 | iOSAutomaticallyDetectAndAddCapabilities: 1
243 | appleEnableProMotion: 0
244 | shaderPrecisionModel: 0
245 | clonedFromGUID: c0afd0d1d80e3634a9dac47e8a0426ea
246 | templatePackageId: com.unity.template.3d@5.0.3
247 | templateDefaultScene: Assets/Scenes/SampleScene.unity
248 | useCustomMainManifest: 0
249 | useCustomLauncherManifest: 0
250 | useCustomMainGradleTemplate: 0
251 | useCustomLauncherGradleManifest: 0
252 | useCustomBaseGradleTemplate: 0
253 | useCustomGradlePropertiesTemplate: 0
254 | useCustomGradleSettingsTemplate: 0
255 | useCustomProguardFile: 0
256 | AndroidTargetArchitectures: 1
257 | AndroidTargetDevices: 0
258 | AndroidSplashScreenScale: 0
259 | androidSplashScreen: {fileID: 0}
260 | AndroidKeystoreName:
261 | AndroidKeyaliasName:
262 | AndroidEnableArmv9SecurityFeatures: 0
263 | AndroidBuildApkPerCpuArchitecture: 0
264 | AndroidTVCompatibility: 0
265 | AndroidIsGame: 1
266 | AndroidEnableTango: 0
267 | androidEnableBanner: 1
268 | androidUseLowAccuracyLocation: 0
269 | androidUseCustomKeystore: 0
270 | m_AndroidBanners:
271 | - width: 320
272 | height: 180
273 | banner: {fileID: 0}
274 | androidGamepadSupportLevel: 0
275 | chromeosInputEmulation: 1
276 | AndroidMinifyRelease: 0
277 | AndroidMinifyDebug: 0
278 | AndroidValidateAppBundleSize: 1
279 | AndroidAppBundleSizeToValidate: 150
280 | m_BuildTargetIcons:
281 | - m_BuildTarget:
282 | m_Icons:
283 | - serializedVersion: 2
284 | m_Icon: {fileID: 2800000, guid: aaac8d5a470a6974d8e67b03acf912f4, type: 3}
285 | m_Width: 128
286 | m_Height: 128
287 | m_Kind: 0
288 | m_BuildTargetPlatformIcons: []
289 | m_BuildTargetBatching:
290 | - m_BuildTarget: Standalone
291 | m_StaticBatching: 1
292 | m_DynamicBatching: 0
293 | - m_BuildTarget: tvOS
294 | m_StaticBatching: 1
295 | m_DynamicBatching: 0
296 | - m_BuildTarget: Android
297 | m_StaticBatching: 1
298 | m_DynamicBatching: 0
299 | - m_BuildTarget: iPhone
300 | m_StaticBatching: 1
301 | m_DynamicBatching: 0
302 | - m_BuildTarget: WebGL
303 | m_StaticBatching: 0
304 | m_DynamicBatching: 0
305 | m_BuildTargetShaderSettings: []
306 | m_BuildTargetGraphicsJobs:
307 | - m_BuildTarget: MacStandaloneSupport
308 | m_GraphicsJobs: 0
309 | - m_BuildTarget: Switch
310 | m_GraphicsJobs: 1
311 | - m_BuildTarget: MetroSupport
312 | m_GraphicsJobs: 1
313 | - m_BuildTarget: AppleTVSupport
314 | m_GraphicsJobs: 0
315 | - m_BuildTarget: BJMSupport
316 | m_GraphicsJobs: 1
317 | - m_BuildTarget: LinuxStandaloneSupport
318 | m_GraphicsJobs: 1
319 | - m_BuildTarget: PS4Player
320 | m_GraphicsJobs: 1
321 | - m_BuildTarget: iOSSupport
322 | m_GraphicsJobs: 0
323 | - m_BuildTarget: WindowsStandaloneSupport
324 | m_GraphicsJobs: 1
325 | - m_BuildTarget: XboxOnePlayer
326 | m_GraphicsJobs: 1
327 | - m_BuildTarget: LuminSupport
328 | m_GraphicsJobs: 0
329 | - m_BuildTarget: AndroidPlayer
330 | m_GraphicsJobs: 0
331 | - m_BuildTarget: WebGLSupport
332 | m_GraphicsJobs: 0
333 | m_BuildTargetGraphicsJobMode:
334 | - m_BuildTarget: PS4Player
335 | m_GraphicsJobMode: 0
336 | - m_BuildTarget: XboxOnePlayer
337 | m_GraphicsJobMode: 0
338 | m_BuildTargetGraphicsAPIs:
339 | - m_BuildTarget: AndroidPlayer
340 | m_APIs: 150000000b000000
341 | m_Automatic: 1
342 | - m_BuildTarget: iOSSupport
343 | m_APIs: 10000000
344 | m_Automatic: 1
345 | - m_BuildTarget: AppleTVSupport
346 | m_APIs: 10000000
347 | m_Automatic: 1
348 | - m_BuildTarget: WebGLSupport
349 | m_APIs: 0b000000
350 | m_Automatic: 1
351 | m_BuildTargetVRSettings:
352 | - m_BuildTarget: Standalone
353 | m_Enabled: 0
354 | m_Devices:
355 | - Oculus
356 | - OpenVR
357 | m_DefaultShaderChunkSizeInMB: 16
358 | m_DefaultShaderChunkCount: 0
359 | openGLRequireES31: 0
360 | openGLRequireES31AEP: 0
361 | openGLRequireES32: 0
362 | m_TemplateCustomTags: {}
363 | mobileMTRendering:
364 | Android: 1
365 | iPhone: 1
366 | tvOS: 1
367 | m_BuildTargetGroupLightmapEncodingQuality: []
368 | m_BuildTargetGroupHDRCubemapEncodingQuality: []
369 | m_BuildTargetGroupLightmapSettings: []
370 | m_BuildTargetGroupLoadStoreDebugModeSettings: []
371 | m_BuildTargetNormalMapEncoding: []
372 | m_BuildTargetDefaultTextureCompressionFormat: []
373 | playModeTestRunnerEnabled: 0
374 | runPlayModeTestAsEditModeTest: 0
375 | actionOnDotNetUnhandledException: 1
376 | enableInternalProfiler: 0
377 | logObjCUncaughtExceptions: 1
378 | enableCrashReportAPI: 0
379 | cameraUsageDescription:
380 | locationUsageDescription:
381 | microphoneUsageDescription:
382 | bluetoothUsageDescription:
383 | macOSTargetOSVersion: 10.13.0
384 | switchNMETAOverride:
385 | switchNetLibKey:
386 | switchSocketMemoryPoolSize: 6144
387 | switchSocketAllocatorPoolSize: 128
388 | switchSocketConcurrencyLimit: 14
389 | switchScreenResolutionBehavior: 2
390 | switchUseCPUProfiler: 0
391 | switchUseGOLDLinker: 0
392 | switchLTOSetting: 0
393 | switchApplicationID: 0x01004b9000490000
394 | switchNSODependencies:
395 | switchCompilerFlags:
396 | switchTitleNames_0:
397 | switchTitleNames_1:
398 | switchTitleNames_2:
399 | switchTitleNames_3:
400 | switchTitleNames_4:
401 | switchTitleNames_5:
402 | switchTitleNames_6:
403 | switchTitleNames_7:
404 | switchTitleNames_8:
405 | switchTitleNames_9:
406 | switchTitleNames_10:
407 | switchTitleNames_11:
408 | switchTitleNames_12:
409 | switchTitleNames_13:
410 | switchTitleNames_14:
411 | switchTitleNames_15:
412 | switchPublisherNames_0:
413 | switchPublisherNames_1:
414 | switchPublisherNames_2:
415 | switchPublisherNames_3:
416 | switchPublisherNames_4:
417 | switchPublisherNames_5:
418 | switchPublisherNames_6:
419 | switchPublisherNames_7:
420 | switchPublisherNames_8:
421 | switchPublisherNames_9:
422 | switchPublisherNames_10:
423 | switchPublisherNames_11:
424 | switchPublisherNames_12:
425 | switchPublisherNames_13:
426 | switchPublisherNames_14:
427 | switchPublisherNames_15:
428 | switchIcons_0: {fileID: 0}
429 | switchIcons_1: {fileID: 0}
430 | switchIcons_2: {fileID: 0}
431 | switchIcons_3: {fileID: 0}
432 | switchIcons_4: {fileID: 0}
433 | switchIcons_5: {fileID: 0}
434 | switchIcons_6: {fileID: 0}
435 | switchIcons_7: {fileID: 0}
436 | switchIcons_8: {fileID: 0}
437 | switchIcons_9: {fileID: 0}
438 | switchIcons_10: {fileID: 0}
439 | switchIcons_11: {fileID: 0}
440 | switchIcons_12: {fileID: 0}
441 | switchIcons_13: {fileID: 0}
442 | switchIcons_14: {fileID: 0}
443 | switchIcons_15: {fileID: 0}
444 | switchSmallIcons_0: {fileID: 0}
445 | switchSmallIcons_1: {fileID: 0}
446 | switchSmallIcons_2: {fileID: 0}
447 | switchSmallIcons_3: {fileID: 0}
448 | switchSmallIcons_4: {fileID: 0}
449 | switchSmallIcons_5: {fileID: 0}
450 | switchSmallIcons_6: {fileID: 0}
451 | switchSmallIcons_7: {fileID: 0}
452 | switchSmallIcons_8: {fileID: 0}
453 | switchSmallIcons_9: {fileID: 0}
454 | switchSmallIcons_10: {fileID: 0}
455 | switchSmallIcons_11: {fileID: 0}
456 | switchSmallIcons_12: {fileID: 0}
457 | switchSmallIcons_13: {fileID: 0}
458 | switchSmallIcons_14: {fileID: 0}
459 | switchSmallIcons_15: {fileID: 0}
460 | switchManualHTML:
461 | switchAccessibleURLs:
462 | switchLegalInformation:
463 | switchMainThreadStackSize: 1048576
464 | switchPresenceGroupId:
465 | switchLogoHandling: 0
466 | switchReleaseVersion: 0
467 | switchDisplayVersion: 1.0.0
468 | switchStartupUserAccount: 0
469 | switchSupportedLanguagesMask: 0
470 | switchLogoType: 0
471 | switchApplicationErrorCodeCategory:
472 | switchUserAccountSaveDataSize: 0
473 | switchUserAccountSaveDataJournalSize: 0
474 | switchApplicationAttribute: 0
475 | switchCardSpecSize: -1
476 | switchCardSpecClock: -1
477 | switchRatingsMask: 0
478 | switchRatingsInt_0: 0
479 | switchRatingsInt_1: 0
480 | switchRatingsInt_2: 0
481 | switchRatingsInt_3: 0
482 | switchRatingsInt_4: 0
483 | switchRatingsInt_5: 0
484 | switchRatingsInt_6: 0
485 | switchRatingsInt_7: 0
486 | switchRatingsInt_8: 0
487 | switchRatingsInt_9: 0
488 | switchRatingsInt_10: 0
489 | switchRatingsInt_11: 0
490 | switchRatingsInt_12: 0
491 | switchLocalCommunicationIds_0:
492 | switchLocalCommunicationIds_1:
493 | switchLocalCommunicationIds_2:
494 | switchLocalCommunicationIds_3:
495 | switchLocalCommunicationIds_4:
496 | switchLocalCommunicationIds_5:
497 | switchLocalCommunicationIds_6:
498 | switchLocalCommunicationIds_7:
499 | switchParentalControl: 0
500 | switchAllowsScreenshot: 1
501 | switchAllowsVideoCapturing: 1
502 | switchAllowsRuntimeAddOnContentInstall: 0
503 | switchDataLossConfirmation: 0
504 | switchUserAccountLockEnabled: 0
505 | switchSystemResourceMemory: 16777216
506 | switchSupportedNpadStyles: 22
507 | switchNativeFsCacheSize: 32
508 | switchIsHoldTypeHorizontal: 0
509 | switchSupportedNpadCount: 8
510 | switchEnableTouchScreen: 1
511 | switchSocketConfigEnabled: 0
512 | switchTcpInitialSendBufferSize: 32
513 | switchTcpInitialReceiveBufferSize: 64
514 | switchTcpAutoSendBufferSizeMax: 256
515 | switchTcpAutoReceiveBufferSizeMax: 256
516 | switchUdpSendBufferSize: 9
517 | switchUdpReceiveBufferSize: 42
518 | switchSocketBufferEfficiency: 4
519 | switchSocketInitializeEnabled: 1
520 | switchNetworkInterfaceManagerInitializeEnabled: 1
521 | switchPlayerConnectionEnabled: 1
522 | switchUseNewStyleFilepaths: 0
523 | switchUseLegacyFmodPriorities: 0
524 | switchUseMicroSleepForYield: 1
525 | switchEnableRamDiskSupport: 0
526 | switchMicroSleepForYieldTime: 25
527 | switchRamDiskSpaceSize: 12
528 | ps4NPAgeRating: 12
529 | ps4NPTitleSecret:
530 | ps4NPTrophyPackPath:
531 | ps4ParentalLevel: 11
532 | ps4ContentID: ED1633-NPXX51362_00-0000000000000000
533 | ps4Category: 0
534 | ps4MasterVersion: 01.00
535 | ps4AppVersion: 01.00
536 | ps4AppType: 0
537 | ps4ParamSfxPath:
538 | ps4VideoOutPixelFormat: 0
539 | ps4VideoOutInitialWidth: 1920
540 | ps4VideoOutBaseModeInitialWidth: 1920
541 | ps4VideoOutReprojectionRate: 60
542 | ps4PronunciationXMLPath:
543 | ps4PronunciationSIGPath:
544 | ps4BackgroundImagePath:
545 | ps4StartupImagePath:
546 | ps4StartupImagesFolder:
547 | ps4IconImagesFolder:
548 | ps4SaveDataImagePath:
549 | ps4SdkOverride:
550 | ps4BGMPath:
551 | ps4ShareFilePath:
552 | ps4ShareOverlayImagePath:
553 | ps4PrivacyGuardImagePath:
554 | ps4ExtraSceSysFile:
555 | ps4NPtitleDatPath:
556 | ps4RemotePlayKeyAssignment: -1
557 | ps4RemotePlayKeyMappingDir:
558 | ps4PlayTogetherPlayerCount: 0
559 | ps4EnterButtonAssignment: 1
560 | ps4ApplicationParam1: 0
561 | ps4ApplicationParam2: 0
562 | ps4ApplicationParam3: 0
563 | ps4ApplicationParam4: 0
564 | ps4DownloadDataSize: 0
565 | ps4GarlicHeapSize: 2048
566 | ps4ProGarlicHeapSize: 2560
567 | playerPrefsMaxSize: 32768
568 | ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ
569 | ps4pnSessions: 1
570 | ps4pnPresence: 1
571 | ps4pnFriends: 1
572 | ps4pnGameCustomData: 1
573 | playerPrefsSupport: 0
574 | enableApplicationExit: 0
575 | resetTempFolder: 1
576 | restrictedAudioUsageRights: 0
577 | ps4UseResolutionFallback: 0
578 | ps4ReprojectionSupport: 0
579 | ps4UseAudio3dBackend: 0
580 | ps4UseLowGarlicFragmentationMode: 1
581 | ps4SocialScreenEnabled: 0
582 | ps4ScriptOptimizationLevel: 0
583 | ps4Audio3dVirtualSpeakerCount: 14
584 | ps4attribCpuUsage: 0
585 | ps4PatchPkgPath:
586 | ps4PatchLatestPkgPath:
587 | ps4PatchChangeinfoPath:
588 | ps4PatchDayOne: 0
589 | ps4attribUserManagement: 0
590 | ps4attribMoveSupport: 0
591 | ps4attrib3DSupport: 0
592 | ps4attribShareSupport: 0
593 | ps4attribExclusiveVR: 0
594 | ps4disableAutoHideSplash: 0
595 | ps4videoRecordingFeaturesUsed: 0
596 | ps4contentSearchFeaturesUsed: 0
597 | ps4CompatibilityPS5: 0
598 | ps4AllowPS5Detection: 0
599 | ps4GPU800MHz: 1
600 | ps4attribEyeToEyeDistanceSettingVR: 0
601 | ps4IncludedModules: []
602 | ps4attribVROutputEnabled: 0
603 | monoEnv:
604 | splashScreenBackgroundSourceLandscape: {fileID: 0}
605 | splashScreenBackgroundSourcePortrait: {fileID: 0}
606 | blurSplashScreenBackground: 1
607 | spritePackerPolicy:
608 | webGLMemorySize: 16
609 | webGLExceptionSupport: 1
610 | webGLNameFilesAsHashes: 0
611 | webGLShowDiagnostics: 0
612 | webGLDataCaching: 1
613 | webGLDebugSymbols: 0
614 | webGLEmscriptenArgs:
615 | webGLModulesDirectory:
616 | webGLTemplate: APPLICATION:Default
617 | webGLAnalyzeBuildSize: 0
618 | webGLUseEmbeddedResources: 0
619 | webGLCompressionFormat: 1
620 | webGLWasmArithmeticExceptions: 0
621 | webGLLinkerTarget: 1
622 | webGLThreadsSupport: 0
623 | webGLDecompressionFallback: 0
624 | webGLInitialMemorySize: 32
625 | webGLMaximumMemorySize: 2048
626 | webGLMemoryGrowthMode: 2
627 | webGLMemoryLinearGrowthStep: 16
628 | webGLMemoryGeometricGrowthStep: 0.2
629 | webGLMemoryGeometricGrowthCap: 96
630 | webGLPowerPreference: 2
631 | scriptingDefineSymbols: {}
632 | additionalCompilerArguments: {}
633 | platformArchitecture: {}
634 | scriptingBackend: {}
635 | il2cppCompilerConfiguration: {}
636 | il2cppCodeGeneration: {}
637 | managedStrippingLevel:
638 | EmbeddedLinux: 1
639 | GameCoreScarlett: 1
640 | GameCoreXboxOne: 1
641 | Nintendo Switch: 1
642 | PS4: 1
643 | PS5: 1
644 | QNX: 1
645 | Stadia: 1
646 | VisionOS: 1
647 | WebGL: 1
648 | Windows Store Apps: 1
649 | XboxOne: 1
650 | iPhone: 1
651 | tvOS: 1
652 | incrementalIl2cppBuild: {}
653 | suppressCommonWarnings: 1
654 | allowUnsafeCode: 1
655 | useDeterministicCompilation: 1
656 | additionalIl2CppArgs:
657 | scriptingRuntimeVersion: 1
658 | gcIncremental: 1
659 | gcWBarrierValidation: 0
660 | apiCompatibilityLevelPerPlatform: {}
661 | m_RenderingPath: 1
662 | m_MobileRenderingPath: 1
663 | metroPackageName: Template_3D
664 | metroPackageVersion:
665 | metroCertificatePath:
666 | metroCertificatePassword:
667 | metroCertificateSubject:
668 | metroCertificateIssuer:
669 | metroCertificateNotAfter: 0000000000000000
670 | metroApplicationDescription: Template_3D
671 | wsaImages: {}
672 | metroTileShortName:
673 | metroTileShowName: 0
674 | metroMediumTileShowName: 0
675 | metroLargeTileShowName: 0
676 | metroWideTileShowName: 0
677 | metroSupportStreamingInstall: 0
678 | metroLastRequiredScene: 0
679 | metroDefaultTileSize: 1
680 | metroTileForegroundText: 2
681 | metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0}
682 | metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628,
683 | a: 1}
684 | metroSplashScreenUseBackgroundColor: 0
685 | platformCapabilities: {}
686 | metroTargetDeviceFamilies: {}
687 | metroFTAName:
688 | metroFTAFileTypes: []
689 | metroProtocolName:
690 | vcxProjDefaultLanguage:
691 | XboxOneProductId:
692 | XboxOneUpdateKey:
693 | XboxOneSandboxId:
694 | XboxOneContentId:
695 | XboxOneTitleId:
696 | XboxOneSCId:
697 | XboxOneGameOsOverridePath:
698 | XboxOnePackagingOverridePath:
699 | XboxOneAppManifestOverridePath:
700 | XboxOneVersion: 1.0.0.0
701 | XboxOnePackageEncryption: 0
702 | XboxOnePackageUpdateGranularity: 2
703 | XboxOneDescription:
704 | XboxOneLanguage:
705 | - enus
706 | XboxOneCapability: []
707 | XboxOneGameRating: {}
708 | XboxOneIsContentPackage: 0
709 | XboxOneEnhancedXboxCompatibilityMode: 0
710 | XboxOneEnableGPUVariability: 1
711 | XboxOneSockets: {}
712 | XboxOneSplashScreen: {fileID: 0}
713 | XboxOneAllowedProductIds: []
714 | XboxOnePersistentLocalStorageSize: 0
715 | XboxOneXTitleMemory: 8
716 | XboxOneOverrideIdentityName:
717 | XboxOneOverrideIdentityPublisher:
718 | vrEditorSettings: {}
719 | cloudServicesEnabled:
720 | UNet: 1
721 | luminIcon:
722 | m_Name:
723 | m_ModelFolderPath:
724 | m_PortalFolderPath:
725 | luminCert:
726 | m_CertPath:
727 | m_SignPackage: 1
728 | luminIsChannelApp: 0
729 | luminVersion:
730 | m_VersionCode: 1
731 | m_VersionName:
732 | hmiPlayerDataPath:
733 | hmiForceSRGBBlit: 1
734 | embeddedLinuxEnableGamepadInput: 1
735 | hmiLogStartupTiming: 0
736 | hmiCpuConfiguration:
737 | apiCompatibilityLevel: 3
738 | activeInputHandler: 0
739 | windowsGamepadBackendHint: 0
740 | cloudProjectId:
741 | framebufferDepthMemorylessMode: 0
742 | qualitySettingsNames: []
743 | projectName:
744 | organizationId:
745 | cloudEnabled: 0
746 | legacyClampBlendShapeWeights: 0
747 | hmiLoadingImage: {fileID: 0}
748 | platformRequiresReadableAssets: 0
749 | virtualTexturingSupportEnabled: 0
750 | insecureHttpOption: 0
751 |
--------------------------------------------------------------------------------
/OpenCAGE.wlt:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &1
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 52
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_GameObject: {fileID: 0}
10 | m_Enabled: 1
11 | m_EditorHideFlags: 1
12 | m_Script: {fileID: 12004, guid: 0000000000000000e000000000000000, type: 0}
13 | m_Name:
14 | m_EditorClassIdentifier:
15 | m_PixelRect:
16 | serializedVersion: 2
17 | x: 8
18 | y: 51
19 | width: 3460
20 | height: 1333
21 | m_ShowMode: 4
22 | m_Title: OpenCAGE Utils
23 | m_RootView: {fileID: 4}
24 | m_MinSize: {x: 875, y: 300}
25 | m_MaxSize: {x: 10000, y: 10000}
26 | m_Maximized: 0
27 | --- !u!114 &2
28 | MonoBehaviour:
29 | m_ObjectHideFlags: 52
30 | m_CorrespondingSourceObject: {fileID: 0}
31 | m_PrefabInstance: {fileID: 0}
32 | m_PrefabAsset: {fileID: 0}
33 | m_GameObject: {fileID: 0}
34 | m_Enabled: 1
35 | m_EditorHideFlags: 0
36 | m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0}
37 | m_Name: OpenCAGEWindow
38 | m_EditorClassIdentifier:
39 | m_Children: []
40 | m_Position:
41 | serializedVersion: 2
42 | x: 0
43 | y: 1109
44 | width: 982
45 | height: 174
46 | m_MinSize: {x: 101, y: 121}
47 | m_MaxSize: {x: 4001, y: 4021}
48 | m_ActualView: {fileID: 12}
49 | m_Panes:
50 | - {fileID: 12}
51 | m_Selected: 0
52 | m_LastSelected: 0
53 | --- !u!114 &3
54 | MonoBehaviour:
55 | m_ObjectHideFlags: 52
56 | m_CorrespondingSourceObject: {fileID: 0}
57 | m_PrefabInstance: {fileID: 0}
58 | m_PrefabAsset: {fileID: 0}
59 | m_GameObject: {fileID: 0}
60 | m_Enabled: 1
61 | m_EditorHideFlags: 0
62 | m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0}
63 | m_Name:
64 | m_EditorClassIdentifier:
65 | m_Children:
66 | - {fileID: 9}
67 | - {fileID: 2}
68 | m_Position:
69 | serializedVersion: 2
70 | x: 0
71 | y: 0
72 | width: 982
73 | height: 1283
74 | m_MinSize: {x: 100, y: 100}
75 | m_MaxSize: {x: 8096, y: 16192}
76 | vertical: 1
77 | controlID: 2600
78 | --- !u!114 &4
79 | MonoBehaviour:
80 | m_ObjectHideFlags: 52
81 | m_CorrespondingSourceObject: {fileID: 0}
82 | m_PrefabInstance: {fileID: 0}
83 | m_PrefabAsset: {fileID: 0}
84 | m_GameObject: {fileID: 0}
85 | m_Enabled: 1
86 | m_EditorHideFlags: 1
87 | m_Script: {fileID: 12008, guid: 0000000000000000e000000000000000, type: 0}
88 | m_Name:
89 | m_EditorClassIdentifier:
90 | m_Children:
91 | - {fileID: 5}
92 | - {fileID: 7}
93 | - {fileID: 6}
94 | m_Position:
95 | serializedVersion: 2
96 | x: 0
97 | y: 0
98 | width: 3460
99 | height: 1333
100 | m_MinSize: {x: 875, y: 300}
101 | m_MaxSize: {x: 10000, y: 10000}
102 | m_UseTopView: 1
103 | m_TopViewHeight: 30
104 | m_UseBottomView: 1
105 | m_BottomViewHeight: 20
106 | --- !u!114 &5
107 | MonoBehaviour:
108 | m_ObjectHideFlags: 52
109 | m_CorrespondingSourceObject: {fileID: 0}
110 | m_PrefabInstance: {fileID: 0}
111 | m_PrefabAsset: {fileID: 0}
112 | m_GameObject: {fileID: 0}
113 | m_Enabled: 1
114 | m_EditorHideFlags: 1
115 | m_Script: {fileID: 12011, guid: 0000000000000000e000000000000000, type: 0}
116 | m_Name:
117 | m_EditorClassIdentifier:
118 | m_Children: []
119 | m_Position:
120 | serializedVersion: 2
121 | x: 0
122 | y: 0
123 | width: 3460
124 | height: 30
125 | m_MinSize: {x: 0, y: 0}
126 | m_MaxSize: {x: 0, y: 0}
127 | m_LastLoadedLayoutName: OpenCAGE
128 | --- !u!114 &6
129 | MonoBehaviour:
130 | m_ObjectHideFlags: 52
131 | m_CorrespondingSourceObject: {fileID: 0}
132 | m_PrefabInstance: {fileID: 0}
133 | m_PrefabAsset: {fileID: 0}
134 | m_GameObject: {fileID: 0}
135 | m_Enabled: 1
136 | m_EditorHideFlags: 1
137 | m_Script: {fileID: 12042, guid: 0000000000000000e000000000000000, type: 0}
138 | m_Name:
139 | m_EditorClassIdentifier:
140 | m_Children: []
141 | m_Position:
142 | serializedVersion: 2
143 | x: 0
144 | y: 1313
145 | width: 3460
146 | height: 20
147 | m_MinSize: {x: 0, y: 0}
148 | m_MaxSize: {x: 0, y: 0}
149 | --- !u!114 &7
150 | MonoBehaviour:
151 | m_ObjectHideFlags: 52
152 | m_CorrespondingSourceObject: {fileID: 0}
153 | m_PrefabInstance: {fileID: 0}
154 | m_PrefabAsset: {fileID: 0}
155 | m_GameObject: {fileID: 0}
156 | m_Enabled: 1
157 | m_EditorHideFlags: 1
158 | m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0}
159 | m_Name:
160 | m_EditorClassIdentifier:
161 | m_Children:
162 | - {fileID: 8}
163 | - {fileID: 11}
164 | m_Position:
165 | serializedVersion: 2
166 | x: 0
167 | y: 30
168 | width: 3460
169 | height: 1283
170 | m_MinSize: {x: 300, y: 100}
171 | m_MaxSize: {x: 24288, y: 16192}
172 | vertical: 0
173 | controlID: 2598
174 | --- !u!114 &8
175 | MonoBehaviour:
176 | m_ObjectHideFlags: 52
177 | m_CorrespondingSourceObject: {fileID: 0}
178 | m_PrefabInstance: {fileID: 0}
179 | m_PrefabAsset: {fileID: 0}
180 | m_GameObject: {fileID: 0}
181 | m_Enabled: 1
182 | m_EditorHideFlags: 1
183 | m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0}
184 | m_Name:
185 | m_EditorClassIdentifier:
186 | m_Children:
187 | - {fileID: 3}
188 | - {fileID: 10}
189 | m_Position:
190 | serializedVersion: 2
191 | x: 0
192 | y: 0
193 | width: 2642
194 | height: 1283
195 | m_MinSize: {x: 200, y: 100}
196 | m_MaxSize: {x: 16192, y: 16192}
197 | vertical: 0
198 | controlID: 2599
199 | --- !u!114 &9
200 | MonoBehaviour:
201 | m_ObjectHideFlags: 52
202 | m_CorrespondingSourceObject: {fileID: 0}
203 | m_PrefabInstance: {fileID: 0}
204 | m_PrefabAsset: {fileID: 0}
205 | m_GameObject: {fileID: 0}
206 | m_Enabled: 1
207 | m_EditorHideFlags: 1
208 | m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0}
209 | m_Name:
210 | m_EditorClassIdentifier:
211 | m_Children: []
212 | m_Position:
213 | serializedVersion: 2
214 | x: 0
215 | y: 0
216 | width: 982
217 | height: 1109
218 | m_MinSize: {x: 201, y: 221}
219 | m_MaxSize: {x: 4001, y: 4021}
220 | m_ActualView: {fileID: 14}
221 | m_Panes:
222 | - {fileID: 14}
223 | m_Selected: 0
224 | m_LastSelected: 0
225 | --- !u!114 &10
226 | MonoBehaviour:
227 | m_ObjectHideFlags: 52
228 | m_CorrespondingSourceObject: {fileID: 0}
229 | m_PrefabInstance: {fileID: 0}
230 | m_PrefabAsset: {fileID: 0}
231 | m_GameObject: {fileID: 0}
232 | m_Enabled: 1
233 | m_EditorHideFlags: 1
234 | m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0}
235 | m_Name: SceneView
236 | m_EditorClassIdentifier:
237 | m_Children: []
238 | m_Position:
239 | serializedVersion: 2
240 | x: 982
241 | y: 0
242 | width: 1660
243 | height: 1283
244 | m_MinSize: {x: 202, y: 221}
245 | m_MaxSize: {x: 4002, y: 4021}
246 | m_ActualView: {fileID: 13}
247 | m_Panes:
248 | - {fileID: 13}
249 | m_Selected: 0
250 | m_LastSelected: 0
251 | --- !u!114 &11
252 | MonoBehaviour:
253 | m_ObjectHideFlags: 52
254 | m_CorrespondingSourceObject: {fileID: 0}
255 | m_PrefabInstance: {fileID: 0}
256 | m_PrefabAsset: {fileID: 0}
257 | m_GameObject: {fileID: 0}
258 | m_Enabled: 1
259 | m_EditorHideFlags: 1
260 | m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0}
261 | m_Name: InspectorWindow
262 | m_EditorClassIdentifier:
263 | m_Children: []
264 | m_Position:
265 | serializedVersion: 2
266 | x: 2642
267 | y: 0
268 | width: 818
269 | height: 1283
270 | m_MinSize: {x: 276, y: 71}
271 | m_MaxSize: {x: 4001, y: 4021}
272 | m_ActualView: {fileID: 15}
273 | m_Panes:
274 | - {fileID: 15}
275 | m_Selected: 0
276 | m_LastSelected: 0
277 | --- !u!114 &12
278 | MonoBehaviour:
279 | m_ObjectHideFlags: 52
280 | m_CorrespondingSourceObject: {fileID: 0}
281 | m_PrefabInstance: {fileID: 0}
282 | m_PrefabAsset: {fileID: 0}
283 | m_GameObject: {fileID: 0}
284 | m_Enabled: 1
285 | m_EditorHideFlags: 0
286 | m_Script: {fileID: 11500000, guid: c676b182e5e4dc944a010cc28eb113f8, type: 3}
287 | m_Name:
288 | m_EditorClassIdentifier:
289 | m_MinSize: {x: 100, y: 100}
290 | m_MaxSize: {x: 4000, y: 4000}
291 | m_TitleContent:
292 | m_Text: OpenCAGE Utils
293 | m_Image: {fileID: 5639368617152057657, guid: 0000000000000000d000000000000000,
294 | type: 0}
295 | m_Tooltip:
296 | m_Pos:
297 | serializedVersion: 2
298 | x: 8
299 | y: 1190
300 | width: 981
301 | height: 153
302 | m_SerializedDataModeController:
303 | m_DataMode: 0
304 | m_PreferredDataMode: 0
305 | m_SupportedDataModes:
306 | isAutomatic: 1
307 | m_ViewDataDictionary: {fileID: 0}
308 | m_OverlayCanvas:
309 | m_LastAppliedPresetName: Default
310 | m_SaveData: []
311 | m_OverlaysVisible: 1
312 | --- !u!114 &13
313 | MonoBehaviour:
314 | m_ObjectHideFlags: 52
315 | m_CorrespondingSourceObject: {fileID: 0}
316 | m_PrefabInstance: {fileID: 0}
317 | m_PrefabAsset: {fileID: 0}
318 | m_GameObject: {fileID: 0}
319 | m_Enabled: 1
320 | m_EditorHideFlags: 1
321 | m_Script: {fileID: 12013, guid: 0000000000000000e000000000000000, type: 0}
322 | m_Name:
323 | m_EditorClassIdentifier:
324 | m_MinSize: {x: 200, y: 200}
325 | m_MaxSize: {x: 4000, y: 4000}
326 | m_TitleContent:
327 | m_Text: Scene
328 | m_Image: {fileID: 2593428753322112591, guid: 0000000000000000d000000000000000,
329 | type: 0}
330 | m_Tooltip:
331 | m_Pos:
332 | serializedVersion: 2
333 | x: 990
334 | y: 81
335 | width: 1658
336 | height: 1262
337 | m_SerializedDataModeController:
338 | m_DataMode: 0
339 | m_PreferredDataMode: 0
340 | m_SupportedDataModes:
341 | isAutomatic: 1
342 | m_ViewDataDictionary: {fileID: 0}
343 | m_OverlayCanvas:
344 | m_LastAppliedPresetName: Default
345 | m_SaveData:
346 | - dockPosition: 0
347 | containerId: overlay-toolbar__top
348 | floating: 0
349 | collapsed: 0
350 | displayed: 1
351 | snapOffset: {x: -171, y: -26}
352 | snapOffsetDelta: {x: 0, y: 0}
353 | snapCorner: 3
354 | id: Tool Settings
355 | index: 0
356 | layout: 1
357 | size: {x: 0, y: 0}
358 | sizeOverriden: 0
359 | - dockPosition: 0
360 | containerId: overlay-toolbar__top
361 | floating: 0
362 | collapsed: 0
363 | displayed: 1
364 | snapOffset: {x: -141, y: 149}
365 | snapOffsetDelta: {x: 0, y: 0}
366 | snapCorner: 1
367 | id: unity-grid-and-snap-toolbar
368 | index: 1
369 | layout: 1
370 | size: {x: 0, y: 0}
371 | sizeOverriden: 0
372 | - dockPosition: 1
373 | containerId: overlay-toolbar__top
374 | floating: 0
375 | collapsed: 0
376 | displayed: 1
377 | snapOffset: {x: 0, y: 0}
378 | snapOffsetDelta: {x: 0, y: 0}
379 | snapCorner: 0
380 | id: unity-scene-view-toolbar
381 | index: 0
382 | layout: 1
383 | size: {x: 0, y: 0}
384 | sizeOverriden: 0
385 | - dockPosition: 1
386 | containerId: overlay-toolbar__top
387 | floating: 0
388 | collapsed: 0
389 | displayed: 0
390 | snapOffset: {x: 0, y: 0}
391 | snapOffsetDelta: {x: 0, y: 0}
392 | snapCorner: 1
393 | id: unity-search-toolbar
394 | index: 1
395 | layout: 1
396 | size: {x: 0, y: 0}
397 | sizeOverriden: 0
398 | - dockPosition: 0
399 | containerId: overlay-toolbar__top
400 | floating: 0
401 | collapsed: 0
402 | displayed: 1
403 | snapOffset: {x: 0, y: 26}
404 | snapOffsetDelta: {x: 0, y: 0}
405 | snapCorner: 0
406 | id: unity-transform-toolbar
407 | index: 3
408 | layout: 2
409 | size: {x: 0, y: 0}
410 | sizeOverriden: 0
411 | - dockPosition: 0
412 | containerId: overlay-container--left
413 | floating: 0
414 | collapsed: 0
415 | displayed: 1
416 | snapOffset: {x: 0, y: 197}
417 | snapOffsetDelta: {x: 0, y: 0}
418 | snapCorner: 0
419 | id: unity-component-tools
420 | index: 1
421 | layout: 2
422 | size: {x: 0, y: 0}
423 | sizeOverriden: 0
424 | - dockPosition: 0
425 | containerId: overlay-container--right
426 | floating: 0
427 | collapsed: 0
428 | displayed: 1
429 | snapOffset: {x: 67.5, y: 86}
430 | snapOffsetDelta: {x: 0, y: 0}
431 | snapCorner: 0
432 | id: Orientation
433 | index: 0
434 | layout: 4
435 | size: {x: 0, y: 0}
436 | sizeOverriden: 0
437 | - dockPosition: 1
438 | containerId: overlay-container--right
439 | floating: 0
440 | collapsed: 0
441 | displayed: 0
442 | snapOffset: {x: 0, y: 0}
443 | snapOffsetDelta: {x: 0, y: 0}
444 | snapCorner: 0
445 | id: Scene View/Light Settings
446 | index: 0
447 | layout: 4
448 | size: {x: 0, y: 0}
449 | sizeOverriden: 0
450 | - dockPosition: 1
451 | containerId: overlay-container--right
452 | floating: 0
453 | collapsed: 0
454 | displayed: 0
455 | snapOffset: {x: 0, y: 0}
456 | snapOffsetDelta: {x: 0, y: 0}
457 | snapCorner: 0
458 | id: Scene View/Camera
459 | index: 1
460 | layout: 4
461 | size: {x: 0, y: 0}
462 | sizeOverriden: 0
463 | - dockPosition: 1
464 | containerId: overlay-container--right
465 | floating: 0
466 | collapsed: 0
467 | displayed: 0
468 | snapOffset: {x: 0, y: 0}
469 | snapOffsetDelta: {x: 0, y: 0}
470 | snapCorner: 0
471 | id: Scene View/Cloth Constraints
472 | index: 1
473 | layout: 4
474 | size: {x: 0, y: 0}
475 | sizeOverriden: 0
476 | - dockPosition: 1
477 | containerId: overlay-container--right
478 | floating: 0
479 | collapsed: 0
480 | displayed: 0
481 | snapOffset: {x: 0, y: 0}
482 | snapOffsetDelta: {x: 0, y: 0}
483 | snapCorner: 0
484 | id: Scene View/Cloth Collisions
485 | index: 2
486 | layout: 4
487 | size: {x: 0, y: 0}
488 | sizeOverriden: 0
489 | - dockPosition: 1
490 | containerId: overlay-container--right
491 | floating: 0
492 | collapsed: 0
493 | displayed: 0
494 | snapOffset: {x: 0, y: 0}
495 | snapOffsetDelta: {x: 0, y: 0}
496 | snapCorner: 0
497 | id: Scene View/Navmesh Display
498 | index: 4
499 | layout: 4
500 | size: {x: 0, y: 0}
501 | sizeOverriden: 0
502 | - dockPosition: 1
503 | containerId: overlay-container--right
504 | floating: 0
505 | collapsed: 0
506 | displayed: 0
507 | snapOffset: {x: 0, y: 0}
508 | snapOffsetDelta: {x: 0, y: 0}
509 | snapCorner: 0
510 | id: Scene View/Agent Display
511 | index: 5
512 | layout: 4
513 | size: {x: 0, y: 0}
514 | sizeOverriden: 0
515 | - dockPosition: 1
516 | containerId: overlay-container--right
517 | floating: 0
518 | collapsed: 0
519 | displayed: 0
520 | snapOffset: {x: 0, y: 0}
521 | snapOffsetDelta: {x: 0, y: 0}
522 | snapCorner: 0
523 | id: Scene View/Obstacle Display
524 | index: 6
525 | layout: 4
526 | size: {x: 0, y: 0}
527 | sizeOverriden: 0
528 | - dockPosition: 1
529 | containerId: overlay-container--right
530 | floating: 0
531 | collapsed: 0
532 | displayed: 0
533 | snapOffset: {x: 0, y: 0}
534 | snapOffsetDelta: {x: 0, y: 0}
535 | snapCorner: 0
536 | id: Scene View/Occlusion Culling
537 | index: 3
538 | layout: 4
539 | size: {x: 0, y: 0}
540 | sizeOverriden: 0
541 | - dockPosition: 1
542 | containerId: overlay-container--right
543 | floating: 0
544 | collapsed: 0
545 | displayed: 0
546 | snapOffset: {x: 0, y: 0}
547 | snapOffsetDelta: {x: 0, y: 0}
548 | snapCorner: 0
549 | id: Scene View/Physics Debugger
550 | index: 4
551 | layout: 4
552 | size: {x: 0, y: 0}
553 | sizeOverriden: 0
554 | - dockPosition: 1
555 | containerId: overlay-container--right
556 | floating: 0
557 | collapsed: 0
558 | displayed: 0
559 | snapOffset: {x: 0, y: 0}
560 | snapOffsetDelta: {x: 0, y: 0}
561 | snapCorner: 0
562 | id: Scene View/Scene Visibility
563 | index: 5
564 | layout: 4
565 | size: {x: 0, y: 0}
566 | sizeOverriden: 0
567 | - dockPosition: 1
568 | containerId: overlay-container--right
569 | floating: 0
570 | collapsed: 0
571 | displayed: 0
572 | snapOffset: {x: 0, y: 0}
573 | snapOffsetDelta: {x: 0, y: 0}
574 | snapCorner: 0
575 | id: Scene View/Particles
576 | index: 6
577 | layout: 4
578 | size: {x: 0, y: 0}
579 | sizeOverriden: 0
580 | - dockPosition: 1
581 | containerId: overlay-container--right
582 | floating: 0
583 | collapsed: 0
584 | displayed: 0
585 | snapOffset: {x: 0, y: 0}
586 | snapOffsetDelta: {x: 0, y: 0}
587 | snapCorner: 0
588 | id: Scene View/Tilemap
589 | index: 11
590 | layout: 4
591 | size: {x: 0, y: 0}
592 | sizeOverriden: 0
593 | - dockPosition: 1
594 | containerId: overlay-container--right
595 | floating: 0
596 | collapsed: 0
597 | displayed: 0
598 | snapOffset: {x: 0, y: 0}
599 | snapOffsetDelta: {x: 0, y: 0}
600 | snapCorner: 0
601 | id: Scene View/Tilemap Palette Helper
602 | index: 12
603 | layout: 4
604 | size: {x: 0, y: 0}
605 | sizeOverriden: 0
606 | - dockPosition: 0
607 | containerId: overlay-toolbar__top
608 | floating: 0
609 | collapsed: 1
610 | displayed: 1
611 | snapOffset: {x: -207, y: -242}
612 | snapOffsetDelta: {x: 0, y: 0}
613 | snapCorner: 3
614 | id: AINavigationOverlay
615 | index: 2
616 | layout: 4
617 | size: {x: 0, y: 0}
618 | sizeOverriden: 0
619 | - dockPosition: 1
620 | containerId: overlay-container--right
621 | floating: 0
622 | collapsed: 0
623 | displayed: 0
624 | snapOffset: {x: 48, y: 48}
625 | snapOffsetDelta: {x: 0, y: 0}
626 | snapCorner: 0
627 | id: Scene View/TrailRenderer
628 | index: 7
629 | layout: 4
630 | size: {x: 0, y: 0}
631 | sizeOverriden: 0
632 | m_OverlaysVisible: 1
633 | m_WindowGUID: de850f403f958dc4bb346bbbe48827a7
634 | m_Gizmos: 0
635 | m_OverrideSceneCullingMask: 6917529027641081856
636 | m_SceneIsLit: 0
637 | m_SceneLighting: 1
638 | m_2DMode: 0
639 | m_isRotationLocked: 0
640 | m_PlayAudio: 0
641 | m_AudioPlay: 0
642 | m_Position:
643 | m_Target: {x: 47.821312, y: 22.862965, z: 3.382852}
644 | speed: 2
645 | m_Value: {x: -2.2871625, y: 8.4963255, z: -20.20167}
646 | m_RenderMode: 0
647 | m_CameraMode:
648 | drawMode: 0
649 | name: Shaded
650 | section: Shading Mode
651 | m_ValidateTrueMetals: 0
652 | m_DoValidateTrueMetals: 0
653 | m_SceneViewState:
654 | m_AlwaysRefresh: 0
655 | showFog: 1
656 | showSkybox: 1
657 | showFlares: 1
658 | showImageEffects: 1
659 | showParticleSystems: 1
660 | showVisualEffectGraphs: 1
661 | m_FxEnabled: 1
662 | m_Grid:
663 | xGrid:
664 | m_Fade:
665 | m_Target: 0
666 | speed: 2
667 | m_Value: 0
668 | m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 0.4}
669 | m_Pivot: {x: 0, y: 0, z: 0}
670 | m_Size: {x: 0, y: 0}
671 | yGrid:
672 | m_Fade:
673 | m_Target: 1
674 | speed: 2
675 | m_Value: 1
676 | m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 0.4}
677 | m_Pivot: {x: 0, y: 0, z: 0}
678 | m_Size: {x: 1, y: 1}
679 | zGrid:
680 | m_Fade:
681 | m_Target: 0
682 | speed: 2
683 | m_Value: 0
684 | m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 0.4}
685 | m_Pivot: {x: 0, y: 0, z: 0}
686 | m_Size: {x: 1, y: 1}
687 | m_ShowGrid: 1
688 | m_GridAxis: 1
689 | m_gridOpacity: 0.5
690 | m_Rotation:
691 | m_Target: {x: 0.15034005, y: -0.70550025, z: 0.15731864, w: 0.6748133}
692 | speed: 2
693 | m_Value: {x: -0.0050810506, y: 0.95030534, z: -0.016021233, w: -0.3108653}
694 | m_Size:
695 | m_Target: 1.8221152
696 | speed: 2
697 | m_Value: 1.8221152
698 | m_Ortho:
699 | m_Target: 0
700 | speed: 2
701 | m_Value: 0
702 | m_CameraSettings:
703 | m_Speed: 0.32
704 | m_SpeedNormalized: 0.15577888
705 | m_SpeedMin: 0.01
706 | m_SpeedMax: 2
707 | m_EasingEnabled: 1
708 | m_EasingDuration: 0.4
709 | m_AccelerationEnabled: 1
710 | m_FieldOfViewHorizontalOrVertical: 60
711 | m_NearClip: 0.03
712 | m_FarClip: 10000
713 | m_DynamicClip: 0
714 | m_OcclusionCulling: 0
715 | m_LastSceneViewRotation: {x: -0.003208706, y: 0.73923934, z: -0.003583127, w: -0.6734645}
716 | m_LastSceneViewOrtho: 0
717 | m_ReplacementShader: {fileID: 0}
718 | m_ReplacementString:
719 | m_SceneVisActive: 1
720 | m_LastLockedObject: {fileID: 0}
721 | m_ViewIsLockedToObject: 0
722 | --- !u!114 &14
723 | MonoBehaviour:
724 | m_ObjectHideFlags: 52
725 | m_CorrespondingSourceObject: {fileID: 0}
726 | m_PrefabInstance: {fileID: 0}
727 | m_PrefabAsset: {fileID: 0}
728 | m_GameObject: {fileID: 0}
729 | m_Enabled: 1
730 | m_EditorHideFlags: 1
731 | m_Script: {fileID: 12061, guid: 0000000000000000e000000000000000, type: 0}
732 | m_Name:
733 | m_EditorClassIdentifier:
734 | m_MinSize: {x: 200, y: 200}
735 | m_MaxSize: {x: 4000, y: 4000}
736 | m_TitleContent:
737 | m_Text: Hierarchy
738 | m_Image: {fileID: 7966133145522015247, guid: 0000000000000000d000000000000000,
739 | type: 0}
740 | m_Tooltip:
741 | m_Pos:
742 | serializedVersion: 2
743 | x: 8
744 | y: 81
745 | width: 981
746 | height: 1088
747 | m_SerializedDataModeController:
748 | m_DataMode: 0
749 | m_PreferredDataMode: 0
750 | m_SupportedDataModes:
751 | isAutomatic: 1
752 | m_ViewDataDictionary: {fileID: 0}
753 | m_OverlayCanvas:
754 | m_LastAppliedPresetName: Default
755 | m_SaveData: []
756 | m_OverlaysVisible: 1
757 | m_SceneHierarchy:
758 | m_TreeViewState:
759 | scrollPos: {x: 0, y: 0}
760 | m_SelectedIDs:
761 | m_LastClickedID: 0
762 | m_ExpandedIDs: ea0070fff20070ff9e0770ff5e7070ffe48571ffe88571fff08571ff9c8671ff5cd471ff5ed973ff62d973ff76d973ff7ad973ffcad973ff2adb73ffcee373ff90ec73ff96ec73ff50ca7aff56ca7aff7eca7affc2167bffc2967cff669f7cff28a87cff2ea87cffe2e57eff9aea7eff2af580ffcefd80ff900681ff960681ffb03e83ffc24883ff525385fff65b85ffb86485ffbe6485ff34c389ff38c389ff3ec389ffe2cc89ffe6cc89ffeccc89ff3ed189ff42d189ff48d189ff12d589ff16d589ff1cd589ff30d589ff52db89ff56db89ff5adb89ff60db89ffd0de89ffd4de89ffd8de89ffdede89ffaafa89ffaefa89ffb2fa89ffb6fa89ff80b19aff84b19aff88b19aff1e5fa0ff225fa0ff925fa0ff2417a1ff8ae6a9ff5017abff5417abff3c3cabff403cabff443cabff985cb2ff9c5cb2ffa05cb2ffb25cb2ffb65cb2ffba5cb2ff2e70bafff4a0bbfff8a0bbff9630ccff9a30ccff9e30ccff7eb5cfff82b5cfff62d6cfff66d6cfff6ad6cfff2ed8cfff32d8cfff36d8cfffb609d1ffc609d1ff882ad2ff8c2ad2ff7242d3ff7642d3ff185dd3ff8a82daff8e82daff6055dbffd2bddeffdaebdfffdeebdfffbe36f2ffc236f2ff3238f2ff6267f2ff2268f2ffb80af3ffbc0af3ff2e24f3ff503bf7ff603bf7ff6e3bf7ff723bf7ffa89ef7ffa841fbff7c5cfeffea5cfeffee5cfeff84c5feffbab9fffffab9fffffeb9ffff0ebaffff42f6ffff46f6ffff4af6ffff4ef6ffff30fbffff
763 | m_RenameOverlay:
764 | m_UserAcceptedRename: 0
765 | m_Name:
766 | m_OriginalName:
767 | m_EditFieldRect:
768 | serializedVersion: 2
769 | x: 0
770 | y: 0
771 | width: 0
772 | height: 0
773 | m_UserData: 0
774 | m_IsWaitingForDelay: 0
775 | m_IsRenaming: 0
776 | m_OriginalEventType: 11
777 | m_IsRenamingFilename: 0
778 | m_ClientGUIView: {fileID: 9}
779 | m_SearchString:
780 | m_ExpandedScenes: []
781 | m_CurrenRootInstanceID: 0
782 | m_LockTracker:
783 | m_IsLocked: 0
784 | m_CurrentSortingName: TransformSorting
785 | m_WindowGUID: 67d5c50986df7624090177cf88ff4909
786 | --- !u!114 &15
787 | MonoBehaviour:
788 | m_ObjectHideFlags: 52
789 | m_CorrespondingSourceObject: {fileID: 0}
790 | m_PrefabInstance: {fileID: 0}
791 | m_PrefabAsset: {fileID: 0}
792 | m_GameObject: {fileID: 0}
793 | m_Enabled: 1
794 | m_EditorHideFlags: 1
795 | m_Script: {fileID: 12019, guid: 0000000000000000e000000000000000, type: 0}
796 | m_Name:
797 | m_EditorClassIdentifier:
798 | m_MinSize: {x: 275, y: 50}
799 | m_MaxSize: {x: 4000, y: 4000}
800 | m_TitleContent:
801 | m_Text: Inspector
802 | m_Image: {fileID: -2667387946076563598, guid: 0000000000000000d000000000000000,
803 | type: 0}
804 | m_Tooltip:
805 | m_Pos:
806 | serializedVersion: 2
807 | x: 2650
808 | y: 81
809 | width: 817
810 | height: 1262
811 | m_SerializedDataModeController:
812 | m_DataMode: 0
813 | m_PreferredDataMode: 0
814 | m_SupportedDataModes:
815 | isAutomatic: 1
816 | m_ViewDataDictionary: {fileID: 0}
817 | m_OverlayCanvas:
818 | m_LastAppliedPresetName: Default
819 | m_SaveData: []
820 | m_OverlaysVisible: 1
821 | m_ObjectsLockedBeforeSerialization: []
822 | m_InstanceIDsLockedBeforeSerialization:
823 | m_PreviewResizer:
824 | m_CachedPref: 433
825 | m_ControlHash: -371814159
826 | m_PrefName: Preview_InspectorPreview
827 | m_LastInspectedObjectInstanceID: -1
828 | m_LastVerticalScrollValue: 0
829 | m_GlobalObjectId:
830 | m_InspectorMode: 0
831 | m_LockTracker:
832 | m_IsLocked: 0
833 | m_PreviewWindow: {fileID: 0}
834 |
--------------------------------------------------------------------------------
/CathodeEditorUnity/Assets/Scripts/AlienScene.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using UnityEngine;
3 | using CATHODE;
4 | using System.IO;
5 | using CathodeLib;
6 | using CATHODE.LEGACY;
7 | using static CATHODE.LEGACY.ShadersPAK;
8 | using System.Threading.Tasks;
9 | using CATHODE.Scripting;
10 | using System.Linq;
11 | using CATHODE.Scripting.Internal;
12 | using System;
13 | using UnityEditor;
14 | using System.Collections;
15 | using System.Resources;
16 | using System.Security.Principal;
17 | using UnityEngine.Animations;
18 |
19 | public class AlienScene : MonoBehaviour
20 | {
21 | public Action OnLoaded;
22 |
23 | private string _levelName = "";
24 | public string LevelName => _levelName;
25 |
26 | private GameObject _parentGameObject = null;
27 | public GameObject ParentGameObject => _parentGameObject;
28 |
29 | private Composite _loadedComposite = null;
30 | public uint CompositeID => _loadedComposite == null ? 0 : _loadedComposite.shortGUID.ToUInt32();
31 | public string CompositeIDString => _loadedComposite == null || _loadedComposite.shortGUID == ShortGuid.Invalid ? "" : _loadedComposite.shortGUID.ToByteString();
32 | public string CompositeName => _loadedComposite == null ? "" : _loadedComposite.name;
33 |
34 | private Dictionary _materials = new Dictionary();
35 | private Dictionary _materialSupport = new Dictionary();
36 | private Dictionary _modelGOs = new Dictionary();
37 |
38 | private Dictionary> _compositeGameObjects = new Dictionary>();
39 | private Dictionary _gameObjectEntities = new Dictionary();
40 |
41 | private CommandsEditorConnection _client;
42 |
43 | IEnumerator Start()
44 | {
45 | _client = GetComponent();
46 |
47 | yield return new WaitForEndOfFrame();
48 |
49 | #if UNITY_EDITOR
50 | try
51 | {
52 | SceneView.FocusWindowIfItsOpen(typeof(SceneView));
53 | EditorWindow.GetWindow(typeof(EditorWindow).Assembly.GetType("UnityEditor.GameView")).Close();
54 | }
55 | catch { }
56 | #endif
57 | }
58 |
59 | private void ResetLevel()
60 | {
61 | if (_parentGameObject != null)
62 | Destroy(_parentGameObject);
63 |
64 | _materials.Clear();
65 | _materialSupport.Clear();
66 | _modelGOs.Clear();
67 |
68 | LevelContent.Reset();
69 | }
70 |
71 | /* Load the content for a level */
72 | public void LoadLevel(string level)
73 | {
74 | if (level == null || level == "" || _client.PathToAI == "")
75 | return;
76 |
77 | Debug.Log("Loading level " + level + "...");
78 |
79 | ResetLevel();
80 |
81 | _levelName = level;
82 | LevelContent.Load(_client.PathToAI, level);
83 | }
84 |
85 | /* Populate the scene with a given Composite */
86 | public void PopulateComposite(ShortGuid guid)
87 | {
88 | if (!LevelContent.Loaded) return;
89 |
90 | _compositeGameObjects.Clear();
91 | _gameObjectEntities.Clear();
92 |
93 | if (_parentGameObject != null)
94 | Destroy(_parentGameObject);
95 |
96 | _parentGameObject = new GameObject(_levelName);
97 | _parentGameObject.hideFlags = HideFlags.HideInHierarchy | HideFlags.DontSave;
98 | _parentGameObject.isStatic = true;
99 |
100 | Composite comp = LevelContent.CommandsPAK.GetComposite(guid);
101 | Debug.Log("Loading composite " + comp?.name + "...");
102 | _loadedComposite = comp;
103 | AddCompositeInstance(comp, _parentGameObject, null);
104 |
105 | OnLoaded?.Invoke();
106 | }
107 |
108 | private void AddCompositeInstance(Composite composite, GameObject compositeGO, Entity parentEntity)
109 | {
110 | if (composite == null) return;
111 |
112 | if (_compositeGameObjects.ContainsKey(composite.shortGUID))
113 | {
114 | _compositeGameObjects[composite.shortGUID].Add(compositeGO);
115 | }
116 | else
117 | {
118 | List compositeGOs = new List();
119 | compositeGOs.Add(compositeGO);
120 | _compositeGameObjects.Add(composite.shortGUID, compositeGOs);
121 | }
122 |
123 | foreach (Entity entity in composite.functions)
124 | AddEntity(composite, entity, compositeGO);
125 | foreach (Entity entity in composite.variables)
126 | AddEntity(composite, entity, compositeGO);
127 | foreach (Entity entity in composite.aliases)
128 | AddEntity(composite, entity, compositeGO);
129 | foreach (Entity entity in composite.proxies)
130 | AddEntity(composite, entity, compositeGO);
131 | }
132 |
133 | /* Remove all instances of a given Composite in the scene */
134 | public void RemoveComposite(ShortGuid composite)
135 | {
136 | if (_compositeGameObjects.ContainsKey(composite))
137 | {
138 | foreach (GameObject compositeInstance in _compositeGameObjects[composite])
139 | {
140 | if (compositeInstance != null)
141 | {
142 | Destroy(compositeInstance);
143 | _gameObjectEntities.Remove(compositeInstance);
144 | }
145 | }
146 | _compositeGameObjects.Remove(composite);
147 | }
148 | }
149 |
150 | /* Add an Entity to all instances of its contained Composite within the scene */
151 | public void AddEntity(ShortGuid composite, ShortGuid entity)
152 | {
153 | string entityGameObjectName = entity.ToUInt32().ToString();
154 | if (_compositeGameObjects.ContainsKey(composite))
155 | {
156 | foreach (GameObject compositeInstance in _compositeGameObjects[composite])
157 | {
158 | if (compositeInstance != null)
159 | {
160 | Composite c = LevelContent.CommandsPAK.Entries.FirstOrDefault(o => o.shortGUID == composite);
161 | Entity e = c.GetEntityByID(entity);
162 | if (c != null && e != null)
163 | {
164 | AddEntity(c, e, compositeInstance);
165 | }
166 | }
167 | }
168 | }
169 | }
170 |
171 | private void AddEntity(Composite composite, Entity entity, GameObject parentGO)
172 | {
173 | GetEntityTransform(entity, out Vector3 position, out Vector3 rotation);
174 |
175 | GameObject entityGO = new GameObject(entity.shortGUID.ToUInt32().ToString());
176 | entityGO.transform.parent = parentGO.transform;
177 | entityGO.transform.SetLocalPositionAndRotation(position, Quaternion.Euler(rotation));
178 | entityGO.hideFlags = HideFlags.HideInHierarchy | HideFlags.DontSave;
179 | entityGO.isStatic = true;
180 | _gameObjectEntities.Add(entityGO, entity);
181 |
182 | switch (entity.variant)
183 | {
184 | //Create mapped entity which can override original data
185 | case EntityVariant.ALIAS:
186 | {
187 | AliasEntity alias = (AliasEntity)entity;
188 | GameObject aliasedGO = GetGameObject(EntityPathToGUIDList(alias.alias), parentGO.transform);
189 | if (aliasedGO != null)
190 | {
191 | aliasedGO.tag = "pointed";
192 | entityGO.AddComponent().PointedEntity = aliasedGO;
193 | if (alias.GetParameter("position") != null)
194 | aliasedGO.transform.SetLocalPositionAndRotation(position, Quaternion.Euler(rotation));
195 | }
196 | }
197 | break;
198 | case EntityVariant.PROXY:
199 | {
200 | ProxyEntity proxy = (ProxyEntity)entity;
201 | GameObject proxiedGO = GetGameObject(EntityPathToGUIDList(proxy.proxy), ParentGameObject.transform);
202 | if (proxiedGO != null)
203 | {
204 | proxiedGO.tag = "pointed";
205 | entityGO.AddComponent().PointedEntity = proxiedGO;
206 | if (proxy.GetParameter("position") != null)
207 | proxiedGO.transform.SetLocalPositionAndRotation(position, Quaternion.Euler(rotation));
208 | }
209 | }
210 | break;
211 |
212 | //Create base entity which provides its own data
213 | case EntityVariant.FUNCTION:
214 | {
215 | FunctionEntity function = (FunctionEntity)entity;
216 | if (!CommandsUtils.FunctionTypeExists(function.function))
217 | {
218 | Composite compositeNext = LevelContent.CommandsPAK.GetComposite(function.function);
219 | if (compositeNext != null)
220 | {
221 | AddCompositeInstance(compositeNext, entityGO, function);
222 | }
223 | }
224 | else
225 | {
226 | switch ((FunctionType)function.function.ToUInt32())
227 | {
228 | //Renderables
229 | case FunctionType.ModelReference:
230 | if (LevelContent.RemappedResources.ContainsKey(function))
231 | {
232 | //Using a resource mapping which has changed at runtime
233 | List> renderableElement = LevelContent.RemappedResources[function];
234 | for (int i = 0; i < renderableElement.Count; i++)
235 | {
236 | CreateRenderable(entityGO, renderableElement[i].Item1, renderableElement[i].Item2);
237 | }
238 | }
239 | else
240 | {
241 | //Using a resource mapping which was written to disk
242 | Parameter resourceParam = function.GetParameter("resource");
243 | if (resourceParam != null && resourceParam.content != null && resourceParam.content.dataType == DataType.RESOURCE)
244 | {
245 | cResource resource = (cResource)resourceParam.content;
246 | ResourceReference renderable = resource.GetResource(ResourceType.RENDERABLE_INSTANCE);
247 | if (renderable != null)
248 | {
249 | for (int i = 0; i < renderable.count; i++)
250 | {
251 | RenderableElements.Element renderableElement = LevelContent.RenderableREDS.Entries[renderable.index + i];
252 | CreateRenderable(entityGO, renderableElement.ModelIndex, renderableElement.MaterialIndex);
253 | }
254 | }
255 | }
256 | }
257 | break;
258 | }
259 | }
260 | }
261 | break;
262 | }
263 | }
264 |
265 | /* Select an Entity GameObject at a specific instance hierarchy */
266 | public void SelectEntity(List path)
267 | {
268 | GameObject gameObject = GetGameObject(path, ParentGameObject.transform);
269 | if (gameObject != null)
270 | {
271 | EntityOverride o = gameObject.GetComponent();
272 | if (o != null)
273 | {
274 | gameObject = o.PointedEntity;
275 | }
276 | }
277 | Selection.activeGameObject = gameObject;
278 |
279 | if (_client.FocusSelected)
280 | SceneView.FrameLastActiveSceneView();
281 | }
282 |
283 | private GameObject GetGameObject(List path, Transform parent)
284 | {
285 | try
286 | {
287 | Transform t = parent;
288 | for (int i = 0; i < path.Count; i++)
289 | t = t.Find(path[i].ToString());
290 | return t.gameObject;
291 | }
292 | catch
293 | {
294 | //This can fail if we're selecting an entity which isn't a function.
295 | //We should populate placeholders for these so we can still show the transforms probably.
296 | }
297 | return null;
298 | }
299 |
300 | private List EntityPathToGUIDList(EntityPath path)
301 | {
302 | List list = new List();
303 | foreach (ShortGuid guid in path.path)
304 | {
305 | if (guid == ShortGuid.Invalid) continue;
306 | list.Add(guid.ToUInt32());
307 | }
308 | return list;
309 | }
310 |
311 | /* Reposition all Entities in the scene with a new local position and rotation */
312 | public void RepositionEntity(ShortGuid composite, ShortGuid entity, Vector3 position, Quaternion rotation, bool fromPointer, bool pointedPos)
313 | {
314 | string entityGameObjectName = entity.ToUInt32().ToString();
315 | if (_compositeGameObjects.ContainsKey(composite))
316 | {
317 | foreach (GameObject compositeInstance in _compositeGameObjects[composite])
318 | {
319 | if (compositeInstance != null)
320 | {
321 | Transform compositeInstanceTransform = compositeInstance.transform;
322 | for (int i = 0; i < compositeInstanceTransform.childCount; i++)
323 | {
324 | Transform child = compositeInstanceTransform.GetChild(i);
325 | if (child.name == entityGameObjectName)
326 | {
327 | child.tag = pointedPos ? "pointed" : "Untagged";
328 | if (!(child.tag == "pointed" && !fromPointer))
329 | {
330 | child.localPosition = position;
331 | child.localRotation = rotation;
332 | }
333 | }
334 | }
335 | }
336 | }
337 | }
338 | }
339 |
340 | /* Remove all instances of a given Entity in the scene */
341 | public void RemoveEntity(ShortGuid composite, ShortGuid entity)
342 | {
343 | string entityGameObjectName = entity.ToUInt32().ToString();
344 | if (_compositeGameObjects.ContainsKey(composite))
345 | {
346 | foreach (GameObject compositeInstance in _compositeGameObjects[composite])
347 | {
348 | if (compositeInstance != null)
349 | {
350 | Transform compositeInstanceTransform = compositeInstance.transform;
351 | for (int i = 0; i < compositeInstanceTransform.childCount; i++)
352 | {
353 | Transform child = compositeInstanceTransform.GetChild(i);
354 | if (child.name == entityGameObjectName)
355 | {
356 | EntityOverride o = child.GetComponent();
357 | if (o != null)
358 | {
359 | //Reset aliased/proxied entity back to its un-overridden transform
360 | GetEntityTransform(_gameObjectEntities[o.PointedEntity], out Vector3 position, out Vector3 rotation);
361 | o.PointedEntity.transform.SetLocalPositionAndRotation(position, Quaternion.Euler(rotation));
362 | o.PointedEntity.tag = "Untagged";
363 | }
364 | Destroy(child.gameObject);
365 | _gameObjectEntities.Remove(child.gameObject);
366 | }
367 | }
368 | }
369 | }
370 | }
371 | }
372 |
373 | /* Update the MeshRenderers for all Entities in the scene */
374 | public void UpdateRenderable(ShortGuid composite, ShortGuid entity, List> renderables)
375 | {
376 | //todo: this should handle overrides
377 | string entityGameObjectName = entity.ToUInt32().ToString();
378 | if (_compositeGameObjects.ContainsKey(composite))
379 | {
380 | foreach (GameObject compositeInstance in _compositeGameObjects[composite])
381 | {
382 | if (compositeInstance != null)
383 | {
384 | Transform compositeInstanceTransform = compositeInstance.transform;
385 | for (int i = 0; i < compositeInstanceTransform.childCount; i++)
386 | {
387 | Transform child = compositeInstanceTransform.GetChild(i);
388 | if (child.name == entityGameObjectName)
389 | {
390 | for (int x = 0; x < child.childCount; x++)
391 | {
392 | Destroy(child.GetChild(x).gameObject);
393 | }
394 | for (int x = 0; x < renderables.Count; x++)
395 | {
396 | CreateRenderable(child.gameObject, renderables[x].Item1, renderables[x].Item2);
397 | }
398 | }
399 | }
400 | }
401 | }
402 | }
403 | }
404 |
405 | private void CreateRenderable(GameObject parent, int modelIndex, int materialIndex)
406 | {
407 | GameObjectHolder holder = GetModel(modelIndex);
408 | if (holder == null)
409 | {
410 | Debug.Log("Attempted to load non-parsed model (" + modelIndex + "). Skipping!");
411 | return;
412 | }
413 |
414 | Material material = GetMaterial((materialIndex == -1) ? holder.DefaultMaterial : materialIndex);
415 | if (!_materialSupport[material])
416 | return;
417 |
418 | GameObject newModelSpawn = new GameObject();
419 | newModelSpawn.transform.parent = parent.transform;
420 | newModelSpawn.transform.localPosition = Vector3.zero;
421 | newModelSpawn.transform.localRotation = Quaternion.identity;
422 | newModelSpawn.name = holder.MainMesh.name;
423 | newModelSpawn.AddComponent().sharedMesh = holder.MainMesh;
424 | newModelSpawn.hideFlags = HideFlags.NotEditable | HideFlags.HideInHierarchy;
425 |
426 | MeshRenderer renderer = newModelSpawn.AddComponent();
427 | renderer.sharedMaterial = material;
428 | renderer.reflectionProbeUsage = UnityEngine.Rendering.ReflectionProbeUsage.Off;
429 | renderer.lightProbeUsage = UnityEngine.Rendering.LightProbeUsage.Off;
430 | renderer.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off;
431 | renderer.receiveShadows = false;
432 | newModelSpawn.SetActive(_materialSupport[material]);
433 | }
434 |
435 | private bool GetEntityTransform(Entity entity, out Vector3 position, out Vector3 rotation)
436 | {
437 | position = Vector3.zero;
438 | rotation = Vector3.zero;
439 | if (entity == null) return false;
440 |
441 | Parameter positionParam = entity.GetParameter("position");
442 | if (positionParam != null && positionParam.content != null)
443 | {
444 | switch (positionParam.content.dataType)
445 | {
446 | case DataType.TRANSFORM:
447 | cTransform transform = (cTransform)positionParam.content;
448 | position = transform.position;
449 | rotation = transform.rotation;
450 | return true;
451 | }
452 | }
453 | return false;
454 | }
455 |
456 | private GameObjectHolder GetModel(int EntryIndex)
457 | {
458 | if (!_modelGOs.ContainsKey(EntryIndex))
459 | {
460 | Models.CS2.Component.LOD.Submesh submesh = LevelContent.ModelsPAK.GetAtWriteIndex(EntryIndex);
461 | if (submesh == null) return null;
462 | Models.CS2.Component.LOD lod = LevelContent.ModelsPAK.FindModelLODForSubmesh(submesh);
463 | Models.CS2 mesh = LevelContent.ModelsPAK.FindModelForSubmesh(submesh);
464 | Mesh thisMesh = submesh.ToMesh();
465 |
466 | GameObjectHolder ThisModelPart = new GameObjectHolder();
467 | ThisModelPart.Name = ((mesh == null) ? "" : mesh.Name) + ": " + ((lod == null) ? "" : lod.Name);
468 | ThisModelPart.MainMesh = thisMesh;
469 | ThisModelPart.DefaultMaterial = submesh.MaterialLibraryIndex;
470 | _modelGOs.Add(EntryIndex, ThisModelPart);
471 | }
472 | return _modelGOs[EntryIndex];
473 | }
474 |
475 | private Material GetMaterial(int MTLIndex)
476 | {
477 | if (!_materials.ContainsKey(MTLIndex))
478 | {
479 | Materials.Material InMaterial = LevelContent.ModelsMTL.GetAtWriteIndex(MTLIndex);
480 | int RemappedIndex = LevelContent.ShadersIDXRemap.Datas[InMaterial.ShaderIndex].Index;
481 | ShadersPAK.ShaderEntry Shader = LevelContent.ShadersPAK.Shaders[RemappedIndex];
482 |
483 | Material toReturn = new Material(UnityEngine.Shader.Find("Standard"));
484 | toReturn.name = InMaterial.Name;
485 |
486 | ShaderMaterialMetadata metadata = LevelContent.ShadersPAK.GetMaterialMetadataFromShader(InMaterial);
487 |
488 | switch (metadata.shaderCategory)
489 | {
490 | //Unsupported shader slot types - draw transparent for now
491 | case ShaderCategory.CA_SHADOWCASTER:
492 | case ShaderCategory.CA_DEFERRED:
493 | case ShaderCategory.CA_DEBUG:
494 | case ShaderCategory.CA_OCCLUSION_CULLING:
495 | case ShaderCategory.CA_FOGSPHERE:
496 | case ShaderCategory.CA_FOGPLANE:
497 | case ShaderCategory.CA_EFFECT_OVERLAY:
498 | case ShaderCategory.CA_DECAL:
499 | case ShaderCategory.CA_VOLUME_LIGHT:
500 | case ShaderCategory.CA_REFRACTION:
501 | toReturn.name += " (NOT RENDERED: " + metadata.shaderCategory.ToString() + ")";
502 | _materialSupport.Add(toReturn, false);
503 | return toReturn;
504 | }
505 | toReturn.name += " " + metadata.shaderCategory.ToString();
506 |
507 | for (int i = 0; i < Shader.Header.CSTCounts.Length; i++)
508 | {
509 | using (BinaryReader cstReader = new BinaryReader(new MemoryStream(LevelContent.ModelsMTL.CSTData[i])))
510 | {
511 | int baseOffset = (InMaterial.ConstantBuffers[i].Offset * 4);
512 |
513 | if (CSTIndexValid(metadata.cstIndexes.Diffuse0, ref Shader, i))
514 | {
515 | Vector4 colour = LoadFromCST(cstReader, baseOffset + (Shader.CSTLinks[i][metadata.cstIndexes.Diffuse0] * 4));
516 | toReturn.SetColor("_Color", colour);
517 | }
518 | }
519 | }
520 |
521 | _materialSupport.Add(toReturn, true);
522 | _materials.Add(MTLIndex, toReturn);
523 | }
524 | return _materials[MTLIndex];
525 | }
526 | private T LoadFromCST(BinaryReader cstReader, int offset)
527 | {
528 | cstReader.BaseStream.Position = offset;
529 | return Utilities.Consume(cstReader);
530 | }
531 | private bool CSTIndexValid(int cstIndex, ref ShadersPAK.ShaderEntry Shader, int i)
532 | {
533 | return cstIndex >= 0 && cstIndex < Shader.Header.CSTCounts[i] && (int)Shader.CSTLinks[i][cstIndex] != -1 && Shader.CSTLinks[i][cstIndex] != 255;
534 | }
535 | }
536 |
537 | //Temp wrapper for GameObject while we just want it in memory
538 | public class GameObjectHolder
539 | {
540 | public string Name;
541 | public Mesh MainMesh; //TODO: should this be contained in a globally referenced array?
542 | public int DefaultMaterial;
543 | }
544 |
545 | public static class LevelContent
546 | {
547 | static LevelContent()
548 | {
549 |
550 | }
551 |
552 | public static void Load(string aiPath, string levelName)
553 | {
554 | string levelPath = aiPath + "/DATA/ENV/PRODUCTION/" + levelName + "/";
555 | string worldPath = levelPath + "WORLD/";
556 | string renderablePath = levelPath + "RENDERABLE/";
557 |
558 | //The game has two hard-coded _PATCH overrides. We should use RENDERABLE from the non-patched folder.
559 | switch (levelName)
560 | {
561 | case "DLC/BSPNOSTROMO_RIPLEY_PATCH":
562 | case "DLC/BSPNOSTROMO_TWOTEAMS_PATCH":
563 | renderablePath = levelPath.Replace(levelName, levelName.Substring(0, levelName.Length - ("_PATCH").Length)) + "RENDERABLE/";
564 | break;
565 | }
566 |
567 | Parallel.For(0, 8, (i) =>
568 | {
569 | switch (i)
570 | {
571 | case 0:
572 | CommandsPAK = new Commands(worldPath + "COMMANDS.PAK");
573 | break;
574 | case 1:
575 | RenderableREDS = new RenderableElements(worldPath + "REDS.BIN");
576 | break;
577 | case 2:
578 | ResourcesBIN = new CATHODE.Resources(worldPath + "RESOURCES.BIN");
579 | break;
580 | case 3:
581 | ModelsCST = File.ReadAllBytes(renderablePath + "LEVEL_MODELS.CST");
582 | break;
583 | case 4:
584 | ModelsMTL = new Materials(renderablePath + "LEVEL_MODELS.MTL");
585 | break;
586 | case 5:
587 | ModelsPAK = new Models(renderablePath + "LEVEL_MODELS.PAK");
588 | break;
589 | case 6:
590 | ShadersPAK = new ShadersPAK(renderablePath + "LEVEL_SHADERS_DX11.PAK");
591 | break;
592 | case 7:
593 | ShadersIDXRemap = new IDXRemap(renderablePath + "LEVEL_SHADERS_DX11_IDX_REMAP.PAK");
594 | break;
595 | }
596 | });
597 | }
598 |
599 | public static void Reset()
600 | {
601 | CommandsPAK = null;
602 | RenderableREDS = null;
603 | ResourcesBIN = null;
604 | ModelsCST = null;
605 | ModelsMTL = null;
606 | ModelsPAK = null;
607 | ShadersPAK = null;
608 | ShadersIDXRemap = null;
609 | RemappedResources.Clear();
610 | }
611 |
612 | public static bool Loaded => CommandsPAK != null && CommandsPAK.Loaded;
613 |
614 | public static Commands CommandsPAK;
615 | public static RenderableElements RenderableREDS;
616 | public static CATHODE.Resources ResourcesBIN;
617 | public static byte[] ModelsCST;
618 | public static Materials ModelsMTL;
619 | public static Models ModelsPAK;
620 | public static ShadersPAK ShadersPAK;
621 | public static IDXRemap ShadersIDXRemap;
622 |
623 | //This acts as a temporary override for REDS.BIN mapping runtime changes from Commands Editor
624 | public static Dictionary>> RemappedResources = new Dictionary>>(); //Model Index, Material Index
625 | };
--------------------------------------------------------------------------------