Merge branch 'develop' into feature/clear-embedded-chip

This commit is contained in:
NguyenVanDat
2026-02-11 10:21:47 +07:00
162 changed files with 38996 additions and 3264 deletions
Binary file not shown.
+7
View File
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 97d5bf1c2fec02844993b30c645fe286
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+44
View File
@@ -0,0 +1,44 @@
// 宠物出场自动释放技能配置
// 格式:技能1 技能2 技能3......
801
802
803
804
805
1559
1560
1561
1562
1563
2081
2077
2093
2059
2094
2096
2098
2100
2102
2104
2106
2108
2110
2112
2114
2116
2062
2118
2120
2121
2122
2146
2124
2125
2126
2058
2127
2128
2136
2725
3278
+7
View File
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 8022adc119619b34fb2192efbff367d1
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -85,11 +85,21 @@ MonoBehaviour:
m_ReadOnly: 0
m_SerializedLabels: []
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 8022adc119619b34fb2192efbff367d1
m_Address: Assets/Addressable/petautoskill.txt
m_ReadOnly: 0
m_SerializedLabels: []
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 863a9da1fd09c934ea870dc4cfd4a906
m_Address: Assets/Addressable/maps/a61/movemap/r1_1-c1_2-l0.prmap.txt
m_ReadOnly: 0
m_SerializedLabels: []
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 97d5bf1c2fec02844993b30c645fe286
m_Address: Assets/Addressable/badwords.txt
m_ReadOnly: 0
m_SerializedLabels: []
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 98b87a70ddccda2459742976c2b90262
m_Address: Assets/Addressable/gshop1.txt
m_ReadOnly: 0
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: aa2ec4fb3e3ae4843bcc25ec13c56761
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
File diff suppressed because one or more lines are too long
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 7ef57348cc14e2c44b0d93d82309fb45
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 4300000
userData:
assetBundleName:
assetBundleVariant:
File diff suppressed because one or more lines are too long
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: ddc0695fd6ea2f04bb8012d070f14971
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 4300000
userData:
assetBundleName:
assetBundleVariant:
File diff suppressed because one or more lines are too long
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: e87c0edb5abf70047b61a962856e094a
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 4300000
userData:
assetBundleName:
assetBundleVariant:
File diff suppressed because one or more lines are too long
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 53144361e2a90ed4e918b2f7dd90ceec
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 4300000
userData:
assetBundleName:
assetBundleVariant:
File diff suppressed because one or more lines are too long
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 365c467577a8ce44495eb488cd707559
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 4300000
userData:
assetBundleName:
assetBundleVariant:
File diff suppressed because one or more lines are too long
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: c4d86c66a7bc42a41a047326db03bd43
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 4300000
userData:
assetBundleName:
assetBundleVariant:
@@ -9,12 +9,13 @@ GameObject:
serializedVersion: 6
m_Component:
- component: {fileID: 6620715533904588879}
- component: {fileID: 8971906507328977954}
m_Layer: 0
m_Name: litmodel_1858.bmd
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 2147483647
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &6620715533904588879
Transform:
@@ -26,7 +27,7 @@ Transform:
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0.6009749, y: 0.60097486, z: 0.60097486}
m_LocalScale: {x: 0.60097486, y: 0.60097486, z: 0.60097486}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 3802196365371919653}
@@ -34,8 +35,24 @@ Transform:
- {fileID: 642723427162609800}
- {fileID: 5468985526413160933}
- {fileID: 4305396298280240728}
- {fileID: 2374675958549553526}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &8971906507328977954
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2314062561766911216}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 59e5e7b3dc884d92a21aa09f5a2c208d, type: 3}
m_Name:
m_EditorClassIdentifier:
_modelPath: litmodels/a61/6/litmodel_1858.bmd
_buildingMeshRenderer: {fileID: 483505391458485963, guid: 028823e57276945c4a8c11c1d6067394, type: 3}
_halfSpacePrefab: {fileID: 0}
--- !u!1 &2339233178148791680
GameObject:
m_ObjectHideFlags: 0
@@ -45,15 +62,15 @@ GameObject:
serializedVersion: 6
m_Component:
- component: {fileID: 4305396298280240728}
- component: {fileID: 5018183914019923839}
- component: {fileID: 7601683473776944617}
- component: {fileID: 7598424356279927743}
- component: {fileID: 2766007181529087648}
m_Layer: 0
m_Name: Plane07
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 2147483647
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &4305396298280240728
Transform:
@@ -70,6 +87,21 @@ Transform:
m_Children: []
m_Father: {fileID: 6620715533904588879}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &5018183914019923839
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2339233178148791680}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ce1edacf192a4339b2b54396daf5feb0, type: 3}
m_Name:
m_EditorClassIdentifier:
_meshFilter: {fileID: 7601683473776944617}
_meshRenderer: {fileID: 7598424356279927743}
_material: {fileID: 2100000, guid: 38603659d794349f6abdd4959b09ee3c, type: 2}
--- !u!33 &7601683473776944617
MeshFilter:
m_ObjectHideFlags: 0
@@ -123,28 +155,6 @@ MeshRenderer:
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!64 &2766007181529087648
MeshCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2339233178148791680}
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: debea84a7d6595643a53de1dd566971e, type: 2}
--- !u!1 &3485809628087161448
GameObject:
m_ObjectHideFlags: 0
@@ -157,13 +167,12 @@ GameObject:
- component: {fileID: 4376806984282474990}
- component: {fileID: 6386291787311475679}
- component: {fileID: 3930127726212162846}
- component: {fileID: 3212405443933505398}
m_Layer: 0
m_Name: Cube
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 2147483647
m_StaticEditorFlags: 0
m_IsActive: 0
--- !u!4 &3802196365371919653
Transform:
@@ -254,28 +263,6 @@ BoxCollider:
serializedVersion: 3
m_Size: {x: 1, y: 1, z: 1}
m_Center: {x: 0, y: 0, z: 0}
--- !u!64 &3212405443933505398
MeshCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3485809628087161448}
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: 9fa5ff3c3e448134eb7e3ce9c089ef4a, type: 2}
--- !u!1 &3638618787983965184
GameObject:
m_ObjectHideFlags: 0
@@ -285,15 +272,15 @@ GameObject:
serializedVersion: 6
m_Component:
- component: {fileID: 5468985526413160933}
- component: {fileID: 8855383621233754012}
- component: {fileID: 3682369117625429100}
- component: {fileID: 933992426169001204}
- component: {fileID: 2323754348112517762}
m_Layer: 0
m_Name: Box76
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 2147483647
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &5468985526413160933
Transform:
@@ -310,6 +297,21 @@ Transform:
m_Children: []
m_Father: {fileID: 6620715533904588879}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &8855383621233754012
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3638618787983965184}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ce1edacf192a4339b2b54396daf5feb0, type: 3}
m_Name:
m_EditorClassIdentifier:
_meshFilter: {fileID: 3682369117625429100}
_meshRenderer: {fileID: 933992426169001204}
_material: {fileID: 2100000, guid: 38603659d794349f6abdd4959b09ee3c, type: 2}
--- !u!33 &3682369117625429100
MeshFilter:
m_ObjectHideFlags: 0
@@ -363,13 +365,100 @@ MeshRenderer:
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!64 &2323754348112517762
--- !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: 0
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: 3638618787983965184}
m_GameObject: {fileID: 4363002964825893588}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
@@ -384,7 +473,7 @@ MeshCollider:
serializedVersion: 5
m_Convex: 0
m_CookingOptions: 30
m_Mesh: {fileID: 4300000, guid: c08d860dbee1fc04982548760a3e6772, type: 2}
m_Mesh: {fileID: 4300000, guid: 7ef57348cc14e2c44b0d93d82309fb45, type: 2}
--- !u!1 &4972250255338124789
GameObject:
m_ObjectHideFlags: 0
@@ -394,15 +483,15 @@ GameObject:
serializedVersion: 6
m_Component:
- component: {fileID: 642723427162609800}
- component: {fileID: 9097665641590201619}
- component: {fileID: 5167380396376929393}
- component: {fileID: 4925996912478658442}
- component: {fileID: 2968994200318392227}
m_Layer: 0
m_Name: Object3420
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 2147483647
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &642723427162609800
Transform:
@@ -419,6 +508,21 @@ Transform:
m_Children: []
m_Father: {fileID: 6620715533904588879}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &9097665641590201619
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4972250255338124789}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ce1edacf192a4339b2b54396daf5feb0, type: 3}
m_Name:
m_EditorClassIdentifier:
_meshFilter: {fileID: 5167380396376929393}
_meshRenderer: {fileID: 4925996912478658442}
_material: {fileID: 2100000, guid: 38603659d794349f6abdd4959b09ee3c, type: 2}
--- !u!33 &5167380396376929393
MeshFilter:
m_ObjectHideFlags: 0
@@ -472,28 +576,6 @@ MeshRenderer:
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!64 &2968994200318392227
MeshCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4972250255338124789}
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: 8f3249ba302780d439604a8adbef43a0, type: 2}
--- !u!1 &9179223615275914270
GameObject:
m_ObjectHideFlags: 0
@@ -503,6 +585,7 @@ GameObject:
serializedVersion: 6
m_Component:
- component: {fileID: 8430704228723251584}
- component: {fileID: 7012760499325483412}
- component: {fileID: 5934929730268457527}
- component: {fileID: 5803992813184748586}
m_Layer: 0
@@ -510,7 +593,7 @@ GameObject:
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 2147483647
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &8430704228723251584
Transform:
@@ -527,6 +610,21 @@ Transform:
m_Children: []
m_Father: {fileID: 6620715533904588879}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &7012760499325483412
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9179223615275914270}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ce1edacf192a4339b2b54396daf5feb0, type: 3}
m_Name:
m_EditorClassIdentifier:
_meshFilter: {fileID: 5934929730268457527}
_meshRenderer: {fileID: 5803992813184748586}
_material: {fileID: 2100000, guid: 38603659d794349f6abdd4959b09ee3c, type: 2}
--- !u!33 &5934929730268457527
MeshFilter:
m_ObjectHideFlags: 0
@@ -9,12 +9,13 @@ GameObject:
serializedVersion: 6
m_Component:
- component: {fileID: 6818785608557861497}
- component: {fileID: 6650654117781535818}
m_Layer: 0
m_Name: litmodel_1862.bmd
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 2147483647
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &6818785608557861497
Transform:
@@ -32,8 +33,133 @@ Transform:
- {fileID: 1612251013623532140}
- {fileID: 3893658919594854549}
- {fileID: 4582541177654313918}
- {fileID: 5517097883188089445}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &6650654117781535818
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1232861201246319598}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 59e5e7b3dc884d92a21aa09f5a2c208d, type: 3}
m_Name:
m_EditorClassIdentifier:
_modelPath: litmodels/a61/6/litmodel_1862.bmd
_buildingMeshRenderer: {fileID: 483505391458485963, guid: 028823e57276945c4a8c11c1d6067394, type: 3}
_halfSpacePrefab: {fileID: 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: 0
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
@@ -46,13 +172,12 @@ GameObject:
- component: {fileID: 2968255532397389682}
- component: {fileID: 5438948683012025387}
- component: {fileID: 681523459429023314}
- component: {fileID: 3515302230652129360}
m_Layer: 0
m_Name: Cube
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 2147483647
m_StaticEditorFlags: 0
m_IsActive: 0
--- !u!4 &1612251013623532140
Transform:
@@ -143,28 +268,6 @@ BoxCollider:
serializedVersion: 3
m_Size: {x: 1, y: 1, z: 1}
m_Center: {x: 0, y: 0, z: 0}
--- !u!64 &3515302230652129360
MeshCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2388712936800771917}
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: cbd2119c1b57b394ebc3035b8542d417, type: 2}
--- !u!1 &3030075289969426418
GameObject:
m_ObjectHideFlags: 0
@@ -174,6 +277,7 @@ GameObject:
serializedVersion: 6
m_Component:
- component: {fileID: 3893658919594854549}
- component: {fileID: 2869355067384539996}
- component: {fileID: 5470214968288972111}
- component: {fileID: 6188963964924328644}
m_Layer: 0
@@ -181,7 +285,7 @@ GameObject:
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 2147483647
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &3893658919594854549
Transform:
@@ -198,6 +302,21 @@ Transform:
m_Children: []
m_Father: {fileID: 6818785608557861497}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &2869355067384539996
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3030075289969426418}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ce1edacf192a4339b2b54396daf5feb0, type: 3}
m_Name:
m_EditorClassIdentifier:
_meshFilter: {fileID: 5470214968288972111}
_meshRenderer: {fileID: 6188963964924328644}
_material: {fileID: 2100000, guid: 38603659d794349f6abdd4959b09ee3c, type: 2}
--- !u!33 &5470214968288972111
MeshFilter:
m_ObjectHideFlags: 0
@@ -260,15 +379,15 @@ GameObject:
serializedVersion: 6
m_Component:
- component: {fileID: 4582541177654313918}
- component: {fileID: 3009622973590342411}
- component: {fileID: 7275032875186968201}
- component: {fileID: 7323075174205319422}
- component: {fileID: 3485083940773831860}
m_Layer: 0
m_Name: "\u77F3\u5934\u7FA4-\u83491-\u5C0F\u77F3\u5934002"
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 2147483647
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &4582541177654313918
Transform:
@@ -285,6 +404,21 @@ Transform:
m_Children: []
m_Father: {fileID: 6818785608557861497}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &3009622973590342411
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3485220072246501903}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ce1edacf192a4339b2b54396daf5feb0, type: 3}
m_Name:
m_EditorClassIdentifier:
_meshFilter: {fileID: 7275032875186968201}
_meshRenderer: {fileID: 7323075174205319422}
_material: {fileID: 2100000, guid: 38603659d794349f6abdd4959b09ee3c, type: 2}
--- !u!33 &7275032875186968201
MeshFilter:
m_ObjectHideFlags: 0
@@ -338,25 +472,3 @@ MeshRenderer:
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!64 &3485083940773831860
MeshCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3485220072246501903}
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: 4dc1d9f04f0ba4e4b9d223b2c07bd89e, type: 2}
@@ -1,5 +1,114 @@
%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: 0
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
@@ -12,13 +121,12 @@ GameObject:
- component: {fileID: 4377393157200962775}
- component: {fileID: 4810886438903164393}
- component: {fileID: 6742417741599547535}
- component: {fileID: 7558972457630595642}
m_Layer: 0
m_Name: Cube
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 2147483647
m_StaticEditorFlags: 0
m_IsActive: 0
--- !u!4 &5731830492325550992
Transform:
@@ -109,28 +217,6 @@ BoxCollider:
serializedVersion: 3
m_Size: {x: 1, y: 1, z: 1}
m_Center: {x: 0, y: 0, z: 0}
--- !u!64 &7558972457630595642
MeshCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 224338938491563564}
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: d47bc57048eada04eb33065bc32e5bd9, type: 2}
--- !u!1 &3639320666472738195
GameObject:
m_ObjectHideFlags: 0
@@ -140,12 +226,13 @@ GameObject:
serializedVersion: 6
m_Component:
- component: {fileID: 4752216487722087006}
- component: {fileID: 2874221049017797962}
m_Layer: 0
m_Name: litmodel_1867.bmd
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 2147483647
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &4752216487722087006
Transform:
@@ -163,8 +250,24 @@ Transform:
- {fileID: 5731830492325550992}
- {fileID: 1618002668272441283}
- {fileID: 8486254419225748666}
- {fileID: 7608619978697582171}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &2874221049017797962
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3639320666472738195}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 59e5e7b3dc884d92a21aa09f5a2c208d, type: 3}
m_Name:
m_EditorClassIdentifier:
_modelPath: litmodels/a61/6/litmodel_1867.bmd
_buildingMeshRenderer: {fileID: 483505391458485963, guid: 028823e57276945c4a8c11c1d6067394, type: 3}
_halfSpacePrefab: {fileID: 0}
--- !u!1 &5788265423816265018
GameObject:
m_ObjectHideFlags: 0
@@ -174,6 +277,7 @@ GameObject:
serializedVersion: 6
m_Component:
- component: {fileID: 1618002668272441283}
- component: {fileID: 4630435523954315004}
- component: {fileID: 4936805761018033330}
- component: {fileID: 4244163224790429753}
m_Layer: 0
@@ -181,7 +285,7 @@ GameObject:
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 2147483647
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1618002668272441283
Transform:
@@ -198,6 +302,21 @@ Transform:
m_Children: []
m_Father: {fileID: 4752216487722087006}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &4630435523954315004
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5788265423816265018}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ce1edacf192a4339b2b54396daf5feb0, type: 3}
m_Name:
m_EditorClassIdentifier:
_meshFilter: {fileID: 4936805761018033330}
_meshRenderer: {fileID: 4244163224790429753}
_material: {fileID: 2100000, guid: 38603659d794349f6abdd4959b09ee3c, type: 2}
--- !u!33 &4936805761018033330
MeshFilter:
m_ObjectHideFlags: 0
@@ -260,15 +379,15 @@ GameObject:
serializedVersion: 6
m_Component:
- component: {fileID: 8486254419225748666}
- component: {fileID: 8002505015633449250}
- component: {fileID: 9106085224755893441}
- component: {fileID: 1677616681961558193}
- component: {fileID: 8071207353266352483}
m_Layer: 0
m_Name: "\u77F3\u5934\u7FA4-\u83491-\u5C0F\u77F3\u5934002"
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 2147483647
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &8486254419225748666
Transform:
@@ -285,6 +404,21 @@ Transform:
m_Children: []
m_Father: {fileID: 4752216487722087006}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &8002505015633449250
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6886684710405263843}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ce1edacf192a4339b2b54396daf5feb0, type: 3}
m_Name:
m_EditorClassIdentifier:
_meshFilter: {fileID: 9106085224755893441}
_meshRenderer: {fileID: 1677616681961558193}
_material: {fileID: 2100000, guid: 38603659d794349f6abdd4959b09ee3c, type: 2}
--- !u!33 &9106085224755893441
MeshFilter:
m_ObjectHideFlags: 0
@@ -338,25 +472,3 @@ MeshRenderer:
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!64 &8071207353266352483
MeshCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6886684710405263843}
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: 5bcde4f6995bda44bbceb5f5a6af526a, type: 2}
@@ -9,12 +9,13 @@ GameObject:
serializedVersion: 6
m_Component:
- component: {fileID: 6475581097579970790}
- component: {fileID: 2215667107604869555}
m_Layer: 0
m_Name: litmodel_1898.bmd
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 2147483647
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &6475581097579970790
Transform:
@@ -32,8 +33,133 @@ Transform:
- {fileID: 1084874715169113141}
- {fileID: 1911635272754944718}
- {fileID: 6722884338247993433}
- {fileID: 2212218385651794187}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &2215667107604869555
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 174771146519727535}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 59e5e7b3dc884d92a21aa09f5a2c208d, type: 3}
m_Name:
m_EditorClassIdentifier:
_modelPath: litmodels/a61/6/litmodel_1898.bmd
_buildingMeshRenderer: {fileID: 483505391458485963, guid: 028823e57276945c4a8c11c1d6067394, type: 3}
_halfSpacePrefab: {fileID: 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: 0
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 &2447526579919937863
GameObject:
m_ObjectHideFlags: 0
@@ -43,15 +169,15 @@ GameObject:
serializedVersion: 6
m_Component:
- component: {fileID: 6722884338247993433}
- component: {fileID: 3765278913130644654}
- component: {fileID: 6900722094898584654}
- component: {fileID: 4270610089866800178}
- component: {fileID: 1393325988028726257}
m_Layer: 0
m_Name: "\u5973\u513F\u56FD\u6C34\u4E0B\u526F\u672C_\u73CA\u745A6"
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 2147483647
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &6722884338247993433
Transform:
@@ -68,6 +194,21 @@ Transform:
m_Children: []
m_Father: {fileID: 6475581097579970790}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &3765278913130644654
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2447526579919937863}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ce1edacf192a4339b2b54396daf5feb0, type: 3}
m_Name:
m_EditorClassIdentifier:
_meshFilter: {fileID: 6900722094898584654}
_meshRenderer: {fileID: 4270610089866800178}
_material: {fileID: 2100000, guid: 38603659d794349f6abdd4959b09ee3c, type: 2}
--- !u!33 &6900722094898584654
MeshFilter:
m_ObjectHideFlags: 0
@@ -121,28 +262,6 @@ MeshRenderer:
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!64 &1393325988028726257
MeshCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2447526579919937863}
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: b69272e5e2dbe6241a4c9e399e3b5abf, type: 2}
--- !u!1 &3399945531502805491
GameObject:
m_ObjectHideFlags: 0
@@ -152,6 +271,7 @@ GameObject:
serializedVersion: 6
m_Component:
- component: {fileID: 1911635272754944718}
- component: {fileID: 3139485792799429737}
- component: {fileID: 4640167936994541263}
- component: {fileID: 5227929924180742837}
m_Layer: 0
@@ -159,7 +279,7 @@ GameObject:
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 2147483647
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1911635272754944718
Transform:
@@ -176,6 +296,21 @@ Transform:
m_Children: []
m_Father: {fileID: 6475581097579970790}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &3139485792799429737
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3399945531502805491}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ce1edacf192a4339b2b54396daf5feb0, type: 3}
m_Name:
m_EditorClassIdentifier:
_meshFilter: {fileID: 4640167936994541263}
_meshRenderer: {fileID: 5227929924180742837}
_material: {fileID: 2100000, guid: 38603659d794349f6abdd4959b09ee3c, type: 2}
--- !u!33 &4640167936994541263
MeshFilter:
m_ObjectHideFlags: 0
@@ -241,13 +376,12 @@ GameObject:
- component: {fileID: 5488941006112743083}
- component: {fileID: 1180625791947097650}
- component: {fileID: 2609915143205243988}
- component: {fileID: 5126396880599206054}
m_Layer: 0
m_Name: Cube
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 2147483647
m_StaticEditorFlags: 0
m_IsActive: 0
--- !u!4 &1084874715169113141
Transform:
@@ -338,25 +472,3 @@ BoxCollider:
serializedVersion: 3
m_Size: {x: 1, y: 1, z: 1}
m_Center: {x: 0, y: 0, z: 0}
--- !u!64 &5126396880599206054
MeshCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9164986158761498474}
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: 6f379e8a40ba2064f8dca45a730b4d27, type: 2}
@@ -9,6 +9,7 @@ GameObject:
serializedVersion: 6
m_Component:
- component: {fileID: 3146780185303420119}
- component: {fileID: 7125255553902160724}
- component: {fileID: 2824995113634766611}
- component: {fileID: 5555055641851591249}
m_Layer: 0
@@ -16,7 +17,7 @@ GameObject:
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 2147483647
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &3146780185303420119
Transform:
@@ -33,6 +34,21 @@ Transform:
m_Children: []
m_Father: {fileID: 2394903240699220014}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &7125255553902160724
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 978014179154523417}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ce1edacf192a4339b2b54396daf5feb0, type: 3}
m_Name:
m_EditorClassIdentifier:
_meshFilter: {fileID: 2824995113634766611}
_meshRenderer: {fileID: 5555055641851591249}
_material: {fileID: 2100000, guid: 38603659d794349f6abdd4959b09ee3c, type: 2}
--- !u!33 &2824995113634766611
MeshFilter:
m_ObjectHideFlags: 0
@@ -95,15 +111,15 @@ GameObject:
serializedVersion: 6
m_Component:
- component: {fileID: 2683837799112924102}
- component: {fileID: 2813073758568219612}
- component: {fileID: 630534919124307102}
- component: {fileID: 7476672801598629131}
- component: {fileID: 9184119827703752546}
m_Layer: 0
m_Name: "\u9E4F_\u5973\u513F\u56FD\u6C34\u4E0B_\u9752\u94DC\u53F0\u5B50_\u53F0\u5B50"
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 2147483647
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &2683837799112924102
Transform:
@@ -120,6 +136,21 @@ Transform:
m_Children: []
m_Father: {fileID: 2394903240699220014}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &2813073758568219612
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2600613913304579461}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ce1edacf192a4339b2b54396daf5feb0, type: 3}
m_Name:
m_EditorClassIdentifier:
_meshFilter: {fileID: 630534919124307102}
_meshRenderer: {fileID: 7476672801598629131}
_material: {fileID: 2100000, guid: 38603659d794349f6abdd4959b09ee3c, type: 2}
--- !u!33 &630534919124307102
MeshFilter:
m_ObjectHideFlags: 0
@@ -173,13 +204,153 @@ MeshRenderer:
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!64 &9184119827703752546
--- !u!1 &2877733656238097905
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2394903240699220014}
- component: {fileID: 6693818952640549695}
m_Layer: 0
m_Name: litmodel_1900.bmd
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &2394903240699220014
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2877733656238097905}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0.4520925, y: 0.4520925, z: 0.4520925}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 8381071178979401032}
- {fileID: 2575029349172491765}
- {fileID: 3146780185303420119}
- {fileID: 2683837799112924102}
- {fileID: 4023167349951248047}
- {fileID: 2250924196899347191}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &6693818952640549695
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2877733656238097905}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 59e5e7b3dc884d92a21aa09f5a2c208d, type: 3}
m_Name:
m_EditorClassIdentifier:
_modelPath: litmodels/a61/6/litmodel_1900.bmd
_buildingMeshRenderer: {fileID: 483505391458485963, guid: 028823e57276945c4a8c11c1d6067394, type: 3}
_halfSpacePrefab: {fileID: 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: 0
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: 2600613913304579461}
m_GameObject: {fileID: 4054812586826850141}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
@@ -194,43 +365,7 @@ MeshCollider:
serializedVersion: 5
m_Convex: 0
m_CookingOptions: 30
m_Mesh: {fileID: 4300000, guid: 8f2afad8c75ca6f4ba324fcb46caca17, type: 2}
--- !u!1 &2877733656238097905
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2394903240699220014}
m_Layer: 0
m_Name: litmodel_1900.bmd
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 2147483647
m_IsActive: 1
--- !u!4 &2394903240699220014
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2877733656238097905}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0.45209253, y: 0.4520925, z: 0.45209253}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 8381071178979401032}
- {fileID: 2575029349172491765}
- {fileID: 3146780185303420119}
- {fileID: 2683837799112924102}
- {fileID: 4023167349951248047}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_Mesh: {fileID: 4300000, guid: 365c467577a8ce44495eb488cd707559, type: 2}
--- !u!1 &4698689582247525187
GameObject:
m_ObjectHideFlags: 0
@@ -240,6 +375,7 @@ GameObject:
serializedVersion: 6
m_Component:
- component: {fileID: 4023167349951248047}
- component: {fileID: 8385134542884482459}
- component: {fileID: 2376797820541088248}
- component: {fileID: 9213169097843452526}
m_Layer: 0
@@ -247,7 +383,7 @@ GameObject:
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 2147483647
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &4023167349951248047
Transform:
@@ -264,6 +400,21 @@ Transform:
m_Children: []
m_Father: {fileID: 2394903240699220014}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &8385134542884482459
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4698689582247525187}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ce1edacf192a4339b2b54396daf5feb0, type: 3}
m_Name:
m_EditorClassIdentifier:
_meshFilter: {fileID: 2376797820541088248}
_meshRenderer: {fileID: 9213169097843452526}
_material: {fileID: 2100000, guid: 38603659d794349f6abdd4959b09ee3c, type: 2}
--- !u!33 &2376797820541088248
MeshFilter:
m_ObjectHideFlags: 0
@@ -326,6 +477,7 @@ GameObject:
serializedVersion: 6
m_Component:
- component: {fileID: 2575029349172491765}
- component: {fileID: 731803830233352076}
- component: {fileID: 1375122347775585271}
- component: {fileID: 6940637169590094618}
m_Layer: 0
@@ -333,7 +485,7 @@ GameObject:
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 2147483647
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &2575029349172491765
Transform:
@@ -350,6 +502,21 @@ Transform:
m_Children: []
m_Father: {fileID: 2394903240699220014}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &731803830233352076
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5963435224617225954}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ce1edacf192a4339b2b54396daf5feb0, type: 3}
m_Name:
m_EditorClassIdentifier:
_meshFilter: {fileID: 1375122347775585271}
_meshRenderer: {fileID: 6940637169590094618}
_material: {fileID: 2100000, guid: 38603659d794349f6abdd4959b09ee3c, type: 2}
--- !u!33 &1375122347775585271
MeshFilter:
m_ObjectHideFlags: 0
@@ -420,7 +587,7 @@ GameObject:
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 2147483647
m_StaticEditorFlags: 0
m_IsActive: 0
--- !u!4 &8381071178979401032
Transform:
@@ -12,13 +12,12 @@ GameObject:
- component: {fileID: 4149584750667810462}
- component: {fileID: 5674494537242668376}
- component: {fileID: 1146491623373395291}
- component: {fileID: 2646111431340310856}
m_Layer: 0
m_Name: Cube
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 2147483647
m_StaticEditorFlags: 0
m_IsActive: 0
--- !u!4 &2477282569958296925
Transform:
@@ -109,28 +108,6 @@ BoxCollider:
serializedVersion: 3
m_Size: {x: 1, y: 1, z: 1}
m_Center: {x: 0, y: 0, z: 0}
--- !u!64 &2646111431340310856
MeshCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 769742619403843017}
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: 6529238c4ce20134c928d247351321d5, type: 2}
--- !u!1 &1098008835416278253
GameObject:
m_ObjectHideFlags: 0
@@ -140,15 +117,15 @@ GameObject:
serializedVersion: 6
m_Component:
- component: {fileID: 4063870959951636716}
- component: {fileID: 4353931993843523672}
- component: {fileID: 1953192204989271153}
- component: {fileID: 1941119665291710379}
- component: {fileID: 6413472904915345217}
m_Layer: 0
m_Name: "\u9EC4_\u6DF1\u6D77\u690D\u7269_\u6D77\u87BA"
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 2147483647
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &4063870959951636716
Transform:
@@ -165,6 +142,21 @@ Transform:
m_Children: []
m_Father: {fileID: 4906358553693921576}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &4353931993843523672
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1098008835416278253}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ce1edacf192a4339b2b54396daf5feb0, type: 3}
m_Name:
m_EditorClassIdentifier:
_meshFilter: {fileID: 1953192204989271153}
_meshRenderer: {fileID: 1941119665291710379}
_material: {fileID: 2100000, guid: 38603659d794349f6abdd4959b09ee3c, type: 2}
--- !u!33 &1953192204989271153
MeshFilter:
m_ObjectHideFlags: 0
@@ -218,28 +210,6 @@ MeshRenderer:
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!64 &6413472904915345217
MeshCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1098008835416278253}
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: 9b39f19a27a0c5d41866605399824236, type: 2}
--- !u!1 &3277439837289325168
GameObject:
m_ObjectHideFlags: 0
@@ -249,6 +219,7 @@ GameObject:
serializedVersion: 6
m_Component:
- component: {fileID: 2033314129660300733}
- component: {fileID: 8959569428513963700}
- component: {fileID: 5030791923722819899}
- component: {fileID: 8808115577007227934}
m_Layer: 0
@@ -256,7 +227,7 @@ GameObject:
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 2147483647
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &2033314129660300733
Transform:
@@ -273,6 +244,21 @@ Transform:
m_Children: []
m_Father: {fileID: 4906358553693921576}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &8959569428513963700
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3277439837289325168}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ce1edacf192a4339b2b54396daf5feb0, type: 3}
m_Name:
m_EditorClassIdentifier:
_meshFilter: {fileID: 5030791923722819899}
_meshRenderer: {fileID: 8808115577007227934}
_material: {fileID: 2100000, guid: 38603659d794349f6abdd4959b09ee3c, type: 2}
--- !u!33 &5030791923722819899
MeshFilter:
m_ObjectHideFlags: 0
@@ -335,12 +321,13 @@ GameObject:
serializedVersion: 6
m_Component:
- component: {fileID: 4906358553693921576}
- component: {fileID: 5642236755686174432}
m_Layer: 0
m_Name: litmodel_1936.bmd
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 2147483647
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &4906358553693921576
Transform:
@@ -358,5 +345,130 @@ Transform:
- {fileID: 2477282569958296925}
- {fileID: 2033314129660300733}
- {fileID: 4063870959951636716}
- {fileID: 119630387473320254}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &5642236755686174432
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4224137022612016776}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 59e5e7b3dc884d92a21aa09f5a2c208d, type: 3}
m_Name:
m_EditorClassIdentifier:
_modelPath: litmodels/a61/6/litmodel_1936.bmd
_buildingMeshRenderer: {fileID: 483505391458485963, guid: 028823e57276945c4a8c11c1d6067394, type: 3}
_halfSpacePrefab: {fileID: 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: 0
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}
@@ -125,7 +125,7 @@ MonoBehaviour:
Value: -268
Center: 20
Range: {x: -360, y: 360}
Wrap: 1
Wrap: 0
Recentering:
Enabled: 0
Wait: 1
@@ -288,7 +288,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
m_IsActive: 0
--- !u!224 &5334235739729266731
RectTransform:
m_ObjectHideFlags: 0
@@ -661,10 +661,10 @@ RectTransform:
- {fileID: 2592907577137935010}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: -760, y: 165.32361}
m_SizeDelta: {x: 400, y: 360}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 272, y: -540.1764}
m_SizeDelta: {x: 544, y: 691}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &4496279422760028947
CanvasRenderer:
@@ -686,6 +686,8 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: bac01b5537b4341a7885fe2392d32eaa, type: 3}
m_Name:
m_EditorClassIdentifier:
skillNameText: {fileID: 0}
imageProgress: {fileID: 0}
m_TargetName:
m_TargetPos: {x: 0, y: 0, z: 0}
m_Targets: []
@@ -733,9 +735,9 @@ RectTransform:
- {fileID: 5334235739729266731}
m_Father: {fileID: 3016039455618517900}
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_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 131.66666, y: -25}
m_SizeDelta: {x: 50, y: 50}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &6804128504798270830
@@ -759,8 +761,8 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_Color: {r: 1, g: 1, b: 1, a: 0}
m_RaycastTarget: 0
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
@@ -1197,9 +1199,9 @@ RectTransform:
- {fileID: 2700626918252070787}
m_Father: {fileID: 3016039455618517900}
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_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 25, y: -25}
m_SizeDelta: {x: 50, y: 50}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &9058123560732067158
@@ -1223,8 +1225,8 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_Color: {r: 1, g: 1, b: 1, a: 0}
m_RaycastTarget: 0
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
@@ -1582,7 +1584,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
m_IsActive: 0
--- !u!224 &2700626918252070787
RectTransform:
m_ObjectHideFlags: 0
@@ -1877,9 +1879,9 @@ RectTransform:
- {fileID: 8505317987590978995}
m_Father: {fileID: 3016039455618517900}
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_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 78.33333, y: -25}
m_SizeDelta: {x: 50, y: 50}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &1266149729541302388
@@ -1903,8 +1905,8 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_Color: {r: 1, g: 1, b: 1, a: 0}
m_RaycastTarget: 0
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
@@ -2057,7 +2059,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
m_IsActive: 0
--- !u!224 &8505317987590978995
RectTransform:
m_ObjectHideFlags: 0
@@ -2213,7 +2215,7 @@ RectTransform:
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 260}
m_SizeDelta: {x: 0, y: 656}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &2700825500503621295
CanvasRenderer:
@@ -2237,7 +2239,7 @@ MonoBehaviour:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0, g: 0, b: 0, a: 0.29803923}
m_RaycastTarget: 1
m_RaycastTarget: 0
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
@@ -4,34 +4,21 @@ using UnityEngine.EventSystems;
using BrewMonster.Scripts.Task.UI;
using System.Collections.Generic;
using BrewMonster.UI;
using System.Text;
using System.Text.RegularExpressions;
namespace BrewMonster
{
public class StyledTaskTraceText : MonoBehaviour, IPointerMoveHandler, IPointerExitHandler,IPointerClickHandler
public class StyledTaskTraceText : MonoBehaviour, IPointerMoveHandler,IPointerClickHandler
{
public enum LinkType
{
coord,
npc,
monster,
item,
target
}
public TMP_Text tmp;
private List<LinkCommand> linkCommands =new List<LinkCommand>();
int hoveredLink = -1;
LinkType linkType = LinkType.coord;
Color32 normalColor = new Color32(77, 166, 255, 255);
Color32 hoverColor = new Color32(255, 200, 80, 255);
public void SetLinkType( LinkType linkType)
{
this.linkType = linkType;
}
private void Start()
{
tmp.raycastTarget = true;
ResetLinkColor();
tmp.ForceMeshUpdate();
}
@@ -45,22 +32,31 @@ namespace BrewMonster
if (linkIndex != hoveredLink)
{
ResetLinkColor();
hoveredLink = linkIndex;
if (hoveredLink != -1)
SetLinkColor(hoveredLink, hoverColor);
}
}
public void Set(string text)
{
tmp.text = text;
tmp.text = FormatForTextMeshPro(text);
}
public void OnPointerExit(PointerEventData eventData)
public static string FormatForTextMeshPro(string text)
{
ResetLinkColor();
hoveredLink = -1;
if (string.IsNullOrEmpty(text))
return string.Empty;
StringBuilder result = new StringBuilder(text);
result.Replace("\\r", "\n");
return ProcessColorCodes(result);
}
public static string ProcessColorCodes(StringBuilder text)
{
string pattern = @"\^([0-9A-Fa-f]{6})";
return Regex.Replace(text.ToString(), pattern, match =>
{
string hexColor = match.Groups[1].Value;
return $"<color=#{hexColor}>";
}, RegexOptions.None);
}
public void AddToFirstPosition(LinkCommand linkCommand)
@@ -110,34 +106,27 @@ namespace BrewMonster
public void OnPointerClick(PointerEventData eventData)
{
if (hoveredLink == -1) return;
TMP_LinkInfo linkInfo = tmp.textInfo.linkInfo[hoveredLink];
string linkText = linkInfo.GetLinkText();
string entityID = linkInfo.GetLinkID();
switch (linkType)
switch (entityID)
{
case LinkType.coord:
Debug.Log($"Clicked coord link: ID={entityID} Type={linkType} Text={linkText}");
case "coord":
linkCommands[hoveredLink].Execute(tmp);
//Debug.Log($"[StyledTaskTraceText] OnPointerClick: linkCommands[hoveredLink].Execute(tmp) => {linkCommands[hoveredLink].Execute(tmp)}");
break;
case LinkType.npc:
Debug.Log($"Clicked npc link: ID={entityID} Type={linkType} Text={linkText}");
case "npc":
linkCommands[hoveredLink].Execute(tmp);
break;
case LinkType.monster:
Debug.Log($"Clicked monster link: ID={entityID} Type={linkType} Text={linkText}");
case "monster":
break;
default:
Debug.Log($"Clicked unknown link: ID={entityID} Text={linkText}");
break;
}
ResetLinkColor();
hoveredLink = -1;
}
void ResetLinkColor()
{
if (hoveredLink == -1) return;
SetLinkColor(hoveredLink, normalColor);
}
}
}
@@ -50,9 +50,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 8688b7d87bac4c16b9eaa3408f8ea419, type: 3}
m_Name:
m_EditorClassIdentifier:
m_pTreeItemPrefab_Deep1: {fileID: 4314770845850481090, guid: 8752f9e95e4124abfb0d46a2cbe805e4, type: 3}
m_pTreeItemPrefab_Deep2: {fileID: 4314770845850481090, guid: 3cb6791423916496ea0a5b059419fdaa, type: 3}
m_pTreeItemPrefab_Deep3: {fileID: 4314770845850481090, guid: 7b4ec3e05f31a45138f72011c6bf7cf2, type: 3}
m_pTreeViewHolder: {fileID: 1273901548777618454, guid: 8bc89f863b5ec42b49f149d7363144f3, type: 3}
_currentSelectedItem: {fileID: 0}
m_aTreeViewItems: []
--- !u!114 &6404897883559725565
@@ -0,0 +1,110 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &700152255263326765
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5053903421260846465}
- component: {fileID: 4986645933044111193}
- component: {fileID: 1062363862839909147}
- component: {fileID: 1273901548777618454}
- component: {fileID: 442295838974077123}
m_Layer: 5
m_Name: TreeViewHolder
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &5053903421260846465
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 700152255263326765}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 312.2704, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &4986645933044111193
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 700152255263326765}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3}
m_Name:
m_EditorClassIdentifier:
m_HorizontalFit: 0
m_VerticalFit: 1
--- !u!114 &1062363862839909147
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 700152255263326765}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Padding:
m_Left: 0
m_Right: 0
m_Top: 0
m_Bottom: 0
m_ChildAlignment: 1
m_Spacing: 0
m_ChildForceExpandWidth: 1
m_ChildForceExpandHeight: 1
m_ChildControlWidth: 0
m_ChildControlHeight: 0
m_ChildScaleWidth: 0
m_ChildScaleHeight: 0
m_ReverseArrangement: 0
--- !u!114 &1273901548777618454
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 700152255263326765}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: dfe78f833120b411d915fcd9c9793515, type: 3}
m_Name:
m_EditorClassIdentifier:
m_pTreeItemPrefab_Deep1: {fileID: 4314770845850481090, guid: 8752f9e95e4124abfb0d46a2cbe805e4, type: 3}
m_pTreeItemPrefab_Deep2: {fileID: 4314770845850481090, guid: 3cb6791423916496ea0a5b059419fdaa, type: 3}
m_pTreeItemPrefab_Deep3: {fileID: 4314770845850481090, guid: 7b4ec3e05f31a45138f72011c6bf7cf2, type: 3}
m_uItemData: 0
_treeLevel: 0
isLastItem: 1
_itemTextColor: {r: 0, g: 0, b: 0, a: 0}
_itemText:
_expand: 0
--- !u!222 &442295838974077123
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 700152255263326765}
m_CullTransparentMesh: 1
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 8bc89f863b5ec42b49f149d7363144f3
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -218,10 +218,10 @@ RectTransform:
- {fileID: 5827054231092576763}
m_Father: {fileID: 2024997316782034639}
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_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 200.71739, y: -45.5}
m_SizeDelta: {x: 224.56522, y: 91}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &2230410216357545400
CanvasRenderer:
@@ -599,10 +599,10 @@ RectTransform:
- {fileID: 5340186735755952146}
m_Father: {fileID: 2024997316782034639}
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_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 45, y: -45}
m_SizeDelta: {x: 150, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &885853373149276158
CanvasRenderer:
@@ -661,7 +661,7 @@ MonoBehaviour:
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 1
m_Transition: 0
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
@@ -773,7 +773,7 @@ MonoBehaviour:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7973684205123875483}
m_Enabled: 1
m_Enabled: 0
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
m_Name:
@@ -63,12 +63,13 @@ MonoBehaviour:
_expandBG: {fileID: 6073336955970910715}
ExpandBGActive: {fileID: 21300000, guid: 42074c4f5f76b4cbc9043df8f430af5f, type: 3}
ExpandBGInactive: {fileID: 21300000, guid: e09a5d2cb3c3f4c858754a1e90a44abd, type: 3}
m_uItemData: 0
_treeLevel: 0
isLastItem: 0
_rectTransform: {fileID: 0}
OnClick:
m_PersistentCalls:
m_Calls: []
OnExpand:
m_PersistentCalls:
m_Calls: []
--- !u!114 &4986645933044111193
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -143,10 +144,10 @@ RectTransform:
- {fileID: 5827054231092576763}
m_Father: {fileID: 2024997316782034639}
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_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 184.67392, y: -33}
m_SizeDelta: {x: 220.65218, y: 66}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &2230410216357545400
CanvasRenderer:
@@ -175,7 +176,7 @@ MonoBehaviour:
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 1
m_Transition: 0
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
@@ -522,10 +523,10 @@ RectTransform:
- {fileID: 5062486824527634889}
m_Father: {fileID: 2024997316782034639}
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_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 45.673943, y: -32}
m_SizeDelta: {x: 135.3478, y: 80}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &885853373149276158
CanvasRenderer:
@@ -681,7 +682,7 @@ MonoBehaviour:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7973684205123875483}
m_Enabled: 1
m_Enabled: 0
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
m_Name:
@@ -143,10 +143,10 @@ RectTransform:
- {fileID: 5827054231092576763}
m_Father: {fileID: 2024997316782034639}
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_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 149.49998, y: -30}
m_SizeDelta: {x: 281, y: 60}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &2230410216357545400
CanvasRenderer:
@@ -254,8 +254,8 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0.00000023841858}
m_AnchoredPosition: {x: 35, y: 0}
m_SizeDelta: {x: -70, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5842649278580849339
CanvasRenderer:
@@ -390,8 +390,8 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: -0.00048828125, y: 0}
m_SizeDelta: {x: 48, y: 48}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 25, y: 25}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &7099288759002186546
CanvasRenderer:
@@ -415,13 +415,13 @@ MonoBehaviour:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastTarget: 0
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: 00976b2e066af4e1f85ff5f3c94b5d48, type: 3}
m_Sprite: {fileID: -1288565630, guid: 00976b2e066af4e1f85ff5f3c94b5d48, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
@@ -522,10 +522,10 @@ RectTransform:
- {fileID: 5062486824527634889}
m_Father: {fileID: 2024997316782034639}
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_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 45, y: -27}
m_SizeDelta: {x: 50, y: 50}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &885853373149276158
CanvasRenderer:
@@ -549,13 +549,13 @@ MonoBehaviour:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 0}
m_RaycastTarget: 1
m_RaycastTarget: 0
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: 00976b2e066af4e1f85ff5f3c94b5d48, type: 3}
m_Sprite: {fileID: -1288565630, guid: 00976b2e066af4e1f85ff5f3c94b5d48, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
@@ -681,7 +681,7 @@ MonoBehaviour:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7973684205123875483}
m_Enabled: 1
m_Enabled: 0
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
m_Name:
+475 -80
View File
@@ -60,14 +60,14 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0.14578143, g: 0.7924528, b: 0.1864423, a: 1}
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_Sprite: {fileID: 0}
m_Sprite: {fileID: 21300000, guid: 3f3e9e002b211764587ebda4073a9fa8, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
@@ -146,17 +146,17 @@ RectTransform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1448650841350251410}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
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: 8578995796031649400}
m_Father: {fileID: 4385973065753450966}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 84}
m_SizeDelta: {x: 200, y: 50}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 3.4185944, y: 0}
m_SizeDelta: {x: -6.8372, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &7931617368933511578
CanvasRenderer:
@@ -186,17 +186,17 @@ MonoBehaviour:
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: MessageBox
m_text: "Th\xF4ng b\xE1o"
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
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: 4278190080
m_fontColor: {r: 0, g: 0, b: 0, a: 1}
rgba: 4294967295
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
@@ -257,6 +257,156 @@ MonoBehaviour:
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!1 &1637812686023826163
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7884867221660726897}
- component: {fileID: 1991626257239895938}
- component: {fileID: 7826399543152972279}
m_Layer: 5
m_Name: HiddenBG
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &7884867221660726897
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1637812686023826163}
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: 8578995796031649400}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &1991626257239895938
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1637812686023826163}
m_CullTransparentMesh: 1
--- !u!114 &7826399543152972279
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1637812686023826163}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0, g: 0, b: 0, a: 0.5058824}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 0}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &2756004224914197157
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1307868009287359000}
- component: {fileID: 3895986222254116630}
- component: {fileID: 7645532389658545970}
m_Layer: 5
m_Name: hitbox
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1307868009287359000
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2756004224914197157}
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: 1876747693836630426}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 100, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &3895986222254116630
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2756004224914197157}
m_CullTransparentMesh: 1
--- !u!114 &7645532389658545970
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2756004224914197157}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 0.003921569}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 0}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &3318234767486795022
GameObject:
m_ObjectHideFlags: 0
@@ -324,15 +474,15 @@ MonoBehaviour:
m_Calls: []
m_text: "\u0110\u1ED3ng \xDD(Y)"
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
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: 4278190080
m_fontColor: {r: 0, g: 0, b: 0, a: 1}
rgba: 4290571256
m_fontColor: {r: 0.9725491, g: 0.9215687, b: 0.7372549, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
@@ -349,12 +499,12 @@ MonoBehaviour:
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 44.25
m_fontSize: 25
m_fontSizeBase: 36
m_fontWeight: 400
m_enableAutoSizing: 1
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontSizeMax: 25
m_fontStyle: 0
m_HorizontalAlignment: 2
m_VerticalAlignment: 512
@@ -417,19 +567,19 @@ RectTransform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4140524140714306011}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
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:
- {fileID: 4915293664251870536}
- {fileID: 7906706137011413807}
m_Father: {fileID: 8578995796031649400}
m_Father: {fileID: 9094714545324204474}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 0}
m_AnchoredPosition: {x: 0, y: 41.609}
m_SizeDelta: {x: 0, y: 83.217}
m_AnchoredPosition: {x: 0, y: 92.690155}
m_SizeDelta: {x: 0, y: 185.3804}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &6567280976245013390
MonoBehaviour:
@@ -449,7 +599,7 @@ MonoBehaviour:
m_Top: 0
m_Bottom: 0
m_ChildAlignment: 4
m_Spacing: 11.43
m_Spacing: 46.9
m_ChildForceExpandWidth: 0
m_ChildForceExpandHeight: 1
m_ChildControlWidth: 0
@@ -517,14 +667,14 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0.14578143, g: 0.7924528, b: 0.1864423, a: 1}
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_Sprite: {fileID: 0}
m_Sprite: {fileID: 21300000, guid: 3f3e9e002b211764587ebda4073a9fa8, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
@@ -603,17 +753,17 @@ RectTransform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5199518178703117250}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
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: 8578995796031649400}
m_Father: {fileID: 9094714545324204474}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0.5}
m_AnchorMax: {x: 1, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 50}
m_AnchoredPosition: {x: 0, y: 15.4617}
m_SizeDelta: {x: -100, y: 326.1666}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &655909173274991632
CanvasRenderer:
@@ -643,19 +793,17 @@ MonoBehaviour:
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: 'Content
'
m_text:
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
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: 4278190080
m_fontColor: {r: 0, g: 0, b: 0, a: 1}
rgba: 4290834686
m_fontColor: {r: 0.9960785, g: 0.94117653, b: 0.75294125, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
@@ -672,12 +820,12 @@ MonoBehaviour:
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 44.75
m_fontSize: 30
m_fontSizeBase: 36
m_fontWeight: 400
m_enableAutoSizing: 1
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontSizeMax: 30
m_fontStyle: 0
m_HorizontalAlignment: 2
m_VerticalAlignment: 512
@@ -688,7 +836,7 @@ MonoBehaviour:
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_TextWrappingMode: 0
m_TextWrappingMode: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
@@ -726,7 +874,6 @@ GameObject:
m_Component:
- component: {fileID: 8578995796031649400}
- component: {fileID: 2243330050876855902}
- component: {fileID: 3372223705930781376}
- component: {fileID: 1069295583529170983}
m_Layer: 5
m_Name: MessageBox
@@ -747,9 +894,8 @@ RectTransform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 1931146730219979515}
- {fileID: 6428994832978992641}
- {fileID: 2782318616460798463}
- {fileID: 7884867221660726897}
- {fileID: 9094714545324204474}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
@@ -765,36 +911,6 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5492547392745930423}
m_CullTransparentMesh: 1
--- !u!114 &3372223705930781376
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5492547392745930423}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 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_Sprite: {fileID: 0}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!114 &1069295583529170983
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -807,10 +923,13 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 6672523dc3dacfa46b2104f504acdb6e, type: 3}
m_Name:
m_EditorClassIdentifier:
skillNameText: {fileID: 0}
imageProgress: {fileID: 0}
titleText: {fileID: 5031655611580643013}
messageText: {fileID: 7448521238108099750}
okButton: {fileID: 7766051278568089760}
_noButton: {fileID: 7010901635634620631}
_closeButton: {fileID: 0}
--- !u!1 &5664175764923475105
GameObject:
m_ObjectHideFlags: 0
@@ -878,15 +997,15 @@ MonoBehaviour:
m_Calls: []
m_text: "H\u1EE7y(N)"
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
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: 4278190080
m_fontColor: {r: 0, g: 0, b: 0, a: 1}
rgba: 4290571256
m_fontColor: {r: 0.9725491, g: 0.9215687, b: 0.7372549, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
@@ -903,12 +1022,12 @@ MonoBehaviour:
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 50.3
m_fontSize: 25
m_fontSizeBase: 36
m_fontWeight: 400
m_enableAutoSizing: 1
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontSizeMax: 25
m_fontStyle: 0
m_HorizontalAlignment: 2
m_VerticalAlignment: 512
@@ -947,3 +1066,279 @@ MonoBehaviour:
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!1 &6736111909663914576
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 9094714545324204474}
- component: {fileID: 7569923820655471568}
- component: {fileID: 6612964713443770349}
m_Layer: 5
m_Name: BG
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &9094714545324204474
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6736111909663914576}
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:
- {fileID: 4385973065753450966}
- {fileID: 6428994832978992641}
- {fileID: 2782318616460798463}
- {fileID: 1876747693836630426}
m_Father: {fileID: 8578995796031649400}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 22.8, y: 43.7}
m_SizeDelta: {x: 796, y: 564}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &7569923820655471568
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6736111909663914576}
m_CullTransparentMesh: 1
--- !u!114 &6612964713443770349
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6736111909663914576}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 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_Sprite: {fileID: 21300000, guid: 6d3e1de5b0b9eec47930f9f2dc926d84, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &8905388490714302238
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4385973065753450966}
- component: {fileID: 4298957829474164482}
- component: {fileID: 3961222653569502436}
m_Layer: 5
m_Name: TittleBG
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &4385973065753450966
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8905388490714302238}
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:
- {fileID: 1931146730219979515}
m_Father: {fileID: 9094714545324204474}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 273.9}
m_SizeDelta: {x: 463, y: 54}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &4298957829474164482
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8905388490714302238}
m_CullTransparentMesh: 1
--- !u!114 &3961222653569502436
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8905388490714302238}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 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_Sprite: {fileID: 21300000, guid: 50648e5dab4e12f44bbbdac9313e24a4, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &8968086720955217913
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1876747693836630426}
- component: {fileID: 6688289751329567051}
- component: {fileID: 8705222398274861452}
- component: {fileID: 482550456836939169}
m_Layer: 5
m_Name: CloseBtn
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1876747693836630426
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8968086720955217913}
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:
- {fileID: 1307868009287359000}
m_Father: {fileID: 9094714545324204474}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 1, y: 1}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: -45.6, y: -37.1}
m_SizeDelta: {x: 58, y: 58}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &6688289751329567051
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8968086720955217913}
m_CullTransparentMesh: 1
--- !u!114 &8705222398274861452
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8968086720955217913}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 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_Sprite: {fileID: 21300000, guid: fb2f2f58be45f6e4890e85cc00b0bcc9, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!114 &482550456836939169
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8968086720955217913}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 0
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_SelectedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 8705222398274861452}
m_OnClick:
m_PersistentCalls:
m_Calls: []
@@ -11,6 +11,8 @@ GameObject:
- component: {fileID: 8674390294668887183}
- component: {fileID: 3282628128517699183}
- component: {fileID: 1815773137787350266}
- component: {fileID: 2333337703901939250}
- component: {fileID: 4352052582615766499}
m_Layer: 5
m_Name: iconPassive
m_TagString: Untagged
@@ -76,6 +78,69 @@ MonoBehaviour:
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!114 &2333337703901939250
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5742955024492215839}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ec4a1ef2b59484440ba114ebd4f9611b, type: 3}
m_Name:
m_EditorClassIdentifier:
skillbutton: {fileID: 0}
skillImage: {fileID: 7887565863755557202}
borderImage: {fileID: 0}
cooldownTime: 0
m_ClockCounter: {fileID: 0}
learnedSkillbutton: {fileID: 4352052582615766499}
wButton: {fileID: 0}
--- !u!114 &4352052582615766499
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5742955024492215839}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 1
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_SelectedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 1815773137787350266}
m_OnClick:
m_PersistentCalls:
m_Calls: []
--- !u!1 &6638027642728938890
GameObject:
m_ObjectHideFlags: 0
File diff suppressed because it is too large Load Diff
@@ -45,3 +45,5 @@ MonoBehaviour:
prefab: {fileID: 5492547392745930423, guid: 54cccb2c6a758a24183474cd385ccb2c, type: 3}
- id: CDlgInfoTooltip
prefab: {fileID: 6830833846243993097, guid: 97dd1de3aba08a04980849e40d5c1ea4, type: 3}
- id: MagicProgress1
prefab: {fileID: 1126053271199039253, guid: 526d462bd8c87b74c9e461e80d028cb2, type: 3}
@@ -49,7 +49,7 @@ TextureImporter:
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteBorder: {x: 30, y: 0, z: 30, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
@@ -106,6 +106,19 @@ TextureImporter:
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: iOS
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
@@ -114,7 +127,7 @@ TextureImporter:
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
internalID: 1537655665
vertices: []
indices:
edges: []
Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

@@ -0,0 +1,143 @@
fileFormatVersion: 2
guid: 38a6d63e773d7464f843e0e642e89113
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: iOS
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 MiB

@@ -0,0 +1,143 @@
fileFormatVersion: 2
guid: f5de54195981b12408e6a1f4213e0495
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: iOS
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

@@ -0,0 +1,143 @@
fileFormatVersion: 2
guid: e9ad281c6ab25374ca6ab28ad5c71ef5
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: iOS
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

@@ -0,0 +1,143 @@
fileFormatVersion: 2
guid: 586068729c8d28d46af33f6a95254fb6
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: iOS
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

@@ -0,0 +1,143 @@
fileFormatVersion: 2
guid: d486c1a0638721144aa65a9050ecc563
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: iOS
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

@@ -106,6 +106,19 @@ TextureImporter:
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: iOS
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
@@ -43,7 +43,7 @@ TextureImporter:
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteMode: 2
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
@@ -108,7 +108,29 @@ TextureImporter:
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
sprites:
- serializedVersion: 2
name: dot_0
rect:
serializedVersion: 2
x: 2
y: 4
width: 20
height: 20
alignment: 0
pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 4daa99dcd797c4c14abcb146f46af16e
internalID: -1288565630
vertices: []
indices:
edges: []
weights: []
outline: []
customData:
physicsShape: []
@@ -122,7 +144,8 @@ TextureImporter:
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
nameFileIdTable:
dot_0: -1288565630
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
+2 -2
View File
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:eadad766c90d9a2f8f33468f1b6b21e6fd78e55f555200887eb9f6198720424a
size 76688
oid sha256:bd882a6bec1d1d08efbd9107424f7cb7514358179a64cc2bbd09ee3eeada2c30
size 107449
@@ -21,6 +21,9 @@ namespace BrewMonster
void OnEnable()
{
Instance = this;
#if UNITY_EDITOR
speedX = 500;
#endif
}
public void OnDrag(PointerEventData eventData)
@@ -31,7 +34,7 @@ namespace BrewMonster
{
orbital.HorizontalAxis.Value += delta.normalized.x * speedX * Time.deltaTime;
//orbital.HorizontalAxis.Value = Mathf.Clamp(orbital.HorizontalAxis.Value, -360f, 360f);
orbital.VerticalAxis.Value += delta.normalized.y * speedY * Time.deltaTime;
orbital.VerticalAxis.Value -= delta.normalized.y * speedY * Time.deltaTime;
orbital.VerticalAxis.Value = Mathf.Clamp(orbital.VerticalAxis.Value, -360f, 360f);
}
currentPos = eventData.position;
@@ -628,8 +628,7 @@ public static class generate_item_temp
WriteInt(data, ref offset, (int)(sub_type.equip_mask|(addon_num>0?0x40000000:0))); //ƷĿװ־
WriteUInt(data, ref offset, ess.proc_type); //ƷĴʽ
WriteInt(data, ref offset, (int)DATA_TYPE.DT_DECORATION_ESSENCE); //ƷӦID
WriteInt(data, ref offset, (int)DATA_TYPE.DT_DECORATION_ESSENCE); //ƷӦID
WriteInt(data, ref offset, (int)DATA_TYPE.DT_DECORATION_ESSENCE); //ƷӦID
if(ess.has_guid == 1){
int g1,g2;
itemdataman.get_item_guid(id,out g1,out g2);
@@ -648,7 +647,7 @@ public static class generate_item_temp
WriteInt(data, ref offset, 0);
int item_content = offset;
WriteInt(data, ref offset, 0);
content_length = (int)(size - offset);
content_length = (int)(size - offset);
WriteInt(data, ref content_length_ptr, content_length);
WriteInt(data, ref item_content, offset);
@@ -639,7 +639,7 @@ namespace BrewMonster.Common
UnityGameSession.Instance.GameSession.c2s_SendCmdCancelAction();
}
}
void SendCmdPetCtrl(int idTarget, int cmd, byte[] pParamBuf, int iParamLen)
public void SendCmdPetCtrl(int idTarget, int cmd, byte[] pParamBuf, int iParamLen)
{
CECCounter pCnt = m_CounterMap[(int)CommandID.PET_CTRL];
if (pCnt.IsFull())
@@ -317,7 +317,7 @@ namespace BrewMonster
bAtk_NoForce = false;
bBls_NoForce = false;
bLockQuickBar = false;
bPetAutoSkill = false;
bPetAutoSkill = true;
bAutoTeamForTask = true;
bDisableAutoWikiHelp = false;
bExclusiveAwardMode = true;
@@ -2899,12 +2899,15 @@ namespace BrewMonster
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
public ushort[] name; // name, max 15 characters
public string Name => ByteToStringUtils.UshortArrayToCP936String(name);
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
public byte[] file_model; // model path
public string FileModel => ByteToStringUtils.ByteArrayToUnicodeString(file_model);
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
public byte[] file_icon; // icon file
public string FileIcon => ByteToStringUtils.ByteArrayToUnicodeString(file_icon );
public uint character_combo_id; // character combo id
@@ -5029,7 +5032,7 @@ namespace BrewMonster
public int[] num_evolve; // evolution items
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
public int[,] num_inherit; // inheritance parameters
public int[] num_inherit; // inheritance parameters
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
public int[] num_rand_skill; // random skill parameters
@@ -1,14 +1,18 @@
using BrewMonster;
using BrewMonster.Scripts.Task;
using CSNetwork;
using Cysharp.Threading.Tasks;
using ModelRenderer.Scripts.GameData;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Threading.Tasks;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.ResourceManagement.AsyncOperations;
using CSNetwork.GPDataType;
namespace BrewMonster.Network
{
public partial class EC_Game
@@ -34,6 +38,7 @@ namespace BrewMonster.Network
private static Dictionary<int, ItemMsgMapEntry> m_ItemMsgMap; // TemplateId -> (MessageId, DisplayMode)
private static CECConfigs m_pConfigs;
private static int m_iCurCursor; // Current cursor
private static List<int> m_PetAutoSkills = new List<int>();
#endregion
@@ -132,7 +137,7 @@ namespace BrewMonster.Network
// Load coord_data.txt (C++: Configs/Coord_data.txt) for clickable task links auto-move.
// 加载 coord_data.txtC++Configs/Coord_data.txt)用于任务可点击链接的自动移动。
LoadObjectCoord();
LoadPetAutoSkill();
return true;
}
public static CECConfigs GetConfigs() { return m_pConfigs; }
@@ -527,7 +532,6 @@ namespace BrewMonster.Network
public static int GetObjectCoord(string strTargetID, ref List<OBJECT_COORD> TargetCoord)
{
int count = 0;
foreach(var coord in TargetCoord)
{
@@ -541,6 +545,73 @@ namespace BrewMonster.Network
return count;
}
public static bool IsPetAutoSkill(int skill_id)
{
return m_PetAutoSkills.Contains(skill_id);
}
// Load the pet auto skill table
public static async UniTask<bool> LoadPetAutoSkill()
{
string pszFilename = "Assets/Addressable/petautoskill.txt";
var ta = await LoadStringTableTextAssetByAddressables(pszFilename);
if (ta == null || string.IsNullOrEmpty(ta.text))
{
BMLogger.LogError($"[AUIManager] ImportStringTable failed: cannot load Addressables TextAsset for key='{pszFilename}'");
return false;
}
using (var sr = new StringReader(ta.text))
{
string line;
while ((line = sr.ReadLine()) != null)
{
if (string.IsNullOrWhiteSpace(line))
continue;
if (int.TryParse(line, out int key))
{
m_PetAutoSkills.Add(key);
}
}
}
return true;
}
private static async UniTask<TextAsset> LoadStringTableTextAssetByAddressables(string key)
{
try
{
// Initialize Addressables if not already initialized (Unity-safe)
await Addressables.InitializeAsync().ToUniTask();
// Load using Addressables directly with WaitForCompletion (Unity-safe, won't deadlock)
// This matches the pattern used in EC_Game.cs
var handle = Addressables.LoadAssetAsync<TextAsset>(key);
var textAsset = await handle.ToUniTask();
if (handle.Status == AsyncOperationStatus.Succeeded && textAsset != null)
{
// Keep the handle valid; string tables are used for the whole session
// Note: We don't release the handle here to keep the asset loaded
return textAsset;
}
if (handle.IsValid())
{
Addressables.Release(handle);
}
BMLogger.LogError($"[AUIManager] Failed to load TextAsset for key='{key}'");
return null;
}
catch (Exception e)
{
BMLogger.LogError($"[AUIManager] LoadStringTableTextAssetByAddressables exception for key='{key}': {e}");
return null;
}
}
#endregion
}
}
@@ -470,6 +470,7 @@ public class CECNPCMan : IMsgHandler
if (npc != null)
{
m_NPCTab.Remove(Info.nid);
GameObject.Destroy(npc.gameObject);
}
// Nếu id này có trong bảng unknown thì xóa nó
@@ -558,7 +559,7 @@ public class CECNPCMan : IMsgHandler
}
if (bPet)
{
//pNPC = new CECPet(this);
pNPC = CECGameRun.Instance.GetPet();
}
else
{
@@ -570,7 +571,9 @@ public class CECNPCMan : IMsgHandler
case DATA_TYPE.DT_MONSTER_ESSENCE:
pNPC = CECGameRun.Instance.GetMonster();
break;
case DATA_TYPE.DT_PET_ESSENCE:/* pNPC = new CECPet(this);*/ break;
case DATA_TYPE.DT_PET_ESSENCE:
pNPC = CECGameRun.Instance.GetPet();
break;
default:
UnityEngine.Debug.Assert(false, "Invalid DATA_TYPE in CreateNPC");
return null;
@@ -67,7 +67,20 @@ namespace BrewMonster.Scripts
m_pWorkMan = pWorkMan;
m_pHost = pWorkMan.GetHostPlayer();
}
public virtual bool Tick(float dwDeltaTime)
{
if (m_bFirstTick)
{
m_bFirstTick = false;
OnFirstTick();
}
return true;
}
protected virtual void OnFirstTick()
{
base.OnFirstTick();
}
// Operations
// Override from CECObjectWork
public override void Cancel()
@@ -497,7 +510,8 @@ namespace BrewMonster.Scripts
}
public void StartDelayedWork()
{
if (!HasDelayedWork()){
if (!HasDelayedWork())
{
return;
}
CECHPWork pWork = m_Delayed.pWork;
@@ -511,7 +525,8 @@ namespace BrewMonster.Scripts
}
public void ClearDelayedWork()
{
if (!HasDelayedWork()){
if (!HasDelayedWork())
{
return;
}
// LOG_DEBUG_INFO(AString().Format("delayed CECHPWork::%s priority=%d cleared", m_Delayed.pWork->GetWorkName(), m_Delayed.iPriority));
@@ -608,7 +623,7 @@ namespace BrewMonster.Scripts
case CECHPWork.Host_work_ID.WORK_FREEFALL: pWork = new CECHPWorkFall(this); break;
//case CECHPWork.Host_work_ID.WORK_SIT: pWork = new CECHPWorkSit(this); break;
case CECHPWork.Host_work_ID.WORK_PICKUP: pWork = new EC_HPWorkPick(this); break;
//case CECHPWork.Host_work_ID.WORK_CONCENTRATE: pWork = new CECHPWorkConcentrate(this); break;
case CECHPWork.Host_work_ID.WORK_CONCENTRATE: pWork = new CECHPWorkConcentrate(this); break;
//case CECHPWork.Host_work_ID.WORK_REVIVE: pWork = new CECHPWorkRevive(this); break;
case CECHPWork.Host_work_ID.WORK_FLASHMOVE: pWork = new CECHPWorkFMove(this); break;
//case CECHPWork.Host_work_ID.WORK_BEBOUND: pWork = new CECHPWorkBeBound(this); break;
@@ -622,7 +637,6 @@ namespace BrewMonster.Scripts
return pWork;
}
public bool CanStartWork(int iWorkID, int iPriority = CECHPWorkMan.Work_priority.PRIORITY_1)
{
if (!ValidatePriority(iPriority))
@@ -847,29 +861,34 @@ namespace BrewMonster.Scripts
}
public bool IsMoving()
{
{
bool result = false;
if (ValidatePriority(m_iCurPriority))
if (ValidatePriority(m_iCurPriority))
{
WorkList workList = m_WorkStack[m_iCurPriority];
if(workList != null)
WorkList workList = m_WorkStack[m_iCurPriority];
if (workList != null)
{
for (int i = 0; i < workList.Count; ++ i)
for (int i = 0; i < workList.Count; ++i)
{
if (workList[i].IsMoving())
if (workList[i].IsMoving())
{
result = true;
break;
}
result = true;
break;
}
}
}
}
return result;
}
return result;
}
public bool IsFreeFalling()
{
return IsWorkRunning(Host_work_ID.WORK_FREEFALL);
return IsWorkRunning(Host_work_ID.WORK_FREEFALL);
}
public bool IsOperatingPet()
{
return IsWorkRunning(Host_work_ID.WORK_CONCENTRATE);
}
}
public abstract class CECHPWorkPostTickCommand
@@ -0,0 +1,60 @@
using BrewMonster.Scripts;
using UnityEngine;
namespace BrewMonster.Scripts
{
public class CECHPWorkConcentrate : CECHPWork
{
int m_iDoWhat;
public CECHPWorkConcentrate(CECHPWorkMan pWorkMan) : base(Host_work_ID.WORK_CONCENTRATE, pWorkMan)
{
m_dwMask = Work_mask.MASK_CONCENTRATE;
m_dwTransMask = Work_mask.MASK_STAND;
m_iDoWhat = (int)eDO_PET.DO_SUMMONPET;
Reset();
}
public override bool CopyData(CECHPWork pWork)
{
if (base.CopyData(pWork))
{
return false;
}
CECHPWorkConcentrate pSrc = (CECHPWorkConcentrate)pWork;
m_iDoWhat = pSrc.m_iDoWhat;
return true;
}
public override void Reset()
{
base.Reset();
}
public override bool Tick(float dwDeltaTime)
{
base.Tick(Time.fixedUnscaledTime);
return true;
}
protected override void OnFirstTick()
{
}
public enum eDO_PET
{
DO_SUMMONPET = 0, // Summon pet
DO_RECALLPET,
DO_BANISHPET,
DO_RESTOREPET,
DO_UNKNOWN,
};
// Set / Get do what flag
public void SetDoWhat(int iDoWhat) { m_iDoWhat = iDoWhat; }
public int GetDoWhat() { return m_iDoWhat; }
}
}
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 126c0de4ea802b14fa540a689899e007
@@ -714,7 +714,6 @@ namespace BrewMonster.Scripts
}
vCurPos = m_pHost.m_MoveCtrl.GroundMove(EC_Utility.ToA3DVECTOR3(vMoveDir), fSpeed, fDeltaTime, m_pHost.m_fVertSpeed);
//Debug.LogError("vCurPos =" + vCurPos);
m_pHost.SetPos(EC_Utility.ToVector3(vCurPos));
}
else
@@ -1,4 +1,7 @@
using CSNetwork.GPDataType;
using Unity.VisualScripting;
using UnityEngine;
using static BrewMonster.Scripts.CECHPWorkSpell.Spell_magic_state;
namespace BrewMonster.Scripts
{
///////////////////////////////////////////////////////////////////////////
@@ -16,6 +19,7 @@ namespace BrewMonster.Scripts
public CECHPWorkSpell(CECHPWorkMan pWorkMan) : base(Host_work_ID.WORK_SPELLOBJECT, pWorkMan)
{
m_OverTimeCnt = new CECCounter();
m_dwMask = Work_mask.MASK_SPELLOBJECT;
m_dwTransMask = Work_mask.MASK_STAND | Work_mask.MASK_MOVETOPOS | Work_mask.MASK_TRACEOBJECT;
Reset();
@@ -30,20 +34,25 @@ namespace BrewMonster.Scripts
protected int m_iState;
protected int m_idTarget; // Target id
// On first tick
protected virtual void OnFirstTick()
{
//m_pHost.m_iMoveMode = CECHostPlayer::MOVE_STAND;
}
// Prepare cast
public void PrepareCast(int idTarget, CECSkill pSkill, int iIncantTime)
{
m_pSkill = pSkill;
m_iState = ST_INCANT;
m_idTarget = idTarget;
if (iIncantTime < 0)
iIncantTime = 0x7fffffff;
else
iIncantTime *= 2;
m_OverTimeCnt.SetPeriod(iIncantTime);
m_OverTimeCnt.Reset();
}
// Change state
public void ChangeState(int iState)
{
m_iState = iState;
}
// Get state
public int GetState()
@@ -56,14 +65,37 @@ namespace BrewMonster.Scripts
}
// Tick routine
public virtual bool Tick(uint dwDeltaTime)
{
return false;
}
// Reset work
public virtual void Reset()
public override bool Tick(float dwDeltaTime)
{
base.Tick(dwDeltaTime * 1000);
if (m_OverTimeCnt.IncCounter(dwDeltaTime * 1000))
m_bFinished = true;
if (m_idTarget != 0)
{
m_pHost.TurnFaceTo(m_idTarget);
}
if (!m_pHost.IsPlayingAction())
{
m_pHost.PlayAction((int)PLAYER_ACTION_TYPE.ACT_FIGHTSTAND);
}
return true;
}
protected override void OnFirstTick()
{
m_pHost.m_iMoveMode = (int)MoveMode.MOVE_STAND;
}
public override void Reset()
{
base.Reset();
m_OverTimeCnt.Reset();
m_pSkill = null;
m_iState = ST_INCANT;
m_idTarget = 0;
}
// Copy work data
public virtual bool CopyData(CECHPWork pWork)
@@ -73,6 +105,8 @@ namespace BrewMonster.Scripts
// Cancel work
public virtual void Cancel()
{
m_pHost.TurnFaceTo(0);
base.Cancel();
}
}
@@ -6,6 +6,7 @@ using PerfectWorld.Scripts;
using CSNetwork;
using UnityEngine;
using static BrewMonster.Scripts.CECHPWork;
using BrewMonster.Scripts.Pet;
namespace BrewMonster
{
@@ -52,10 +53,32 @@ namespace BrewMonster
{
OnClickBtnEscape();
}
if (Input.GetKeyDown(KeyCode.P))
{
OnCommandSummon(2);
}
if (Input.GetKeyDown(KeyCode.H))
{
BMLogger.LogError("Input.GetKeyDown(KeyCode.H)");
CycleSkillShortcuts();
}
#endif
}
public void OnCommandSummon(int slot)
{
CECPetCorral pPetCorral = GetPetCorral();
int nSlot = slot - 1;
nSlot += 0 * 10;
// ·ÉÐÐ-¡·Æï³Ë
if (GetActionSwitcher() != null && GetActionSwitcher().OnFlyToRideAction(nSlot))
return;
SummonPet(nSlot);
}
/// <summary>
/// Handle left button click / 处理左键点击
/// </summary>
@@ -152,7 +152,7 @@ namespace BrewMonster.Scripts.Managers
try
{
// Load the multi-sprite atlas from Resources
var atlasSprites = Resources.LoadAll<Sprite>("UI/IconSprites/iconlist_ivtrm_multisprite");
var atlasSprites = EC_Game.GetGameRun().GetUIManager().IconlistIvtr; //Resources.LoadAll<Sprite>("UI/IconSprites/iconlist_ivtrm_multisprite");
if (atlasSprites != null && atlasSprites.Length > 0)
{
_multiSpriteAtlas = atlasSprites;
@@ -123,7 +123,7 @@ namespace PerfectWorld.Scripts.Managers
if (m_Essence.name_len != 0)
{
m_strName = ByteToStringUtils.UshortArrayToUnicodeString(m_Essence.name);
EC_Game.GetGameRun().GetUIManager().FilterBadWords(m_strName);
EC_Game.GetGameRun().GetUIManager().FilterBadWords(ref m_strName);
}
m_aSkills = new List<PETSKILL>(m_Essence.skill_count);
@@ -12,6 +12,7 @@ using BrewMonster.Scripts.Managers;
using BrewMonster.Scripts;
using CSNetwork.GPDataType;
using System.Runtime.InteropServices;
using BrewMonster.Scripts.Pet;
namespace PerfectWorld.Scripts.Managers
{
public class EC_IvtrPetFood : EC_IvtrItem
@@ -132,7 +132,6 @@ namespace BrewMonster.Scripts.Managers
public int[] resistance;
public IVTR_ESSENCE_ARMOR(byte[] data)
{
Debug.Log("IVTR_ESSENCE_ARMOR: data.Length: " + data.Length);
resistance = new int[InventoryConst.NUM_MAGICCLASS];
CECDataReader dr = new(data, data.Length);
defense = dr.ReadInt();
@@ -65,6 +65,7 @@ namespace PerfectWorld.Scripts.Managers
case int value6 when value6 == EC_MsgDef.MSG_PM_PLAYERDOEMOTE:
case int value7 when value7 == EC_MsgDef.MSG_PM_PLAYERGATHER:
case int value8 when value8 == EC_MsgDef.MSG_PM_PLAYERFLY:
case int value9 when value9 == EC_MsgDef.MSG_PM_PLAYERMOUNT:
TransmitMessage(Msg);
break;
case int value when value == EC_MsgDef.MSG_PM_PLAYERDIED:
@@ -626,6 +627,9 @@ namespace PerfectWorld.Scripts.Managers
cid = (GPDataTypeHelper.FromBytes<cmd_object_landing>((byte[])Msg.dwParam1)).object_id;
break;
case long value when value == EC_MsgDef.MSG_PM_PLAYERMOUNT:
cid = (GPDataTypeHelper.FromBytes<cmd_player_mounting>((byte[])Msg.dwParam1)).id;
break;
// ⚠️ Các case khác cũng tương tự, chỉ việc lấy ra đúng trường id / caster / user ...
// Do quá dài nên bạn có thể copy dần từng case từ C++ sang.
@@ -139,7 +139,7 @@ public class CECObject : MonoBehaviour
public A3DVECTOR3 GetPos()
{
return new A3DVECTOR3(transform.position.x, transform.position.y, transform.position.z);
return EC_Utility.ToA3DVECTOR3(transform.position);
}
public Vector3 GetPosVector3()
{
@@ -62,6 +62,6 @@ namespace BrewMonster.Scripts
public uint GetTransferMask() => m_dwTransMask;
// On first tick
protected virtual void OnFirstTick() { }
public virtual void OnFirstTick() { }
}
}
@@ -1,121 +0,0 @@
using CSNetwork.GPDataType;
using PerfectWorld.Scripts;
using BrewMonster;
using BrewMonster.Scripts;
public struct PETSKILL
{
public int idSkill;
public int iLevel;
public int iCoolCnt;
public int iCoolMax;
};
public enum SkillType
{
EM_SKILL_DEFAULT = 0, // Ը
EM_SKILL_NORMAL, // ͨ
EM_SKILL_NATURE, // Ը
EM_SKILL_SPECIAL, // ר
}
public class EC_PetCorral
{
public enum MaxSlotNum
{
MAX_SLOTNUM = 20, // ͨ
MAX_SLOTNUM2 = 21, // г
};
// Moving mode
public enum MoveMode
{
MOVE_FOLLOW = 0,
MOVE_STAND,
};
// Attacking mode
public enum AttackMode
{
ATK_DEFENSE = 0,
ATK_POSITIVE,
ATK_PASSIVE,
};
protected int m_iIntimacy; // øж
protected int m_iHunger; //
protected int m_tid; // ģID
protected int m_tidVis; // ģIDΪ0ʾɼID
protected int m_idEgg; // ID
protected int m_iClass; // սͳ
protected float m_fHPFactor; // Ѫջʱʹã 0Ϊ
protected float m_fMPFactor; // MPջʱʹã 0Ϊ
protected int m_iLevel; //
protected bool m_isBind; // Ƿ˺һ
protected bool m_canWebTrade; // ǷѰɽ
protected ushort m_color; // ȾɫɫλΪ1ʱЧ
protected int m_iExp; // ﵱǰ
protected int m_iSkillPt; // ʣܵ
protected string m_strName;
protected int m_iHP; // Only fight pets have this
protected int m_iMP;
protected PETSKILL[] m_aSkills = new PETSKILL[(int)GP_PET_SKILL_NUM.GP_PET_SKILL_NUM];
protected int[] m_vecNorSkillIndex; // ֹԸܺͨ˳ҵ m_aSkills
protected int[] m_vecDynSkillIndex;
protected int m_iSpecialSkillIndex; // רm_aSkillsţֻнһ˼
protected CECCounter m_cntAutoSkill;
protected int[] m_aAutoSkills;
protected ROLEEXTPROP m_ExtProps;
protected PET_ESSENCE m_pDBEssence = new PET_ESSENCE();
protected int m_iAtkRation;
protected int m_iDefRation;
protected int m_iHpRation;
protected int m_iAtkLvlRation;
protected int m_iDefLvlRation;
protected int m_iNature;
public CECPetData GetActivePet()
{
//Place holder for ivtrPetFood
return null;
}
}
public class CECPetData
{
#region enum
public enum HungerLevel
{
HUNGER_LEVEL_0, // ʳ
HUNGER_LEVEL_1, //
HUNGER_LEVEL_2, // ̶һ
HUNGER_LEVEL_3,
HUNGER_LEVEL_4, // ̶ȶ
HUNGER_LEVEL_5,
HUNGER_LEVEL_6,
HUNGER_LEVEL_7, // ̶
HUNGER_LEVEL_8,
HUNGER_LEVEL_9,
HUNGER_LEVEL_10,
HUNGER_LEVEL_11, // ̶ļ
HUNGER_LEVEL_COUNT,
};
// Intimacy level
public enum IntimacyLevel
{
INTIMACY_LEVEL_0, // Ұѱ, 0-50
INTIMACY_LEVEL_1, // ޳, 51-150
INTIMACY_LEVEL_2, // , 151-500
INTIMACY_LEVEL_3, // Ĺ, 501-999
INTIMACY_LEVEL_COUNT,
INTIMACY_POINT_MAX = 999,
};
#endregion
public int GetTemplateID()
{
//Place holder for ivtrPetFood
return -1;
}
}
@@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: c41c880dbc2344f819944899348d5124
@@ -29,9 +29,12 @@ namespace BrewMonster.Scripts
public uint dwUser1; // User defined data 1
public uint dwUser2; // User defined data 2
// For test
public A3DVECTOR3 normal;
public void Init(A3DVECTOR3 start, A3DVECTOR3 delta, A3DVECTOR3 ext, bool bRay = false, float epsilon = 0.03125f)
{
BoundAABB = new A3DAABB();
vStart = start;
vDelta = delta;
vExtents = ext;
@@ -50,6 +50,7 @@ namespace BrewMonster
public void SetComboSkillState(Dictionary<uint, int> skillDic, ref ComboSkillState state)
{
BMLogger.LogError($"SetComboSkillState: skillid={state.skillid}, arg0={state.arg[0]}, arg1={state.arg[1]}, arg2={state.arg[2]}");
m_comboSkillState = state;
if (state.skillid != 0)
{
@@ -307,6 +307,7 @@ namespace BrewMonster
//CECInstance pInstance = g_pGame.GetGameRun().GetInstance(idInst);
//if (pInstance.GetLimitJump())
//fGravity *= 4.0f;
Vector3 posStart = EC_Utility.ToVector3(m_pHost.m_aabbServer.Center);
CDR_INFO cdr = m_pHost.m_CDRInfo;
cdr.vCenter = m_pHost.m_aabbServer.Center;
cdr.vXOZVelDir = vRealDirH;
@@ -345,6 +346,7 @@ namespace BrewMonster
m_fMoveTime += fTime;
m_pHost.m_CDRInfo.vTPNormal = cdr.vTPNormal;
//Debug.LogError("speed = " + (Vector3.Distance(posStart, EC_Utility.ToVector3(vNewPos)) / fTime));
return vNewPos;
}
+416 -64
View File
@@ -21,6 +21,10 @@ using UnityEngine.SceneManagement;
using UnityEngine.UIElements;
using static BrewMonster.CECPlayer;
using BrewMonster.Network;
using System.Runtime.InteropServices;
using PerfectWorld.Scripts.Managers.BrewMonster.Managers;
using CSNetwork;
using ModelRenderer.Scripts.Common;
namespace BrewMonster
{
@@ -82,7 +86,7 @@ namespace BrewMonster
protected int m_iBoothState = 0; // Booth state. 0, none; 1, prepare; 2, open booth; 3, visite other's booth
public int m_idFRole = GNETRoles._R_UNMEMBER; // ID of player's faction role
protected int m_idCountry = 0; // ¹úÕ½ÕóÓª id
public static int MAX_REINCARNATION = 2;
protected List<int> m_aCurEffects = new List<int>(); // Current effects
@@ -93,6 +97,22 @@ namespace BrewMonster
protected int m_iCurAction;
bool m_bAboutToDie = false;
public bool m_bCandHangerOn = false;
public bool m_bPetInSanctuary = false; // true, the pet pet of the player is in sanctuary
//The ID of the currently summoned pet
int m_idCurPet = 0;
byte m_byPariahLvl = 0; // Pariah level
public RIDINGPET m_RidingPet; // Riding pet information
public GameObject m_pPetModel = null; // Pet model
public RIDINGPET m_CandPet;// ID of candidate pet
A3DVECTOR3 m_vNamePos; // Æï³Ë×´Ì¬Íæ¼ÒÐÕÃûµÄµ÷Õû
// ÒÀ¸½ÀàÐÍ
AttachMode m_AttachMode = AttachMode.enumAttachNone;
// ÒÀ¸½Õß»ò±»ÒÀ¸½Õßid
int m_iBuddyId;
int m_idCandBuddy; // ID of candidate buddy
EC_ManPlayer m_pPlayerMan => EC_ManMessageMono.Instance?.GetECManPlayer; // Player manager
protected Transform playerTransform => transform;
public MOVECONST m_MoveConst; // Const used when moving control
public Move_Mode m_MoveMode;
@@ -137,7 +157,7 @@ namespace BrewMonster
new MOVECONST(0.8f, 1.6f, 0.3f, 1.5f, 0.55f),
};
public A3DVECTOR3[] aExts = new A3DVECTOR3[(int)PROFESSION.NUM_PROFESSION * GENDER.NUM_GENDER]
public A3DVECTOR3[] aExts = new A3DVECTOR3[(int)PROFESSION.NUM_PROFESSION * GENDER.NUM_GENDER]
{
new A3DVECTOR3(0.4f, 0.9f, 0.4f), // ÎäÏÀ
new A3DVECTOR3(0.3f, 0.85f, 0.3f),
@@ -184,7 +204,7 @@ namespace BrewMonster
{
parentModel = transform.GetChild(0);
txtName = GetComponentInChildren<TextMeshProUGUI>();
if(transform.childCount >= 3)
if (transform.childCount >= 3)
{
pointCam = transform.GetChild(2);
}
@@ -462,6 +482,12 @@ namespace BrewMonster
protected override void Update()
{
base.Update();
if (m_CandPet.id != 0 /*&& GetMajorModel()*/)
{
string szPetPath = GetRidingPetFileName(m_CandPet.id);
QueueLoadPetModel(szPetPath, false);
m_CandPet.Reset();
}
}
public void PlayAttackEffect(int idTarget, int idSkill, int skillLevel, int nDamage,
uint dwModifier, int nAttackSpeed, ref int piAttackTime, int nSection = 0)
@@ -747,17 +773,17 @@ namespace BrewMonster
bool result = (false);
/*while (GetPlayerModel() && (GetLeftHandWeapon() || GetRightHandWeapon())){
A3DSkinModel *pSkinModel = GetPlayerModel()->GetA3DSkinModel();
A3DSkinModel *pSkinModel = GetPlayerModel().GetA3DSkinModel();
if (!pSkinModel ||
!pSkinModel->GetSkeleton()){
!pSkinModel.GetSkeleton()){
break;
}
if (!pSkinModel->GetSkeletonHook(GetLeftWeaponHookPos(m_weaponHangerPos),true) ||
!pSkinModel->GetSkeletonHook(GetRightWeaponHookPos(m_weaponHangerPos),true)){
if (!pSkinModel.GetSkeletonHook(GetLeftWeaponHookPos(m_weaponHangerPos),true) ||
!pSkinModel.GetSkeletonHook(GetRightWeaponHookPos(m_weaponHangerPos),true)){
break;
}
if (GetLeftHandWeapon()){
GetPlayerModel()->AddChildModel(
GetPlayerModel().AddChildModel(
_left_hand_weapon,
false,
GetLeftWeaponHookPos(m_weaponHangerPos),
@@ -765,7 +791,7 @@ namespace BrewMonster
GetLeftWeaponOwnHookPos(GetLeftHandWeapon()));
}
if (GetRightHandWeapon()){
GetPlayerModel()->AddChildModel(
GetPlayerModel().AddChildModel(
_right_hand_weapon,
false,
GetRightWeaponHookPos(m_weaponHangerPos),
@@ -1115,9 +1141,9 @@ namespace BrewMonster
else
{
/* if ((*//*UsingWing()*//*m_wingType == enumWingType.WINGTYPE_WING && IsFlying()) || (GetProfession() == PROF_ANGEL) || (GetProfession() == PROF_ARCHOR) || (GetProfession() == PROF_MONK) || (GetProfession() == PROF_GHOST))
sprintf(szAct, "%s_¿ÕÖгá°ò_Ò÷³ª_%s", data->action_prefix, data->action_weapon_suffix[weapon_type].suffix);
sprintf(szAct, "%s_¿ÕÖгá°ò_Ò÷³ª_%s", data.action_prefix, data.action_weapon_suffix[weapon_type].suffix);
else
sprintf(szAct, "%s_¿ÕÖзɽ£_Ò÷³ª_%s", data->action_prefix, data->action_weapon_suffix[weapon_type].suffix);*/
sprintf(szAct, "%s_¿ÕÖзɽ£_Ò÷³ª_%s", data.action_prefix, data.action_weapon_suffix[weapon_type].suffix);*/
}
bool bHideFX = false; /*!CECOptimize::Instance().GetGFX().CanShowCast(GetCharacterID(), GetClassID());*/
@@ -1151,7 +1177,10 @@ namespace BrewMonster
}
public CECSkill GetCurSkill() { return m_pCurSkill; }
public bool IsHangerOn() { return m_bHangerOn; }
public bool IsPlayingAction()
{
return true /*GetLowerBodyAction() != -1*/ ;
}
public bool PlaySkillCastActionWithName(int idSkill, string szActName, bool bNoFX/* =false */)
{
return m_pActionController != null
@@ -1198,18 +1227,18 @@ namespace BrewMonster
return false;
}
// nTime1 = m_pPlayerModel->GetComActTimeSpanByName(szAct); // 获取动作时长 / Get action time span
// pAct = m_pPlayerModel->GetComActByName(szAct);
// if (pAct) bInfinite |= pAct->IsInfinite();
// nTime1 = m_pPlayerModel.GetComActTimeSpanByName(szAct); // 获取动作时长 / Get action time span
// pAct = m_pPlayerModel.GetComActByName(szAct);
// if (pAct) bInfinite |= pAct.IsInfinite();
nTime1 = 1000; // 临时值 / Temporary value
szAct = EC_Utility.BuildActionName(data, weapon_type, "_施放落_");
GetSkillSectionActionName(ref szAct, idSkill, nSection);
QueueSkillAttackActionWithName(idSkill, szAct, 0, bHideFX);
// nTime2 = m_pPlayerModel->GetComActTimeSpanByName(szAct);
// pAct = m_pPlayerModel->GetComActByName(szAct);
// if (pAct) bInfinite |= pAct->IsInfinite();
// nTime2 = m_pPlayerModel.GetComActTimeSpanByName(szAct);
// pAct = m_pPlayerModel.GetComActByName(szAct);
// if (pAct) bInfinite |= pAct.IsInfinite();
nTime2 = 1000; // 临时值 / Temporary value
}
else
@@ -1239,11 +1268,11 @@ namespace BrewMonster
}
// if (pRightHandWeapon && IsUsingMagicWeapon())
// pRightHandWeapon->PlayActionByName(_GenWeaponActionName(szAct, m_iGender), 1.0f, true, 200, true, ACT_CASTSKILL, bHideFX);
// pRightHandWeapon.PlayActionByName(_GenWeaponActionName(szAct, m_iGender), 1.0f, true, 200, true, ACT_CASTSKILL, bHideFX);
// nTime1 = m_pPlayerModel->GetComActTimeSpanByName(szAct);
// pAct = m_pPlayerModel->GetComActByName(szAct);
// if (pAct) bInfinite |= pAct->IsInfinite();
// nTime1 = m_pPlayerModel.GetComActTimeSpanByName(szAct);
// pAct = m_pPlayerModel.GetComActByName(szAct);
// if (pAct) bInfinite |= pAct.IsInfinite();
nTime1 = 1000; // 临时值 / Temporary value
szAct = $"{data.action_prefix}_{szActionMiddleName}_施法行_{data.action_weapon_suffix[weapon_type].suffix}";
@@ -1251,11 +1280,11 @@ namespace BrewMonster
QueueSkillAttackActionWithName(idSkill, szAct, 0, bHideFX);
// if (pRightHandWeapon && IsUsingMagicWeapon())
// pRightHandWeapon->QueueAction(_GenWeaponActionName(szAct, m_iGender), 0, ACT_CASTSKILL, false, false, bHideFX);
// pRightHandWeapon.QueueAction(_GenWeaponActionName(szAct, m_iGender), 0, ACT_CASTSKILL, false, false, bHideFX);
// nTime2 = m_pPlayerModel->GetComActTimeSpanByName(szAct);
// pAct = m_pPlayerModel->GetComActByName(szAct);
// if (pAct) bInfinite |= pAct->IsInfinite();
// nTime2 = m_pPlayerModel.GetComActTimeSpanByName(szAct);
// pAct = m_pPlayerModel.GetComActByName(szAct);
// if (pAct) bInfinite |= pAct.IsInfinite();
nTime2 = 1000; // 临时值 / Temporary value
}
@@ -1268,10 +1297,10 @@ namespace BrewMonster
if (nExecuteTime > 0)
{
float vScale = (nTime1 + nTime2) / (float)nExecuteTime;
// m_pPlayerModel->SetPlaySpeed(vScale * 1.2f);
// m_pPlayerModel.SetPlaySpeed(vScale * 1.2f);
// if (pRightHandWeapon && IsUsingMagicWeapon())
// pRightHandWeapon->SetPlaySpeed(vScale * 1.2f);
// pRightHandWeapon.SetPlaySpeed(vScale * 1.2f);
}
piAttackTime = nTime1 + nTime2;
@@ -1427,12 +1456,12 @@ namespace BrewMonster
// if (m_pModels[i] && (iShapeTypeMask & (1<<i)))
// {
// if (IsCurrentModel(m_pModels[i])){
// m_pModels[i]->PlayGfx(szPath, szHook, fScale);
// m_pModels[i].PlayGfx(szPath, szHook, fScale);
// bPlayed = true;
// }
// if(bSkipRecord) continue;
// A3DGFXEx* pGfx = m_pModels[i]->GetGfx(szPath, szHook);
// if (pGfx && pGfx->IsInfinite()){
// A3DGFXEx* pGfx = m_pModels[i].GetGfx(szPath, szHook);
// if (pGfx && pGfx.IsInfinite()){
// GFXRECORD rec;
// rec.strPath = szPath;
// rec.strHook = szHook;
@@ -1637,13 +1666,336 @@ namespace BrewMonster
{
//if (m_pPlayerModel)
//{
// CECModel* pWing = m_pPlayerModel->GetChildModel(_wing);
// if (pWing) pWing->Show(bShow);
// CECModel* pWing = m_pPlayerModel.GetChildModel(_wing);
// if (pWing) pWing.Show(bShow);
// CECModel* pWing2 = m_pPlayerModel->GetChildModel(_wing2);
// if (pWing2) pWing2->Show(bShow);
// CECModel* pWing2 = m_pPlayerModel.GetChildModel(_wing2);
// if (pWing2) pWing2.Show(bShow);
//}
}
// Get current pet id
public int GetCurPetID() { return m_idCurPet; }
// Set current pet id
public void SetCurPetID(int id) { m_idCurPet = id; }
// Get player name color
public uint GetNameColor()
{
uint dwNameCol = NameColor.NAMECOL_MAUVE;
if (IsInBattle()) // Player is in battle
{
if (m_iBattleCamp == Player_camp_in_battle.GP_BATTLE_CAMP_INVADER)
dwNameCol = NameColor.NAMECOL_BC_RED;
else // (m_iBattleCamp == GP_BATTLE_CAMP_DEFENDER)
dwNameCol = NameColor.NAMECOL_BC_BLUE;
}
else if (IsPariah())
{
switch (m_byPariahLvl)
{
case 0: dwNameCol = NameColor.NAMECOL_RED0; break;
case 1: dwNameCol = NameColor.NAMECOL_RED1; break;
default: dwNameCol = NameColor.NAMECOL_RED2; break;
}
}
else if (IsInvader())
dwNameCol = NameColor.NAMECOL_PINK;
else if (m_pvp.bEnable)
dwNameCol = NameColor.NAMECOL_WHITE;
return dwNameCol;
}
// Riding pet info.
public struct RIDINGPET
{
public int id;
public ushort color;
public void Reset()
{
id = 0;
color = 0;
}
public bool GetColor(ref Color clr)
{
// Get the current pets dye/color
return id > 0 && GetColor(color, ref clr);
}
public static bool GetColor(ushort c, ref Color clr)
{
// Check whether the current pet has been dyed; if so, return the dyed color.
bool bRet = false;
if ((c & (1 << (Marshal.SizeOf(c) * 8 - 1))) != 0)
{
// unsigned short: if the highest bit is 1, it means the pet has been dyed;
// in this case, the dyed color can be retrieved.
clr = new Color(((c) & (0x1f << 10)) >> 7, ((c) & (0x1f << 5)) >> 2, ((c) & 0x1f) << 3);
bRet = true;
}
return bRet;
}
public static Color GetDefaultColor()
{
return new Color(255f / 255f, 255f / 255f, 255f / 255f);
}
};
public bool IsRidingOnPet() { return m_RidingPet.id != 0; }
// Get riding pet info.
public RIDINGPET GetRidingPetInfo() { return m_RidingPet; }
public void RideOnPet(int id, ushort color)
{
m_CandPet.id = id;
m_CandPet.color = color;
m_RidingPet.id = id;
m_RidingPet.color = color;
}
public void GetOffPet(bool bResetData)
{
int iBuddyId = 0;
m_CandPet.Reset();
SetNamePos(new A3DVECTOR3(0.0f));
if (m_AttachMode != AttachMode.enumAttachNone)
{
iBuddyId = m_iBuddyId;
DetachBuddy(null, bResetData);
}
if (m_pPetModel)
{
GameObject.Destroy(m_pPetModel);
m_pPetModel = null;
}
if (bResetData)
m_RidingPet.Reset();
// Re-calculate player's AABB
CalcPlayerAABB();
//SetUseGroundNormal(ShouldUseGroundNormalForCurrentShapeModel());
SetPos(GetPosVector3());
//if (iBuddyId != 0)
// AttachBuddy(iBuddyId);
//else
PlayAction(GetMoveStandAction(false, IsFighting()), true);
}
void SetNamePos(A3DVECTOR3 vPos) { m_vNamePos = vPos; }
// Player Attach mode
public enum AttachMode
{
enumAttachNone,
enumAttachRideOnPet,
enumAttachRideOnPlayer,
enumAttachHugPlayer,
};
void DetachBuddy(CECPlayer pBuddy, bool bResetData)
{
if (m_AttachMode == AttachMode.enumAttachNone)
return;
if (m_bHangerOn)
{
if (!pBuddy) pBuddy = m_pPlayerMan.GetPlayer(m_iBuddyId);
if (pBuddy)
pBuddy.DetachBuddy(this, bResetData);
else
{
if (bResetData)
{
m_AttachMode = AttachMode.enumAttachNone;
m_bHangerOn = false;
m_iBuddyId = 0;
}
}
}
else
{
if (!pBuddy) pBuddy = m_pPlayerMan.GetPlayer(m_iBuddyId);
if (m_AttachMode == AttachMode.enumAttachRideOnPlayer)
{
//if (m_pPlayerModel) m_pPlayerModel.RemoveChildModel(_hanger_ride, false);
}
else if (m_AttachMode == AttachMode.enumAttachHugPlayer)
{
//if (m_pPlayerModel) m_pPlayerModel.RemoveChildModel(_hanger_hug, false);
}
else if (m_AttachMode == AttachMode.enumAttachRideOnPet)
{
if (m_pPetModel)
{
//A3DSkinModelHanger* pHanger = m_pPetModel.GetA3DSkinModel().GetSkinModelHanger(_hanger_ride);
//if (pHanger) pHanger.SetOffsetMat(a3d_IdentityMatrix());
//m_pPetModel.RemoveChildModel(_hanger_ride2, false);
}
}
if (bResetData)
{
m_AttachMode = AttachMode.enumAttachNone;
m_bHangerOn = false;
m_iBuddyId = 0;
}
if (pBuddy)
{
if (bResetData)
{
pBuddy.m_AttachMode = AttachMode.enumAttachNone;
pBuddy.m_bHangerOn = false;
pBuddy.m_iBuddyId = 0;
}
pBuddy.SetPos(pBuddy.GetPosVector3());
pBuddy.SetDirAndUp(pBuddy.transform.forward, pBuddy.transform.up);
pBuddy.PlayAction(GetMoveStandAction(false, IsFighting()), true);
}
PlayAction(GetMoveStandAction(IsPlayingMoveAction(), IsFighting()), true);
}
}
public void SetPos(Vector3 pos)
{
playerTransform.position = pos;
m_aabb.Center = EC_Utility.ToA3DVECTOR3(pos) + new A3DVECTOR3(0.0f, m_aabb.Extents.y, 0.0f);
m_aabb.CompleteMinsMaxs();
m_aabbServer.Center = EC_Utility.ToA3DVECTOR3(pos) + new A3DVECTOR3(0.0f, m_aabbServer.Extents.y, 0.0f);
m_aabbServer.CompleteMinsMaxs();
}
public bool IsPlayingMoveAction()
{
return m_iCurAction == (int)PLAYER_ACTION_TYPE.ACT_STAND;
}
public void OnMsgPlayerMount(ECMSG Msg)
{
cmd_player_mounting pCmd = GPDataTypeHelper.FromBytes<cmd_player_mounting>((byte[])Msg.dwParam1);
if (pCmd.mount_id != 0)
RideOnPet(pCmd.mount_id, pCmd.mount_color);
else
GetOffPet(true);
}
// Build riding pet file name
string GetRidingPetFileName(int idPet)
{
string szDef = "Models/NPCs/宠物/骑宠/骑宠马/骑宠马白.ecm";
DATA_TYPE DataType = new DATA_TYPE();
var pDataPtr = ElementDataManProvider.GetElementDataMan().get_data_ptr((uint)idPet, ID_SPACE.ID_SPACE_ESSENCE, ref DataType);
if (DataType != DATA_TYPE.DT_PET_ESSENCE)
return szDef;
PET_ESSENCE pData = (PET_ESSENCE)pDataPtr;
if (pData.file_model[0] == 0)
return szDef;
return ByteToStringUtils.ByteArrayToUTF8String(pData.file_model);
}
public async void QueueLoadPetModel(string szPetPath, bool bAtOnce)
{
var modelPet = await LoadPetModel(szPetPath);
if (modelPet == null)
{
return;
}
SetPetLoadResult(modelPet);
}
public async Task<GameObject> LoadPetModel(string szPetPath)
{
var pPetModel = CECGameRun.Instance.GetPetMount();
if(pPetModel == null)
{
return null;
}
try
{
var model = await AddressableManager.Instance.LoadPrefabAsync(AFile.NormalizePath(szPetPath.ToLower(), true));
if(model == null)
{
model = GameObject.CreatePrimitive(PrimitiveType.Capsule);
}
var obModel = GameObject.Instantiate(model);
obModel.transform.SetParent(pPetModel.transform);
AddressableManager.Instance.ReleaseAsset(szPetPath);
}
catch
{
var model = GameObject.CreatePrimitive(PrimitiveType.Capsule);
var obModel = GameObject.Instantiate(model);
obModel.transform.SetParent(pPetModel.transform);
AddressableManager.Instance.ReleaseAsset(szPetPath);
//return null;
}
return pPetModel;
}
bool SetPetLoadResult(GameObject pPetModel)
{
if (m_RidingPet.id == 0 /*|| !GetMajorModel() || m_CandPet.id != 0*/ || !pPetModel)
return false;
if (m_pPetModel)
{
RIDINGPET pet = m_RidingPet;
GetOffPet(true);
m_RidingPet = pet;
}
A3DVECTOR3 vCurPos = GetPos();
m_aabbServer.Center = vCurPos + new A3DVECTOR3(0.0f, m_aabbServer.Extents.y, 0.0f);
m_aabbServer.CompleteMinsMaxs();
m_pPetModel = pPetModel;
// ½«³èÎïÑÕÉ«ÉèÖõ½Ä£ÐÍÉÏ
//SetRidingPetColor(m_RidingPet.color);
SetUseGroundNormal(true);
//m_pPetModel.SetAffectedByParent(false);
m_pPetModel.transform.position = EC_Utility.ToVector3(vCurPos);
//m_pPetModel.SetDirAndUp(GetDir(), GetUp());
//int iIndex;
//A3DSkeletonHook* pHook = GetMajorModel().GetA3DSkinModel().GetSkeleton().GetHook(_cc_ride, &iIndex);
//if (pHook) pHook.SetFixDirFlag(true);
int iBuddyId = m_iBuddyId;
if (m_AttachMode != AttachMode.enumAttachNone)
DetachBuddy(null, true);
m_pPetModel.transform.SetParent(transform);
//m_pPetModel.AddChildModel(_hanger_ride, false, _hh_ride, GetMajorModel(), _cc_ride);
//m_pPetModel.GetA3DSkinModel().Update(0);
//if (iBuddyId != 0)
// AttachBuddy(iBuddyId);
//else
PlayAction(GetMoveStandAction(false, IsFighting()), true);
return true;
}
}
public struct PlayActionEvent
@@ -1927,38 +2279,38 @@ namespace BrewMonster
/// Place holder for riding pet. Not test logic yet.
/// </summary>
public struct RIDINGPET
{
public int id;
public ushort color;
{
public int id;
public ushort color;
public RIDINGPET(bool isReset = true)
{
id = 0;
public RIDINGPET(bool isReset = true)
{
id = 0;
color = 0;
}
}
public bool GetColor(Color clr)
{
// ȡǰȾɫɫ
return id>0 && GetColor(color, clr);
}
public bool GetColor(Color clr)
{
// ȡǰȾɫɫ
return id > 0 && GetColor(color, clr);
}
public static bool GetColor(ushort c, Color clr)
{
// ѯǰǷȾɫȾɫرȾ֮ɫ
bool bRet = false;
if ((c & (1<<(8-1))) != 0)
{
// unsigned short λΪ1ʱʾȾɫʱɻȡɫ
clr = new Color(((c) & (0x1f << 10)) >> 7, ((c) & (0x1f << 5)) >> 2, ((c) & 0x1f) << 3);
bRet = true;
}
return bRet;
}
public static bool GetColor(ushort c, Color clr)
{
// ѯǰǷȾɫȾɫرȾ֮ɫ
bool bRet = false;
if ((c & (1 << (8 - 1))) != 0)
{
// unsigned short λΪ1ʱʾȾɫʱɻȡɫ
clr = new Color(((c) & (0x1f << 10)) >> 7, ((c) & (0x1f << 5)) >> 2, ((c) & 0x1f) << 3);
bRet = true;
}
return bRet;
}
public static Color GetDefaultColor()
{
return new Color(255, 255, 255);
}
};
public static Color GetDefaultColor()
{
return new Color(255, 255, 255);
}
};
}
+452 -132
View File
@@ -123,7 +123,6 @@ namespace BrewMonster
if ((pEnvTrc.dwCheckFlag & CDR_EVN.CDR_BRUSH) == CDR_EVN.CDR_BRUSH)
{
dir = vDelta;
float num = 10f;
Vector3[] arrVExt = new Vector3[5] {
vExt
@@ -132,12 +131,13 @@ namespace BrewMonster
new Vector3(vExt.x, vExt.y, vExt.z / num),
vExt / num
};
for(int i = 0; i < arrVExt.Length; i++)
dir = vDelta;
for (int i = 0; i < arrVExt.Length; i++)
{
countHits = Physics.BoxCastNonAlloc(vStart, vExt, dir.normalized, hits, Quaternion.identity, vDelta.magnitude, BrushMask);
countHits = Physics.BoxCastNonAlloc(vStart, arrVExt[i], dir.normalized, hits, Quaternion.identity, vDelta.magnitude, BrushMask);
if (countHits > 0 && hits[0].distance > 0.0009f)
{
pEnvTrc.fFraction = (hits[0].distance - vExt.x) / vDelta.magnitude;
pEnvTrc.fFraction = (hits[0].distance) / vDelta.magnitude;
pEnvTrc.vHitNormal = EC_Utility.ToA3DVECTOR3(hits[0].normal);
pEnvTrc.dwClsFlag = CDR_EVN.CDR_BRUSH;
break;
@@ -155,14 +155,15 @@ namespace BrewMonster
{
vTerStart.y = fHitsTerrain[0].point.y;
}
fHitsTerrain = new RaycastHit[5];
countHits = Physics.RaycastNonAlloc(vTerStart, dir.normalized, fHitsTerrain, vDelta.magnitude, TerrainMask);
if (countHits > 0 && Vector3.Distance(fHitsTerrain[0].point, vTerStart) > 0.0009f)
if ((countHits > 0 && Vector3.Distance(vTerStart, fHitsTerrain[0].point) > 0.0009f))
{
fFractionTerrain = (hits[0].distance) / vDelta.magnitude;
pEnvTrc.vHitNormal = EC_Utility.ToA3DVECTOR3(hits[0].normal);
fFractionTerrain = (fHitsTerrain[0].distance) / vDelta.magnitude;
pEnvTrc.vHitNormal = EC_Utility.ToA3DVECTOR3(fHitsTerrain[0].normal);
pEnvTrc.dwClsFlag = CDR_EVN.CDR_TERRAIN;
}
if (fFractionTerrain < pEnvTrc.fFraction)
if (fFractionTerrain >= (1.0f + 1E-4f) && fFractionTerrain < pEnvTrc.fFraction)
{
hits = fHitsTerrain;
pEnvTrc.fFraction = fFractionTerrain;
@@ -255,209 +256,525 @@ namespace BrewMonster
}
// ======= STATIC OnGroundMove GIỮ NGUYÊN VAI TRÒ TOÀN CỤC (C API) =======
//public static void OnGroundMove(ref CDR_INFO CDRInfo)
//{
// CDRInfo.fMoveDist = 0.0f;
// bool bFreeFall = (CDRInfo.vTPNormal.y < CDRInfo.fSlopeThresh);
// if (CDRInfo.fYVel < VEL_EPSILON && CDRInfo.fYVel > -VEL_EPSILON && CDRInfo.fSpeed < VEL_EPSILON && CDRInfo.fSpeed > -VEL_EPSILON && !bFreeFall)
// return;
// float fYVel = CDRInfo.fYVel;
// bool bJump = (fYVel > 0.5f);
// Vector3 vVelocity = CDRInfo.fSpeed * EC_Utility.ToVector3(CDRInfo.vXOZVelDir) + fYVel * Vector3.up;
// if (bFreeFall)
// {
// vVelocity += -CDRInfo.fGravityAccel * CDRInfo.t * Vector3.up;
// fYVel += -CDRInfo.fGravityAccel * CDRInfo.t;
// }
// A3DVECTOR3 vVelDir = EC_Utility.ToA3DVECTOR3(vVelocity);
// float fVelSpeed = vVelDir.Normalize();
// if (!bFreeFall)
// {
// if (fVelSpeed > VEL_MAX_SPEED)
// {
// fVelSpeed = VEL_MAX_SPEED;
// }
// }
// vVelocity = EC_Utility.ToVector3(vVelDir) * fVelSpeed;
// float dtp = DotProduct(vVelDir, CDRInfo.vTPNormal);
// if (dtp < 0f || !bJump)
// {
// vVelocity = EC_Utility.ToVector3((vVelDir -(CDRInfo.vTPNormal) * dtp - (CDRInfo.vTPNormal) * dtp * 0.01f) * fVelSpeed);
// }
// CDRInfo.vAbsVelocity = EC_Utility.ToA3DVECTOR3(vVelocity);
// Vector3 vStart = EC_Utility.ToVector3(CDRInfo.vCenter);
// Vector3 vExt = EC_Utility.ToVector3(CDRInfo.vExtent);
// float fTime = CDRInfo.t;
// Vector3 vDelta, vNormal = Vector3.zero, vFinalPos = vStart;
// bool bPull = false;
// bool bTryPull = false;
// int nTry = 0;
// LayerMask mask = UsedMask_Ground() | BrushMask;
// env_trace_t trcInfo = new env_trace_t();
// trcInfo.dwCheckFlag = CDR_EVN.CDR_TERRAIN | CDR_EVN.CDR_BRUSH;
// trcInfo.vExt = CDRInfo.vExtent;
// int countHits = 0;
// while (nTry < 1)
// {
// vDelta = vVelocity * (fTime);
// float fDeltaDist = vDelta.magnitude;
// Vector3 posFoot = vStart - Vector3.up * vExt.y;
// vFinalPos = vStart;
// if (fDeltaDist < DIST_EPSILON) break;
// countHits = Physics.RaycastNonAlloc(vStart, (Vector3.down * vExt.y).normalized, hits, vExt.y, mask);
// if (countHits > 0)
// {
// if (hits[0].point.y >= posFoot.y)
// {
// posFoot.y = hits[0].point.y;
// }
// }
// //Debug.LogError("fDeltaDist = " + fDeltaDist + " vVelocity = " + vVelocity + " fTime = " + fTime + " speed = " + (fDeltaDist / fTime) + " posFoot + vDelta = " + (posFoot + vDelta) + " posFoot = " + posFoot);
// countHits = Physics.RaycastNonAlloc(posFoot, (posFoot + vDelta).normalized, hits, fDeltaDist, mask);
// bool bClear = !(countHits > 0);
// nTry++;
// if (bClear || (countHits > 0 && Vector3.Distance(hits[0].point, posFoot) < 0.0009f)) // Is 0.0009f the tolerance used to check if two points are the same?
// {
// vFinalPos = vStart + vDelta;
// CDRInfo.fMoveDist += fDeltaDist;
// break;
// }
// vStart = hits[0].point + Vector3.up * vExt.y;
// vFinalPos = vStart;
// countHits = Physics.RaycastNonAlloc(vStart, (Vector3.down).normalized, hits, vExt.y, mask);
// if (countHits > 0)
// {
// vNormal = hits[0].normal;
// }
// else
// {
// vNormal = Vector3.zero;
// }
// // Step-up (giữ tinh thần bản gốc)
// if (!bFreeFall && !bTryPull && !bJump)
// {
// posFoot = vStart - Vector3.up * vExt.y;
// countHits = Physics.RaycastNonAlloc(vStart, (vStart + Vector3.down).normalized, hits, vExt.y, mask);
// if (countHits > 0)
// {
// if (hits[0].point.y > posFoot.y)
// {
// posFoot.y = hits[0].point.y;
// }
// }
// countHits = Physics.RaycastNonAlloc(posFoot, (Vector3.up).normalized, hits, CDRInfo.fStepHeight, mask);
// bPull = !(countHits > 0);
// if (bPull)
// {
// vStart += Vector3.up * CDRInfo.fStepHeight;
// posFoot = vStart - Vector3.up * vExt.y;
// fDeltaDist = (vVelocity.normalized).magnitude;
// countHits = Physics.RaycastNonAlloc(posFoot, (posFoot + vVelocity).normalized, hits, fDeltaDist, mask);
// bool bMove = !(countHits > 0);
// if (!bMove)
// {
// fDeltaDist *= Vector3.Distance(vFinalPos, (hits[0].point + Vector3.up * vExt.y)) / fDeltaDist;
// vFinalPos = hits[0].point + Vector3.up * vExt.y;
// }
// else
// {
// vFinalPos += vDelta;
// }
// if (fDeltaDist < (vExt.x * vExt.x * 4))
// {
// vFinalPos.y -= CDRInfo.fStepHeight;
// bPull = false;
// }
// }
// bTryPull = true;
// }
// if (!bPull)
// {
// fVelSpeed = Normalize(EC_Utility.ToA3DVECTOR3(vVelocity), ref vVelDir);
// fVelSpeed *= (1 - nTry * 0.1f);
// dtp = Vector3.Dot(vNormal, EC_Utility.ToVector3(vVelDir));
// float fRelSpeed = Mathf.Min(fVelSpeed, 5.0f);
// if (dtp >= 0f && dtp < 1e-4f)
// {
// vVelocity += vNormal * VEL_REFLECT * fRelSpeed;
// }
// else
// {
// vVelocity = (EC_Utility.ToVector3(vVelDir) - vNormal * dtp) * fVelSpeed - vNormal * dtp * VEL_REFLECT * fRelSpeed;
// }
// if (fYVel > VEL_EPSILON)
// {
// if (vNormal.y >= CDRInfo.fSlopeThresh || vNormal.y < -NORMAL_EPSILON)
// {
// fYVel = 0f;
// }
// }
// else if (fYVel < -VEL_EPSILON)
// {
// if (vNormal.y >= CDRInfo.fSlopeThresh)
// {
// fYVel = 0f;
// }
// }
// }
// }
// // “vertical ground trace” thay RetrieveSupportPlane
// Vector3 vTPNormal = Vector3.zero;
// Vector3 vFinal = vFinalPos;
// //mask = BrushMask;
// float downDist = 0.3f;
// if (bPull) downDist = CDRInfo.fStepHeight + 0.1f;
// if (bJump) downDist = 0.0f;
// if (downDist > 0f)
// {
// if (!DoGroundProbe(vFinalPos, vExt, downDist, mask, out Vector3 vEnd, out Vector3 groundNormal, out bool bSupport))
// {
// CDRInfo.fMoveDist = 0f;
// CDRInfo.vTPNormal = new A3DVECTOR3(0, 1, 0);
// return;
// }
// if (bSupport)
// {
// vFinal = vEnd;
// if (!bJump)
// {
// vTPNormal = groundNormal;
// }
// }
// }
// if ((vTPNormal.y >= CDRInfo.fSlopeThresh && fYVel < 0.0f) || (!bJump && fYVel > 0.0f))
// {
// fYVel = 0.0f;
// }
// vDelta = vFinalPos - EC_Utility.ToVector3(CDRInfo.vCenter);
// CDRInfo.fMoveDist = vDelta.magnitude;
// CDRInfo.vCenter = EC_Utility.ToA3DVECTOR3(vFinal);
// CDRInfo.fYVel = fYVel;
// CDRInfo.vTPNormal = EC_Utility.ToA3DVECTOR3(vTPNormal);
//}
public static void OnGroundMove(ref CDR_INFO CDRInfo)
{
float VEL_EPSILON = 1E-4f;
float DIST_EPSILON = 1e-4f;
float NORMAL_EPSILON = 1e-2f;
float MAX_TRY = 1;
float VEL_MAX_SPEED = 200.0f;
float VEL_REFLECT = 0.3f;
CDRInfo.fMoveDist = 0.0f;
CDRInfo.fMoveDist = 0.0f; //clear the moving dist
bool bFreeFall = (CDRInfo.vTPNormal.y < CDRInfo.fSlopeThresh);
if (CDRInfo.fYVel < VEL_EPSILON && CDRInfo.fYVel > -VEL_EPSILON && CDRInfo.fSpeed < VEL_EPSILON && CDRInfo.fSpeed > -VEL_EPSILON && !bFreeFall)
{
return;
}
float fYVel = CDRInfo.fYVel;
float fYVel = CDRInfo.fYVel; //save the y velocity;
//@todo : refine the speed to determine the jumping state. By Kuiwu[14/9/2005]
bool bJump = (fYVel > 0.5f);
//bool bJump = (fYVel > CDRInfo.fGravityAccel * 0.1f);
A3DVECTOR3 vVelocity = new A3DVECTOR3(CDRInfo.fSpeed* CDRInfo.vXOZVelDir +fYVel * GPDataTypeHelper.g_vAxisY );
Vector3 vVelocity = CDRInfo.fSpeed * EC_Utility.ToVector3(CDRInfo.vXOZVelDir) + fYVel * Vector3.up;
if (bFreeFall)
{
vVelocity += -CDRInfo.fGravityAccel * CDRInfo.t * Vector3.up;
fYVel += -CDRInfo.fGravityAccel * CDRInfo.t;
vVelocity -= (CDRInfo.fGravityAccel * CDRInfo.t * GPDataTypeHelper.g_vAxisY);
fYVel -= CDRInfo.fGravityAccel * CDRInfo.t;
}
A3DVECTOR3 vVelDir = EC_Utility.ToA3DVECTOR3(vVelocity);
A3DVECTOR3 vVelDir = (vVelocity);
float fVelSpeed = vVelDir.Normalize();
if (!bFreeFall)
{
if (fVelSpeed > VEL_MAX_SPEED)
{
fVelSpeed = VEL_MAX_SPEED;
}
AAssist.a_ClampRoof(ref fVelSpeed, VEL_MAX_SPEED);
}
vVelocity = EC_Utility.ToVector3(vVelDir) * fVelSpeed;
vVelocity = vVelDir * fVelSpeed;
//@note : clip the velocity or dir? By Kuiwu[8/9/2005]
float dtp = DotProduct(vVelDir, CDRInfo.vTPNormal);
if (dtp < 0f || !bJump)
if (dtp < 0.0f || !bJump)
{
vVelocity = EC_Utility.ToVector3((vVelDir -(CDRInfo.vTPNormal) * dtp - (CDRInfo.vTPNormal) * dtp * 0.01f) * fVelSpeed);
vVelocity = (vVelDir - CDRInfo.vTPNormal * dtp - CDRInfo.vTPNormal * dtp * 0.01f) * fVelSpeed;
//a_LogOutput(1, "dtp < 0.0f || !bJump vVelocity = (%f, %f, %f) || CDRInfo.vTPNormal = (%f, %f, %f)", vVelocity.x, vVelocity.y, vVelocity.z, CDRInfo.vTPNormal.x, CDRInfo.vTPNormal.y, CDRInfo.vTPNormal.z);
}
CDRInfo.vAbsVelocity = EC_Utility.ToA3DVECTOR3(vVelocity);
CDRInfo.vAbsVelocity = vVelocity;
Vector3 vStart = EC_Utility.ToVector3(CDRInfo.vCenter);
Vector3 vExt = EC_Utility.ToVector3(CDRInfo.vExtent);
A3DVECTOR3 vStart = (CDRInfo.vCenter);
A3DVECTOR3 vExt = (CDRInfo.vExtent);
float fTime = CDRInfo.t;
Vector3 vDelta, vNormal = Vector3.zero, vFinalPos = vStart;
//A3DVECTOR3 vDelta(vVelocity * fTime);
A3DVECTOR3 vDelta;
bool bClear = true;
int nTry = 0;
env_trace_t trcInfo = new env_trace_t();
trcInfo.dwCheckFlag = CDR_EVN.CDR_TERRAIN | CDR_EVN.CDR_BRUSH;
trcInfo.vExt = vExt;
//A3DVECTOR3 vNormal, vFinalPos(vStart);
A3DVECTOR3 vNormal, vFinalPos = new A3DVECTOR3();
bool bPull = false;
bool bTryPull = false;
int nTry = 0;
LayerMask mask = UsedMask_Ground();
env_trace_t trcInfo = new env_trace_t();
trcInfo.dwCheckFlag = CDR_EVN.CDR_TERRAIN | CDR_EVN.CDR_BRUSH;
trcInfo.vExt = CDRInfo.vExtent;
int countHits = 0;
while (nTry < 1)
while (nTry < MAX_TRY)
{
vDelta = vVelocity * (fTime);
float fDeltaDist = vDelta.magnitude;
Vector3 posFoot = vStart - Vector3.up * vExt.y;
vDelta = vVelocity * fTime;
vFinalPos = vStart;
if (fDeltaDist < DIST_EPSILON) break;
countHits = Physics.RaycastNonAlloc(vStart, (Vector3.down * vExt.y).normalized, hits, vExt.y, mask);
if (countHits > 0)
float fDeltaDist = vDelta.Magnitude();
//a_LogOutput(1, "fDeltaDist = %f || vVelocity = (%f, %f, %f) || fTime = %f", fDeltaDist, vVelocity.x, vVelocity.y, vVelocity.z, fTime);
//if (vDelta.SquaredMagnitude() < DIST_EPSILON )
if (fDeltaDist < DIST_EPSILON)
{
if (hits[0].point.y >= posFoot.y)
{
posFoot.y = hits[0].point.y;
}
}
//Debug.LogError("fDeltaDist = " + fDeltaDist + " vVelocity = " + vVelocity + " fTime = " + fTime + " speed = " + (fDeltaDist / fTime) + " posFoot + vDelta = " + (posFoot + vDelta) + " posFoot = " + posFoot);
countHits = Physics.RaycastNonAlloc(posFoot, (posFoot + vDelta).normalized, hits, fDeltaDist, mask);
bool bClear = !(countHits > 0);
nTry++;
if (bClear || (countHits > 0 && Vector3.Distance(hits[0].point, posFoot) < 0.0009f)) // Is 0.0009f the tolerance used to check if two points are the same?
{
vFinalPos = vStart + vDelta;
CDRInfo.fMoveDist += fDeltaDist;
break;
}
vStart = hits[0].point + Vector3.up * vExt.y;
trcInfo.vStart = vStart;
trcInfo.vDelta = vDelta;
trcInfo.vTerStart = vStart;
trcInfo.vTerStart.y -= vExt.y; //foot
vFinalPos = vStart;
countHits = Physics.RaycastNonAlloc(vStart, (Vector3.down).normalized, hits, vExt.y, mask);
if (countHits > 0)
bClear = !CollideWithEnv(ref trcInfo);
++nTry;
if (trcInfo.bStartSolid)
{
vNormal = hits[0].normal;
CDRInfo.fMoveDist = 0.0f;
if (CDRInfo.vTPNormal.y < CDRInfo.fSlopeThresh)
{
CDRInfo.vTPNormal = new A3DVECTOR3(0.0f, 1.0f, 0.0f);
}
//a_LogOutput(1, "bClear = true but trcInfo.bStartSolid = true");
return;
}
else
if (bClear)
{
vNormal = Vector3.zero;
//a_LogOutput(1, "bClear = true");
vFinalPos = vStart + vDelta;
break;
}
// Step-up (giữ tinh thần bản gốc)
vStart += vDelta * trcInfo.fFraction;
fTime -= fTime * trcInfo.fFraction;
vNormal = trcInfo.vHitNormal;
if (!bFreeFall && !bTryPull && !bJump)
{
posFoot = vStart - Vector3.up * vExt.y;
countHits = Physics.RaycastNonAlloc(vStart, (vStart + Vector3.down).normalized, hits, vExt.y, mask);
if (countHits > 0)
{
if (hits[0].point.y > posFoot.y)
{
posFoot.y = hits[0].point.y;
}
}
countHits = Physics.RaycastNonAlloc(posFoot, (Vector3.up).normalized, hits, CDRInfo.fStepHeight, mask);
bPull = !(countHits > 0);
env_trace_t tmpInfo = new env_trace_t();
tmpInfo.vStart = vStart;
tmpInfo.vDelta = new A3DVECTOR3(0.0f, CDRInfo.fStepHeight, 0.0f);
tmpInfo.vExt = vExt;
//@note : need check terrain?? By Kuiwu[8/10/2005]
tmpInfo.dwCheckFlag = CDR_EVN.CDR_BRUSH | CDR_EVN.CDR_TERRAIN;
tmpInfo.vTerStart = vStart;
tmpInfo.vTerStart.y -= vExt.y;
bPull = !CollideWithEnv(ref tmpInfo);
if (bPull)
{
vStart += Vector3.up * CDRInfo.fStepHeight;
posFoot = vStart - Vector3.up * vExt.y;
fDeltaDist = (vVelocity.normalized).magnitude;
countHits = Physics.RaycastNonAlloc(posFoot, (posFoot + vVelocity).normalized, hits, fDeltaDist, mask);
bool bMove = !(countHits > 0);
vStart.y += CDRInfo.fStepHeight;
//vDelta = vVelocity * fTime;
vDelta = vVelocity;
tmpInfo.vStart = vStart;
tmpInfo.vDelta = vDelta;
tmpInfo.vTerStart = vStart;
tmpInfo.vTerStart.y -= vExt.y;
bool bMove = !CollideWithEnv(ref tmpInfo);
if (!bMove)
{
fDeltaDist *= Vector3.Distance(vFinalPos, (hits[0].point + Vector3.up * vExt.y)) / fDeltaDist;
vFinalPos = hits[0].point + Vector3.up * vExt.y;
vDelta *= tmpInfo.fFraction;
}
else
if (vDelta.SquaredMagnitude() < vExt.x * vExt.x * 4)
{
vFinalPos += vDelta;
}
if (fDeltaDist < (vExt.x * vExt.x * 4))
{
vFinalPos.y -= CDRInfo.fStepHeight;
vStart.y -= CDRInfo.fStepHeight;
bPull = false;
}
}
bTryPull = true;
}
if (!bPull)
{
fVelSpeed = Normalize(EC_Utility.ToA3DVECTOR3(vVelocity), ref vVelDir);
fVelSpeed = Normalize(vVelocity, ref vVelDir);
fVelSpeed *= (1 - nTry * 0.1f);
dtp = Vector3.Dot(vNormal, EC_Utility.ToVector3(vVelDir));
float fRelSpeed = Mathf.Min(fVelSpeed, 5.0f);
dtp = DotProduct(vNormal, vVelDir);
float fRelSpeed = EC_Utility.a_Min(fVelSpeed, 5.0f);
if (dtp >= 0f && dtp < 1e-4f)
{
if ((dtp < 1E-4f) && (dtp >= 0.0f))
{//@note : special parallel tangent plane case, rarely happen. By Kuiwu[20/10/2005]
vVelocity += vNormal * VEL_REFLECT * fRelSpeed;
}
else
{
vVelocity = (EC_Utility.ToVector3(vVelDir) - vNormal * dtp) * fVelSpeed - vNormal * dtp * VEL_REFLECT * fRelSpeed;
vVelocity = (vVelDir - vNormal * dtp) * fVelSpeed - vNormal * dtp * VEL_REFLECT * fRelSpeed;
//vVelocity = (vVelDir - vNormal * dtp - vNormal*dtp * VEL_REFLECT) * fVelSpeed;
}
//CDRInfo.fYVel = vVelocity.y;
if (fYVel > VEL_EPSILON)
{
if (vNormal.y >= CDRInfo.fSlopeThresh || vNormal.y < -NORMAL_EPSILON)
if ((vNormal.y >= CDRInfo.fSlopeThresh || vNormal.y < -NORMAL_EPSILON))
{
fYVel = 0f;
fYVel = 0.0f;
}
}
else if (fYVel < -VEL_EPSILON)
{
if (vNormal.y >= CDRInfo.fSlopeThresh)
if ((vNormal.y >= CDRInfo.fSlopeThresh))
{
fYVel = 0f;
fYVel = 0.0f;
}
}
}
}
// “vertical ground trace” thay RetrieveSupportPlane
Vector3 vTPNormal = Vector3.zero;
Vector3 vFinal = vFinalPos;
//mask = BrushMask;
float downDist = 0.3f;
if (bPull) downDist = CDRInfo.fStepHeight + 0.1f;
if (bJump) downDist = 0.0f;
if (downDist > 0f)
{
if (!DoGroundProbe(vFinalPos, vExt, downDist, mask, out Vector3 vEnd, out Vector3 groundNormal, out bool bSupport))
{
CDRInfo.fMoveDist = 0f;
CDRInfo.vTPNormal = new A3DVECTOR3(0, 1, 0);
return;
}
if (bSupport)
{
vFinal = vEnd;
if (!bJump)
else
{
vTPNormal = groundNormal;
//@note : additional handle something??? By Kuiwu[13/9/2005]
}
}
}
if ((vTPNormal.y >= CDRInfo.fSlopeThresh && fYVel < 0.0f) || (!bJump && fYVel > 0.0f))
////@note : prevent moving to the invalid area. By Kuiwu[20/9/2005]
//if (!IsPosInAvailableMap(vFinalPos))
//{
// CDRInfo.fMoveDist = 0.0f;
// return;
//}
A3DVECTOR3 vTPNormal = new A3DVECTOR3();
vTPNormal.Clear();
ground_trace_t groundTrc = new ground_trace_t();
groundTrc.vStart = vFinalPos;
groundTrc.vExt = vExt;
groundTrc.fDeltaY = 0.3f;
if (bPull)
{
groundTrc.fDeltaY = CDRInfo.fStepHeight + 0.1f;
}
if (bJump)
{
groundTrc.fDeltaY = 0.0f;
}
if (!RetrieveSupportPlane(ref groundTrc))
{//@note : do NOT change position. By Kuiwu[14/9/2005]
CDRInfo.fMoveDist = 0.0f;
// if (groundTrc.bSupport)
// {
// CDRInfo.vTPNormal = groundTrc.vHitNormal;
// }
CDRInfo.vTPNormal = new A3DVECTOR3(0.0f, 1.0f, 0.0f);
return;
}
if (groundTrc.bSupport)
{
vFinalPos = groundTrc.vEnd;
if (!bJump)
{
vTPNormal = groundTrc.vHitNormal;
}
}
if ((vTPNormal.y >= CDRInfo.fSlopeThresh && fYVel < 0.0f)
|| (!bJump && fYVel > 0.0f))
{
fYVel = 0.0f;
}
vDelta = vFinalPos - EC_Utility.ToVector3(CDRInfo.vCenter);
CDRInfo.fMoveDist = vDelta.magnitude;
CDRInfo.vCenter = vFinalPos;
CDRInfo.fYVel = fYVel; //set back the y velocity
CDRInfo.vTPNormal = vTPNormal;
}
CDRInfo.vCenter = EC_Utility.ToA3DVECTOR3(vFinal);
CDRInfo.fYVel = fYVel;
CDRInfo.vTPNormal = EC_Utility.ToA3DVECTOR3(vTPNormal);
//@desc : used to retrieve support plane (ground or brush), By Kuiwu[12/9/2005]
public struct ground_trace_t
{
public A3DVECTOR3 vStart;
public A3DVECTOR3 vExt;
public float fDeltaY; //down (-y)
public A3DVECTOR3 vEnd;
public A3DVECTOR3 vHitNormal;
public bool bSupport; //false if ground missed
};
public static bool RetrieveSupportPlane(ref ground_trace_t pTrc)
{
A3DVECTOR3 vTerrainPos = new A3DVECTOR3(), vTerrainNormal = new A3DVECTOR3();
GetTerrainInfo(pTrc.vStart, ref vTerrainPos, ref vTerrainNormal);
pTrc.bSupport = false;
// pTrc.vEnd = pTrc.vStart;
// pTrc.vEnd.y -= pTrc.fDeltaY;
BrushTraceInfo trcInfo = new BrushTraceInfo();
trcInfo.Init(pTrc.vStart, new A3DVECTOR3(0.0f, -pTrc.fDeltaY, 0.0f), pTrc.vExt);
if (AABBCollideWithBrush(ref trcInfo))
{
// if (trcInfo.bStartSolid && (!RescueFromSolid(&trcInfo)))
// {
// pTrc.bSupport = true;
// pTrc.vHitNormal = vTerrainNormal;
// pTrc.vEnd = pTrc.vStart;
// return false;
// }
if (trcInfo.bStartSolid)
{
return false;
}
pTrc.vEnd = trcInfo.vStart + trcInfo.vDelta * trcInfo.fFraction;
pTrc.vEnd.y += 0.2f;
pTrc.vHitNormal = trcInfo.normal;
float fUp = pTrc.vExt.y;
if (pTrc.vEnd.y > vTerrainPos.y + fUp)
{
pTrc.vStart = trcInfo.vStart;
pTrc.bSupport = true;
return true;
}
}
//if (vTerrainPos.y > pTrc.vStart.y- pTrc.vExt.y )
if (vTerrainPos.y > pTrc.vStart.y - pTrc.vExt.y || (vTerrainPos.y <= pTrc.vStart.y - pTrc.vExt.y && vTerrainPos.y >= pTrc.vStart.y - pTrc.vExt.y - pTrc.fDeltaY))
{
pTrc.vEnd = vTerrainPos;
//@note : maybe sink in the sleep ground, but this is what I need. By Kuiwu[14/9/2005]
pTrc.vEnd.y += (pTrc.vExt.y + 0.01f);
A3DVECTOR3 vDelta = new A3DVECTOR3(pTrc.vEnd -pTrc.vStart);
trcInfo.Init(pTrc.vStart, vDelta, pTrc.vExt);
pTrc.vHitNormal = vTerrainNormal;
pTrc.bSupport = true;
return !AABBCollideWithBrush(ref trcInfo);
}
return true;
}
public static void GetTerrainInfo(A3DVECTOR3 vPos, ref A3DVECTOR3 vPosOnSurface, ref A3DVECTOR3 vNormal)
{
vPosOnSurface = vPos;
int countHits = 0;
countHits = Physics.RaycastNonAlloc(EC_Utility.ToVector3(vPosOnSurface), Vector3.down, fHitsTerrain, 1000f, TerrainMask);
if (countHits > 0)
{
vPosOnSurface.y = fHitsTerrain[0].point.y;
vNormal = EC_Utility.ToA3DVECTOR3(fHitsTerrain[0].normal);
}
}
// Get normalize
@@ -659,6 +976,7 @@ namespace BrewMonster
Vector3 dir = vDelta;
int countHits = 0;
float num = 10f;
//Quaternion quaternion = EC_Game.GetGameRun().GetWorld().GetPlayerMan().GetHostPlayer().transform.rotation;
Vector3[] arrVExt = new Vector3[5] {
vExt
,new Vector3(vExt.x / num, vExt.y, vExt.z),
@@ -668,16 +986,18 @@ namespace BrewMonster
};
for (int i = 0; i < arrVExt.Length; i++)
{
countHits = Physics.BoxCastNonAlloc(vStart, vExt, dir.normalized, hits, Quaternion.identity, vDelta.magnitude, BrushMask);
countHits = Physics.BoxCastNonAlloc(vStart, arrVExt[i], dir.normalized, hits, Quaternion.identity, vDelta.magnitude, BrushMask);
if (countHits > 0)
{
if(hits[0].distance > 0.0009f)
{
brushTraceInfo.fFraction = (hits[0].distance - vExt.x) / vDelta.magnitude;
brushTraceInfo.fFraction = (hits[0].distance) / vDelta.magnitude;
brushTraceInfo.normal = EC_Utility.ToA3DVECTOR3(hits[0].normal);
return true;
}
}
}
brushTraceInfo.normal = new A3DVECTOR3(0f);
brushTraceInfo.fFraction = 100f;
return false;
}
+34 -10
View File
@@ -57,6 +57,14 @@ public class CECNPC : CECObject
public string ROLEBASICPROP => m_strName;*/
protected virtual void Awake()
{
m_DisappearCnt = new CECCounter();
m_IdleCnt = new CECCounter();
m_TransCnt = new CECCounter();
m_aWorks = new int[4];
}
public virtual void SetUpCECNPC(CECNPCMan pNPCMan)
{
base.SetUpCECObject();
@@ -571,7 +579,7 @@ public class CECNPC : CECObject
{
Destroy(gameObject);
}
float GetTransparentLimit()
public float GetTransparentLimit()
{
if ((m_dwStates & (uint)PlayerNPCState.GP_STATE_INVISIBLE) != 0)
{
@@ -939,10 +947,18 @@ public class CECNPC : CECObject
{
return;
}
var model = await NPCBuilder.Instance.GetModelByPath(AFile.NormalizePath(szModelFile.ToLower(), true));
if (model == null)
GameObject model = null;
try
{
model = await NPCBuilder.Instance.GetModelByPath(AFile.NormalizePath(szModelFile.ToLower(), true));
if (model == null)
{
model = GameObject.CreatePrimitive(PrimitiveType.Capsule);
BMLogger.LogWarning($" CECNPC.QueueLoadNPCModel model == null szModelFile= {szModelFile} ");
}
}
catch
{
model = GameObject.CreatePrimitive(PrimitiveType.Capsule);
BMLogger.LogWarning($" CECNPC.QueueLoadNPCModel model == null szModelFile= {szModelFile} ");
}
@@ -1154,12 +1170,8 @@ public class CECNPC : CECObject
{
return m_pNPCModelPolicy.GetCHAABB(ref aabb);
}
void SetPos(Vector3 pos)
public void SetPos(Vector3 pos)
{
if (-2041570812 == m_NPCInfo.nid)
{
BMLogger.LogError("CECNPC::SetPos,else pos=" + pos);
}
transform.position = pos;
}
public void MoveTo(cmd_object_move Cmd)
@@ -1516,7 +1528,16 @@ public class CECNPC : CECObject
}
m_pNPCModelPolicy.PlayModelAction(iAction, bRestart, null);
}
bool IsDisappearing() { return m_DisappearCnt.GetCounter() != 0 ? true : false; }
bool IsDisappearing()
{
if(m_DisappearCnt != null)
{
return m_DisappearCnt.GetCounter() != 0 ? true : false;
}
return false;
}
public int GetTemplateID() { return m_NPCInfo.tid; }
public float GetTouchRadius() { return m_fTouchRad; }
@@ -1574,6 +1595,9 @@ public class CECNPC : CECObject
// Get distance to host player
public float GetDistToHost() { return m_fDistToHost; }
public float GetDistToHostH() { return m_fDistToHostH; }
// Get NPC name color
public virtual uint GetNameColor() { return 0xffffff00; }
}
public struct ClearComActFlagEvent
{
@@ -1,4 +1,5 @@
using BrewMonster;
using CSNetwork.GPDataType;
using CSNetwork.Protocols;
using UnityEngine;
@@ -200,4 +201,8 @@ public class CECNPCModelDefaultPolicy
_npcVisual = npcVisual;
}
public override void SetDefaultPickAABBExt(A3DVECTOR3 vExt)
{
}
}
@@ -15,5 +15,6 @@ namespace BrewMonster
public abstract bool PlayAttackAction(int nAttackSpeed, CECAttackEvent attackevent);
public abstract bool GetCHAABB(ref A3DAABB ab);
public abstract void StopChannelAction();
public abstract void SetDefaultPickAABBExt(CSNetwork.GPDataType.A3DVECTOR3 vExt);
}
}
+260
View File
@@ -0,0 +1,260 @@
using BrewMonster.Network;
using BrewMonster.Scripts.World;
using CSNetwork.GPDataType;
using PerfectWorld.Scripts.Managers.BrewMonster.Managers;
using System;
using System.Linq;
using UnityEngine;
namespace BrewMonster
{
public class CECPet : CECNPC
{
// Data in database
PET_ESSENCE? m_pDBEssence;
string m_strCompName; // Complete name with master's name
public CECPet(CECNPCMan pNPCMan)
{
m_iCID = (int)Class_ID.OCID_PET;
m_pDBEssence = null;
m_fTouchRad = 1.0f;
}
// Initlaize object
public override bool Init(int tid, in info_npc Info, ReadOnlySpan<byte> packet, int infoOffset)
{
if (!base.Init(tid, Info, packet, infoOffset))
return false;
// Get database data
var pDB = ElementDataManProvider.GetElementDataMan();
DATA_TYPE DataType = new DATA_TYPE();
object pDBData = pDB.get_data_ptr((uint)tid, ID_SPACE.ID_SPACE_ESSENCE, ref DataType);
if (pDBData == null)
{
return false;
}
byte[] szModelFile = null;
if (DataType == DATA_TYPE.DT_MONSTER_ESSENCE)
{
MONSTER_ESSENCE pMonsterData = (MONSTER_ESSENCE)pDBData;
szModelFile = pMonsterData.file_model;
object pObEggData = pDB.get_data_ptr(pMonsterData.id_pet_egg_captured, ID_SPACE.ID_SPACE_ESSENCE, ref DataType);
if (pObEggData == null)
{
return false;
}
var pEggData = (PET_EGG_ESSENCE)pObEggData;
m_pDBEssence = (PET_ESSENCE)pDB.get_data_ptr((uint)pEggData.id_pet, ID_SPACE.ID_SPACE_ESSENCE, ref DataType);
m_NPCInfo.tid = pEggData.id_pet;
}
else
{
m_pDBEssence = (PET_ESSENCE)pDBData;
szModelFile = m_pDBEssence.Value.file_model;
}
if (m_pDBEssence == null)
{
return false;
}
SetUseGroundNormal(m_pDBEssence.Value.stand_mode == 0 ? true : false);
m_fTouchRad = m_pDBEssence.Value.size;
m_BasicProps.iLevel = 1;
// Submit EC model loading request to loading thread
QueueLoadNPCModel();
float fExt = m_fTouchRad * 1.5f;
m_cdr.vExts.Set(fExt, fExt, fExt);
m_pNPCModelPolicy.SetDefaultPickAABBExt(m_cdr.vExts);
// If NPC doesn't have specific name, use the name in database
if ((Info.state & PlayerNPCState.GP_STATE_NPC_NAME) == 0)
{
m_strName = new string(m_pDBEssence.Value.name
.TakeWhile(c => c != 0)
.Select(c => (char)c)
.ToArray()
);
EC_Game.GetGameRun().GetUIManager().FilterBadWords(ref m_strName);
// Try to build complete name
BuildCompleteName();
}
if ((Info.state & PlayerNPCState.GP_STATE_NPC_PET) != 0)
{
if (!IsPlantPet())
{
// 非植物宠时,能够从宠物面板和玩家面板中相互追踪
CECPlayer pPlayer = EC_Game.GetGameRun().GetWorld().GetPlayerMan().GetPlayer(m_idMaster);
if (pPlayer)
{
pPlayer.SetCurPetID(Info.nid);
}
}
}
if ((m_pDBEssence.Value.combined_switch & (uint)PET_COMBINED_SWITCH.PCS_FORBID_SELECTION) != 0)
{
SetSelectable(false);
}
A3DVECTOR3 vPos = Info.pos;
SetPos(EC_Utility.ToVector3(vPos));
SetDirAndUp(EC_Utility.ToVector3(EC_Utility.glb_DecompressDirH(Info.dir)), g_vAxisY);
StartWork((int)WorkType.WT_NOTHING, (int)WorkID.WORK_STAND);
return true;
}
// Tick routine
protected override void Update()
{
base.Update();
if (m_strCompName != null && m_strCompName.Length == 0)
{
// Try to build complete name
BuildCompleteName();
}
}
// Get NPC name color
public virtual uint GetNameColor()
{
EC_ManPlayer pPlayerMan = EC_Game.GetGameRun().GetWorld().GetPlayerMan();
CECPlayer pPlayer = pPlayerMan.GetPlayer(m_idMaster);
if (!pPlayer)
return base.GetNameColor();
return pPlayer.GetNameColor();
}
public virtual bool IsImmuneDisable()
{
if(m_pDBEssence == null)
{
return false;
}
if ((m_pDBEssence.Value.combined_switch & (uint)PET_COMBINED_SWITCH.PCS_HIDE_IMMUNE) != 0)
return true;
return false;
}
public virtual float GetTransparentLimit()
{
if (m_pDBEssence != null)
{
if ((m_pDBEssence.Value.combined_switch & (uint)PET_COMBINED_SWITCH.PCS_FORBID_SELECTION) != 0)
{
return -1.0f;
}
}
return base.GetTransparentLimit();
}
public virtual bool ShouldHideName()
{
if (m_pDBEssence == null) { return false; }
return (m_pDBEssence.Value.combined_switch & (uint)PET_COMBINED_SWITCH.PCS_HIDE_NAME) != 0;
}
// Is this host player's pet
public bool IsHostPet()
{
CECHostPlayer pHost = EC_Game.GetGameRun().GetHostPlayer();
return GetMasterID() == pHost.GetCharacterID();
}
// Is this pet attackable;
public bool CanBeAttacked()
{
return IsCombatPet()
|| IsSummonPet()
|| IsPlantPet()
|| IsEvolutionPet();
}
// Is a follow pet ?
public bool IsFollowPet()
{
if (m_pDBEssence != null)
return m_pDBEssence.Value.id_type == 8783;
return false;
}
// Is a combat pet ?
public bool IsCombatPet()
{
if (m_pDBEssence != null)
return m_pDBEssence.Value.id_type == 8782;
return false;
}
// 是否为召唤宠
public bool IsSummonPet()
{
if(m_pDBEssence == null) return false;
return m_pDBEssence.Value.id_type == 28752;
}
// 是否为植物宠
public bool IsPlantPet()
{
if (m_pDBEssence == null) return false;
return m_pDBEssence.Value.id_type == 28913;
}
// 是否是进化宠
public bool IsEvolutionPet()
{
if (m_pDBEssence == null) return false;
return m_pDBEssence.Value.id_type == 37698;
}
public PET_ESSENCE? GetDBEssence() { return m_pDBEssence; }
// Build complete name
public void BuildCompleteName()
{
//if (!m_npcUI) return;
//var szMasterName = EC_Game.GetGameRun().GetPlayerName(m_idMaster, false);
//if (!szMasterName) return;
//string strMasterName = szMasterName;
//CECWorld pWorld = EC_Game.GetGameRun().GetWorld();
//if (pWorld.IsCountryWarMap() &&
// !CECUIConfig::Instance().GetGameUI().bShowNameInCountryWar)
//{
// // 国战场景中,不直接显示宠物主人名称时,要求查询到此主人信息
// // 此改动(if语句中的内容)将导致主人未出现时无法看到宠物名称
// // if 括号中的判断是必要的,将增加看到宠物名称的机会
// EC_ManPlayer pPlayerMan = pWorld.GetPlayerMan();
// CECPlayer pPlayer = pPlayerMan.GetPlayer(m_idMaster);
// if (!pPlayer)
// {
// // 还没看到此玩家,无法判断其国家,还不能确定如何显示
// return;
// }
// if (pPlayer.GetShowNameInCountryWar())
// strMasterName = pPlayer.GetNameInCountryWar();
//}
//m_strCompName.Format(g_pGame.GetFixedMsgTab().GetWideString(FIXMSG_WHOSETHING), strMasterName, m_strName);
//m_npcUI.SetName(m_strCompName);
}
public override void SetUpCECNPC(CECNPCMan pNPCMan)
{
base.SetUpCECNPC(pNPCMan);
m_iCID = (int)Class_ID.OCID_PET;
m_pDBEssence = null;
m_fTouchRad = 1.0f;
}
}
}
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 6af68acbb8354d04f9c00df83d3eec60
@@ -1578,6 +1578,12 @@ namespace CSNetwork.S2CCommand
{
public int faction_id;
};
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct cmd_summon_pet
{
public uint pet_index;
};
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct cmd_embed_item
@@ -955,6 +955,13 @@ namespace CSNetwork.C2SCommand
pCmd.faction_id = faction_id;
return SerializeCommand(CommandID.QUERY_MAFIA_PVP_INFO, pCmd);
}
public static Octets CreatePetSummon(int iPetIdx)
{
S2CCommand.cmd_summon_pet pCmd = new S2CCommand.cmd_summon_pet();
pCmd.pet_index = (uint)iPetIdx;
return SerializeCommand(CommandID.SUMMON_PET, pCmd);
}
public static Octets CreateNPCSevEmbedCmd(
ushort wStoneIdx,
@@ -2335,55 +2335,28 @@ namespace CSNetwork.GPDataType
};
public struct info_pet
{
public int honor_point; // øж
public int hunger; //
public int feed_time; // ϴιڵʱ
public int pet_tid; // ģID
public int pet_vis_tid; // ĿɼIDΪ0ʾɼID
public int pet_egg_tid; // ID
public int pet_class; // սͳ
public float hp_factor; // Ѫջʱʹã 0Ϊ
public short level; //
public ushort color; // ɫλΪ1ʾЧĿǰЧ
public int exp; // ﵱǰ
public int skill_point; // ʣܵ
public char is_bind; // Ƿ˺һһMask0x01 ˺һ0x02 Ѱɽ
public char unused; // ĿǰЧ
public ushort name_len; // ֳ ĿǰЧΪ߻
public char[] name; //
public PetSkill[] skills;
public int honor_point; // ºÃ¸Ð¶È
public int hunger; // ¼¢¶ö¶È
public int feed_time; // ÉÏ´ÎÎ¹Ñøµ½ÏÖÔÚµÄʱ¼ä
public int pet_tid; // ³èÎïµÄÄ£°åID
public int pet_vis_tid; // ³èÎïµÄ¿É¼ûID£¨Èç¹ûΪ0£¬Ôò±íʾÎÞÌØÊâ¿É¼ûID£©
public int pet_egg_tid; // ³èÎïµ°µÄID
public int pet_class; // ³èÎïÀàÐÍ Õ½³è£¬Æï³è£¬¹ÛÉͳè
public float hp_factor; // ѪÁ¿±ÈÀý£¨¸´»îºÍÊÕ»ØÊ±Ê¹Óã© 0ÔòΪËÀÍö
public short level; // ³èÎï¼¶±ð
public ushort color; // ³èÎïÑÕÉ«£¬×î¸ßλΪ1±íʾÓÐЧ£¬Ä¿Ç°½ö¶ÔÆï³èÓÐЧ
public int exp; // ³èÎﵱǰ¾­Ñé
public int skill_point; // Ê£Ó༼Äܵã
public char is_bind; // ÊÇ·ñÌìÈ˺ÏÒ»£¬ÏÖÔÚÊÇÒ»¸öMask£¬0x01 ÌìÈ˺ÏÒ»£¬0x02 Ѱ±¦Íø¿É½»Ò×
public char unused; // Ŀǰ´ËÏîÎÞЧ
public ushort name_len; // Ãû×Ö³¤¶È Ŀǰ´ËÏîÎÞЧ£¨ÒòΪ²ß»®ÉÐÎÞÃû×ÖÐèÇó£©
public _evo_prop evo_prop;
public int[] reserved; // δ
public info_pet(bool isDefault = true)
{
honor_point = 0;
hunger = 0;
feed_time = 0;
pet_tid = 0;
pet_vis_tid = 0;
pet_egg_tid = 0;
pet_class = 0;
hp_factor = 0;
level = 0;
color = 0;
exp = 0;
skill_point = 0;
is_bind = (char)0x00;
unused = (char)0x00;
name_len = 0;
name = new char[16];
skills = new PetSkill[(int)GP_PET_SKILL_NUM.GP_PET_SKILL_NUM];
evo_prop = new _evo_prop
{
r_attack = 0,
r_defense = 0,
r_hp = 0,
r_atk_lvl = 0,
r_def_lvl = 0,
nature = 0
};
reserved = new int[10];
}
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
public char[] name; // Ãû×ÖÄÚÈÝ
[MarshalAs(UnmanagedType.ByValArray, SizeConst = (int)GP_PET_SKILL_NUM.GP_PET_SKILL_NUM)]
public _skills[] skills;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
public int[] reserved; // δÓÃ
};
public enum REFUSE_BLESS_MASK : byte
{
@@ -2396,5 +2369,203 @@ namespace CSNetwork.GPDataType
public byte force_attack;
public byte refuse_bless;
};
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct _skills
{
public int skill;
public int level;
}
public enum eGP_PET_NATURE_SKILL
{
GP_PET_NATURE_SKILL_NUM = 2
};
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct CMDPARAM
{
public int idSkill;
public byte byPVPMask;
};
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct cmd_pet_room
{
public ushort count;
// ÖØ¸´ count ´Î
// int index;
// info_pet data;
};
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct cmd_plant_pet_disapper
{
public int plant_nid;
public char reason; // 0 ËÀÍö£¬1 ÊÙÃüµ½£¬2 ³¬³ö·¶Î§£¬3 ×Ô±¬£¬4 ÊýÁ¿³¬³ö×éÉÏÏÞ
};
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct cmd_gain_pet
{
public int slot_index; // ´Ë³èÎï·ÅÓÚ³èÎïÀ¸ÄÚµÄλÖÃ
public info_pet data; // pet data
};
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct cmd_free_pet
{
public int slot_index;
public int pet_id; // ³èÎïµÄid£¬ÎÞ´óÓÃ
};
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct cmd_summon_pet
{
public int slot_index;
public int pet_tid;
public int pet_pid;
public int life_time;
};
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct cmd_recall_pet
{
public int slot_index;
public int pet_id;
public char reason;
};
public enum PET_RECALL_REASON
{
PET_RECALL_DEFAULT, // ĬÈÏÕٻأ¬Ö÷ÒªÔ­ÒòÎªÍæ¼ÒÖ÷¶¯Õٻء¢Íæ¼ÒÕÙ»½³öÆäËüÔ­Òòµ¼ÖÂÔ­ÓгèÎïÕٻصÈ
PET_RECALL_DEATH, // ³èÎïËÀÍöµ¼ÖÂÕÙ»ØÏûÏ¢
PET_RECALL_LIFE_EXHAUST, // ³èÎïʱÏÞµ½
PET_RECALL_SACRIFICE, // ³èÎïÎþÉü£¨Íæ¼ÒʹÓü¼Äܵȵ¼Ö£©
};
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct cmd_player_start_pet_op
{
public int slot_index;
public int pet_id;
public int delay; // ÑÓ³Ùʱ¼ä£¬µ¥Î»ÊÇ50msµÄtick
public int op; // ²Ù×÷ÀàÐÍ 0:·Å³ö 1:ÕÙ»Ø 2:·ÅÉú
};
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct cmd_pet_receive_exp
{
public int slot_index;
public int pet_id;
public int exp;
};
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct cmd_pet_levelup
{
public int slot_index;
public int pet_id;
public int level; // м¶±ð
public int exp; // µ±Ç°µÄ¾­ÑéÖµ
};
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct cmd_pet_room_capacity
{
public uint capacity;
};
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct cmd_pet_honor_point
{
public int index;
public int cur_honor_point;
};
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct cmd_pet_hunger_gauge
{
public int index;
public int cur_hunge_gauge;
};
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct cmd_pet_dead
{
public uint pet_index;
};
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct cmd_pet_revive
{
public uint pet_index;
public float hp_factor;
};
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct cmd_pet_hp_notify
{
public uint pet_index;
public float hp_factor;
public int cur_hp;
public float mp_factor;
public int cur_mp;
};
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct cmd_pet_ai_state
{
public byte attack; // 0 ·ÀÓùÐÍ; 1 Ö÷¶¯ÐÍ; 2 ±»¶¯ÐÍ
public byte move; // 0 ¸úËæ; 1 Ô­µØÍ£Áô
};
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct cmd_pet_set_cooldown
{
public int pet_index;
public int cooldown_index;
public int cooldown_time;
};
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct cmd_pet_property
{
public int pet_index;
public BrewMonster.Scripts.ROLEEXTPROP prop;
};
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct cmd_set_player_limit
{
public int index;
public char b; // 1 ÏÞÖÆ 0 ²»ÏÞÖÆ
};
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct cmd_player_mounting
{
public int id;
public int mount_id;
public ushort mount_color;
};
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct cmd_summon_plant_pet
{
public int plant_tid;
public int plant_nid;
public int life_time;
};
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct cmd_plant_pet_hp_notify
{
public int plant_nid;
public float hp_factor;
public int cur_hp;
public float mp_factor;
public int cur_mp;
};
}
@@ -831,7 +831,7 @@ namespace CSNetwork
#if UNITY_EDITOR
BMLogger.LogError($"### GameDataSend: ERROR_MESSAGE parsed iMessage={pCmd.iMessage}");
#endif
Debug.LogError($"### GameDataSend: ERROR_MESSAGE: {errRaw}");
if (pCmd.iMessage != 0)
{
// string szMsg = m_ErrorMsgs.GetWideString(pCmd.iMessage);
@@ -1085,6 +1085,42 @@ namespace CSNetwork
BMLogger.LogError("### GameDataSend: LEARN_SKILL");
EC_ManMessage.PostMessage(EC_MsgDef.MSG_HST_LEARNSKILL, MANAGER_INDEX.MAN_PLAYER, 0, pDataBuf, pCmdHeader);
break;
case CommandID.GAIN_PET:
case CommandID.FREE_PET:
case CommandID.SUMMON_PET:
case CommandID.RECALL_PET:
case CommandID.PLAYER_START_PET_OP:
case CommandID.PLAYER_STOP_PET_OP:
case CommandID.PET_RECEIVE_EXP:
case CommandID.PET_LEVELUP:
case CommandID.PET_ROOM:
case CommandID.PET_ROOM_CAPACITY:
case CommandID.PET_HONOR_POINT:
case CommandID.PET_HUNGER_GAUGE:
case CommandID.PET_DEAD:
case CommandID.PET_REVIVE:
case CommandID.PET_HP_NOTIFY:
case CommandID.PET_AI_STATE:
case CommandID.PET_SET_COOLDOWN:
case CommandID.SUMMON_PLANT_PET:
case CommandID.PLANT_PET_DISAPPEAR:
case CommandID.PLANT_PET_HP_NOTIFY:
case CommandID.PET_PROPERTY:
case CommandID.PET_REBUILD_INHERIT_START:
case CommandID.PET_REBUILD_INHERIT_INFO:
case CommandID.PET_REBUILD_INHERIT_END:
case CommandID.PET_EVOLUTION_DONE:
case CommandID.PET_REBUILD_NATURE_START:
case CommandID.PET_REBUILD_NATURE_INFO:
case CommandID.PET_REBUILD_NATURE_END:
EC_ManMessage.PostMessage(EC_MsgDef.MSG_HST_PETOPT, MANAGER_INDEX.MAN_PLAYER, 0, pDataBuf, pCmdHeader);
break;
case CommandID.SET_PLAYER_LIMIT:
EC_ManMessage.PostMessage(EC_MsgDef.MSG_HST_SETPLAYERLIMIT, MANAGER_INDEX.MAN_PLAYER, 0, pDataBuf, pCmdHeader);
break;
case CommandID.PLAYER_MOUNTING:
EC_ManMessage.PostMessage(EC_MsgDef.MSG_PM_PLAYERMOUNT, MANAGER_INDEX.MAN_PLAYER, -1, pDataBuf, pCmdHeader);
break;
case CommandID.EMBED_ITEM:
EC_ManMessage.PostMessage(EC_MsgDef.MSG_HST_EMBEDITEM, MANAGER_INDEX.MAN_PLAYER, 0, pDataBuf, pCmdHeader);
break;
@@ -1160,8 +1196,6 @@ namespace CSNetwork
PostToUnityContext(() => Disconnected?.Invoke());
}
// --- Protocol Handling Logic ---
private void HandleChallenge(challenge challenge)
{
if (_loginCallback == null || string.IsNullOrEmpty(_username))
@@ -1869,6 +1903,19 @@ namespace CSNetwork
gamedatasend.Data = C2SCommandFactory.CreateQueryFactionPVPInfo(faction_id);
SendProtocol(gamedatasend);
}
public void SendCmdPetCtrl(int idTarget, int cmd, object pParamBuf, int iParamLen)
{
m_CmdCache.SendCmdPetCtrl(idTarget, cmd, (byte[])pParamBuf, iParamLen);
}
public void c2s_SendCmdPetSummon(int iPetIdx)
{
gamedatasend gamedatasend = new gamedatasend();
gamedatasend.Data = C2SCommandFactory.CreatePetSummon(iPetIdx);
SendProtocol(gamedatasend);
}
public void c2s_SendCmdNPCSevEmbed(ushort wStoneIdx, ushort wEquipIdx, int tidStone, int tidEquip)
{
gamedatasend gamedatasend = new gamedatasend();
File diff suppressed because it is too large Load Diff
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 64353be2a0c1d704cb4392f919960f91
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 9d73d6ebcbf227b478aec9344986734f
@@ -1,3 +1,5 @@
using BrewMonster.Assets.PerfectWorld.Scripts.Players;
using System.Collections.Generic;
using UnityEngine;
namespace BrewMonster
@@ -14,10 +16,33 @@ namespace BrewMonster
public class CECActionContext
{
public ActionContextType ContextType { get; set; }
public List<CECActionBase> m_actions;
CECHostPlayer m_pHostPlayer;
bool m_bForceRemove;
CECContextValidChecker m_ErrorCtr;
public bool IsContext(ActionContextType contextType)
{
return ContextType == contextType;
}
public int GetActionCount() { return m_actions.Count; }
public CECActionBase GetLastAction()
{
return GetAction(GetActionCount() - 1);
}
public CECActionBase GetAction(int index)
{
if (index >= 0 && index < GetActionCount())
return m_actions[index];
else
return null;
}
public virtual bool NeedCheckValid() { return false; }
public CECHostPlayer GetHostPlayer() { return m_pHostPlayer;}
public void SetForceRemove(bool v) { m_bForceRemove = v; }
}
}
@@ -6,6 +6,186 @@ using System.Threading.Tasks;
namespace BrewMonster.Assets.PerfectWorld.Scripts.Players
{
public abstract class CECActionBase
{
public enum ACTION_RESULT
{
FD_NONE = 0,
FD_SUCC,
FD_FAIL,
};
public CECHostPlayer m_pHostPlayer;
public ACTION_RESULT m_iFirstDoRes;
public CECActionSequencedRelationFilter m_ActionFilter;
public CECActionBase(CECHostPlayer pHost)
{
m_pHostPlayer = pHost;
m_iFirstDoRes = (ACTION_RESULT.FD_NONE);
m_ActionFilter = null;
}
public bool NeedBeRemoved()
{
return (m_iFirstDoRes != ACTION_RESULT.FD_NONE);
}
public CECActionSequencedRelationFilter GetActionFilter() { return m_ActionFilter; }
public abstract bool CanDo();
public abstract bool DoOnce();
public virtual bool Update(uint dt)
{
FlagKeeper keeper = new FlagKeeper(m_pHostPlayer.GetActionSwitcher());
// do once
if (CanDo() && m_iFirstDoRes == ACTION_RESULT.FD_NONE)
m_iFirstDoRes = DoOnce() ? ACTION_RESULT.FD_SUCC : ACTION_RESULT.FD_FAIL;
return true;
}
public virtual bool CanAddTo(CECActionContext pContext)
{
return m_ActionFilter != null && m_ActionFilter.CanAddAction(pContext, this);
}
};
public abstract class CECFitlerBase
{
public abstract bool CanAddAction(CECActionContext pContext, CECActionBase pAct);
}
public abstract class CECActionSequencedRelationFilter : CECFitlerBase
{
public override bool CanAddAction(CECActionContext pContext, CECActionBase pAct)
{
// If the action queue is empty and the action can be executed, then add it.
if (pContext.GetActionCount() == 0 && pAct.CanDo())
return true;
// Determine the predecessorsuccessor order relationship of actions in the action queue.
CECActionBase pLastAct = pContext != null ? pContext.GetLastAction() : null;
CECActionSequencedRelationFilter filter = pLastAct != null ? pLastAct.GetActionFilter() : null;
if (filter != null && filter.IsPredecessorTo(pAct.GetActionFilter()))
return true;
return false;
}
public abstract bool IsPredecessorTo(CECActionSequencedRelationFilter cECActionSequencedRelationFilter);
public virtual bool IsSuccessorTo(CECCancelRideActionFilter pFilter) { return false; }
public virtual bool IsSuccessorTo(CECRideActionFilter pFilter) { return false; }
public virtual bool IsSuccessorTo(CECLandingActionFilter pFilter) { return false; }
public virtual bool IsSuccessorTo(CECFlyActionFilter pFilter) { return false; }
public virtual bool IsSuccessorTo(CECSkillActionFilter pFilter) { return false; }
public virtual bool IsSuccessorTo(CECUseSkillItemActionFilter pFilter) { return false; }
};
public class FlagKeeper
{
public CECActionSwitcherBase m_pSwitcher;
public FlagKeeper(CECActionSwitcherBase pSwitcher)
{
m_pSwitcher = pSwitcher;
pSwitcher.SetPostMessageFlag(false);
}
};
public class CECCancelRideActionFilter : CECActionSequencedRelationFilter
{
public bool IsSuccessorTo(CECRideActionFilter filter ) { return true; }
public override bool IsPredecessorTo(CECActionSequencedRelationFilter pFilter)
{
return pFilter.IsSuccessorTo(this);
}
};
public class CECRideActionFilter : CECActionSequencedRelationFilter
{
public virtual bool IsSuccessorTo(CECCancelRideActionFilter filter) { return true; }
public virtual bool IsSuccessorTo(CECLandingActionFilter filter ) { return true; }
public override bool IsPredecessorTo(CECActionSequencedRelationFilter pFilter)
{
return pFilter.IsSuccessorTo(this);
}
};
public class CECLandingActionFilter : CECActionSequencedRelationFilter
{
public virtual bool IsSuccessorTo(CECFlyActionFilter filter) { return true; }
public override bool IsPredecessorTo(CECActionSequencedRelationFilter pFilter)
{
return pFilter.IsSuccessorTo(this);
}
};
public class CECFlyActionFilter : CECActionSequencedRelationFilter
{
public virtual bool IsSuccessorTo(CECCancelRideActionFilter pFilter) { return true; }
public virtual bool IsSuccessorTo(CECLandingActionFilter pFilter) { return true; }
public override bool IsPredecessorTo(CECActionSequencedRelationFilter pFilter)
{
return pFilter.IsSuccessorTo(this);
}
};
public class CECSkillActionFilter : CECActionSequencedRelationFilter
{
public virtual bool IsSuccessorTo(CECCancelRideActionFilter pFilter) { return true; }
public virtual bool IsSuccessorTo(CECLandingActionFilter pFilter) { return true; }
public virtual bool IsSuccessorTo(CECFlyActionFilter pFilter) { return true; }
public override bool IsPredecessorTo(CECActionSequencedRelationFilter pFilter)
{
return pFilter.IsSuccessorTo(this);
}
};
public class CECUseSkillItemActionFilter : CECActionSequencedRelationFilter
{
public virtual bool IsSuccessorTo(CECCancelRideActionFilter pFilter) { return true; }
public virtual bool IsSuccessorTo(CECLandingActionFilter pFilter) { return true; }
public virtual bool IsSuccessorTo(CECFlyActionFilter pFilter) { return true; }
public override bool IsPredecessorTo(CECActionSequencedRelationFilter pFilter)
{
return pFilter.IsSuccessorTo(this);
}
};
public class CECContextValidChecker
{
public CECContextValidChecker(CECActionContext context)
{
m_pActionContext = context;
error_correct = 0;
}
public virtual void Update(uint dt)
{
//After the client sends mount or dismount commands, it immediately sends a movement message.
// As a result, the mount/ dismount operation on the server may fail, but the client is not notified.
// Therefore, a confirmation check is required here.
if (m_pActionContext.GetActionCount() != 0 && m_pActionContext.NeedCheckValid())
{
error_correct += (int)dt;
if (error_correct > MAX_ERRORTIME && !m_pActionContext.GetHostPlayer().GetWorkMan().IsOperatingPet())
{
m_pActionContext.SetForceRemove(true);
error_correct = 0;
}
}
}
public int error_correct;
public CECActionContext m_pActionContext;
public const int MAX_ERRORTIME = 3000;
};
public class CECActionSwitcherBase
{
CECHostPlayer m_pHostPlayer;
@@ -23,6 +203,9 @@ namespace BrewMonster.Assets.PerfectWorld.Scripts.Players
if (CanAddMessage())
m_msgs.UniquelyAdd(msg);
}
public void SetPostMessageFlag(bool bCan) { m_bCanAddMsg = bCan; }
public virtual bool OnFlyToRideAction(int petIndex) { return false; } // fly -> ride
}
public enum EMsgActionSwitcher
@@ -439,6 +439,9 @@ namespace BrewMonster
case long value when value == EC_MsgDef.MSG_PM_PLAYERGATHER:
OnMsgPlayerGather(Msg);
break;
case long value when value == EC_MsgDef.MSG_PM_PLAYERMOUNT:
OnMsgPlayerMount(Msg);
break;
}
return true;
}
@@ -0,0 +1,492 @@
using BrewMonster.Network;
using BrewMonster.Scripts;
using BrewMonster.Scripts.Pet;
using BrewMonster.UI;
using CSNetwork;
using CSNetwork.GPDataType;
using System;
using System.Runtime.InteropServices;
using UnityEngine;
using static BrewMonster.Scripts.Pet.CECPetData;
namespace BrewMonster
{
public partial class CECHostPlayer
{
// 服务器控制的额外操作限制
public enum PLAYER_LIMIT
{
PLAYER_LIMIT_NOFLY, // 禁止"飞行/取消飞行"
PLAYER_LIMIT_NOCHANGESELECT, // 禁止"选中/取消选中/协助攻击"
PLAYER_LIMIT_NOMOUNT, // 禁止召唤骑宠
PLAYER_LIMIT_NOBIND, // 禁止"发起/接收相依相偎"
PLAYER_LIMIT_MAX,
};
// Update pet shortcut when pet freeed
void UpdateFreedPetSC(int iPetIndex)
{
// TO DO: fix later
//int i;
//// Update shortcut sets 1
//for (i = 0; i < (int)Shortcut.NUM_HOSTSCSETS1; i++)
//{
// if (m_aSCSets1[i] != null)
// m_aSCSets1[i].UpdateFreedPetSC(iPetIndex);
//}
//// Update shortcut sets 2
//for (i = 0; i < (int)Shortcut.NUM_HOSTSCSETS2; i++)
//{
// if (m_aSCSets2[i] != null)
// m_aSCSets2[i].UpdateFreedPetSC(iPetIndex);
//}
}
bool OnPetSays(int tid, int nid, int type)
{
bool bSaid = false;
//CECNPC pNPC = EC_Game.GetGameRun().GetWorld().GetNPCMan().GetNPCFromAll(nid);
//if (pNPC && pNPC.GetMasterID() == GetCharacterID())
//{
// const ACHAR* szWords = m_pPetWords.GetWords(tid, (CECPetWords::TYPE_WORDS)type);
// if (szWords)
// {
// pNPC.SetLastSaidWords(szWords, 5000);
// bSaid = true;
// }
//}
return bSaid;
}
/* Is host operating pet ?
return value:
0: host doesn't operating pet.
1: host is summoning pet.
2: host is recalling pet.
3: host is banishing pet.
*/
int CIsOperatingPet()
{
CECHPWorkConcentrate pWork = (m_pWorkMan.GetRunningWork(CECHPWork.Host_work_ID.WORK_CONCENTRATE)) as CECHPWorkConcentrate;
if (pWork != null)
{
if (pWork.GetDoWhat() == (int)CECHPWorkConcentrate.eDO_PET.DO_SUMMONPET)
return 1;
else if (pWork.GetDoWhat() == (int)CECHPWorkConcentrate.eDO_PET.DO_RECALLPET)
return 2;
else if (pWork.GetDoWhat() == (int)CECHPWorkConcentrate.eDO_PET.DO_BANISHPET)
return 3;
else if (pWork.GetDoWhat() == (int)CECHPWorkConcentrate.eDO_PET.DO_RESTOREPET)
return 4;
}
return 0;
}
void OnMsgHstPetOpt(ECMSG Msg)
{
CECGameRun pGameRun = EC_Game.GetGameRun();
int header = Convert.ToInt32(Msg.dwParam2);
switch (header)
{
case CommandID.GAIN_PET:
{
cmd_gain_pet pCmd = GPDataTypeHelper.FromBytes<cmd_gain_pet>((byte[])Msg.dwParam1);
m_pPetCorral.AddPet(pCmd.slot_index, pCmd.data);
// Print a notify
CECPetData pPet = m_pPetCorral.GetPetData(pCmd.slot_index);
if (pPet != null)
{
if (pPet.IsFollowPet() || pPet.IsCombatPet() || pPet.IsEvolutionPet())
{
// TO DO: fix later
//pGameRun.AddFixedMessage(FIXMSG_PET_HATCH, pPet.GetName());
}
else if (pPet.IsSummonPet())
{
// TO DO: fix later
//pGameRun.AddFixedMessage(FIXMSG_SUMMON_PET_APPEAR, pPet.GetName());
}
}
break;
}
case CommandID.FREE_PET:
{
cmd_free_pet pCmd = GPDataTypeHelper.FromBytes<cmd_free_pet>((byte[])Msg.dwParam1);
// Print a notify
CECPetData pPet = m_pPetCorral.GetPetData(pCmd.slot_index);
if (pPet != null)
{
if (pPet.IsFollowPet() || pPet.IsCombatPet() || pPet.IsEvolutionPet())
{
// TO DO: fix later
//pGameRun.AddFixedMessage(FIXMSG_PET_FREE, pPet.GetName());
}
else if (pPet.IsSummonPet())
{
// TO DO: fix later
//pGameRun.AddFixedMessage(FIXMSG_SUMMON_PET_DISAPPEAR, pPet.GetName());
}
}
// Remove pet from corral
m_pPetCorral.FreePet(pCmd.slot_index, pCmd.pet_id);
// Update pet shortcuts
UpdateFreedPetSC(pCmd.slot_index);
break;
}
case CommandID.SUMMON_PET:
{
cmd_summon_pet pCmd = GPDataTypeHelper.FromBytes<cmd_summon_pet>((byte[])Msg.dwParam1);
CECPetData pPet = m_pPetCorral.GetPetData(pCmd.slot_index);
//ASSERT(pPet && pPet.GetTemplateID() == pCmd.pet_tid);
m_pPetCorral.SetActivePetIndex(pCmd.slot_index);
m_pPetCorral.SetActivePetNPCID(pCmd.pet_pid);
m_pPetCorral.SetActivePetLifetime(pCmd.life_time);
if (EC_Game.GetConfigs().GetGameSettings().bPetAutoSkill)
{
for (int i = 0; i < pPet.GetSkillNum(SKILLTYPE.EM_SKILL_DEFAULT); i++)
{
PETSKILL? pSkill = pPet.GetSkill(SKILLTYPE.EM_SKILL_DEFAULT, i);
if (pSkill != null && EC_Game.IsPetAutoSkill(pSkill.Value.idSkill))
pPet.AddAutoSkill(pSkill.Value.idSkill);
}
}
// TO DO: fix later
//OnPetSays(pCmd.pet_tid, pCmd.pet_pid, CECPetWords::TW_SUMMON);
//if (pPet.IsCombatPet() || pPet.IsSummonPet() || pPet.IsEvolutionPet())
// CDlgQuickBarPet::ResetAutoCastSkill();
break;
}
case CommandID.RECALL_PET:
{
cmd_recall_pet pCmd = GPDataTypeHelper.FromBytes<cmd_recall_pet>((byte[])Msg.dwParam1);
//ASSERT(pCmd.slot_index == m_pPetCorral.GetActivePetIndex());
int tid = pCmd.pet_id;
int nid = m_pPetCorral.GetActivePetNPCID();
// 宠物有话说
switch (pCmd.reason)
{
case (char)PET_RECALL_REASON.PET_RECALL_DEFAULT:
//OnPetSays(tid, nid, CECPetWords::TW_RECALL);
break;
case (char)PET_RECALL_REASON.PET_RECALL_DEATH:
//OnPetSays(tid, nid, CECPetWords::TW_DEAD);
break;
case (char)PET_RECALL_REASON.PET_RECALL_LIFE_EXHAUST:
//OnPetSays(tid, nid, CECPetWords::TW_DISAPPEAR);
break;
case (char)PET_RECALL_REASON.PET_RECALL_SACRIFICE:
//OnPetSays(tid, nid, CECPetWords::TW_SACRIFICE);
break;
}
CECPetData pPet = m_pPetCorral.GetActivePet();
if (pPet != null)
pPet.OnPetDead();
m_pPetCorral.SetActivePetIndex(-1);
m_pPetCorral.SetActivePetNPCID(0);
m_bPetInSanctuary = false;
break;
}
case CommandID.PLAYER_START_PET_OP:
{
cmd_player_start_pet_op pCmd = GPDataTypeHelper.FromBytes<cmd_player_start_pet_op>((byte[])Msg.dwParam1);
int iDoWhat;
if (pCmd.op == 0)
iDoWhat = (int)CECHPWorkConcentrate.eDO_PET.DO_SUMMONPET;
else if (pCmd.op == 1)
iDoWhat = (int)CECHPWorkConcentrate.eDO_PET.DO_RECALLPET;
else if (pCmd.op == 2)
iDoWhat = (int)CECHPWorkConcentrate.eDO_PET.DO_BANISHPET;
else if (pCmd.op == 3)
iDoWhat = (int)CECHPWorkConcentrate.eDO_PET.DO_RESTOREPET;
else
iDoWhat = (int)CECHPWorkConcentrate.eDO_PET.DO_UNKNOWN;
m_PetOptCnt.SetPeriod(pCmd.delay * 50);
m_PetOptCnt.Reset();
CECHPWorkConcentrate pWork = (CECHPWorkConcentrate)m_pWorkMan.CreateWork(CECHPWork.Host_work_ID.WORK_CONCENTRATE);
pWork.SetDoWhat(iDoWhat);
m_pWorkMan.StartWork_p1(pWork);
break;
}
case CommandID.PLAYER_STOP_PET_OP:
{
if (IsOperatingPet() != 0)
m_pWorkMan.FinishRunningWork(CECHPWork.Host_work_ID.WORK_CONCENTRATE);
break;
}
case CommandID.PET_RECEIVE_EXP:
{
cmd_pet_receive_exp pCmd = GPDataTypeHelper.FromBytes<cmd_pet_receive_exp>((byte[])Msg.dwParam1);
CECPetData pPet = m_pPetCorral.GetPetData(pCmd.slot_index);
if (pPet != null)
{
//ASSERT(pPet.GetTemplateID() == pCmd.pet_id);
pPet.AddExp(pCmd.exp);
}
break;
}
case CommandID.PET_LEVELUP:
{
cmd_pet_levelup pCmd = GPDataTypeHelper.FromBytes<cmd_pet_levelup>((byte[])Msg.dwParam1);
CECPetData pPet = m_pPetCorral.GetPetData(pCmd.slot_index);
if (pPet != null)
{
//ASSERT(pPet.GetTemplateID() == pCmd.pet_id);
pPet.LevelUp(pCmd.level, pCmd.exp);
}
//pGameRun.AddFixedMessage(FIXMSG_PET_LEVELUP, pCmd.level);
break;
}
case CommandID.PET_ROOM:
{
cmd_pet_room pCmd = GPDataTypeHelper.FromBytes<cmd_pet_room>((byte[])Msg.dwParam1);
m_pPetCorral.UpdatePets(pCmd, (byte[])Msg.dwParam1);
CECGameUIMan pGameUI = EC_Game.GetGameRun().GetUIManager().GetInGameUIMan();
//if (pGameUI.GetDialog("Win_Teach").IsShow())
// {
// //pGameUI.UpdateTeach();
// }
break;
}
case CommandID.PET_ROOM_CAPACITY:
{
cmd_pet_room_capacity pCmd = GPDataTypeHelper.FromBytes<cmd_pet_room_capacity>((byte[])Msg.dwParam1);
m_pPetCorral.MagnifyPetSlots((int)pCmd.capacity);
if (m_pPetCorral.HasInit())
{
//pGameRun.AddFixedMessage(FIXMSG_PET_ROOM_SIZE, pCmd.capacity);
}
else
m_pPetCorral.SetHasInit(true);
break;
}
case CommandID.PET_HONOR_POINT:
{
cmd_pet_honor_point pCmd = GPDataTypeHelper.FromBytes<cmd_pet_honor_point>((byte[])Msg.dwParam1);
CECPetData pPet = m_pPetCorral.GetPetData(pCmd.index);
if (pPet != null)
pPet.SetIntimacy(pCmd.cur_honor_point);
break;
}
case CommandID.PET_HUNGER_GAUGE:
{
cmd_pet_hunger_gauge pCmd = GPDataTypeHelper.FromBytes<cmd_pet_hunger_gauge>((byte[])Msg.dwParam1);
CECPetData pPet = m_pPetCorral.GetPetData(pCmd.index);
if (pPet != null)
pPet.SetHunger(pCmd.cur_hunge_gauge);
break;
}
case CommandID.PET_DEAD:
{
cmd_pet_dead pCmd = GPDataTypeHelper.FromBytes<cmd_pet_dead>((byte[])Msg.dwParam1);
CECPetData pPet = m_pPetCorral.GetPetData((int)pCmd.pet_index);
if (pPet != null)
{
pPet.SetHPFactor(0.0f);
pPet.SetHP(0);
pPet.OnPetDead();
}
//pGameRun.AddFixedMessage(FIXMSG_PET_DEAD);
break;
}
case CommandID.PET_REVIVE:
{
cmd_pet_revive pCmd = GPDataTypeHelper.FromBytes<cmd_pet_revive>((byte[])Msg.dwParam1);
CECPetData pPet = m_pPetCorral.GetPetData((int)pCmd.pet_index);
if (pPet != null)
pPet.SetHPFactor(pCmd.hp_factor);
break;
}
case CommandID.PET_HP_NOTIFY:
{
cmd_pet_hp_notify pCmd = GPDataTypeHelper.FromBytes<cmd_pet_hp_notify>((byte[])Msg.dwParam1);
CECPetData pPet = m_pPetCorral.GetPetData((int)pCmd.pet_index);
if (pPet != null)
{
int lastHP = pPet.GetHP();
pPet.SetHPFactor(pCmd.hp_factor);
pPet.SetHP(pCmd.cur_hp);
pPet.SetMPFactor(pCmd.mp_factor);
pPet.SetMP(pCmd.cur_mp);
// If HP is too low, popup a warning on pet's head
int iLimit = (int)(pPet.CalcMaxHP() * 0.3f);
if (pCmd.cur_hp < lastHP && lastHP != 0 && pCmd.cur_hp < iLimit)
{
CECNPC pNPC = EC_Game.GetGameRun().GetWorld().GetNPCMan().GetNPC(m_pPetCorral.GetActivePetNPCID());
if (pNPC && pNPC.GetMasterID() == GetCharacterID())
{
//pNPC.BubbleText(CECNPC::BUBBLE_HPWARN, 0);
}
}
}
break;
}
case CommandID.PET_AI_STATE:
{
cmd_pet_ai_state pCmd = GPDataTypeHelper.FromBytes<cmd_pet_ai_state>((byte[])Msg.dwParam1);
// 宠物有话说
CECPetData pPetData = m_pPetCorral.GetActivePet();
if (pPetData != null)
{
int tid = pPetData.GetTemplateID();
int nid = m_pPetCorral.GetActivePetNPCID();
if (m_pPetCorral.GetMoveMode() != pCmd.move)
{
switch (pCmd.move)
{
case (byte)CECPetCorral.ePet_MovingMode.MOVE_FOLLOW:
{
//OnPetSays(tid, nid, CECPetWords::TW_FOLLOW);
break;
}
case (byte)CECPetCorral.ePet_MovingMode.MOVE_STAND:
{
//OnPetSays(tid, nid, CECPetWords::TW_STOP);
break;
}
}
}
if (m_pPetCorral.GetAttackMode() != pCmd.attack)
{
switch (pCmd.attack)
{
case (byte)CECPetCorral.ePet_AttackingMode.ATK_DEFENSE:
//OnPetSays(tid, nid, CECPetWords::TW_DEFENSIVE);
break;
case (byte)CECPetCorral.ePet_AttackingMode.ATK_POSITIVE:
//OnPetSays(tid, nid, CECPetWords::TW_OFFENSIVE);
break;
case (byte)CECPetCorral.ePet_AttackingMode.ATK_PASSIVE:
//OnPetSays(tid, nid, CECPetWords::TW_PASSIVE);
break;
}
}
}
m_pPetCorral.SetMoveMode(pCmd.move);
m_pPetCorral.SetAttackMode(pCmd.attack);
break;
}
case CommandID.PET_SET_COOLDOWN:
{
cmd_pet_set_cooldown pCmd = GPDataTypeHelper.FromBytes<cmd_pet_set_cooldown>((byte[])Msg.dwParam1);
CECPetData pPet = m_pPetCorral.GetPetData(pCmd.pet_index);
if (pPet != null)
pPet.SetSkillCoolTime(pCmd.cooldown_index, pCmd.cooldown_time);
break;
}
case CommandID.SUMMON_PLANT_PET:
{
int size = Marshal.SizeOf<cmd_summon_plant_pet>();
if (((byte[])Msg.dwParam1).Length >= size)
{
cmd_summon_plant_pet pCmd = GPDataTypeHelper.FromBytes<cmd_summon_plant_pet>((byte[])Msg.dwParam1);
m_pPetCorral.PlantPetEnter(pCmd);
}
break;
}
case CommandID.PLANT_PET_DISAPPEAR:
{
int size = Marshal.SizeOf<cmd_plant_pet_disapper>();
if (((byte[])Msg.dwParam1).Length >= size)
{
cmd_plant_pet_disapper pCmd = GPDataTypeHelper.FromBytes<cmd_plant_pet_disapper>((byte[])Msg.dwParam1);
m_pPetCorral.PlantPetDisappear(pCmd);
}
break;
}
case CommandID.PLANT_PET_HP_NOTIFY:
{
int size = Marshal.SizeOf<cmd_plant_pet_hp_notify>();
if (((byte[])Msg.dwParam1).Length >= size)
{
cmd_plant_pet_hp_notify pCmd = GPDataTypeHelper.FromBytes<cmd_plant_pet_hp_notify>((byte[])Msg.dwParam1);
m_pPetCorral.PlantPetInfo(pCmd);
}
break;
}
case CommandID.PET_PROPERTY:
{
cmd_pet_property pCmd = GPDataTypeHelper.FromBytes<cmd_pet_property>((byte[])Msg.dwParam1);
CECPetData pPet = m_pPetCorral.GetPetData(pCmd.pet_index);
if (pPet != null)
{
pPet.SetExtendProps(pCmd.prop);
}
break;
}
case CommandID.PET_REBUILD_INHERIT_START:
case CommandID.PET_REBUILD_INHERIT_INFO:
case CommandID.PET_REBUILD_INHERIT_END:
case CommandID.PET_EVOLUTION_DONE:
case CommandID.PET_REBUILD_NATURE_START:
case CommandID.PET_REBUILD_NATURE_INFO:
case CommandID.PET_REBUILD_NATURE_END:
{
CECGameUIMan pGameUI = EC_Game.GetGameRun().GetUIManager().GetInGameUIMan();
if (pGameUI != null)
{
//((CDlgPreviewPetRebuild*)pGameUI.GetDialog("Win_PreviewPet")).OnServerNotify(Msg.dwParam2, (void*)Msg.dwParam1);
}
break;
}
default:
break;
}
}
void OnMsgHstSetPlayerLimit(ECMSG Msg)
{
cmd_set_player_limit pCmd = GPDataTypeHelper.FromBytes<cmd_set_player_limit>((byte[])Msg.dwParam1);
if (pCmd.index >= 0 && pCmd.index < (int)PLAYER_LIMIT.PLAYER_LIMIT_MAX)
m_playerLimits[pCmd.index] = (pCmd.b != 0);
}
}
}
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: a80761da7f1dc184b8117b7170fd98f2
@@ -191,7 +191,7 @@ namespace BrewMonster.Scripts.Skills
return "";
}
// ˵
public virtual void GetIntroduction(StringBuilder buf, SkillStr table) { }
public virtual void GetIntroduction(StringBuilder buf, SkillStr table) { }
// ְҵ
public virtual int GetCls() { return -1; }
// ȴʱλ
@@ -250,7 +250,7 @@ namespace BrewMonster.Scripts.Skills
return ret;
}
public virtual int GetRequiredRealmLevel() { return 0; }
public static int GetRequiredRealmLevel(uint id, int level)
public static int GetRequiredRealmLevel(uint id, int level)
{
Skill s = Skill.Create(id, level);
if (s == null)
@@ -324,11 +324,67 @@ namespace BrewMonster.Scripts.Skills
// ж
public virtual bool ValidWeapon(int w) { return true; }
// 0, ɹ1ƥ䣻2, mp㣻3λ㣻4?5ID, 6δѡĿ
public int Condition(uint id, UseRequirement info, int ilevel)
{
skill = Skill.Create(id, ilevel);
if (skill == null)
return 5;
ComboArg arg = skill.GetPlayer().GetComboarg();
if (info.combo_state.arg != null)
{
for (int i = 0; i < ComboSkillState.MAX_COMBO_ARG; i++)
{
arg.SetValue((uint)i, info.combo_state.arg[i]);
}
}
int ret = ((ElementSkill)skill).Condition(info);
return ret;
}
public int Condition(UseRequirement info)
{
if (info.arrow < GetArrowCost())
return 9;
if (!ValidWeapon(info.weapon))
return 1;
if (info.mp < GetMpCost())
return 2;
int form_type = (info.form & FORM_MASK_HIGH) >> 6;
if ((GetAllowForms() & (1 << form_type)) == 0)
return 7;
if (info.ap < GetApCost())
return 8;
if (info.freepackage == 0 && GetTargetType() == 3)
return 10;
// ÒÆ¶¯»·¾³
if ((info.move_env == 0 && !IsAllowLand()) ||
(info.move_env == 1 && !IsAllowWater()) ||
(info.move_env == 2 && !IsAllowAir()))
return 3;
if (info.is_combat && GetNotuseInCombat())
return 11;
if (!CheckHpCondition(info.hp, info.max_hp))
return 12;
int preskill = GetComboSkPreSkill();
if (preskill != 0)
{
if (info.combo_state.skillid != (uint)preskill
|| !CheckComboSkExtraCondition())
return 13;
}
return 0;
}
// 检查HP条件 // Check HP condition
public virtual bool CheckHpCondition(int hp, int max_hp) { return true; }
// 检查连击技能额外条件 // Check combo skill extra condition
public virtual bool CheckComboSkExtraCondition() { return true; }
public virtual bool IsAllowLand() { return true; }
public virtual bool IsAllowWater() { return true; }
public virtual bool IsAllowAir() { return true; }
@@ -369,7 +425,7 @@ namespace BrewMonster.Scripts.Skills
comboArg.SetValue((uint)i, argValue);
}
if (skill.CheckComboSkExtraCondition())
if (((ElementSkill)skill).CheckComboSkExtraCondition())
{
result[skill.GetId()] = skill.GetComboSkInterval();
}
+12 -2
View File
@@ -77,7 +77,7 @@ namespace BrewMonster.Scripts.Skills
}
public override int GetRangeType() { return stub.GetRange().type; }
public override int GetRequiredLevel() { return stub.GetRequiredLevel(this); }
public override void GetIntroduction(StringBuilder buf, SkillStr table)
public override void GetIntroduction(StringBuilder buf, SkillStr table)
{
int n = stub.GetIntroduction(this, buf, table.Find((int)stub.id * 10 + 1));
}
@@ -104,7 +104,11 @@ namespace BrewMonster.Scripts.Skills
return stub.GetIcon();
}
public int GetAbility() { return SkillWrapper.Instance.GetAbility(id); }
public bool CheckComboSkExtraCondition() { return stub.CheckComboSkExtraCondition(this); }
// 检查施放时hp条件 // Check HP condition when casting
public override bool CheckHpCondition(int hp, int max_hp) { return stub.CheckHpCondition(hp, max_hp); }
public override bool CheckComboSkExtraCondition() { return stub.CheckComboSkExtraCondition(this); }
public override byte GetAllowForms() { return stub.allow_forms; }
public override int GetApCost() { return stub.apcost; }
public override string GetName() { return stub.GetName(); }
public override float GetPrayRange(float range, float prayplus)
@@ -302,7 +306,13 @@ namespace BrewMonster.Scripts.Skills
public virtual float GetPraydistance(Skill skill) { return 0f; }
public virtual float GetMpcost(Skill skill) { return 0f; }
public virtual int GetExecutetime(Skill skill) { return 1000; }
// 检查HP条件 // Check HP condition
// 默认返回true,子类可以重写以检查HP百分比范围 // Default returns true, subclasses can override to check HP percentage range
// 例如:return hp >= max_hp / 100.0f * minPercent && hp <= max_hp / 100.0f * maxPercent;
public virtual bool CheckHpCondition(int hp, int max_hp) { return true; }
// 检查连击技能额外条件 // Check combo skill extra condition
// 默认返回true,子类可以重写以检查连击参数等条件 // Default returns true, subclasses can override to check combo arguments etc.
// 例如:return skill.GetPlayer().GetComboarg().GetValue(0) == 5;
public virtual bool CheckComboSkExtraCondition(Skill skill) { return true; }
public virtual int GetIntroduction(Skill skill, StringBuilder descBuffer, string titleBuffer) { return 0; }
@@ -842,9 +842,6 @@ namespace BrewMonster.Scripts.Task
public void CheckAutoDelv(TaskInterface pTask)
{
ATaskTempl pTempl = null;
// TaskTemplMap::iterator it = m_AutoDelvMap.begin();
var it = m_AutoDelvMap[0];
uint ulCurTime = pTask.GetCurTime();
ActiveTaskList pLst = pTask.GetActiveTaskList();
@@ -874,10 +871,8 @@ namespace BrewMonster.Scripts.Task
if (!pTempl.IsValidState())
continue;
if (pTempl.CheckPrerequisite(pTask, pLst, ulCurTime) == 0)
{
pTempl.IncValidCount();
_notify_svr(pTask, ClientNotificationConstants.TASK_CLT_NOTIFY_AUTO_DELV, (ushort)(pTempl.m_FixedData.m_ID));
}
@@ -887,7 +882,9 @@ namespace BrewMonster.Scripts.Task
public void UpdateStatus(TaskInterface pTask)
{
// ΪCheckTitleƺݣֱȡƺ֮ǰܵ
if (!pTask.IsTitleDataReady()) return;
//TODO:Add -----bool CECHostPlayer::ProcessMessage(const ECMSG& Msg)---- feature to check if title data is ready.
//If enable now it will not create autotask
//if (!pTask.IsTitleDataReady()) return;
CheckAutoDelv(pTask);
// TODO: Implement other checks as needed

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