├── .gitignore ├── Demo.meta ├── Demo ├── Prefabs.meta ├── Prefabs │ ├── AimAtCursorGameplayCamera.prefab │ ├── AimAtCursorGameplayCamera.prefab.meta │ ├── AimAtCursorPlayerCharacterController.prefab │ ├── AimAtCursorPlayerCharacterController.prefab.meta │ ├── AimAtCursorPlayerCharacterController2D.prefab │ └── AimAtCursorPlayerCharacterController2D.prefab.meta ├── Scenes.meta └── Scenes │ ├── 00Init_2D_AimAtCursor.unity │ ├── 00Init_2D_AimAtCursor.unity.meta │ ├── 00Init_2D_AimAtCursorSettings.lighting │ ├── 00Init_2D_AimAtCursorSettings.lighting.meta │ ├── 00Init_AimAtCursor.unity │ ├── 00Init_AimAtCursor.unity.meta │ ├── 00Init_AimAtCursorSettings.lighting │ ├── 00Init_AimAtCursorSettings.lighting.meta │ ├── 00Init_MMO_2D_AimAtCursor.unity │ ├── 00Init_MMO_2D_AimAtCursor.unity.meta │ ├── 00Init_MMO_AimAtCursor.unity │ └── 00Init_MMO_AimAtCursor.unity.meta ├── LICENSE ├── README.md ├── Scripts.meta └── Scripts ├── AimAtCursorPlayerCharacterController.cs └── AimAtCursorPlayerCharacterController.cs.meta /.gitignore: -------------------------------------------------------------------------------- 1 | README.md.meta 2 | LICENSE.meta 3 | -------------------------------------------------------------------------------- /Demo.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3cb08db03c1edf249905b10d20d0a5fd 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Demo/Prefabs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 324bf6b2c9a14e8419e1781b3ea1ccd7 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Demo/Prefabs/AimAtCursorGameplayCamera.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1 &1278824955568960 4 | GameObject: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | serializedVersion: 6 10 | m_Component: 11 | - component: {fileID: 4983335410072664} 12 | - component: {fileID: 20186615803325660} 13 | - component: {fileID: 114548782499701980} 14 | - component: {fileID: 114185086765178122} 15 | - component: {fileID: 429217951621258790} 16 | m_Layer: 0 17 | m_Name: AimAtCursorGameplayCamera 18 | m_TagString: MainCamera 19 | m_Icon: {fileID: 0} 20 | m_NavMeshLayer: 0 21 | m_StaticEditorFlags: 0 22 | m_IsActive: 1 23 | --- !u!4 &4983335410072664 24 | Transform: 25 | m_ObjectHideFlags: 0 26 | m_CorrespondingSourceObject: {fileID: 0} 27 | m_PrefabInstance: {fileID: 0} 28 | m_PrefabAsset: {fileID: 0} 29 | m_GameObject: {fileID: 1278824955568960} 30 | serializedVersion: 2 31 | m_LocalRotation: {x: 0.34202018, y: 0, z: 0, w: 0.9396926} 32 | m_LocalPosition: {x: 0, y: 8.463451, z: -9.1925335} 33 | m_LocalScale: {x: 1, y: 1, z: 1} 34 | m_ConstrainProportionsScale: 0 35 | m_Children: 36 | - {fileID: 4108299210592674} 37 | m_Father: {fileID: 0} 38 | m_LocalEulerAnglesHint: {x: 45, y: 0, z: 0} 39 | --- !u!20 &20186615803325660 40 | Camera: 41 | m_ObjectHideFlags: 0 42 | m_CorrespondingSourceObject: {fileID: 0} 43 | m_PrefabInstance: {fileID: 0} 44 | m_PrefabAsset: {fileID: 0} 45 | m_GameObject: {fileID: 1278824955568960} 46 | m_Enabled: 1 47 | serializedVersion: 2 48 | m_ClearFlags: 1 49 | m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} 50 | m_projectionMatrixMode: 2 51 | m_GateFitMode: 2 52 | m_FOVAxisMode: 0 53 | m_Iso: 200 54 | m_ShutterSpeed: 0.005 55 | m_Aperture: 16 56 | m_FocusDistance: 10 57 | m_FocalLength: 50 58 | m_BladeCount: 5 59 | m_Curvature: {x: 2, y: 11} 60 | m_BarrelClipping: 0.25 61 | m_Anamorphism: 0 62 | m_SensorSize: {x: 70.41, y: 52.63} 63 | m_LensShift: {x: 0, y: 0} 64 | m_NormalizedViewPortRect: 65 | serializedVersion: 2 66 | x: 0 67 | y: 0 68 | width: 1 69 | height: 1 70 | near clip plane: 0.3 71 | far clip plane: 1000 72 | field of view: 55.515667 73 | orthographic: 0 74 | orthographic size: 5 75 | m_Depth: -1 76 | m_CullingMask: 77 | serializedVersion: 2 78 | m_Bits: 1997623 79 | m_RenderingPath: -1 80 | m_TargetTexture: {fileID: 0} 81 | m_TargetDisplay: 0 82 | m_TargetEye: 3 83 | m_HDR: 0 84 | m_AllowMSAA: 1 85 | m_AllowDynamicResolution: 0 86 | m_ForceIntoRT: 0 87 | m_OcclusionCulling: 1 88 | m_StereoConvergence: 10 89 | m_StereoSeparation: 0.022 90 | --- !u!114 &114548782499701980 91 | MonoBehaviour: 92 | m_ObjectHideFlags: 0 93 | m_CorrespondingSourceObject: {fileID: 0} 94 | m_PrefabInstance: {fileID: 0} 95 | m_PrefabAsset: {fileID: 0} 96 | m_GameObject: {fileID: 1278824955568960} 97 | m_Enabled: 1 98 | m_EditorHideFlags: 0 99 | m_Script: {fileID: 11500000, guid: 34e5f4512b7c9e94a80ec394fd3a8441, type: 3} 100 | m_Name: 101 | m_EditorClassIdentifier: 102 | targetCamera: {fileID: 20186615803325660} 103 | target: {fileID: 0} 104 | targetOffset: {x: 0, y: 0.75, z: 0} 105 | smoothFollow: 0 106 | followSmoothing: 10 107 | xRotation: 40 108 | yRotation: 0 109 | useTargetYRotation: 0 110 | zoomDistance: 12 111 | zoomByAspectRatio: 0 112 | zoomByAspectRatioSettings: 113 | - width: 16 114 | height: 9 115 | zoomDistance: 0.0001 116 | - width: 16 117 | height: 10 118 | zoomDistance: 1.75 119 | - width: 3 120 | height: 2 121 | zoomDistance: 3 122 | - width: 4 123 | height: 3 124 | zoomDistance: 5.5 125 | - width: 5 126 | height: 4 127 | zoomDistance: 7 128 | enableWallHitSpring: 0 129 | wallHitLayerMask: 130 | serializedVersion: 2 131 | m_Bits: 4294967295 132 | wallHitQueryTriggerInteraction: 1 133 | _targetPosition: {x: 0, y: 0.75, z: 0} 134 | _targetUp: {x: 0, y: 1, z: 0} 135 | _targetYRotation: 0 136 | xRotationAxisName: Mouse Y 137 | yRotationAxisName: Mouse X 138 | zoomAxisName: Mouse ScrollWheel 139 | updateRotation: 1 140 | updateRotationX: 0 141 | updateRotationY: 0 142 | updateZoom: 1 143 | limitXRotation: 1 144 | minXRotation: 40 145 | maxXRotation: 40 146 | smoothRotateX: 0 147 | rotateXDeacceleration: 10 148 | limitYRotation: 1 149 | minYRotation: 0 150 | maxYRotation: 0 151 | smoothRotateY: 0 152 | rotateYDeacceleration: 10 153 | startXRotation: 40 154 | startYRotation: 0 155 | rotationSpeed: 5 156 | rotationSpeedScale: 1 157 | limitZoomDistance: 1 158 | minZoomDistance: 12 159 | maxZoomDistance: 12 160 | smoothZoom: 0 161 | zoomDeacceleration: 10 162 | startZoomDistance: 12 163 | zoomSpeed: -5 164 | zoomSpeedScale: 1 165 | enableAimAssist: 0 166 | enableAimAssistX: 1 167 | enableAimAssistY: 1 168 | aimAssistRadius: 0.5 169 | aimAssistMinDistanceFromFollowingTarget: 3 170 | aimAssistDistance: 10 171 | aimAssistLayerMask: 172 | serializedVersion: 2 173 | m_Bits: 0 174 | aimAssistObstacleLayerMask: 175 | serializedVersion: 2 176 | m_Bits: 0 177 | aimAssistXSpeed: 10 178 | aimAssistYSpeed: 10 179 | aimAssistMaxAngleFromFollowingTarget: 360 180 | recoilReturnSpeed: 2 181 | recoilSmoothing: 15 182 | isSaveCamera: 0 183 | savePrefsPrefix: GAMEPLAY 184 | --- !u!114 &114185086765178122 185 | MonoBehaviour: 186 | m_ObjectHideFlags: 0 187 | m_CorrespondingSourceObject: {fileID: 0} 188 | m_PrefabInstance: {fileID: 0} 189 | m_PrefabAsset: {fileID: 0} 190 | m_GameObject: {fileID: 1278824955568960} 191 | m_Enabled: 1 192 | m_EditorHideFlags: 0 193 | m_Script: {fileID: 11500000, guid: 96cc5458343e2534f8507d8b3a781eb4, type: 3} 194 | m_Name: 195 | m_EditorClassIdentifier: 196 | awakeAlpha: 1 197 | currentFadeState: 2 198 | fadeSpeed: 0.5 199 | --- !u!114 &429217951621258790 200 | MonoBehaviour: 201 | m_ObjectHideFlags: 0 202 | m_CorrespondingSourceObject: {fileID: 0} 203 | m_PrefabInstance: {fileID: 0} 204 | m_PrefabAsset: {fileID: 0} 205 | m_GameObject: {fileID: 1278824955568960} 206 | m_Enabled: 1 207 | m_EditorHideFlags: 0 208 | m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} 209 | m_Name: 210 | m_EditorClassIdentifier: 211 | m_RenderShadows: 1 212 | m_RequiresDepthTextureOption: 2 213 | m_RequiresOpaqueTextureOption: 2 214 | m_CameraType: 0 215 | m_Cameras: 216 | - {fileID: 20441234044108766} 217 | m_RendererIndex: -1 218 | m_VolumeLayerMask: 219 | serializedVersion: 2 220 | m_Bits: 1 221 | m_VolumeTrigger: {fileID: 0} 222 | m_VolumeFrameworkUpdateModeOption: 2 223 | m_RenderPostProcessing: 0 224 | m_Antialiasing: 0 225 | m_AntialiasingQuality: 2 226 | m_StopNaN: 0 227 | m_Dithering: 0 228 | m_ClearDepth: 1 229 | m_AllowXRRendering: 1 230 | m_AllowHDROutput: 1 231 | m_UseScreenCoordOverride: 0 232 | m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0} 233 | m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0} 234 | m_RequiresDepthTexture: 0 235 | m_RequiresColorTexture: 0 236 | m_Version: 2 237 | m_TaaSettings: 238 | m_Quality: 3 239 | m_FrameInfluence: 0.1 240 | m_JitterScale: 1 241 | m_MipBias: 0 242 | m_VarianceClampScale: 0.9 243 | m_ContrastAdaptiveSharpening: 0 244 | --- !u!1 &1875850924656240 245 | GameObject: 246 | m_ObjectHideFlags: 0 247 | m_CorrespondingSourceObject: {fileID: 0} 248 | m_PrefabInstance: {fileID: 0} 249 | m_PrefabAsset: {fileID: 0} 250 | serializedVersion: 6 251 | m_Component: 252 | - component: {fileID: 4108299210592674} 253 | - component: {fileID: 20441234044108766} 254 | - component: {fileID: 114725999672488462} 255 | - component: {fileID: 4784686526773626604} 256 | m_Layer: 0 257 | m_Name: CharacterUICamera 258 | m_TagString: Untagged 259 | m_Icon: {fileID: 0} 260 | m_NavMeshLayer: 0 261 | m_StaticEditorFlags: 0 262 | m_IsActive: 1 263 | --- !u!4 &4108299210592674 264 | Transform: 265 | m_ObjectHideFlags: 0 266 | m_CorrespondingSourceObject: {fileID: 0} 267 | m_PrefabInstance: {fileID: 0} 268 | m_PrefabAsset: {fileID: 0} 269 | m_GameObject: {fileID: 1875850924656240} 270 | serializedVersion: 2 271 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 272 | m_LocalPosition: {x: 0, y: 0, z: 0} 273 | m_LocalScale: {x: 1, y: 1, z: 1} 274 | m_ConstrainProportionsScale: 0 275 | m_Children: [] 276 | m_Father: {fileID: 4983335410072664} 277 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 278 | --- !u!20 &20441234044108766 279 | Camera: 280 | m_ObjectHideFlags: 0 281 | m_CorrespondingSourceObject: {fileID: 0} 282 | m_PrefabInstance: {fileID: 0} 283 | m_PrefabAsset: {fileID: 0} 284 | m_GameObject: {fileID: 1875850924656240} 285 | m_Enabled: 1 286 | serializedVersion: 2 287 | m_ClearFlags: 3 288 | m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} 289 | m_projectionMatrixMode: 1 290 | m_GateFitMode: 2 291 | m_FOVAxisMode: 0 292 | m_Iso: 200 293 | m_ShutterSpeed: 0.005 294 | m_Aperture: 16 295 | m_FocusDistance: 10 296 | m_FocalLength: 50 297 | m_BladeCount: 5 298 | m_Curvature: {x: 2, y: 11} 299 | m_BarrelClipping: 0.25 300 | m_Anamorphism: 0 301 | m_SensorSize: {x: 36, y: 24} 302 | m_LensShift: {x: 0, y: 0} 303 | m_NormalizedViewPortRect: 304 | serializedVersion: 2 305 | x: 0 306 | y: 0 307 | width: 1 308 | height: 1 309 | near clip plane: 0.3 310 | far clip plane: 1000 311 | field of view: 60 312 | orthographic: 0 313 | orthographic size: 5 314 | m_Depth: 0 315 | m_CullingMask: 316 | serializedVersion: 2 317 | m_Bits: 32768 318 | m_RenderingPath: 1 319 | m_TargetTexture: {fileID: 0} 320 | m_TargetDisplay: 0 321 | m_TargetEye: 3 322 | m_HDR: 0 323 | m_AllowMSAA: 1 324 | m_AllowDynamicResolution: 0 325 | m_ForceIntoRT: 0 326 | m_OcclusionCulling: 0 327 | m_StereoConvergence: 10 328 | m_StereoSeparation: 0.022 329 | --- !u!114 &114725999672488462 330 | MonoBehaviour: 331 | m_ObjectHideFlags: 0 332 | m_CorrespondingSourceObject: {fileID: 0} 333 | m_PrefabInstance: {fileID: 0} 334 | m_PrefabAsset: {fileID: 0} 335 | m_GameObject: {fileID: 1875850924656240} 336 | m_Enabled: 1 337 | m_EditorHideFlags: 0 338 | m_Script: {fileID: 11500000, guid: 1e61383545c180d4c86325689616578a, type: 3} 339 | m_Name: 340 | m_EditorClassIdentifier: 341 | copyFromCamera: {fileID: 20186615803325660} 342 | copyToCamera: {fileID: 20441234044108766} 343 | copyOrthographic: 1 344 | copyOrthographicSize: 1 345 | copyNearClipPlane: 1 346 | copyFarClipPlane: 1 347 | copyFieldOfView: 1 348 | copyRect: 1 349 | copyUsePhysicalProperties: 1 350 | copyFocalLength: 1 351 | copySensorSize: 1 352 | copyLensShift: 1 353 | --- !u!114 &4784686526773626604 354 | MonoBehaviour: 355 | m_ObjectHideFlags: 0 356 | m_CorrespondingSourceObject: {fileID: 0} 357 | m_PrefabInstance: {fileID: 0} 358 | m_PrefabAsset: {fileID: 0} 359 | m_GameObject: {fileID: 1875850924656240} 360 | m_Enabled: 1 361 | m_EditorHideFlags: 0 362 | m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} 363 | m_Name: 364 | m_EditorClassIdentifier: 365 | m_RenderShadows: 1 366 | m_RequiresDepthTextureOption: 2 367 | m_RequiresOpaqueTextureOption: 2 368 | m_CameraType: 1 369 | m_Cameras: [] 370 | m_RendererIndex: -1 371 | m_VolumeLayerMask: 372 | serializedVersion: 2 373 | m_Bits: 1 374 | m_VolumeTrigger: {fileID: 0} 375 | m_VolumeFrameworkUpdateModeOption: 2 376 | m_RenderPostProcessing: 0 377 | m_Antialiasing: 0 378 | m_AntialiasingQuality: 2 379 | m_StopNaN: 0 380 | m_Dithering: 0 381 | m_ClearDepth: 1 382 | m_AllowXRRendering: 1 383 | m_AllowHDROutput: 1 384 | m_UseScreenCoordOverride: 0 385 | m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0} 386 | m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0} 387 | m_RequiresDepthTexture: 0 388 | m_RequiresColorTexture: 0 389 | m_Version: 2 390 | m_TaaSettings: 391 | m_Quality: 3 392 | m_FrameInfluence: 0.1 393 | m_JitterScale: 1 394 | m_MipBias: 0 395 | m_VarianceClampScale: 0.9 396 | m_ContrastAdaptiveSharpening: 0 397 | -------------------------------------------------------------------------------- /Demo/Prefabs/AimAtCursorGameplayCamera.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e51a2d6997fb2b94685a5e956d473ce3 3 | timeCreated: 1519917205 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | externalObjects: {} 7 | mainObjectFileID: 100100000 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Demo/Prefabs/AimAtCursorPlayerCharacterController.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1001 &100100000 4 | Prefab: 5 | m_ObjectHideFlags: 1 6 | serializedVersion: 2 7 | m_Modification: 8 | m_TransformParent: {fileID: 0} 9 | m_Modifications: [] 10 | m_RemovedComponents: [] 11 | m_SourcePrefab: {fileID: 0} 12 | m_RootGameObject: {fileID: 1287010141937558} 13 | m_IsPrefabAsset: 1 14 | --- !u!1 &1287010141937558 15 | GameObject: 16 | m_ObjectHideFlags: 0 17 | m_CorrespondingSourceObject: {fileID: 0} 18 | m_PrefabInternal: {fileID: 100100000} 19 | serializedVersion: 6 20 | m_Component: 21 | - component: {fileID: 4257762974765350} 22 | - component: {fileID: 114546275785678858} 23 | m_Layer: 0 24 | m_Name: AimAtCursorPlayerCharacterController 25 | m_TagString: Untagged 26 | m_Icon: {fileID: 0} 27 | m_NavMeshLayer: 0 28 | m_StaticEditorFlags: 0 29 | m_IsActive: 1 30 | --- !u!4 &4257762974765350 31 | Transform: 32 | m_ObjectHideFlags: 1 33 | m_CorrespondingSourceObject: {fileID: 0} 34 | m_PrefabInternal: {fileID: 100100000} 35 | m_GameObject: {fileID: 1287010141937558} 36 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 37 | m_LocalPosition: {x: 0, y: 0, z: 0} 38 | m_LocalScale: {x: 1, y: 1, z: 1} 39 | m_Children: [] 40 | m_Father: {fileID: 0} 41 | m_RootOrder: 0 42 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 43 | --- !u!114 &114546275785678858 44 | MonoBehaviour: 45 | m_ObjectHideFlags: 1 46 | m_CorrespondingSourceObject: {fileID: 0} 47 | m_PrefabInternal: {fileID: 100100000} 48 | m_GameObject: {fileID: 1287010141937558} 49 | m_Enabled: 1 50 | m_EditorHideFlags: 0 51 | m_Script: {fileID: 11500000, guid: b75a3cde61e98194881d58698bccf357, type: 3} 52 | m_Name: 53 | m_EditorClassIdentifier: 54 | gameplayCameraPrefab: {fileID: 114548782499701980, guid: e51a2d6997fb2b94685a5e956d473ce3, 55 | type: 2} 56 | minimapCameraPrefab: {fileID: 114548782499701980, guid: 280aed852e1f49946840d29f4118a058, 57 | type: 2} 58 | -------------------------------------------------------------------------------- /Demo/Prefabs/AimAtCursorPlayerCharacterController.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2febf54e40f845a43860122997ffb356 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 100100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Demo/Prefabs/AimAtCursorPlayerCharacterController2D.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1001 &100100000 4 | Prefab: 5 | m_ObjectHideFlags: 1 6 | serializedVersion: 2 7 | m_Modification: 8 | m_TransformParent: {fileID: 0} 9 | m_Modifications: [] 10 | m_RemovedComponents: [] 11 | m_SourcePrefab: {fileID: 0} 12 | m_RootGameObject: {fileID: 1287010141937558} 13 | m_IsPrefabAsset: 1 14 | --- !u!1 &1287010141937558 15 | GameObject: 16 | m_ObjectHideFlags: 0 17 | m_CorrespondingSourceObject: {fileID: 0} 18 | m_PrefabInternal: {fileID: 100100000} 19 | serializedVersion: 6 20 | m_Component: 21 | - component: {fileID: 4257762974765350} 22 | - component: {fileID: 114546275785678858} 23 | m_Layer: 0 24 | m_Name: AimAtCursorPlayerCharacterController2D 25 | m_TagString: Untagged 26 | m_Icon: {fileID: 0} 27 | m_NavMeshLayer: 0 28 | m_StaticEditorFlags: 0 29 | m_IsActive: 1 30 | --- !u!4 &4257762974765350 31 | Transform: 32 | m_ObjectHideFlags: 1 33 | m_CorrespondingSourceObject: {fileID: 0} 34 | m_PrefabInternal: {fileID: 100100000} 35 | m_GameObject: {fileID: 1287010141937558} 36 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 37 | m_LocalPosition: {x: 0, y: 0, z: 0} 38 | m_LocalScale: {x: 1, y: 1, z: 1} 39 | m_Children: [] 40 | m_Father: {fileID: 0} 41 | m_RootOrder: 0 42 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 43 | --- !u!114 &114546275785678858 44 | MonoBehaviour: 45 | m_ObjectHideFlags: 1 46 | m_CorrespondingSourceObject: {fileID: 0} 47 | m_PrefabInternal: {fileID: 100100000} 48 | m_GameObject: {fileID: 1287010141937558} 49 | m_Enabled: 1 50 | m_EditorHideFlags: 0 51 | m_Script: {fileID: 11500000, guid: b75a3cde61e98194881d58698bccf357, type: 3} 52 | m_Name: 53 | m_EditorClassIdentifier: 54 | gameplayCameraPrefab: {fileID: 114959064815439586, guid: 251ee6996d91e6a43ac8b034e16ec386, 55 | type: 2} 56 | minimapCameraPrefab: {fileID: 114293473902564364, guid: 17b7c56f66b95584583a9e4e6224379e, 57 | type: 2} 58 | -------------------------------------------------------------------------------- /Demo/Prefabs/AimAtCursorPlayerCharacterController2D.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 371fb755531a8b045b879463a1f86dd4 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 100100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Demo/Scenes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: de0e0778ee861e3488207035fe3422d1 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Demo/Scenes/00Init_2D_AimAtCursor.unity: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!29 &1 4 | OcclusionCullingSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_OcclusionBakeSettings: 8 | smallestOccluder: 5 9 | smallestHole: 0.25 10 | backfaceThreshold: 100 11 | m_SceneGUID: 00000000000000000000000000000000 12 | m_OcclusionCullingData: {fileID: 0} 13 | --- !u!104 &2 14 | RenderSettings: 15 | m_ObjectHideFlags: 0 16 | serializedVersion: 9 17 | m_Fog: 0 18 | m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} 19 | m_FogMode: 3 20 | m_FogDensity: 0.01 21 | m_LinearFogStart: 0 22 | m_LinearFogEnd: 300 23 | m_AmbientSkyColor: {r: 0.61960787, g: 0.61960787, b: 0.61960787, a: 1} 24 | m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} 25 | m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} 26 | m_AmbientIntensity: 1 27 | m_AmbientMode: 3 28 | m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} 29 | m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} 30 | m_HaloStrength: 0.5 31 | m_FlareStrength: 1 32 | m_FlareFadeSpeed: 3 33 | m_HaloTexture: {fileID: 0} 34 | m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} 35 | m_DefaultReflectionMode: 0 36 | m_DefaultReflectionResolution: 128 37 | m_ReflectionBounces: 1 38 | m_ReflectionIntensity: 1 39 | m_CustomReflection: {fileID: 0} 40 | m_Sun: {fileID: 0} 41 | m_UseRadianceAmbientProbe: 0 42 | --- !u!157 &3 43 | LightmapSettings: 44 | m_ObjectHideFlags: 0 45 | serializedVersion: 12 46 | m_GIWorkflowMode: 0 47 | m_GISettings: 48 | serializedVersion: 2 49 | m_BounceScale: 1 50 | m_IndirectOutputScale: 1 51 | m_AlbedoBoost: 1 52 | m_EnvironmentLightingMode: 1 53 | m_EnableBakedLightmaps: 1 54 | m_EnableRealtimeLightmaps: 1 55 | m_LightmapEditorSettings: 56 | serializedVersion: 12 57 | m_Resolution: 2 58 | m_BakeResolution: 40 59 | m_AtlasSize: 1024 60 | m_AO: 0 61 | m_AOMaxDistance: 1 62 | m_CompAOExponent: 1 63 | m_CompAOExponentDirect: 0 64 | m_ExtractAmbientOcclusion: 0 65 | m_Padding: 2 66 | m_LightmapParameters: {fileID: 0} 67 | m_LightmapsBakeMode: 1 68 | m_TextureCompression: 1 69 | m_FinalGather: 0 70 | m_FinalGatherFiltering: 1 71 | m_FinalGatherRayCount: 256 72 | m_ReflectionCompression: 2 73 | m_MixedBakeMode: 2 74 | m_BakeBackend: 0 75 | m_PVRSampling: 1 76 | m_PVRDirectSampleCount: 32 77 | m_PVRSampleCount: 500 78 | m_PVRBounces: 2 79 | m_PVREnvironmentSampleCount: 500 80 | m_PVREnvironmentReferencePointCount: 2048 81 | m_PVRFilteringMode: 2 82 | m_PVRDenoiserTypeDirect: 0 83 | m_PVRDenoiserTypeIndirect: 0 84 | m_PVRDenoiserTypeAO: 0 85 | m_PVRFilterTypeDirect: 0 86 | m_PVRFilterTypeIndirect: 0 87 | m_PVRFilterTypeAO: 0 88 | m_PVREnvironmentMIS: 0 89 | m_PVRCulling: 1 90 | m_PVRFilteringGaussRadiusDirect: 1 91 | m_PVRFilteringGaussRadiusIndirect: 5 92 | m_PVRFilteringGaussRadiusAO: 2 93 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5 94 | m_PVRFilteringAtrousPositionSigmaIndirect: 2 95 | m_PVRFilteringAtrousPositionSigmaAO: 1 96 | m_ExportTrainingData: 0 97 | m_TrainingDataDestination: TrainingData 98 | m_LightProbeSampleCountMultiplier: 4 99 | m_LightingDataAsset: {fileID: 0} 100 | m_LightingSettings: {fileID: 4890085278179872738, guid: b845d5bcbcd41654599df5f4420d9ac7, 101 | type: 2} 102 | --- !u!196 &4 103 | NavMeshSettings: 104 | serializedVersion: 2 105 | m_ObjectHideFlags: 0 106 | m_BuildSettings: 107 | serializedVersion: 3 108 | agentTypeID: 0 109 | agentRadius: 0.5 110 | agentHeight: 2 111 | agentSlope: 45 112 | agentClimb: 0.4 113 | ledgeDropHeight: 0 114 | maxJumpAcrossDistance: 0 115 | minRegionArea: 2 116 | manualCellSize: 0 117 | cellSize: 0.16666667 118 | manualTileSize: 0 119 | tileSize: 256 120 | buildHeightMesh: 0 121 | maxJobWorkers: 0 122 | preserveTilesOutsideBounds: 0 123 | debug: 124 | m_Flags: 0 125 | m_NavMeshData: {fileID: 0} 126 | --- !u!1 &8174912 127 | GameObject: 128 | m_ObjectHideFlags: 0 129 | m_CorrespondingSourceObject: {fileID: 0} 130 | m_PrefabInstance: {fileID: 0} 131 | m_PrefabAsset: {fileID: 0} 132 | serializedVersion: 6 133 | m_Component: 134 | - component: {fileID: 8174917} 135 | - component: {fileID: 8174915} 136 | - component: {fileID: 8174913} 137 | m_Layer: 0 138 | m_Name: NetworkManager 139 | m_TagString: Untagged 140 | m_Icon: {fileID: 0} 141 | m_NavMeshLayer: 0 142 | m_StaticEditorFlags: 0 143 | m_IsActive: 1 144 | --- !u!114 &8174913 145 | MonoBehaviour: 146 | m_ObjectHideFlags: 0 147 | m_CorrespondingSourceObject: {fileID: 0} 148 | m_PrefabInstance: {fileID: 0} 149 | m_PrefabAsset: {fileID: 0} 150 | m_GameObject: {fileID: 8174912} 151 | m_Enabled: 1 152 | m_EditorHideFlags: 0 153 | m_Script: {fileID: 11500000, guid: ee13c7c5631aacf45bcc60e5a5a8939b, type: 3} 154 | m_Name: 155 | m_EditorClassIdentifier: 156 | currentLogLevel: 2 157 | networkAddress: localhost 158 | networkPort: 7770 159 | useWebSocket: 0 160 | webSocketSecure: 0 161 | webSocketCertificateFilePath: 162 | webSocketCertificatePassword: 163 | updateFps: 20 164 | maxConnections: 4 165 | transportFactory: {fileID: 0} 166 | packetVersion: 1 167 | pingDuration: 1 168 | doNotEnterGameOnConnect: 0 169 | doNotReadyOnSceneLoaded: 0 170 | doNotDestroyOnSceneChanges: 0 171 | loadOfflineSceneWhenClientStopped: 1 172 | auctionHouseMessageTypes: 173 | createAuctionRequestType: 1300 174 | bidRequestType: 1301 175 | buyoutRequestType: 1302 176 | cancelAuctionRequestType: 1304 177 | auctionHouseServiceUrl: http://localhost:9800 178 | auctionHouseServiceUrlForClient: http://localhost:9800 179 | auctionHouseSecretKey: secret 180 | dailyRewardingServiceUrlForClient: http://localhost:9803 181 | hitToSomeoneNotifyMessageId: 2001 182 | hitToSomeoneNotifyDataChannel: 0 183 | hitToSomeoneNotifyDeliveryMethod: 4 184 | hitFromSomeoneNotifyMessageId: 2002 185 | hitFromSomeoneNotifyDataChannel: 0 186 | hitFromSomeoneNotifyDeliveryMethod: 4 187 | killNotifyMessageId: 2000 188 | killNotifyDataChannel: 0 189 | killNotifyDeliveryMethod: 1 190 | getOnlineCharacterDataRequestType: 1500 191 | getOnlineCharactersRequestType: 1501 192 | useUnityAutoPhysicSyncTransform: 1 193 | onSpawnEntitiesStart: 194 | m_PersistentCalls: 195 | m_Calls: 196 | - m_Target: {fileID: 1803291193} 197 | m_TargetAssemblyTypeName: 198 | m_MethodName: OnLoadSceneStart 199 | m_Mode: 0 200 | m_Arguments: 201 | m_ObjectArgument: {fileID: 0} 202 | m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine 203 | m_IntArgument: 0 204 | m_FloatArgument: 0 205 | m_StringArgument: 206 | m_BoolArgument: 0 207 | m_CallState: 2 208 | onSpawnEntitiesProgress: 209 | m_PersistentCalls: 210 | m_Calls: 211 | - m_Target: {fileID: 1803291193} 212 | m_TargetAssemblyTypeName: 213 | m_MethodName: OnLoadSceneProgress 214 | m_Mode: 0 215 | m_Arguments: 216 | m_ObjectArgument: {fileID: 0} 217 | m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine 218 | m_IntArgument: 0 219 | m_FloatArgument: 0 220 | m_StringArgument: 221 | m_BoolArgument: 0 222 | m_CallState: 2 223 | onSpawnEntitiesFinish: 224 | m_PersistentCalls: 225 | m_Calls: 226 | - m_Target: {fileID: 1803291193} 227 | m_TargetAssemblyTypeName: 228 | m_MethodName: OnLoadSceneFinish 229 | m_Mode: 0 230 | m_Arguments: 231 | m_ObjectArgument: {fileID: 0} 232 | m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine 233 | m_IntArgument: 0 234 | m_FloatArgument: 0 235 | m_StringArgument: 236 | m_BoolArgument: 0 237 | m_CallState: 2 238 | guildWarMessageTypes: 239 | statusMsgType: 1500 240 | recoverMonstersWhenGuildWarRoundEnd: 1 241 | guildWarMailSenderId: GUILDWAR 242 | guildWarMailSenderName: Guild War Manager 243 | guildWarServiceUrl: http://localhost:9801 244 | guildWarServiceUrlForClient: http://localhost:9801 245 | guildWarSecretKey: secret 246 | autoSaveDuration: 2 247 | startType: 0 248 | selectedCharacterSummonBuffs: [] 249 | selectedCharacterStorageItems: [] 250 | enableGmCommands: 0 251 | writeAddonLog: 0 252 | --- !u!114 &8174915 253 | MonoBehaviour: 254 | m_ObjectHideFlags: 0 255 | m_CorrespondingSourceObject: {fileID: 0} 256 | m_PrefabInstance: {fileID: 0} 257 | m_PrefabAsset: {fileID: 0} 258 | m_GameObject: {fileID: 8174912} 259 | m_Enabled: 1 260 | m_EditorHideFlags: 0 261 | m_Script: {fileID: 11500000, guid: 4884384bff23a9c439e7ce9681ea5724, type: 3} 262 | m_Name: 263 | m_EditorClassIdentifier: 264 | playerSpawnRandomly: 0 265 | playerPrefab: {fileID: 0} 266 | spawnablePrefabs: [] 267 | offlineScene: 268 | sceneAsset: {fileID: 0} 269 | sceneName: 270 | onlineScene: 271 | sceneAsset: {fileID: 0} 272 | sceneName: 273 | addressablePlayerPrefab: 274 | m_AssetGUID: 275 | m_SubObjectName: 276 | m_SubObjectType: 277 | m_EditorAssetChanged: 0 278 | hashAssetId: 0 279 | addressableSpawnablePrefabs: [] 280 | addressableOfflineScene: 281 | m_AssetGUID: 282 | m_SubObjectName: 283 | m_SubObjectType: 284 | m_EditorAssetChanged: 0 285 | sceneName: 286 | addressableOnlineScene: 287 | m_AssetGUID: 288 | m_SubObjectName: 289 | m_SubObjectType: 290 | m_EditorAssetChanged: 0 291 | sceneName: 292 | onInitialize: 293 | m_PersistentCalls: 294 | m_Calls: [] 295 | onLoadSceneStart: 296 | m_PersistentCalls: 297 | m_Calls: 298 | - m_Target: {fileID: 1803291193} 299 | m_TargetAssemblyTypeName: 300 | m_MethodName: OnLoadSceneStart 301 | m_Mode: 0 302 | m_Arguments: 303 | m_ObjectArgument: {fileID: 0} 304 | m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine 305 | m_IntArgument: 0 306 | m_FloatArgument: 0 307 | m_StringArgument: 308 | m_BoolArgument: 0 309 | m_CallState: 2 310 | onLoadSceneProgress: 311 | m_PersistentCalls: 312 | m_Calls: 313 | - m_Target: {fileID: 1803291193} 314 | m_TargetAssemblyTypeName: 315 | m_MethodName: OnLoadSceneProgress 316 | m_Mode: 0 317 | m_Arguments: 318 | m_ObjectArgument: {fileID: 0} 319 | m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine 320 | m_IntArgument: 0 321 | m_FloatArgument: 0 322 | m_StringArgument: 323 | m_BoolArgument: 0 324 | m_CallState: 2 325 | onLoadSceneFinish: 326 | m_PersistentCalls: 327 | m_Calls: 328 | - m_Target: {fileID: 1803291193} 329 | m_TargetAssemblyTypeName: 330 | m_MethodName: OnLoadSceneFinish 331 | m_Mode: 0 332 | m_Arguments: 333 | m_ObjectArgument: {fileID: 0} 334 | m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine 335 | m_IntArgument: 0 336 | m_FloatArgument: 0 337 | m_StringArgument: 338 | m_BoolArgument: 0 339 | m_CallState: 2 340 | onSceneFileSizeRetrieving: 341 | m_PersistentCalls: 342 | m_Calls: [] 343 | onSceneFileSizeRetrieved: 344 | m_PersistentCalls: 345 | m_Calls: [] 346 | onSceneDepsDownloading: 347 | m_PersistentCalls: 348 | m_Calls: [] 349 | onSceneDepsFileDownloading: 350 | m_PersistentCalls: 351 | m_Calls: [] 352 | onSceneDepsDownloaded: 353 | m_PersistentCalls: 354 | m_Calls: [] 355 | onLoadAdditiveSceneStart: 356 | m_PersistentCalls: 357 | m_Calls: [] 358 | onLoadAdditiveSceneProgress: 359 | m_PersistentCalls: 360 | m_Calls: [] 361 | onLoadAdditiveSceneFinish: 362 | m_PersistentCalls: 363 | m_Calls: [] 364 | onObjectSpawn: 365 | m_PersistentCalls: 366 | m_Calls: [] 367 | onObjectDestroy: 368 | m_PersistentCalls: 369 | m_Calls: [] 370 | disablePooling: 0 371 | --- !u!4 &8174917 372 | Transform: 373 | m_ObjectHideFlags: 0 374 | m_CorrespondingSourceObject: {fileID: 0} 375 | m_PrefabInstance: {fileID: 0} 376 | m_PrefabAsset: {fileID: 0} 377 | m_GameObject: {fileID: 8174912} 378 | serializedVersion: 2 379 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 380 | m_LocalPosition: {x: 0, y: 0, z: 0} 381 | m_LocalScale: {x: 1, y: 1, z: 1} 382 | m_ConstrainProportionsScale: 0 383 | m_Children: [] 384 | m_Father: {fileID: 0} 385 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 386 | --- !u!1 &660141364 387 | GameObject: 388 | m_ObjectHideFlags: 0 389 | m_CorrespondingSourceObject: {fileID: 0} 390 | m_PrefabInstance: {fileID: 0} 391 | m_PrefabAsset: {fileID: 0} 392 | serializedVersion: 6 393 | m_Component: 394 | - component: {fileID: 660141367} 395 | - component: {fileID: 660141366} 396 | - component: {fileID: 660141365} 397 | m_Layer: 0 398 | m_Name: EventSystem 399 | m_TagString: Untagged 400 | m_Icon: {fileID: 0} 401 | m_NavMeshLayer: 0 402 | m_StaticEditorFlags: 0 403 | m_IsActive: 1 404 | --- !u!114 &660141365 405 | MonoBehaviour: 406 | m_ObjectHideFlags: 0 407 | m_CorrespondingSourceObject: {fileID: 0} 408 | m_PrefabInstance: {fileID: 0} 409 | m_PrefabAsset: {fileID: 0} 410 | m_GameObject: {fileID: 660141364} 411 | m_Enabled: 1 412 | m_EditorHideFlags: 0 413 | m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} 414 | m_Name: 415 | m_EditorClassIdentifier: 416 | m_SendPointerHoverToParent: 1 417 | m_HorizontalAxis: Horizontal 418 | m_VerticalAxis: Vertical 419 | m_SubmitButton: Submit 420 | m_CancelButton: Cancel 421 | m_InputActionsPerSecond: 10 422 | m_RepeatDelay: 0.5 423 | m_ForceModuleActive: 0 424 | --- !u!114 &660141366 425 | MonoBehaviour: 426 | m_ObjectHideFlags: 0 427 | m_CorrespondingSourceObject: {fileID: 0} 428 | m_PrefabInstance: {fileID: 0} 429 | m_PrefabAsset: {fileID: 0} 430 | m_GameObject: {fileID: 660141364} 431 | m_Enabled: 1 432 | m_EditorHideFlags: 0 433 | m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} 434 | m_Name: 435 | m_EditorClassIdentifier: 436 | m_FirstSelected: {fileID: 0} 437 | m_sendNavigationEvents: 1 438 | m_DragThreshold: 5 439 | --- !u!4 &660141367 440 | Transform: 441 | m_ObjectHideFlags: 0 442 | m_CorrespondingSourceObject: {fileID: 0} 443 | m_PrefabInstance: {fileID: 0} 444 | m_PrefabAsset: {fileID: 0} 445 | m_GameObject: {fileID: 660141364} 446 | serializedVersion: 2 447 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 448 | m_LocalPosition: {x: 0, y: 0, z: 0} 449 | m_LocalScale: {x: 1, y: 1, z: 1} 450 | m_ConstrainProportionsScale: 0 451 | m_Children: [] 452 | m_Father: {fileID: 0} 453 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 454 | --- !u!1 &694651797 455 | GameObject: 456 | m_ObjectHideFlags: 0 457 | m_CorrespondingSourceObject: {fileID: 0} 458 | m_PrefabInstance: {fileID: 0} 459 | m_PrefabAsset: {fileID: 0} 460 | serializedVersion: 6 461 | m_Component: 462 | - component: {fileID: 694651799} 463 | - component: {fileID: 694651798} 464 | - component: {fileID: 694651800} 465 | m_Layer: 0 466 | m_Name: Directional Light 467 | m_TagString: Untagged 468 | m_Icon: {fileID: 0} 469 | m_NavMeshLayer: 0 470 | m_StaticEditorFlags: 4294967295 471 | m_IsActive: 1 472 | --- !u!108 &694651798 473 | Light: 474 | m_ObjectHideFlags: 0 475 | m_CorrespondingSourceObject: {fileID: 0} 476 | m_PrefabInstance: {fileID: 0} 477 | m_PrefabAsset: {fileID: 0} 478 | m_GameObject: {fileID: 694651797} 479 | m_Enabled: 1 480 | serializedVersion: 10 481 | m_Type: 1 482 | m_Shape: 0 483 | m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} 484 | m_Intensity: 1 485 | m_Range: 10 486 | m_SpotAngle: 30 487 | m_InnerSpotAngle: 21.80208 488 | m_CookieSize: 10 489 | m_Shadows: 490 | m_Type: 2 491 | m_Resolution: -1 492 | m_CustomResolution: -1 493 | m_Strength: 1 494 | m_Bias: 0.05 495 | m_NormalBias: 0.4 496 | m_NearPlane: 0.2 497 | m_CullingMatrixOverride: 498 | e00: 1 499 | e01: 0 500 | e02: 0 501 | e03: 0 502 | e10: 0 503 | e11: 1 504 | e12: 0 505 | e13: 0 506 | e20: 0 507 | e21: 0 508 | e22: 1 509 | e23: 0 510 | e30: 0 511 | e31: 0 512 | e32: 0 513 | e33: 1 514 | m_UseCullingMatrixOverride: 0 515 | m_Cookie: {fileID: 0} 516 | m_DrawHalo: 0 517 | m_Flare: {fileID: 0} 518 | m_RenderMode: 0 519 | m_CullingMask: 520 | serializedVersion: 2 521 | m_Bits: 4294967295 522 | m_RenderingLayerMask: 1 523 | m_Lightmapping: 1 524 | m_LightShadowCasterMode: 0 525 | m_AreaSize: {x: 1, y: 1} 526 | m_BounceIntensity: 1 527 | m_ColorTemperature: 6570 528 | m_UseColorTemperature: 0 529 | m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} 530 | m_UseBoundingSphereOverride: 0 531 | m_UseViewFrustumForShadowCasterCull: 1 532 | m_ShadowRadius: 0 533 | m_ShadowAngle: 0 534 | --- !u!4 &694651799 535 | Transform: 536 | m_ObjectHideFlags: 0 537 | m_CorrespondingSourceObject: {fileID: 0} 538 | m_PrefabInstance: {fileID: 0} 539 | m_PrefabAsset: {fileID: 0} 540 | m_GameObject: {fileID: 694651797} 541 | serializedVersion: 2 542 | m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} 543 | m_LocalPosition: {x: 0, y: 3, z: 0} 544 | m_LocalScale: {x: 1, y: 1, z: 1} 545 | m_ConstrainProportionsScale: 0 546 | m_Children: [] 547 | m_Father: {fileID: 0} 548 | m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} 549 | --- !u!114 &694651800 550 | MonoBehaviour: 551 | m_ObjectHideFlags: 0 552 | m_CorrespondingSourceObject: {fileID: 0} 553 | m_PrefabInstance: {fileID: 0} 554 | m_PrefabAsset: {fileID: 0} 555 | m_GameObject: {fileID: 694651797} 556 | m_Enabled: 1 557 | m_EditorHideFlags: 0 558 | m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3} 559 | m_Name: 560 | m_EditorClassIdentifier: 561 | m_Version: 3 562 | m_UsePipelineSettings: 1 563 | m_AdditionalLightsShadowResolutionTier: 2 564 | m_LightLayerMask: 1 565 | m_RenderingLayers: 1 566 | m_CustomShadowLayers: 0 567 | m_ShadowLayerMask: 1 568 | m_ShadowRenderingLayers: 1 569 | m_LightCookieSize: {x: 1, y: 1} 570 | m_LightCookieOffset: {x: 0, y: 0} 571 | m_SoftShadowQuality: 0 572 | --- !u!1001 &846140300 573 | PrefabInstance: 574 | m_ObjectHideFlags: 0 575 | serializedVersion: 2 576 | m_Modification: 577 | serializedVersion: 3 578 | m_TransformParent: {fileID: 0} 579 | m_Modifications: 580 | - target: {fileID: 224403346423736254, guid: eb6737dc528a143499748ce0d673b59c, 581 | type: 3} 582 | propertyPath: m_Pivot.x 583 | value: 0 584 | objectReference: {fileID: 0} 585 | - target: {fileID: 224403346423736254, guid: eb6737dc528a143499748ce0d673b59c, 586 | type: 3} 587 | propertyPath: m_Pivot.y 588 | value: 0 589 | objectReference: {fileID: 0} 590 | - target: {fileID: 224403346423736254, guid: eb6737dc528a143499748ce0d673b59c, 591 | type: 3} 592 | propertyPath: m_RootOrder 593 | value: 2 594 | objectReference: {fileID: 0} 595 | - target: {fileID: 224403346423736254, guid: eb6737dc528a143499748ce0d673b59c, 596 | type: 3} 597 | propertyPath: m_AnchorMax.x 598 | value: 0 599 | objectReference: {fileID: 0} 600 | - target: {fileID: 224403346423736254, guid: eb6737dc528a143499748ce0d673b59c, 601 | type: 3} 602 | propertyPath: m_AnchorMax.y 603 | value: 0 604 | objectReference: {fileID: 0} 605 | - target: {fileID: 224403346423736254, guid: eb6737dc528a143499748ce0d673b59c, 606 | type: 3} 607 | propertyPath: m_AnchorMin.x 608 | value: 0 609 | objectReference: {fileID: 0} 610 | - target: {fileID: 224403346423736254, guid: eb6737dc528a143499748ce0d673b59c, 611 | type: 3} 612 | propertyPath: m_AnchorMin.y 613 | value: 0 614 | objectReference: {fileID: 0} 615 | - target: {fileID: 224403346423736254, guid: eb6737dc528a143499748ce0d673b59c, 616 | type: 3} 617 | propertyPath: m_SizeDelta.x 618 | value: 0 619 | objectReference: {fileID: 0} 620 | - target: {fileID: 224403346423736254, guid: eb6737dc528a143499748ce0d673b59c, 621 | type: 3} 622 | propertyPath: m_SizeDelta.y 623 | value: 0 624 | objectReference: {fileID: 0} 625 | - target: {fileID: 224403346423736254, guid: eb6737dc528a143499748ce0d673b59c, 626 | type: 3} 627 | propertyPath: m_LocalPosition.x 628 | value: 0 629 | objectReference: {fileID: 0} 630 | - target: {fileID: 224403346423736254, guid: eb6737dc528a143499748ce0d673b59c, 631 | type: 3} 632 | propertyPath: m_LocalPosition.y 633 | value: 0 634 | objectReference: {fileID: 0} 635 | - target: {fileID: 224403346423736254, guid: eb6737dc528a143499748ce0d673b59c, 636 | type: 3} 637 | propertyPath: m_LocalPosition.z 638 | value: 0 639 | objectReference: {fileID: 0} 640 | - target: {fileID: 224403346423736254, guid: eb6737dc528a143499748ce0d673b59c, 641 | type: 3} 642 | propertyPath: m_LocalRotation.w 643 | value: 1 644 | objectReference: {fileID: 0} 645 | - target: {fileID: 224403346423736254, guid: eb6737dc528a143499748ce0d673b59c, 646 | type: 3} 647 | propertyPath: m_LocalRotation.x 648 | value: 0 649 | objectReference: {fileID: 0} 650 | - target: {fileID: 224403346423736254, guid: eb6737dc528a143499748ce0d673b59c, 651 | type: 3} 652 | propertyPath: m_LocalRotation.y 653 | value: 0 654 | objectReference: {fileID: 0} 655 | - target: {fileID: 224403346423736254, guid: eb6737dc528a143499748ce0d673b59c, 656 | type: 3} 657 | propertyPath: m_LocalRotation.z 658 | value: 0 659 | objectReference: {fileID: 0} 660 | - target: {fileID: 224403346423736254, guid: eb6737dc528a143499748ce0d673b59c, 661 | type: 3} 662 | propertyPath: m_AnchoredPosition.x 663 | value: 0 664 | objectReference: {fileID: 0} 665 | - target: {fileID: 224403346423736254, guid: eb6737dc528a143499748ce0d673b59c, 666 | type: 3} 667 | propertyPath: m_AnchoredPosition.y 668 | value: 0 669 | objectReference: {fileID: 0} 670 | m_RemovedComponents: [] 671 | m_RemovedGameObjects: [] 672 | m_AddedGameObjects: [] 673 | m_AddedComponents: [] 674 | m_SourcePrefab: {fileID: 100100000, guid: eb6737dc528a143499748ce0d673b59c, type: 3} 675 | --- !u!1 &1232480984 676 | GameObject: 677 | m_ObjectHideFlags: 0 678 | m_CorrespondingSourceObject: {fileID: 0} 679 | m_PrefabInstance: {fileID: 0} 680 | m_PrefabAsset: {fileID: 0} 681 | serializedVersion: 6 682 | m_Component: 683 | - component: {fileID: 1232480988} 684 | - component: {fileID: 1232480987} 685 | - component: {fileID: 1232480986} 686 | - component: {fileID: 1232480985} 687 | m_Layer: 0 688 | m_Name: Main Camera 689 | m_TagString: MainCamera 690 | m_Icon: {fileID: 0} 691 | m_NavMeshLayer: 0 692 | m_StaticEditorFlags: 0 693 | m_IsActive: 1 694 | --- !u!81 &1232480985 695 | AudioListener: 696 | m_ObjectHideFlags: 0 697 | m_CorrespondingSourceObject: {fileID: 0} 698 | m_PrefabInstance: {fileID: 0} 699 | m_PrefabAsset: {fileID: 0} 700 | m_GameObject: {fileID: 1232480984} 701 | m_Enabled: 1 702 | --- !u!124 &1232480986 703 | Behaviour: 704 | m_ObjectHideFlags: 0 705 | m_CorrespondingSourceObject: {fileID: 0} 706 | m_PrefabInstance: {fileID: 0} 707 | m_PrefabAsset: {fileID: 0} 708 | m_GameObject: {fileID: 1232480984} 709 | m_Enabled: 1 710 | --- !u!20 &1232480987 711 | Camera: 712 | m_ObjectHideFlags: 0 713 | m_CorrespondingSourceObject: {fileID: 0} 714 | m_PrefabInstance: {fileID: 0} 715 | m_PrefabAsset: {fileID: 0} 716 | m_GameObject: {fileID: 1232480984} 717 | m_Enabled: 1 718 | serializedVersion: 2 719 | m_ClearFlags: 2 720 | m_BackGroundColor: {r: 0, g: 0, b: 0, a: 1} 721 | m_projectionMatrixMode: 1 722 | m_GateFitMode: 2 723 | m_FOVAxisMode: 0 724 | m_Iso: 200 725 | m_ShutterSpeed: 0.005 726 | m_Aperture: 16 727 | m_FocusDistance: 10 728 | m_FocalLength: 50 729 | m_BladeCount: 5 730 | m_Curvature: {x: 2, y: 11} 731 | m_BarrelClipping: 0.25 732 | m_Anamorphism: 0 733 | m_SensorSize: {x: 36, y: 24} 734 | m_LensShift: {x: 0, y: 0} 735 | m_NormalizedViewPortRect: 736 | serializedVersion: 2 737 | x: 0 738 | y: 0 739 | width: 1 740 | height: 1 741 | near clip plane: 0.3 742 | far clip plane: 1000 743 | field of view: 60 744 | orthographic: 0 745 | orthographic size: 5 746 | m_Depth: -1 747 | m_CullingMask: 748 | serializedVersion: 2 749 | m_Bits: 4294967295 750 | m_RenderingPath: -1 751 | m_TargetTexture: {fileID: 0} 752 | m_TargetDisplay: 0 753 | m_TargetEye: 3 754 | m_HDR: 1 755 | m_AllowMSAA: 1 756 | m_AllowDynamicResolution: 0 757 | m_ForceIntoRT: 0 758 | m_OcclusionCulling: 1 759 | m_StereoConvergence: 10 760 | m_StereoSeparation: 0.022 761 | --- !u!4 &1232480988 762 | Transform: 763 | m_ObjectHideFlags: 0 764 | m_CorrespondingSourceObject: {fileID: 0} 765 | m_PrefabInstance: {fileID: 0} 766 | m_PrefabAsset: {fileID: 0} 767 | m_GameObject: {fileID: 1232480984} 768 | serializedVersion: 2 769 | m_LocalRotation: {x: 0.17364816, y: 0, z: 0, w: 0.9848078} 770 | m_LocalPosition: {x: 0, y: 2, z: -2.5} 771 | m_LocalScale: {x: 1, y: 1, z: 1} 772 | m_ConstrainProportionsScale: 0 773 | m_Children: [] 774 | m_Father: {fileID: 0} 775 | m_LocalEulerAnglesHint: {x: 20, y: 0, z: 0} 776 | --- !u!1 &1379718501 777 | GameObject: 778 | m_ObjectHideFlags: 0 779 | m_CorrespondingSourceObject: {fileID: 0} 780 | m_PrefabInstance: {fileID: 0} 781 | m_PrefabAsset: {fileID: 0} 782 | serializedVersion: 6 783 | m_Component: 784 | - component: {fileID: 1379718503} 785 | - component: {fileID: 1379718502} 786 | - component: {fileID: 1379718505} 787 | - component: {fileID: 1379718506} 788 | - component: {fileID: 1379718507} 789 | - component: {fileID: 1379718504} 790 | - component: {fileID: 1379718508} 791 | - component: {fileID: 1379718509} 792 | m_Layer: 0 793 | m_Name: GameInstance 794 | m_TagString: Untagged 795 | m_Icon: {fileID: 0} 796 | m_NavMeshLayer: 0 797 | m_StaticEditorFlags: 0 798 | m_IsActive: 1 799 | --- !u!114 &1379718502 800 | MonoBehaviour: 801 | m_ObjectHideFlags: 0 802 | m_CorrespondingSourceObject: {fileID: 0} 803 | m_PrefabInstance: {fileID: 0} 804 | m_PrefabAsset: {fileID: 0} 805 | m_GameObject: {fileID: 1379718501} 806 | m_Enabled: 1 807 | m_EditorHideFlags: 0 808 | m_Script: {fileID: 11500000, guid: ca66ed5b09dc41447ad7cf901faa5e46, type: 3} 809 | m_Name: 810 | m_EditorClassIdentifier: 811 | morphings: [] 812 | dimensionType: 1 813 | messageManager: {fileID: 0} 814 | saveSystem: {fileID: 0} 815 | gameplayRule: {fileID: 11400000, guid: 3bfe680a81b27ce4ba9642ddff7baa17, type: 2} 816 | inventoryManager: {fileID: 0} 817 | dayNightTimeUpdater: {fileID: 0} 818 | gmCommands: {fileID: 0} 819 | equipmentModelBonesSetupManager: {fileID: 0} 820 | networkSetting: {fileID: 11400000, guid: c0825e8ee894749459ab4c8dda26dfe6, type: 2} 821 | itemDropEntityPrefab: {fileID: 114136267996948458, guid: 9c6362fe52a2dfa40b90aba5530a6fda, 822 | type: 3} 823 | expDropEntityPrefab: {fileID: 0} 824 | goldDropEntityPrefab: {fileID: 0} 825 | currencyDropEntityPrefab: {fileID: 0} 826 | warpPortalEntityPrefab: {fileID: 114740439826321916, guid: 8cdb82c44bf71094b950973e82c6c59e, 827 | type: 3} 828 | playerCorpsePrefab: {fileID: 0} 829 | monsterCorpsePrefab: {fileID: 0} 830 | uiSceneGameplayPrefab: {fileID: 114088817493988554, guid: 4af36d4bdf0cf07409f4412130b793ec, 831 | type: 3} 832 | uiSceneGameplayMobilePrefab: {fileID: 114630585920460692, guid: 70474cf4f9f686c45b0305621722205f, 833 | type: 3} 834 | uiSceneGameplayConsolePrefab: {fileID: 0} 835 | defaultControllerPrefab: {fileID: 114546275785678858, guid: 371fb755531a8b045b879463a1f86dd4, 836 | type: 3} 837 | addressableItemDropEntityPrefab: 838 | m_AssetGUID: 839 | m_SubObjectName: 840 | m_SubObjectType: 841 | m_EditorAssetChanged: 0 842 | hashAssetId: 0 843 | addressableExpDropEntityPrefab: 844 | m_AssetGUID: 845 | m_SubObjectName: 846 | m_SubObjectType: 847 | m_EditorAssetChanged: 0 848 | hashAssetId: 0 849 | addressableGoldDropEntityPrefab: 850 | m_AssetGUID: 851 | m_SubObjectName: 852 | m_SubObjectType: 853 | m_EditorAssetChanged: 0 854 | hashAssetId: 0 855 | addressableCurrencyDropEntityPrefab: 856 | m_AssetGUID: 857 | m_SubObjectName: 858 | m_SubObjectType: 859 | m_EditorAssetChanged: 0 860 | hashAssetId: 0 861 | addressableWarpPortalEntityPrefab: 862 | m_AssetGUID: 863 | m_SubObjectName: 864 | m_SubObjectType: 865 | m_EditorAssetChanged: 0 866 | hashAssetId: 0 867 | addressablePlayerCorpsePrefab: 868 | m_AssetGUID: 869 | m_SubObjectName: 870 | m_SubObjectType: 871 | m_EditorAssetChanged: 0 872 | hashAssetId: 0 873 | addressableMonsterCorpsePrefab: 874 | m_AssetGUID: 875 | m_SubObjectName: 876 | m_SubObjectType: 877 | m_EditorAssetChanged: 0 878 | hashAssetId: 0 879 | addressableUiSceneGameplayPrefab: 880 | m_AssetGUID: 881 | m_SubObjectName: 882 | m_SubObjectType: 883 | m_EditorAssetChanged: 0 884 | addressableUiSceneGameplayMobilePrefab: 885 | m_AssetGUID: 886 | m_SubObjectName: 887 | m_SubObjectType: 888 | m_EditorAssetChanged: 0 889 | addressableUiSceneGameplayConsolePrefab: 890 | m_AssetGUID: 891 | m_SubObjectName: 892 | m_SubObjectType: 893 | m_EditorAssetChanged: 0 894 | addressableDefaultControllerPrefab: 895 | m_AssetGUID: 896 | m_SubObjectName: 897 | m_SubObjectType: 898 | m_EditorAssetChanged: 0 899 | serverCharacterPrefab: {fileID: 114801908678275750, guid: 421d789af0533a74fb6efc3521d9f8b7, 900 | type: 3} 901 | owningCharacterObjects: 902 | - {fileID: 1555851488130254, guid: 90f99869b96e2df4bae83e1f870b68ec, type: 3} 903 | owningCharacterMiniMapObjects: 904 | - {fileID: 1620662158371272, guid: f94b43a3f251a6a41849b19fe0aa4fa5, type: 3} 905 | nonOwningCharacterObjects: [] 906 | nonOwningCharacterMiniMapObjects: 907 | - {fileID: 1338488141702386, guid: ce40a263e27c9034fa4ef0fc9e069eaf, type: 3} 908 | monsterCharacterObjects: [] 909 | monsterCharacterMiniMapObjects: 910 | - {fileID: 1237499379163380, guid: 2d0368f81f8351144a6b29dc200981b4, type: 3} 911 | npcObjects: [] 912 | npcMiniMapObjects: 913 | - {fileID: 1971649022222436, guid: 3ad746095a8b209429a1b9e27fab61aa, type: 3} 914 | owningCharacterUI: {fileID: 114899762762614018, guid: 8447ca51d1886764e99f26df8033c4c5, 915 | type: 3} 916 | nonOwningCharacterUI: {fileID: 114899762762614018, guid: cf8cfe06d3da49e4ab083bd040961dd5, 917 | type: 3} 918 | monsterCharacterUI: {fileID: 114127719814556812, guid: 3570a7d7c31a7704f92f9ffd3242ff3c, 919 | type: 3} 920 | npcUI: {fileID: 114537631033164756, guid: b75f7de46d27c284d913d9b2984ff84d, type: 3} 921 | npcQuestIndicator: {fileID: 114612624042908474, guid: 4acaa26309bf3094094eec89f99e2972, 922 | type: 3} 923 | levelUpEffect: {fileID: 0} 924 | levelUpEffects: 925 | - {fileID: 114843870614705530, guid: 6f6e255b4877f874c985ed9fb46293a1, type: 3} 926 | stunEffects: [] 927 | muteEffects: [] 928 | freezeEffects: [] 929 | addressableLevelUpEffects: [] 930 | addressableStunEffects: [] 931 | addressableMuteEffects: [] 932 | addressableFreezeEffects: [] 933 | expTree: 140000001e00000031000000490000006500000086000000aa000000d1000000fa000000270100005601000087010000bb010000f10100002902000064020000a0020000de0200001e0300005f030000a3030000e80300002f04000077040000c10400000d0500005a050000a9050000f90500004a0600009d060000f1060000470700009e070000f707000050080000ab0800000809000065090000c4090000240a0000850a0000e80a00004b0b0000b00b0000160c00007d0c0000e50c00004e0d0000b90d0000240e0000910e0000fe0e00006d0f0000dd0f00004d100000bf10000032110000a61100001b12000090120000071300007f130000f813000071140000ec14000068150000e415000062160000e01600005f170000e017000061180000e318000066190000ea1900006e1a0000f41a00007a1b0000021c00008a1c0000131d00009d1d0000281e0000b31e0000401f0000cd1f00005b200000ea200000792100000a2200009b2200002d230000c023000054240000e82400007e25000014260000aa26000042270000 934 | expTable: {fileID: 0} 935 | gameDatabase: {fileID: 11400000, guid: 18c9127ba9fe0794791ee6aa5a44ee10, type: 2} 936 | npcDatabase: {fileID: 0} 937 | warpPortalDatabase: {fileID: 0} 938 | socialSystemSetting: {fileID: 11400000, guid: afad462dae207414f91b207f6882dad2, 939 | type: 2} 940 | defaultWeaponItem: {fileID: 11400000, guid: 951f241c113481643989fbb969a3976d, type: 2} 941 | defaultDamageElement: {fileID: 0} 942 | defaultDamageHitEffects: 943 | - {fileID: 114984786077298016, guid: fa67f0b7f994d9548821d15fbf67531d, type: 3} 944 | addressableDefaultDamageHitEffects: [] 945 | playerTag: 946 | tag: PlayerTag 947 | monsterTag: 948 | tag: MonsterTag 949 | npcTag: 950 | tag: NpcTag 951 | vehicleTag: 952 | tag: VehicleTag 953 | itemDropTag: 954 | tag: ItemDropTag 955 | buildingTag: 956 | tag: BuildingTag 957 | harvestableTag: 958 | tag: HarvestableTag 959 | playerLayer: 960 | layerIndex: 17 961 | playingLayer: 962 | layerIndex: 17 963 | monsterLayer: 964 | layerIndex: 18 965 | npcLayer: 966 | layerIndex: 19 967 | vehicleLayer: 968 | layerIndex: 20 969 | itemDropLayer: 970 | layerIndex: 9 971 | buildingLayer: 972 | layerIndex: 13 973 | harvestableLayer: 974 | layerIndex: 14 975 | attackObstacleLayers: 976 | - layerIndex: 0 977 | ignoreRaycastLayers: 978 | - layerIndex: 11 979 | itemAppearDuration: 60 980 | itemLootLockDuration: 5 981 | itemLootRandomPartyMember: 0 982 | canPickupItemsWhichDropsByPlayersImmediately: 0 983 | dealingRequestDuration: 5 984 | dealingItemsLimit: 16 985 | disableDealing: 0 986 | vendingItemsLimit: 16 987 | disableVending: 0 988 | duelingRequestDuration: 5 989 | duelingCountDownDuration: 3 990 | duelingDuration: 180 991 | disableDueling: 0 992 | pickUpItemDistance: 0.5 993 | dropDistance: 0.5 994 | conversationDistance: 1 995 | localChatDistance: 10 996 | combatTextDistance: 20 997 | partyShareExpDistance: 0 998 | partyShareItemDistance: 0 999 | maxEquipWeaponSet: 2 1000 | currentPositionSaveMode: 0 1001 | playerDropItemMode: 0 1002 | playerDeadDropItemMode: 0 1003 | playerCorpseAppearDuration: 10 1004 | monsterDeadDropItemMode: 0 1005 | monsterExpRewardingMode: 0 1006 | monsterGoldRewardingMode: 0 1007 | monsterCurrencyRewardingMode: 0 1008 | monsterCorpseAppearDuration: 10 1009 | returnMoveSpeedDelayAfterAction: 0.1 1010 | mountDelay: 1 1011 | useItemDelay: 0.25 1012 | clearSkillCooldownOnDead: 1 1013 | goldStoreMode: 0 1014 | dismantleFilter: 1015 | includeJunk: 0 1016 | includeArmor: 1 1017 | includeWeapon: 1 1018 | includeShield: 1 1019 | includePotion: 0 1020 | includeAmmo: 0 1021 | includeBuilding: 0 1022 | includePet: 0 1023 | includeSocketEnhancer: 0 1024 | includeMount: 0 1025 | includeSkill: 0 1026 | canRefineItemByPlayer: 0 1027 | refineEnhancerItemsLimit: 16 1028 | canDismantleItemByPlayer: 0 1029 | canRepairItemByPlayer: 0 1030 | inventorySystem: 0 1031 | noInventoryWeightLimit: 0 1032 | doNotFillEmptySlots: 0 1033 | baseSlotLimit: 0 1034 | playerStorage: 1035 | weightLimit: 0 1036 | slotLimit: 0 1037 | guildStorage: 1038 | weightLimit: 0 1039 | slotLimit: 0 1040 | enhancerRemoval: 1041 | returnEnhancerItem: 0 1042 | requireItems: [] 1043 | requireCurrencies: [] 1044 | requireGold: 0 1045 | minSummonDistance: 2 1046 | maxSummonDistance: 3 1047 | minFollowSummonerDistance: 5 1048 | maxFollowSummonerDistance: 10 1049 | petDeadLockDuration: 60 1050 | petUnSummonLockDuration: 30 1051 | joinInstanceMapDistance: 20 1052 | newCharacterSetting: {fileID: 11400000, guid: 664e0661401c41149b61c8f9d56f4b9f, 1053 | type: 2} 1054 | startGold: 0 1055 | startItems: [] 1056 | testingNewCharacterSetting: {fileID: 0} 1057 | updateAnimationAtServer: 1 1058 | minCharacterNameLength: 2 1059 | maxCharacterNameLength: 16 1060 | maxCharacterSaves: 5 1061 | serverTargetFrameRate: 30 1062 | testInEditorMode: 0 1063 | networkManagerForOfflineTesting: 1064 | m_AssetGUID: 1065 | m_SubObjectName: 1066 | m_SubObjectType: 1067 | m_EditorAssetChanged: 0 1068 | exportSocialSystemSettingAsJson: 0 1069 | exportMinimalItemsAsJson: 0 1070 | exportCharacterCreationDataAsJson: 0 1071 | cashShopDatabase: {fileID: 11400000, guid: 677c37c598e6c1045b66de68f1f546f6, type: 2} 1072 | homeScene: 1073 | sceneAsset: {fileID: 102900000, guid: 91fd2dda25392fb46b1aaf86a01e8f2c, type: 3} 1074 | sceneName: 01Home_2D 1075 | addressableHomeScene: 1076 | m_AssetGUID: 1077 | m_SubObjectName: 1078 | m_SubObjectType: 1079 | m_EditorAssetChanged: 0 1080 | sceneName: 1081 | homeMobileScene: 1082 | sceneAsset: {fileID: 0} 1083 | sceneName: 1084 | addressableHomeMobileScene: 1085 | m_AssetGUID: 1086 | m_SubObjectName: 1087 | m_SubObjectType: 1088 | m_EditorAssetChanged: 0 1089 | sceneName: 1090 | homeConsoleScene: 1091 | sceneAsset: {fileID: 0} 1092 | sceneName: 1093 | addressableHomeConsoleScene: 1094 | m_AssetGUID: 1095 | m_SubObjectName: 1096 | m_SubObjectType: 1097 | m_EditorAssetChanged: 0 1098 | sceneName: 1099 | --- !u!4 &1379718503 1100 | Transform: 1101 | m_ObjectHideFlags: 0 1102 | m_CorrespondingSourceObject: {fileID: 0} 1103 | m_PrefabInstance: {fileID: 0} 1104 | m_PrefabAsset: {fileID: 0} 1105 | m_GameObject: {fileID: 1379718501} 1106 | serializedVersion: 2 1107 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 1108 | m_LocalPosition: {x: 0, y: 0, z: 3} 1109 | m_LocalScale: {x: 1, y: 1, z: 1} 1110 | m_ConstrainProportionsScale: 0 1111 | m_Children: [] 1112 | m_Father: {fileID: 0} 1113 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 1114 | --- !u!114 &1379718504 1115 | MonoBehaviour: 1116 | m_ObjectHideFlags: 0 1117 | m_CorrespondingSourceObject: {fileID: 0} 1118 | m_PrefabInstance: {fileID: 0} 1119 | m_PrefabAsset: {fileID: 0} 1120 | m_GameObject: {fileID: 1379718501} 1121 | m_Enabled: 1 1122 | m_EditorHideFlags: 0 1123 | m_Script: {fileID: 11500000, guid: ed2cb86d2cba09b418e9204894872c72, type: 3} 1124 | m_Name: 1125 | m_EditorClassIdentifier: 1126 | settings: 1127 | - keyName: Activate 1128 | keyCode: 101 1129 | - keyName: PickUpItem 1130 | keyCode: 102 1131 | - keyName: CameraRotate 1132 | keyCode: 324 1133 | - keyName: Attack 1134 | keyCode: 118 1135 | - keyName: Jump 1136 | keyCode: 32 1137 | - keyName: FindEnemy 1138 | keyCode: 9 1139 | - keyName: Reload 1140 | keyCode: 114 1141 | - keyName: ExitVehicle 1142 | keyCode: 120 1143 | - keyName: SwitchEquipWeaponSet 1144 | keyCode: 96 1145 | - keyName: Sprint 1146 | keyCode: 304 1147 | - keyName: Crouch 1148 | keyCode: 306 1149 | - keyName: Crawl 1150 | keyCode: 122 1151 | - keyName: RotateLeft 1152 | keyCode: 106 1153 | - keyName: RotateRight 1154 | keyCode: 107 1155 | settingsSaveKeyPrefix: SETTING_KEY_BIND 1156 | inputActionAsset: {fileID: 0} 1157 | --- !u!114 &1379718505 1158 | MonoBehaviour: 1159 | m_ObjectHideFlags: 0 1160 | m_CorrespondingSourceObject: {fileID: 0} 1161 | m_PrefabInstance: {fileID: 0} 1162 | m_PrefabAsset: {fileID: 0} 1163 | m_GameObject: {fileID: 1379718501} 1164 | m_Enabled: 1 1165 | m_EditorHideFlags: 0 1166 | m_Script: {fileID: 11500000, guid: 8a90b827307b978428d769206bed615f, type: 3} 1167 | m_Name: 1168 | m_EditorClassIdentifier: 1169 | ignoreOptions: 1170 | - layer1: 1171 | layerIndex: 17 1172 | layer2: 1173 | layerIndex: 17 1174 | ignore: 1 1175 | - layer1: 1176 | layerIndex: 17 1177 | layer2: 1178 | layerIndex: 18 1179 | ignore: 1 1180 | - layer1: 1181 | layerIndex: 17 1182 | layer2: 1183 | layerIndex: 19 1184 | ignore: 1 1185 | - layer1: 1186 | layerIndex: 17 1187 | layer2: 1188 | layerIndex: 20 1189 | ignore: 1 1190 | - layer1: 1191 | layerIndex: 17 1192 | layer2: 1193 | layerIndex: 9 1194 | ignore: 1 1195 | - layer1: 1196 | layerIndex: 18 1197 | layer2: 1198 | layerIndex: 18 1199 | ignore: 1 1200 | - layer1: 1201 | layerIndex: 18 1202 | layer2: 1203 | layerIndex: 19 1204 | ignore: 1 1205 | - layer1: 1206 | layerIndex: 18 1207 | layer2: 1208 | layerIndex: 20 1209 | ignore: 1 1210 | - layer1: 1211 | layerIndex: 18 1212 | layer2: 1213 | layerIndex: 9 1214 | ignore: 1 1215 | - layer1: 1216 | layerIndex: 19 1217 | layer2: 1218 | layerIndex: 19 1219 | ignore: 1 1220 | - layer1: 1221 | layerIndex: 19 1222 | layer2: 1223 | layerIndex: 20 1224 | ignore: 1 1225 | - layer1: 1226 | layerIndex: 19 1227 | layer2: 1228 | layerIndex: 9 1229 | ignore: 1 1230 | - layer1: 1231 | layerIndex: 20 1232 | layer2: 1233 | layerIndex: 20 1234 | ignore: 1 1235 | - layer1: 1236 | layerIndex: 20 1237 | layer2: 1238 | layerIndex: 9 1239 | ignore: 1 1240 | - layer1: 1241 | layerIndex: 9 1242 | layer2: 1243 | layerIndex: 9 1244 | ignore: 1 1245 | --- !u!114 &1379718506 1246 | MonoBehaviour: 1247 | m_ObjectHideFlags: 0 1248 | m_CorrespondingSourceObject: {fileID: 0} 1249 | m_PrefabInstance: {fileID: 0} 1250 | m_PrefabAsset: {fileID: 0} 1251 | m_GameObject: {fileID: 1379718501} 1252 | m_Enabled: 1 1253 | m_EditorHideFlags: 0 1254 | m_Script: {fileID: 11500000, guid: b22368900ab60ae4882d09d2b5bf7ec0, type: 3} 1255 | m_Name: 1256 | m_EditorClassIdentifier: 1257 | maxLevel: 100 1258 | expCalculator: 1259 | minValue: 20 1260 | maxValue: 10050 1261 | growth: 1.5 1262 | calculateExp: 0 1263 | --- !u!114 &1379718507 1264 | MonoBehaviour: 1265 | m_ObjectHideFlags: 0 1266 | m_CorrespondingSourceObject: {fileID: 0} 1267 | m_PrefabInstance: {fileID: 0} 1268 | m_PrefabAsset: {fileID: 0} 1269 | m_GameObject: {fileID: 1379718501} 1270 | m_Enabled: 1 1271 | m_EditorHideFlags: 0 1272 | m_Script: {fileID: 11500000, guid: 1add7909b79222e4e9d31c0dcf226fdd, type: 3} 1273 | m_Name: 1274 | m_EditorClassIdentifier: 1275 | masterVolumeSetting: 1276 | id: MASTER 1277 | volumeScale: 1 1278 | bgmVolumeSetting: 1279 | id: BGM 1280 | volumeScale: 1 1281 | sfxVolumeSetting: 1282 | id: SFX 1283 | volumeScale: 1 1284 | ambientVolumeSetting: 1285 | id: AMBIENT 1286 | volumeScale: 1 1287 | otherVolumeSettings: [] 1288 | --- !u!114 &1379718508 1289 | MonoBehaviour: 1290 | m_ObjectHideFlags: 0 1291 | m_CorrespondingSourceObject: {fileID: 0} 1292 | m_PrefabInstance: {fileID: 0} 1293 | m_PrefabAsset: {fileID: 0} 1294 | m_GameObject: {fileID: 1379718501} 1295 | m_Enabled: 1 1296 | m_EditorHideFlags: 0 1297 | m_Script: {fileID: 11500000, guid: b9ef831daeddb154bb8b802d43566208, type: 3} 1298 | m_Name: 1299 | m_EditorClassIdentifier: 1300 | defaultLanguageKey: ENG 1301 | playerPrefsKey: USER_LANG 1302 | languageList: 1303 | - languageKey: CAT 1304 | dataList: 1305 | - key: InvalidItemData 1306 | value: Invalid item data, MEOW~ 1307 | - key: NotFoundCharacter 1308 | value: Character not found, MEOW~ 1309 | - key: NotAbleToLoot 1310 | value: Cannot get this item, MEOW~ 1311 | - key: NotEnoughGold 1312 | value: Have not enough gold, MEOW~ 1313 | - key: NotEnoughItems 1314 | value: Have not enough items, MEOW~ 1315 | - key: CannotCarryAnymore 1316 | value: Cannot carry anymore items, MEOW~ 1317 | - key: RefineItemReachedMaxLevel 1318 | value: Item reached max level, MEOW~ 1319 | - key: RefineSuccess 1320 | value: Item level up success, MEOW~ 1321 | - key: RefineFail 1322 | value: Item level up fail, MEOW~ 1323 | - key: CharacterIsInAnotherDeal 1324 | value: Character is in another deal, MEOW~ 1325 | - key: CharacterIsTooFar 1326 | value: Character is too far, MEOW~ 1327 | - key: CannotAcceptDealingRequest 1328 | value: Cannot accept dealing request, MEOW~ 1329 | - key: DealingRequestDeclined 1330 | value: Dealing request declined, MEOW~ 1331 | - key: InvalidDealingState 1332 | value: Invalid dealing state, MEOW~ 1333 | - key: DealingCanceled 1334 | value: Dealing canceled, MEOW~ 1335 | - key: PartyInvitationDeclined 1336 | value: Party invitation declined, MEOW~ 1337 | - key: CannotSendPartyInvitation 1338 | value: Cannot send party invitation, MEOW~ 1339 | - key: CannotKickPartyMember 1340 | value: Cannot kick party member, MEOW~ 1341 | - key: CannotKickYourSelfFromParty 1342 | value: Cannot kick yourself from party, MEOW~ 1343 | - key: CannotKickPartyLeader 1344 | value: Cannot kick party leader, MEOW~ 1345 | - key: JoinedAnotherParty 1346 | value: Already joined another party, MEOW~ 1347 | - key: NotJoinedParty 1348 | value: Not joined the party, MEOW~ 1349 | - key: NotPartyLeader 1350 | value: Not a party member, MEOW~ 1351 | - key: CharacterJoinedAnotherParty 1352 | value: Character already joined another party, MEOW~ 1353 | - key: CharacterNotJoinedParty 1354 | value: Character not joined the party, MEOW~ 1355 | - key: PartyMemberReachedLimit 1356 | value: Party member reached limit, MEOW~ 1357 | - key: GuildInvitationDeclined 1358 | value: Guild invitation declined, MEOW~ 1359 | - key: CannotSendGuildInvitation 1360 | value: Cannot send guild invitation, MEOW~ 1361 | - key: CannotKickGuildMember 1362 | value: Cannot kick guild member, MEOW~ 1363 | - key: CannotKickYourSelfFromGuild 1364 | value: Cannot kick yourself from guild, MEOW~ 1365 | - key: CannotKickGuildLeader 1366 | value: Cannot kick guild leader, MEOW~ 1367 | - key: CannotKickHigherGuildMember 1368 | value: Cannot kick higher guild member, MEOW~ 1369 | - key: JoinedAnotherGuild 1370 | value: Already joined another guild, MEOW~ 1371 | - key: NotJoinedGuild 1372 | value: Not joined the guild, MEOW~ 1373 | - key: NotGuildLeader 1374 | value: Not a guild member, MEOW~ 1375 | - key: CharacterJoinedAnotherGuild 1376 | value: Character already joined another guild, MEOW~ 1377 | - key: CharacterNotJoinedGuild 1378 | value: Character not joined the guild, MEOW~ 1379 | - key: GuildMemberReachedLimit 1380 | value: Guild member reached limit, MEOW~ 1381 | - key: GuildRoleNotAvailable 1382 | value: Guild role is not available, MEOW~ 1383 | - key: GuildSkillReachedMaxLevel 1384 | value: Guild skill is reached max level, MEOW~ 1385 | - key: NoGuildSkillPoint 1386 | value: No guild skill point, MEOW~ 1387 | - key: UnknowGameDataTitle 1388 | value: Unknow, MEOW~ 1389 | - key: UnknowGameDataDescription 1390 | value: N/A, MEOW~ 1391 | - key: NotEnoughGoldToDeposit 1392 | value: Not enough gold to deposit, MEOW~ 1393 | - key: NotEnoughGoldToWithdraw 1394 | value: Not enough gold to withdraw, MEOW~ 1395 | - key: CannotAccessStorage 1396 | value: Cannot access storage, MEOW~ 1397 | - key: NoAmmo 1398 | value: No Ammo, MEOW~ 1399 | - key: UI_LABEL_DISCONNECTED 1400 | value: Disconnected, MEOW~ 1401 | - key: UI_LABEL_SUCCESS 1402 | value: Success, MEOW~ 1403 | - key: UI_LABEL_ERROR 1404 | value: Error, MEOW~ 1405 | - key: UI_LABEL_NONE 1406 | value: None, MEOW~ 1407 | - key: UI_FORMAT_SIMPLE 1408 | value: '{0}, MEOW~' 1409 | - key: UI_FORMAT_SIMPLE_PERCENTAGE 1410 | value: '{0}%, MEOW~' 1411 | - key: UI_FORMAT_SIMPLE_MIN_TO_MAX 1412 | value: '{0}~{1}, MEOW~' 1413 | - key: UI_FORMAT_SIMPLE_MIN_BY_MAX 1414 | value: '{0}/{1}, MEOW~' 1415 | - key: UI_FORMAT_LEVEL 1416 | value: 'Lv: {0}, MEOW~' 1417 | - key: UI_FORMAT_CURRENT_EXP 1418 | value: 'Exp: {0}, MEOW~' 1419 | - key: UI_FORMAT_STAT_POINTS 1420 | value: 'Stat Points: {0}, MEOW~' 1421 | - key: UI_FORMAT_SKILL_POINTS 1422 | value: 'Skill Points: {0}, MEOW~' 1423 | - key: UI_FORMAT_CURRENT_HP 1424 | value: 'Hp: {0}/{1}, MEOW~' 1425 | - key: UI_FORMAT_CURRENT_MP 1426 | value: 'Mp: {0}/{1}, MEOW~' 1427 | - key: UI_FORMAT_CURRENT_STAMINA 1428 | value: 'Stamina: {0}/{1}, MEOW~' 1429 | - key: UI_FORMAT_CURRENT_FOOD 1430 | value: 'Food: {0}/{1}, MEOW~' 1431 | - key: UI_FORMAT_CURRENT_WATER 1432 | value: 'Water: {0}/{1}, MEOW~' 1433 | - key: UI_FORMAT_CURRENT_WEIGHT 1434 | value: 'Weight: {0}/{1}, MEOW~' 1435 | - key: UI_FORMAT_CURRENT_SLOT 1436 | value: 'Slot: {0}/{1}, MEOW~' 1437 | - key: UI_LABEL_UNLIMIT_WEIGHT 1438 | value: Unlimit Weight, MEOW~ 1439 | - key: UI_LABEL_UNLIMIT_SLOT 1440 | value: Unlimit Slot, MEOW~ 1441 | - key: UI_FORMAT_HP 1442 | value: 'Hp: {0}, MEOW~' 1443 | - key: UI_FORMAT_MP 1444 | value: 'Mp: {0}, MEOW~' 1445 | - key: UI_FORMAT_STAMINA 1446 | value: 'Stamina: {0}, MEOW~' 1447 | - key: UI_FORMAT_FOOD 1448 | value: 'Food: {0}, MEOW~' 1449 | - key: UI_FORMAT_WATER 1450 | value: 'Water: {0}, MEOW~' 1451 | - key: UI_FORMAT_ARMOR 1452 | value: 'Armor: {0}, MEOW~' 1453 | - key: UI_FORMAT_ACCURACY 1454 | value: 'Accuracy: {0}, MEOW~' 1455 | - key: UI_FORMAT_EVASION 1456 | value: 'Evasion: {0}, MEOW~' 1457 | - key: UI_FORMAT_CRITICAL_RATE 1458 | value: 'Cri. Rate: {0}%, MEOW~' 1459 | - key: UI_FORMAT_CRITICAL_DAMAGE_RATE 1460 | value: 'Cri. Damage: {0}%, MEOW~' 1461 | - key: UI_FORMAT_BLOCK_RATE 1462 | value: 'Block Rate: {0}%, MEOW~' 1463 | - key: UI_FORMAT_BLOCK_DAMAGE_RATE 1464 | value: 'Block Damage: {0}%, MEOW~' 1465 | - key: UI_FORMAT_MOVE_SPEED 1466 | value: 'Move Speed: {0}, MEOW~' 1467 | - key: UI_FORMAT_ATTACK_SPEED 1468 | value: 'Attack Speed: {0}, MEOW~' 1469 | - key: UI_FORMAT_WEIGHT 1470 | value: 'Weight: {0}, MEOW~' 1471 | - key: UI_FORMAT_SLOT 1472 | value: 'Slot: {0}, MEOW~' 1473 | - key: UI_FORMAT_GOLD 1474 | value: 'Gold: {0}, MEOW~' 1475 | - key: UI_FORMAT_CASH 1476 | value: 'Cash: {0}, MEOW~' 1477 | - key: UI_FORMAT_SELL_PRICE 1478 | value: 'Sell Price: {0}, MEOW~' 1479 | - key: UI_FORMAT_REQUIRE_LEVEL 1480 | value: 'Require Level: {0}, MEOW~' 1481 | - key: UI_FORMAT_REQUIRE_CLASS 1482 | value: 'Require Class: {0}, MEOW~' 1483 | - key: UI_FORMAT_AVAILABLE_WEAPONS 1484 | value: 'Available Weapons: {0}, MEOW~' 1485 | - key: UI_FORMAT_CONSUME_MP 1486 | value: 'Consume Mp: {0}, MEOW~' 1487 | - key: UI_FORMAT_SKILL_COOLDOWN_DURATION 1488 | value: 'Cooldown: {0}, MEOW~' 1489 | - key: UI_FORMAT_SKILL_TYPE 1490 | value: 'Skill Type: {0}, MEOW~' 1491 | - key: UI_SKILL_TYPE_ACTIVE 1492 | value: Active, MEOW~ 1493 | - key: UI_SKILL_TYPE_PASSIVE 1494 | value: Passive, MEOW~ 1495 | - key: UI_SKILL_TYPE_CRAFT_ITEM 1496 | value: Craft Item, MEOW~ 1497 | - key: UI_FORMAT_BUFF_DURATION 1498 | value: 'Duration: {0}, MEOW~' 1499 | - key: UI_FORMAT_BUFF_RECOVERY_HP 1500 | value: 'Recovery Hp: {0}, MEOW~' 1501 | - key: UI_FORMAT_BUFF_RECOVERY_MP 1502 | value: 'Recovery Mp: {0}, MEOW~' 1503 | - key: UI_FORMAT_BUFF_RECOVERY_STAMINA 1504 | value: 'Recovery Stamina: {0}, MEOW~' 1505 | - key: UI_FORMAT_BUFF_RECOVERY_FOOD 1506 | value: 'Recovery Food: {0}, MEOW~' 1507 | - key: UI_FORMAT_BUFF_RECOVERY_WATER 1508 | value: 'Recovery Water: {0}, MEOW~' 1509 | - key: UI_FORMAT_ITEM_REFINE_LEVEL 1510 | value: +{0}, MEOW~ 1511 | - key: UI_FORMAT_ITEM_TITLE_WITH_REFINE_LEVEL 1512 | value: '{0} +{1}, MEOW~' 1513 | - key: UI_FORMAT_ITEM_TYPE 1514 | value: 'Item Type: {0}, MEOW~' 1515 | - key: UI_ITEM_TYPE_JUNK 1516 | value: Junk, MEOW~ 1517 | - key: UI_ITEM_TYPE_SHIELD 1518 | value: Shield, MEOW~ 1519 | - key: UI_ITEM_TYPE_POTION 1520 | value: Potion, MEOW~ 1521 | - key: UI_ITEM_TYPE_AMMO 1522 | value: Ammo, MEOW~ 1523 | - key: UI_ITEM_TYPE_BUILDING 1524 | value: Building, MEOW~ 1525 | - key: UI_ITEM_TYPE_PET 1526 | value: Pet, MEOW~ 1527 | - key: UI_ITEM_TYPE_SOCKET_ENHANCER 1528 | value: Socket Enhancer, MEOW~ 1529 | - key: UI_FORMAT_ITEM_RARITY 1530 | value: 'Rarity: {0}, MEOW~' 1531 | - key: UI_FORMAT_ITEM_STACK 1532 | value: '{0}/{1}, MEOW~' 1533 | - key: UI_FORMAT_ITEM_DURABILITY 1534 | value: 'Durability: {0}, MEOW~' 1535 | - key: UI_FORMAT_SOCIAL_LEADER 1536 | value: 'Leader: {0}, MEOW~' 1537 | - key: UI_FORMAT_SOCIAL_MEMBER_AMOUNT 1538 | value: 'Member: {0}/{1}, MEOW~' 1539 | - key: UI_FORMAT_SOCIAL_MEMBER_AMOUNT_NO_LIMIT 1540 | value: 'Member: {0}, MEOW~' 1541 | - key: UI_FORMAT_SHARE_EXP_PERCENTAGE 1542 | value: 'Share Exp: {0}%, MEOW~' 1543 | - key: UI_FORMAT_REWARD_EXP 1544 | value: 'Reward Exp: {0}, MEOW~' 1545 | - key: UI_FORMAT_REWARD_GOLD 1546 | value: 'Reward Gold: {0}, MEOW~' 1547 | - key: UI_FORMAT_REWARD_CASH 1548 | value: 'Reward Cash: {0}, MEOW~' 1549 | - key: UI_FORMAT_CURRENT_ATTRIBUTE 1550 | value: '{0}: {1}/{2}, MEOW~' 1551 | - key: UI_FORMAT_CURRENT_ATTRIBUTE_NOT_ENOUGH 1552 | value: '{0}: {1}/{2}, MEOW~' 1553 | - key: UI_FORMAT_ATTRIBUTE_AMOUNT 1554 | value: '{0}: {1}, MEOW~' 1555 | - key: UI_FORMAT_RESISTANCE_AMOUNT 1556 | value: '{0}: {1}, MEOW~' 1557 | - key: UI_FORMAT_CURRENT_SKILL 1558 | value: '{0}: {1}/{2}, MEOW~' 1559 | - key: UI_FORMAT_CURRENT_SKILL_NOT_ENOUGH 1560 | value: '{0}: {1}/{2}, MEOW~' 1561 | - key: UI_FORMAT_SKILL_LEVEL 1562 | value: '{0}: {1}, MEOW~' 1563 | - key: UI_FORMAT_CURRENT_ITEM 1564 | value: '{0}: {1}/{2}, MEOW~' 1565 | - key: UI_FORMAT_CURRENT_ITEM_NOT_ENOUGH 1566 | value: '{0}: {1}/{2}, MEOW~' 1567 | - key: UI_FORMAT_ITEM_AMOUNT 1568 | value: '{0}: {1}, MEOW~' 1569 | - key: UI_FORMAT_DAMAGE_AMOUNT 1570 | value: '{0}~{1}, MEOW~' 1571 | - key: UI_FORMAT_DAMAGE_WITH_ELEMENTAL 1572 | value: '{0}: {1}~{2}, MEOW~' 1573 | - key: UI_FORMAT_DAMAGE_INFLICTION 1574 | value: Inflict {0}% damage, MEOW~ 1575 | - key: UI_FORMAT_DAMAGE_INFLICTION_AS_ELEMENTAL 1576 | value: Inflict {1}% as {0} damage, MEOW~ 1577 | - key: UI_FORMAT_REQUIRE_GOLD 1578 | value: 'Gold: {0}/{1}, MEOW~' 1579 | - key: UI_FORMAT_REQUIRE_GOLD_NOT_ENOUGH 1580 | value: 'Gold: {0}/{1}, MEOW~' 1581 | - key: UI_FORMAT_EQUIPMENT_SET 1582 | value: '{0} 1583 | 1584 | {1}, MEOW~' 1585 | - key: UI_FORMAT_EQUIPMENT_SET_APPLIED_EFFECT 1586 | value: ({0}) {1}, MEOW~ 1587 | - key: UI_FORMAT_EQUIPMENT_SET_UNAPPLIED_EFFECT 1588 | value: ({0}) {1}, MEOW~ 1589 | - key: UI_FORMAT_EQUIPMENT_SOCKET_FILLED 1590 | value: '({0}) - {1} 1591 | 1592 | {2}, MEOW~' 1593 | - key: UI_FORMAT_EQUIPMENT_SOCKET_EMPTY 1594 | value: ({0}) - Empty, MEOW~ 1595 | - key: UI_FORMAT_REFINE_SUCCESS_RATE 1596 | value: 'Success Rate: {0}%, MEOW~' 1597 | - key: UI_FORMAT_REFINING_LEVEL 1598 | value: 'Refining Level: +{0}, MEOW~' 1599 | - key: UI_FORMAT_INCREASE_MAX_MEMBER 1600 | value: Max Member +{0}, MEOW~ 1601 | - key: UI_FORMAT_INCREASE_EXP_GAIN_PERCENTAGE 1602 | value: Exp Gain +{0}%, MEOW~ 1603 | - key: UI_FORMAT_INCREASE_GOLD_GAIN_PERCENTAGE 1604 | value: Gold Gain +{0}%, MEOW~ 1605 | - key: UI_FORMAT_INCREASE_SHARE_EXP_GAIN_PERCENTAGE 1606 | value: Party Share Exp +{0}%, MEOW~ 1607 | - key: UI_FORMAT_INCREASE_SHARE_GOLD_GAIN_PERCENTAGE 1608 | value: Party Share Gold +{0}%, MEOW~ 1609 | - key: UI_FORMAT_DECREASE_EXP_PENALTY_PERCENTAGE 1610 | value: Exp Penalty -{0}%, MEOW~ 1611 | - key: UI_FORMAT_QUEST_TITLE_ON_GOING 1612 | value: '{0} (Ongoing), MEOW~' 1613 | - key: UI_FORMAT_QUEST_TITLE_TASKS_COMPLETE 1614 | value: '{0} (Task Completed), MEOW~' 1615 | - key: UI_FORMAT_QUEST_TITLE_COMPLETE 1616 | value: '{0} (Completed), MEOW~' 1617 | - key: UI_FORMAT_QUEST_TASK_KILL_MONSTER 1618 | value: 'Kills {0}: {1}/{2}, MEOW~' 1619 | - key: UI_FORMAT_QUEST_TASK_COLLECT_ITEM 1620 | value: 'Collects {0}: {1}/{2}, MEOW~' 1621 | - key: UI_FORMAT_QUEST_TASK_KILL_MONSTER_COMPLETE 1622 | value: 'Kills {0}: Complete, MEOW~' 1623 | - key: UI_FORMAT_QUEST_TASK_COLLECT_ITEM_COMPLETE 1624 | value: 'Collects {0}: Complete, MEOW~' 1625 | - key: UI_FORMAT_CHAT_LOCAL 1626 | value: '(LOCAL) {0}: {1}, MEOW~' 1627 | - key: UI_FORMAT_CHAT_GLOBAL 1628 | value: '(GLOBAL) {0}: {1}, MEOW~' 1629 | - key: UI_FORMAT_CHAT_WHISPER 1630 | value: '(WHISPER) {0}: {1}, MEOW~' 1631 | - key: UI_FORMAT_CHAT_PARTY 1632 | value: '(PARTY) {0}: {1}, MEOW~' 1633 | - key: UI_FORMAT_CHAT_GUILD 1634 | value: '(GUILD) {0}: {1}, MEOW~' 1635 | - key: UI_ERROR_KICKED_FROM_SERVER 1636 | value: You have been kicked from server, MEOW~ 1637 | - key: UI_ERROR_CONNECTION_FAILED 1638 | value: Cannot connect to the server, MEOW~ 1639 | - key: UI_ERROR_CONNECTION_REJECTED 1640 | value: Connection rejected by server, MEOW~ 1641 | - key: UI_ERROR_REMOTE_CONNECTION_CLOSE 1642 | value: Server has been closed, MEOW~ 1643 | - key: UI_ERROR_INVALID_PROTOCOL 1644 | value: Invalid protocol, MEOW~ 1645 | - key: UI_ERROR_HOST_UNREACHABLE 1646 | value: Host unreachable, MEOW~ 1647 | - key: UI_ERROR_CONNECTION_TIMEOUT 1648 | value: Connection timeout, MEOW~ 1649 | - key: UI_ERROR_USER_NOT_FOUND 1650 | value: User not found, MEOW~ 1651 | - key: UI_ERROR_ITEM_NOT_FOUND 1652 | value: Item not found, MEOW~ 1653 | - key: UI_ERROR_NOT_ENOUGH_GOLD 1654 | value: Not enough gold, MEOW~ 1655 | - key: UI_ERROR_NOT_ENOUGH_CASH 1656 | value: Not enough cash, MEOW~ 1657 | - key: UI_ERROR_INVALID_DATA 1658 | value: Invalid data, MEOW~ 1659 | - key: UI_ERROR_INVALID_CHARACTER_DATA 1660 | value: Invalid character data, MEOW~ 1661 | - key: UI_ERROR_USERNAME_IS_EMPTY 1662 | value: Username is empty, MEOW~ 1663 | - key: UI_ERROR_PASSWORD_IS_EMPTY 1664 | value: Password is empty, MEOW~ 1665 | - key: UI_ERROR_INVALID_USERNAME_OR_PASSWORD 1666 | value: Invalid username or password, MEOW~ 1667 | - key: UI_ERROR_ALREADY_LOGGED_IN 1668 | value: User already logged in, MEOW~ 1669 | - key: UI_ERROR_INVALID_CONFIRM_PASSWORD 1670 | value: Invalid confirm password, MEOW~ 1671 | - key: UI_ERROR_USERNAME_TOO_SHORT 1672 | value: Username is too short, MEOW~ 1673 | - key: UI_ERROR_USERNAME_TOO_LONG 1674 | value: Username is too long, MEOW~ 1675 | - key: UI_ERROR_PASSWORD_TOO_SHORT 1676 | value: Password is too short, MEOW~ 1677 | - key: UI_ERROR_USERNAME_EXISTED 1678 | value: Username is already existed, MEOW~ 1679 | - key: UI_ERROR_NO_CHOSEN_CHARACTER_TO_START 1680 | value: Please choose character to start game, MEOW~ 1681 | - key: UI_ERROR_NO_CHOSEN_CHARACTER_TO_DELETE 1682 | value: Please choose character to delete, MEOW~ 1683 | - key: UI_ERROR_ALREADY_SELECT_CHARACTER 1684 | value: Already select character, MEOW~ 1685 | - key: UI_ERROR_MAP_SERVER_NOT_READY 1686 | value: Map server is not ready, MEOW~ 1687 | - key: UI_ERROR_CHARACTER_NAME_TOO_SHORT 1688 | value: Character name is too short, MEOW~ 1689 | - key: UI_ERROR_CHARACTER_NAME_TOO_LONG 1690 | value: Character name is too long, MEOW~ 1691 | - key: UI_ERROR_CHARACTER_NAME_EXISTED 1692 | value: Character name is already existed, MEOW~ 1693 | - key: UI_ERROR_CANNOT_GET_CASH_PACKAGE_INFO 1694 | value: Cannot retrieve cash package info, MEOW~ 1695 | - key: UI_ERROR_CANNOT_GET_CASH_SHOP_INFO 1696 | value: Cannot retrieve cash shop info, MEOW~ 1697 | - key: UI_ERROR_GUILD_ROLE_NAME_IS_EMPTY 1698 | value: Role name must not empty, MEOW~ 1699 | - key: UI_ERROR_GUILD_ROLE_SHARE_EXP_NOT_NUMBER 1700 | value: Share exp percentage must be number, MEOW~ 1701 | - key: UI_ERROR_INVALID_GUILD_ROLE 1702 | value: Invalid role, MEOW~ 1703 | - key: UI_SUCCESS_CASH_SHOP_BUY 1704 | value: Success, let's check your inventory, MEOW~ 1705 | - key: UI_DROP_ITEM 1706 | value: Drop Item, MEOW~ 1707 | - key: UI_DROP_ITEM_DESCRIPTION 1708 | value: Enter amount of item, MEOW~ 1709 | - key: UI_SELL_ITEM 1710 | value: Sell Item, MEOW~ 1711 | - key: UI_SELL_ITEM_DESCRIPTION 1712 | value: Enter amount of item, MEOW~ 1713 | - key: UI_OFFER_ITEM 1714 | value: Offer Item, MEOW~ 1715 | - key: UI_OFFER_ITEM_DESCRIPTION 1716 | value: Enter amount of item, MEOW~ 1717 | - key: UI_MOVE_ITEM_TO_STORAGE 1718 | value: Move To Storage, MEOW~ 1719 | - key: UI_MOVE_ITEM_TO_STORAGE_DESCRIPTION 1720 | value: Enter amount of item, MEOW~ 1721 | - key: UI_MOVE_ITEM_FROM_STORAGE 1722 | value: Move From Storage, MEOW~ 1723 | - key: UI_MOVE_ITEM_FROM_STORAGE_DESCRIPTION 1724 | value: Enter amount of item, MEOW~ 1725 | - key: UI_BANK_DEPOSIT 1726 | value: Deposit, MEOW~ 1727 | - key: UI_BANK_DEPOSIT_DESCRIPTION 1728 | value: Enter amount of gold, MEOW~ 1729 | - key: UI_BANK_WITHDRAW 1730 | value: Withdraw, MEOW~ 1731 | - key: UI_BANK_WITHDRAW_DESCRIPTION 1732 | value: Enter amount of gold, MEOW~ 1733 | - key: UI_OFFER_GOLD 1734 | value: Offer Gold, MEOW~ 1735 | - key: UI_OFFER_GOLD_DESCRIPTION 1736 | value: Enter amount of gold, MEOW~ 1737 | - key: UI_BUY_ITEM 1738 | value: Buy Item, MEOW~ 1739 | - key: UI_BUY_ITEM_DESCRIPTION 1740 | value: Enter amount of item, MEOW~ 1741 | - key: UI_PARTY_CHANGE_LEADER 1742 | value: Change Leader, MEOW~ 1743 | - key: UI_PARTY_CHANGE_LEADER_DESCRIPTION 1744 | value: You sure you want to promote {0} to party leader?, MEOW~ 1745 | - key: UI_PARTY_KICK_MEMBER 1746 | value: Kick Member, MEOW~ 1747 | - key: UI_PARTY_KICK_MEMBER_DESCRIPTION 1748 | value: You sure you want to kick {0} from party?, MEOW~ 1749 | - key: UI_PARTY_LEAVE 1750 | value: Leave Party, MEOW~ 1751 | - key: UI_PARTY_LEAVE_DESCRIPTION 1752 | value: You sure you want to leave party?, MEOW~ 1753 | - key: UI_GUILD_CHANGE_LEADER 1754 | value: Change Leader, MEOW~ 1755 | - key: UI_GUILD_CHANGE_LEADER_DESCRIPTION 1756 | value: You sure you want to promote {0} to guild leader?, MEOW~ 1757 | - key: UI_GUILD_KICK_MEMBER 1758 | value: Kick Member, MEOW~ 1759 | - key: UI_GUILD_KICK_MEMBER_DESCRIPTION 1760 | value: You sure you want to kick {0} from guild?, MEOW~ 1761 | - key: UI_GUILD_LEAVE 1762 | value: Leave Guild, MEOW~ 1763 | - key: UI_GUILD_LEAVE_DESCRIPTION 1764 | value: You sure you want to leave guild?, MEOW~ 1765 | - key: UI_GUILD_ROLE_CAN_INVITE 1766 | value: Can invite, MEOW~ 1767 | - key: UI_GUILD_ROLE_CANNOT_INVITE 1768 | value: Cannot invite, MEOW~ 1769 | - key: UI_GUILD_ROLE_CAN_KICK 1770 | value: Can kick, MEOW~ 1771 | - key: UI_GUILD_ROLE_CANNOT_KICK 1772 | value: Cannot kick, MEOW~ 1773 | - languageKey: ENG 1774 | dataList: 1775 | - key: ServiceNotAvailable 1776 | value: Service not available 1777 | - key: InvalidItemData 1778 | value: Invalid item data 1779 | - key: NotFoundCharacter 1780 | value: Character not found 1781 | - key: NotAbleToLoot 1782 | value: Cannot get this item 1783 | - key: NotEnoughGold 1784 | value: Have not enough gold 1785 | - key: NotEnoughItems 1786 | value: Have not enough items 1787 | - key: CannotCarryAnymore 1788 | value: Cannot carry anymore items 1789 | - key: RefineItemReachedMaxLevel 1790 | value: Item reached max level 1791 | - key: RefineSuccess 1792 | value: Item level up success 1793 | - key: RefineFail 1794 | value: Item level up fail 1795 | - key: CharacterIsInAnotherDeal 1796 | value: Character is in another deal 1797 | - key: CharacterIsTooFar 1798 | value: Character is too far 1799 | - key: CannotAcceptDealingRequest 1800 | value: Cannot accept dealing request 1801 | - key: DealingRequestDeclined 1802 | value: Dealing request declined 1803 | - key: InvalidDealingState 1804 | value: Invalid dealing state 1805 | - key: DealingCanceled 1806 | value: Dealing canceled 1807 | - key: AnotherCharacterCannotCarryAnymore 1808 | value: Another character cannot carry anymore items 1809 | - key: PartyInvitationDeclined 1810 | value: Party invitation declined 1811 | - key: CannotSendPartyInvitation 1812 | value: Cannot send party invitation 1813 | - key: CannotKickPartyMember 1814 | value: Cannot kick party member 1815 | - key: CannotKickYourSelfFromParty 1816 | value: Cannot kick yourself from party 1817 | - key: CannotKickPartyLeader 1818 | value: Cannot kick party leader 1819 | - key: JoinedAnotherParty 1820 | value: Already joined another party 1821 | - key: NotJoinedParty 1822 | value: Not joined the party 1823 | - key: NotPartyLeader 1824 | value: Not a party member 1825 | - key: CharacterJoinedAnotherParty 1826 | value: Character already joined another party 1827 | - key: CharacterNotJoinedParty 1828 | value: Character not joined the party 1829 | - key: PartyMemberReachedLimit 1830 | value: Party member reached limit 1831 | - key: GuildInvitationDeclined 1832 | value: Guild invitation declined 1833 | - key: CannotSendGuildInvitation 1834 | value: Cannot send guild invitation 1835 | - key: CannotKickGuildMember 1836 | value: Cannot kick guild member 1837 | - key: CannotKickYourSelfFromGuild 1838 | value: Cannot kick yourself from guild 1839 | - key: CannotKickGuildLeader 1840 | value: Cannot kick guild leader 1841 | - key: CannotKickHigherGuildMember 1842 | value: Cannot kick higher guild member 1843 | - key: JoinedAnotherGuild 1844 | value: Already joined another guild 1845 | - key: NotJoinedGuild 1846 | value: Not joined the guild 1847 | - key: NotGuildLeader 1848 | value: Not a guild member 1849 | - key: CharacterJoinedAnotherGuild 1850 | value: Character already joined another guild 1851 | - key: CharacterNotJoinedGuild 1852 | value: Character not joined the guild 1853 | - key: GuildMemberReachedLimit 1854 | value: Guild member reached limit 1855 | - key: GuildRoleNotAvailable 1856 | value: Guild role is not available 1857 | - key: GuildSkillReachedMaxLevel 1858 | value: Guild skill is reached max level 1859 | - key: NoGuildSkillPoint 1860 | value: No guild skill point 1861 | - key: UnknowGameDataTitle 1862 | value: Unknow 1863 | - key: UnknowGameDataDescription 1864 | value: N/A 1865 | - key: NotEnoughGoldToDeposit 1866 | value: Not enough gold to deposit 1867 | - key: NotEnoughGoldToWithdraw 1868 | value: Not enough gold to withdraw 1869 | - key: CannotAccessStorage 1870 | value: Cannot access storage 1871 | - key: NoAmmo 1872 | value: No Ammo 1873 | - key: NotEnoughMp 1874 | value: Have not enough Mp 1875 | - key: TooShortGuildName 1876 | value: Guild name is too short 1877 | - key: TooLongGuildName 1878 | value: Guild name is too long 1879 | - key: ExistedGuildName 1880 | value: Guild name is already existed 1881 | - key: TooShortGuildRoleName 1882 | value: Guild role name is too short 1883 | - key: TooLongGuildRoleName 1884 | value: Guild role name is too long 1885 | - key: TooLongGuildMessage 1886 | value: Guild message is too long 1887 | - key: SkillLevelIsZero 1888 | value: Skill not trained yet 1889 | - key: CannotUseSkillByCurrentWeapon 1890 | value: Cannot use skill by current weapon 1891 | - key: SkillIsCoolingDown 1892 | value: Skill is cooling down 1893 | - key: SkillIsNotLearned 1894 | value: Skill is not learned 1895 | - key: NotEnoughLevel 1896 | value: Not enough level 1897 | - key: NotMatchCharacterClass 1898 | value: Not match character class 1899 | - key: NotEnoughAttributeAmounts 1900 | value: Not enough attribute amounts 1901 | - key: NotEnoughSkillLevels 1902 | value: Not enough skill levels 1903 | - key: NotEnoughStatPoint 1904 | value: Not enough stat point 1905 | - key: NotEnoughSkillPoint 1906 | value: Not enough skill point 1907 | - key: AttributeReachedMaxAmount 1908 | value: Attribute reached max amount 1909 | - key: SkillReachedMaxLevel 1910 | value: Skill reached max level 1911 | - key: UI_LABEL_DISCONNECTED 1912 | value: Disconnected 1913 | - key: UI_LABEL_SUCCESS 1914 | value: Success 1915 | - key: UI_LABEL_ERROR 1916 | value: Error 1917 | - key: UI_LABEL_NONE 1918 | value: None 1919 | - key: UI_FORMAT_SIMPLE 1920 | value: '{0}' 1921 | - key: UI_FORMAT_SIMPLE_PERCENTAGE 1922 | value: '{0}%' 1923 | - key: UI_FORMAT_SIMPLE_MIN_TO_MAX 1924 | value: '{0}~{1}' 1925 | - key: UI_FORMAT_SIMPLE_MIN_BY_MAX 1926 | value: '{0}/{1}' 1927 | - key: UI_FORMAT_LEVEL 1928 | value: 'Lv: {0}' 1929 | - key: UI_FORMAT_CURRENT_EXP 1930 | value: 'Exp: {0}' 1931 | - key: UI_FORMAT_STAT_POINTS 1932 | value: 'Stat Points: {0}' 1933 | - key: UI_FORMAT_SKILL_POINTS 1934 | value: 'Skill Points: {0}' 1935 | - key: UI_FORMAT_CURRENT_HP 1936 | value: 'Hp: {0}/{1}' 1937 | - key: UI_FORMAT_CURRENT_MP 1938 | value: 'Mp: {0}/{1}' 1939 | - key: UI_FORMAT_CURRENT_STAMINA 1940 | value: 'Stamina: {0}/{1}' 1941 | - key: UI_FORMAT_CURRENT_FOOD 1942 | value: 'Food: {0}/{1}' 1943 | - key: UI_FORMAT_CURRENT_WATER 1944 | value: 'Water: {0}/{1}' 1945 | - key: UI_FORMAT_CURRENT_WEIGHT 1946 | value: 'Weight: {0}/{1}' 1947 | - key: UI_FORMAT_CURRENT_SLOT 1948 | value: 'Slot: {0}/{1}' 1949 | - key: UI_LABEL_UNLIMIT_WEIGHT 1950 | value: Unlimit Weight 1951 | - key: UI_LABEL_UNLIMIT_SLOT 1952 | value: Unlimit Slot 1953 | - key: UI_FORMAT_HP 1954 | value: 'Hp: {0}' 1955 | - key: UI_FORMAT_MP 1956 | value: 'Mp: {0}' 1957 | - key: UI_FORMAT_STAMINA 1958 | value: 'Stamina: {0}' 1959 | - key: UI_FORMAT_FOOD 1960 | value: 'Food: {0}' 1961 | - key: UI_FORMAT_WATER 1962 | value: 'Water: {0}' 1963 | - key: UI_FORMAT_ACCURACY 1964 | value: 'Accuracy: {0}' 1965 | - key: UI_FORMAT_EVASION 1966 | value: 'Evasion: {0}' 1967 | - key: UI_FORMAT_CRITICAL_RATE 1968 | value: 'Cri. Rate: {0}%' 1969 | - key: UI_FORMAT_CRITICAL_DAMAGE_RATE 1970 | value: 'Cri. Damage: {0}%' 1971 | - key: UI_FORMAT_BLOCK_RATE 1972 | value: 'Block Rate: {0}%' 1973 | - key: UI_FORMAT_BLOCK_DAMAGE_RATE 1974 | value: 'Block Damage: {0}%' 1975 | - key: UI_FORMAT_MOVE_SPEED 1976 | value: 'Move Speed: {0}' 1977 | - key: UI_FORMAT_ATTACK_SPEED 1978 | value: 'Attack Speed: {0}' 1979 | - key: UI_FORMAT_WEIGHT 1980 | value: 'Weight: {0}' 1981 | - key: UI_FORMAT_SLOT 1982 | value: 'Slot: {0}' 1983 | - key: UI_FORMAT_GOLD 1984 | value: 'Gold: {0}' 1985 | - key: UI_FORMAT_CASH 1986 | value: 'Cash: {0}' 1987 | - key: UI_FORMAT_SELL_PRICE 1988 | value: 'Sell Price: {0}' 1989 | - key: UI_FORMAT_REQUIRE_LEVEL 1990 | value: 'Require Level: {0}' 1991 | - key: UI_FORMAT_REQUIRE_CLASS 1992 | value: 'Require Class: {0}' 1993 | - key: UI_FORMAT_AVAILABLE_WEAPONS 1994 | value: 'Available Weapons: {0}' 1995 | - key: UI_FORMAT_CONSUME_MP 1996 | value: 'Consume Mp: {0}' 1997 | - key: UI_FORMAT_SKILL_COOLDOWN_DURATION 1998 | value: 'Cooldown: {0}' 1999 | - key: UI_FORMAT_SKILL_TYPE 2000 | value: 'Skill Type: {0}' 2001 | - key: UI_SKILL_TYPE_ACTIVE 2002 | value: Active 2003 | - key: UI_SKILL_TYPE_PASSIVE 2004 | value: Passive 2005 | - key: UI_SKILL_TYPE_CRAFT_ITEM 2006 | value: Craft Item 2007 | - key: UI_FORMAT_BUFF_DURATION 2008 | value: 'Duration: {0}' 2009 | - key: UI_FORMAT_BUFF_RECOVERY_HP 2010 | value: 'Recovery Hp: {0}' 2011 | - key: UI_FORMAT_BUFF_RECOVERY_MP 2012 | value: 'Recovery Mp: {0}' 2013 | - key: UI_FORMAT_BUFF_RECOVERY_STAMINA 2014 | value: 'Recovery Stamina: {0}' 2015 | - key: UI_FORMAT_BUFF_RECOVERY_FOOD 2016 | value: 'Recovery Food: {0}' 2017 | - key: UI_FORMAT_BUFF_RECOVERY_WATER 2018 | value: 'Recovery Water: {0}' 2019 | - key: UI_FORMAT_ITEM_REFINE_LEVEL 2020 | value: +{0} 2021 | - key: UI_FORMAT_ITEM_TITLE_WITH_REFINE_LEVEL 2022 | value: '{0} +{1}' 2023 | - key: UI_FORMAT_ITEM_TYPE 2024 | value: 'Item Type: {0}' 2025 | - key: UI_ITEM_TYPE_JUNK 2026 | value: Junk 2027 | - key: UI_ITEM_TYPE_SHIELD 2028 | value: Shield 2029 | - key: UI_ITEM_TYPE_POTION 2030 | value: Potion 2031 | - key: UI_ITEM_TYPE_AMMO 2032 | value: Ammo 2033 | - key: UI_ITEM_TYPE_BUILDING 2034 | value: Building 2035 | - key: UI_ITEM_TYPE_PET 2036 | value: Pet 2037 | - key: UI_ITEM_TYPE_SOCKET_ENHANCER 2038 | value: Socket Enhancer 2039 | - key: UI_ITEM_TYPE_MOUNT 2040 | value: Mount 2041 | - key: UI_ITEM_TYPE_SKILL 2042 | value: Skill 2043 | - key: UI_FORMAT_ITEM_RARITY 2044 | value: 'Rarity: {0}' 2045 | - key: UI_FORMAT_ITEM_STACK 2046 | value: '{0}/{1}' 2047 | - key: UI_FORMAT_ITEM_DURABILITY 2048 | value: 'Durability: {0}' 2049 | - key: UI_FORMAT_SOCIAL_LEADER 2050 | value: 'Leader: {0}' 2051 | - key: UI_FORMAT_SOCIAL_MEMBER_AMOUNT 2052 | value: 'Member: {0}/{1}' 2053 | - key: UI_FORMAT_SOCIAL_MEMBER_AMOUNT_NO_LIMIT 2054 | value: 'Member: {0}' 2055 | - key: UI_FORMAT_SHARE_EXP_PERCENTAGE 2056 | value: 'Share Exp: {0}%' 2057 | - key: UI_FORMAT_REWARD_EXP 2058 | value: 'Reward Exp: {0}' 2059 | - key: UI_FORMAT_REWARD_GOLD 2060 | value: 'Reward Gold: {0}' 2061 | - key: UI_FORMAT_REWARD_CASH 2062 | value: 'Reward Cash: {0}' 2063 | - key: UI_FORMAT_CURRENT_ATTRIBUTE 2064 | value: '{0}: {1}/{2}' 2065 | - key: UI_FORMAT_CURRENT_ATTRIBUTE_NOT_ENOUGH 2066 | value: '{0}: {1}/{2}' 2067 | - key: UI_FORMAT_ATTRIBUTE_AMOUNT 2068 | value: '{0}: {1}' 2069 | - key: UI_FORMAT_RESISTANCE_AMOUNT 2070 | value: '{0} Resistance: {1}%' 2071 | - key: UI_FORMAT_ARMOR_AMOUNT 2072 | value: '{0} Armor: {1}' 2073 | - key: UI_FORMAT_CURRENT_SKILL 2074 | value: '{0}: {1}/{2}' 2075 | - key: UI_FORMAT_CURRENT_SKILL_NOT_ENOUGH 2076 | value: '{0}: {1}/{2}' 2077 | - key: UI_FORMAT_SKILL_LEVEL 2078 | value: '{0}: {1}' 2079 | - key: UI_FORMAT_CURRENT_ITEM 2080 | value: '{0}: {1}/{2}' 2081 | - key: UI_FORMAT_CURRENT_ITEM_NOT_ENOUGH 2082 | value: '{0}: {1}/{2}' 2083 | - key: UI_FORMAT_ITEM_AMOUNT 2084 | value: '{0}: {1}' 2085 | - key: UI_FORMAT_DAMAGE_AMOUNT 2086 | value: '{0}~{1}' 2087 | - key: UI_FORMAT_DAMAGE_WITH_ELEMENTAL 2088 | value: '{0} Damage: {1}~{2}' 2089 | - key: UI_FORMAT_DAMAGE_INFLICTION 2090 | value: Inflict {0}% damage 2091 | - key: UI_FORMAT_DAMAGE_INFLICTION_AS_ELEMENTAL 2092 | value: Inflict {1}% as {0} damage 2093 | - key: UI_FORMAT_REQUIRE_GOLD 2094 | value: 'Gold: {0}/{1}' 2095 | - key: UI_FORMAT_REQUIRE_GOLD_NOT_ENOUGH 2096 | value: 'Gold: {0}/{1}' 2097 | - key: UI_FORMAT_EQUIPMENT_SET 2098 | value: '{0} 2099 | 2100 | {1}' 2101 | - key: UI_FORMAT_EQUIPMENT_SET_APPLIED_EFFECT 2102 | value: ({0}) {1} 2103 | - key: UI_FORMAT_EQUIPMENT_SET_UNAPPLIED_EFFECT 2104 | value: ({0}) {1} 2105 | - key: UI_FORMAT_EQUIPMENT_SOCKET_FILLED 2106 | value: '({0}) - {1} 2107 | 2108 | {2}' 2109 | - key: UI_FORMAT_EQUIPMENT_SOCKET_EMPTY 2110 | value: ({0}) - Empty 2111 | - key: UI_FORMAT_REFINE_SUCCESS_RATE 2112 | value: 'Success Rate: {0}%' 2113 | - key: UI_FORMAT_REFINING_LEVEL 2114 | value: 'Refining Level: +{0}' 2115 | - key: UI_FORMAT_INCREASE_MAX_MEMBER 2116 | value: Max Member +{0} 2117 | - key: UI_FORMAT_INCREASE_EXP_GAIN_PERCENTAGE 2118 | value: Exp Gain +{0}% 2119 | - key: UI_FORMAT_INCREASE_GOLD_GAIN_PERCENTAGE 2120 | value: Gold Gain +{0}% 2121 | - key: UI_FORMAT_INCREASE_SHARE_EXP_GAIN_PERCENTAGE 2122 | value: Party Share Exp +{0}% 2123 | - key: UI_FORMAT_INCREASE_SHARE_GOLD_GAIN_PERCENTAGE 2124 | value: Party Share Gold +{0}% 2125 | - key: UI_FORMAT_DECREASE_EXP_PENALTY_PERCENTAGE 2126 | value: Exp Penalty -{0}% 2127 | - key: UI_FORMAT_QUEST_TITLE_ON_GOING 2128 | value: '{0} (Ongoing)' 2129 | - key: UI_FORMAT_QUEST_TITLE_TASKS_COMPLETE 2130 | value: '{0} (Task Completed)' 2131 | - key: UI_FORMAT_QUEST_TITLE_COMPLETE 2132 | value: '{0} (Completed)' 2133 | - key: UI_FORMAT_QUEST_TASK_KILL_MONSTER 2134 | value: 'Kills {0}: {1}/{2}' 2135 | - key: UI_FORMAT_QUEST_TASK_COLLECT_ITEM 2136 | value: 'Collects {0}: {1}/{2}' 2137 | - key: UI_FORMAT_QUEST_TASK_KILL_MONSTER_COMPLETE 2138 | value: 'Kills {0}: Complete' 2139 | - key: UI_FORMAT_QUEST_TASK_COLLECT_ITEM_COMPLETE 2140 | value: 'Collects {0}: Complete' 2141 | - key: UI_FORMAT_CHAT_LOCAL 2142 | value: '(LOCAL) {0}: {1}' 2143 | - key: UI_FORMAT_CHAT_GLOBAL 2144 | value: '(GLOBAL) {0}: {1}' 2145 | - key: UI_FORMAT_CHAT_WHISPER 2146 | value: '(WHISPER) {0}: {1}' 2147 | - key: UI_FORMAT_CHAT_PARTY 2148 | value: '(PARTY) {0}: {1}' 2149 | - key: UI_FORMAT_CHAT_GUILD 2150 | value: '(GUILD) {0}: {1}' 2151 | - key: UI_ERROR_KICKED_FROM_SERVER 2152 | value: You have been kicked from server 2153 | - key: UI_ERROR_CONNECTION_FAILED 2154 | value: Cannot connect to the server 2155 | - key: UI_ERROR_CONNECTION_REJECTED 2156 | value: Connection rejected by server 2157 | - key: UI_ERROR_REMOTE_CONNECTION_CLOSE 2158 | value: Server has been closed 2159 | - key: UI_ERROR_INVALID_PROTOCOL 2160 | value: Invalid protocol 2161 | - key: UI_ERROR_HOST_UNREACHABLE 2162 | value: Host unreachable 2163 | - key: UI_ERROR_CONNECTION_TIMEOUT 2164 | value: Connection timeout 2165 | - key: UI_ERROR_USER_NOT_FOUND 2166 | value: User not found 2167 | - key: UI_ERROR_ITEM_NOT_FOUND 2168 | value: Item not found 2169 | - key: UI_ERROR_NOT_ENOUGH_GOLD 2170 | value: Not enough gold 2171 | - key: UI_ERROR_NOT_ENOUGH_CASH 2172 | value: Not enough cash 2173 | - key: UI_ERROR_INVALID_DATA 2174 | value: Invalid data 2175 | - key: UI_ERROR_INVALID_CHARACTER_DATA 2176 | value: Invalid character data 2177 | - key: UI_ERROR_USERNAME_IS_EMPTY 2178 | value: Username is empty 2179 | - key: UI_ERROR_PASSWORD_IS_EMPTY 2180 | value: Password is empty 2181 | - key: UI_ERROR_CANNOT_CARRY_ALL_REWARDS 2182 | value: Cannot carry all rewards 2183 | - key: UI_ERROR_INVALID_USERNAME_OR_PASSWORD 2184 | value: Invalid username or password 2185 | - key: UI_ERROR_ALREADY_LOGGED_IN 2186 | value: User already logged in 2187 | - key: UI_ERROR_INVALID_CONFIRM_PASSWORD 2188 | value: Invalid confirm password 2189 | - key: UI_ERROR_USERNAME_TOO_SHORT 2190 | value: Username is too short 2191 | - key: UI_ERROR_USERNAME_TOO_LONG 2192 | value: Username is too long 2193 | - key: UI_ERROR_PASSWORD_TOO_SHORT 2194 | value: Password is too short 2195 | - key: UI_ERROR_USERNAME_EXISTED 2196 | value: Username is already existed 2197 | - key: UI_ERROR_NO_CHOSEN_CHARACTER_TO_START 2198 | value: Please choose character to start game 2199 | - key: UI_ERROR_NO_CHOSEN_CHARACTER_TO_DELETE 2200 | value: Please choose character to delete 2201 | - key: UI_ERROR_ALREADY_SELECT_CHARACTER 2202 | value: Already select character 2203 | - key: UI_ERROR_MAP_SERVER_NOT_READY 2204 | value: Map server is not ready 2205 | - key: UI_ERROR_CHARACTER_NAME_TOO_SHORT 2206 | value: Character name is too short 2207 | - key: UI_ERROR_CHARACTER_NAME_TOO_LONG 2208 | value: Character name is too long 2209 | - key: UI_ERROR_CHARACTER_NAME_EXISTED 2210 | value: Character name is already existed 2211 | - key: UI_ERROR_CANNOT_GET_CASH_PACKAGE_INFO 2212 | value: Cannot retrieve cash package info 2213 | - key: UI_ERROR_CANNOT_GET_CASH_SHOP_INFO 2214 | value: Cannot retrieve cash shop info 2215 | - key: UI_ERROR_GUILD_ROLE_NAME_IS_EMPTY 2216 | value: Role name must not empty 2217 | - key: UI_ERROR_GUILD_ROLE_SHARE_EXP_NOT_NUMBER 2218 | value: Share exp percentage must be number 2219 | - key: UI_ERROR_INVALID_GUILD_ROLE 2220 | value: Invalid role 2221 | - key: UI_SUCCESS_CASH_SHOP_BUY 2222 | value: Success, let's check your inventory 2223 | - key: UI_DROP_ITEM 2224 | value: Drop Item 2225 | - key: UI_DROP_ITEM_DESCRIPTION 2226 | value: Enter amount of item 2227 | - key: UI_SELL_ITEM 2228 | value: Sell Item 2229 | - key: UI_SELL_ITEM_DESCRIPTION 2230 | value: Enter amount of item 2231 | - key: UI_OFFER_ITEM 2232 | value: Offer Item 2233 | - key: UI_OFFER_ITEM_DESCRIPTION 2234 | value: Enter amount of item 2235 | - key: UI_MOVE_ITEM_TO_STORAGE 2236 | value: Move To Storage 2237 | - key: UI_MOVE_ITEM_TO_STORAGE_DESCRIPTION 2238 | value: Enter amount of item 2239 | - key: UI_MOVE_ITEM_FROM_STORAGE 2240 | value: Move From Storage 2241 | - key: UI_MOVE_ITEM_FROM_STORAGE_DESCRIPTION 2242 | value: Enter amount of item 2243 | - key: UI_BANK_DEPOSIT 2244 | value: Deposit 2245 | - key: UI_BANK_DEPOSIT_DESCRIPTION 2246 | value: Enter amount of gold 2247 | - key: UI_BANK_WITHDRAW 2248 | value: Withdraw 2249 | - key: UI_BANK_WITHDRAW_DESCRIPTION 2250 | value: Enter amount of gold 2251 | - key: UI_OFFER_GOLD 2252 | value: Offer Gold 2253 | - key: UI_OFFER_GOLD_DESCRIPTION 2254 | value: Enter amount of gold 2255 | - key: UI_BUY_ITEM 2256 | value: Buy Item 2257 | - key: UI_BUY_ITEM_DESCRIPTION 2258 | value: Enter amount of item 2259 | - key: UI_PARTY_CHANGE_LEADER 2260 | value: Change Leader 2261 | - key: UI_PARTY_CHANGE_LEADER_DESCRIPTION 2262 | value: You sure you want to promote {0} to party leader? 2263 | - key: UI_PARTY_KICK_MEMBER 2264 | value: Kick Member 2265 | - key: UI_PARTY_KICK_MEMBER_DESCRIPTION 2266 | value: You sure you want to kick {0} from party? 2267 | - key: UI_PARTY_LEAVE 2268 | value: Leave Party 2269 | - key: UI_PARTY_LEAVE_DESCRIPTION 2270 | value: You sure you want to leave party? 2271 | - key: UI_GUILD_CHANGE_LEADER 2272 | value: Change Leader 2273 | - key: UI_GUILD_CHANGE_LEADER_DESCRIPTION 2274 | value: You sure you want to promote {0} to guild leader? 2275 | - key: UI_GUILD_KICK_MEMBER 2276 | value: Kick Member 2277 | - key: UI_GUILD_KICK_MEMBER_DESCRIPTION 2278 | value: You sure you want to kick {0} from guild? 2279 | - key: UI_GUILD_LEAVE 2280 | value: Leave Guild 2281 | - key: UI_GUILD_LEAVE_DESCRIPTION 2282 | value: You sure you want to leave guild? 2283 | - key: UI_GUILD_ROLE_CAN_INVITE 2284 | value: Can invite 2285 | - key: UI_GUILD_ROLE_CANNOT_INVITE 2286 | value: Cannot invite 2287 | - key: UI_GUILD_ROLE_CAN_KICK 2288 | value: Can kick 2289 | - key: UI_GUILD_ROLE_CANNOT_KICK 2290 | value: Cannot kick 2291 | - key: UI_FRIEND_ADD 2292 | value: Add Friend 2293 | - key: UI_FRIEND_ADD_DESCRIPTION 2294 | value: You want to add {0} to friend list? 2295 | - key: UI_FRIEND_REMOVE 2296 | value: Remove Friend 2297 | - key: UI_FRIEND_REMOVE_DESCRIPTION 2298 | value: You want to remove {0} from friend list? 2299 | - key: UI_FORMAT_HP_RATE 2300 | value: 'Hp: {0}%' 2301 | - key: UI_FORMAT_MP_RATE 2302 | value: 'Mp: {0}%' 2303 | - key: UI_FORMAT_STAMINA_RATE 2304 | value: 'Stamina: {0}%' 2305 | - key: UI_FORMAT_FOOD_RATE 2306 | value: 'Food: {0}%' 2307 | - key: UI_FORMAT_WATER_RATE 2308 | value: 'Water: {0}%' 2309 | - key: UI_FORMAT_ACCURACY_RATE 2310 | value: 'Accuracy: {0}%' 2311 | - key: UI_FORMAT_EVASION_RATE 2312 | value: 'Evasion: {0}%' 2313 | - key: UI_FORMAT_CRITICAL_RATE_RATE 2314 | value: '% of Cri. Rate: {0}%' 2315 | - key: UI_FORMAT_CRITICAL_DAMAGE_RATE_RATE 2316 | value: '% of Cri. Damage: {0}%' 2317 | - key: UI_FORMAT_BLOCK_RATE_RATE 2318 | value: '% of Block Rate: {0}%' 2319 | - key: UI_FORMAT_BLOCK_DAMAGE_RATE_RATE 2320 | value: '% of Block Damage: {0}%' 2321 | - key: UI_FORMAT_MOVE_SPEED_RATE 2322 | value: 'Move Speed: {0}%' 2323 | - key: UI_FORMAT_ATTACK_SPEED_RATE 2324 | value: 'Attack Speed: {0}%' 2325 | - key: UI_FORMAT_ATTRIBUTE_RATE 2326 | value: '{0}: {1}%' 2327 | - key: UI_FORMAT_ITEM_BUILDING 2328 | value: Build {0} 2329 | - key: UI_FORMAT_ITEM_PET 2330 | value: Summon {0} 2331 | - key: UI_FORMAT_ITEM_MOUNT 2332 | value: Mount {0} 2333 | - key: UI_FORMAT_ITEM_SKILL 2334 | value: Use Skill {0} Lv. {1} 2335 | - key: UI_FORMAT_SKILL_SUMMON 2336 | value: 'Summon {0} Lv. {1} x {2} (Max: {3}), {4} Secs.' 2337 | - key: UI_FORMAT_SKILL_MOUNT 2338 | value: Mount {0} 2339 | newLanguageKey: ENG 2340 | addNewLanguage: 0 2341 | migrateOldGameMessage: 0 2342 | setMessageLanguageKey: 2343 | setMessageKey: 2344 | setMessageValue: 2345 | setMessage: 0 2346 | --- !u!114 &1379718509 2347 | MonoBehaviour: 2348 | m_ObjectHideFlags: 0 2349 | m_CorrespondingSourceObject: {fileID: 0} 2350 | m_PrefabInstance: {fileID: 0} 2351 | m_PrefabAsset: {fileID: 0} 2352 | m_GameObject: {fileID: 1379718501} 2353 | m_Enabled: 1 2354 | m_EditorHideFlags: 0 2355 | m_Script: {fileID: 11500000, guid: 3c89ff02ae1303546aaa8e11bad1aa42, type: 3} 2356 | m_Name: 2357 | m_EditorClassIdentifier: 2358 | --- !u!114 &1803291193 stripped 2359 | MonoBehaviour: 2360 | m_CorrespondingSourceObject: {fileID: 114779210844791916, guid: eb6737dc528a143499748ce0d673b59c, 2361 | type: 3} 2362 | m_PrefabInstance: {fileID: 846140300} 2363 | m_PrefabAsset: {fileID: 0} 2364 | m_GameObject: {fileID: 0} 2365 | m_Enabled: 1 2366 | m_EditorHideFlags: 0 2367 | m_Script: {fileID: 11500000, guid: f4a337e47669c9e46b404eafabe7ba0a, type: 3} 2368 | m_Name: 2369 | m_EditorClassIdentifier: 2370 | --- !u!1660057539 &9223372036854775807 2371 | SceneRoots: 2372 | m_ObjectHideFlags: 0 2373 | m_Roots: 2374 | - {fileID: 1232480988} 2375 | - {fileID: 694651799} 2376 | - {fileID: 846140300} 2377 | - {fileID: 660141367} 2378 | - {fileID: 8174917} 2379 | - {fileID: 1379718503} 2380 | -------------------------------------------------------------------------------- /Demo/Scenes/00Init_2D_AimAtCursor.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4af53b95ae46fb8498c1d142ce8519fb 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Demo/Scenes/00Init_2D_AimAtCursorSettings.lighting: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!850595691 &4890085278179872738 4 | LightingSettings: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_Name: 00Init_2D_AimAtCursorSettings 10 | serializedVersion: 6 11 | m_GIWorkflowMode: 0 12 | m_EnableBakedLightmaps: 1 13 | m_EnableRealtimeLightmaps: 1 14 | m_RealtimeEnvironmentLighting: 0 15 | m_BounceScale: 1 16 | m_AlbedoBoost: 1 17 | m_IndirectOutputScale: 1 18 | m_UsingShadowmask: 1 19 | m_BakeBackend: 0 20 | m_LightmapMaxSize: 1024 21 | m_BakeResolution: 40 22 | m_Padding: 2 23 | m_LightmapCompression: 3 24 | m_AO: 0 25 | m_AOMaxDistance: 1 26 | m_CompAOExponent: 1 27 | m_CompAOExponentDirect: 0 28 | m_ExtractAO: 0 29 | m_MixedBakeMode: 2 30 | m_LightmapsBakeMode: 1 31 | m_FilterMode: 1 32 | m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0} 33 | m_ExportTrainingData: 0 34 | m_TrainingDataDestination: TrainingData 35 | m_RealtimeResolution: 2 36 | m_ForceWhiteAlbedo: 0 37 | m_ForceUpdates: 0 38 | m_FinalGather: 0 39 | m_FinalGatherRayCount: 256 40 | m_FinalGatherFiltering: 1 41 | m_PVRCulling: 1 42 | m_PVRSampling: 1 43 | m_PVRDirectSampleCount: 32 44 | m_PVRSampleCount: 512 45 | m_PVREnvironmentSampleCount: 512 46 | m_PVREnvironmentReferencePointCount: 2048 47 | m_LightProbeSampleCountMultiplier: 4 48 | m_PVRBounces: 2 49 | m_PVRMinBounces: 2 50 | m_PVREnvironmentImportanceSampling: 0 51 | m_PVRFilteringMode: 2 52 | m_PVRDenoiserTypeDirect: 0 53 | m_PVRDenoiserTypeIndirect: 0 54 | m_PVRDenoiserTypeAO: 0 55 | m_PVRFilterTypeDirect: 0 56 | m_PVRFilterTypeIndirect: 0 57 | m_PVRFilterTypeAO: 0 58 | m_PVRFilteringGaussRadiusDirect: 1 59 | m_PVRFilteringGaussRadiusIndirect: 5 60 | m_PVRFilteringGaussRadiusAO: 2 61 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5 62 | m_PVRFilteringAtrousPositionSigmaIndirect: 2 63 | m_PVRFilteringAtrousPositionSigmaAO: 1 64 | m_PVRTiledBaking: 0 65 | m_NumRaysToShootPerTexel: -1 66 | m_RespectSceneVisibilityWhenBakingGI: 0 67 | -------------------------------------------------------------------------------- /Demo/Scenes/00Init_2D_AimAtCursorSettings.lighting.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b845d5bcbcd41654599df5f4420d9ac7 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 4890085278179872738 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Demo/Scenes/00Init_AimAtCursor.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 362029f491cd9e843a2fc5b0a31c1b7c 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Demo/Scenes/00Init_AimAtCursorSettings.lighting: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!850595691 &4890085278179872738 4 | LightingSettings: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_Name: 00Init_AimAtCursorSettings 10 | serializedVersion: 6 11 | m_GIWorkflowMode: 0 12 | m_EnableBakedLightmaps: 1 13 | m_EnableRealtimeLightmaps: 1 14 | m_RealtimeEnvironmentLighting: 0 15 | m_BounceScale: 1 16 | m_AlbedoBoost: 1 17 | m_IndirectOutputScale: 1 18 | m_UsingShadowmask: 1 19 | m_BakeBackend: 0 20 | m_LightmapMaxSize: 1024 21 | m_BakeResolution: 40 22 | m_Padding: 2 23 | m_LightmapCompression: 3 24 | m_AO: 0 25 | m_AOMaxDistance: 1 26 | m_CompAOExponent: 1 27 | m_CompAOExponentDirect: 0 28 | m_ExtractAO: 0 29 | m_MixedBakeMode: 2 30 | m_LightmapsBakeMode: 1 31 | m_FilterMode: 1 32 | m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0} 33 | m_ExportTrainingData: 0 34 | m_TrainingDataDestination: TrainingData 35 | m_RealtimeResolution: 2 36 | m_ForceWhiteAlbedo: 0 37 | m_ForceUpdates: 0 38 | m_FinalGather: 0 39 | m_FinalGatherRayCount: 256 40 | m_FinalGatherFiltering: 1 41 | m_PVRCulling: 1 42 | m_PVRSampling: 1 43 | m_PVRDirectSampleCount: 32 44 | m_PVRSampleCount: 512 45 | m_PVREnvironmentSampleCount: 512 46 | m_PVREnvironmentReferencePointCount: 2048 47 | m_LightProbeSampleCountMultiplier: 4 48 | m_PVRBounces: 2 49 | m_PVRMinBounces: 2 50 | m_PVREnvironmentImportanceSampling: 0 51 | m_PVRFilteringMode: 2 52 | m_PVRDenoiserTypeDirect: 0 53 | m_PVRDenoiserTypeIndirect: 0 54 | m_PVRDenoiserTypeAO: 0 55 | m_PVRFilterTypeDirect: 0 56 | m_PVRFilterTypeIndirect: 0 57 | m_PVRFilterTypeAO: 0 58 | m_PVRFilteringGaussRadiusDirect: 1 59 | m_PVRFilteringGaussRadiusIndirect: 5 60 | m_PVRFilteringGaussRadiusAO: 2 61 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5 62 | m_PVRFilteringAtrousPositionSigmaIndirect: 2 63 | m_PVRFilteringAtrousPositionSigmaAO: 1 64 | m_PVRTiledBaking: 0 65 | m_NumRaysToShootPerTexel: -1 66 | m_RespectSceneVisibilityWhenBakingGI: 0 67 | -------------------------------------------------------------------------------- /Demo/Scenes/00Init_AimAtCursorSettings.lighting.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d45bb89dcc1b1cb49ab0360613913a8e 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 4890085278179872738 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Demo/Scenes/00Init_MMO_2D_AimAtCursor.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0ac51a0bed17550409101c8989ac2617 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Demo/Scenes/00Init_MMO_AimAtCursor.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 82507853f86383a4e8460923064e3d44 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Ittipon Teerapruettikulchai 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # UnityMultiplayerARPG_AimAtCursorController 2 | 3 | This controller was made for 3D and 2D games, character will aimming to cursor. 4 | 5 | If playing in PC it will aimming to mouse cursor. 6 | 7 | If playing in Mobile it will aimming to aimming joystick. 8 | -------------------------------------------------------------------------------- /Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 07c06f1677d5a154fa075b3f68ad9351 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Scripts/AimAtCursorPlayerCharacterController.cs: -------------------------------------------------------------------------------- 1 | using Insthync.CameraAndInput; 2 | using UnityEngine; 3 | 4 | namespace MultiplayerARPG 5 | { 6 | public class AimAtCursorPlayerCharacterController : BasePlayerCharacterController 7 | { 8 | [Header("Camera Controls Prefabs")] 9 | [SerializeField] 10 | protected FollowCameraControls gameplayCameraPrefab; 11 | [SerializeField] 12 | protected FollowCameraControls minimapCameraPrefab; 13 | 14 | [Header("Controller Settings")] 15 | [SerializeField] 16 | protected bool doNotTurnToPointingEntity; 17 | [SerializeField] 18 | protected bool setAimPositionToRaycastHitPoint; 19 | 20 | [Header("Building Settings")] 21 | [SerializeField] 22 | protected bool buildGridSnap; 23 | [SerializeField] 24 | protected Vector3 buildGridOffsets = Vector3.zero; 25 | [SerializeField] 26 | protected float buildGridSize = 4f; 27 | [SerializeField] 28 | protected bool buildRotationSnap; 29 | [SerializeField] 30 | protected float buildRotateAngle = 45f; 31 | [SerializeField] 32 | protected float buildRotateSpeed = 200f; 33 | 34 | [Header("Entity Activating Settings")] 35 | [SerializeField] 36 | [Tooltip("If this value is `0`, this value will be set as `GameInstance` -> `conversationDistance`")] 37 | protected float distanceToActivateByActivateKey = 0f; 38 | [SerializeField] 39 | [Tooltip("If this value is `0`, this value will be set as `GameInstance` -> `pickUpItemDistance`")] 40 | protected float distanceToActivateByPickupKey = 0f; 41 | 42 | #region Events 43 | /// 44 | /// RelateId (string), AimPosition (AimPosition) 45 | /// 46 | public event System.Action onBeforeUseSkillHotkey; 47 | /// 48 | /// RelateId (string), AimPosition (AimPosition) 49 | /// 50 | public event System.Action onAfterUseSkillHotkey; 51 | /// 52 | /// RelateId (string), AimPosition (AimPosition) 53 | /// 54 | public event System.Action onBeforeUseItemHotkey; 55 | /// 56 | /// RelateId (string), AimPosition (AimPosition) 57 | /// 58 | public event System.Action onAfterUseItemHotkey; 59 | #endregion 60 | 61 | public byte HotkeyEquipWeaponSet { get; set; } 62 | public NearbyEntityDetector ActivatableEntityDetector { get; protected set; } 63 | public NearbyEntityDetector ItemDropEntityDetector { get; protected set; } 64 | public IGameplayCameraController CacheGameplayCameraController { get; protected set; } 65 | public IMinimapCameraController CacheMinimapCameraController { get; protected set; } 66 | 67 | // Input & control states variables 68 | protected bool _isLeftHandAttacking; 69 | protected bool _isSprinting; 70 | protected bool _isWalking; 71 | protected IPhysicFunctions _physicFunctions; 72 | protected Vector3 _aimTargetPosition; 73 | protected bool _attackPreventedWhileCursorOverUI; 74 | 75 | protected override void Awake() 76 | { 77 | base.Awake(); 78 | // Initial physic functions 79 | if (CurrentGameInstance.DimensionType == DimensionType.Dimension3D) 80 | _physicFunctions = new PhysicFunctions(512); 81 | else 82 | _physicFunctions = new PhysicFunctions2D(512); 83 | // Initial gameplay camera controller 84 | CacheGameplayCameraController = gameObject.GetOrAddComponent((obj) => 85 | { 86 | DefaultGameplayCameraController castedObj = obj as DefaultGameplayCameraController; 87 | castedObj.SetData(gameplayCameraPrefab); 88 | }); 89 | CacheGameplayCameraController.Init(); 90 | // Initial minimap camera controller 91 | CacheMinimapCameraController = gameObject.GetOrAddComponent((obj) => 92 | { 93 | DefaultMinimapCameraController castedObj = obj as DefaultMinimapCameraController; 94 | castedObj.SetData(minimapCameraPrefab); 95 | }); 96 | CacheMinimapCameraController.Init(); 97 | // Initial build aim controller 98 | BuildAimController = gameObject.GetOrAddComponent((obj) => 99 | { 100 | DefaultBuildAimController castedObj = obj as DefaultBuildAimController; 101 | castedObj.SetData(buildGridSnap, buildGridOffsets, buildGridSize, buildRotationSnap, buildRotateAngle, buildRotateSpeed); 102 | }); 103 | BuildAimController.Init(); 104 | // Initial area skill aim controller 105 | AreaSkillAimController = gameObject.GetOrAddComponent(); 106 | 107 | // Setup activate distance 108 | if (distanceToActivateByActivateKey <= 0f) 109 | distanceToActivateByActivateKey = GameInstance.Singleton.conversationDistance; 110 | if (distanceToActivateByPickupKey <= 0f) 111 | distanceToActivateByPickupKey = GameInstance.Singleton.pickUpItemDistance; 112 | 113 | // This entity detector will be find entities to use when pressed activate key 114 | GameObject tempGameObject = new GameObject("_ActivatingEntityDetector"); 115 | ActivatableEntityDetector = tempGameObject.AddComponent(); 116 | ActivatableEntityDetector.detectingRadius = distanceToActivateByActivateKey; 117 | ActivatableEntityDetector.findActivatableEntity = true; 118 | ActivatableEntityDetector.findHoldActivatableEntity = true; 119 | // This entity detector will be find item drop entities to use when pressed pickup key 120 | tempGameObject = new GameObject("_ItemDropEntityDetector"); 121 | ItemDropEntityDetector = tempGameObject.AddComponent(); 122 | ItemDropEntityDetector.detectingRadius = distanceToActivateByPickupKey; 123 | ItemDropEntityDetector.findPickupActivatableEntity = true; 124 | } 125 | 126 | protected override void Desetup(BasePlayerCharacterEntity characterEntity) 127 | { 128 | base.Desetup(characterEntity); 129 | CacheGameplayCameraController.Desetup(characterEntity); 130 | CacheMinimapCameraController.Desetup(characterEntity); 131 | } 132 | 133 | protected override void OnDestroy() 134 | { 135 | base.OnDestroy(); 136 | if (ActivatableEntityDetector != null) 137 | Destroy(ActivatableEntityDetector.gameObject); 138 | if (ItemDropEntityDetector != null) 139 | Destroy(ItemDropEntityDetector.gameObject); 140 | } 141 | 142 | protected override void Update() 143 | { 144 | if (!PlayingCharacterEntity || !PlayingCharacterEntity.IsOwnerClient) 145 | return; 146 | 147 | CacheGameplayCameraController.FollowingEntityTransform = CameraTargetTransform; 148 | CacheMinimapCameraController.FollowingEntityTransform = CameraTargetTransform; 149 | CacheMinimapCameraController.FollowingGameplayCameraTransform = CacheGameplayCameraController.CameraTransform; 150 | 151 | UpdateInput(); 152 | } 153 | 154 | protected void UpdateInput() 155 | { 156 | if (GenericUtils.IsFocusInputField() || PlayingCharacterEntity.IsDead()) 157 | { 158 | PlayingCharacterEntity.KeyMovement(Vector3.zero, MovementState.None); 159 | return; 160 | } 161 | 162 | // If it's building something, don't allow to activate NPC/Warp/Pickup Item 163 | if (!ConstructingBuildingEntity) 164 | { 165 | // Activate nearby npcs / players / activable buildings 166 | if (InputManager.GetButtonDown("Activate")) 167 | { 168 | if (ActivatableEntityDetector.activatableEntities.Count > 0) 169 | { 170 | IActivatableEntity activatable; 171 | for (int i = 0; i < ActivatableEntityDetector.activatableEntities.Count; ++i) 172 | { 173 | activatable = ActivatableEntityDetector.activatableEntities[i]; 174 | if (activatable.CanActivate()) 175 | { 176 | activatable.OnActivate(); 177 | break; 178 | } 179 | } 180 | } 181 | } 182 | // Pick up nearby items 183 | if (InputManager.GetButtonDown("PickUpItem")) 184 | { 185 | if (ItemDropEntityDetector.pickupActivatableEntities.Count > 0) 186 | { 187 | IPickupActivatableEntity activatable; 188 | for (int i = 0; i < ItemDropEntityDetector.pickupActivatableEntities.Count; ++i) 189 | { 190 | activatable = ItemDropEntityDetector.pickupActivatableEntities[i]; 191 | if (activatable.CanPickupActivate()) 192 | { 193 | activatable.OnPickupActivate(); 194 | break; 195 | } 196 | } 197 | } 198 | } 199 | // Reload 200 | if (InputManager.GetButtonDown("Reload")) 201 | { 202 | // Reload ammo when press the button 203 | ReloadAmmo(); 204 | } 205 | if (InputManager.GetButtonDown("ExitVehicle")) 206 | { 207 | // Exit vehicle 208 | PlayingCharacterEntity.CallCmdExitVehicle(); 209 | } 210 | if (InputManager.GetButtonDown("SwitchEquipWeaponSet")) 211 | { 212 | // Switch equip weapon set 213 | GameInstance.ClientInventoryHandlers.RequestSwitchEquipWeaponSet(new RequestSwitchEquipWeaponSetMessage() 214 | { 215 | equipWeaponSet = (byte)(PlayingCharacterEntity.EquipWeaponSet + 1), 216 | }, ClientInventoryActions.ResponseSwitchEquipWeaponSet); 217 | } 218 | // Auto reload 219 | if (PlayingCharacterEntity.EquipWeapons.rightHand.IsAmmoEmpty() || 220 | PlayingCharacterEntity.EquipWeapons.leftHand.IsAmmoEmpty()) 221 | { 222 | // Reload ammo when empty and not press any keys 223 | ReloadAmmo(); 224 | } 225 | } 226 | 227 | UpdateLookInput(); 228 | UpdateWASDInput(); 229 | } 230 | 231 | protected void UpdateWASDInput() 232 | { 233 | // If mobile platforms, don't receive input raw to make it smooth 234 | bool raw = !InputManager.IsUseMobileInput(); 235 | Vector3 moveDirection = GetMoveDirection(InputManager.GetAxis("Horizontal", raw), InputManager.GetAxis("Vertical", raw)); 236 | moveDirection.Normalize(); 237 | 238 | // Get fire type 239 | FireType fireType; 240 | IWeaponItem leftHandItem = PlayingCharacterEntity.EquipWeapons.GetLeftHandWeaponItem(); 241 | IWeaponItem rightHandItem = PlayingCharacterEntity.EquipWeapons.GetRightHandWeaponItem(); 242 | if (_isLeftHandAttacking && leftHandItem != null) 243 | { 244 | fireType = leftHandItem.FireType; 245 | } 246 | else if (!_isLeftHandAttacking && rightHandItem != null) 247 | { 248 | fireType = rightHandItem.FireType; 249 | } 250 | else 251 | { 252 | fireType = GameInstance.Singleton.DefaultWeaponItem.FireType; 253 | } 254 | 255 | if (moveDirection.sqrMagnitude > 0f) 256 | { 257 | // Character start moving, so hide npc dialog 258 | HideNpcDialog(); 259 | } 260 | 261 | // Attack when player pressed attack button 262 | if (!UICharacterHotkeys.UsingHotkey) 263 | { 264 | // NOTE: With this controller, single fire will do the same as automatic 265 | if (InputManager.GetButtonDown("Fire1") || InputManager.GetButtonDown("Attack")) 266 | { 267 | bool isPointerOverUIObject = UISceneGameplay.IsPointerOverUIObject(); 268 | // If pointer over ui, start avoid attack inputs to prevent character attack while pointer over ui 269 | if (isPointerOverUIObject) 270 | _attackPreventedWhileCursorOverUI = true; 271 | 272 | if (!_attackPreventedWhileCursorOverUI) 273 | { 274 | switch (fireType) 275 | { 276 | case FireType.SingleFire: 277 | case FireType.Automatic: 278 | break; 279 | case FireType.FireOnRelease: 280 | WeaponCharge(); 281 | break; 282 | } 283 | } 284 | } 285 | else if (InputManager.GetButton("Fire1") || InputManager.GetButton("Attack")) 286 | { 287 | if (!_attackPreventedWhileCursorOverUI) 288 | { 289 | switch (fireType) 290 | { 291 | case FireType.SingleFire: 292 | case FireType.Automatic: 293 | Attack(); 294 | break; 295 | case FireType.FireOnRelease: 296 | break; 297 | } 298 | } 299 | } 300 | else if (InputManager.GetButtonUp("Fire1") || InputManager.GetButtonUp("Attack")) 301 | { 302 | if (!_attackPreventedWhileCursorOverUI) 303 | { 304 | switch (fireType) 305 | { 306 | case FireType.SingleFire: 307 | case FireType.Automatic: 308 | break; 309 | case FireType.FireOnRelease: 310 | Attack(); 311 | break; 312 | } 313 | } 314 | 315 | bool isPointerOverUIObject = UISceneGameplay.IsPointerOverUIObject(); 316 | // No pointer over ui and all attack key released, stop avoid attack inputs 317 | if (_attackPreventedWhileCursorOverUI && !isPointerOverUIObject) 318 | _attackPreventedWhileCursorOverUI = false; 319 | } 320 | } 321 | 322 | // Always forward 323 | MovementState movementState = MovementState.None; 324 | if (PlayingCharacterEntity.MovementState.Has(MovementState.IsUnderWater)) 325 | { 326 | if (InputManager.GetButton("SwimUp")) 327 | { 328 | movementState |= MovementState.Up; 329 | } 330 | else if (InputManager.GetButton("SwimDown")) 331 | { 332 | movementState |= MovementState.Down; 333 | } 334 | _isSprinting = false; 335 | _isWalking = false; 336 | } 337 | else if (PlayingCharacterEntity.MovementState.Has(MovementState.IsGrounded)) 338 | { 339 | if (InputManager.GetButtonDown("Sprint")) 340 | { 341 | // Toggles sprint state 342 | _isSprinting = !_isSprinting; 343 | _isWalking = false; 344 | } 345 | else if (InputManager.GetButtonDown("Walk")) 346 | { 347 | // Toggles sprint state 348 | _isWalking = !_isWalking; 349 | _isSprinting = false; 350 | } 351 | if (InputManager.GetButtonDown("Jump")) 352 | { 353 | movementState |= MovementState.IsJump; 354 | } 355 | } 356 | movementState |= GameplayUtils.GetStraightlyMovementStateByDirection(moveDirection, MovementTransform.forward); 357 | PlayingCharacterEntity.KeyMovement(moveDirection, movementState); 358 | 359 | // Set extra movement state 360 | if (_isSprinting) 361 | PlayingCharacterEntity.SetExtraMovementState(ExtraMovementState.IsSprinting); 362 | else if (_isWalking) 363 | PlayingCharacterEntity.SetExtraMovementState(ExtraMovementState.IsWalking); 364 | else 365 | PlayingCharacterEntity.SetExtraMovementState(ExtraMovementState.None); 366 | } 367 | 368 | protected void Attack() 369 | { 370 | if (ConstructingBuildingEntity) 371 | return; 372 | PlayingCharacterEntity.SetTargetEntity(SelectedGameEntity); 373 | // Switching right/left/right/left... 374 | WeaponHandlingState weaponHandlingState = GetWeaponHandlingState(_isLeftHandAttacking); 375 | if (PlayingCharacterEntity.Attack(ref weaponHandlingState)) 376 | { 377 | _isLeftHandAttacking = weaponHandlingState.Has(WeaponHandlingState.IsLeftHand); 378 | _isLeftHandAttacking = !_isLeftHandAttacking; 379 | } 380 | } 381 | 382 | protected void WeaponCharge() 383 | { 384 | if (ConstructingBuildingEntity) 385 | return; 386 | // Switching right/left/right/left... 387 | if (PlayingCharacterEntity.StartCharge(ref _isLeftHandAttacking)) 388 | _isLeftHandAttacking = !_isLeftHandAttacking; 389 | } 390 | 391 | protected void UpdateLookInput() 392 | { 393 | bool foundTargetEntity = false; 394 | bool isMobile = InputManager.IsUseMobileInput(); 395 | Vector2 lookDirection; 396 | if (isMobile) 397 | { 398 | // Turn character by joystick 399 | lookDirection = new Vector2(InputManager.GetAxis("Mouse X", false), InputManager.GetAxis("Mouse Y", false)); 400 | Transform tempTransform; 401 | IGameEntity tempGameEntity; 402 | Vector3 tempTargetPosition; 403 | int pickedCount; 404 | if (GameInstance.Singleton.DimensionType == DimensionType.Dimension2D) 405 | pickedCount = _physicFunctions.Raycast(PlayingCharacterEntity.MeleeDamageTransform.position, lookDirection, 100f, Physics.DefaultRaycastLayers); 406 | else 407 | pickedCount = _physicFunctions.Raycast(PlayingCharacterEntity.MeleeDamageTransform.position, new Vector3(lookDirection.x, 0, lookDirection.y), 100f, Physics.DefaultRaycastLayers); 408 | for (int i = pickedCount - 1; i >= 0; --i) 409 | { 410 | _aimTargetPosition = _physicFunctions.GetRaycastPoint(i); 411 | tempTransform = _physicFunctions.GetRaycastTransform(i); 412 | tempGameEntity = tempTransform.GetComponent(); 413 | if (!tempGameEntity.IsNull()) 414 | { 415 | foundTargetEntity = true; 416 | UISceneGameplay.SetTargetEntity(tempGameEntity.Entity); 417 | SelectedEntity = tempGameEntity.Entity; 418 | if (tempGameEntity.Entity != PlayingCharacterEntity.Entity) 419 | { 420 | // Turn to pointing entity, so find pointing target position and set look direction 421 | if (!doNotTurnToPointingEntity) 422 | { 423 | // Find target position 424 | if (tempGameEntity is IDamageableEntity damageable) 425 | tempTargetPosition = damageable.OpponentAimTransform.position; 426 | else 427 | tempTargetPosition = tempGameEntity.GetTransform().position; 428 | // Set look direction 429 | if (GameInstance.Singleton.DimensionType == DimensionType.Dimension2D) 430 | lookDirection = (tempTargetPosition - EntityTransform.position).normalized; 431 | else 432 | lookDirection = (XZ(tempTargetPosition) - XZ(EntityTransform.position)).normalized; 433 | } 434 | } 435 | break; 436 | } 437 | } 438 | } 439 | else 440 | { 441 | // Turn character follow cursor 442 | lookDirection = (InputManager.MousePosition() - new Vector3(Screen.width, Screen.height) * 0.5f).normalized; 443 | // Pick on object by mouse position 444 | Transform tempTransform; 445 | IGameEntity tempGameEntity; 446 | Vector3 tempTargetPosition; 447 | int pickedCount = _physicFunctions.RaycastPickObjects(CacheGameplayCameraController.Camera, InputManager.MousePosition(), Physics.DefaultRaycastLayers, 100f, out _); 448 | for (int i = pickedCount - 1; i >= 0; --i) 449 | { 450 | _aimTargetPosition = _physicFunctions.GetRaycastPoint(i); 451 | tempTransform = _physicFunctions.GetRaycastTransform(i); 452 | tempGameEntity = tempTransform.GetComponent(); 453 | if (!tempGameEntity.IsNull()) 454 | { 455 | foundTargetEntity = true; 456 | UISceneGameplay.SetTargetEntity(tempGameEntity.Entity); 457 | SelectedEntity = tempGameEntity.Entity; 458 | if (tempGameEntity.Entity != PlayingCharacterEntity.Entity) 459 | { 460 | // Turn to pointing entity, so find pointing target position and set look direction 461 | if (!doNotTurnToPointingEntity) 462 | { 463 | // Find target position 464 | if (tempGameEntity is IDamageableEntity damageable) 465 | tempTargetPosition = damageable.OpponentAimTransform.position; 466 | else 467 | tempTargetPosition = tempGameEntity.GetTransform().position; 468 | // Set look direction 469 | if (GameInstance.Singleton.DimensionType == DimensionType.Dimension2D) 470 | lookDirection = (tempTargetPosition - EntityTransform.position).normalized; 471 | else 472 | lookDirection = (XZ(tempTargetPosition) - XZ(EntityTransform.position)).normalized; 473 | } 474 | } 475 | break; 476 | } 477 | } 478 | } 479 | if (!foundTargetEntity) 480 | { 481 | UISceneGameplay.SetTargetEntity(null); 482 | SelectedEntity = null; 483 | } 484 | 485 | // Set aim position 486 | if (setAimPositionToRaycastHitPoint) 487 | { 488 | PlayingCharacterEntity.AimPosition = PlayingCharacterEntity.GetAttackAimPosition(ref _isLeftHandAttacking, _aimTargetPosition); 489 | if (GameInstance.Singleton.DimensionType == DimensionType.Dimension3D) 490 | { 491 | Quaternion aimRotation = Quaternion.LookRotation(PlayingCharacterEntity.AimPosition.direction); 492 | PlayingCharacterEntity.Pitch = aimRotation.eulerAngles.x; 493 | } 494 | } 495 | else 496 | { 497 | PlayingCharacterEntity.AimPosition = PlayingCharacterEntity.GetAttackAimPosition(ref _isLeftHandAttacking); 498 | } 499 | 500 | // Turn character 501 | if (lookDirection.sqrMagnitude > 0.01f) 502 | { 503 | if (GameInstance.Singleton.DimensionType == DimensionType.Dimension2D) 504 | { 505 | PlayingCharacterEntity.SetLookRotation(Quaternion.LookRotation(lookDirection), false); 506 | } 507 | else 508 | { 509 | PlayingCharacterEntity.SetLookRotation(Quaternion.LookRotation(new Vector3(lookDirection.x, 0, lookDirection.y)), false); 510 | } 511 | } 512 | } 513 | 514 | protected void ReloadAmmo() 515 | { 516 | // Reload ammo at server 517 | if (!PlayingCharacterEntity.EquipWeapons.rightHand.IsAmmoFull(PlayingCharacterEntity)) 518 | PlayingCharacterEntity.Reload(false); 519 | else if (!PlayingCharacterEntity.EquipWeapons.leftHand.IsAmmoFull(PlayingCharacterEntity)) 520 | PlayingCharacterEntity.Reload(true); 521 | } 522 | 523 | public override bool UseHotkey(HotkeyType type, string relateId, AimPosition aimPosition) 524 | { 525 | ClearQueueUsingSkill(); 526 | bool beingUsed = false; 527 | switch (type) 528 | { 529 | case HotkeyType.Skill: 530 | if (onBeforeUseSkillHotkey != null) 531 | onBeforeUseSkillHotkey.Invoke(relateId, aimPosition); 532 | beingUsed = UseSkill(relateId, aimPosition); 533 | if (onAfterUseSkillHotkey != null) 534 | onAfterUseSkillHotkey.Invoke(relateId, aimPosition); 535 | break; 536 | case HotkeyType.Item: 537 | HotkeyEquipWeaponSet = PlayingCharacterEntity.EquipWeaponSet; 538 | if (onBeforeUseItemHotkey != null) 539 | onBeforeUseItemHotkey.Invoke(relateId, aimPosition); 540 | beingUsed = UseItem(relateId, aimPosition); 541 | if (onAfterUseItemHotkey != null) 542 | onAfterUseItemHotkey.Invoke(relateId, aimPosition); 543 | break; 544 | case HotkeyType.GuildSkill: 545 | beingUsed = UseGuildSkill(relateId); 546 | break; 547 | } 548 | return beingUsed; 549 | } 550 | 551 | protected bool UseSkill(string id, AimPosition aimPosition) 552 | { 553 | int dataId = BaseGameData.MakeDataId(id); 554 | if (!GameInstance.Skills.TryGetValue(dataId, out BaseSkill skill) || skill == null || 555 | !PlayingCharacterEntity.GetCaches().Skills.TryGetValue(skill, out _)) 556 | return false; 557 | bool isAttackSkill = skill.IsAttack; 558 | WeaponHandlingState weaponHandlingState = GetWeaponHandlingState(_isLeftHandAttacking); 559 | if (PlayingCharacterEntity.UseSkill(skill.DataId, weaponHandlingState, SelectedGameEntityObjectId, aimPosition) && isAttackSkill) 560 | { 561 | _isLeftHandAttacking = weaponHandlingState.Has(WeaponHandlingState.IsLeftHand); 562 | _isLeftHandAttacking = !_isLeftHandAttacking; 563 | return true; 564 | } 565 | return false; 566 | } 567 | 568 | protected bool UseItem(string id, AimPosition aimPosition) 569 | { 570 | int itemIndex; 571 | int dataId = BaseGameData.MakeDataId(id); 572 | if (GameInstance.Items.TryGetValue(dataId, out BaseItem item)) 573 | { 574 | itemIndex = GameInstance.PlayingCharacterEntity.IndexOfNonEquipItem(dataId); 575 | } 576 | else 577 | { 578 | if (PlayingCharacterEntity.IsEquipped( 579 | id, 580 | out InventoryType inventoryType, 581 | out itemIndex, 582 | out byte equipWeaponSet, 583 | out CharacterItem characterItem)) 584 | { 585 | GameInstance.ClientInventoryHandlers.RequestUnEquipItem( 586 | inventoryType, 587 | itemIndex, 588 | equipWeaponSet, 589 | -1, 590 | ClientInventoryActions.ResponseUnEquipArmor, 591 | ClientInventoryActions.ResponseUnEquipWeapon); 592 | return true; 593 | } 594 | item = characterItem.GetItem(); 595 | } 596 | 597 | if (itemIndex < 0) 598 | return false; 599 | 600 | if (item == null) 601 | return false; 602 | 603 | if (item.IsEquipment()) 604 | { 605 | GameInstance.ClientInventoryHandlers.RequestEquipItem( 606 | PlayingCharacterEntity, 607 | itemIndex, 608 | HotkeyEquipWeaponSet, 609 | ClientInventoryActions.ResponseEquipArmor, 610 | ClientInventoryActions.ResponseEquipWeapon); 611 | return true; 612 | } 613 | else if (item.IsSkill()) 614 | { 615 | bool isAttackSkill = (item as ISkillItem).SkillData.IsAttack; 616 | WeaponHandlingState weaponHandlingState = GetWeaponHandlingState(_isLeftHandAttacking); 617 | if (PlayingCharacterEntity.UseSkillItem(itemIndex, weaponHandlingState, SelectedGameEntityObjectId, aimPosition) && isAttackSkill) 618 | { 619 | _isLeftHandAttacking = weaponHandlingState.Has(WeaponHandlingState.IsLeftHand); 620 | _isLeftHandAttacking = !_isLeftHandAttacking; 621 | return true; 622 | } 623 | } 624 | else if (item.IsBuilding()) 625 | { 626 | _buildingItemIndex = itemIndex; 627 | ShowConstructBuildingDialog(); 628 | return true; 629 | } 630 | else if (item.IsUsable()) 631 | { 632 | return PlayingCharacterEntity.CallCmdUseItem(itemIndex); 633 | } 634 | 635 | return false; 636 | } 637 | 638 | protected bool UseGuildSkill(string id) 639 | { 640 | if (GameInstance.JoinedGuild == null) 641 | return false; 642 | int dataId = BaseGameData.MakeDataId(id); 643 | return PlayingCharacterEntity.CallCmdUseGuildSkill(dataId); 644 | } 645 | 646 | public Vector3 GetMoveDirection(float horizontalInput, float verticalInput) 647 | { 648 | Vector3 moveDirection = Vector3.zero; 649 | switch (CurrentGameInstance.DimensionType) 650 | { 651 | case DimensionType.Dimension3D: 652 | Vector3 forward = CacheGameplayCameraController.CameraTransform.forward; 653 | Vector3 right = CacheGameplayCameraController.CameraTransform.right; 654 | forward.y = 0f; 655 | right.y = 0f; 656 | forward.Normalize(); 657 | right.Normalize(); 658 | moveDirection += forward * verticalInput; 659 | moveDirection += right * horizontalInput; 660 | // normalize input if it exceeds 1 in combined length: 661 | if (moveDirection.sqrMagnitude > 1f) 662 | moveDirection.Normalize(); 663 | break; 664 | case DimensionType.Dimension2D: 665 | moveDirection = new Vector2(horizontalInput, verticalInput); 666 | break; 667 | } 668 | return moveDirection; 669 | } 670 | 671 | protected Vector2 XZ(Vector3 vector3) 672 | { 673 | return new Vector2(vector3.x, vector3.z); 674 | } 675 | 676 | public override bool ShouldShowActivateButtons() 677 | { 678 | if (ActivatableEntityDetector.activatableEntities.Count > 0) 679 | { 680 | IActivatableEntity activatable; 681 | for (int i = 0; i < ActivatableEntityDetector.activatableEntities.Count; ++i) 682 | { 683 | activatable = ActivatableEntityDetector.activatableEntities[i]; 684 | if (activatable.CanActivate()) 685 | return true; 686 | } 687 | } 688 | return false; 689 | } 690 | 691 | public override bool ShouldShowHoldActivateButtons() 692 | { 693 | if (ActivatableEntityDetector.holdActivatableEntities.Count > 0) 694 | { 695 | IHoldActivatableEntity activatable; 696 | for (int i = 0; i < ActivatableEntityDetector.holdActivatableEntities.Count; ++i) 697 | { 698 | activatable = ActivatableEntityDetector.holdActivatableEntities[i]; 699 | if (activatable.CanHoldActivate()) 700 | return true; 701 | } 702 | } 703 | return false; 704 | } 705 | 706 | public override bool ShouldShowPickUpButtons() 707 | { 708 | if (ItemDropEntityDetector.pickupActivatableEntities.Count > 0) 709 | { 710 | IPickupActivatableEntity activatable; 711 | for (int i = 0; i < ItemDropEntityDetector.pickupActivatableEntities.Count; ++i) 712 | { 713 | activatable = ItemDropEntityDetector.pickupActivatableEntities[i]; 714 | if (activatable.CanPickupActivate()) 715 | return true; 716 | } 717 | } 718 | return false; 719 | } 720 | 721 | public WeaponHandlingState GetWeaponHandlingState(bool isLeftHand) 722 | { 723 | WeaponHandlingState weaponHandlingState = WeaponHandlingState.None; 724 | if (isLeftHand) 725 | weaponHandlingState |= WeaponHandlingState.IsLeftHand; 726 | return weaponHandlingState; 727 | } 728 | } 729 | } 730 | -------------------------------------------------------------------------------- /Scripts/AimAtCursorPlayerCharacterController.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b75a3cde61e98194881d58698bccf357 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | --------------------------------------------------------------------------------