浏览代码

Merge pull request #18 from Unity-Technologies/dmw_actionsystem

Action System V1
/main
GitHub 4 年前
当前提交
3cc6f6be
共有 56 个文件被更改,包括 1229 次插入1080 次删除
  1. 1
      .gitignore
  2. 38
      Assets/BossRoom/Models/CharacterSetController.controller
  3. 814
      Assets/BossRoom/Prefabs/Character/CharacterSet.prefab
  4. 4
      Assets/BossRoom/Prefabs/Character/Head/Archer_Eyes_Boy.prefab
  5. 4
      Assets/BossRoom/Prefabs/Character/Head/Archer_Eyes_Girl.prefab
  6. 4
      Assets/BossRoom/Prefabs/Character/Head/Archer_Mouth_Boy.prefab
  7. 4
      Assets/BossRoom/Prefabs/Character/Head/Archer_Mouth_Girl.prefab
  8. 4
      Assets/BossRoom/Prefabs/Character/Head/Mage_Eyes_Boy.prefab
  9. 4
      Assets/BossRoom/Prefabs/Character/Head/Mage_Eyes_Girl.prefab
  10. 4
      Assets/BossRoom/Prefabs/Character/Head/Mage_Mouth_Boy.prefab
  11. 4
      Assets/BossRoom/Prefabs/Character/Head/Mage_Mouth_Girl.prefab
  12. 4
      Assets/BossRoom/Prefabs/Character/Head/Rogue_Mouth_Boy.prefab
  13. 4
      Assets/BossRoom/Prefabs/Character/Head/Rogue_Mouth_Girl.prefab
  14. 55
      Assets/BossRoom/Prefabs/Player.prefab
  15. 410
      Assets/BossRoom/Scenes/DungeonTest.unity
  16. 76
      Assets/BossRoom/Scripts/Client/ClientCharacterVisualization.cs
  17. 11
      Assets/BossRoom/Scripts/Client/ClientInputSender.cs
  18. 5
      Assets/BossRoom/Scripts/Client/Game/State/ClientBossRoomState.cs
  19. 6
      Assets/BossRoom/Scripts/Client/Game/State/ClientCharSelectState.cs
  20. 6
      Assets/BossRoom/Scripts/Client/Game/State/ClientMainMenuState.cs
  21. 6
      Assets/BossRoom/Scripts/Client/UI/MainMenuUI.cs
  22. 6
      Assets/BossRoom/Scripts/Development/dgtest/GameManager.cs
  23. 6
      Assets/BossRoom/Scripts/Development/dgtest/MainMenuManager.cs
  24. 5
      Assets/BossRoom/Scripts/Development/dgtest/ProgramState.cs
  25. 11
      Assets/BossRoom/Scripts/Server/Game/State/ServerBossRoomState.cs
  26. 1
      Assets/BossRoom/Scripts/Server/ServerCharacterMovement.cs
  27. 11
      Assets/BossRoom/Scripts/Shared/Game/State/CharSelectData.cs
  28. 6
      Assets/BossRoom/Scripts/Shared/Game/State/GameStateBehaviour.cs
  29. 2
      Assets/BossRoom/Scripts/Shared/Net/GameNetHub.cs
  30. 106
      Assets/BossRoom/Scripts/Shared/NetworkCharacterState.cs
  31. 3
      ProjectSettings/ProjectSettings.asset
  32. 36
      Assets/BossRoom/Scripts/Client/Game/Character/ModelSwap.cs
  33. 8
      Assets/BossRoom/Scripts/Client/Game/Character.meta
  34. 8
      Assets/BossRoom/Scripts/Server/Game/Action.meta
  35. 8
      Assets/BossRoom/Scripts/Server/Game/Character.meta
  36. 8
      Assets/BossRoom/Scripts/Shared/Game/Action.meta
  37. 167
      ProjectSettings/SceneTemplateSettings.json
  38. 15
      ProjectSettings/TimelineSettings.asset
  39. 19
      Assets/BossRoom/Scripts/Client/Game/Character/ClientCharacter.cs
  40. 11
      Assets/BossRoom/Scripts/Client/Game/Character/ClientCharacter.cs.meta
  41. 11
      Assets/BossRoom/Scripts/Server/Game/Action/Action.cs.meta
  42. 91
      Assets/BossRoom/Scripts/Server/Game/Action/Action.cs
  43. 74
      Assets/BossRoom/Scripts/Server/Game/Action/ActionPlayer.cs
  44. 11
      Assets/BossRoom/Scripts/Server/Game/Action/ActionPlayer.cs.meta
  45. 22
      Assets/BossRoom/Scripts/Server/Game/Action/MeleeAction.cs
  46. 11
      Assets/BossRoom/Scripts/Server/Game/Action/MeleeAction.cs.meta
  47. 11
      Assets/BossRoom/Scripts/Server/Game/Character/ServerCharacter.cs.meta
  48. 48
      Assets/BossRoom/Scripts/Server/Game/Character/ServerCharacter.cs
  49. 11
      Assets/BossRoom/Scripts/Shared/Game/Action/ActionRequestData.cs.meta
  50. 114
      Assets/BossRoom/Scripts/Shared/Game/Action/ActionRequestData.cs
  51. 0
      /Assets/BossRoom/Scripts/Client/Game/Character/ModelSwap.cs.meta
  52. 0
      /Assets/BossRoom/Scripts/Client/Game/Character/ModelSwap.cs

1
.gitignore


*.mdb
*.opendb
*.VC.db
.vsconfig
# Unity3D generated meta files
*.pidb.meta

38
Assets/BossRoom/Models/CharacterSetController.controller


m_Name: Blend Tree
m_Childs:
- serializedVersion: 2
m_Motion: {fileID: 1827226128182048838, guid: 2115c4661f55eff45a5a0f91fc0a12f0,
type: 3}
m_Motion: {fileID: 1827226128182048838, guid: 2115c4661f55eff45a5a0f91fc0a12f0, type: 3}
m_Threshold: 0
m_Position: {x: 0, y: 0}
m_TimeScale: 1

- serializedVersion: 2
m_Motion: {fileID: -3419257869308726280, guid: 2115c4661f55eff45a5a0f91fc0a12f0,
type: 3}
m_Motion: {fileID: -3419257869308726280, guid: 2115c4661f55eff45a5a0f91fc0a12f0, type: 3}
m_Threshold: 0.5
m_Position: {x: 0, y: 0}
m_TimeScale: 1

- serializedVersion: 2
m_Motion: {fileID: 6200578666267062213, guid: 2115c4661f55eff45a5a0f91fc0a12f0,
type: 3}
m_Motion: {fileID: 6200578666267062213, guid: 2115c4661f55eff45a5a0f91fc0a12f0, type: 3}
m_Threshold: 1
m_Position: {x: 0, y: 0}
m_TimeScale: 1

m_CanTransitionToSelf: 1
--- !u!1102 &-3516404760485336223
AnimatorState:
serializedVersion: 5
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}

m_BlendType: 0
--- !u!1101 &-2134875305200649429
AnimatorStateTransition:
m_ObjectHideFlags: 3
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}

m_CanTransitionToSelf: 1
--- !u!1102 &-1068572555509609370
AnimatorState:
serializedVersion: 5
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}

m_TimeParameter:
--- !u!1107 &-881976854541045011
AnimatorStateMachine:
serializedVersion: 5
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}

m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
m_Controller: {fileID: 0}
m_Controller: {fileID: 9100000}
m_Controller: {fileID: 0}
m_Controller: {fileID: 9100000}
m_Controller: {fileID: 0}
m_Controller: {fileID: 9100000}
m_Controller: {fileID: 0}
m_AnimatorLayers:
- serializedVersion: 5
m_Name: Base Layer

m_Controller: {fileID: 9100000}
--- !u!1107 &2782526268344220699
AnimatorStateMachine:
serializedVersion: 5
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}

m_DefaultState: {fileID: 0}
--- !u!1101 &3218047883308753838
AnimatorStateTransition:
m_ObjectHideFlags: 3
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}

m_CanTransitionToSelf: 1
--- !u!1101 &5593412509193387231
AnimatorStateTransition:
m_ObjectHideFlags: 3
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}

serializedVersion: 1
--- !u!1102 &6299315480180736668
AnimatorState:
serializedVersion: 5
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}

m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: -6239216113759591374, guid: 2115c4661f55eff45a5a0f91fc0a12f0,
type: 3}
m_Motion: {fileID: -6239216113759591374, guid: 2115c4661f55eff45a5a0f91fc0a12f0, type: 3}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:

AnimatorStateMachine:
serializedVersion: 5
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}

814
Assets/BossRoom/Prefabs/Character/CharacterSet.prefab
文件差异内容过多而无法显示
查看文件

4
Assets/BossRoom/Prefabs/Character/Head/Archer_Eyes_Boy.prefab


m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
- {fileID: 2100000, guid: b290d60ca8f803d419c38eeabb8ca869, type: 2}
- {fileID: 2100000, guid: 83e9907752fa0454aabda2854e946e5d, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0

m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}

4
Assets/BossRoom/Prefabs/Character/Head/Archer_Eyes_Girl.prefab


m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
- {fileID: 2100000, guid: b290d60ca8f803d419c38eeabb8ca869, type: 2}
- {fileID: 2100000, guid: 83e9907752fa0454aabda2854e946e5d, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0

m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}

4
Assets/BossRoom/Prefabs/Character/Head/Archer_Mouth_Boy.prefab


m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
- {fileID: 2100000, guid: 7086fc6b82a05ab489f484cbd4af8b9b, type: 2}
- {fileID: 2100000, guid: 71e6e99818013f84f91038ec53cbf5a7, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0

m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}

4
Assets/BossRoom/Prefabs/Character/Head/Archer_Mouth_Girl.prefab


m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
- {fileID: 2100000, guid: 7086fc6b82a05ab489f484cbd4af8b9b, type: 2}
- {fileID: 2100000, guid: 71e6e99818013f84f91038ec53cbf5a7, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0

m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}

4
Assets/BossRoom/Prefabs/Character/Head/Mage_Eyes_Boy.prefab


m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
- {fileID: 2100000, guid: b290d60ca8f803d419c38eeabb8ca869, type: 2}
- {fileID: 2100000, guid: 83e9907752fa0454aabda2854e946e5d, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0

m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}

4
Assets/BossRoom/Prefabs/Character/Head/Mage_Eyes_Girl.prefab


m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
- {fileID: 2100000, guid: b290d60ca8f803d419c38eeabb8ca869, type: 2}
- {fileID: 2100000, guid: 83e9907752fa0454aabda2854e946e5d, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0

m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}

4
Assets/BossRoom/Prefabs/Character/Head/Mage_Mouth_Boy.prefab


m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
- {fileID: 2100000, guid: 7086fc6b82a05ab489f484cbd4af8b9b, type: 2}
- {fileID: 2100000, guid: 71e6e99818013f84f91038ec53cbf5a7, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0

m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}

4
Assets/BossRoom/Prefabs/Character/Head/Mage_Mouth_Girl.prefab


m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
- {fileID: 2100000, guid: 7086fc6b82a05ab489f484cbd4af8b9b, type: 2}
- {fileID: 2100000, guid: 71e6e99818013f84f91038ec53cbf5a7, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0

m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}

4
Assets/BossRoom/Prefabs/Character/Head/Rogue_Mouth_Boy.prefab


m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
- {fileID: 2100000, guid: 7086fc6b82a05ab489f484cbd4af8b9b, type: 2}
- {fileID: 2100000, guid: 71e6e99818013f84f91038ec53cbf5a7, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0

m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}

4
Assets/BossRoom/Prefabs/Character/Head/Rogue_Mouth_Girl.prefab


m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
- {fileID: 2100000, guid: 7086fc6b82a05ab489f484cbd4af8b9b, type: 2}
- {fileID: 2100000, guid: 71e6e99818013f84f91038ec53cbf5a7, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0

m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}

55
Assets/BossRoom/Prefabs/Player.prefab


- component: {fileID: 4470766618279719912}
- component: {fileID: -3542424572169399493}
- component: {fileID: 6970334877957368017}
- component: {fileID: 4093145920273822261}
- component: {fileID: 4602672899881656135}
m_Layer: 0
m_Name: Player
m_TagString: Untagged

m_Script: {fileID: 11500000, guid: edb78c1621dad5149bb47b96120d3fbf, type: 3}
m_Name:
m_EditorClassIdentifier:
HitPoints:
InternalValue: 0
Mana:
InternalValue: 0
--- !u!114 &4600110157238723776
MonoBehaviour:
m_ObjectHideFlags: 0

m_Height: 2
m_Direction: 1
m_Center: {x: 0, y: 1, z: 0}
--- !u!114 &4093145920273822261
--- !u!114 &4602672899881656135
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}

m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9520a47fc61d5ab4ca99cdac2d574909, type: 3}
m_Script: {fileID: 11500000, guid: 920a440eb254ba348915767fd046027a, type: 3}
m_ClientVisuals: {fileID: 6174365277840941608}
--- !u!1001 &7872000410579295758
PrefabInstance:
m_ObjectHideFlags: 0

m_Modifications:
- target: {fileID: 451019077418353113, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Materials.Array.data[0]
value:
objectReference: {fileID: 0}
- target: {fileID: 1275426192112755703, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Materials.Array.data[0]
value:
objectReference: {fileID: 0}
- target: {fileID: 1983451975515712793, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Materials.Array.data[0]
value:
objectReference: {fileID: 0}
- target: {fileID: 3269992512903255054, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Materials.Array.data[0]
value:
objectReference: {fileID: 0}
- target: {fileID: 3736552308919084700, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Name
value: CharacterSet

propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4916965965019151265, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Materials.Array.data[0]
value:
objectReference: {fileID: 0}
- target: {fileID: 5404400264780765344, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Materials.Array.data[0]
value:
- target: {fileID: 7943089997373843793, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Enabled
value: 1
- target: {fileID: 7415691260465069799, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Materials.Array.data[0]
value:
objectReference: {fileID: 0}
- target: {fileID: 7688214084643546559, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Materials.Array.data[0]
value:
objectReference: {fileID: 0}
- target: {fileID: 7859571076522411967, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Materials.Array.data[0]
value:
objectReference: {fileID: 0}
- target: {fileID: 8474587904930755041, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Materials.Array.data[0]
value:
- target: {fileID: 7943089997373843793, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: MaxZoomDistance
value: 30
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}

410
Assets/BossRoom/Scenes/DungeonTest.unity


objectReference: {fileID: 11400000, guid: e99e3049b03a0a74185cf6b9cecc00ae, type: 2}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 505d01b585f419049b92a396558c8d67, type: 3}
--- !u!4 &326481315 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 8064768189409072093, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
m_PrefabInstance: {fileID: 794252820}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &337421309
PrefabInstance:
m_ObjectHideFlags: 0

m_CorrespondingSourceObject: {fileID: 3325143161705299546, guid: 17970f637385b264ca9ec576ecbd3e17, type: 3}
m_PrefabInstance: {fileID: 513627822}
m_PrefabAsset: {fileID: 0}
--- !u!4 &520516754 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 7525387521976179177, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
m_PrefabInstance: {fileID: 794252820}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &526248621
PrefabInstance:
m_ObjectHideFlags: 0

m_CorrespondingSourceObject: {fileID: 4756247935159238973, guid: 4e8bd4962790c8142ac06150a37418de, type: 3}
m_PrefabInstance: {fileID: 597708051}
m_PrefabAsset: {fileID: 0}
--- !u!4 &610337786 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 1385890853458294598, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
m_PrefabInstance: {fileID: 794252820}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &634648123
PrefabInstance:
m_ObjectHideFlags: 0

m_Modification:
m_TransformParent: {fileID: 744016495}
m_Modifications:
- target: {fileID: 120813953115397194, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Layer
value: 0
objectReference: {fileID: 0}
- target: {fileID: 451019077418353113, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Materials.Array.data[0]
value:
objectReference: {fileID: 2100000, guid: 71e6e99818013f84f91038ec53cbf5a7, type: 2}
- target: {fileID: 1014932751805099524, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Layer
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1123034451250864999, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Layer
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1270185926321959616, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Mesh
value:
objectReference: {fileID: -4327808786972133168, guid: 2115c4661f55eff45a5a0f91fc0a12f0, type: 3}
- target: {fileID: 1270185926321959616, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Materials.Array.size
value: 1
objectReference: {fileID: 0}
- target: {fileID: 1270185926321959616, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Materials.Array.data[1]
value:
objectReference: {fileID: 2100000, guid: 0ff52550ec51425478d16fac3184c0e1, type: 2}
- target: {fileID: 1275426192112755703, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Materials.Array.data[0]
value:
objectReference: {fileID: 2100000, guid: 71e6e99818013f84f91038ec53cbf5a7, type: 2}
- target: {fileID: 1419159953968822348, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Materials.Array.data[0]
value:
objectReference: {fileID: 2100000, guid: 59aeea6b3cff1b745b6c534ac1bc2bc6, type: 2}
- target: {fileID: 1442995880619402305, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Materials.Array.data[0]
value:
objectReference: {fileID: 2100000, guid: 83e9907752fa0454aabda2854e946e5d, type: 2}
- target: {fileID: 1472037732483017670, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Mesh
value:
objectReference: {fileID: 3120583771358966645, guid: 2115c4661f55eff45a5a0f91fc0a12f0, type: 3}
- target: {fileID: 1472037732483017670, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_AABB.m_Center.x
value: 0.40047836
objectReference: {fileID: 0}
- target: {fileID: 1472037732483017670, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_AABB.m_Center.y
value: -4.8396416
objectReference: {fileID: 0}
- target: {fileID: 1472037732483017670, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_AABB.m_Center.z
value: 0.012645721
objectReference: {fileID: 0}
- target: {fileID: 1472037732483017670, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_AABB.m_Extent.x
value: 46.541443
objectReference: {fileID: 0}
- target: {fileID: 1472037732483017670, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_AABB.m_Extent.y
value: 53.8788
objectReference: {fileID: 0}
- target: {fileID: 1472037732483017670, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_AABB.m_Extent.z
value: 39.495026
objectReference: {fileID: 0}
- target: {fileID: 1472037732483017670, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Bones.Array.data[1]
value:
objectReference: {fileID: 1977977249}
- target: {fileID: 1472037732483017670, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Bones.Array.data[3]
value:
objectReference: {fileID: 1285810363}
- target: {fileID: 1472037732483017670, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Bones.Array.data[4]
value:
objectReference: {fileID: 1878408681}
- target: {fileID: 1472037732483017670, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Bones.Array.data[5]
value:
objectReference: {fileID: 1279668748}
- target: {fileID: 1472037732483017670, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Bones.Array.data[6]
value:
objectReference: {fileID: 520516754}
- target: {fileID: 1472037732483017670, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Bones.Array.data[7]
value:
objectReference: {fileID: 1546460469}
- target: {fileID: 1472037732483017670, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Bones.Array.data[8]
value:
objectReference: {fileID: 1501021619}
- target: {fileID: 1472037732483017670, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Bones.Array.data[9]
value:
objectReference: {fileID: 1306431955}
- target: {fileID: 1472037732483017670, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Bones.Array.data[10]
value:
objectReference: {fileID: 326481315}
- target: {fileID: 1472037732483017670, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Bones.Array.data[11]
value:
objectReference: {fileID: 610337786}
- target: {fileID: 1570920858091160125, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Materials.Array.data[0]
value:
objectReference: {fileID: 2100000, guid: 51238b61d7696bb44950aabe9857b5a3, type: 2}
- target: {fileID: 1815729318982098784, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Materials.Array.data[0]
value:
objectReference: {fileID: 2100000, guid: b6fb463aaf42fa442b15fc3288716f4c, type: 2}
- target: {fileID: 1983451975515712793, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Materials.Array.data[0]
value:
objectReference: {fileID: 2100000, guid: 83e9907752fa0454aabda2854e946e5d, type: 2}
- target: {fileID: 2027003488746983335, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Mesh
value:
objectReference: {fileID: 7169461090850160920, guid: 2115c4661f55eff45a5a0f91fc0a12f0, type: 3}
- target: {fileID: 2032362546942396269, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Mesh
value:
objectReference: {fileID: 4518664928318302949, guid: 2115c4661f55eff45a5a0f91fc0a12f0, type: 3}
- target: {fileID: 2382990831643484516, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Layer
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2582080506733257300, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Mesh
value:
objectReference: {fileID: 2482120647625105992, guid: 2115c4661f55eff45a5a0f91fc0a12f0, type: 3}
- target: {fileID: 3003794035877911579, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Materials.Array.data[0]
value:
objectReference: {fileID: 2100000, guid: 9bbeafbf860e64744a97f8241827f4c5, type: 2}
- target: {fileID: 3085652567202522198, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Mesh
value:
objectReference: {fileID: 4840104904336195258, guid: 2115c4661f55eff45a5a0f91fc0a12f0, type: 3}
- target: {fileID: 3143565374616139912, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Mesh
value:
objectReference: {fileID: 5759471141772939928, guid: 2115c4661f55eff45a5a0f91fc0a12f0, type: 3}
- target: {fileID: 3269992512903255054, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Materials.Array.data[0]
value:
objectReference: {fileID: 2100000, guid: 71e6e99818013f84f91038ec53cbf5a7, type: 2}
objectReference: {fileID: 0}
- target: {fileID: 3741846901656975085, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Layer
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3841853127460988830, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Layer
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3939530525189870864, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Layer
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4076098699203836966, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_RootOrder

propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4214436874509125042, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Mesh
value:
objectReference: {fileID: 8030730824785599427, guid: 2115c4661f55eff45a5a0f91fc0a12f0, type: 3}
- target: {fileID: 4281006967014396326, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Layer
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4547385851608601788, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_ModelIndex
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4547385851608601791, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_ModelIndex
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4547385851608601811, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_ModelIndex
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4547385851608603402, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_ModelIndex
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4547385851608603403, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_ModelIndex
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4547385851608603405, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_ModelIndex
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4547385851608603409, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_ModelIndex
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4547385851608603420, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_ModelIndex
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4547385851608603422, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_ModelIndex
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4547385851608603423, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_ModelIndex
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4547385851608603632, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_ModelIndex
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4547385851608603635, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_ModelIndex
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4557750803579274235, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Materials.Array.data[0]
value:
objectReference: {fileID: 2100000, guid: 3179b2e0f923b324cb33c6632c3bd167, type: 2}
- target: {fileID: 4590952568586430020, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Materials.Array.data[0]
value:
objectReference: {fileID: 2100000, guid: 459eb5e5d04ffec4fa540f1baa8ffd55, type: 2}
- target: {fileID: 4654300203343167303, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Materials.Array.data[0]
value:
objectReference: {fileID: 2100000, guid: aec61333b49ad744bbf3aa0ea94672a1, type: 2}
- target: {fileID: 4659130856917116551, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Mesh
value:
objectReference: {fileID: 1940278193824382384, guid: 2115c4661f55eff45a5a0f91fc0a12f0, type: 3}
- target: {fileID: 4916965965019151265, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Materials.Array.data[0]
value:
objectReference: {fileID: 2100000, guid: 83e9907752fa0454aabda2854e946e5d, type: 2}
- target: {fileID: 4977252199914387162, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Materials.Array.data[0]
value:
objectReference: {fileID: 2100000, guid: 3f18e7390c775ad4c99b67a567332785, type: 2}
- target: {fileID: 5038865569814015038, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Layer
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5236358809792046909, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Layer
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5306754474248613965, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Mesh
value:
objectReference: {fileID: -4941161867953274312, guid: 2115c4661f55eff45a5a0f91fc0a12f0, type: 3}
- target: {fileID: 5404400264780765344, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Materials.Array.data[0]
value:
objectReference: {fileID: 2100000, guid: 71e6e99818013f84f91038ec53cbf5a7, type: 2}
- target: {fileID: 5661464935809207397, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Materials.Array.data[0]
value:
objectReference: {fileID: 2100000, guid: fbe92527c02bb6043831341dd1bcf20e, type: 2}
- target: {fileID: 5753437091346049002, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Layer
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6186891685920142570, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Materials.Array.data[0]
value:
objectReference: {fileID: 2100000, guid: 83e9907752fa0454aabda2854e946e5d, type: 2}
- target: {fileID: 6284514463440215511, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Mesh
value:
objectReference: {fileID: -4641826895877553535, guid: 2115c4661f55eff45a5a0f91fc0a12f0, type: 3}
- target: {fileID: 6554312165410509185, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Layer
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6821969947724442590, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Materials.Array.data[0]
value:
objectReference: {fileID: 2100000, guid: aec61333b49ad744bbf3aa0ea94672a1, type: 2}
- target: {fileID: 7111671785955215127, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Layer
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7155621238611783916, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Layer
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7219764346121959029, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Layer
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7415691260465069799, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Materials.Array.data[0]
value:
objectReference: {fileID: 2100000, guid: 83e9907752fa0454aabda2854e946e5d, type: 2}
- target: {fileID: 7536383864854251866, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Layer
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7688214084643546559, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Materials.Array.data[0]
value:
objectReference: {fileID: 2100000, guid: 71e6e99818013f84f91038ec53cbf5a7, type: 2}
- target: {fileID: 7859571076522411967, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Materials.Array.data[0]
value:
objectReference: {fileID: 2100000, guid: 71e6e99818013f84f91038ec53cbf5a7, type: 2}
- target: {fileID: 8178081576640959163, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Materials.Array.data[0]
value:
objectReference: {fileID: 2100000, guid: 5690537b3cf4ec9478a74ed32803892a, type: 2}
- target: {fileID: 8312850973723105667, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Materials.Array.size
value: 1
objectReference: {fileID: 0}
- target: {fileID: 8312850973723105667, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Materials.Array.data[1]
value:
objectReference: {fileID: 2100000, guid: 0ff52550ec51425478d16fac3184c0e1, type: 2}
- target: {fileID: 8444447372055402512, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Materials.Array.data[0]
value:
objectReference: {fileID: 2100000, guid: 3f18e7390c775ad4c99b67a567332785, type: 2}
- target: {fileID: 8474587904930755041, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Materials.Array.data[0]
value:
objectReference: {fileID: 2100000, guid: 83e9907752fa0454aabda2854e946e5d, type: 2}
- target: {fileID: 8777268618295542602, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Materials.Array.data[0]
value:
objectReference: {fileID: 2100000, guid: 477f90def39714c48a02eb3ad2babe7e, type: 2}
- target: {fileID: 8851183620440019083, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Layer
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8983709352420245827, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Materials.Array.data[0]
value:
objectReference: {fileID: 2100000, guid: aec61333b49ad744bbf3aa0ea94672a1, type: 2}
- target: {fileID: 9162422373336764900, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Materials.Array.data[0]
value:
objectReference: {fileID: 2100000, guid: 21a336530765c4348be349939e333ad7, type: 2}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
--- !u!4 &859940908 stripped

m_CorrespondingSourceObject: {fileID: 4756247935159238973, guid: 4e8bd4962790c8142ac06150a37418de, type: 3}
m_PrefabInstance: {fileID: 1223677057}
m_PrefabAsset: {fileID: 0}
--- !u!4 &1279668748 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 5787538227139311733, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
m_PrefabInstance: {fileID: 794252820}
m_PrefabAsset: {fileID: 0}
--- !u!4 &1285810363 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 1569872458223715547, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
m_PrefabInstance: {fileID: 794252820}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &1290687913
PrefabInstance:
m_ObjectHideFlags: 0

m_CorrespondingSourceObject: {fileID: 3734616284646950590, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
m_PrefabInstance: {fileID: 1298383340}
m_PrefabAsset: {fileID: 0}
--- !u!4 &1306431955 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 8495415076674091646, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
m_PrefabInstance: {fileID: 794252820}
m_PrefabAsset: {fileID: 0}
--- !u!4 &1311104642 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 1564428037941116370, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}

m_CorrespondingSourceObject: {fileID: -5868463656636880210, guid: 2115c4661f55eff45a5a0f91fc0a12f0, type: 3}
m_PrefabInstance: {fileID: 1846810459}
m_PrefabAsset: {fileID: 0}
--- !u!4 &1501021619 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 1564428037941116370, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
m_PrefabInstance: {fileID: 794252820}
m_PrefabAsset: {fileID: 0}
--- !u!1 &1501974793
GameObject:
m_ObjectHideFlags: 0

m_CorrespondingSourceObject: {fileID: 4756247935159238973, guid: 4e8bd4962790c8142ac06150a37418de, type: 3}
m_PrefabInstance: {fileID: 1539856526}
m_PrefabAsset: {fileID: 0}
--- !u!4 &1546460469 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 1135220812264023273, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
m_PrefabInstance: {fileID: 794252820}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &1560302630
PrefabInstance:
m_ObjectHideFlags: 0

m_EditorClassIdentifier:
modelArray: []
m_ModelIndex: 0
yourButton: {fileID: 0}
--- !u!114 &1846810470
MonoBehaviour:
m_ObjectHideFlags: 0

m_EditorClassIdentifier:
modelArray: []
m_ModelIndex: 0
yourButton: {fileID: 0}
--- !u!114 &1846810503
MonoBehaviour:
m_ObjectHideFlags: 0

m_EditorClassIdentifier:
modelArray: []
m_ModelIndex: 0
yourButton: {fileID: 0}
--- !u!114 &1846810504
MonoBehaviour:
m_ObjectHideFlags: 0

m_EditorClassIdentifier:
modelArray: []
m_ModelIndex: 0
yourButton: {fileID: 0}
--- !u!114 &1846810505
MonoBehaviour:
m_ObjectHideFlags: 0

m_EditorClassIdentifier:
modelArray: []
m_ModelIndex: 0
yourButton: {fileID: 0}
--- !u!114 &1846810506
MonoBehaviour:
m_ObjectHideFlags: 0

m_EditorClassIdentifier:
modelArray: []
m_ModelIndex: 0
yourButton: {fileID: 0}
--- !u!114 &1846810509
MonoBehaviour:
m_ObjectHideFlags: 0

m_EditorClassIdentifier:
modelArray: []
m_ModelIndex: 0
yourButton: {fileID: 0}
--- !u!114 &1846810524
MonoBehaviour:
m_ObjectHideFlags: 0

m_EditorClassIdentifier:
modelArray: []
m_ModelIndex: 0
yourButton: {fileID: 0}
--- !u!114 &1846810525
MonoBehaviour:
m_ObjectHideFlags: 0

m_EditorClassIdentifier:
modelArray: []
m_ModelIndex: 0
yourButton: {fileID: 0}
--- !u!114 &1846810665
MonoBehaviour:
m_ObjectHideFlags: 0

m_EditorClassIdentifier:
modelArray: []
m_ModelIndex: 0
yourButton: {fileID: 0}
--- !u!114 &1846810666
MonoBehaviour:
m_ObjectHideFlags: 0

m_EditorClassIdentifier:
modelArray: []
m_ModelIndex: 0
yourButton: {fileID: 0}
--- !u!114 &1846810693
MonoBehaviour:
m_ObjectHideFlags: 0

m_EditorClassIdentifier:
modelArray: []
m_ModelIndex: 0
yourButton: {fileID: 0}
--- !u!4 &1846810695 stripped
Transform:
m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: 2115c4661f55eff45a5a0f91fc0a12f0, type: 3}

m_Father: {fileID: 0}
m_RootOrder: 6
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!4 &1878408681 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 9197077968316907432, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
m_PrefabInstance: {fileID: 794252820}
m_PrefabAsset: {fileID: 0}
--- !u!1 &1880739840
GameObject:
m_ObjectHideFlags: 0

Transform:
m_CorrespondingSourceObject: {fileID: 3734616284646950590, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
m_PrefabInstance: {fileID: 1960771812}
m_PrefabAsset: {fileID: 0}
--- !u!4 &1977977249 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 3734616284646950590, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
m_PrefabInstance: {fileID: 794252820}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &2008423463
PrefabInstance:

76
Assets/BossRoom/Scripts/Client/ClientCharacterVisualization.cs


using BossRoom.Shared;
namespace BossRoom.Client
namespace BossRoom.Viz
{
/// <summary>
/// <see cref="ClientCharacterVisualization"/> is responsible for displaying a character on the client's screen based on state information sent by the server.

{
private NetworkCharacterState m_NetworkCharacterState;
private NetworkCharacterState m_NetState;
private CinemachineVirtualCamera m_MainCamera;
/// <summary>
/// The GameObject which visually represents the character is a child object of the character GameObject. This needs to be the case to support host mode.
/// In host mode <see cref="MonoBehaviour.transform"/> is the transform which is relevant for gameplay.
/// <see cref="m_ClientVisuals"/> is the visual representation on the client side which has interpolated position values.
/// </summary>
[SerializeField]
private Transform m_ClientVisuals;
public float MinZoomDistance = 3;
public float MaxZoomDistance = 30;
public float ZoomSpeed = 3;
/// <inheritdoc />
public override void NetworkStart()

enabled = false;
return;
else if (IsLocalPlayer)
m_NetState = this.transform.parent.gameObject.GetComponent<NetworkCharacterState>();
m_NetState.DoActionEventClient += this.PerformActionFX;
GetComponent<ModelSwap>();
//GetComponents<ModelSwap>
if (IsLocalPlayer)
private void PerformActionFX(ActionRequestData data )
{
//TODO: [GOMPS-13] break this method out into its own class, so we can drive multi-frame graphical effects.
//FIXME: [GOMPS-13] hook this up to information in the ActionDescription.
m_ClientVisualsAnimator.SetInteger("AttackID", 1);
m_ClientVisualsAnimator.SetTrigger("BeginAttack");
}
m_NetworkCharacterState = GetComponent<NetworkCharacterState>();
m_ClientVisualsAnimator = m_ClientVisuals.GetComponent<Animator>();
m_ClientVisualsAnimator = GetComponent<Animator>();
m_ClientVisuals.position = m_NetworkCharacterState.NetworkPosition.Value;
transform.position = m_NetState.NetworkPosition.Value;
m_ClientVisuals.rotation = Quaternion.Euler(0, m_NetworkCharacterState.NetworkRotationY.Value, 0);
transform.rotation = Quaternion.Euler(0, m_NetState.NetworkRotationY.Value, 0);
m_ClientVisualsAnimator.SetFloat("Speed", m_NetworkCharacterState.NetworkMovementSpeed.Value);
m_ClientVisualsAnimator.SetFloat("Speed", m_NetState.NetworkMovementSpeed.Value);
}
float scroll = Input.GetAxis("Mouse ScrollWheel");
if (scroll != 0 && m_MainCamera )
{
ZoomCamera(scroll);
CinemachineVirtualCamera cam = (CinemachineVirtualCamera)FindObjectOfType(typeof(CinemachineVirtualCamera));
if (cam)
m_MainCamera = (CinemachineVirtualCamera)FindObjectOfType(typeof(CinemachineVirtualCamera));
if (m_MainCamera)
cam.Follow = m_ClientVisuals.transform;
cam.LookAt = m_ClientVisuals.transform;
m_MainCamera.Follow = transform;
m_MainCamera.LookAt = transform;
}
}
private void ZoomCamera(float scroll)
{
CinemachineComponentBase[] components = m_MainCamera.GetComponentPipeline();
foreach (CinemachineComponentBase component in components)
{
if (component is CinemachineFramingTransposer)
{
CinemachineFramingTransposer c = (CinemachineFramingTransposer)component;
c.m_CameraDistance += -scroll * ZoomSpeed;
if (c.m_CameraDistance < MinZoomDistance)
c.m_CameraDistance = MinZoomDistance;
if (c.m_CameraDistance > MaxZoomDistance)
c.m_CameraDistance = MaxZoomDistance;
}
}
}
}

11
Assets/BossRoom/Scripts/Client/ClientInputSender.cs


using BossRoom.Shared;
using MLAPI;
using UnityEngine;

m_NetworkCharacter.InvokeServerRpc(m_NetworkCharacter.SendCharacterInputServerRpc, hit.point,
"MLAPI_INTERNAL");
}
}
}
private void Update()
{
if (Input.GetMouseButtonDown(1))
{
var data = new ActionRequestData();
data.ActionTypeEnum = Action.TANK_BASEATTACK;
m_NetworkCharacter.C2S_DoAction(ref data);
}
}
}

5
Assets/BossRoom/Scripts/Client/Game/State/ClientBossRoomState.cs


if( !IsClient ) { this.enabled = false; }
}
// Update is called once per frame
void Update()
{
}
}
}

6
Assets/BossRoom/Scripts/Client/Game/State/ClientCharSelectState.cs


base.NetworkStart();
if (!IsClient) { this.enabled = false; }
}
// Update is called once per frame
void Update()
{
}
}
}

6
Assets/BossRoom/Scripts/Client/Game/State/ClientMainMenuState.cs


//note: this code won't ever run, because there is no network connection at the main menu screen.
//fortunately we know you are a client, because all players are clients when sitting at the main menu screen.
}
// Update is called once per frame
void Update()
{
}
}
}

6
Assets/BossRoom/Scripts/Client/UI/MainMenuUI.cs


m_netHub = GameHubGO.GetComponent<BossRoom.GameNetHub>();
}
// Update is called once per frame
void Update()
{
}
/// <summary>
/// Gets the IP Address the user set in the UI, or returns 127.0.0.1 if IP is not present.
/// </summary>

6
Assets/BossRoom/Scripts/Development/dgtest/GameManager.cs


main_player.transform.position = m_playerSpawn.transform.position;
main_player.GetComponent<NetworkedObject>().Spawn();
}
// Update is called once per frame
void Update()
{
}
}

6
Assets/BossRoom/Scripts/Development/dgtest/MainMenuManager.cs


Application.targetFrameRate = 60;
}
// Update is called once per frame
void Update()
{
}
public void OnHostButton()
{
m_netManager.StartServer();

5
Assets/BossRoom/Scripts/Development/dgtest/ProgramState.cs


m_netManager = GameObject.Find("NetworkHost").GetComponent<NetworkingManager>();
}
// Update is called once per frame
void Update()
{
}
}

11
Assets/BossRoom/Scripts/Server/Game/State/ServerBossRoomState.cs


{
SpawnPlayer(connection.ClientId);
}
if (IsHost)
{
// start local "host" character too!
SpawnPlayer(MLAPI.NetworkingManager.Singleton.LocalClientId);
}
}
// Update is called once per frame
void Update()
{
}
private void OnClientConnected(ulong clientId)

1
Assets/BossRoom/Scripts/Server/ServerCharacterMovement.cs


using System;
using System.Linq;
using BossRoom.Shared;
using MLAPI;
using UnityEngine;
using UnityEngine.AI;

11
Assets/BossRoom/Scripts/Shared/Game/State/CharSelectData.cs


//They can probably just be strings for now.
private MLAPI.NetworkedVar.Collections.NetworkedList<string> CharSlots;
// Start is called before the first frame update
void Start()
{
}
public override void NetworkStart()
{
base.NetworkStart();

// Update is called once per frame
void Update()
{
}
}
}

6
Assets/BossRoom/Scripts/Shared/Game/State/GameStateBehaviour.cs


if( Persists ) { Object.DontDestroyOnLoad(this.gameObject); }
}
// Update is called once per frame
void Update()
{
}
private void OnDestroy()
{
if( !Persists )

2
Assets/BossRoom/Scripts/Shared/Net/GameNetHub.cs


/// This synthesizes a general NetworkStart event out of other events provided by MLAPI. This can be removed
/// when the NetworkingManager starts publishing this event directly.
/// </summary>
public event Action NetworkStartEvent;
public event System.Action NetworkStartEvent;
/// <summary>
/// This event contains the game-level results of the ApprovalCheck carried out by the server, and is fired

106
Assets/BossRoom/Scripts/Shared/NetworkCharacterState.cs


using System;
using System.IO;
using MLAPI.Serialization.Pooled;
namespace BossRoom.Shared
namespace BossRoom
/// <summary>
/// Contains all NetworkedVars and RPCs of a character. This component is present on both client and server objects.
/// </summary>

public NetworkedVarFloat NetworkRotationY { get; } = new NetworkedVarFloat();
public NetworkedVarFloat NetworkMovementSpeed { get; } = new NetworkedVarFloat();
public NetworkedVarInt HitPoints;
public NetworkedVarInt Mana;
/// <summary>
/// Gets invoked when inputs are received from the client which own this networked character.
/// </summary>

{
OnReceivedClientInput?.Invoke(movementTarget);
}
// ACTION SYSTEM
/// <summary>
/// This event is raised on the server when an action request arrives
/// </summary>
public event Action<BossRoom.ActionRequestData> DoActionEventServer;
/// <summary>
/// This event is raised on the client when an action is being played back.
/// </summary>
public event Action<BossRoom.ActionRequestData> DoActionEventClient;
/// <summary>
/// Client->Server RPC that sends a request to play an action.
/// </summary>
/// <param name="data">Data about which action to play an dits associated details. </param>
public void C2S_DoAction(ref ActionRequestData data)
{
using (PooledBitStream stream = PooledBitStream.Get())
{
SerializeAction(ref data, stream);
InvokeServerRpcPerformance(RecvDoActionServer, stream);
}
}
/// <summary>
/// Server->Client RPC that broadcasts this action play to all clients.
/// </summary>
/// <param name="data">The data associated with this Action, including what action type it is.</param>
public void S2C_BroadcastAction(ref ActionRequestData data )
{
using (PooledBitStream stream = PooledBitStream.Get())
{
SerializeAction(ref data, stream);
InvokeClientRpcOnEveryonePerformance(RecvDoActionClient, stream);
}
}
private void SerializeAction( ref ActionRequestData data, PooledBitStream stream )
{
var Logic = ActionDescriptionList.LIST[data.ActionTypeEnum][0].Logic;
using (PooledBitWriter writer = PooledBitWriter.Get(stream))
{
writer.WriteInt16((short)data.ActionTypeEnum);
if (Logic == ActionLogic.RANGED)
{
writer.WriteVector3(data.Direction);
}
if (Logic == ActionLogic.RANGEDTARGETED)
{
writer.WriteIntArray(data.TargetIds);
}
}
}
[ClientRPC]
private void RecvDoActionClient(ulong clientId, Stream stream )
{
ActionRequestData data = RecvDoAction(clientId, stream);
DoActionEventClient?.Invoke(data);
}
[ServerRPC]
private void RecvDoActionServer(ulong clientId, Stream stream)
{
ActionRequestData data = RecvDoAction(clientId, stream);
DoActionEventServer?.Invoke(data);
}
private ActionRequestData RecvDoAction(ulong clientId, Stream stream )
{
ActionRequestData data = new ActionRequestData();
using (PooledBitReader reader = PooledBitReader.Get(stream))
{
data.ActionTypeEnum = (Action)reader.ReadInt16();
var Logic = ActionDescriptionList.LIST[data.ActionTypeEnum][0].Logic;
if( Logic == ActionLogic.RANGED )
{
data.Direction = reader.ReadVector3();
}
if( Logic == ActionLogic.RANGEDTARGETED )
{
data.TargetIds = reader.ReadIntArray(data.TargetIds);
}
}
return data;
}
}
}

3
ProjectSettings/ProjectSettings.asset


scriptingRuntimeVersion: 1
gcIncremental: 1
gcWBarrierValidation: 0
apiCompatibilityLevelPerPlatform: {}
apiCompatibilityLevelPerPlatform:
Standalone: 6
m_RenderingPath: 1
m_MobileRenderingPath: 1
metroPackageName: Template_3D

36
Assets/BossRoom/Scripts/Client/Game/Character/ModelSwap.cs


public GameObject[] modelArray;
public int m_ModelIndex = 0;
public Button yourButton;
//debug; used for changing assets at runtime.
private int m_lastModelIndex = 0;
ModelSwitch();
//GameObject hackyButtonGameObject = GameObject.Find("CharacterSet");
//if (hackyButtonGameObject)
//{
// Button btn = hackyButtonGameObject.GetComponent<Button>();
// btn.onClick.AddListener(ModelSwitch);
//}
SetModel(m_ModelIndex);
public void ModelSwitch()
public void SetModel(int index)
for ( int x = 0; x < modelArray.Length; x++)
index = System.Math.Min(index, modelArray.Length - 1);
m_ModelIndex = index;
for (int x = 0; x < modelArray.Length; x++)
if (m_ModelIndex < modelArray.Length - 1)
{
m_ModelIndex += 1;
}
else m_ModelIndex = 0;
if (Input.GetKeyDown(KeyCode.Return))
//DEBUG: This allows you to change models at runtime by tweaking the ModelIndex in the editor.
if( m_lastModelIndex != m_ModelIndex )
ModelSwitch();
m_lastModelIndex = m_ModelIndex;
SetModel(m_ModelIndex);
}
}
}

8
Assets/BossRoom/Scripts/Client/Game/Character.meta


fileFormatVersion: 2
guid: 70fb5c14d66a3014cae1f19fbca24fae
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

8
Assets/BossRoom/Scripts/Server/Game/Action.meta


fileFormatVersion: 2
guid: 5ec107f53c08ae849aed16f2ecd0b94f
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

8
Assets/BossRoom/Scripts/Server/Game/Character.meta


fileFormatVersion: 2
guid: 5ccdcdfae8ab32b41a0f5a51b67c7146
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

8
Assets/BossRoom/Scripts/Shared/Game/Action.meta


fileFormatVersion: 2
guid: 958f00c29aa7c9e4bac124a84266df97
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

167
ProjectSettings/SceneTemplateSettings.json


{
"templatePinStates": [],
"dependencyTypeInfos": [
{
"userAdded": false,
"type": "UnityEngine.AnimationClip",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEditor.Animations.AnimatorController",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.AnimatorOverrideController",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEditor.Audio.AudioMixerController",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.ComputeShader",
"ignore": true,
"defaultInstantiationMode": 1,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.Cubemap",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.GameObject",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEditor.LightingDataAsset",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": false
},
{
"userAdded": false,
"type": "UnityEngine.LightingSettings",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.Material",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEditor.MonoScript",
"ignore": true,
"defaultInstantiationMode": 1,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.PhysicMaterial",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.PhysicsMaterial2D",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.Rendering.PostProcessing.PostProcessProfile",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.Rendering.PostProcessing.PostProcessResources",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.Rendering.VolumeProfile",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEditor.SceneAsset",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": false
},
{
"userAdded": false,
"type": "UnityEngine.Shader",
"ignore": true,
"defaultInstantiationMode": 1,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.ShaderVariantCollection",
"ignore": true,
"defaultInstantiationMode": 1,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.Texture",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.Texture2D",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.Timeline.TimelineAsset",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
}
],
"defaultDependencyTypeInfo": {
"userAdded": false,
"type": "<default_scene_template_dependencies>",
"ignore": false,
"defaultInstantiationMode": 1,
"supportsModification": true
},
"newSceneOverride": 0
}

15
ProjectSettings/TimelineSettings.asset


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &1
MonoBehaviour:
m_ObjectHideFlags: 61
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a287be6c49135cd4f9b2b8666c39d999, type: 3}
m_Name:
m_EditorClassIdentifier:
assetDefaultFramerate: 60

19
Assets/BossRoom/Scripts/Client/Game/Character/ClientCharacter.cs


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace BossRoom.Client
{
[RequireComponent(typeof(BossRoom.NetworkCharacterState))]
public class ClientCharacter : MLAPI.NetworkedBehaviour
{
//!!STUB. Client Character gamelogic will go here.
public override void NetworkStart()
{
if( !IsClient ) { this.enabled = false; }
}
}
}

11
Assets/BossRoom/Scripts/Client/Game/Character/ClientCharacter.cs.meta


fileFormatVersion: 2
guid: ae9a06a3585027044ababe9f9cb7b8e6
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

11
Assets/BossRoom/Scripts/Server/Game/Action/Action.cs.meta


fileFormatVersion: 2
guid: f1a0b3549fd35644090b4eb4c57a8e0e
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

91
Assets/BossRoom/Scripts/Server/Game/Action/Action.cs


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace BossRoom.Server
{
/// <summary>
/// The abstract parent class that all Actions derive from.
/// </summary>
/// <remarks>
/// The Action System is a generalized mechanism for Characters to "do stuff" in a networked way. Actions
/// include everything from your basic character attack, to a fancy skill like the Archer's Volley Shot, but also
/// include more mundane things like pulling a lever.
/// For every ActionLogic enum, there will be one specialization of this class.
/// There is only ever one active Action at a time on a character, but multiple Actions may exist at once, with subsequent Actions
/// pending behind the currently playing one. See ActionPlayer.cs
/// </remarks>
public abstract class Action
{
protected ServerCharacter m_parent;
/// <summary>
/// The level this action plays back at. e.g. a weak "level 0" melee attack, vs a strong "level 3" melee attack.
/// </summary>
protected int m_level;
private ActionRequestData m_data;
/// <summary>
/// RequestData we were instantiated with. Value should be treated as readonly.
/// </summary>
public ref ActionRequestData Data { get { return ref m_data; } }
/// <summary>
/// Data Description for this action.
/// </summary>
public ActionDescription Description
{
get
{
var list = ActionDescriptionList.LIST[Data.ActionTypeEnum];
int level = Mathf.Min(m_level, list.Count - 1); //if we don't go up to the requested level, just cap at the max level.
return list[level];
}
}
/// <summary>
/// constructor. The "data" parameter should not be retained after passing in to this method, because we take ownership of its internal memory.
/// </summary>
public Action(ServerCharacter parent, ref ActionRequestData data, int level)
{
m_parent = parent;
m_level = level;
m_data = data; //do a shallow copy.
m_data.Level = level;
}
/// <summary>
/// Called when the Action starts actually playing (which may be after it is created, because of queueing).
/// </summary>
/// <returns>false if the action decided it doesn't want to run after all, true otherwise. </returns>
public abstract bool Start();
/// <summary>
/// Called each frame while the action is running.
/// </summary>
/// <returns>true to keep running, false to stop. The Action will stop by default when its duration expires, if it has a duration set. </returns>
public abstract bool Update();
/// <summary>
/// Factory method that creates Actions from their request data.
/// </summary>
/// <param name="state">the NetworkCharacterState of the character that owns our ActionPlayer</param>
/// <param name="data">the data to instantiate this skill from. </param>
/// <param name="level">the level to play the skill at. </param>
/// <returns>the newly created action. </returns>
public static Action MakeAction(ServerCharacter parent, ref ActionRequestData data, int level )
{
var logic = ActionDescriptionList.LIST[data.ActionTypeEnum][0].Logic;
switch(logic)
{
case ActionLogic.MELEE: return new MeleeAction(parent, ref data, level);
default: throw new System.NotImplementedException();
}
}
}
}

74
Assets/BossRoom/Scripts/Server/Game/Action/ActionPlayer.cs


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace BossRoom.Server
{
/// <summary>
/// Class responsible for playing back action inputs from user.
/// </summary>
public class ActionPlayer
{
private ServerCharacter m_parent;
private List<Action> m_queue;
private float m_actionStarted_s = 0f;
public ActionPlayer(ServerCharacter parent )
{
m_parent = parent;
m_queue = new List<Action>();
}
public void PlayAction(ref ActionRequestData data )
{
int level = 0; //todo, get this from parent's networked vars, maybe.
var new_action = Action.MakeAction(m_parent, ref data, level);
bool was_empty = m_queue.Count == 0;
m_queue.Add(new_action);
if( was_empty )
{
AdvanceQueue(false);
}
}
/// <summary>
/// Optionally end the currently playing action, and advance to the next Action that wants to play.
/// </summary>
/// <param name="expireFirstElement">Pass true to remove the first element and advance to the next element. Pass false to "advance" to the 0th element</param>
private void AdvanceQueue(bool expireFirstElement)
{
if( expireFirstElement && m_queue.Count > 0 )
{
m_queue.RemoveAt(0);
}
if( m_queue.Count > 0 )
{
m_actionStarted_s = Time.time;
bool play = m_queue[0].Start();
if( !play )
{
AdvanceQueue(true);
}
}
}
public void Update()
{
if( this.m_queue.Count > 0 )
{
bool keepgoing = this.m_queue[0].Update();
bool time_expired = (Time.time - this.m_actionStarted_s) >= this.m_queue[0].Description.Duration_s;
if ( !keepgoing || time_expired )
{
this.AdvanceQueue(true);
}
}
}
}
}

11
Assets/BossRoom/Scripts/Server/Game/Action/ActionPlayer.cs.meta


fileFormatVersion: 2
guid: cfede55de1de006448fa960048736574
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

22
Assets/BossRoom/Scripts/Server/Game/Action/MeleeAction.cs


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace BossRoom.Server
{
public class MeleeAction : Action
{
public MeleeAction(ServerCharacter parent, ref ActionRequestData data, int level) : base(parent, ref data, level)
{
}
public override bool Start()
{
//stub. For now, just relay the action to all clients.
m_parent.NetState.S2C_BroadcastAction(ref Data);
return true;
}
public override bool Update() { return true; }
}
}

11
Assets/BossRoom/Scripts/Server/Game/Action/MeleeAction.cs.meta


fileFormatVersion: 2
guid: 62b840a5705be5b4b9c5f9926aafcc85
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

11
Assets/BossRoom/Scripts/Server/Game/Character/ServerCharacter.cs.meta


fileFormatVersion: 2
guid: 920a440eb254ba348915767fd046027a
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

48
Assets/BossRoom/Scripts/Server/Game/Character/ServerCharacter.cs


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace BossRoom.Server
{
[RequireComponent(typeof(NetworkCharacterState))]
public class ServerCharacter : MLAPI.NetworkedBehaviour
{
public NetworkCharacterState NetState { get; private set; }
private ActionPlayer m_actionPlayer;
// Start is called before the first frame update
void Start()
{
NetState = GetComponent<NetworkCharacterState>();
m_actionPlayer = new ActionPlayer(this);
}
public override void NetworkStart()
{
if (!IsServer) { this.enabled = false; }
else
{
this.NetState = GetComponent<NetworkCharacterState>();
this.NetState.DoActionEventServer += this.OnActionPlayRequest;
}
}
public void PlayAction(ref ActionRequestData data )
{
this.m_actionPlayer.PlayAction(ref data);
}
private void OnActionPlayRequest( ActionRequestData data )
{
Debug.Log("Server receiving action request for " + data.ActionTypeEnum);
this.PlayAction(ref data);
}
// Update is called once per frame
void Update()
{
m_actionPlayer.Update();
}
}
}

11
Assets/BossRoom/Scripts/Shared/Game/Action/ActionRequestData.cs.meta


fileFormatVersion: 2
guid: fa0d0ef458748aa49a30b1900b4a995e
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

114
Assets/BossRoom/Scripts/Shared/Game/Action/ActionRequestData.cs


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace BossRoom
{
/// <summary>
/// List of all Actions supported in the game.
/// </summary>
public enum Action
{
TANK_BASEATTACK,
ARCHER_BASEATTACK,
}
/// <summary>
/// List of all Types of Actions. There is a many-to-one mapping of Actions to ActionLogics.
/// </summary>
public enum ActionLogic
{
MELEE,
RANGED,
RANGEDTARGETED,
}
/// <summary>
/// FIXME: [GOMPS-99] This will be turned into a ScriptableObject.
/// </summary>
public class ActionDescription
{
/// <summary>
/// ActionLogic that drives this Action. This corresponds to the actual block of code that executes it.
/// </summary>
public ActionLogic Logic;
/// <summary>
/// Could be damage, could be healing, or other things. This is a base, nominal value that will get modified
/// by game logic when the action takes effect.
/// </summary>
public int Amount;
/// <summary>
/// How much it consts in Mana to play this Action.
/// </summary>
public int ManaCost;
/// <summary>
/// How how the Action performer can be from the Target, or how far the action can go (for an untargeted action like a bowshot).
/// </summary>
public float Range;
/// <summary>
/// Duration in seconds that this Action takes to play.
/// </summary>
public float Duration_s;
/// <summary>
/// How long the effect this Action leaves behind will last, in seconds.
/// </summary>
public float EffectDuration_s;
/// <summary>
/// The primary Animation action that gets played when visualizing this Action.
/// </summary>
public string Anim;
}
/// <summary>
/// FIXME [GOMPS-99]: this list will be turned into a collection of Scriptable Objects.
/// Question: Do we want to show how to do skill levels, as I am doing here?
/// </summary>
public class ActionDescriptionList
{
public static Dictionary<Action, List<ActionDescription>> LIST = new Dictionary<Action, List<ActionDescription>>
{
{ Action.TANK_BASEATTACK , new List<ActionDescription>
{
{new ActionDescription{Logic=ActionLogic.MELEE, Amount=10, ManaCost=2, Duration_s=0.5f, Range=1f, Anim="Todo" } }, //level 1
{new ActionDescription{Logic=ActionLogic.MELEE, Amount=15, ManaCost=2, Duration_s=0.5f, Range=1f, Anim="Todo" } }, //level 2
{new ActionDescription{Logic=ActionLogic.MELEE, Amount=20, ManaCost=2, Duration_s=0.5f, Range=1f, Anim="Todo" } }, //level 3
}
},
{ Action.ARCHER_BASEATTACK, new List<ActionDescription>
{
{new ActionDescription{Logic=ActionLogic.RANGED, Amount=7, ManaCost=2, Duration_s=0.5f, Range=12f, Anim="Todo" } }, //Level 1
{new ActionDescription{Logic=ActionLogic.RANGED, Amount=12, ManaCost=2, Duration_s=0.5f, Range=15f, Anim="Todo" } }, //Level 2
{new ActionDescription{Logic=ActionLogic.RANGED, Amount=15, ManaCost=2, Duration_s=0.5f, Range=18f, Anim="Todo" } }, //Level 3
}
}
};
}
/// <summary>
/// Comprehensive class that contains information needed to play back any action on the server. This is what gets sent client->server when
/// the Action gets played, and also what gets sent server->client to broadcast the action event. Note that the OUTCOMES of the action effect
/// don't ride along with this object when it is broadcast to clients; that information is sync'd separately, usually by NetworkedVars.
/// </summary>
public struct ActionRequestData
{
public Action ActionTypeEnum; //the action to play.
public Vector3 Position; //center position of skill, e.g. "ground zero" of a fireball skill.
public Vector3 Direction; //direction of skill, if not inferrable from the character's current facing.
public int[] TargetIds; //networkIds of targets, or null if untargeted.
public int Level; //what level the Action plays at (server->client only). Levels are 0-based, with 0 being weakest.
public float Amount; //can mean different things depending on the Action. For a ChaseAction, it will be target range the ChaseAction is trying to achieve.
}
}

/Assets/BossRoom/Scripts/Development/dgtest/ModelSwap.cs.meta → /Assets/BossRoom/Scripts/Client/Game/Character/ModelSwap.cs.meta

/Assets/BossRoom/Scripts/Development/dgtest/ModelSwap.cs → /Assets/BossRoom/Scripts/Client/Game/Character/ModelSwap.cs

正在加载...
取消
保存