Merge branch 'develop' into feature/skill-set-shortcut
This commit is contained in:
@@ -13,6 +13,7 @@ MonoBehaviour:
|
||||
m_Name: AddressableAssetGroupSortSettings
|
||||
m_EditorClassIdentifier:
|
||||
sortOrder:
|
||||
- 008967af9920048af80347b1adb673d4
|
||||
- 402389c9c8797a8489a1d8188e497c23
|
||||
- 17b5850382b624d15a322e51c0b9b7c7
|
||||
- af2f31e34f6644749bdd552abb39cb07
|
||||
|
||||
@@ -15,7 +15,7 @@ MonoBehaviour:
|
||||
m_DefaultGroup: 712e3991f28e549e7a56ee582a977810
|
||||
m_currentHash:
|
||||
serializedVersion: 2
|
||||
Hash: 0f380cb03d21b1c7c3b6d95fa1190c01
|
||||
Hash: 9b017ff3b9b83b6931883175497e6a95
|
||||
m_OptimizeCatalogSize: 0
|
||||
m_BuildRemoteCatalog: 0
|
||||
m_CatalogRequestsTimeout: 0
|
||||
@@ -60,6 +60,7 @@ MonoBehaviour:
|
||||
m_BuildAddressablesWithPlayerBuild: 0
|
||||
m_overridePlayerVersion: '[UnityEditor.PlayerSettings.bundleVersion]'
|
||||
m_GroupAssets:
|
||||
- {fileID: 11400000, guid: c99cbfd356e4d487b8da3554688ea241, type: 2}
|
||||
- {fileID: 11400000, guid: ba28219cd9e2e4e51817178f840965e8, type: 2}
|
||||
- {fileID: 11400000, guid: 0759296650e322743affabf844e4f32a, type: 2}
|
||||
- {fileID: 11400000, guid: 86ad1216662b54841a182d663f54030d, type: 2}
|
||||
|
||||
+1
-1
@@ -42,7 +42,7 @@ MonoBehaviour:
|
||||
m_AssetBundleProviderType:
|
||||
m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||
m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider
|
||||
m_UseDefaultSchemaSettings: 0
|
||||
m_UseDefaultSchemaSettings: 1
|
||||
m_SelectedPathPairIndex: 0
|
||||
m_BundleNaming: 0
|
||||
m_AssetLoadMode: 0
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: e5d17a21594effb4e9591490b009e7aa, type: 3}
|
||||
m_Name: Packed Assets_BundledAssetGroupSchema
|
||||
m_EditorClassIdentifier:
|
||||
m_Group: {fileID: 11400000, guid: c99cbfd356e4d487b8da3554688ea241, type: 2}
|
||||
m_InternalBundleIdMode: 1
|
||||
m_Compression: 1
|
||||
m_IncludeAddressInCatalog: 1
|
||||
m_IncludeGUIDInCatalog: 1
|
||||
m_IncludeLabelsInCatalog: 1
|
||||
m_InternalIdNamingMode: 0
|
||||
m_CacheClearBehavior: 0
|
||||
m_IncludeInBuild: 1
|
||||
m_BundledAssetProviderType:
|
||||
m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||
m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.BundledAssetProvider
|
||||
m_StripDownloadOptions: 0
|
||||
m_ForceUniqueProvider: 0
|
||||
m_UseAssetBundleCache: 0
|
||||
m_UseAssetBundleCrc: 1
|
||||
m_UseAssetBundleCrcForCachedBundles: 1
|
||||
m_UseUWRForLocalBundles: 0
|
||||
m_Timeout: 0
|
||||
m_ChunkedTransfer: 0
|
||||
m_RedirectLimit: -1
|
||||
m_RetryCount: 0
|
||||
m_BuildPath:
|
||||
m_Id: 506465302ec864e8eb6eb8e0d2ee7b2c
|
||||
m_LoadPath:
|
||||
m_Id: 71015b41342024feebebb329061472f1
|
||||
m_BundleMode: 0
|
||||
m_AssetBundleProviderType:
|
||||
m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||
m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider
|
||||
m_UseDefaultSchemaSettings: 1
|
||||
m_SelectedPathPairIndex: 0
|
||||
m_BundleNaming: 0
|
||||
m_AssetLoadMode: 0
|
||||
+2
-2
@@ -1,8 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 53144361e2a90ed4e918b2f7dd90ceec
|
||||
guid: 5b36e63528ecc40318a3353b135e4729
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 4300000
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,16 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 5834b5087d578d24c926ce20cd31e6d6, type: 3}
|
||||
m_Name: a61_ContentUpdateGroupSchema
|
||||
m_EditorClassIdentifier:
|
||||
m_Group: {fileID: 11400000, guid: c99cbfd356e4d487b8da3554688ea241, type: 2}
|
||||
m_StaticContent: 0
|
||||
+2
-2
@@ -1,8 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ddc0695fd6ea2f04bb8012d070f14971
|
||||
guid: a218b6667780842c9921480371d0f2d6
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 4300000
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
+1
-1
@@ -42,7 +42,7 @@ MonoBehaviour:
|
||||
m_AssetBundleProviderType:
|
||||
m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||
m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider
|
||||
m_UseDefaultSchemaSettings: 0
|
||||
m_UseDefaultSchemaSettings: 1
|
||||
m_SelectedPathPairIndex: 0
|
||||
m_BundleNaming: 0
|
||||
m_AssetLoadMode: 0
|
||||
|
||||
@@ -42,7 +42,7 @@ MonoBehaviour:
|
||||
m_AssetBundleProviderType:
|
||||
m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||
m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider
|
||||
m_UseDefaultSchemaSettings: 0
|
||||
m_UseDefaultSchemaSettings: 1
|
||||
m_SelectedPathPairIndex: 0
|
||||
m_BundleNaming: 0
|
||||
m_AssetLoadMode: 0
|
||||
|
||||
+1
-1
@@ -38,7 +38,7 @@ MonoBehaviour:
|
||||
m_Id: 506465302ec864e8eb6eb8e0d2ee7b2c
|
||||
m_LoadPath:
|
||||
m_Id: 71015b41342024feebebb329061472f1
|
||||
m_BundleMode: 1
|
||||
m_BundleMode: 0
|
||||
m_AssetBundleProviderType:
|
||||
m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||
m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
+2
-2
@@ -1,8 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7ef57348cc14e2c44b0d93d82309fb45
|
||||
guid: c99cbfd356e4d487b8da3554688ea241
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 4300000
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 365c467577a8ce44495eb488cd707559
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 4300000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
File diff suppressed because one or more lines are too long
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c4d86c66a7bc42a41a047326db03bd43
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 4300000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Executable → Regular
-23
@@ -500,7 +500,6 @@ GameObject:
|
||||
- component: {fileID: 6260077963306472656}
|
||||
- component: {fileID: 6924064708529338815}
|
||||
- component: {fileID: 2097822689343174008}
|
||||
- component: {fileID: 5873338482207652341}
|
||||
m_Layer: 7
|
||||
m_Name: CDBrushCollider
|
||||
m_TagString: Untagged
|
||||
@@ -576,25 +575,3 @@ MeshRenderer:
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!64 &5873338482207652341
|
||||
MeshCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7688203334091480705}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 5
|
||||
m_Convex: 0
|
||||
m_CookingOptions: 30
|
||||
m_Mesh: {fileID: 4300000, guid: 3b4b43e9a49fce34483f4fff68b12ed5, type: 2}
|
||||
|
||||
Executable → Regular
-23
@@ -97,7 +97,6 @@ GameObject:
|
||||
- component: {fileID: 1272478507112192081}
|
||||
- component: {fileID: 6954454004377796954}
|
||||
- component: {fileID: 5676648177530222505}
|
||||
- component: {fileID: 111723668987366639}
|
||||
m_Layer: 7
|
||||
m_Name: CDBrushCollider
|
||||
m_TagString: Untagged
|
||||
@@ -173,28 +172,6 @@ MeshRenderer:
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!64 &111723668987366639
|
||||
MeshCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2365263632891046891}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 5
|
||||
m_Convex: 0
|
||||
m_CookingOptions: 30
|
||||
m_Mesh: {fileID: 4300000, guid: 7167b51f0e014db43931b4b096ef729c, type: 2}
|
||||
--- !u!1 &2558591535423843765
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
Executable → Regular
-23
@@ -220,7 +220,6 @@ GameObject:
|
||||
- component: {fileID: 7885315490406352003}
|
||||
- component: {fileID: 7891995263496077361}
|
||||
- component: {fileID: 8533083944117625521}
|
||||
- component: {fileID: 5548688014515440000}
|
||||
m_Layer: 7
|
||||
m_Name: CDBrushCollider
|
||||
m_TagString: Untagged
|
||||
@@ -296,28 +295,6 @@ MeshRenderer:
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!64 &5548688014515440000
|
||||
MeshCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6707970108274111613}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 5
|
||||
m_Convex: 0
|
||||
m_CookingOptions: 30
|
||||
m_Mesh: {fileID: 4300000, guid: 6d41cce33febd644594eae4ab41e09f9, type: 2}
|
||||
--- !u!1 &8532581071285473490
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
Executable → Regular
-110
@@ -1,114 +1,5 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &162276849537940635
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 4311722346832967919}
|
||||
- component: {fileID: 4863362442310225935}
|
||||
- component: {fileID: 5348732139172174562}
|
||||
- component: {fileID: 57484829182898907}
|
||||
m_Layer: 7
|
||||
m_Name: CDBrushCollider
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &4311722346832967919
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 162276849537940635}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0.15931526, y: 0.38785443, z: -0.020662844, w: 0.9076126}
|
||||
m_LocalPosition: {x: 500.026, y: -91.873314, z: -178.63507}
|
||||
m_LocalScale: {x: 1.4526103, y: 1.4526103, z: 1.4526105}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 2653840171912898298}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!33 &4863362442310225935
|
||||
MeshFilter:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 162276849537940635}
|
||||
m_Mesh: {fileID: 4300000, guid: e4959e002a47e2d45885c510266d636d, type: 2}
|
||||
--- !u!23 &5348732139172174562
|
||||
MeshRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 162276849537940635}
|
||||
m_Enabled: 0
|
||||
m_CastShadows: 1
|
||||
m_ReceiveShadows: 1
|
||||
m_DynamicOccludee: 1
|
||||
m_StaticShadowCaster: 0
|
||||
m_MotionVectors: 1
|
||||
m_LightProbeUsage: 1
|
||||
m_ReflectionProbeUsage: 1
|
||||
m_RayTracingMode: 2
|
||||
m_RayTraceProcedural: 0
|
||||
m_RayTracingAccelStructBuildFlagsOverride: 0
|
||||
m_RayTracingAccelStructBuildFlags: 1
|
||||
m_SmallMeshCulling: 1
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
- {fileID: 0}
|
||||
m_StaticBatchInfo:
|
||||
firstSubMesh: 0
|
||||
subMeshCount: 0
|
||||
m_StaticBatchRoot: {fileID: 0}
|
||||
m_ProbeAnchor: {fileID: 0}
|
||||
m_LightProbeVolumeOverride: {fileID: 0}
|
||||
m_ScaleInLightmap: 1
|
||||
m_ReceiveGI: 1
|
||||
m_PreserveUVs: 0
|
||||
m_IgnoreNormalsForChartDetection: 0
|
||||
m_ImportantGI: 0
|
||||
m_StitchLightmapSeams: 1
|
||||
m_SelectedEditorRenderState: 3
|
||||
m_MinimumChartSize: 4
|
||||
m_AutoUVMaxDistance: 0.5
|
||||
m_AutoUVMaxAngle: 89
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_SortingLayerID: 0
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!64 &57484829182898907
|
||||
MeshCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 162276849537940635}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 5
|
||||
m_Convex: 0
|
||||
m_CookingOptions: 30
|
||||
m_Mesh: {fileID: 4300000, guid: e4959e002a47e2d45885c510266d636d, type: 2}
|
||||
--- !u!1 &237163526419955074
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -143,7 +34,6 @@ Transform:
|
||||
- {fileID: 1213903367290049457}
|
||||
- {fileID: 5115618208096756319}
|
||||
- {fileID: 4087501762797341499}
|
||||
- {fileID: 4311722346832967919}
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &1722554146353478217
|
||||
|
||||
Executable → Regular
-23
@@ -48,7 +48,6 @@ GameObject:
|
||||
- component: {fileID: 1886932868310864665}
|
||||
- component: {fileID: 6818077690923205151}
|
||||
- component: {fileID: 2696975620091867110}
|
||||
- component: {fileID: 2319329501012638020}
|
||||
m_Layer: 7
|
||||
m_Name: CDBrushCollider
|
||||
m_TagString: Untagged
|
||||
@@ -124,28 +123,6 @@ MeshRenderer:
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!64 &2319329501012638020
|
||||
MeshCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1432700883719614557}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 5
|
||||
m_Convex: 0
|
||||
m_CookingOptions: 30
|
||||
m_Mesh: {fileID: 4300000, guid: 72d6dcd27b244a14db8236b47eea949b, type: 2}
|
||||
--- !u!1 &1605960382197984269
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
Executable → Regular
-23
@@ -355,7 +355,6 @@ GameObject:
|
||||
- component: {fileID: 8022290583310896104}
|
||||
- component: {fileID: 7095869334588932929}
|
||||
- component: {fileID: 4388768520658038665}
|
||||
- component: {fileID: 3303088415430208345}
|
||||
m_Layer: 7
|
||||
m_Name: CDBrushCollider
|
||||
m_TagString: Untagged
|
||||
@@ -431,28 +430,6 @@ MeshRenderer:
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!64 &3303088415430208345
|
||||
MeshCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5964155386603945467}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 5
|
||||
m_Convex: 0
|
||||
m_CookingOptions: 30
|
||||
m_Mesh: {fileID: 4300000, guid: a810d1f915af5ac4e8f29fe6d1c860ae, type: 2}
|
||||
--- !u!1 &8485653319892060222
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
Executable → Regular
-23
@@ -183,7 +183,6 @@ GameObject:
|
||||
- component: {fileID: 8699785317774812545}
|
||||
- component: {fileID: 1619774552744806451}
|
||||
- component: {fileID: 1642336561233507155}
|
||||
- component: {fileID: 7426294853798879440}
|
||||
m_Layer: 7
|
||||
m_Name: CDBrushCollider
|
||||
m_TagString: Untagged
|
||||
@@ -259,28 +258,6 @@ MeshRenderer:
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!64 &7426294853798879440
|
||||
MeshCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3567677589401859247}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 5
|
||||
m_Convex: 0
|
||||
m_CookingOptions: 30
|
||||
m_Mesh: {fileID: 4300000, guid: 63b4ebdd102be0f4297897ddad4da3ea, type: 2}
|
||||
--- !u!1 &5306397819925356347
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
Executable → Regular
-23
@@ -220,7 +220,6 @@ GameObject:
|
||||
- component: {fileID: 4806900295563345534}
|
||||
- component: {fileID: 2608083044836976025}
|
||||
- component: {fileID: 7400401023117931811}
|
||||
- component: {fileID: 2943045924661244610}
|
||||
m_Layer: 7
|
||||
m_Name: CDBrushCollider
|
||||
m_TagString: Untagged
|
||||
@@ -296,28 +295,6 @@ MeshRenderer:
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!64 &2943045924661244610
|
||||
MeshCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6095465457261515626}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 5
|
||||
m_Convex: 0
|
||||
m_CookingOptions: 30
|
||||
m_Mesh: {fileID: 4300000, guid: 030b82705050deb4397f5314d382eb57, type: 2}
|
||||
--- !u!1 &6554793636294823945
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
Executable → Regular
-23
@@ -11,7 +11,6 @@ GameObject:
|
||||
- component: {fileID: 6836681143920161925}
|
||||
- component: {fileID: 2847497422737408215}
|
||||
- component: {fileID: 7316274401608088614}
|
||||
- component: {fileID: 1629699763935440240}
|
||||
m_Layer: 7
|
||||
m_Name: CDBrushCollider
|
||||
m_TagString: Untagged
|
||||
@@ -87,28 +86,6 @@ MeshRenderer:
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!64 &1629699763935440240
|
||||
MeshCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 978247748052176817}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 5
|
||||
m_Convex: 0
|
||||
m_CookingOptions: 30
|
||||
m_Mesh: {fileID: 4300000, guid: e80ef4d88d5675d4abf45b94ddf84727, type: 2}
|
||||
--- !u!1 &1207623610257076463
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
Executable → Regular
-23
@@ -205,7 +205,6 @@ GameObject:
|
||||
- component: {fileID: 8056852165895731619}
|
||||
- component: {fileID: 5717980926624631709}
|
||||
- component: {fileID: 1816287466655669623}
|
||||
- component: {fileID: 8182003877393767394}
|
||||
m_Layer: 7
|
||||
m_Name: CDBrushCollider
|
||||
m_TagString: Untagged
|
||||
@@ -281,28 +280,6 @@ MeshRenderer:
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!64 &8182003877393767394
|
||||
MeshCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3691833553022461459}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 5
|
||||
m_Convex: 0
|
||||
m_CookingOptions: 30
|
||||
m_Mesh: {fileID: 4300000, guid: 506b97efd97d3134ab1478573294d72d, type: 2}
|
||||
--- !u!1 &4725197459033648109
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
Executable → Regular
-23
@@ -11,7 +11,6 @@ GameObject:
|
||||
- component: {fileID: 6100972977244074358}
|
||||
- component: {fileID: 8406265550067961881}
|
||||
- component: {fileID: 3698847989160730107}
|
||||
- component: {fileID: 2624971715755208210}
|
||||
m_Layer: 7
|
||||
m_Name: CDBrushCollider
|
||||
m_TagString: Untagged
|
||||
@@ -87,28 +86,6 @@ MeshRenderer:
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!64 &2624971715755208210
|
||||
MeshCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 795290371116926576}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 5
|
||||
m_Convex: 0
|
||||
m_CookingOptions: 30
|
||||
m_Mesh: {fileID: 4300000, guid: b357e906aab033d498be1fbfb36d0a48, type: 2}
|
||||
--- !u!1 &1548953554318899352
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
Executable → Regular
-23
@@ -134,7 +134,6 @@ GameObject:
|
||||
- component: {fileID: 8134321275215362894}
|
||||
- component: {fileID: 8229299775838313540}
|
||||
- component: {fileID: 5106730430569272475}
|
||||
- component: {fileID: 5576203631695248188}
|
||||
m_Layer: 7
|
||||
m_Name: CDBrushCollider
|
||||
m_TagString: Untagged
|
||||
@@ -210,28 +209,6 @@ MeshRenderer:
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!64 &5576203631695248188
|
||||
MeshCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1011581529230118655}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 5
|
||||
m_Convex: 0
|
||||
m_CookingOptions: 30
|
||||
m_Mesh: {fileID: 4300000, guid: 2663fb7a9239efb4687d17bb1f5bfd59, type: 2}
|
||||
--- !u!1 &1160978665663325039
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
Executable → Regular
-23
@@ -328,7 +328,6 @@ GameObject:
|
||||
- component: {fileID: 4594729107668821461}
|
||||
- component: {fileID: 9094786863907103764}
|
||||
- component: {fileID: 5367830372855388191}
|
||||
- component: {fileID: 8902155689154062030}
|
||||
m_Layer: 7
|
||||
m_Name: CDBrushCollider
|
||||
m_TagString: Untagged
|
||||
@@ -404,28 +403,6 @@ MeshRenderer:
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!64 &8902155689154062030
|
||||
MeshCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4856590923826132802}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 5
|
||||
m_Convex: 0
|
||||
m_CookingOptions: 30
|
||||
m_Mesh: {fileID: 4300000, guid: 20ed27fca939f3e4eab004fac8889a49, type: 2}
|
||||
--- !u!1 &7091370855467591491
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
Executable → Regular
-110
@@ -143,7 +143,6 @@ Transform:
|
||||
- {fileID: 642723427162609800}
|
||||
- {fileID: 5468985526413160933}
|
||||
- {fileID: 4305396298280240728}
|
||||
- {fileID: 2374675958549553526}
|
||||
- {fileID: 890310756070526932}
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
@@ -427,115 +426,6 @@ MeshRenderer:
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!1 &4363002964825893588
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 2374675958549553526}
|
||||
- component: {fileID: 4527544251728066118}
|
||||
- component: {fileID: 5311223652641166228}
|
||||
- component: {fileID: 3754629199141232990}
|
||||
m_Layer: 7
|
||||
m_Name: CDBrushCollider
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &2374675958549553526
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4363002964825893588}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: -0.009164956, y: -0.35673073, z: 0.033771332, w: 0.93355167}
|
||||
m_LocalPosition: {x: 593.935, y: 8.849079, z: 1059.9131}
|
||||
m_LocalScale: {x: 1.6639633, y: 1.6639631, z: 1.6639628}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 6620715533904588879}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!33 &4527544251728066118
|
||||
MeshFilter:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4363002964825893588}
|
||||
m_Mesh: {fileID: 4300000, guid: 7ef57348cc14e2c44b0d93d82309fb45, type: 2}
|
||||
--- !u!23 &5311223652641166228
|
||||
MeshRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4363002964825893588}
|
||||
m_Enabled: 0
|
||||
m_CastShadows: 1
|
||||
m_ReceiveShadows: 1
|
||||
m_DynamicOccludee: 1
|
||||
m_StaticShadowCaster: 0
|
||||
m_MotionVectors: 1
|
||||
m_LightProbeUsage: 1
|
||||
m_ReflectionProbeUsage: 1
|
||||
m_RayTracingMode: 2
|
||||
m_RayTraceProcedural: 0
|
||||
m_RayTracingAccelStructBuildFlagsOverride: 0
|
||||
m_RayTracingAccelStructBuildFlags: 1
|
||||
m_SmallMeshCulling: 1
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
- {fileID: 0}
|
||||
m_StaticBatchInfo:
|
||||
firstSubMesh: 0
|
||||
subMeshCount: 0
|
||||
m_StaticBatchRoot: {fileID: 0}
|
||||
m_ProbeAnchor: {fileID: 0}
|
||||
m_LightProbeVolumeOverride: {fileID: 0}
|
||||
m_ScaleInLightmap: 1
|
||||
m_ReceiveGI: 1
|
||||
m_PreserveUVs: 0
|
||||
m_IgnoreNormalsForChartDetection: 0
|
||||
m_ImportantGI: 0
|
||||
m_StitchLightmapSeams: 1
|
||||
m_SelectedEditorRenderState: 3
|
||||
m_MinimumChartSize: 4
|
||||
m_AutoUVMaxDistance: 0.5
|
||||
m_AutoUVMaxAngle: 89
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_SortingLayerID: 0
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!64 &3754629199141232990
|
||||
MeshCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4363002964825893588}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 5
|
||||
m_Convex: 0
|
||||
m_CookingOptions: 30
|
||||
m_Mesh: {fileID: 4300000, guid: 7ef57348cc14e2c44b0d93d82309fb45, type: 2}
|
||||
--- !u!1 &4972250255338124789
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
Executable → Regular
-110
@@ -141,119 +141,9 @@ Transform:
|
||||
- {fileID: 1612251013623532140}
|
||||
- {fileID: 3893658919594854549}
|
||||
- {fileID: 4582541177654313918}
|
||||
- {fileID: 5517097883188089445}
|
||||
- {fileID: 7879905404723781064}
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &1598138727650332108
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 5517097883188089445}
|
||||
- component: {fileID: 5043951339685173402}
|
||||
- component: {fileID: 3695623971278613789}
|
||||
- component: {fileID: 6306482458475048067}
|
||||
m_Layer: 7
|
||||
m_Name: CDBrushCollider
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &5517097883188089445
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1598138727650332108}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: -0, y: -0.47503158, z: -0, w: 0.87996876}
|
||||
m_LocalPosition: {x: 70.279106, y: -14.453853, z: 307.1064}
|
||||
m_LocalScale: {x: 0.41945174, y: 0.41945174, z: 0.41945174}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 6818785608557861497}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!33 &5043951339685173402
|
||||
MeshFilter:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1598138727650332108}
|
||||
m_Mesh: {fileID: 4300000, guid: ddc0695fd6ea2f04bb8012d070f14971, type: 2}
|
||||
--- !u!23 &3695623971278613789
|
||||
MeshRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1598138727650332108}
|
||||
m_Enabled: 0
|
||||
m_CastShadows: 1
|
||||
m_ReceiveShadows: 1
|
||||
m_DynamicOccludee: 1
|
||||
m_StaticShadowCaster: 0
|
||||
m_MotionVectors: 1
|
||||
m_LightProbeUsage: 1
|
||||
m_ReflectionProbeUsage: 1
|
||||
m_RayTracingMode: 2
|
||||
m_RayTraceProcedural: 0
|
||||
m_RayTracingAccelStructBuildFlagsOverride: 0
|
||||
m_RayTracingAccelStructBuildFlags: 1
|
||||
m_SmallMeshCulling: 1
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
- {fileID: 0}
|
||||
m_StaticBatchInfo:
|
||||
firstSubMesh: 0
|
||||
subMeshCount: 0
|
||||
m_StaticBatchRoot: {fileID: 0}
|
||||
m_ProbeAnchor: {fileID: 0}
|
||||
m_LightProbeVolumeOverride: {fileID: 0}
|
||||
m_ScaleInLightmap: 1
|
||||
m_ReceiveGI: 1
|
||||
m_PreserveUVs: 0
|
||||
m_IgnoreNormalsForChartDetection: 0
|
||||
m_ImportantGI: 0
|
||||
m_StitchLightmapSeams: 1
|
||||
m_SelectedEditorRenderState: 3
|
||||
m_MinimumChartSize: 4
|
||||
m_AutoUVMaxDistance: 0.5
|
||||
m_AutoUVMaxAngle: 89
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_SortingLayerID: 0
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!64 &6306482458475048067
|
||||
MeshCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1598138727650332108}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 5
|
||||
m_Convex: 0
|
||||
m_CookingOptions: 30
|
||||
m_Mesh: {fileID: 4300000, guid: ddc0695fd6ea2f04bb8012d070f14971, type: 2}
|
||||
--- !u!1 &2388712936800771917
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
Executable → Regular
-110
@@ -1,114 +1,5 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &172793201247077112
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 7608619978697582171}
|
||||
- component: {fileID: 6406699908441070328}
|
||||
- component: {fileID: 3536295598767213851}
|
||||
- component: {fileID: 8712326172030274561}
|
||||
m_Layer: 7
|
||||
m_Name: CDBrushCollider
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &7608619978697582171
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 172793201247077112}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: -0, y: -0.98544973, z: -0, w: 0.1699672}
|
||||
m_LocalPosition: {x: -294.38223, y: -15.892957, z: 13.95909}
|
||||
m_LocalScale: {x: 0.39123014, y: 0.3912302, z: 0.39123014}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 4752216487722087006}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!33 &6406699908441070328
|
||||
MeshFilter:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 172793201247077112}
|
||||
m_Mesh: {fileID: 4300000, guid: e87c0edb5abf70047b61a962856e094a, type: 2}
|
||||
--- !u!23 &3536295598767213851
|
||||
MeshRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 172793201247077112}
|
||||
m_Enabled: 0
|
||||
m_CastShadows: 1
|
||||
m_ReceiveShadows: 1
|
||||
m_DynamicOccludee: 1
|
||||
m_StaticShadowCaster: 0
|
||||
m_MotionVectors: 1
|
||||
m_LightProbeUsage: 1
|
||||
m_ReflectionProbeUsage: 1
|
||||
m_RayTracingMode: 2
|
||||
m_RayTraceProcedural: 0
|
||||
m_RayTracingAccelStructBuildFlagsOverride: 0
|
||||
m_RayTracingAccelStructBuildFlags: 1
|
||||
m_SmallMeshCulling: 1
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
- {fileID: 0}
|
||||
m_StaticBatchInfo:
|
||||
firstSubMesh: 0
|
||||
subMeshCount: 0
|
||||
m_StaticBatchRoot: {fileID: 0}
|
||||
m_ProbeAnchor: {fileID: 0}
|
||||
m_LightProbeVolumeOverride: {fileID: 0}
|
||||
m_ScaleInLightmap: 1
|
||||
m_ReceiveGI: 1
|
||||
m_PreserveUVs: 0
|
||||
m_IgnoreNormalsForChartDetection: 0
|
||||
m_ImportantGI: 0
|
||||
m_StitchLightmapSeams: 1
|
||||
m_SelectedEditorRenderState: 3
|
||||
m_MinimumChartSize: 4
|
||||
m_AutoUVMaxDistance: 0.5
|
||||
m_AutoUVMaxAngle: 89
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_SortingLayerID: 0
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!64 &8712326172030274561
|
||||
MeshCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 172793201247077112}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 5
|
||||
m_Convex: 0
|
||||
m_CookingOptions: 30
|
||||
m_Mesh: {fileID: 4300000, guid: e87c0edb5abf70047b61a962856e094a, type: 2}
|
||||
--- !u!1 &224338938491563564
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -358,7 +249,6 @@ Transform:
|
||||
- {fileID: 5731830492325550992}
|
||||
- {fileID: 1618002668272441283}
|
||||
- {fileID: 8486254419225748666}
|
||||
- {fileID: 7608619978697582171}
|
||||
- {fileID: 4265541440646157853}
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
|
||||
Executable → Regular
-110
@@ -32,119 +32,9 @@ Transform:
|
||||
- {fileID: 1084874715169113141}
|
||||
- {fileID: 1911635272754944718}
|
||||
- {fileID: 6722884338247993433}
|
||||
- {fileID: 2212218385651794187}
|
||||
- {fileID: 1049162546028214497}
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &787211151800135413
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 2212218385651794187}
|
||||
- component: {fileID: 5601456882205794911}
|
||||
- component: {fileID: 5564988953748425229}
|
||||
- component: {fileID: 2939736982135528873}
|
||||
m_Layer: 7
|
||||
m_Name: CDBrushCollider
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &2212218385651794187
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 787211151800135413}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0.019027056, y: -0.6309642, z: 0.047790635, w: 0.7741048}
|
||||
m_LocalPosition: {x: -35.249825, y: -13.226669, z: 372.96506}
|
||||
m_LocalScale: {x: 0.5297467, y: 0.5297468, z: 0.5297468}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 6475581097579970790}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!33 &5601456882205794911
|
||||
MeshFilter:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 787211151800135413}
|
||||
m_Mesh: {fileID: 4300000, guid: 53144361e2a90ed4e918b2f7dd90ceec, type: 2}
|
||||
--- !u!23 &5564988953748425229
|
||||
MeshRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 787211151800135413}
|
||||
m_Enabled: 0
|
||||
m_CastShadows: 1
|
||||
m_ReceiveShadows: 1
|
||||
m_DynamicOccludee: 1
|
||||
m_StaticShadowCaster: 0
|
||||
m_MotionVectors: 1
|
||||
m_LightProbeUsage: 1
|
||||
m_ReflectionProbeUsage: 1
|
||||
m_RayTracingMode: 2
|
||||
m_RayTraceProcedural: 0
|
||||
m_RayTracingAccelStructBuildFlagsOverride: 0
|
||||
m_RayTracingAccelStructBuildFlags: 1
|
||||
m_SmallMeshCulling: 1
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
- {fileID: 0}
|
||||
m_StaticBatchInfo:
|
||||
firstSubMesh: 0
|
||||
subMeshCount: 0
|
||||
m_StaticBatchRoot: {fileID: 0}
|
||||
m_ProbeAnchor: {fileID: 0}
|
||||
m_LightProbeVolumeOverride: {fileID: 0}
|
||||
m_ScaleInLightmap: 1
|
||||
m_ReceiveGI: 1
|
||||
m_PreserveUVs: 0
|
||||
m_IgnoreNormalsForChartDetection: 0
|
||||
m_ImportantGI: 0
|
||||
m_StitchLightmapSeams: 1
|
||||
m_SelectedEditorRenderState: 3
|
||||
m_MinimumChartSize: 4
|
||||
m_AutoUVMaxDistance: 0.5
|
||||
m_AutoUVMaxAngle: 89
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_SortingLayerID: 0
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!64 &2939736982135528873
|
||||
MeshCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 787211151800135413}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 5
|
||||
m_Convex: 0
|
||||
m_CookingOptions: 30
|
||||
m_Mesh: {fileID: 4300000, guid: 53144361e2a90ed4e918b2f7dd90ceec, type: 2}
|
||||
--- !u!1 &2177137796390071311
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
Executable → Regular
-110
@@ -206,119 +206,9 @@ Transform:
|
||||
- {fileID: 3146780185303420119}
|
||||
- {fileID: 2683837799112924102}
|
||||
- {fileID: 4023167349951248047}
|
||||
- {fileID: 2250924196899347191}
|
||||
- {fileID: 814446087563747713}
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &4054812586826850141
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 2250924196899347191}
|
||||
- component: {fileID: 27496454628698759}
|
||||
- component: {fileID: 4818895147758886611}
|
||||
- component: {fileID: 8761252889811093874}
|
||||
m_Layer: 7
|
||||
m_Name: CDBrushCollider
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &2250924196899347191
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4054812586826850141}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: -0, y: 0.14449234, z: -0, w: 0.98950595}
|
||||
m_LocalPosition: {x: 1546.2524, y: -90.55273, z: 49.631584}
|
||||
m_LocalScale: {x: 2.211937, y: 2.211937, z: 2.211937}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 2394903240699220014}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!33 &27496454628698759
|
||||
MeshFilter:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4054812586826850141}
|
||||
m_Mesh: {fileID: 4300000, guid: 365c467577a8ce44495eb488cd707559, type: 2}
|
||||
--- !u!23 &4818895147758886611
|
||||
MeshRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4054812586826850141}
|
||||
m_Enabled: 0
|
||||
m_CastShadows: 1
|
||||
m_ReceiveShadows: 1
|
||||
m_DynamicOccludee: 1
|
||||
m_StaticShadowCaster: 0
|
||||
m_MotionVectors: 1
|
||||
m_LightProbeUsage: 1
|
||||
m_ReflectionProbeUsage: 1
|
||||
m_RayTracingMode: 2
|
||||
m_RayTraceProcedural: 0
|
||||
m_RayTracingAccelStructBuildFlagsOverride: 0
|
||||
m_RayTracingAccelStructBuildFlags: 1
|
||||
m_SmallMeshCulling: 1
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
- {fileID: 0}
|
||||
m_StaticBatchInfo:
|
||||
firstSubMesh: 0
|
||||
subMeshCount: 0
|
||||
m_StaticBatchRoot: {fileID: 0}
|
||||
m_ProbeAnchor: {fileID: 0}
|
||||
m_LightProbeVolumeOverride: {fileID: 0}
|
||||
m_ScaleInLightmap: 1
|
||||
m_ReceiveGI: 1
|
||||
m_PreserveUVs: 0
|
||||
m_IgnoreNormalsForChartDetection: 0
|
||||
m_ImportantGI: 0
|
||||
m_StitchLightmapSeams: 1
|
||||
m_SelectedEditorRenderState: 3
|
||||
m_MinimumChartSize: 4
|
||||
m_AutoUVMaxDistance: 0.5
|
||||
m_AutoUVMaxAngle: 89
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_SortingLayerID: 0
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!64 &8761252889811093874
|
||||
MeshCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4054812586826850141}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 5
|
||||
m_Convex: 0
|
||||
m_CookingOptions: 30
|
||||
m_Mesh: {fileID: 4300000, guid: 365c467577a8ce44495eb488cd707559, type: 2}
|
||||
--- !u!1 &4698689582247525187
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
Executable → Regular
-110
@@ -421,116 +421,6 @@ Transform:
|
||||
- {fileID: 2477282569958296925}
|
||||
- {fileID: 2033314129660300733}
|
||||
- {fileID: 4063870959951636716}
|
||||
- {fileID: 119630387473320254}
|
||||
- {fileID: 3240762840728150681}
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &8683381269437311901
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 119630387473320254}
|
||||
- component: {fileID: 7588284220820280700}
|
||||
- component: {fileID: 1569730407105585027}
|
||||
- component: {fileID: 2122403810583017442}
|
||||
m_Layer: 7
|
||||
m_Name: CDBrushCollider
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &119630387473320254
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8683381269437311901}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0.0000000015403034, y: 0.80459905, z: -0.0000000011367907, w: 0.59381855}
|
||||
m_LocalPosition: {x: 3.3209138, y: -12.090382, z: -217.43988}
|
||||
m_LocalScale: {x: 0.30777234, y: 0.3077724, z: 0.30777234}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 4906358553693921576}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!33 &7588284220820280700
|
||||
MeshFilter:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8683381269437311901}
|
||||
m_Mesh: {fileID: 4300000, guid: c4d86c66a7bc42a41a047326db03bd43, type: 2}
|
||||
--- !u!23 &1569730407105585027
|
||||
MeshRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8683381269437311901}
|
||||
m_Enabled: 0
|
||||
m_CastShadows: 1
|
||||
m_ReceiveShadows: 1
|
||||
m_DynamicOccludee: 1
|
||||
m_StaticShadowCaster: 0
|
||||
m_MotionVectors: 1
|
||||
m_LightProbeUsage: 1
|
||||
m_ReflectionProbeUsage: 1
|
||||
m_RayTracingMode: 2
|
||||
m_RayTraceProcedural: 0
|
||||
m_RayTracingAccelStructBuildFlagsOverride: 0
|
||||
m_RayTracingAccelStructBuildFlags: 1
|
||||
m_SmallMeshCulling: 1
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
- {fileID: 0}
|
||||
m_StaticBatchInfo:
|
||||
firstSubMesh: 0
|
||||
subMeshCount: 0
|
||||
m_StaticBatchRoot: {fileID: 0}
|
||||
m_ProbeAnchor: {fileID: 0}
|
||||
m_LightProbeVolumeOverride: {fileID: 0}
|
||||
m_ScaleInLightmap: 1
|
||||
m_ReceiveGI: 1
|
||||
m_PreserveUVs: 0
|
||||
m_IgnoreNormalsForChartDetection: 0
|
||||
m_ImportantGI: 0
|
||||
m_StitchLightmapSeams: 1
|
||||
m_SelectedEditorRenderState: 3
|
||||
m_MinimumChartSize: 4
|
||||
m_AutoUVMaxDistance: 0.5
|
||||
m_AutoUVMaxAngle: 89
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_SortingLayerID: 0
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!64 &2122403810583017442
|
||||
MeshCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8683381269437311901}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 5
|
||||
m_Convex: 0
|
||||
m_CookingOptions: 30
|
||||
m_Mesh: {fileID: 4300000, guid: c4d86c66a7bc42a41a047326db03bd43, type: 2}
|
||||
|
||||
Executable → Regular
-23
@@ -183,7 +183,6 @@ GameObject:
|
||||
- component: {fileID: 6023750528364922969}
|
||||
- component: {fileID: 1675674610606272278}
|
||||
- component: {fileID: 3644559462862492686}
|
||||
- component: {fileID: 892714618474195698}
|
||||
m_Layer: 7
|
||||
m_Name: CDBrushCollider
|
||||
m_TagString: Untagged
|
||||
@@ -259,28 +258,6 @@ MeshRenderer:
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!64 &892714618474195698
|
||||
MeshCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 910907375157286189}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 5
|
||||
m_Convex: 0
|
||||
m_CookingOptions: 30
|
||||
m_Mesh: {fileID: 4300000, guid: cfeef2027856ec143a893613a15950e4, type: 2}
|
||||
--- !u!1 &1284285541855030774
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
Executable → Regular
-23
@@ -97,7 +97,6 @@ GameObject:
|
||||
- component: {fileID: 3517488898565542867}
|
||||
- component: {fileID: 6804567931177696908}
|
||||
- component: {fileID: 483334259580223868}
|
||||
- component: {fileID: 7581865155386939781}
|
||||
m_Layer: 7
|
||||
m_Name: CDBrushCollider
|
||||
m_TagString: Untagged
|
||||
@@ -173,28 +172,6 @@ MeshRenderer:
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!64 &7581865155386939781
|
||||
MeshCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2022610521592624190}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 5
|
||||
m_Convex: 0
|
||||
m_CookingOptions: 30
|
||||
m_Mesh: {fileID: 4300000, guid: e94e3e5769427bc4dad4eeaac6693048, type: 2}
|
||||
--- !u!1 &2220754331846254575
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
Executable → Regular
-23
@@ -377,7 +377,6 @@ GameObject:
|
||||
- component: {fileID: 3628204634392224807}
|
||||
- component: {fileID: 7407604775797623577}
|
||||
- component: {fileID: 2018968439192838242}
|
||||
- component: {fileID: 4060312489625897955}
|
||||
m_Layer: 7
|
||||
m_Name: CDBrushCollider
|
||||
m_TagString: Untagged
|
||||
@@ -453,28 +452,6 @@ MeshRenderer:
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!64 &4060312489625897955
|
||||
MeshCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4166214560089695016}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 5
|
||||
m_Convex: 0
|
||||
m_CookingOptions: 30
|
||||
m_Mesh: {fileID: 4300000, guid: f65e8a467899c784ea25d19d8228c591, type: 2}
|
||||
--- !u!1 &7264933843951556929
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
Executable → Regular
-23
@@ -328,7 +328,6 @@ GameObject:
|
||||
- component: {fileID: 6263052053779369840}
|
||||
- component: {fileID: 5967094472632529714}
|
||||
- component: {fileID: 5637013322931949624}
|
||||
- component: {fileID: 7701157108966298395}
|
||||
m_Layer: 7
|
||||
m_Name: CDBrushCollider
|
||||
m_TagString: Untagged
|
||||
@@ -404,28 +403,6 @@ MeshRenderer:
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!64 &7701157108966298395
|
||||
MeshCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6790567182685110026}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 5
|
||||
m_Convex: 0
|
||||
m_CookingOptions: 30
|
||||
m_Mesh: {fileID: 4300000, guid: 04d4d977225c4a14499618f0699a517e, type: 2}
|
||||
--- !u!1 &7037754719911573491
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
Executable → Regular
-23
@@ -500,7 +500,6 @@ GameObject:
|
||||
- component: {fileID: 5305523764593272813}
|
||||
- component: {fileID: 678743268724862924}
|
||||
- component: {fileID: 7162637954310658059}
|
||||
- component: {fileID: 8888025865612421831}
|
||||
m_Layer: 7
|
||||
m_Name: CDBrushCollider
|
||||
m_TagString: Untagged
|
||||
@@ -576,25 +575,3 @@ MeshRenderer:
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!64 &8888025865612421831
|
||||
MeshCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7227532073084794830}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 5
|
||||
m_Convex: 0
|
||||
m_CookingOptions: 30
|
||||
m_Mesh: {fileID: 4300000, guid: 656660013c2aead4db6ced3e1f1f3237, type: 2}
|
||||
|
||||
Executable → Regular
-23
@@ -205,7 +205,6 @@ GameObject:
|
||||
- component: {fileID: 4657129204170405192}
|
||||
- component: {fileID: 2789277002866095687}
|
||||
- component: {fileID: 3172534340014566673}
|
||||
- component: {fileID: 7850312668348180432}
|
||||
m_Layer: 7
|
||||
m_Name: CDBrushCollider
|
||||
m_TagString: Untagged
|
||||
@@ -281,28 +280,6 @@ MeshRenderer:
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!64 &7850312668348180432
|
||||
MeshCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2455993117267038559}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 5
|
||||
m_Convex: 0
|
||||
m_CookingOptions: 30
|
||||
m_Mesh: {fileID: 4300000, guid: a7c6e209885915e46ac22d6f50fd0675, type: 2}
|
||||
--- !u!1 &2664225560426020003
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
Executable → Regular
-23
@@ -377,7 +377,6 @@ GameObject:
|
||||
- component: {fileID: 690030851112034515}
|
||||
- component: {fileID: 4738124538156305034}
|
||||
- component: {fileID: 8972397950644697694}
|
||||
- component: {fileID: 4579747403113463966}
|
||||
m_Layer: 7
|
||||
m_Name: CDBrushCollider
|
||||
m_TagString: Untagged
|
||||
@@ -453,28 +452,6 @@ MeshRenderer:
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!64 &4579747403113463966
|
||||
MeshCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5554915942598611418}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 5
|
||||
m_Convex: 0
|
||||
m_CookingOptions: 30
|
||||
m_Mesh: {fileID: 4300000, guid: 5447b2d76b7572a4495a4bca699e28d8, type: 2}
|
||||
--- !u!1 &5956056505884210667
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
@@ -0,0 +1,165 @@
|
||||
using UnityEngine;
|
||||
using UnityEditor;
|
||||
using System.Collections.Generic;
|
||||
|
||||
public class RemoveInvalidMeshFromFolder
|
||||
{
|
||||
private const float MinBoundsSize = 0.2f;
|
||||
|
||||
[MenuItem("Tools/Cleanup/Remove Invalid Meshes (Select Folder)")]
|
||||
static void RemoveInvalidMeshesFromFolder()
|
||||
{
|
||||
string absFolder = EditorUtility.OpenFolderPanel(
|
||||
"Select folder to clean prefabs (remove invalid MeshColliders)",
|
||||
Application.dataPath,
|
||||
""
|
||||
);
|
||||
|
||||
if (string.IsNullOrEmpty(absFolder))
|
||||
return;
|
||||
|
||||
if (!absFolder.StartsWith(Application.dataPath))
|
||||
{
|
||||
EditorUtility.DisplayDialog("Invalid Folder",
|
||||
"Please select a folder inside your project's Assets folder.",
|
||||
"OK");
|
||||
return;
|
||||
}
|
||||
|
||||
string relFolder = "Assets" + absFolder.Substring(Application.dataPath.Length);
|
||||
|
||||
string[] prefabGuids = AssetDatabase.FindAssets("t:Prefab", new[] { relFolder });
|
||||
|
||||
if (prefabGuids == null || prefabGuids.Length == 0)
|
||||
{
|
||||
EditorUtility.DisplayDialog("No Prefabs Found",
|
||||
$"No prefabs found in the selected folder:\n{relFolder}",
|
||||
"OK");
|
||||
return;
|
||||
}
|
||||
|
||||
int scanned = 0;
|
||||
int modified = 0;
|
||||
List<string> errors = new List<string>();
|
||||
|
||||
try
|
||||
{
|
||||
AssetDatabase.StartAssetEditing();
|
||||
|
||||
foreach (string guid in prefabGuids)
|
||||
{
|
||||
if (string.IsNullOrEmpty(guid))
|
||||
continue;
|
||||
|
||||
string path = AssetDatabase.GUIDToAssetPath(guid);
|
||||
if (string.IsNullOrEmpty(path))
|
||||
continue;
|
||||
|
||||
scanned++;
|
||||
|
||||
GameObject instance = null;
|
||||
try
|
||||
{
|
||||
instance = PrefabUtility.LoadPrefabContents(path);
|
||||
}
|
||||
catch (System.Exception ex)
|
||||
{
|
||||
errors.Add($"{path}: Failed to load - {ex.Message}");
|
||||
continue;
|
||||
}
|
||||
|
||||
if (instance == null)
|
||||
{
|
||||
errors.Add($"{path}: LoadPrefabContents returned null");
|
||||
continue;
|
||||
}
|
||||
|
||||
bool changed = false;
|
||||
MeshCollider[] meshColliders = instance.GetComponentsInChildren<MeshCollider>(true);
|
||||
|
||||
if (meshColliders != null)
|
||||
{
|
||||
List<MeshCollider> toRemove = new List<MeshCollider>();
|
||||
|
||||
foreach (MeshCollider mc in meshColliders)
|
||||
{
|
||||
if (mc == null)
|
||||
continue;
|
||||
|
||||
if (ShouldRemoveMeshCollider(mc, out string reason))
|
||||
{
|
||||
toRemove.Add(mc);
|
||||
}
|
||||
}
|
||||
|
||||
foreach (MeshCollider mc in toRemove)
|
||||
{
|
||||
if (mc != null)
|
||||
{
|
||||
Object.DestroyImmediate(mc);
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (changed)
|
||||
{
|
||||
try
|
||||
{
|
||||
PrefabUtility.SaveAsPrefabAsset(instance, path);
|
||||
modified++;
|
||||
}
|
||||
catch (System.Exception ex)
|
||||
{
|
||||
errors.Add($"{path}: Failed to save - {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
PrefabUtility.UnloadPrefabContents(instance);
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
AssetDatabase.StopAssetEditing();
|
||||
AssetDatabase.SaveAssets();
|
||||
AssetDatabase.Refresh();
|
||||
}
|
||||
|
||||
string message = $"Scanned: {scanned}\nModified: {modified}";
|
||||
if (errors.Count > 0)
|
||||
{
|
||||
message += $"\n\nErrors ({errors.Count}):\n" + string.Join("\n", errors.GetRange(0, Mathf.Min(errors.Count, 5)));
|
||||
if (errors.Count > 5)
|
||||
message += $"\n... and {errors.Count - 5} more";
|
||||
}
|
||||
|
||||
EditorUtility.DisplayDialog("Remove Invalid Meshes - Finished", message, "OK");
|
||||
}
|
||||
|
||||
static bool ShouldRemoveMeshCollider(MeshCollider mc, out string reason)
|
||||
{
|
||||
reason = null;
|
||||
|
||||
if (mc == null)
|
||||
{
|
||||
reason = "MeshCollider is null";
|
||||
return true;
|
||||
}
|
||||
|
||||
Mesh mesh = mc.sharedMesh;
|
||||
if (mesh == null)
|
||||
{
|
||||
reason = "Mesh is null";
|
||||
return true;
|
||||
}
|
||||
|
||||
Vector3 size = mesh.bounds.size;
|
||||
if (size.x < MinBoundsSize || size.y < MinBoundsSize || size.z < MinBoundsSize)
|
||||
{
|
||||
reason = $"Mesh bounds too small (x:{size.x:F3}, y:{size.y:F3}, z:{size.z:F3})";
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a3d79841ca7d14a21b10f1657cf600af
|
||||
@@ -526,7 +526,7 @@ RectTransform:
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 1, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 0}
|
||||
m_AnchoredPosition: {x: -323.59998, y: 328.6}
|
||||
m_AnchoredPosition: {x: -353, y: 304}
|
||||
m_SizeDelta: {x: 185.38, y: 185.38171}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &2245409721410000391
|
||||
@@ -645,10 +645,10 @@ RectTransform:
|
||||
- {fileID: 4164631033889647644}
|
||||
m_Father: {fileID: 3483809415181351540}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 1, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 0}
|
||||
m_AnchoredPosition: {x: -357, y: 75}
|
||||
m_SizeDelta: {x: 96, y: 52.5407}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 61.5, y: -318}
|
||||
m_SizeDelta: {x: 96, y: 52.54065}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &2091984348760918456
|
||||
CanvasRenderer:
|
||||
@@ -1852,7 +1852,7 @@ RectTransform:
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 1, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 0}
|
||||
m_AnchoredPosition: {x: -60.5, y: 68.7}
|
||||
m_AnchoredPosition: {x: -106, y: 127}
|
||||
m_SizeDelta: {x: 78, y: 78}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &4945594189386570527
|
||||
@@ -3128,7 +3128,7 @@ RectTransform:
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 1, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 0}
|
||||
m_AnchoredPosition: {x: -60.100098, y: 228.40002}
|
||||
m_AnchoredPosition: {x: -105.6001, y: 286.7}
|
||||
m_SizeDelta: {x: 76, y: 76}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &1896346771968462987
|
||||
@@ -3827,6 +3827,142 @@ MonoBehaviour:
|
||||
m_hasFontAssetChanged: 0
|
||||
m_baseMaterial: {fileID: 0}
|
||||
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
|
||||
--- !u!1 &5727863043411723117
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1306231628402548473}
|
||||
- component: {fileID: 7611469891124614779}
|
||||
- component: {fileID: 8138679065215916556}
|
||||
m_Layer: 0
|
||||
m_Name: FPSText
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &1306231628402548473
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5727863043411723117}
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 6210342792191300609}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
m_AnchoredPosition: {x: 100, y: 25}
|
||||
m_SizeDelta: {x: 200, y: 50}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &7611469891124614779
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5727863043411723117}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &8138679065215916556
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5727863043411723117}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_text: 000
|
||||
m_isRightToLeft: 0
|
||||
m_fontAsset: {fileID: 11400000, guid: 369c2e14814cc9a4b8e3ad4e37769134, type: 2}
|
||||
m_sharedMaterial: {fileID: 9092487103257209053, guid: 369c2e14814cc9a4b8e3ad4e37769134, type: 2}
|
||||
m_fontSharedMaterials: []
|
||||
m_fontMaterial: {fileID: 0}
|
||||
m_fontMaterials: []
|
||||
m_fontColor32:
|
||||
serializedVersion: 2
|
||||
rgba: 4291756287
|
||||
m_fontColor: {r: 1, g: 0, b: 0.8118372, a: 1}
|
||||
m_enableVertexGradient: 0
|
||||
m_colorMode: 3
|
||||
m_fontColorGradient:
|
||||
topLeft: {r: 1, g: 1, b: 1, a: 1}
|
||||
topRight: {r: 1, g: 1, b: 1, a: 1}
|
||||
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
|
||||
bottomRight: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_fontColorGradientPreset: {fileID: 0}
|
||||
m_spriteAsset: {fileID: 0}
|
||||
m_tintAllSprites: 0
|
||||
m_StyleSheet: {fileID: 0}
|
||||
m_TextStyleHashCode: -1183493901
|
||||
m_overrideHtmlColors: 0
|
||||
m_faceColor:
|
||||
serializedVersion: 2
|
||||
rgba: 4294967295
|
||||
m_fontSize: 40
|
||||
m_fontSizeBase: 40
|
||||
m_fontWeight: 400
|
||||
m_enableAutoSizing: 0
|
||||
m_fontSizeMin: 18
|
||||
m_fontSizeMax: 72
|
||||
m_fontStyle: 0
|
||||
m_HorizontalAlignment: 2
|
||||
m_VerticalAlignment: 512
|
||||
m_textAlignment: 65535
|
||||
m_characterSpacing: 0
|
||||
m_wordSpacing: 0
|
||||
m_lineSpacing: 0
|
||||
m_lineSpacingMax: 0
|
||||
m_paragraphSpacing: 0
|
||||
m_charWidthMaxAdj: 0
|
||||
m_TextWrappingMode: 1
|
||||
m_wordWrappingRatios: 0.4
|
||||
m_overflowMode: 0
|
||||
m_linkedTextComponent: {fileID: 0}
|
||||
parentLinkedComponent: {fileID: 0}
|
||||
m_enableKerning: 0
|
||||
m_ActiveFontFeatures: 6e72656b
|
||||
m_enableExtraPadding: 0
|
||||
checkPaddingRequired: 0
|
||||
m_isRichText: 1
|
||||
m_EmojiFallbackSupport: 1
|
||||
m_parseCtrlCharacters: 1
|
||||
m_isOrthographic: 1
|
||||
m_isCullingEnabled: 0
|
||||
m_horizontalMapping: 0
|
||||
m_verticalMapping: 0
|
||||
m_uvLineOffset: 0
|
||||
m_geometrySortingOrder: 0
|
||||
m_IsTextObjectScaleStatic: 0
|
||||
m_VertexBufferAutoSizeReduction: 0
|
||||
m_useMaxVisibleDescender: 1
|
||||
m_pageToDisplay: 1
|
||||
m_margin: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_isUsingLegacyAnimationComponent: 0
|
||||
m_isVolumetricText: 0
|
||||
m_hasFontAssetChanged: 0
|
||||
m_baseMaterial: {fileID: 0}
|
||||
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
|
||||
--- !u!1 &5885931642767984348
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -4404,6 +4540,7 @@ Transform:
|
||||
- {fileID: 3233441867675090637}
|
||||
- {fileID: 330835371656537333}
|
||||
- {fileID: 7148351193174662273}
|
||||
- {fileID: 6210342792191300609}
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &1890210201668811196
|
||||
@@ -4418,7 +4555,7 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: d21c02a79936b334da12ef5379524df2, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
uiRoot: {fileID: 0}
|
||||
_fpsText: {fileID: 8138679065215916556}
|
||||
uiPrefabs: []
|
||||
npsUI: {fileID: 8090791712930107248}
|
||||
currentTargetNPCID: 0
|
||||
@@ -5214,6 +5351,108 @@ MonoBehaviour:
|
||||
- {fileID: 445184971459596056}
|
||||
- {fileID: 3804662600613272361}
|
||||
- {fileID: 1774515210692260948}
|
||||
--- !u!1 &8644839137304674498
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 6210342792191300609}
|
||||
- component: {fileID: 3434319454937597182}
|
||||
- component: {fileID: 2220022565094034758}
|
||||
- component: {fileID: 2827532456117971684}
|
||||
m_Layer: 0
|
||||
m_Name: Canvas
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &6210342792191300609
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8644839137304674498}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 0, y: 0, z: 0}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 1306231628402548473}
|
||||
m_Father: {fileID: 2780428059708698453}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 0, y: 0}
|
||||
m_Pivot: {x: 0, y: 0}
|
||||
--- !u!223 &3434319454937597182
|
||||
Canvas:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8644839137304674498}
|
||||
m_Enabled: 1
|
||||
serializedVersion: 3
|
||||
m_RenderMode: 0
|
||||
m_Camera: {fileID: 0}
|
||||
m_PlaneDistance: 100
|
||||
m_PixelPerfect: 0
|
||||
m_ReceivesEvents: 1
|
||||
m_OverrideSorting: 0
|
||||
m_OverridePixelPerfect: 0
|
||||
m_SortingBucketNormalizedSize: 0
|
||||
m_VertexColorAlwaysGammaSpace: 0
|
||||
m_AdditionalShaderChannelsFlag: 25
|
||||
m_UpdateRectTransformForStandalone: 0
|
||||
m_SortingLayerID: 0
|
||||
m_SortingOrder: 10
|
||||
m_TargetDisplay: 0
|
||||
--- !u!114 &2220022565094034758
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8644839137304674498}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_UiScaleMode: 1
|
||||
m_ReferencePixelsPerUnit: 100
|
||||
m_ScaleFactor: 1
|
||||
m_ReferenceResolution: {x: 1920, y: 1080}
|
||||
m_ScreenMatchMode: 0
|
||||
m_MatchWidthOrHeight: 1
|
||||
m_PhysicalUnit: 3
|
||||
m_FallbackScreenDPI: 96
|
||||
m_DefaultSpriteDPI: 96
|
||||
m_DynamicPixelsPerUnit: 1
|
||||
m_PresetInfoIsWorld: 0
|
||||
--- !u!114 &2827532456117971684
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8644839137304674498}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_IgnoreReversedGraphics: 1
|
||||
m_BlockingObjects: 0
|
||||
m_BlockingMask:
|
||||
serializedVersion: 2
|
||||
m_Bits: 4294967295
|
||||
--- !u!1 &8902228212386757619
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -5658,27 +5897,27 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_AnchorMax.x
|
||||
value: 0.5
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 0.5
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_AnchorMin.x
|
||||
value: 0.5
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_AnchorMin.y
|
||||
value: 0.5
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_SizeDelta.x
|
||||
value: 130.167
|
||||
value: 130.16699
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_SizeDelta.y
|
||||
value: 126.1988
|
||||
value: 126.19879
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
@@ -5710,11 +5949,11 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_AnchoredPosition.x
|
||||
value: 403
|
||||
value: -557
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: -396
|
||||
value: 144
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
@@ -6881,27 +7120,27 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_AnchorMax.x
|
||||
value: 0.5
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 0.5
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_AnchorMin.x
|
||||
value: 0.5
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_AnchorMin.y
|
||||
value: 0.5
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_SizeDelta.x
|
||||
value: 130.167
|
||||
value: 130.16699
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_SizeDelta.y
|
||||
value: 126.1988
|
||||
value: 126.19879
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
@@ -6933,11 +7172,11 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_AnchoredPosition.x
|
||||
value: 763
|
||||
value: -197
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: -44
|
||||
value: 496
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
@@ -10484,27 +10723,27 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_AnchorMax.x
|
||||
value: 0.5
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 0.5
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_AnchorMin.x
|
||||
value: 0.5
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_AnchorMin.y
|
||||
value: 0.5
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_SizeDelta.x
|
||||
value: 130.167
|
||||
value: 130.16699
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_SizeDelta.y
|
||||
value: 126.1988
|
||||
value: 126.19879
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
@@ -10536,11 +10775,11 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_AnchoredPosition.x
|
||||
value: 846
|
||||
value: -114
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: 124
|
||||
value: 664
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
@@ -10882,7 +11121,7 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8435310359341866937, guid: b5a4a3ed5bf0e5a49ba0f89d26e1f36e, type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: -25.33552
|
||||
value: -25.335571
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8579427623307909814, guid: b5a4a3ed5bf0e5a49ba0f89d26e1f36e, type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
@@ -11000,27 +11239,27 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_AnchorMax.x
|
||||
value: 0.5
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 0.5
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_AnchorMin.x
|
||||
value: 0.5
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_AnchorMin.y
|
||||
value: 0.5
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_SizeDelta.x
|
||||
value: 130.167
|
||||
value: 130.16699
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_SizeDelta.y
|
||||
value: 126.1988
|
||||
value: 126.19879
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
@@ -11052,11 +11291,11 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_AnchoredPosition.x
|
||||
value: 680
|
||||
value: -280
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: 125
|
||||
value: 665
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
@@ -11117,27 +11356,27 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_AnchorMax.x
|
||||
value: 0.5
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 0.5
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_AnchorMin.x
|
||||
value: 0.5
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_AnchorMin.y
|
||||
value: 0.5
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_SizeDelta.x
|
||||
value: 130.167
|
||||
value: 130.16699
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_SizeDelta.y
|
||||
value: 126.1988
|
||||
value: 126.19879
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
@@ -11169,11 +11408,11 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_AnchoredPosition.x
|
||||
value: 351
|
||||
value: -609
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: -282
|
||||
value: 258
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
@@ -11419,7 +11658,7 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2487042404357809237, guid: 4b2c2bde3e2945e4ba4516d08d755aeb, type: 3}
|
||||
propertyPath: m_Enabled
|
||||
value: 0
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6500472629937108760, guid: 4b2c2bde3e2945e4ba4516d08d755aeb, type: 3}
|
||||
propertyPath: m_Name
|
||||
@@ -11429,6 +11668,14 @@ PrefabInstance:
|
||||
propertyPath: m_IsActive
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7640072662976260491, guid: 4b2c2bde3e2945e4ba4516d08d755aeb, type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8819184454638197523, guid: 4b2c2bde3e2945e4ba4516d08d755aeb, type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
@@ -11461,27 +11708,27 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_AnchorMax.x
|
||||
value: 0.5
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 0.5
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_AnchorMin.x
|
||||
value: 0.5
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_AnchorMin.y
|
||||
value: 0.5
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_SizeDelta.x
|
||||
value: 130.167
|
||||
value: 130.16699
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_SizeDelta.y
|
||||
value: 126.1988
|
||||
value: 126.19879
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
@@ -11513,11 +11760,11 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_AnchoredPosition.x
|
||||
value: 478
|
||||
value: -482
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: -59
|
||||
value: 481
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
@@ -12050,27 +12297,27 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_AnchorMax.x
|
||||
value: 0.5
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 0.5
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_AnchorMin.x
|
||||
value: 0.5
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_AnchorMin.y
|
||||
value: 0.5
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_SizeDelta.x
|
||||
value: 130.167
|
||||
value: 130.16699
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_SizeDelta.y
|
||||
value: 126.1988
|
||||
value: 126.19879
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
@@ -12102,11 +12349,11 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_AnchoredPosition.x
|
||||
value: 621
|
||||
value: -339
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: -20
|
||||
value: 520
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
@@ -12652,27 +12899,27 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_AnchorMax.x
|
||||
value: 0.5
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 0.5
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_AnchorMin.x
|
||||
value: 0.5
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_AnchorMin.y
|
||||
value: 0.5
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_SizeDelta.x
|
||||
value: 130.167
|
||||
value: 130.16699
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_SizeDelta.y
|
||||
value: 126.1988
|
||||
value: 126.19879
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
@@ -12704,11 +12951,11 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_AnchoredPosition.x
|
||||
value: 371
|
||||
value: -589
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: -149
|
||||
value: 391
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5717981154351234976, guid: 8586a375545487f43b57c6ffdce6fbfd, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
|
||||
@@ -16,7 +16,7 @@ RenderTexture:
|
||||
m_Height: 512
|
||||
m_AntiAliasing: 1
|
||||
m_MipCount: -1
|
||||
m_DepthStencilFormat: 0
|
||||
m_DepthStencilFormat: 90
|
||||
m_ColorFormat: 12
|
||||
m_MipMap: 0
|
||||
m_GenerateMips: 1
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: aa2ec4fb3e3ae4843bcc25ec13c56761
|
||||
guid: 2af08acf9536b4837b519f05326c9080
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:d367fa56162cf045cb9f046aa3953821a7011bb15c33b5a2beaaba5283f5e2d9
|
||||
size 21448
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:60c9fc32910746f134c7ade2390c674afb51eae2d258e8292b0bb9e817d02732
|
||||
size 282839
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:bd882a6bec1d1d08efbd9107424f7cb7514358179a64cc2bbd09ee3eeada2c30
|
||||
size 107449
|
||||
oid sha256:486a1814b7c89098f245397c87a04b43c8b9d7b906d4a7de20930badea5292fb
|
||||
size 107133
|
||||
|
||||
@@ -13,10 +13,23 @@ namespace BrewMonster.Scripts
|
||||
{
|
||||
private bool _isInitialized = false;
|
||||
|
||||
private Dictionary<string, AsyncOperationHandle<GameObject>> _loadedAssets = new();
|
||||
private Dictionary<string, AsyncOperationHandle<GameObject>> _loadedPrefabAssets = new();
|
||||
private Dictionary<string, AsyncOperationHandle<TextAsset>> _loadedTextAssets = new();
|
||||
|
||||
/// <summary>
|
||||
/// Whenever we release an asset, we store the timestamp of the release.
|
||||
/// After a certain amount of time, we will release the asset from the cache.
|
||||
/// </summary>
|
||||
private Dictionary<string, float> _releaseAssetTimestamps = new();
|
||||
[SerializeField]private float _releaseAssetTimeout = 10f;
|
||||
|
||||
public event Action OnDispose;
|
||||
|
||||
/// <summary>Get the count of currently loaded assets.</summary>
|
||||
public int LoadedPrefabCount => _loadedPrefabAssets.Count;
|
||||
|
||||
public bool IsInitialized() => _isInitialized;
|
||||
|
||||
protected override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
@@ -24,12 +37,32 @@ namespace BrewMonster.Scripts
|
||||
Addressables.InitializeAsync().Completed += OnInitializeComplete;
|
||||
}
|
||||
|
||||
public bool IsInitialized()
|
||||
#region Unity lifecycle
|
||||
private List<string> _assetToForceRelease = new();
|
||||
private void Update()
|
||||
{
|
||||
return _isInitialized;
|
||||
}
|
||||
foreach (var kvp in _releaseAssetTimestamps)
|
||||
{
|
||||
if (Time.realtimeSinceStartup - kvp.Value > _releaseAssetTimeout)
|
||||
{
|
||||
ForceReleaseAsset(kvp.Key);
|
||||
_assetToForceRelease.Add(kvp.Key);
|
||||
}
|
||||
}
|
||||
|
||||
void OnInitializeComplete(AsyncOperationHandle<IResourceLocator> handle)
|
||||
if (_assetToForceRelease.Count > 0)
|
||||
{
|
||||
for (int i = 0; i < _assetToForceRelease.Count; i++)
|
||||
{
|
||||
ForceReleaseAsset(_assetToForceRelease[i]);
|
||||
}
|
||||
_assetToForceRelease.Clear();
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region private functions
|
||||
private void OnInitializeComplete(AsyncOperationHandle<IResourceLocator> handle)
|
||||
{
|
||||
if (handle.Status == AsyncOperationStatus.Succeeded)
|
||||
{
|
||||
@@ -43,6 +76,16 @@ namespace BrewMonster.Scripts
|
||||
}
|
||||
}
|
||||
|
||||
private void RemoveFromReleaseAssetDictionary(string assetPath)
|
||||
{
|
||||
if (_releaseAssetTimestamps.ContainsKey(assetPath))
|
||||
{
|
||||
_releaseAssetTimestamps.Remove(assetPath);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region public functions
|
||||
/// <summary>
|
||||
/// Load a text asset asynchronously.
|
||||
/// NOTE: The key must match the Addressables "Address" (or another valid key like a label/GUID).
|
||||
@@ -52,6 +95,9 @@ namespace BrewMonster.Scripts
|
||||
/// <returns></returns>
|
||||
public async Task<TextAsset> LoadTextAssetAsync(string assetPath)
|
||||
{
|
||||
// remove the asset from the release timestamp dictionary. So it won't be released.
|
||||
RemoveFromReleaseAssetDictionary(assetPath);
|
||||
|
||||
if (_loadedTextAssets.ContainsKey(assetPath))
|
||||
{
|
||||
return _loadedTextAssets[assetPath].Result;
|
||||
@@ -70,72 +116,6 @@ namespace BrewMonster.Scripts
|
||||
}
|
||||
}
|
||||
|
||||
private static IEnumerable<string> GetCandidateKeys(string assetPath)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(assetPath))
|
||||
{
|
||||
yield break;
|
||||
}
|
||||
|
||||
// Exact key (what caller asked for)
|
||||
yield return assetPath;
|
||||
|
||||
// Common fallback used by this repo's Addressables settings: full asset path address.
|
||||
// Example in `Assets/AddressableAssetsData/AssetGroups/configuration.asset`:
|
||||
// m_Address: Assets/Addressable/elements.txt
|
||||
if (!assetPath.Contains("/") && !assetPath.Contains("\\"))
|
||||
{
|
||||
yield return $"Assets/Addressable/{assetPath}";
|
||||
}
|
||||
}
|
||||
|
||||
private static void LogSimilarKeys(string needle)
|
||||
{
|
||||
// Helpful diagnostics in dev builds: show a few keys containing the substring.
|
||||
try
|
||||
{
|
||||
var lower = needle?.ToLowerInvariant();
|
||||
if (string.IsNullOrEmpty(lower))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
const int max = 20;
|
||||
var matches = new List<string>(max);
|
||||
|
||||
foreach (var locator in Addressables.ResourceLocators)
|
||||
{
|
||||
foreach (var keyObj in locator.Keys)
|
||||
{
|
||||
if (keyObj is not string keyStr)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!keyStr.ToLowerInvariant().Contains(lower))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
matches.Add(keyStr);
|
||||
if (matches.Count >= max)
|
||||
{
|
||||
goto Done;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Done:
|
||||
if (matches.Count > 0)
|
||||
{
|
||||
BMLogger.LogWarning($"AddressableManager: Similar Addressables keys for '{needle}': {string.Join(", ", matches)}");
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
// ignore diagnostics failures
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Load an asset asynchronously. The address should look like this: "models/npcs/npc/魅灵首领/魅灵首领/魅灵首领.prefab"
|
||||
@@ -143,16 +123,20 @@ namespace BrewMonster.Scripts
|
||||
/// <returns></returns>
|
||||
public async Task<GameObject> LoadPrefabAsync(string assetPath)
|
||||
{
|
||||
if (_loadedAssets.ContainsKey(assetPath))
|
||||
// remove the asset from the release timestamp dictionary. So it won't be released.
|
||||
RemoveFromReleaseAssetDictionary(assetPath);
|
||||
|
||||
if (_loadedPrefabAssets.ContainsKey(assetPath))
|
||||
{
|
||||
return _loadedAssets[assetPath].Result;
|
||||
BMLogger.Log($"AddressableManager: Asset already loaded: {assetPath} is valid: (${_loadedPrefabAssets[assetPath].Result != null})");
|
||||
return _loadedPrefabAssets[assetPath].Result;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
var handle = Addressables.LoadAssetAsync<GameObject>(assetPath);
|
||||
await handle.Task;
|
||||
_loadedAssets[assetPath] = handle;
|
||||
_loadedPrefabAssets[assetPath] = handle;
|
||||
return handle.Result;
|
||||
}
|
||||
catch (System.Exception e)
|
||||
@@ -163,23 +147,40 @@ namespace BrewMonster.Scripts
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// When the asset is no longer needed, call this method to unload it.
|
||||
/// When the asset is no longer needed, call this method to unload it. <br/>
|
||||
/// The asset will be released after a certain amount of time. <br/>
|
||||
/// </summary>
|
||||
/// <param name="assetPath">The asset path used when loading the asset</param>
|
||||
public void ReleaseAsset(string assetPath)
|
||||
{
|
||||
if (_loadedAssets.TryGetValue(assetPath, out var handle))
|
||||
// If multiple release requests are made for the same asset, we only need to store the earliest release time.
|
||||
float currentReleaseTime = Time.realtimeSinceStartup;
|
||||
if (_releaseAssetTimestamps.TryGetValue(assetPath, out var timeStamp))
|
||||
{
|
||||
if (handle.IsValid())
|
||||
currentReleaseTime = Mathf.Min(currentReleaseTime, timeStamp);
|
||||
}
|
||||
_releaseAssetTimestamps[assetPath] = currentReleaseTime;
|
||||
}
|
||||
|
||||
public void ForceReleaseAsset(string assetPath)
|
||||
{
|
||||
if (_loadedPrefabAssets.TryGetValue(assetPath, out var loadedPrefabHandle))
|
||||
{
|
||||
if (loadedPrefabHandle.IsValid())
|
||||
{
|
||||
Addressables.Release(handle);
|
||||
Addressables.Release(loadedPrefabHandle);
|
||||
}
|
||||
_loadedAssets.Remove(assetPath);
|
||||
_loadedPrefabAssets.Remove(assetPath);
|
||||
BMLogger.Log($"AddressableManager: Released asset: {assetPath}");
|
||||
}
|
||||
else
|
||||
else if (_loadedTextAssets.TryGetValue(assetPath, out var loadedTextHandle))
|
||||
{
|
||||
BMLogger.LogWarning($"AddressableManager: Asset not found in cache: {assetPath}");
|
||||
if (loadedTextHandle.IsValid())
|
||||
{
|
||||
Addressables.Release(loadedTextHandle);
|
||||
}
|
||||
_loadedTextAssets.Remove(assetPath);
|
||||
BMLogger.Log($"AddressableManager: Released text asset: {assetPath}");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -200,14 +201,14 @@ namespace BrewMonster.Scripts
|
||||
/// </summary>
|
||||
public void ReleaseAllAssets()
|
||||
{
|
||||
foreach (var kvp in _loadedAssets)
|
||||
foreach (var kvp in _loadedPrefabAssets)
|
||||
{
|
||||
if (kvp.Value.IsValid())
|
||||
{
|
||||
Addressables.Release(kvp.Value);
|
||||
}
|
||||
}
|
||||
_loadedAssets.Clear();
|
||||
_loadedPrefabAssets.Clear();
|
||||
BMLogger.Log("AddressableManager: Released all assets");
|
||||
}
|
||||
|
||||
@@ -218,13 +219,11 @@ namespace BrewMonster.Scripts
|
||||
/// <returns>True if the asset is loaded</returns>
|
||||
public bool IsAssetLoaded(string assetPath)
|
||||
{
|
||||
return _loadedAssets.ContainsKey(assetPath) && _loadedAssets[assetPath].IsValid();
|
||||
return _loadedPrefabAssets.ContainsKey(assetPath) && _loadedPrefabAssets[assetPath].IsValid();
|
||||
}
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
/// Get the count of currently loaded assets.
|
||||
/// </summary>
|
||||
public int LoadedAssetCount => _loadedAssets.Count;
|
||||
|
||||
|
||||
private void OnDestroy()
|
||||
{
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@ using UnityEngine.SceneManagement;
|
||||
|
||||
namespace BrewMonster
|
||||
{
|
||||
public class BoostrapSceneController : MonoBehaviour
|
||||
public class BootstrapSceneController : MonoBehaviour
|
||||
{
|
||||
[SerializeField] private string _nextSceneName;
|
||||
|
||||
@@ -66,7 +66,7 @@ namespace BrewMonster
|
||||
else
|
||||
{
|
||||
_cinemachineCamera.Follow = CECGameRun.Instance.GetHostPlayer().transform;
|
||||
_cinemachineCamera.ForceCameraPosition(CECGameRun.Instance.GetHostPlayer().transform.position, Quaternion.identity);
|
||||
_cinemachineCamera.ForceCameraPosition(CECGameRun.Instance.GetHostPlayer().ObjectPosition, Quaternion.identity);
|
||||
orbital.HorizontalAxis.Value = 208;
|
||||
orbital.VerticalAxis.Value = -268;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
using Unity.Cinemachine;
|
||||
using UnityEngine;
|
||||
|
||||
namespace BrewMonster.Scripts
|
||||
{
|
||||
public class CameraProvider : MonoSingleton<CameraProvider>
|
||||
{
|
||||
|
||||
[SerializeField]private CinemachineBrain _cinemachineBrain;
|
||||
public CinemachineBrain CinemachineBrain
|
||||
{
|
||||
get => _cinemachineBrain;
|
||||
private set => _cinemachineBrain = value;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 536ca7dcb1b8e4e0fae1bb97ef326ed3
|
||||
@@ -0,0 +1,12 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace BrewMonster.Scripts
|
||||
{
|
||||
public class ConsistentObjectContainer : MonoBehaviour
|
||||
{
|
||||
private void Awake()
|
||||
{
|
||||
DontDestroyOnLoad(gameObject);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7e565f914738e4e68a1c2688272d0ee5
|
||||
@@ -1,3 +1,4 @@
|
||||
using BrewMonster.Scripts;
|
||||
using Unity.Cinemachine;
|
||||
using UnityEngine;
|
||||
|
||||
@@ -21,7 +22,7 @@ public class LookAtCamera : MonoBehaviour
|
||||
{
|
||||
if (targetCamera == null)
|
||||
{
|
||||
var brain = FindFirstObjectByType<CinemachineBrain>();
|
||||
var brain = CameraProvider.Instance.CinemachineBrain;
|
||||
if (brain != null)
|
||||
targetCamera = brain.OutputCamera;
|
||||
if (targetCamera == null && Camera.main != null)
|
||||
|
||||
@@ -539,10 +539,11 @@ namespace BrewMonster
|
||||
}
|
||||
public void SpawnGFX(long IDTarget)
|
||||
{
|
||||
#if UNITY_EDITOR
|
||||
BMLogger.LogError("HoangDev: Load A3DSkillGfxComposer GFX name: " + flyGfxName);
|
||||
BMLogger.LogError("HoangDev: Load A3DSkillGfxComposer GFX name: " + hitGfxName);
|
||||
BMLogger.LogError("HoangDev: Load A3DSkillGfxComposer GFX name: " + hitGrdGfxName);
|
||||
|
||||
#endif
|
||||
var obj = EC_ManMessageMono.Instance.GetObject(IDTarget, 0);
|
||||
if (obj != null && flyGFX != null)
|
||||
{
|
||||
|
||||
@@ -1300,7 +1300,7 @@ namespace BrewMonster.Scripts
|
||||
protected virtual uint GetMoveRelDirMask()
|
||||
{
|
||||
// TODO: hook up CECHostPlayer move-direction flags when available.
|
||||
return 0;
|
||||
return m_pHost.m_dwMoveRelDir;
|
||||
}
|
||||
|
||||
private void UpdateFacingFromDelta(A3DVECTOR3 nextPos)
|
||||
|
||||
@@ -158,19 +158,15 @@ namespace BrewMonster.Scripts.Managers
|
||||
{
|
||||
if (buttons == null)
|
||||
{
|
||||
Debug.LogWarning($"[UpdatePackageCooldowns] Buttons list is null for package {package}");
|
||||
return;
|
||||
}
|
||||
|
||||
var items = model.GetInventoryData(package);
|
||||
if (items == null)
|
||||
{
|
||||
Debug.LogWarning($"[UpdatePackageCooldowns] Items dictionary is null for package {package}");
|
||||
return;
|
||||
}
|
||||
|
||||
Debug.Log($"[UpdatePackageCooldowns] Updating package {package} with {buttons.Count} buttons and {items.Count} items");
|
||||
|
||||
for (int slot = 0; slot < buttons.Count; slot++)
|
||||
{
|
||||
var button = buttons[slot];
|
||||
|
||||
@@ -1088,6 +1088,16 @@ namespace BrewMonster.Scripts.Managers
|
||||
/// </summary>
|
||||
public virtual bool SetItemInfo(byte[] pInfoData, int iDataLen)
|
||||
{
|
||||
if (pInfoData != null && iDataLen > 0)
|
||||
{
|
||||
this.Content = new byte[iDataLen];
|
||||
Buffer.BlockCopy(pInfoData, 0, this.Content, 0, iDataLen);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.Content = null;
|
||||
}
|
||||
|
||||
m_bNeedUpdate = false;
|
||||
m_bUpdating = false;
|
||||
m_strDesc = string.Empty;
|
||||
|
||||
@@ -20,6 +20,11 @@ public class CECObject : MonoBehaviour
|
||||
protected Quaternion targetRotation;
|
||||
protected Quaternion startRotation; // Store starting rotation for Slerp
|
||||
protected Vector3 g_vAxisY = Vector3.up;
|
||||
|
||||
|
||||
protected Transform _objectTransform;
|
||||
protected Vector3 objectPosition;
|
||||
public Vector3 ObjectPosition { get => objectPosition; }
|
||||
// Class ID
|
||||
public static class Class_ID
|
||||
{
|
||||
@@ -137,13 +142,20 @@ public class CECObject : MonoBehaviour
|
||||
return v / mag;
|
||||
}
|
||||
|
||||
public A3DVECTOR3 GetPos()
|
||||
/// <summary>
|
||||
/// Get the position of the object. <br/>
|
||||
/// Consider NOT use the transform position if you get the data from outside of the MainThread.
|
||||
/// </summary>
|
||||
/// <param name="useTransform">If true, use the transform position, otherwise use the object position for slighly better performance.</param>
|
||||
/// <returns></returns>
|
||||
public A3DVECTOR3 GetPos(bool useTransform = true)
|
||||
{
|
||||
return EC_Utility.ToA3DVECTOR3(transform.position);
|
||||
return EC_Utility.ToA3DVECTOR3(useTransform ? _objectTransform.position : objectPosition);
|
||||
}
|
||||
public Vector3 GetPosVector3()
|
||||
|
||||
public Vector3 GetPosVector3(bool useTransform = true)
|
||||
{
|
||||
return transform.position;
|
||||
return useTransform ? _objectTransform.position : objectPosition;
|
||||
}
|
||||
|
||||
// Turn around object and face to specified object
|
||||
@@ -189,6 +201,11 @@ public class CECObject : MonoBehaviour
|
||||
}
|
||||
protected virtual void Update()
|
||||
{
|
||||
if (_objectTransform == null)
|
||||
{
|
||||
_objectTransform = transform;
|
||||
}
|
||||
objectPosition = _objectTransform.position;
|
||||
if (m_bAdjustOrient)
|
||||
AdjustOrientation(Time.deltaTime);
|
||||
}
|
||||
|
||||
@@ -245,7 +245,7 @@ namespace BrewMonster.Scripts
|
||||
{
|
||||
// Fallback: assume maps/{mapName}/movemap/ structure
|
||||
// 回退:假设 maps/{mapName}/movemap/ 结构
|
||||
Debug.LogWarning($"[CECIntelligentRoute] ResolveAddressableBytes: cannot resolve relative key '{key}' with basePath '{basePath}'");
|
||||
BMLogger.LogWarning($"[CECIntelligentRoute] ResolveAddressableBytes: cannot resolve relative key '{key}' with basePath '{basePath}'");
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -279,18 +279,18 @@ namespace BrewMonster.Scripts
|
||||
// it means the files need to be properly configured in Addressables.
|
||||
// 如果资产存在但注册为 DefaultAsset(文件夹)而不是 TextAsset,
|
||||
// 这意味着文件需要在 Addressables 中正确配置。
|
||||
Debug.LogError($"[CECIntelligentRoute] ResolveAddressableBytes: Asset '{address}' is registered as DefaultAsset (folder) instead of TextAsset. " +
|
||||
BMLogger.LogError($"[CECIntelligentRoute] ResolveAddressableBytes: Asset '{address}' is registered as DefaultAsset (folder) instead of TextAsset. " +
|
||||
$"Please ensure the file is properly imported as a TextAsset in Unity and marked as Addressable. " +
|
||||
$"You may need to: 1) Select the file in Unity, 2) Set Import Type to 'Text' in Inspector, 3) Mark as Addressable. Error: {ex.Message}");
|
||||
return null;
|
||||
}
|
||||
|
||||
Debug.LogWarning($"[CECIntelligentRoute] ResolveAddressableBytes: failed to load '{address}' (asset is null or has no bytes)");
|
||||
BMLogger.LogWarning($"[CECIntelligentRoute] ResolveAddressableBytes: failed to load '{address}' (asset is null or has no bytes)");
|
||||
return null;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Debug.LogWarning($"[CECIntelligentRoute] ResolveAddressableBytes failed for '{key}': {ex.Message}");
|
||||
BMLogger.LogWarning($"[CECIntelligentRoute] ResolveAddressableBytes failed for '{key}': {ex.Message}");
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -309,7 +309,7 @@ namespace BrewMonster.Scripts
|
||||
ResetSearch();
|
||||
if (m_moveAgents.Count == 0)
|
||||
{
|
||||
if (DEBUG_AUTOPF) Debug.LogWarning("[CECIntelligentRoute] Search: no moveAgents (uninitialized)");
|
||||
if (DEBUG_AUTOPF) BMLogger.LogWarning("[CECIntelligentRoute] Search: no moveAgents (uninitialized)");
|
||||
return SearchResult.enumSearchUnInitialized;
|
||||
}
|
||||
|
||||
@@ -364,7 +364,7 @@ namespace BrewMonster.Scripts
|
||||
{
|
||||
if (DEBUG_AUTOPF)
|
||||
{
|
||||
Debug.LogWarning($"[CECIntelligentRoute] Search: no path. start=({start.x:F2},{start.y:F2},{start.z:F2}) end=({end.x:F2},{end.y:F2},{end.z:F2}) agentIndex={idx}");
|
||||
BMLogger.LogWarning($"[CECIntelligentRoute] Search: no path. start=({start.x:F2},{start.y:F2},{start.z:F2}) end=({end.x:F2},{end.y:F2},{end.z:F2}) agentIndex={idx}");
|
||||
}
|
||||
ResetSearch();
|
||||
return SearchResult.enumSearchNoPath;
|
||||
@@ -374,7 +374,7 @@ namespace BrewMonster.Scripts
|
||||
m_iCurDest = 0;
|
||||
if (DEBUG_AUTOPF)
|
||||
{
|
||||
Debug.Log($"[CECIntelligentRoute] Search: success pathCount={agent.GetPathCount()} start=({start.x:F2},{start.z:F2}) end=({end.x:F2},{end.z:F2})");
|
||||
BMLogger.Log($"[CECIntelligentRoute] Search: success pathCount={agent.GetPathCount()} start=({start.x:F2},{start.z:F2}) end=({end.x:F2},{end.z:F2})");
|
||||
}
|
||||
return SearchResult.enumSearchSuccess;
|
||||
}
|
||||
|
||||
@@ -112,7 +112,7 @@ namespace BrewMonster
|
||||
int m_iBuddyId;
|
||||
int m_idCandBuddy; // ID of candidate buddy
|
||||
EC_ManPlayer m_pPlayerMan => EC_ManMessageMono.Instance?.GetECManPlayer; // Player manager
|
||||
protected Transform playerTransform => transform;
|
||||
protected Transform playerTransform => _objectTransform ??= transform;
|
||||
|
||||
public MOVECONST m_MoveConst; // Const used when moving control
|
||||
public Move_Mode m_MoveMode;
|
||||
|
||||
@@ -108,7 +108,7 @@ namespace BrewMonster
|
||||
|
||||
static LayerMask UsedMask_Ground() => TerrainMask;
|
||||
|
||||
public static bool CollideWithEnv(ref env_trace_t pEnvTrc)
|
||||
public static bool CollideWithEnv(ref env_trace_t pEnvTrc, bool isNeedCheckGr = true)
|
||||
{
|
||||
pEnvTrc.fFraction = 100.0f;
|
||||
pEnvTrc.bStartSolid = false;
|
||||
@@ -150,10 +150,13 @@ namespace BrewMonster
|
||||
dir = vTerStart + vDelta;
|
||||
|
||||
countHits = 0;
|
||||
countHits = Physics.RaycastNonAlloc(vStart, Vector3.down, fHitsTerrain, vExt.y, TerrainMask);
|
||||
if(countHits > 0 && fHitsTerrain[0].point.y >= vTerStart.y)
|
||||
if (isNeedCheckGr)
|
||||
{
|
||||
vTerStart.y = fHitsTerrain[0].point.y;
|
||||
countHits = Physics.RaycastNonAlloc(vStart, Vector3.down, fHitsTerrain, vExt.y, TerrainMask);
|
||||
if(countHits > 0 && fHitsTerrain[0].point.y >= vTerStart.y)
|
||||
{
|
||||
vTerStart.y = fHitsTerrain[0].point.y;
|
||||
}
|
||||
}
|
||||
fHitsTerrain = new RaycastHit[5];
|
||||
countHits = Physics.RaycastNonAlloc(vTerStart, dir.normalized, fHitsTerrain, vDelta.magnitude, TerrainMask);
|
||||
@@ -466,7 +469,7 @@ namespace BrewMonster
|
||||
float VEL_EPSILON = 1E-4f;
|
||||
float DIST_EPSILON = 1e-4f;
|
||||
float NORMAL_EPSILON = 1e-2f;
|
||||
float MAX_TRY = 1;
|
||||
float MAX_TRY = 4;
|
||||
float VEL_MAX_SPEED = 200.0f;
|
||||
float VEL_REFLECT = 0.3f;
|
||||
|
||||
@@ -586,7 +589,7 @@ namespace BrewMonster
|
||||
tmpInfo.vDelta = vDelta;
|
||||
tmpInfo.vTerStart = vStart;
|
||||
tmpInfo.vTerStart.y -= vExt.y;
|
||||
bool bMove = !CollideWithEnv(ref tmpInfo);
|
||||
bool bMove = !CollideWithEnv(ref tmpInfo, false);
|
||||
if (!bMove)
|
||||
{
|
||||
vDelta *= tmpInfo.fFraction;
|
||||
@@ -736,7 +739,7 @@ namespace BrewMonster
|
||||
return false;
|
||||
}
|
||||
pTrc.vEnd = trcInfo.vStart + trcInfo.vDelta * trcInfo.fFraction;
|
||||
pTrc.vEnd.y += 0.2f;
|
||||
pTrc.vEnd.y += 0.05f; // need add delta Y for Support Plane when check with brush mask.
|
||||
pTrc.vHitNormal = trcInfo.normal;
|
||||
|
||||
float fUp = pTrc.vExt.y;
|
||||
|
||||
@@ -3,9 +3,11 @@ using BrewMonster.Network;
|
||||
using BrewMonster.Scripts;
|
||||
using BrewMonster.Scripts.Task;
|
||||
using CSNetwork.GPDataType;
|
||||
using Cysharp.Threading.Tasks;
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using UnityEngine;
|
||||
using static CECNPC;
|
||||
|
||||
@@ -18,6 +20,8 @@ public class CECNPCServer : CECNPC
|
||||
private IconTaskType m_TaskIcon = IconTaskType.QI_NONE;
|
||||
private CECCounter m_TaskCounter = new CECCounter();
|
||||
|
||||
private bool _needUpdateTaskIcon = false;
|
||||
|
||||
public override void SetUpCECNPC(CECNPCMan pNPCMan)
|
||||
{
|
||||
base.SetUpCECNPC(pNPCMan);
|
||||
@@ -68,13 +72,29 @@ public class CECNPCServer : CECNPC
|
||||
return true;
|
||||
}
|
||||
|
||||
protected override void Awake()
|
||||
{
|
||||
base.Awake();
|
||||
var destroyToken = this.GetCancellationTokenOnDestroy();
|
||||
UniTask.RunOnThreadPool(UpdateCurTaskIconProcess, false, cancellationToken: destroyToken).Forget();
|
||||
}
|
||||
|
||||
protected override void Update()
|
||||
{
|
||||
base.Update();
|
||||
|
||||
if (m_TaskCounter.IncCounter(Time.deltaTime * 1000))
|
||||
if (_needUpdateTaskIcon)
|
||||
{
|
||||
m_TaskCounter.Reset();
|
||||
UpdateTaskIconUI();
|
||||
_needUpdateTaskIcon = false;
|
||||
}
|
||||
}
|
||||
|
||||
private async UniTask UpdateCurTaskIconProcess()
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
await Task.Delay(1000);
|
||||
UpdateCurTaskIcon();
|
||||
}
|
||||
}
|
||||
@@ -165,7 +185,7 @@ public class CECNPCServer : CECNPC
|
||||
{
|
||||
m_TaskIcon = IconTaskType.QI_IN_K;
|
||||
BMLogger.Log($"[UpdateCurTaskIcon] Set icon QI_IN_K for task {idTask}");
|
||||
UpdateTaskIconUI();
|
||||
_needUpdateTaskIcon = true;
|
||||
return;
|
||||
}
|
||||
else if (pTaskTemp.GetType() == (uint)ENUM_TASK_TYPE.enumTTEvent || pTaskTemp.GetType() == (uint)ENUM_TASK_TYPE.enumTTDaily)
|
||||
@@ -211,7 +231,7 @@ public class CECNPCServer : CECNPC
|
||||
m_TaskIcon = IconTaskType.QI_IN_TYPE1;
|
||||
|
||||
BMLogger.Log($"[UpdateCurTaskIcon] Set complete icon {m_TaskIcon}");
|
||||
UpdateTaskIconUI();
|
||||
_needUpdateTaskIcon = true;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -255,7 +275,7 @@ public class CECNPCServer : CECNPC
|
||||
if (pTaskTemp.IsKeyTask())
|
||||
{
|
||||
m_TaskIcon = IconTaskType.QI_OUT_K;
|
||||
UpdateTaskIconUI();
|
||||
_needUpdateTaskIcon = true;
|
||||
return;
|
||||
}
|
||||
else if (pTaskTemp.GetType() == (uint)ENUM_TASK_TYPE.enumTTEvent || pTaskTemp.GetType() == (uint)ENUM_TASK_TYPE.enumTTDaily)
|
||||
@@ -304,7 +324,7 @@ public class CECNPCServer : CECNPC
|
||||
m_TaskIcon = IconTaskType.QI_OUT_N;
|
||||
|
||||
//BMLogger.Log($"[UpdateCurTaskIcon] Final icon {m_TaskIcon}, taskFlag={taskFlag}");
|
||||
UpdateTaskIconUI();
|
||||
_needUpdateTaskIcon = true;
|
||||
}
|
||||
|
||||
private void UpdateTaskIconUI()
|
||||
|
||||
+2
-3
@@ -1,8 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e87c0edb5abf70047b61a962856e094a
|
||||
NativeFormatImporter:
|
||||
guid: d0c06c588e2a6442488a3542551fb243
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 4300000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -26,6 +26,8 @@ namespace CSNetwork
|
||||
public Queue<ECMSG> m_MsgList = new Queue<ECMSG>();
|
||||
private IMsgHandler m_tempHandler; // so we don't have to allocate a new one every time
|
||||
|
||||
private static ECMSG _currentMsg;
|
||||
|
||||
private EC_ManMessage() { }
|
||||
|
||||
/// <summary>Post a message to the message queue</summary>
|
||||
@@ -63,16 +65,16 @@ namespace CSNetwork
|
||||
int i, count = Instance.m_MsgList.Count;
|
||||
for (i = 0; i < count; i++)
|
||||
{
|
||||
ECMSG msg = Instance.m_MsgList.Dequeue();
|
||||
if (!Instance.m_MsgHandlerList.ContainsKey(msg.iManager))
|
||||
_currentMsg = Instance.m_MsgList.Dequeue();
|
||||
if (!Instance.m_MsgHandlerList.ContainsKey(_currentMsg.iManager))
|
||||
{
|
||||
BMLogger.LogError("Did not find handler ID: " + msg.iManager);
|
||||
BMLogger.LogError("Did not find handler ID: " + _currentMsg.iManager);
|
||||
continue;
|
||||
}
|
||||
Instance.m_tempHandler = Instance.m_MsgHandlerList[msg.iManager];
|
||||
Instance.m_tempHandler = Instance.m_MsgHandlerList[_currentMsg.iManager];
|
||||
if (Instance.m_tempHandler != null)
|
||||
{
|
||||
Instance.m_tempHandler.ProcessMessage(msg);
|
||||
Instance.m_tempHandler.ProcessMessage(_currentMsg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1305,9 +1305,17 @@ namespace CSNetwork.GPDataType
|
||||
public uint count;
|
||||
public ushort crc;
|
||||
public ushort content_length;
|
||||
public byte[] content;
|
||||
//public byte[] content;
|
||||
};
|
||||
|
||||
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
||||
public struct cmd_empty_item_slot
|
||||
{
|
||||
public byte byPackage;
|
||||
public byte bySlot;
|
||||
}
|
||||
|
||||
|
||||
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
||||
public struct cmd_get_own_money
|
||||
{
|
||||
|
||||
@@ -512,14 +512,14 @@ namespace CSNetwork
|
||||
{
|
||||
_logger.Log(LogType.Debug,
|
||||
$"Sending protocol: {protocol.GetType().Name} (Detail: {protocol.ToString})");
|
||||
Debug.Log($"[GameSession] Sending protocol: {protocol.GetType().Name} (Type: {protocol.GetPType()})");
|
||||
BMLogger.Log($"[GameSession] Sending protocol: {protocol.GetType().Name} (Type: {protocol.GetPType()})");
|
||||
_networkManager.Send(protocol);
|
||||
complete?.Invoke();
|
||||
}
|
||||
else
|
||||
{
|
||||
_logger.Log(LogType.Warning, $"Cannot send protocol ({protocol.GetType().Name}), not connected.");
|
||||
Debug.LogError($"[GameSession] Cannot send protocol ({protocol.GetType().Name}), not connected.");
|
||||
BMLogger.LogError($"[GameSession] Cannot send protocol ({protocol.GetType().Name}), not connected.");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -150,7 +150,7 @@ namespace BrewMonster.Network
|
||||
public void c2s_SendCmdStopMove(in Vector3 vDest, float fSpeed, int iMoveMode,
|
||||
byte byDir, ushort wStamp, int iTime)
|
||||
{
|
||||
Debug.LogWarning("HoangDev : c2s_SendCmdStopMove");
|
||||
BMLogger.LogWarning("HoangDev : c2s_SendCmdStopMove");
|
||||
Instance._gameSession.c2s_SendCmdStopMove(vDest, fSpeed, iMoveMode, byDir, wStamp, iTime);
|
||||
}
|
||||
public void c2s_CmdPlayerMove(in Vector3 vCurPos, in Vector3 vDest,
|
||||
@@ -347,6 +347,17 @@ namespace BrewMonster.Network
|
||||
{
|
||||
return _gameSession.GetRoleInfo();
|
||||
}
|
||||
|
||||
public string GetWorldInstanceName()
|
||||
{
|
||||
switch (_gameSession.GetRoleInfo().worldtag)
|
||||
{
|
||||
case 161:
|
||||
return "a61";
|
||||
default:
|
||||
return "a61";
|
||||
}
|
||||
}
|
||||
/// <summary>Make sure username and password is set before calling this method</summary>
|
||||
private async Task ConnectAsync(string ip, int port)
|
||||
{
|
||||
@@ -376,7 +387,7 @@ namespace BrewMonster.Network
|
||||
|
||||
public static void EnterWorldAsync(RoleInfo roleInfo, Action callback = null)
|
||||
{
|
||||
Debug.Log("EnterWorldAsync !!!!! nay ");
|
||||
BMLogger.Log("EnterWorldAsync !!!!! nay ");
|
||||
Instance._gameSession.EnterWorldAsync(roleInfo, callback);
|
||||
}
|
||||
public static void SendChatData(byte cChannel, in string szMsg, int iPack, int iSlot)
|
||||
@@ -629,13 +640,13 @@ namespace BrewMonster.Network
|
||||
Instance._gameSession.GetRoleCustomizeData(iNumRole, aRoleIDs);
|
||||
}
|
||||
|
||||
public void LoadScene(string sceneName, LoadSceneMode mode, Action<bool> actDone)
|
||||
public void LoadScene(string sceneName, LoadSceneMode mode, Action<float> actProgress, Action<bool> actDone)
|
||||
{
|
||||
// SceneLoadService.Load(sceneName, mode, actDone);
|
||||
StartCoroutine(LoadSceneCoroutine(sceneName, mode, actDone));
|
||||
StartCoroutine(LoadSceneCoroutine(sceneName, mode, actProgress, actDone));
|
||||
}
|
||||
|
||||
private IEnumerator LoadSceneCoroutine(string sceneName, LoadSceneMode mode, Action<bool> actDone)
|
||||
private IEnumerator LoadSceneCoroutine(string sceneName, LoadSceneMode mode, Action<float> actProgress, Action<bool> actDone)
|
||||
{
|
||||
AsyncOperation asyncLoad = SceneManager.LoadSceneAsync(sceneName, mode);
|
||||
asyncLoad.allowSceneActivation = false;
|
||||
|
||||
@@ -235,6 +235,8 @@ namespace PerfectWorld.Scripts
|
||||
|
||||
private new void Update()
|
||||
{
|
||||
base.Update();
|
||||
|
||||
// Recovery: after Unity domain reload, manager dictionaries reset but scene objects persist.
|
||||
// Keep trying until we successfully register.
|
||||
if (!m_registeredToManMatter)
|
||||
|
||||
@@ -30,24 +30,6 @@ namespace BrewMonster
|
||||
public void ShowLoadingScene(bool active)
|
||||
{
|
||||
goContent.SetActive(active);
|
||||
|
||||
// if (active)
|
||||
// {
|
||||
// Debug.LogError("Loading scene controller started");
|
||||
//
|
||||
// finished = false;
|
||||
// loadingText.text = "Loading...";
|
||||
// UpdateUI(0);
|
||||
//
|
||||
// cts?.Cancel();
|
||||
// cts = new CancellationTokenSource();
|
||||
//
|
||||
// ObserveLoadingAsync(cts.Token).Forget();
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// cts?.Cancel();
|
||||
// }
|
||||
}
|
||||
|
||||
async UniTaskVoid ObserveLoadingAsync(CancellationToken token)
|
||||
|
||||
@@ -6,6 +6,11 @@ namespace BrewMonster
|
||||
{
|
||||
public GameObject InstantiateObject(GameObject prefab, Transform parent =null, bool setThisAsParent = true)
|
||||
{
|
||||
if (prefab == null)
|
||||
{
|
||||
BMLogger.LogError("ObjectSpawner::InstantiateObject, prefab is null");
|
||||
return GameObject.CreatePrimitive(PrimitiveType.Cube);
|
||||
}
|
||||
if (setThisAsParent)
|
||||
{
|
||||
return Instantiate(prefab, transform);
|
||||
|
||||
@@ -434,7 +434,7 @@ namespace BrewMonster.Scripts.Task
|
||||
pTaskMan.Release();
|
||||
LoadingSceneController.Instance.ShowLoadingScene(true);
|
||||
LoadingSceneController.Instance.UpdateUI(0f);
|
||||
LoadingSceneController.Instance.SetLoadingText("Loading Tasks From Pack");
|
||||
LoadingSceneController.Instance.SetLoadingText("Du Nhập Thế Giới Hoàn Mỹ");
|
||||
|
||||
//string task_data_path = Path.Combine(Application.streamingAssetsPath, "data/tasks.data");
|
||||
string task_data_path = "Assets/PerfectWorld/Data/tasks.txt";
|
||||
@@ -444,15 +444,17 @@ namespace BrewMonster.Scripts.Task
|
||||
LoadingSceneController.Instance.SetProgress(x);
|
||||
}, _cts.Token);
|
||||
|
||||
|
||||
LoadingSceneController.Instance.UpdateUI(0.3f);
|
||||
//var task_npc_path = Path.Combine(Application.streamingAssetsPath, "data/task_npc.data");
|
||||
var task_npc_path = "Assets/PerfectWorld/Data/task_npc.txt";
|
||||
await pTaskMan.LoadNPCInfoFromPack(task_npc_path);
|
||||
|
||||
LoadingSceneController.Instance.UpdateUI(0.8f);
|
||||
|
||||
//var dyn_tasks_path = Path.Combine(Application.streamingAssetsPath, "data/dyn_tasks.data");
|
||||
var dyn_tasks_path = "Assets/PerfectWorld/Data/dyn_tasks.txt";
|
||||
await pTaskMan.VerifyDynTasksPack(dyn_tasks_path);
|
||||
|
||||
LoadingSceneController.Instance.UpdateUI(1f);
|
||||
InitActiveTaskList();
|
||||
SceneLoader.SceneLoadProcess = SceneLoadProcess.EndLoading;
|
||||
LoadingSceneController.Instance.ShowLoadingScene(false);
|
||||
@@ -868,7 +870,7 @@ namespace BrewMonster.Scripts.Task
|
||||
|
||||
public int GetPos(float[] pos)
|
||||
{
|
||||
A3DVECTOR3 vPos = m_pHost.GetPos();
|
||||
A3DVECTOR3 vPos = m_pHost.GetPos(false);
|
||||
if (pos != null && pos.Length >= 3)
|
||||
{
|
||||
pos[0] = vPos.x;
|
||||
|
||||
@@ -1757,7 +1757,7 @@ namespace BrewMonster.Scripts.Task
|
||||
public uint CheckHistoryStage(TaskInterface pTask)
|
||||
{
|
||||
int index = pTask.GetCurHistoryStageIndex();
|
||||
|
||||
if (m_FixedData.m_iPremHistoryStageIndex == null) return TaskInterfaceConstants.TASK_PREREQU_FAIL_HISTORYSTAGE;
|
||||
if (m_FixedData.m_iPremHistoryStageIndex[0] != 0 && (index <=0 || index < m_FixedData.m_iPremHistoryStageIndex[0]))
|
||||
return (uint)TaskInterfaceConstants.TASK_PREREQU_FAIL_HISTORYSTAGE;
|
||||
if (m_FixedData.m_iPremHistoryStageIndex[1] != 0 && (index <=0 || index > m_FixedData.m_iPremHistoryStageIndex[1]))
|
||||
|
||||
@@ -411,12 +411,17 @@ namespace BrewMonster
|
||||
|
||||
private void ClearEquipSlot()
|
||||
{
|
||||
if (m_FirstInvSlot >= 0)
|
||||
{
|
||||
ReturnItemToInventory(m_FirstInvSlot);
|
||||
}
|
||||
|
||||
m_SelectedEquip?.Freeze(false);
|
||||
m_SelectedEquip = null;
|
||||
m_FirstInvSlot = -1;
|
||||
m_TxtFirstName.text = "___";
|
||||
ClearSlotIcon(m_SlotFirstParent);
|
||||
if(m_Mode == InstallMode.Disenchase)
|
||||
if (m_Mode == InstallMode.Disenchase)
|
||||
{
|
||||
m_install_price = -1;
|
||||
m_TxtMoney.text = "0";
|
||||
@@ -425,6 +430,11 @@ namespace BrewMonster
|
||||
|
||||
private void ClearMaterialSlot()
|
||||
{
|
||||
if (m_SecondInvSlot >= 0)
|
||||
{
|
||||
ReturnItemToInventory(m_SecondInvSlot);
|
||||
}
|
||||
|
||||
m_SelectedMaterial?.Freeze(false);
|
||||
m_SelectedMaterial = null;
|
||||
m_SecondInvSlot = -1;
|
||||
@@ -450,7 +460,7 @@ namespace BrewMonster
|
||||
// PAUIDIALOG pMsgBox;
|
||||
CECHostPlayer pHost = GetHostPlayer();
|
||||
|
||||
if (pHost != null || m_Mode == InstallMode.Enchase)
|
||||
if (pHost != null && m_Mode == InstallMode.Enchase)
|
||||
{
|
||||
// if( !m_pItema->GetDataPtr("ptr_CECIvtrItem") ) return;
|
||||
string message = "";
|
||||
@@ -529,16 +539,18 @@ namespace BrewMonster
|
||||
// pMsgBox.SetLife(3);
|
||||
return;
|
||||
}
|
||||
|
||||
//pr
|
||||
UnityGameSession.c2s_CmdNPCSevEmbed(
|
||||
(ushort)m_SecondInvSlot, (ushort)m_FirstInvSlot,
|
||||
pIvtrB.GetTemplateID(), pIvtrA.GetTemplateID());
|
||||
// ClearEquipment();
|
||||
// ClearStone();
|
||||
ClearEquipSlot();
|
||||
ClearMaterialSlot();
|
||||
pHost.GetPack(InventoryConst.IVTRTYPE_PACK).UnfreezeAllItems();
|
||||
|
||||
message = GetGameUIMan().GetStringFromTable(228);
|
||||
CECUIManager.Instance.ShowMessageBox("", message);
|
||||
|
||||
// GetGameUIMan().MessageBox("", GetGameUIMan().GetStringFromTable(228),
|
||||
// MB_OK, A3DCOLORRGBA(255, 255, 255, 160), &pMsgBox);
|
||||
// pMsgBox.SetLife(3);
|
||||
|
||||
@@ -40,6 +40,14 @@ namespace BrewMonster.UI
|
||||
{
|
||||
// Ensure wrapper created early (Tech3C SDK).
|
||||
_ = Tech3CSDKWrapper.Instance;
|
||||
|
||||
#if UNITY_EDITOR
|
||||
_usernameInputField.gameObject.SetActive(true);
|
||||
_passwordInputField.gameObject.SetActive(true);
|
||||
#else
|
||||
_usernameInputField.gameObject.SetActive(false);
|
||||
_passwordInputField.gameObject.SetActive(false);
|
||||
#endif
|
||||
}
|
||||
|
||||
void OnEnable()
|
||||
@@ -61,11 +69,11 @@ namespace BrewMonster.UI
|
||||
context = SynchronizationContext.Current;
|
||||
|
||||
// Requirement: Login UI should also have a61 loaded.
|
||||
var world = SceneManager.GetSceneByName("a61");
|
||||
if (!world.IsValid() || !world.isLoaded)
|
||||
{
|
||||
SceneManager.LoadSceneAsync("a61", LoadSceneMode.Additive);
|
||||
}
|
||||
// var world = SceneManager.GetSceneByName("a61");
|
||||
// if (!world.IsValid() || !world.isLoaded)
|
||||
// {
|
||||
// SceneManager.LoadSceneAsync("a61", LoadSceneMode.Additive);
|
||||
// }
|
||||
|
||||
_usernameInputField.text = PlayerPrefs.GetString("username", "");
|
||||
_passwordInputField.text = PlayerPrefs.GetString("password", "");
|
||||
@@ -259,6 +267,7 @@ namespace BrewMonster.UI
|
||||
|
||||
private void OnClickSelectCharacter(RoleInfo roleInfo)
|
||||
{
|
||||
LoadingSceneController.Instance.ShowLoadingScene(true);
|
||||
UnityGameSession.SelectRoleAsync(roleInfo, OnSelectRoleComplete);
|
||||
}
|
||||
|
||||
@@ -327,7 +336,6 @@ namespace BrewMonster.UI
|
||||
};
|
||||
SceneLoader.SceneLoadProcess = SceneLoadProcess.Loading;
|
||||
SceneLoader.LoadingProgress = 0;
|
||||
LoadingSceneController.Instance.ShowLoadingScene(true);
|
||||
#if TESTFAST
|
||||
string nameScene = "LoginScene";
|
||||
SceneManager.UnloadSceneAsync(nameScene);
|
||||
@@ -336,16 +344,17 @@ namespace BrewMonster.UI
|
||||
actLoadChar?.Invoke();
|
||||
UnityGameSession.EnterWorldAsync(roleInfo, OnEnterWorldComplete);
|
||||
#else
|
||||
string nameScene = "NPCRender";
|
||||
UnityGameSession.Instance.LoadScene(nameScene, LoadSceneMode.Single, (value) =>
|
||||
string nameScene = UnityGameSession.Instance.GetWorldInstanceName();
|
||||
UnityGameSession.Instance.LoadScene(nameScene, LoadSceneMode.Single,
|
||||
(progress) =>
|
||||
{
|
||||
isDoneNPCRender = value;
|
||||
actLoadChar?.Invoke();
|
||||
});
|
||||
nameScene = "a61";
|
||||
UnityGameSession.Instance.LoadScene(nameScene, LoadSceneMode.Additive, (value) =>
|
||||
LoadingSceneController.Instance.SetProgress(progress);
|
||||
},
|
||||
(value) =>
|
||||
{
|
||||
isDoneWorldRender = value;
|
||||
isDoneNPCRender = true;
|
||||
isDoneWorldRender = true;
|
||||
actLoadChar?.Invoke();
|
||||
UnityGameSession.EnterWorldAsync(roleInfo, OnEnterWorldComplete);
|
||||
|
||||
|
||||
@@ -65,6 +65,10 @@ namespace PerfectWorld.UI.MiniMap
|
||||
UpdateMiniMap();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// We keep the player icon at the center of the minimap. Then we update the position of the map itself.
|
||||
/// TODO: We have to keep track of the NPC icons on the map also.
|
||||
/// </summary>
|
||||
private void UpdateMiniMap()
|
||||
{
|
||||
m_pHostPlayer = GetHostPlayer();
|
||||
@@ -84,6 +88,10 @@ namespace PerfectWorld.UI.MiniMap
|
||||
_hostPlayerIcon.localRotation = Quaternion.Euler(0, 0, -hostTransform.localRotation.eulerAngles.y);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the Host Player instance.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
private CECHostPlayer GetHostPlayer()
|
||||
{
|
||||
return CECGameRun.Instance.GetHostPlayer();
|
||||
@@ -114,6 +122,8 @@ namespace PerfectWorld.UI.MiniMap
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// this is for debuging/testing while this feature was in development
|
||||
[ContextMenu("MoveHostPlayerIconToPos")]
|
||||
public void MoveHostPlayerIconToPos()
|
||||
{
|
||||
|
||||
@@ -10,8 +10,8 @@ namespace BrewMonster
|
||||
{
|
||||
public static class AddressableTools
|
||||
{
|
||||
private static string _modelPathPrefixToRemove = "Assets/ModelRenderer/Art/Models";
|
||||
private static string _gfxPathPrefixToRemove = "Assets/ModelRenderer/Art/Gfx";
|
||||
public static string _modelPathPrefixToRemove = "Assets/ModelRenderer/Art/Models";
|
||||
public static string _gfxPathPrefixToRemove = "Assets/ModelRenderer/Art/Gfx";
|
||||
|
||||
[MenuItem("Tools/Addressable/Get All Asset Name")]
|
||||
public static void GetAllAssetName()
|
||||
@@ -76,6 +76,12 @@ namespace BrewMonster
|
||||
UpdateAddressableAddressesPath("gfx", _gfxPathPrefixToRemove, ".gfx");
|
||||
}
|
||||
|
||||
[MenuItem("Tools/Addressable/Update Addressable Path For a61")]
|
||||
public static void UpdateAddressablePathFora61()
|
||||
{
|
||||
UpdateAddressableAddressesPath("a61", _modelPathPrefixToRemove, "");
|
||||
}
|
||||
|
||||
public static void UpdateAddressableAddressesPath(string groupName, string prefixToRemove, string subfix)
|
||||
{
|
||||
AddressableAssetSettings settings = AddressableAssetSettingsDefaultObject.Settings;
|
||||
|
||||
@@ -0,0 +1,132 @@
|
||||
using BrewMonster.Scripts;
|
||||
using Cysharp.Threading.Tasks;
|
||||
using UnityEngine;
|
||||
|
||||
#if UNITY_EDITOR
|
||||
using UnityEditor;
|
||||
#endif
|
||||
|
||||
public class AddressableObject : MonoBehaviour
|
||||
{
|
||||
public string assetPath;
|
||||
|
||||
private GameObject _instance;
|
||||
public bool _isLoading;
|
||||
public bool _isLoaded;
|
||||
private int _loadRequestId;
|
||||
|
||||
public bool IsLoaded => _isLoaded;
|
||||
public bool IsLoading => _isLoading;
|
||||
public Vector3 ObjectPosition;
|
||||
public Vector3 ObjectPositionOxz;
|
||||
|
||||
void Awake()
|
||||
{
|
||||
ObjectPosition = transform.position;
|
||||
ObjectPositionOxz = new Vector3(ObjectPosition.x, 0, ObjectPosition.z);
|
||||
}
|
||||
|
||||
public async UniTask LoadAsset()
|
||||
{
|
||||
if (string.IsNullOrEmpty(assetPath))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (_instance != null || _isLoading)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_isLoading = true;
|
||||
int requestId = ++_loadRequestId;
|
||||
var model = await AddressableManager.Instance.LoadPrefabAsync(assetPath);
|
||||
|
||||
// Object might have been destroyed while awaiting.
|
||||
if (this == null || gameObject == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// If we got unloaded while loading, release the cached handle to avoid keeping RAM.
|
||||
if (requestId != _loadRequestId)
|
||||
{
|
||||
_isLoading = false;
|
||||
AddressableManager.Instance.ReleaseAsset(assetPath);
|
||||
return;
|
||||
}
|
||||
|
||||
_isLoading = false;
|
||||
|
||||
if (model != null && _instance == null)
|
||||
{
|
||||
_instance = Instantiate(model);
|
||||
var modelTransform = _instance.transform;
|
||||
modelTransform.SetParent(transform);
|
||||
modelTransform.localPosition = Vector3.zero;
|
||||
modelTransform.localRotation = Quaternion.identity;
|
||||
modelTransform.localScale = Vector3.one;
|
||||
_instance.SetActive(true);
|
||||
_isLoaded = true;
|
||||
}
|
||||
}
|
||||
|
||||
public void UnloadAsset()
|
||||
{
|
||||
// make the loading request invalid.
|
||||
_loadRequestId++;
|
||||
_isLoading = false;
|
||||
_isLoaded = false;
|
||||
|
||||
if (_instance != null)
|
||||
{
|
||||
Destroy(_instance);
|
||||
_instance = null;
|
||||
}
|
||||
else if (transform.childCount > 0)
|
||||
{
|
||||
// Backward-compatible cleanup if older versions instantiated children without tracking.
|
||||
for (int i = transform.childCount - 1; i >= 0; i--)
|
||||
{
|
||||
Destroy(transform.GetChild(i).gameObject);
|
||||
}
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(assetPath))
|
||||
{
|
||||
return;
|
||||
}
|
||||
AddressableManager.Instance.ReleaseAsset(assetPath);
|
||||
}
|
||||
|
||||
#if UNITY_EDITOR
|
||||
public static string _modelPathPrefixToRemove = "Assets/ModelRenderer/Art/Models";
|
||||
[ContextMenu("Get Asset Path")]
|
||||
public void GetAssetPath()
|
||||
{
|
||||
var prefabObject = PrefabUtility.GetCorrespondingObjectFromSource(this.gameObject);
|
||||
if (prefabObject != null)
|
||||
{
|
||||
var path = AssetDatabase.GetAssetPath(prefabObject);
|
||||
//remove the prefix from the path
|
||||
path = path.Substring(_modelPathPrefixToRemove.Length + 1);
|
||||
//remove the .prefab suffix
|
||||
path = path.Substring(0, path.Length - ".prefab".Length);
|
||||
assetPath = path;
|
||||
|
||||
// now delete all the children of this object
|
||||
while (transform.childCount > 0)
|
||||
{
|
||||
DestroyImmediate(transform.GetChild(0).gameObject);
|
||||
}
|
||||
|
||||
//unpack completely the prefab
|
||||
PrefabUtility.UnpackPrefabInstance(this.gameObject, PrefabUnpackMode.Completely, InteractionMode.UserAction);
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogError("No prefab object found for this object");
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 08803e758aec64c6b9957fd870e24bb5
|
||||
@@ -0,0 +1,444 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using BrewMonster;
|
||||
using BrewMonster.Scripts;
|
||||
using Cysharp.Threading.Tasks;
|
||||
using UnityEngine;
|
||||
|
||||
public class LitModelHolder : MonoSingleton<LitModelHolder>
|
||||
{
|
||||
#region Fields
|
||||
[SerializeField] private AddressableObject[] addressableObjects;
|
||||
private CECHostPlayer _hostPlayer;
|
||||
|
||||
[Header("Distance Streaming")]
|
||||
[Tooltip("The distance from the host player to the object to be loaded immediately.")]
|
||||
[SerializeField] private float _loadImmediateDistance = 200f;
|
||||
[Tooltip("Objects need to go outside of this distance to be unloaded.")]
|
||||
[SerializeField] private float _unloadDistance = 400f;
|
||||
|
||||
[Header("Performance")]
|
||||
[SerializeField] private float _checkIntervalSeconds = 0.25f;
|
||||
|
||||
[Tooltip("How long a candidate object need to be in the immediate loading range to be loaded.")]
|
||||
[SerializeField] private float _candidateWaitTimeSeconds = 1f;
|
||||
|
||||
[Tooltip("The minimum distance the host player needs to move to update the streaming.")]
|
||||
[SerializeField] private float _minHostMoveToUpdate = 2.0f;
|
||||
#endregion
|
||||
|
||||
#region Private Fields
|
||||
// when an object enters the immediate loading range, we add it to this dictionary.
|
||||
// The key is the object, the value is the enter timestamp.
|
||||
private Dictionary<AddressableObject, float> _candidatesForLoading = new Dictionary<AddressableObject, float>();
|
||||
private HashSet<AddressableObject> _loadedObjects = new HashSet<AddressableObject>();
|
||||
private List<AddressableObject> _objectsToUnload = new List<AddressableObject>();
|
||||
|
||||
private Vector3 _lastHostPosOxz;
|
||||
private bool _hasLastHostPos = false;
|
||||
private Vector3 _currentHostPos;
|
||||
private Vector3 _currentHostPosOxz;
|
||||
private bool _hostPosReady = false;
|
||||
private AddressableObject _currentObjectToCheck; // the object that we're currently checking for loading/unloading.
|
||||
private bool _needToProcessLoadAndUnload = false;
|
||||
|
||||
private float _realTimeSinceStartUp;
|
||||
|
||||
private CancellationTokenSource _cts;
|
||||
#endregion
|
||||
|
||||
|
||||
#region Unity Lifecycle
|
||||
protected override async void Initialize()
|
||||
{
|
||||
_currentHostPos = Vector3.zero;
|
||||
_currentHostPosOxz = Vector3.zero;
|
||||
await StartStreamingProcess();
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
// run every frame.
|
||||
// We have to update the MainThread data here. Since other processes run on a different thread.
|
||||
_realTimeSinceStartUp = Time.realtimeSinceStartup;
|
||||
UpdateHostPlayerPosition();
|
||||
|
||||
// if load flag is set, process the load and unload objects.
|
||||
if (_needToProcessLoadAndUnload)
|
||||
{
|
||||
ProcessLoadAndUnloadObjects();
|
||||
_needToProcessLoadAndUnload = false;
|
||||
}
|
||||
}
|
||||
|
||||
private void OnDestroy()
|
||||
{
|
||||
if (_cts != null)
|
||||
{
|
||||
_cts.Cancel();
|
||||
_cts.Dispose();
|
||||
}
|
||||
|
||||
if (addressableObjects == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// go through candidate list and loaded list, unload all objects in those lists.
|
||||
foreach (var kvp in _candidatesForLoading)
|
||||
{
|
||||
kvp.Key.UnloadAsset();
|
||||
}
|
||||
foreach (var obj in _loadedObjects)
|
||||
{
|
||||
obj.UnloadAsset();
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
#region Private Functions
|
||||
private async UniTask StartStreamingProcess()
|
||||
{
|
||||
if (_cts != null)
|
||||
{
|
||||
_cts.Cancel();
|
||||
_cts.Dispose();
|
||||
}
|
||||
|
||||
_cts = new CancellationTokenSource();
|
||||
CancellationToken destroyToken = _cts.Token;
|
||||
|
||||
// Wait until Addressables are initialized.
|
||||
while (!AddressableManager.Instance.IsInitialized())
|
||||
{
|
||||
await Task.Delay(100, destroyToken);
|
||||
}
|
||||
|
||||
while (_hostPlayer == null)
|
||||
{
|
||||
_hostPlayer = GetHostPlayer();
|
||||
await Task.Delay(100, destroyToken);
|
||||
continue;
|
||||
}
|
||||
|
||||
while (!_hostPlayer.IsAllResReady())
|
||||
{
|
||||
await Task.Delay(100, destroyToken);
|
||||
continue;
|
||||
}
|
||||
|
||||
// run this once at the beginning of the game. So we can load all the objects that are close to the host player.
|
||||
await LoadObjectBaseOnDistance(destroyToken);
|
||||
|
||||
// Start distance-based streaming loop. This will be running continuously in the background.
|
||||
UniTask.RunOnThreadPool(async () =>
|
||||
{
|
||||
await StreamByDistanceLoop(destroyToken : destroyToken);
|
||||
}
|
||||
).Forget();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Immediately load the objects that are close to the host player. <br/>
|
||||
/// Run this once at the beginning of the game. So we can load all the objects that are close to the host player.
|
||||
/// </summary>
|
||||
/// <param name="destroyToken"></param>
|
||||
/// <returns></returns>
|
||||
private async UniTask LoadObjectBaseOnDistance(CancellationToken destroyToken)
|
||||
{
|
||||
if (_unloadDistance < _loadImmediateDistance)
|
||||
{
|
||||
_unloadDistance = _loadImmediateDistance;
|
||||
}
|
||||
|
||||
while (_hostPlayer == null)
|
||||
{
|
||||
_hostPlayer = GetHostPlayer();
|
||||
if (_hostPlayer != null) break; // we found the host player.
|
||||
await UniTask.Delay(10);
|
||||
continue;
|
||||
}
|
||||
|
||||
await Task.Delay(100, destroyToken); // wait for the host player to be initialized.
|
||||
|
||||
_currentHostPosOxz = _hostPlayer.GetPosVector3();
|
||||
_currentHostPosOxz.y = 0;
|
||||
LoadAllObjectsNearPosition(_currentHostPosOxz, destroyToken);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// This function will load all the objects that are close to the host player immediately. <br/> <br/>
|
||||
/// <b>Use this once at the beginning of the game. Or when player is revived/GOTO/Teleported.</b>
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
private void LoadAllObjectsNearPosition(Vector3 targetPosition, CancellationToken destroyToken)
|
||||
{
|
||||
if (addressableObjects == null || addressableObjects.Length == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (_unloadDistance < _loadImmediateDistance)
|
||||
{
|
||||
_unloadDistance = _loadImmediateDistance;
|
||||
}
|
||||
|
||||
float immediateSqr = _loadImmediateDistance * _loadImmediateDistance;
|
||||
float paddingSqr = _unloadDistance * _unloadDistance;
|
||||
|
||||
List<AddressableObject> objectsToLoad = new List<AddressableObject>();
|
||||
targetPosition.y = 0; // only consider Oxz plane
|
||||
// go through all the objects, check for the immediateSqr and load the objects that are in the range.
|
||||
TickStreaming(targetPosition, immediateSqr, paddingSqr, destroyToken);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// This function will be running continuously in the background.
|
||||
/// </summary>
|
||||
/// <param name="destroyToken"></param>
|
||||
/// <returns></returns>
|
||||
private async UniTask StreamByDistanceLoop(CancellationToken destroyToken)
|
||||
{
|
||||
if (_unloadDistance < _loadImmediateDistance)
|
||||
{
|
||||
_unloadDistance = _loadImmediateDistance;
|
||||
}
|
||||
|
||||
float immediateSqr = _loadImmediateDistance * _loadImmediateDistance;
|
||||
float paddingSqr = _unloadDistance * _unloadDistance;
|
||||
|
||||
int intervalMs = Mathf.Max(10, Mathf.RoundToInt(_checkIntervalSeconds * 1000f));
|
||||
float minMoveSqr = _minHostMoveToUpdate * _minHostMoveToUpdate;
|
||||
|
||||
while (!destroyToken.IsCancellationRequested)
|
||||
{
|
||||
if (!_hostPosReady)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (_hasLastHostPos)
|
||||
{
|
||||
if ((_currentHostPosOxz - _lastHostPosOxz).sqrMagnitude < minMoveSqr)
|
||||
{
|
||||
await Task.Delay(intervalMs, destroyToken);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
_hasLastHostPos = true;
|
||||
_lastHostPosOxz = _currentHostPosOxz;
|
||||
|
||||
TickStreaming(_currentHostPosOxz, immediateSqr, paddingSqr, destroyToken);
|
||||
|
||||
await Task.Delay(intervalMs, destroyToken);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// The main loop of the distance streaming.
|
||||
/// Go through all the objects and check if they are in the immediate loading range or padding range.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
private void TickStreaming(Vector3 hostPos, float immediateSqr, float paddingSqr, CancellationToken destroyToken)
|
||||
{
|
||||
if (addressableObjects == null || addressableObjects.Length == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
int count = addressableObjects.Length;
|
||||
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
_currentObjectToCheck = addressableObjects[i];
|
||||
if (_currentObjectToCheck == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
float distSqr = (_currentObjectToCheck.ObjectPositionOxz - hostPos).sqrMagnitude;
|
||||
|
||||
if (distSqr <= immediateSqr)
|
||||
{
|
||||
if (_currentObjectToCheck.IsLoaded || _currentObjectToCheck.IsLoading)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (!_candidatesForLoading.ContainsKey(_currentObjectToCheck))
|
||||
{
|
||||
_candidatesForLoading[_currentObjectToCheck] = _realTimeSinceStartUp;
|
||||
}
|
||||
}
|
||||
else if (distSqr > paddingSqr)
|
||||
{
|
||||
if (_currentObjectToCheck.IsLoaded || _currentObjectToCheck.IsLoading)
|
||||
{
|
||||
if (!_objectsToUnload.Contains(_currentObjectToCheck))
|
||||
{
|
||||
_objectsToUnload.Add(_currentObjectToCheck);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
_needToProcessLoadAndUnload = true;
|
||||
}
|
||||
|
||||
private void ProcessLoadAndUnloadObjects()
|
||||
{
|
||||
// load the objects that are in the loading range long enough. (_candidateWaitTimeSeconds)
|
||||
foreach (var kvp in _candidatesForLoading)
|
||||
{
|
||||
kvp.Key.LoadAsset().Forget();
|
||||
_loadedObjects.Add(kvp.Key);
|
||||
}
|
||||
// remove the loaded objects from the candidates for loading list.
|
||||
foreach (var obj in _loadedObjects)
|
||||
{
|
||||
_candidatesForLoading.Remove(obj);
|
||||
}
|
||||
|
||||
// unload the objects that are too far away.
|
||||
for (int i = 0; i < _objectsToUnload.Count; i++)
|
||||
{
|
||||
_objectsToUnload[i].UnloadAsset();
|
||||
// remove the object from the candidates for loading and loaded objects lists.
|
||||
_loadedObjects.Remove(_objectsToUnload[i]);
|
||||
_candidatesForLoading.Remove(_objectsToUnload[i]);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the Host Player instance.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
private CECHostPlayer GetHostPlayer()
|
||||
{
|
||||
return CECGameRun.Instance.GetHostPlayer();
|
||||
}
|
||||
|
||||
private void UpdateHostPlayerPosition()
|
||||
{
|
||||
_hostPlayer = GetHostPlayer();
|
||||
if (_hostPlayer != null)
|
||||
{
|
||||
_currentHostPosOxz = _hostPlayer.GetPosVector3(false);
|
||||
_currentHostPosOxz.y = 0;
|
||||
_hostPosReady = true;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
#region Public Functions
|
||||
public async UniTask LoadAllObjectsNearTargetPosition(Vector3 targetPosition = default, bool useHostPlayerPosition = false)
|
||||
{
|
||||
if (!useHostPlayerPosition)
|
||||
{
|
||||
_currentHostPosOxz = targetPosition;
|
||||
_currentHostPosOxz.y = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
while (_hostPlayer == null)
|
||||
{
|
||||
UpdateHostPlayerPosition();
|
||||
await Task.Delay(10);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
UniTask.RunOnThreadPool(() => {LoadAllObjectsNearPosition(_currentHostPosOxz, _cts.Token);}).Forget();
|
||||
}
|
||||
#endregion
|
||||
|
||||
// Keep this part of the code for the initial setup of the addressable objects.
|
||||
// We have to run this once on every scene.
|
||||
#if UNITY_EDITOR
|
||||
[Space(10)]
|
||||
[Header("FOR EDITOR SETUP ONLY")]
|
||||
[SerializeField] private GameObject[] originalObjects;
|
||||
|
||||
[ContextMenu("Setup Addressable Objects")]
|
||||
public void SetupAddressableObjects()
|
||||
{
|
||||
foreach (var originalObject in originalObjects)
|
||||
{
|
||||
var addressableObject = originalObject.GetComponent<AddressableObject>();
|
||||
if (addressableObject == null)
|
||||
{
|
||||
addressableObject = originalObject.AddComponent<AddressableObject>();
|
||||
}
|
||||
|
||||
if (addressableObject != null)
|
||||
{
|
||||
addressableObject.GetAssetPath();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[ContextMenu("Validate Addressable Objects")]
|
||||
private void ValidateAddressableObjects()
|
||||
{
|
||||
if (addressableObjects == null || addressableObjects.Length == 0)
|
||||
{
|
||||
Debug.LogWarning("[LitModelHolder] addressableObjects is empty.");
|
||||
return;
|
||||
}
|
||||
|
||||
int nullCount = 0;
|
||||
int emptyPathCount = 0;
|
||||
int multiChildCount = 0;
|
||||
|
||||
var pathCounts = new System.Collections.Generic.Dictionary<string, int>();
|
||||
|
||||
for (int i = 0; i < addressableObjects.Length; i++)
|
||||
{
|
||||
AddressableObject obj = addressableObjects[i];
|
||||
if (obj == null)
|
||||
{
|
||||
nullCount++;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(obj.assetPath))
|
||||
{
|
||||
emptyPathCount++;
|
||||
}
|
||||
else
|
||||
{
|
||||
pathCounts.TryGetValue(obj.assetPath, out int c);
|
||||
pathCounts[obj.assetPath] = c + 1;
|
||||
}
|
||||
|
||||
// If this is > 1 it often indicates duplicate instantiation under the anchor.
|
||||
if (obj.transform.childCount > 1)
|
||||
{
|
||||
multiChildCount++;
|
||||
}
|
||||
}
|
||||
|
||||
int duplicatePathKeys = 0;
|
||||
foreach (var kvp in pathCounts)
|
||||
{
|
||||
if (kvp.Value > 1)
|
||||
{
|
||||
duplicatePathKeys++;
|
||||
}
|
||||
}
|
||||
|
||||
Debug.Log($"[LitModelHolder] ValidateAddressableObjects:\n" +
|
||||
$"- total={addressableObjects.Length}\n" +
|
||||
$"- nullEntries={nullCount}\n" +
|
||||
$"- emptyAssetPath={emptyPathCount}\n" +
|
||||
$"- duplicateAssetPathKeys={duplicatePathKeys}\n" +
|
||||
$"- anchorsWithMoreThanOneChild={multiChildCount}");
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 52b568195aaf24c5897ad5983d096f23
|
||||
@@ -1,50 +1,5 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &695809075354249832
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 2466055582606182659}
|
||||
- component: {fileID: 6694799068998335831}
|
||||
m_Layer: 0
|
||||
m_Name: Boostrap (1)
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &2466055582606182659
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 695809075354249832}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 8647913387955223815}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &6694799068998335831
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 695809075354249832}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 2781611f0f83bf54290a9ec600543440, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
_nextSceneName: LoginScene
|
||||
--- !u!1 &4031863963514808284
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -76,7 +31,6 @@ Transform:
|
||||
m_Children:
|
||||
- {fileID: 5828095428458008759}
|
||||
- {fileID: 3304007787827206689}
|
||||
- {fileID: 2466055582606182659}
|
||||
- {fileID: 1374891186888298875}
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
@@ -92,7 +46,7 @@ GameObject:
|
||||
- component: {fileID: 7143671611729110091}
|
||||
- component: {fileID: 1552922004895094615}
|
||||
m_Layer: 0
|
||||
m_Name: GameSession (1)
|
||||
m_Name: GameSession
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
@@ -149,7 +103,7 @@ GameObject:
|
||||
- component: {fileID: 5828095428458008759}
|
||||
- component: {fileID: 7028019933536463136}
|
||||
m_Layer: 0
|
||||
m_Name: AutoIniializer (1)
|
||||
m_Name: AutoIniializer
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
@@ -192,11 +146,11 @@ PrefabInstance:
|
||||
m_Modifications:
|
||||
- target: {fileID: 132536, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
||||
propertyPath: m_Name
|
||||
value: IngameDebugConsole (1)
|
||||
value: IngameDebugConsole
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 11414302, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
||||
propertyPath: m_Size
|
||||
value: 1
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 11414302, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
||||
propertyPath: m_Value
|
||||
|
||||
@@ -1556,7 +1556,7 @@ RectTransform:
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
m_AnchoredPosition: {x: 0.0009808608, y: -0.00012207031}
|
||||
m_SizeDelta: {x: 0.024810791, y: -496.19458}
|
||||
m_SizeDelta: {x: 0, y: 0}
|
||||
m_Pivot: {x: 0, y: 1}
|
||||
--- !u!114 &4021128748820168485
|
||||
MonoBehaviour:
|
||||
@@ -3294,9 +3294,9 @@ RectTransform:
|
||||
- {fileID: 5320464328943649663}
|
||||
m_Father: {fileID: 5444603765313937912}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 237.0925, y: -93.38}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 474.185, y: 186.76}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &946827543569852510
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:8d097871fd2de79f64a6527f97d2043554bfa5ead80936e385e2353b5b8375b4
|
||||
size 200515435
|
||||
oid sha256:8afbdb17249969e64a11fbda64cda8d83eebcc9fa65a12a47dfa60670304a597
|
||||
size 196460134
|
||||
|
||||
@@ -75,7 +75,11 @@ public partial class CECGameRun
|
||||
}
|
||||
public void Init()
|
||||
{
|
||||
#if !UNITY_EDITOR
|
||||
Debug.unityLogger.logEnabled = false;
|
||||
QualitySettings.vSyncCount = 0;
|
||||
Application.targetFrameRate = 60;
|
||||
#endif
|
||||
instance = this;
|
||||
// _gameRunConfig = Resources.Load<GameRunConfig>("GameRunConfig");
|
||||
// _playerPrefab = _gameRunConfig.PlayerPrefab;
|
||||
|
||||
@@ -8,6 +8,7 @@ using System.Runtime.InteropServices;
|
||||
using BrewMonster.Network;
|
||||
using BrewMonster.UI;
|
||||
using Cysharp.Threading.Tasks;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace BrewMonster
|
||||
{
|
||||
@@ -128,17 +129,13 @@ namespace BrewMonster
|
||||
TaskClient.OnServerNotify(pInterface, data, (uint)size);
|
||||
}
|
||||
|
||||
private void TickTask()
|
||||
private async UniTask TickTask()
|
||||
{
|
||||
// Update task
|
||||
// C ++ code uses dwDeltaTime from Tick function parameter
|
||||
if (m_pTaskInterface != null &&
|
||||
m_TaskCounter.IncCounter(Time.deltaTime * 1000f))
|
||||
while (true)
|
||||
{
|
||||
m_TaskCounter.Reset();
|
||||
TaskClient.OnTaskCheckStatus(m_pTaskInterface);
|
||||
// TODO: Update task UI if needed
|
||||
// m_pTaskInterface.UpdateEmotionDlg();
|
||||
await Task.Delay(1000);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+152
-60
@@ -1,5 +1,6 @@
|
||||
using BrewMonster;
|
||||
using BrewMonster.Assets.PerfectWorld.Scripts.Players;
|
||||
using BrewMonster.Assets.PerfectWorld.Scripts.UI;
|
||||
using BrewMonster.Managers;
|
||||
using BrewMonster.Network;
|
||||
using BrewMonster.PerfectWorld.Scripts.Vfx;
|
||||
@@ -13,12 +14,14 @@ using CSNetwork;
|
||||
using CSNetwork.GPDataType;
|
||||
using CSNetwork.Protocols.RPCData;
|
||||
using CSNetwork.S2CCommand;
|
||||
using Cysharp.Threading.Tasks;
|
||||
using ModelRenderer.Scripts.GameData;
|
||||
using PerfectWorld.Scripts;
|
||||
using PerfectWorld.Scripts.Managers;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
using UnityEngine;
|
||||
@@ -27,9 +30,8 @@ using static BrewMonster.Scripts.Managers.EC_Inventory;
|
||||
using static CECPlayerWrapper;
|
||||
using cmd_select_target = CSNetwork.GPDataType.cmd_select_target;
|
||||
using Host_work_ID = BrewMonster.Scripts.CECHPWork.Host_work_ID;
|
||||
using Trace_reason = BrewMonster.CECHPWorkTrace.Trace_reason;
|
||||
using ObjectCoords = System.Collections.Generic.List<CSNetwork.GPDataType.OBJECT_COORD>;
|
||||
using System.Linq;
|
||||
using Trace_reason = BrewMonster.CECHPWorkTrace.Trace_reason;
|
||||
|
||||
namespace BrewMonster
|
||||
{
|
||||
@@ -179,6 +181,7 @@ namespace BrewMonster
|
||||
|
||||
int[] targetsCastSkill;
|
||||
|
||||
|
||||
public bool IsChangingFace()
|
||||
{
|
||||
return m_bChangingFace;
|
||||
@@ -334,6 +337,9 @@ namespace BrewMonster
|
||||
m_GatherCnt.Reset(true);
|
||||
m_PetOptCnt.SetPeriod(1000);
|
||||
m_PetOptCnt.Reset(true);
|
||||
|
||||
// run a process on background to keep track of task status.
|
||||
UniTask.RunOnThreadPool(TickTask, false, this.GetCancellationTokenOnDestroy()).Forget();
|
||||
}
|
||||
|
||||
public bool LoadResources()
|
||||
@@ -435,8 +441,6 @@ namespace BrewMonster
|
||||
EstimateMoveEnv(GetPos());
|
||||
OnKeyDown();
|
||||
|
||||
// track status of Task
|
||||
TickTask();
|
||||
// Update timers
|
||||
UpdateTimers(Time.deltaTime);
|
||||
|
||||
@@ -560,71 +564,71 @@ namespace BrewMonster
|
||||
//Debug.LogError("HoangDev : ProcessMessageProcessMessageProcessMessage " + msg);
|
||||
switch (msg)
|
||||
{
|
||||
case int value when value == EC_MsgDef.MSG_HST_CORRECTPOS: OnMsgHstCorrectPos(Msg); break;
|
||||
case int value when value == EC_MsgDef.MSG_HST_GOTO: OnMsgHstGoto(Msg); break;
|
||||
case int value when value == EC_MsgDef.MSG_HST_IVTRINFO:
|
||||
case EC_MsgDef.MSG_HST_CORRECTPOS: OnMsgHstCorrectPos(Msg); break;
|
||||
case EC_MsgDef.MSG_HST_GOTO: OnMsgHstGoto(Msg); break;
|
||||
case EC_MsgDef.MSG_HST_IVTRINFO:
|
||||
{
|
||||
OnMsgHstIvtrInfo(Msg);
|
||||
break;
|
||||
}
|
||||
case int value when value == EC_MsgDef.MSG_HST_OWNITEMINFO:
|
||||
case EC_MsgDef.MSG_HST_OWNITEMINFO:
|
||||
{
|
||||
OnMsgHstOwnItemInfo(Msg);
|
||||
break;
|
||||
}
|
||||
case int value when value == EC_MsgDef.MSG_HST_TASKDATA:
|
||||
case EC_MsgDef.MSG_HST_TASKDATA:
|
||||
{
|
||||
OnMsgHstTaskData(Msg).Forget();
|
||||
//Debug.LogError("[Dat]- OnMsgHstTaskData");
|
||||
break;
|
||||
}
|
||||
case int value when value == EC_MsgDef.MSG_HST_ITEMOPERATION:
|
||||
case EC_MsgDef.MSG_HST_ITEMOPERATION:
|
||||
OnMsgHstItemOperation(Msg);
|
||||
break;
|
||||
case int value when value == EC_MsgDef.MSG_HST_PICKUPITEM:
|
||||
case EC_MsgDef.MSG_HST_PICKUPITEM:
|
||||
OnMsgHstPickupItem(Msg);
|
||||
break;
|
||||
case int value when value == EC_MsgDef.MSG_HST_PRODUCEITEM:
|
||||
case EC_MsgDef.MSG_HST_PRODUCEITEM:
|
||||
OnMsgHstProduceItem(Msg);
|
||||
break;
|
||||
case int value when value == EC_MsgDef.MSG_HST_SELTARGET:
|
||||
case EC_MsgDef.MSG_HST_SELTARGET:
|
||||
OnMsgHstSelTarget(Msg); break;
|
||||
case int value when value == EC_MsgDef.MSG_HST_USEITEM:
|
||||
case EC_MsgDef.MSG_HST_USEITEM:
|
||||
OnMsgHstUseItem(Msg);
|
||||
break;
|
||||
case int value when value == EC_MsgDef.MSG_HST_ATKRESULT: OnMsgHstAttackResult(Msg); break;
|
||||
case int value when value == EC_MsgDef.MSG_HST_ATTACKED: OnMsgHstAttacked(Msg); break;
|
||||
case int value when value == EC_MsgDef.MSG_HST_HURTRESULT: OnMsgHstHurtResult(Msg); break;
|
||||
case int value when value == EC_MsgDef.MSG_HST_INFO00: OnMsgHstInfo00(Msg); break;
|
||||
case int value when value == EC_MsgDef.MSG_HST_NPCGREETING: OnMsgHstNPCGreeting(Msg); break;
|
||||
case int value when value == EC_MsgDef.MSG_HST_WAYPOINT: OnMsgHstWayPoint(Msg); break;
|
||||
case int value when value == EC_MsgDef.MSG_HST_SKILLDATA: OnMsgHstSkillData(Msg); break;
|
||||
case int value when value == EC_MsgDef.MSG_HST_DIED: OnMsgHstDied(Msg); break;
|
||||
case int value when value == EC_MsgDef.MSG_HST_STARTATTACK: OnMsgHstStartAttack(Msg); break;
|
||||
case int value when value == EC_MsgDef.MSG_HST_STOPATTACK: OnMsgHstStopAttack(Msg); break;
|
||||
case int value when value == EC_MsgDef.MSG_HST_SKILLRESULT: OnMsgHstSkillResult(Msg); break;
|
||||
case int value when value == EC_MsgDef.MSG_PM_CASTSKILL: OnMsgPlayerCastSkill(Msg); break;
|
||||
case int value when value == EC_MsgDef.MSG_PM_ENCHANTRESULT: OnMsgEnchantResult(Msg); break;
|
||||
case EC_MsgDef.MSG_HST_ATKRESULT: OnMsgHstAttackResult(Msg); break;
|
||||
case EC_MsgDef.MSG_HST_ATTACKED: OnMsgHstAttacked(Msg); break;
|
||||
case EC_MsgDef.MSG_HST_HURTRESULT: OnMsgHstHurtResult(Msg); break;
|
||||
case EC_MsgDef.MSG_HST_INFO00: OnMsgHstInfo00(Msg); break;
|
||||
case EC_MsgDef.MSG_HST_NPCGREETING: OnMsgHstNPCGreeting(Msg); break;
|
||||
case EC_MsgDef.MSG_HST_WAYPOINT: OnMsgHstWayPoint(Msg); break;
|
||||
case EC_MsgDef.MSG_HST_SKILLDATA: OnMsgHstSkillData(Msg); break;
|
||||
case EC_MsgDef.MSG_HST_DIED: OnMsgHstDied(Msg); break;
|
||||
case EC_MsgDef.MSG_HST_STARTATTACK: OnMsgHstStartAttack(Msg); break;
|
||||
case EC_MsgDef.MSG_HST_STOPATTACK: OnMsgHstStopAttack(Msg); break;
|
||||
case EC_MsgDef.MSG_HST_SKILLRESULT: OnMsgHstSkillResult(Msg); break;
|
||||
case EC_MsgDef.MSG_PM_CASTSKILL: OnMsgPlayerCastSkill(Msg); break;
|
||||
case EC_MsgDef.MSG_PM_ENCHANTRESULT: OnMsgEnchantResult(Msg); break;
|
||||
|
||||
case int value when value == EC_MsgDef.MSG_HST_OWNEXTPROP: OnMsgHstExtProp(Msg); break;
|
||||
case int value when value == EC_MsgDef.MSG_PM_PLAYERDOEMOTE: OnMsgPlayerDoEmote(Msg); break;
|
||||
case int value when value == EC_MsgDef.MSG_HST_TARGETISFAR: OnMsgHstTargetIsFar(Msg); break;
|
||||
case int value when value == EC_MsgDef.MSG_PM_PLAYERGATHER: OnMsgPlayerGather(Msg); break;
|
||||
case int value when value == EC_MsgDef.MSG_HST_COOLTIMEDATA: OnMsgHstCoolTimeData(Msg); break;
|
||||
case int value when value == EC_MsgDef.MSG_HST_SETCOOLTIME: OnMsgHstSetCoolTime(Msg); break;
|
||||
case int value when value == EC_MsgDef.MSG_HST_PRESSCANCEL: OnMsgHstPressCancel(Msg); break;
|
||||
case int value when value == EC_MsgDef.MSG_HST_LEARNSKILL: OnMsgHstLearnSkill(Msg); break;
|
||||
case int value when value == EC_MsgDef.MSG_HST_COMBO_SKILL_PREPARE: OnMsgComboSkillPrepare(Msg); break;
|
||||
case int value when value == EC_MsgDef.MSG_PM_PLAYERFLY: OnMsgPlayerFly(Msg); break;
|
||||
case int value when value == EC_MsgDef.MSG_HST_PETOPT: OnMsgHstPetOpt(Msg); break;
|
||||
case int value when value == EC_MsgDef.MSG_HST_SETPLAYERLIMIT: OnMsgHstSetPlayerLimit(Msg); break;
|
||||
case int value when value == EC_MsgDef.MSG_PM_PLAYERMOUNT: OnMsgPlayerMount(Msg); break;
|
||||
case int value when value == EC_MsgDef.MSG_HST_EMBEDITEM: OnMsgHstEmbedItem(Msg); break;
|
||||
case int value when value == EC_MsgDef.MSG_HST_JOINTEAM: OnMsgHstJoinTeam(Msg); break;
|
||||
case int value when value == EC_MsgDef.MSG_HST_LEAVETEAM: OnMsgHstLeaveTeam(Msg); break;
|
||||
case int value when value == EC_MsgDef.MSG_HST_NEWTEAMMEM: OnMsgHstNewTeamMem(Msg); break;
|
||||
case int value when value == EC_MsgDef.MSG_HST_TEAMMEMBERDATA: OnMsgHstTeamMemberData(Msg); break;
|
||||
case int value when value == EC_MsgDef.MSG_HST_CONTINUECOMBOSKILL: OnMsgContinueComboSkill(Msg); break;
|
||||
case EC_MsgDef.MSG_HST_OWNEXTPROP: OnMsgHstExtProp(Msg); break;
|
||||
case EC_MsgDef.MSG_PM_PLAYERDOEMOTE: OnMsgPlayerDoEmote(Msg); break;
|
||||
case EC_MsgDef.MSG_HST_TARGETISFAR: OnMsgHstTargetIsFar(Msg); break;
|
||||
case EC_MsgDef.MSG_PM_PLAYERGATHER: OnMsgPlayerGather(Msg); break;
|
||||
case EC_MsgDef.MSG_HST_COOLTIMEDATA: OnMsgHstCoolTimeData(Msg); break;
|
||||
case EC_MsgDef.MSG_HST_SETCOOLTIME: OnMsgHstSetCoolTime(Msg); break;
|
||||
case EC_MsgDef.MSG_HST_PRESSCANCEL: OnMsgHstPressCancel(Msg); break;
|
||||
case EC_MsgDef.MSG_HST_LEARNSKILL: OnMsgHstLearnSkill(Msg); break;
|
||||
case EC_MsgDef.MSG_HST_COMBO_SKILL_PREPARE: OnMsgComboSkillPrepare(Msg); break;
|
||||
case EC_MsgDef.MSG_PM_PLAYERFLY: OnMsgPlayerFly(Msg); break;
|
||||
case EC_MsgDef.MSG_HST_PETOPT: OnMsgHstPetOpt(Msg); break;
|
||||
case EC_MsgDef.MSG_HST_SETPLAYERLIMIT: OnMsgHstSetPlayerLimit(Msg); break;
|
||||
case EC_MsgDef.MSG_PM_PLAYERMOUNT: OnMsgPlayerMount(Msg); break;
|
||||
case EC_MsgDef.MSG_HST_EMBEDITEM: OnMsgHstEmbedItem(Msg); break;
|
||||
case EC_MsgDef.MSG_HST_JOINTEAM: OnMsgHstJoinTeam(Msg); break;
|
||||
case EC_MsgDef.MSG_HST_LEAVETEAM: OnMsgHstLeaveTeam(Msg); break;
|
||||
case EC_MsgDef.MSG_HST_NEWTEAMMEM: OnMsgHstNewTeamMem(Msg); break;
|
||||
case EC_MsgDef.MSG_HST_TEAMMEMBERDATA: OnMsgHstTeamMemberData(Msg); break;
|
||||
case EC_MsgDef.MSG_HST_CONTINUECOMBOSKILL: OnMsgContinueComboSkill(Msg); break;
|
||||
}
|
||||
|
||||
/*if (bActionStartSkill)
|
||||
@@ -1040,7 +1044,7 @@ namespace BrewMonster
|
||||
|
||||
switch (Convert.ToInt32(Msg.dwParam2))
|
||||
{
|
||||
case int value2 when value2 == CommandID.OBJECT_CAST_SKILL:
|
||||
case CommandID.OBJECT_CAST_SKILL:
|
||||
{
|
||||
cmd_object_cast_skill pCmd =
|
||||
GPDataTypeHelper.FromBytes<cmd_object_cast_skill>((byte[])Msg.dwParam1);
|
||||
@@ -1105,7 +1109,7 @@ namespace BrewMonster
|
||||
}
|
||||
break;
|
||||
}
|
||||
case int value2 when value2 == CommandID.SKILL_PERFORM:
|
||||
case CommandID.SKILL_PERFORM:
|
||||
{
|
||||
// Skill perform
|
||||
// 技能执行
|
||||
@@ -1125,7 +1129,7 @@ namespace BrewMonster
|
||||
|
||||
break;
|
||||
}
|
||||
case int value2 when value2 == CommandID.HOST_STOP_SKILL:
|
||||
case CommandID.HOST_STOP_SKILL:
|
||||
{
|
||||
m_pPrepSkill = null;
|
||||
|
||||
@@ -1162,7 +1166,7 @@ namespace BrewMonster
|
||||
m_idCurSkillTarget = 0;
|
||||
break;
|
||||
}
|
||||
case int value2 when value2 == CommandID.SELF_SKILL_INTERRUPTED:
|
||||
case CommandID.SELF_SKILL_INTERRUPTED:
|
||||
{
|
||||
// Skill interrupted
|
||||
// 技能被打断
|
||||
@@ -1209,7 +1213,7 @@ namespace BrewMonster
|
||||
CECAutoPolicy.GetInstance().SendEvent_SkillInterrupt(skill_id);
|
||||
break;
|
||||
}
|
||||
case int value2 when value2 == CommandID.OBJECT_CAST_INSTANT_SKILL:
|
||||
case CommandID.OBJECT_CAST_INSTANT_SKILL:
|
||||
{
|
||||
// Cast instant skill
|
||||
// 施放即时技能
|
||||
@@ -1232,7 +1236,7 @@ namespace BrewMonster
|
||||
bActionStartSkill = true;
|
||||
break;
|
||||
}
|
||||
case int value2 when value2 == CommandID.OBJECT_CAST_POS_SKILL:
|
||||
case CommandID.OBJECT_CAST_POS_SKILL:
|
||||
{
|
||||
// Cast position skill (target position instead of target object)
|
||||
// 施放位置技能(目标位置而不是目标对象)
|
||||
@@ -1357,7 +1361,7 @@ namespace BrewMonster
|
||||
bActionStartSkill = true;
|
||||
break;
|
||||
}
|
||||
case int value2 when value2 == CommandID.PLAYER_CAST_RUNE_SKILL:
|
||||
case CommandID.PLAYER_CAST_RUNE_SKILL:
|
||||
{
|
||||
// Cast rune skill (item skill)
|
||||
// 施放符文技能(物品技能)
|
||||
@@ -1420,7 +1424,7 @@ namespace BrewMonster
|
||||
Debug.Log($"Cast rune skill({m_pCurSkill.GetSkillID()})");
|
||||
break;
|
||||
}
|
||||
case int value2 when value2 == CommandID.PLAYER_CAST_RUNE_INSTANT_SKILL:
|
||||
case CommandID.PLAYER_CAST_RUNE_INSTANT_SKILL:
|
||||
{
|
||||
// Cast instant rune skill
|
||||
// 施放即时符文技能
|
||||
@@ -1448,7 +1452,7 @@ namespace BrewMonster
|
||||
bActionStartSkill = true;
|
||||
break;
|
||||
}
|
||||
case int value2 when value2 == CommandID.ERROR_MESSAGE:
|
||||
case CommandID.ERROR_MESSAGE:
|
||||
bDoOtherThing = true;
|
||||
break;
|
||||
|
||||
@@ -2745,10 +2749,97 @@ namespace BrewMonster
|
||||
{
|
||||
case CommandID.OWN_ITEM_INFO:
|
||||
{
|
||||
Debug.Log("[Inventory] OWN_ITEM_INFO received");
|
||||
//Debug.Log("[Inventory] OWN_ITEM_INFO received");
|
||||
//var data = Msg.dwParam1 as byte[];
|
||||
//int hostId = Convert.ToInt32(Msg.dwParam3);
|
||||
//LogInventoryPacket("OWN_ITEM_INFO", data, hostId);
|
||||
|
||||
//Handmade
|
||||
var data = Msg.dwParam1 as byte[];
|
||||
int hostId = Convert.ToInt32(Msg.dwParam3);
|
||||
LogInventoryPacket("OWN_ITEM_INFO", data, hostId);
|
||||
if (data == null || data.Length == 0)
|
||||
return;
|
||||
|
||||
byte byPackage = data[0];
|
||||
byte bySlot = data[1];
|
||||
int type = BitConverter.ToInt32(data, 2);
|
||||
int expire_date = BitConverter.ToInt32(data, 6);
|
||||
int state = BitConverter.ToInt32(data, 10);
|
||||
uint count = BitConverter.ToUInt32(data, 14);
|
||||
ushort crc = BitConverter.ToUInt16(data, 18);
|
||||
ushort content_length = BitConverter.ToUInt16(data, 20);
|
||||
|
||||
byte[] content = null;
|
||||
if (content_length > 0 && 22 + content_length <= data.Length)
|
||||
{
|
||||
content = new byte[content_length];
|
||||
Buffer.BlockCopy(data, 22, content, 0, content_length);
|
||||
|
||||
string hexDebug = BitConverter.ToString(content);
|
||||
//Debug.Log($"[OWN_ITEM_INFO] Full Content Hex ({content_length} bytes): {hexDebug}");
|
||||
}
|
||||
|
||||
//Debug.Log($"[OWN_ITEM_INFO] Parsed: package={byPackage}, slot={bySlot}, tid={type}, count={count}, content_len={content_length}");
|
||||
|
||||
EC_Inventory pInventory = GetInventory(byPackage);
|
||||
EC_IvtrItem newItem = EC_IvtrItem.CreateItem(type, expire_date, (int)count);
|
||||
|
||||
if (newItem != null)
|
||||
{
|
||||
newItem.SetProcType(state);
|
||||
|
||||
newItem.GetDetailDataFromLocal();
|
||||
if (content != null && content.Length > 0)
|
||||
{
|
||||
newItem.SetItemInfo(content, content_length);
|
||||
}
|
||||
|
||||
pInventory.SetItem(bySlot, newItem);
|
||||
|
||||
//Debug.Log($"[OWN_ITEM_INFO] Fixed Update: Pack {byPackage} Slot {bySlot} - Type {type}");
|
||||
}
|
||||
|
||||
if (byPackage == InventoryConst.IVTRTYPE_EQUIPPACK)
|
||||
{
|
||||
UpdateEquipSkins();
|
||||
}
|
||||
else if (byPackage == InventoryConst.IVTRTYPE_PACK)
|
||||
{
|
||||
if (newItem.IsEquipment())
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
}
|
||||
var ui = GameObject.FindFirstObjectByType<EC_InventoryUI>();
|
||||
|
||||
if (ui != null)
|
||||
{
|
||||
ui.RefreshAll();
|
||||
//Debug.Log($"[OWN_ITEM_INFO] Refreshed inventory UI after updating item at package={byPackage}, slot={bySlot}");
|
||||
}
|
||||
break;
|
||||
|
||||
}
|
||||
case CommandID.EMPTY_ITEM_SLOT:
|
||||
{
|
||||
var data = Msg.dwParam1 as byte[];
|
||||
|
||||
cmd_empty_item_slot pCmd = GPDataTypeHelper.FromBytes<cmd_empty_item_slot>(data);
|
||||
EC_Inventory pInventory = GetPack(pCmd.byPackage);
|
||||
if (pInventory == null)
|
||||
return;
|
||||
|
||||
EC_IvtrItem pItem = pInventory.GetItem(pCmd.bySlot);
|
||||
if (pItem != null)
|
||||
{
|
||||
//UpdateRemovedItemSC(pItem->GetTemplateID(), pCmd->byPackage, pCmd->bySlot);
|
||||
}
|
||||
pInventory.SetItem(pCmd.bySlot, null);
|
||||
|
||||
var ui = GameObject.FindFirstObjectByType<EC_InventoryUI>();
|
||||
if (ui != null)
|
||||
{
|
||||
ui.RefreshAll();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -2941,7 +3032,7 @@ namespace BrewMonster
|
||||
// 调用 Goto 方法来正确处理传送
|
||||
if (!Goto(idInst, vPos, iLine))
|
||||
{
|
||||
Debug.LogError($"OnMsgHstGoto: Failed to teleport to instance {idInst}");
|
||||
BMLogger.LogError($"OnMsgHstGoto: Failed to teleport to instance {idInst}");
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -2997,6 +3088,7 @@ namespace BrewMonster
|
||||
// 如果可用则更新相机
|
||||
// UpdateFollowCamera(false, 10); // Uncomment if UpdateFollowCamera method exists
|
||||
|
||||
LitModelHolder.Instance.LoadAllObjectsNearTargetPosition(vPos).Forget();
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -7527,7 +7619,7 @@ namespace BrewMonster
|
||||
}
|
||||
return iReason == 0 ? true : false;
|
||||
}
|
||||
private void OnMsgHstEmbedItem(ECMSG Msg)
|
||||
public void OnMsgHstEmbedItem(ECMSG Msg)
|
||||
{
|
||||
cmd_embed_item pCmd = GPDataTypeHelper.FromBytes<cmd_embed_item>((byte[])Msg.dwParam1);
|
||||
EC_IvtrItem pEquip = m_pPack.GetItem(pCmd.equip_idx);
|
||||
|
||||
@@ -8,10 +8,11 @@ using BrewMonster.Scripts.Managers;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
using UnityEngine.UIElements;
|
||||
using TMPro;
|
||||
|
||||
public class CECUIManager : MonoSingleton<CECUIManager>
|
||||
{
|
||||
[SerializeField] private Transform uiRoot; // nơi chứa UI được spawn (Canvas hoặc Transform)
|
||||
[SerializeField] private TMP_Text _fpsText;
|
||||
[SerializeField] private List<GameObject> uiPrefabs; // drag các prefab UI vào đây
|
||||
|
||||
private readonly Dictionary<System.Type, GameObject> _spawnedUIs = new();
|
||||
@@ -54,6 +55,7 @@ public class CECUIManager : MonoSingleton<CECUIManager>
|
||||
}
|
||||
private void Update()
|
||||
{
|
||||
// _fpsText.text = $"{Mathf.RoundToInt(1f / Time.deltaTime)}";
|
||||
if (m_pDlgQuickBar1 != null)
|
||||
{ m_pDlgQuickBar1.UpdateShortcuts(); }
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@ MonoBehaviour:
|
||||
m_SupportsHDR: 1
|
||||
m_HDRColorBufferPrecision: 0
|
||||
m_MSAA: 1
|
||||
m_RenderScale: 0.8
|
||||
m_RenderScale: 1
|
||||
m_UpscalingFilter: 3
|
||||
m_FsrOverrideSharpness: 0
|
||||
m_FsrSharpness: 0.92
|
||||
@@ -45,7 +45,7 @@ MonoBehaviour:
|
||||
m_MainLightShadowsSupported: 1
|
||||
m_MainLightShadowmapResolution: 1024
|
||||
m_AdditionalLightsRenderingMode: 1
|
||||
m_AdditionalLightsPerObjectLimit: 4
|
||||
m_AdditionalLightsPerObjectLimit: 0
|
||||
m_AdditionalLightShadowsSupported: 0
|
||||
m_AdditionalLightsShadowmapResolution: 2048
|
||||
m_AdditionalLightsShadowResolutionTierLow: 256
|
||||
@@ -54,9 +54,9 @@ MonoBehaviour:
|
||||
m_ReflectionProbeBlending: 1
|
||||
m_ReflectionProbeBoxProjection: 1
|
||||
m_ShadowDistance: 50
|
||||
m_ShadowCascadeCount: 1
|
||||
m_ShadowCascadeCount: 3
|
||||
m_Cascade2Split: 0.25
|
||||
m_Cascade3Split: {x: 0.1, y: 0.3}
|
||||
m_Cascade3Split: {x: 0.10250626, y: 0.28145128}
|
||||
m_Cascade4Split: {x: 0.067, y: 0.2, z: 0.467}
|
||||
m_CascadeBorder: 0.2
|
||||
m_ShadowDepthBias: 1
|
||||
@@ -100,10 +100,10 @@ MonoBehaviour:
|
||||
m_Keys: []
|
||||
m_Values:
|
||||
m_PrefilteringModeMainLightShadows: 3
|
||||
m_PrefilteringModeAdditionalLight: 0
|
||||
m_PrefilteringModeAdditionalLight: 3
|
||||
m_PrefilteringModeAdditionalLightShadows: 0
|
||||
m_PrefilterXRKeywords: 1
|
||||
m_PrefilteringModeForwardPlus: 2
|
||||
m_PrefilteringModeForwardPlus: 0
|
||||
m_PrefilteringModeDeferredRendering: 0
|
||||
m_PrefilteringModeScreenSpaceOcclusion: 0
|
||||
m_PrefilterDebugKeywords: 1
|
||||
|
||||
@@ -13,11 +13,9 @@ MonoBehaviour:
|
||||
m_Name: Mobile_Renderer
|
||||
m_EditorClassIdentifier:
|
||||
debugShaders:
|
||||
debugReplacementPS: {fileID: 4800000, guid: cf852408f2e174538bcd9b7fda1c5ae7,
|
||||
type: 3}
|
||||
debugReplacementPS: {fileID: 4800000, guid: cf852408f2e174538bcd9b7fda1c5ae7, type: 3}
|
||||
hdrDebugViewPS: {fileID: 4800000, guid: 573620ae32aec764abd4d728906d2587, type: 3}
|
||||
probeVolumeSamplingDebugComputeShader: {fileID: 7200000, guid: 53626a513ea68ce47b59dc1299fe3959,
|
||||
type: 3}
|
||||
probeVolumeSamplingDebugComputeShader: {fileID: 7200000, guid: 53626a513ea68ce47b59dc1299fe3959, type: 3}
|
||||
probeVolumeResources:
|
||||
probeVolumeDebugShader: {fileID: 0}
|
||||
probeVolumeFragmentationDebugShader: {fileID: 0}
|
||||
@@ -29,6 +27,7 @@ MonoBehaviour:
|
||||
m_RendererFeatures: []
|
||||
m_RendererFeatureMap:
|
||||
m_UseNativeRenderPass: 1
|
||||
xrSystemData: {fileID: 0}
|
||||
postProcessData: {fileID: 11400000, guid: 41439944d30ece34e96484bdb6645b55, type: 2}
|
||||
m_AssetVersion: 2
|
||||
m_OpaqueLayerMask:
|
||||
@@ -45,8 +44,10 @@ MonoBehaviour:
|
||||
failOperation: 0
|
||||
zFailOperation: 0
|
||||
m_ShadowTransparentReceive: 0
|
||||
m_RenderingMode: 2
|
||||
m_RenderingMode: 0
|
||||
m_DepthPrimingMode: 0
|
||||
m_CopyDepthMode: 0
|
||||
m_DepthAttachmentFormat: 0
|
||||
m_DepthTextureFormat: 0
|
||||
m_AccurateGbufferNormals: 0
|
||||
m_IntermediateTextureMode: 0
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user