浏览代码

Merge branch 'develop' into feature/pathfinding

# Conflicts:
#	Assets/BossRoom/Scenes/DungeonTest.unity
#	Assets/BossRoom/Scripts/Client/ClientInputSender.cs
#	Assets/BossRoom/Scripts/Server/Game/Action/ChaseAction.cs
#	Assets/BossRoom/Scripts/Server/ServerCharacterMovement.cs
#	ProjectSettings/DynamicsManager.asset
#	ProjectSettings/NavMeshAreas.asset
#	ProjectSettings/TagManager.asset
/main
Luke Stampfli 4 年前
当前提交
aaf62377
共有 73 个文件被更改,包括 5450 次插入1116 次删除
  1. 116
      Assets/BossRoom/Models/CharacterSet.fbx.meta
  2. 478
      Assets/BossRoom/Prefabs/Character/CharacterSet.prefab
  3. 89
      Assets/BossRoom/Prefabs/Character/Boss_deprecated.prefab
  4. 103
      Assets/BossRoom/Prefabs/Enemy.prefab
  5. 18
      Assets/BossRoom/Prefabs/Imp.prefab
  6. 23
      Assets/BossRoom/Prefabs/NetworkingManager.prefab
  7. 4
      Assets/BossRoom/Prefabs/State/BossRoomState.prefab
  8. 869
      Assets/BossRoom/Scenes/DungeonTest.unity
  9. 49
      Assets/BossRoom/Scenes/MainMenu.unity
  10. 32
      Assets/BossRoom/Scripts/Client/ClientCharacterVisualization.cs
  11. 11
      Assets/BossRoom/Scripts/Client/ClientInputSender.cs
  12. 2
      Assets/BossRoom/Scripts/Client/Game/Character/ModelSwap.cs
  13. 10
      Assets/BossRoom/Scripts/Client/Net/ClientGameNetPortal.cs
  14. 8
      Assets/BossRoom/Scripts/Client/UI/MainMenuUI.cs
  15. 9
      Assets/BossRoom/Scripts/Server/Game/Action/ActionPlayer.cs
  16. 22
      Assets/BossRoom/Scripts/Server/Game/Action/ChaseAction.cs
  17. 2
      Assets/BossRoom/Scripts/Server/Game/Action/MeleeAction.cs
  18. 15
      Assets/BossRoom/Scripts/Server/Game/State/ServerBossRoomState.cs
  19. 19
      Assets/BossRoom/Scripts/Server/Net/ServerGameNetPortal.cs
  20. 20
      Assets/BossRoom/Scripts/Server/ServerCharacterMovement.cs
  21. 69
      Assets/BossRoom/Scripts/Shared/Game/Action/ActionRequestData.cs
  22. 2
      Assets/BossRoom/Scripts/Shared/Net/GameNetPortal.cs
  23. 78
      Assets/BossRoom/Scripts/Shared/NetworkCharacterState.cs
  24. 8
      Packages/packages-lock.json
  25. 44
      ProjectSettings/DynamicsManager.asset
  26. 59
      ProjectSettings/GraphicsSettings.asset
  27. 12
      ProjectSettings/ProjectSettings.asset
  28. 79
      Assets/BossRoom/Material/Characters/Enemy_Eyes_sheet.mat
  29. 8
      Assets/BossRoom/Material/Characters/Enemy_Eyes_sheet.mat.meta
  30. 84
      Assets/BossRoom/Material/Characters/Enemy_Mouth_sheet.mat
  31. 8
      Assets/BossRoom/Material/Characters/Enemy_Mouth_sheet.mat.meta
  32. 83
      Assets/BossRoom/Material/Characters/ToonTest/Head_Imp.mat
  33. 8
      Assets/BossRoom/Material/Characters/ToonTest/Head_Imp.mat.meta
  34. 83
      Assets/BossRoom/Material/Characters/ToonTest/Torso_Imp.mat
  35. 8
      Assets/BossRoom/Material/Characters/ToonTest/Torso_Imp.mat.meta
  36. 408
      Assets/BossRoom/Models/BossSetController.controller
  37. 8
      Assets/BossRoom/Models/BossSetController.controller.meta
  38. 1001
      Assets/BossRoom/Prefabs/Character/Boss.prefab
  39. 7
      Assets/BossRoom/Prefabs/Character/Boss.prefab.meta
  40. 1001
      Assets/BossRoom/Prefabs/Character/Imp.prefab
  41. 7
      Assets/BossRoom/Prefabs/Character/Imp.prefab.meta
  42. 1
      Assets/BossRoom/Textures/Characters/Imp_Head_CLR.tga
  43. 96
      Assets/BossRoom/Textures/Characters/Imp_Head_CLR.tga.meta
  44. 1001
      Assets/BossRoom/Textures/Characters/Imp_Torso_CLR.tga
  45. 96
      Assets/BossRoom/Textures/Characters/Imp_Torso_CLR.tga.meta
  46. 29
      Assets/BossRoom/Scripts/Development/dgtest/Animate_Walk.cs
  47. 11
      Assets/BossRoom/Scripts/Development/dgtest/Animate_Walk.cs.meta
  48. 11
      Assets/BossRoom/Scripts/Development/dgtest/GameManager.cs.meta
  49. 27
      Assets/BossRoom/Scripts/Development/dgtest/GroundDiscManager.cs
  50. 11
      Assets/BossRoom/Scripts/Development/dgtest/GroundDiscManager.cs.meta
  51. 40
      Assets/BossRoom/Scripts/Development/dgtest/MainMenuFX.cs
  52. 11
      Assets/BossRoom/Scripts/Development/dgtest/MainMenuFX.cs.meta
  53. 11
      Assets/BossRoom/Scripts/Development/dgtest/MainMenuManager.cs.meta
  54. 8
      Assets/BossRoom/Scripts/Development/dgtest/Movement.meta
  55. 11
      Assets/BossRoom/Scripts/Development/dgtest/ProgramState.cs.meta
  56. 2
      Assets/BossRoom/Scripts/Development/dgtest/README.txt
  57. 7
      Assets/BossRoom/Scripts/Development/dgtest/README.txt.meta
  58. 125
      Assets/BossRoom/Scripts/Development/dgtest/SimpleInputMover.cs
  59. 11
      Assets/BossRoom/Scripts/Development/dgtest/SimpleInputMover.cs.meta
  60. 23
      Assets/BossRoom/Scripts/Development/dgtest/GameManager.cs
  61. 36
      Assets/BossRoom/Scripts/Development/dgtest/MainMenuManager.cs
  62. 34
      Assets/BossRoom/Scripts/Development/dgtest/ProgramState.cs
  63. 0
      /Assets/BossRoom/Prefabs/Character/Boss_deprecated.prefab.meta
  64. 0
      /Assets/BossRoom/Prefabs/Character/Boss_deprecated.prefab
  65. 0
      /Assets/BossRoom/Scripts/Client/Net/ClientGameNetPortal.cs.meta
  66. 0
      /Assets/BossRoom/Scripts/Client/Net/ClientGameNetPortal.cs
  67. 0
      /Assets/BossRoom/Scripts/Server/Net/ServerGameNetPortal.cs.meta
  68. 0
      /Assets/BossRoom/Scripts/Server/Net/ServerGameNetPortal.cs
  69. 0
      /Assets/BossRoom/Scripts/Shared/Net/GameNetPortal.cs.meta
  70. 0
      /Assets/BossRoom/Scripts/Shared/Net/GameNetPortal.cs

116
Assets/BossRoom/Models/CharacterSet.fbx.meta


maskType: 3
maskSource: {instanceID: 0}
additiveReferencePoseFrame: 0
- serializedVersion: 16
name: boss idle cloak
takeName: Take 001
internalID: 0
firstFrame: 535
lastFrame: 575
wrapMode: 0
orientationOffsetY: 0
level: 0
cycleOffset: 0
loop: 0
hasAdditiveReferencePose: 0
loopTime: 0
loopBlend: 0
loopBlendOrientation: 0
loopBlendPositionY: 0
loopBlendPositionXZ: 0
keepOriginalOrientation: 0
keepOriginalPositionY: 1
keepOriginalPositionXZ: 0
heightFromFeet: 0
mirror: 0
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
curves: []
events: []
transformMask: []
maskType: 3
maskSource: {instanceID: 0}
additiveReferencePoseFrame: 0
- serializedVersion: 16
name: boss attack1 cloak
takeName: Take 001
internalID: 0
firstFrame: 576
lastFrame: 636
wrapMode: 0
orientationOffsetY: 0
level: 0
cycleOffset: 0
loop: 0
hasAdditiveReferencePose: 0
loopTime: 0
loopBlend: 0
loopBlendOrientation: 0
loopBlendPositionY: 0
loopBlendPositionXZ: 0
keepOriginalOrientation: 0
keepOriginalPositionY: 1
keepOriginalPositionXZ: 0
heightFromFeet: 0
mirror: 0
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
curves: []
events: []
transformMask: []
maskType: 3
maskSource: {instanceID: 0}
additiveReferencePoseFrame: 0
- serializedVersion: 16
name: boss walk cloak
takeName: Take 001
internalID: 0
firstFrame: 637
lastFrame: 677
wrapMode: 0
orientationOffsetY: 0
level: 0
cycleOffset: 0
loop: 0
hasAdditiveReferencePose: 0
loopTime: 0
loopBlend: 0
loopBlendOrientation: 0
loopBlendPositionY: 0
loopBlendPositionXZ: 0
keepOriginalOrientation: 0
keepOriginalPositionY: 1
keepOriginalPositionXZ: 0
heightFromFeet: 0
mirror: 0
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
curves: []
events: []
transformMask: []
maskType: 3
maskSource: {instanceID: 0}
additiveReferencePoseFrame: 0
- serializedVersion: 16
name: boss run cloak
takeName: Take 001
internalID: 0
firstFrame: 678
lastFrame: 702
wrapMode: 0
orientationOffsetY: 0
level: 0
cycleOffset: 0
loop: 0
hasAdditiveReferencePose: 0
loopTime: 0
loopBlend: 0
loopBlendOrientation: 0
loopBlendPositionY: 0
loopBlendPositionXZ: 0
keepOriginalOrientation: 0
keepOriginalPositionY: 1
keepOriginalPositionXZ: 0
heightFromFeet: 0
mirror: 0
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
curves: []
events: []
transformMask: []
maskType: 3
maskSource: {instanceID: 0}
additiveReferencePoseFrame: 0
isReadable: 0
meshes:
lODScreenPercentages: []

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

89
Assets/BossRoom/Prefabs/Character/Boss_deprecated.prefab


serializedVersion: 6
m_Component:
- component: {fileID: 8471577964028083133}
m_Layer: 9
m_Layer: 6
m_Name: Bone_LeftLeg
m_TagString: Untagged
m_Icon: {fileID: 0}

- component: {fileID: 5676158276148367979}
- component: {fileID: 54423707692032037}
- component: {fileID: 7175551335003533805}
m_Layer: 9
m_Layer: 6
m_Name: Boss_Helmet
m_TagString: Untagged
m_Icon: {fileID: 0}

m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:

m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!1 &904593528835651456
GameObject:
m_ObjectHideFlags: 0

- component: {fileID: 626770166029630456}
- component: {fileID: 2555491905317173766}
- component: {fileID: 4328569161924409889}
m_Layer: 9
m_Layer: 6
m_Name: Boss_Glove_Lt
m_TagString: Untagged
m_Icon: {fileID: 0}

m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:

m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!1 &1036131051308789703
GameObject:
m_ObjectHideFlags: 0

serializedVersion: 6
m_Component:
- component: {fileID: 8542285524342066400}
m_Layer: 9
m_Layer: 6
m_Name: Bone_RightUpLeg
m_TagString: Untagged
m_Icon: {fileID: 0}

serializedVersion: 6
m_Component:
- component: {fileID: 1140478765031238550}
m_Layer: 9
m_Layer: 6
m_Name: Bone_RightHand
m_TagString: Untagged
m_Icon: {fileID: 0}

- component: {fileID: 6600658761209389537}
- component: {fileID: 1699740905855365628}
- component: {fileID: 3348957444581692891}
m_Layer: 9
m_Layer: 6
m_Name: Boss_Head
m_TagString: Untagged
m_Icon: {fileID: 0}

m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:

m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!1 &2121042891709276067
GameObject:
m_ObjectHideFlags: 0

- component: {fileID: 8946188748949476855}
- component: {fileID: 6494873744548653873}
- component: {fileID: 8465568883583573626}
m_Layer: 9
m_Layer: 6
m_Name: Gear_LS_Boss_ShoulderPad_Boss
m_TagString: Untagged
m_Icon: {fileID: 0}

m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:

m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!1 &2312244865545274376
GameObject:
m_ObjectHideFlags: 0

- component: {fileID: 4726480049140463974}
- component: {fileID: 1768238820954638404}
- component: {fileID: 6303408797671979499}
m_Layer: 9
m_Layer: 6
m_Name: Boss_Cape
m_TagString: Untagged
m_Icon: {fileID: 0}

m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:

m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!1 &2406828545593368743
GameObject:
m_ObjectHideFlags: 0

serializedVersion: 6
m_Component:
- component: {fileID: 1132036376278279466}
m_Layer: 9
m_Layer: 6
m_Name: Bone_RightFoot
m_TagString: Untagged
m_Icon: {fileID: 0}

m_Component:
- component: {fileID: 8966078712925912292}
- component: {fileID: 6668753241094824838}
m_Layer: 9
m_Layer: 6
m_Name: Boss_Torso
m_TagString: Untagged
m_Icon: {fileID: 0}

m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 0
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:

- component: {fileID: 603178792514560972}
- component: {fileID: 452691621379955079}
- component: {fileID: 7711800719313727183}
m_Layer: 9
m_Layer: 6
m_Name: Boss_Eyes
m_TagString: Untagged
m_Icon: {fileID: 0}

m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:

m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!1 &3126842796222407860
GameObject:
m_ObjectHideFlags: 0

- component: {fileID: 2488372380926969271}
- component: {fileID: 2049154182302028074}
- component: {fileID: 7457370326150778517}
m_Layer: 9
m_Layer: 6
m_Name: Boss_WeaponR
m_TagString: Untagged
m_Icon: {fileID: 0}

m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:

m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!1 &3718114743247664942
GameObject:
m_ObjectHideFlags: 0

serializedVersion: 6
m_Component:
- component: {fileID: 1971106785374315311}
m_Layer: 9
m_Layer: 6
m_Name: Bone_RightForeArm
m_TagString: Untagged
m_Icon: {fileID: 0}

m_Component:
- component: {fileID: 4099936395697225189}
- component: {fileID: 7927965616957794207}
m_Layer: 9
m_Layer: 6
m_Name: Boss2
m_TagString: Untagged
m_Icon: {fileID: 0}

serializedVersion: 6
m_Component:
- component: {fileID: 1566582967606412568}
m_Layer: 9
m_Layer: 6
m_Name: Bone_RightArm
m_TagString: Untagged
m_Icon: {fileID: 0}

serializedVersion: 6
m_Component:
- component: {fileID: 7501691112458786858}
m_Layer: 9
m_Layer: 6
m_Name: Bone_RightLeg
m_TagString: Untagged
m_Icon: {fileID: 0}

serializedVersion: 6
m_Component:
- component: {fileID: 3720208583712229245}
m_Layer: 9
m_Layer: 6
m_Name: Bone_Hips
m_TagString: Untagged
m_Icon: {fileID: 0}

- component: {fileID: 7527631219540611878}
- component: {fileID: 7040062443551072368}
- component: {fileID: 8617234224883782350}
m_Layer: 9
m_Layer: 6
m_Name: Boss_Glove_Rt
m_TagString: Untagged
m_Icon: {fileID: 0}

m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:

m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!1 &4819475020614827668
GameObject:
m_ObjectHideFlags: 0

serializedVersion: 6
m_Component:
- component: {fileID: 6619384670924476501}
m_Layer: 9
m_Layer: 6
m_Name: Head_Parent_Boss
m_TagString: Untagged
m_Icon: {fileID: 0}

serializedVersion: 6
m_Component:
- component: {fileID: 8043182327089238558}
m_Layer: 9
m_Layer: 6
m_Name: Bone_LeftFoot
m_TagString: Untagged
m_Icon: {fileID: 0}

serializedVersion: 6
m_Component:
- component: {fileID: 9211626956227493483}
m_Layer: 9
m_Layer: 6
m_Name: Bone_LeftArm
m_TagString: Untagged
m_Icon: {fileID: 0}

serializedVersion: 6
m_Component:
- component: {fileID: 9198638882861967147}
m_Layer: 9
m_Layer: 6
m_Name: Bone_Head
m_TagString: Untagged
m_Icon: {fileID: 0}

serializedVersion: 6
m_Component:
- component: {fileID: 1391467309202912901}
m_Layer: 9
m_Layer: 6
m_Name: Bone_Toe
m_TagString: Untagged
m_Icon: {fileID: 0}

- component: {fileID: 1384445393761489082}
- component: {fileID: 3246570027778185146}
- component: {fileID: 3414140823306047527}
m_Layer: 9
m_Layer: 6
m_Name: Gear_RS_Boss_ShoulderPad_Boss
m_TagString: Untagged
m_Icon: {fileID: 0}

m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:

m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!1 &7117213022976001748
GameObject:
m_ObjectHideFlags: 0

serializedVersion: 6
m_Component:
- component: {fileID: 2010958861556071026}
m_Layer: 9
m_Layer: 6
m_Name: Bone_Spine
m_TagString: Untagged
m_Icon: {fileID: 0}

serializedVersion: 6
m_Component:
- component: {fileID: 1288126753454780576}
m_Layer: 9
m_Layer: 6
m_Name: Bone_LeftHand
m_TagString: Untagged
m_Icon: {fileID: 0}

- component: {fileID: 6884167237989972628}
- component: {fileID: 1741574821687613046}
- component: {fileID: 4937234158457664444}
m_Layer: 9
m_Layer: 6
m_Name: Boss_WeaponL
m_TagString: Untagged
m_Icon: {fileID: 0}

m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:

m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!1 &7225200066265528246
GameObject:
m_ObjectHideFlags: 0

serializedVersion: 6
m_Component:
- component: {fileID: 2917788714295042895}
m_Layer: 9
m_Layer: 6
m_Name: Bone_LeftForeArm
m_TagString: Untagged
m_Icon: {fileID: 0}

- component: {fileID: 4791243883948405992}
- component: {fileID: 363385033821201294}
- component: {fileID: 4305011951190088136}
m_Layer: 9
m_Layer: 6
m_Name: Boss_Mouth
m_TagString: Untagged
m_Icon: {fileID: 0}

m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:

m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!1 &7557688286833805465
GameObject:
m_ObjectHideFlags: 0

serializedVersion: 6
m_Component:
- component: {fileID: 5775205839377955254}
m_Layer: 9
m_Layer: 6
m_Name: Bone_LeftUpLeg
m_TagString: Untagged
m_Icon: {fileID: 0}

- component: {fileID: 2946991962905641278}
- component: {fileID: 6756640246431350128}
- component: {fileID: 2092317927563564270}
m_Layer: 9
m_Layer: 6
m_Name: Boss_Ears
m_TagString: Untagged
m_Icon: {fileID: 0}

m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:

m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!1 &8836459243253453128
GameObject:
m_ObjectHideFlags: 0

serializedVersion: 6
m_Component:
- component: {fileID: 1567577323923291153}
m_Layer: 9
m_Layer: 6
m_Name: Bone_Toe 1
m_TagString: Untagged
m_Icon: {fileID: 0}

103
Assets/BossRoom/Prefabs/Enemy.prefab


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &1878903107775871435
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3437256802070767247}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: edb78c1621dad5149bb47b96120d3fbf, type: 3}
m_Name:
m_EditorClassIdentifier:
HitPoints:
InternalValue: 0
Mana:
InternalValue: 0
--- !u!114 &3375538458323645294
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3437256802070767247}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9520a47fc61d5ab4ca99cdac2d574909, type: 3}
m_Name:
m_EditorClassIdentifier:
MinZoomDistance: 3
MaxZoomDistance: 30
ZoomSpeed: 3
--- !u!1 &4340979889802297118
GameObject:
m_ObjectHideFlags: 0

m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 2663956648913632309}
- {fileID: 4818022201665423606}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}

m_Script: {fileID: 11500000, guid: 797d92969c575574d868e069887e8486, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1001 &2025951435693425104
--- !u!1001 &1692449221005613434
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2

- target: {fileID: 2092317927563564270, guid: 08c3914aa4064d349a429bc090494787, type: 3}
propertyPath: m_Materials.Array.data[0]
- target: {fileID: 2663813019036984750, guid: 1e8ae28d24c5683478548d7e96e5ba55, type: 3}
propertyPath: m_ClientVisualsAnimator
objectReference: {fileID: 2100000, guid: 3091d04ea639b8c48bbdd46bf02f2875, type: 2}
- target: {fileID: 3348957444581692891, guid: 08c3914aa4064d349a429bc090494787, type: 3}
propertyPath: m_Materials.Array.data[0]
value:
objectReference: {fileID: 2100000, guid: 3091d04ea639b8c48bbdd46bf02f2875, type: 2}
- target: {fileID: 3723974146209228639, guid: 08c3914aa4064d349a429bc090494787, type: 3}
propertyPath: m_Name
value: Boss2
objectReference: {fileID: 0}
- target: {fileID: 4099936395697225189, guid: 08c3914aa4064d349a429bc090494787, type: 3}
objectReference: {fileID: 1458358683133760140}
- target: {fileID: 6170428688339538316, guid: 1e8ae28d24c5683478548d7e96e5ba55, type: 3}
- target: {fileID: 4099936395697225189, guid: 08c3914aa4064d349a429bc090494787, type: 3}
- target: {fileID: 6170428688339538316, guid: 1e8ae28d24c5683478548d7e96e5ba55, type: 3}
- target: {fileID: 4099936395697225189, guid: 08c3914aa4064d349a429bc090494787, type: 3}
- target: {fileID: 6170428688339538316, guid: 1e8ae28d24c5683478548d7e96e5ba55, type: 3}
- target: {fileID: 4099936395697225189, guid: 08c3914aa4064d349a429bc090494787, type: 3}
- target: {fileID: 6170428688339538316, guid: 1e8ae28d24c5683478548d7e96e5ba55, type: 3}
- target: {fileID: 4099936395697225189, guid: 08c3914aa4064d349a429bc090494787, type: 3}
- target: {fileID: 6170428688339538316, guid: 1e8ae28d24c5683478548d7e96e5ba55, type: 3}
value: 0.25012913
value: 1
- target: {fileID: 4099936395697225189, guid: 08c3914aa4064d349a429bc090494787, type: 3}
- target: {fileID: 6170428688339538316, guid: 1e8ae28d24c5683478548d7e96e5ba55, type: 3}
value: -0
value: 0
- target: {fileID: 4099936395697225189, guid: 08c3914aa4064d349a429bc090494787, type: 3}
- target: {fileID: 6170428688339538316, guid: 1e8ae28d24c5683478548d7e96e5ba55, type: 3}
value: -0.9682125
value: 0
- target: {fileID: 4099936395697225189, guid: 08c3914aa4064d349a429bc090494787, type: 3}
- target: {fileID: 6170428688339538316, guid: 1e8ae28d24c5683478548d7e96e5ba55, type: 3}
value: -0
value: 0
- target: {fileID: 4099936395697225189, guid: 08c3914aa4064d349a429bc090494787, type: 3}
- target: {fileID: 6170428688339538316, guid: 1e8ae28d24c5683478548d7e96e5ba55, type: 3}
- target: {fileID: 4099936395697225189, guid: 08c3914aa4064d349a429bc090494787, type: 3}
- target: {fileID: 6170428688339538316, guid: 1e8ae28d24c5683478548d7e96e5ba55, type: 3}
value: -151.03001
value: 0
- target: {fileID: 4099936395697225189, guid: 08c3914aa4064d349a429bc090494787, type: 3}
- target: {fileID: 6170428688339538316, guid: 1e8ae28d24c5683478548d7e96e5ba55, type: 3}
objectReference: {fileID: 0}
- target: {fileID: 6839301660383890230, guid: 1e8ae28d24c5683478548d7e96e5ba55, type: 3}
propertyPath: m_Name
value: Boss
m_SourcePrefab: {fileID: 100100000, guid: 08c3914aa4064d349a429bc090494787, type: 3}
--- !u!1 &3437256802070767247 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 3723974146209228639, guid: 08c3914aa4064d349a429bc090494787, type: 3}
m_PrefabInstance: {fileID: 2025951435693425104}
m_SourcePrefab: {fileID: 100100000, guid: 1e8ae28d24c5683478548d7e96e5ba55, type: 3}
--- !u!4 &4818022201665423606 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 6170428688339538316, guid: 1e8ae28d24c5683478548d7e96e5ba55, type: 3}
m_PrefabInstance: {fileID: 1692449221005613434}
--- !u!4 &2663956648913632309 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 4099936395697225189, guid: 08c3914aa4064d349a429bc090494787, type: 3}
m_PrefabInstance: {fileID: 2025951435693425104}
--- !u!95 &1458358683133760140 stripped
Animator:
m_CorrespondingSourceObject: {fileID: 234724737205816310, guid: 1e8ae28d24c5683478548d7e96e5ba55, type: 3}
m_PrefabInstance: {fileID: 1692449221005613434}
m_PrefabAsset: {fileID: 0}

18
Assets/BossRoom/Prefabs/Imp.prefab


m_Component:
- component: {fileID: 3443969269427342405}
- component: {fileID: 8731146078263039551}
- component: {fileID: 1234019091858508219}
- component: {fileID: 2732413867170824990}
m_Layer: 9
m_Name: Boss2

m_HasTransformHierarchy: 1
m_AllowConstantClipSamplingOptimization: 1
m_KeepAnimatorControllerStateOnDisable: 0
--- !u!114 &1234019091858508219
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2630312606306686719}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: edb78c1621dad5149bb47b96120d3fbf, type: 3}
m_Name:
m_EditorClassIdentifier:
HitPoints:
InternalValue: 0
Mana:
InternalValue: 0
--- !u!114 &2732413867170824990
MonoBehaviour:
m_ObjectHideFlags: 0

m_Script: {fileID: 11500000, guid: 9520a47fc61d5ab4ca99cdac2d574909, type: 3}
m_Name:
m_EditorClassIdentifier:
m_ClientVisualsAnimator: {fileID: 8731146078263039551}
MinZoomDistance: 0
MaxZoomDistance: 0
ZoomSpeed: 0

23
Assets/BossRoom/Prefabs/NetworkingManager.prefab


- component: {fileID: 5436007408952557924}
- component: {fileID: 5436007408952557927}
- component: {fileID: 5436007408952557926}
- component: {fileID: 5436007408952557945}
m_Layer: 0
m_Name: NetworkingManager
m_TagString: Untagged

SimulatePacketLossChance: 0
SimulateMinLatency: 0
SimulateMaxLatency: 0
--- !u!114 &5436007408952557945
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5436007408952557947}
m_Enabled: 0
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 52c005b32a68a254cbe502a4e5cb8eb6, type: 3}
m_Name:
m_EditorClassIdentifier:
appId: bc5b8b0d-edf3-4c61-9593-ce38da7f0c79
gameVersion: 0.0.0
region: EU
nickName:
roomName:
maxPlayers: 4
batchedTransportEventCode: 129
channelIdCodesStartRange: 130
attachSupportLogger: 1
sendQueueBatchSize: 4096

4
Assets/BossRoom/Prefabs/State/BossRoomState.prefab


m_Script: {fileID: 11500000, guid: 927521835ae055247b17e4abe805b4ab, type: 3}
m_Name:
m_EditorClassIdentifier:
PlayerPrefab: {fileID: 4600110157238723790, guid: bb87f9bac2595f8499c048016c4b2e1d, type: 3}
EnemyPrefab: {fileID: -3741253011127748524, guid: 5f8daaa54415e5e41b5162cd13121359, type: 3}
m_PlayerPrefab: {fileID: 4600110157238723790, guid: bb87f9bac2595f8499c048016c4b2e1d, type: 3}
m_EnemyPrefab: {fileID: -3741253011127748524, guid: 5f8daaa54415e5e41b5162cd13121359, type: 3}

869
Assets/BossRoom/Scenes/DungeonTest.unity
文件差异内容过多而无法显示
查看文件

49
Assets/BossRoom/Scenes/MainMenu.unity


m_GameObject: {fileID: 33109991}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 4.2152314, y: 4.2152314, z: 4.2152314}
m_LocalScale: {x: 3.02004, y: 3.02004, z: 3.02004}
m_Children:
- {fileID: 1219606791}
m_Father: {fileID: 1240187547}

m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: -0.5}
m_AnchoredPosition: {x: 0, y: -21}
m_SizeDelta: {x: 160, y: 30}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &33109993

m_GameObject: {fileID: 200724330}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 4.2152314, y: 4.2152314, z: 4.2152314}
m_LocalScale: {x: 0.5570696, y: 0.5570696, z: 0.5570696}
m_Children:
- {fileID: 1234271886}
- {fileID: 714400692}

m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: -310}
m_SizeDelta: {x: 160, y: 30}
m_AnchoredPosition: {x: 0, y: -315.9}
m_SizeDelta: {x: 736, y: 162}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &200724332
MonoBehaviour:

m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: -0.5}
m_AnchoredPosition: {x: 0, y: -32}
m_SizeDelta: {x: -20, y: -13}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &714400693

m_Calls: []
m_FontData:
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
m_FontSize: 14
m_FontStyle: 0
m_FontSize: 75
m_FontStyle: 1
m_MinSize: 10
m_MaxSize: 40
m_MinSize: 5
m_MaxSize: 75
m_Alignment: 1
m_AlignByGeometry: 0
m_RichText: 0

m_GameObject: {fileID: 726602803}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_LocalScale: {x: 1.6778, y: 1.6778, z: 1.6778}
m_Children: []
m_Father: {fileID: 1240187547}
m_RootOrder: 2

m_GameObject: {fileID: 1153501709}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: -1}
m_LocalScale: {x: 1, y: 1, z: 1}
m_LocalScale: {x: 1.0066801, y: 1.0066801, z: 0.8389}
m_Children: []
m_Father: {fileID: 1240187547}
m_RootOrder: 0

m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: -0.5}
m_AnchoredPosition: {x: 0, y: -31.999966}
m_SizeDelta: {x: -20, y: -13}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1234271887

m_Calls: []
m_FontData:
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
m_FontSize: 14
m_FontStyle: 2
m_FontSize: 75
m_FontStyle: 3
m_MaxSize: 40
m_MaxSize: 75
m_Alignment: 1
m_AlignByGeometry: 0
m_RichText: 1

m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
m_Name:
m_EditorClassIdentifier:
m_UiScaleMode: 0
m_UiScaleMode: 1
m_ReferenceResolution: {x: 800, y: 600}
m_ReferenceResolution: {x: 1920, y: 1080}
m_MatchWidthOrHeight: 0
m_MatchWidthOrHeight: 0.506
m_PhysicalUnit: 3
m_FallbackScreenDPI: 96
m_DefaultSpriteDPI: 96

m_GameObject: {fileID: 1827325232}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: -0.15}
m_LocalScale: {x: 1.6370162, y: 1.6370162, z: 1.6370162}
m_LocalScale: {x: 1.2577441, y: 1.2577441, z: 1.2577441}
m_Children: []
m_Father: {fileID: 1240187547}
m_RootOrder: 1

m_AnchoredPosition: {x: 0, y: 384}
m_AnchoredPosition: {x: 0, y: 293}
m_SizeDelta: {x: 1000, y: 512}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1827325234

m_GameObject: {fileID: 1985907275}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 4.2152314, y: 4.2152314, z: 4.2152314}
m_LocalScale: {x: 3.02004, y: 3.02004, z: 3.02004}
m_Children:
- {fileID: 1186502851}
m_Father: {fileID: 1240187547}

m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: -155}
m_AnchoredPosition: {x: 0, y: -169}
m_SizeDelta: {x: 160, y: 30}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1985907277

propertyPath: m_Name
value: NetworkingManager
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedComponents:
- {fileID: 5436007408952557945, guid: 8f5ddd70561bc0b42bbbe5a8a155bb7b, type: 3}
m_SourcePrefab: {fileID: 100100000, guid: 8f5ddd70561bc0b42bbbe5a8a155bb7b, type: 3}

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


using UnityEngine;
using Cinemachine;
namespace BossRoom.Viz
namespace BossRoom.Visual
[RequireComponent(typeof(NetworkCharacterState))]
[SerializeField]
private CinemachineVirtualCamera m_MainCamera;
private Transform m_Parent;

m_ClientVisualsAnimator.SetTrigger("BeginAttack");
}
void Awake()
{
m_ClientVisualsAnimator = GetComponent<Animator>();
}
SmoothMove();
if (m_Parent == null)
{
//since we aren't in the transform hierarchy, we have to explicitly die when our parent dies.
GameObject.Destroy(this.gameObject);
return;
}
SmoothMove();
if (m_ClientVisualsAnimator)
{

private void SmoothMove()
{
if (m_Parent == null)
{
//since we aren't in the transform hierarchy, we have to explicitly die when our parent dies.
GameObject.Destroy(this.gameObject);
return;
}
var pos_diff = m_Parent.transform.position - transform.position;
var angle_diff = Quaternion.Angle(m_Parent.transform.rotation, transform.rotation);

private void AttachCamera()
{
m_MainCamera = (CinemachineVirtualCamera)FindObjectOfType(typeof(CinemachineVirtualCamera));
var cameraGO = GameObject.FindGameObjectWithTag("CMCamera");
if( cameraGO == null ) { return; }
m_MainCamera = cameraGO.GetComponent<CinemachineVirtualCamera>();
if (m_MainCamera)
{
m_MainCamera.Follow = transform;

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


//these two actions will queue one after the other, causing us to run over to our target and take a swing.
var chase_data = new ActionRequestData();
chase_data.ActionTypeEnum = ActionType.GENERAL_CHASE;
chase_data.Amount = 3f;
chase_data.TargetIds = new ulong[] {GetTargetObject(ref hit)};
m_NetworkCharacter.C2S_DoAction(ref chase_data);
chase_data.Amount = ActionData.ActionDescriptions[ActionType.TANK_BASEATTACK][0].Range;
chase_data.TargetIds = new ulong[] { GetTargetObject(ref hit) };
m_NetworkCharacter.ClientSendActionRequest(ref chase_data);
m_NetworkCharacter.C2S_DoAction(ref hit_data);
m_NetworkCharacter.ClientSendActionRequest(ref hit_data);
m_NetworkCharacter.C2S_DoAction(ref data);
m_NetworkCharacter.ClientSendActionRequest(ref data);
}
m_AttackClickRequest = null;

{
return 0;
}
var targetObj = hit.collider.GetComponent<NetworkedObject>();
if (targetObj == null)
{

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


using UnityEngine;
using UnityEngine.UI;
namespace BossRoom.Viz
namespace BossRoom.Visual
{
public class ModelSwap : MonoBehaviour
{

10
Assets/BossRoom/Scripts/Client/Net/ClientGameNetPortal.cs


/// <summary>
/// Client logic for the GameNetHub. Contains implementations for all of GameNetHub's S2C RPCs.
/// </summary>
[RequireComponent(typeof(GameNetHub))]
public class ClientGNHLogic : MonoBehaviour
[RequireComponent(typeof(GameNetPortal))]
public class ClientGameNetPortal : MonoBehaviour
private GameNetHub m_Hub;
private GameNetPortal m_Hub;
m_Hub = GetComponent<GameNetHub>();
m_Hub = GetComponent<GameNetPortal>();
m_Hub.NetworkStartEvent += this.NetworkStart;
m_Hub.ConnectFinishedEvent += this.OnConnectFinished;
}

/// </remarks>
/// <param name="ipaddress">the IP address of the host to connect to. (currently IPV4 only)</param>
/// <param name="port">The port of the host to connect to. </param>
public static void StartClient(GameNetHub hub, string ipaddress, int port)
public static void StartClient(GameNetPortal hub, string ipaddress, int port)
{
string client_guid = GetOrCreateGuid();
string payload = $"client_guid={client_guid}\n"; //minimal format where key=value pairs are separated by newlines.

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


using System.Collections.Generic;
using UnityEngine;
namespace BossRoom.Viz
namespace BossRoom.Visual
{
/// <summary>
/// Provides backing logic for all of the UI that runs in the MainMenu stage.

public GameObject GameHubGO;
public GameObject InputTextGO;
private BossRoom.GameNetHub m_netHub;
private BossRoom.GameNetPortal m_netHub;
/// <summary>
/// This will get more sophisticated as we move to a true relay model.

// Start is called before the first frame update
void Start()
{
m_netHub = GameHubGO.GetComponent<BossRoom.GameNetHub>();
m_netHub = GameHubGO.GetComponent<BossRoom.GameNetPortal>();
}
/// <summary>

public void OnConnectClicked()
{
BossRoom.Client.ClientGNHLogic.StartClient(m_netHub, GetIPAddress(), k_connectPort);
BossRoom.Client.ClientGameNetPortal.StartClient(m_netHub, GetIPAddress(), k_connectPort);
}
}
}

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


{
if( this.m_queue.Count > 0 )
{
bool keepgoing = m_queue[0].Update();
bool expirable = m_queue[0].Description.Duration_s > 0f; //non-positive value is a sentinel indicating the duration is indefinite.
bool time_expired = expirable && (Time.time - m_queue[0].TimeStarted) >= m_queue[0].Description.Duration_s;
if ( !keepgoing || time_expired )
Action runningAction = m_queue[0]; //action at the front of the queue is the one that is actively running.
bool keepGoing = runningAction.Update();
bool expirable = runningAction.Description.Duration_s > 0f; //non-positive value is a sentinel indicating the duration is indefinite.
bool timeExpired = expirable && (Time.time - runningAction.TimeStarted) >= runningAction.Description.Duration_s;
if ( !keepGoing || timeExpired )
{
AdvanceQueue(true);
}

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


/// <returns>false if the action decided it doesn't want to run after all, true otherwise. </returns>
public override bool Start()
{
if(m_Data.TargetIds == null || m_Data.TargetIds.Length == 0 || !MLAPI.Spawning.SpawnManager.SpawnedObjects.ContainsKey(m_Data.TargetIds[0]) )
if (!HasValidTarget())
{
Debug.Log("Failed to start ChaseAction. The target entity wasn't submitted or doesn't exist anymore" );
return false;

}
/// <summary>
/// Returns true if our ActionRequestData came with a valid target. For the ChaseAction, this is pretty liberal (could be friend or foe, could be
/// dead or alive--just needs to be present).
/// </summary>
private bool HasValidTarget()
{
return m_Data.TargetIds != null &&
m_Data.TargetIds.Length > 0 &&
MLAPI.Spawning.SpawnManager.SpawnedObjects.ContainsKey(m_Data.TargetIds[0]);
}
/// <summary>
float dist_to_target = (m_Parent.transform.position - m_Target.transform.position).magnitude;
if( m_Data.Amount > dist_to_target )
float distToTarget2 = (m_Parent.transform.position - m_Target.transform.position).sqrMagnitude;
if( (m_Data.Amount*m_Data.Amount) > distToTarget2 )
{
//we made it! we're done.
Cancel();

public override void Cancel()
{
if( m_Movement != null )
{
m_Movement.CancelMove();
}
m_Movement?.CancelMove();
}
}

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


public override bool Start()
{
m_Parent.NetState.S2C_BroadcastAction(ref Data);
m_Parent.NetState.ServerBroadcastAction(ref Data);
return true;
}

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


using System.Collections;
using System.Collections.Generic;
using BossRoom;
using System;
using MLAPI;
namespace BossRoom.Server

{
[SerializeField]
[Tooltip("Make sure this is included in the NetworkingManager's list of prefabs!")]
private NetworkedObject PlayerPrefab;
private NetworkedObject m_PlayerPrefab;
private NetworkedObject EnemyPrefab;
private NetworkedObject m_EnemyPrefab;
public override GameState ActiveState { get { return GameState.BOSSROOM; } }

private void SpawnPlayer(ulong clientId)
{
var NewPlayer = Instantiate(PlayerPrefab);
NewPlayer.SpawnAsPlayerObject(clientId);
var newPlayer = Instantiate(m_PlayerPrefab);
newPlayer.SpawnAsPlayerObject(clientId);
var NewEnemy = Instantiate(EnemyPrefab);
NewEnemy.SpawnWithOwnership(NetworkingManager.Singleton.LocalClientId);
var newEnemy = Instantiate(m_EnemyPrefab);
newEnemy.SpawnWithOwnership(NetworkingManager.Singleton.LocalClientId);
}
/// <summary>

19
Assets/BossRoom/Scripts/Server/Net/ServerGameNetPortal.cs


/// <summary>
/// Server logic plugin for the GameNetHub. Contains implementations for all GameNetHub's C2S RPCs.
/// </summary>
public class ServerGNHLogic : MonoBehaviour
public class ServerGameNetPortal : MonoBehaviour
private GameNetHub m_Hub;
private GameNetPortal m_Hub;
// note: MonoBehaviours' constructors are *never* called and this should be removed for clarity
public ServerGNHLogic(GameNetHub hub)
{
m_Hub = hub;
m_Hub.NetManager.ConnectionApprovalCallback += this.ApprovalCheck;
}
m_Hub = GetComponent<GameNetHub>();
m_Hub.NetworkStartEvent += this.NetworkStart;
m_Hub = GetComponent<GameNetPortal>();
m_Hub.NetworkStartEvent += NetworkStart;
m_Hub.NetManager.ConnectionApprovalCallback += this.ApprovalCheck;
m_Hub.NetManager.ConnectionApprovalCallback += ApprovalCheck;
}
public void NetworkStart()

this.enabled = false;
enabled = false;
}
else
{

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


[SerializeField]
private float m_MovementSpeed; // TODO [GOMPS-86] this should be assigned based on character definition
private void Awake()
{
m_NavMeshAgent = GetComponent<NavMeshAgent>();
m_NetworkCharacterState = GetComponent<NetworkCharacterState>();
m_CharLogic = GetComponent<ServerCharacter>();
m_Rigidbody = GetComponent<Rigidbody>();
m_NavigationSystem = GameObject.FindGameObjectWithTag(NavigationSystem.NavigationSytemTag).GetComponent<NavigationSystem>();
}
public override void NetworkStart()
{
if (!IsServer)

{
m_NavPath.Clear();
m_MovementState = MovementState.Idle;
}
private void Awake()
{
m_NavMeshAgent = GetComponent<NavMeshAgent>();
m_NetworkCharacterState = GetComponent<NetworkCharacterState>();
m_CharLogic = GetComponent<ServerCharacter>();
m_Rigidbody = GetComponent<Rigidbody>();
m_NavigationSystem = GameObject.FindGameObjectWithTag(NavigationSystem.NavigationSytemTag).GetComponent<NavigationSystem>();
}
private void FixedUpdate()

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


using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
namespace BossRoom

RANGEDTARGETED,
CHASE,
//O__O adding a new ActionLogic branch? Update Action.MakeAction!
//O__O adding a new ActionLogic type? Update Action.MakeAction!
}
/// <summary>

{new ActionDescription{Logic=ActionLogic.CHASE } }
}
}
};
}

/// 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 struct ActionRequestData : MLAPI.Serialization.IBitWritable
{
public ActionType ActionTypeEnum; //the action to play.
public Vector3 Position; //center position of skill, e.g. "ground zero" of a fireball skill.

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.
public bool ShouldQueue; //if true, this action should queue. If false, it should clear all current actions and play immediately.
//O__O Hey, are you adding something? Be sure to update ActionLogicInfo and NetworkCharacterState.SerializeAction, RecvDoAction as well.
//O__O Hey, are you adding something? Be sure to update ActionLogicInfo, as well as the methods below.
public void Read(Stream stream)
{
using (var reader = MLAPI.Serialization.Pooled.PooledBitReader.Get(stream))
{
ActionTypeEnum = (ActionType)reader.ReadInt16();
ShouldQueue = reader.ReadBool();
var Logic = ActionData.ActionDescriptions[ActionTypeEnum][0].Logic;
var Info = ActionData.LogicInfos[Logic];
if (Info.HasPosition)
{
Position = reader.ReadVector3();
}
if (Info.HasDirection)
{
Direction = reader.ReadVector3();
}
if (Info.HasTarget)
{
TargetIds = reader.ReadULongArray();
}
if (Info.HasAmount)
{
Amount = reader.ReadSingle();
}
}
}
public void Write(Stream stream)
{
using (var writer = MLAPI.Serialization.Pooled.PooledBitWriter.Get(stream))
{
ActionLogic Logic = ActionData.ActionDescriptions[ActionTypeEnum][0].Logic;
ActionLogicInfo Info = ActionData.LogicInfos[Logic];
writer.WriteInt16((short)ActionTypeEnum);
writer.WriteBool(ShouldQueue);
if (Info.HasPosition)
{
writer.WriteVector3(Position);
}
if (Info.HasDirection)
{
writer.WriteVector3(Direction);
}
if (Info.HasTarget)
{
writer.WriteULongArray(TargetIds);
}
if (Info.HasAmount)
{
writer.WriteSingle(Amount);
}
}
}
}
}

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


/// in player prefs, so it persists across sessions of the game.
/// </remarks>
///
public class GameNetHub : MonoBehaviour
public class GameNetPortal : MonoBehaviour
{
public GameObject NetworkingManagerGO;

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


/// 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)
public void ClientSendActionRequest(ref ActionRequestData data)
SerializeAction(ref data, stream);
data.Write(stream);
InvokeServerRpcPerformance(RecvDoActionServer, stream);
}
}

/// </summary>
/// <param name="data">The data associated with this Action, including what action type it is.</param>
public void S2C_BroadcastAction(ref ActionRequestData data )
public void ServerBroadcastAction(ref ActionRequestData data )
SerializeAction(ref data, stream);
data.Write(stream);
private void SerializeAction( ref ActionRequestData data