浏览代码

snap from 10200

/main
Peter Andreasen 6 年前
当前提交
80e50805
共有 123 个文件被更改,包括 2357 次插入1678 次删除
  1. 1001
      Assets/Animation/Characters/Robot/Clips/Stand--Poses.anim.fbx
  2. 2
      Assets/Animation/Characters/Robot/Clips/Stand--Poses.anim.fbx.meta
  3. 156
      Assets/Animation/Characters/Robot/Clips/Stand--Poses_Weapon.anim.fbx
  4. 2
      Assets/Animation/Characters/Robot/Clips/Stand--Poses_Weapon.anim.fbx.meta
  5. 993
      Assets/Animation/Characters/Terraformer/Clips/Stand--Poses.anim.fbx
  6. 564
      Assets/Animation/Characters/Terraformer/Clips/Stand--Poses_Weapon.anim.fbx
  7. 34
      Assets/BundledResources/Client/Characters.asset
  8. 36
      Assets/BundledResources/Client/ProjectileRegistry.asset
  9. 34
      Assets/BundledResources/Server/Characters.asset
  10. 36
      Assets/BundledResources/Server/ProjectileRegistry.asset
  11. 34
      Assets/BundledResources/Shared/HitscanEffectRegistry.asset
  12. 42
      Assets/BundledResources/Shared/SpatialEffectRegistry.asset
  13. 483
      Assets/Resources/Prefabs/ClientFrontend.prefab
  14. 2
      Assets/Scripts/Audio/SoundBank.cs
  15. 2
      Assets/Scripts/Audio/SoundDef.cs
  16. 12
      Assets/Scripts/Build/Editor/ScenePostProcessor.cs
  17. 2
      Assets/Scripts/Build/LevelInfo.cs
  18. 55
      Assets/Scripts/Console/Console.cs
  19. 9
      Assets/Scripts/Console/ConsoleGUI.cs
  20. 7
      Assets/Scripts/Console/ConsoleTextWin.cs
  21. 4
      Assets/Scripts/EditorTools/Editor/AnimationTools.cs
  22. 39
      Assets/Scripts/EditorTools/Editor/BuildTools.cs
  23. 2
      Assets/Scripts/EditorTools/Editor/BuildWindow.cs
  24. 2
      Assets/Scripts/EditorTools/Editor/ClearAllReflectionProbesToBlack.cs
  25. 2
      Assets/Scripts/EditorTools/Editor/EnableInstancingOnAllMaterials.cs
  26. 2
      Assets/Scripts/EditorTools/Editor/GameViewTracker.cs
  27. 16
      Assets/Scripts/EditorTools/Editor/HotKeys.cs
  28. 2
      Assets/Scripts/EditorTools/Editor/LaunchWindow.cs
  29. 2
      Assets/Scripts/EditorTools/Editor/NetworkProfilerWindow.cs
  30. 2
      Assets/Scripts/EditorTools/Editor/RevertSelectedPrefabs.cs
  31. 14
      Assets/Scripts/EditorTools/Editor/SaveLoadPoses.cs
  32. 2
      Assets/Scripts/EditorTools/Editor/SceneCamFovFixer.cs
  33. 2
      Assets/Scripts/EditorTools/Editor/TexturePostProcessor.cs
  34. 2
      Assets/Scripts/Game/Core/LevelManager.cs
  35. 8
      Assets/Scripts/Game/Frontend/MainMenu.cs
  36. 2
      Assets/Scripts/Game/Main/PreviewGameLoop.cs
  37. 36
      Assets/Scripts/Game/Main/ServerGameLoop.cs
  38. 2
      Assets/Scripts/Game/Modules/Character/Animation/AnimGraph/AnimGraph_AdditiveAnimation.cs
  39. 2
      Assets/Scripts/Game/Modules/Character/Animation/AnimGraph/AnimGraph_AimDrag.cs
  40. 2
      Assets/Scripts/Game/Modules/Character/Animation/AnimGraph/AnimGraph_AnimatorController.cs
  41. 2
      Assets/Scripts/Game/Modules/Character/Animation/AnimGraph/AnimGraph_Banking.cs
  42. 2
      Assets/Scripts/Game/Modules/Character/Animation/AnimGraph/AnimGraph_CameraNoise.cs
  43. 2
      Assets/Scripts/Game/Modules/Character/Animation/AnimGraph/AnimGraph_DamageReaction.cs
  44. 2
      Assets/Scripts/Game/Modules/Character/Animation/AnimGraph/AnimGraph_Death.cs
  45. 2
      Assets/Scripts/Game/Modules/Character/Animation/AnimGraph/AnimGraph_InAir.cs
  46. 2
      Assets/Scripts/Game/Modules/Character/Animation/AnimGraph/AnimGraph_Jump.cs
  47. 2
      Assets/Scripts/Game/Modules/Character/Animation/AnimGraph/AnimGraph_Move8Dir.cs
  48. 2
      Assets/Scripts/Game/Modules/Character/Animation/AnimGraph/AnimGraph_Simple.cs
  49. 2
      Assets/Scripts/Game/Modules/Character/Animation/AnimGraph/AnimGraph_Sprint.cs
  50. 2
      Assets/Scripts/Game/Modules/Character/Animation/AnimGraph/AnimGraph_SprintBlend.cs
  51. 2
      Assets/Scripts/Game/Modules/Character/Animation/AnimGraph/AnimGraph_Squash.cs
  52. 2
      Assets/Scripts/Game/Modules/Character/Animation/AnimGraph/AnimGraph_Stack.cs
  53. 2
      Assets/Scripts/Game/Modules/Character/Animation/AnimGraph/AnimGraph_Stand.cs
  54. 2
      Assets/Scripts/Game/Modules/Character/Animation/AnimGraph/AnimGraph_StateSelector.cs
  55. 2
      Assets/Scripts/Game/Modules/Character/Animation/AnimGraph/AnimGraph_TwoBoneIk.cs
  56. 2
      Assets/Scripts/Game/Modules/Character/Animation/SkeletonDefinition.cs
  57. 2
      Assets/Scripts/Game/Modules/Character/CharacterTypeDefinition.cs
  58. 2
      Assets/Scripts/Game/Modules/Character/CharacterTypeRegistry.cs
  59. 2
      Assets/Scripts/Game/Modules/Character/Editor/CharacterDebugWindow.cs
  60. 2
      Assets/Scripts/Game/Modules/Character/HeroTypeAsset.cs
  61. 2
      Assets/Scripts/Game/Modules/Character/HeroTypeRegistry.cs
  62. 2
      Assets/Scripts/Game/Modules/Effect/HitscanEffect/HitscanEffectRegistry.cs
  63. 2
      Assets/Scripts/Game/Modules/Effect/HitscanEffect/HitscanEffectTypeDefinition.cs
  64. 2
      Assets/Scripts/Game/Modules/Effect/SpatialEffect/SpatialEffectRegistry.cs
  65. 2
      Assets/Scripts/Game/Modules/Effect/SpatialEffect/SpatialEffectTypeDefinition.cs
  66. 2
      Assets/Scripts/Game/Modules/Item/ItemRegistry.cs
  67. 2
      Assets/Scripts/Game/Modules/Item/ItemTypeDefinition.cs
  68. 2
      Assets/Scripts/Game/Modules/Player/PlayerModuleSettings.cs
  69. 2
      Assets/Scripts/Game/Modules/Projectile/ProjectileEntityFactory.cs
  70. 2
      Assets/Scripts/Game/Modules/Projectile/ProjectileModuleSettings.cs
  71. 2
      Assets/Scripts/Game/Modules/Projectile/ProjectileRegistry.cs
  72. 2
      Assets/Scripts/Game/Modules/Projectile/ProjectileTypeDefinition.cs
  73. 2
      Assets/Scripts/Game/Modules/ReplicatedEntity/ReplicatedEntityRegistry.cs
  74. 2
      Assets/Scripts/Game/Modules/SpectatorCam/SpectatorCamSettings.cs
  75. 2
      Assets/Scripts/Game/Systems/Chat/ChatSystemServer.cs
  76. 2
      Assets/Scripts/Game/Systems/GameMode/GameModeSystemClient.cs
  77. 2
      Assets/Scripts/Game/Systems/GameMode/GameModeSystemSettings.cs
  78. 2
      Assets/Scripts/Game/Systems/GameMode/Modes/GameModeDeathmatch.cs
  79. 4
      Assets/Scripts/Game/Systems/ServerCamera/ServerCameraSystem.cs
  80. 3
      Assets/Scripts/Networking/DeltaReader.cs
  81. 7
      Assets/Scripts/Networking/DeltaWriter.cs
  82. 2
      Assets/Scripts/Networking/NetworkClient.cs
  83. 6
      Assets/Scripts/Networking/NetworkConnection.cs
  84. 2
      Assets/Scripts/Networking/NetworkObjectPool.cs
  85. 2
      Assets/Scripts/Networking/NetworkReader.cs
  86. 4
      Assets/Scripts/Networking/NetworkServer.cs
  87. 7
      Assets/Scripts/Networking/NetworkUtils.cs
  88. 4
      Assets/Scripts/Networking/SequenceBuffer.cs
  89. 6
      Assets/Scripts/Networking/UNet/UNETServerBroadcast.cs
  90. 2
      Assets/Scripts/Utils/BundledResource/AssetRegistryRoot.cs
  91. 4
      Assets/Scripts/Utils/BundledResource/Editor/BundledResourceBuilder.cs
  92. 2
      Assets/Scripts/Utils/DebugPrimitive/DebugPrimitiveSystemSettings.cs
  93. 2
      Assets/Scripts/Utils/EditorHistory/Editor/EditorHistoryWindow.cs
  94. 4
      Assets/Scripts/Utils/GridSnapTool/Editor/GridSnapTool.cs
  95. 2
      Assets/Scripts/Utils/LodSelector/Editor/LodSelector.cs
  96. 2
      Assets/Scripts/Utils/StateHistory/Editor/StateHistorySampler.cs
  97. 2
      Assets/Scripts/Utils/StateHistory/Editor/StateHistoryWindow.cs
  98. 92
      Assets/Sprites/UI/MainMenu/UI_MainMenu_UnityLogo.png
  99. 6
      Assets/Sprites/UI/MainMenu/UI_MainMenu_UnityLogo.png.meta
  100. 143
      Documentation/Animation.md

1001
Assets/Animation/Characters/Robot/Clips/Stand--Poses.anim.fbx
文件差异内容过多而无法显示
查看文件

2
Assets/Animation/Characters/Robot/Clips/Stand--Poses.anim.fbx.meta


name: Poses
takeName: Poses
firstFrame: 0
lastFrame: 5
lastFrame: 15
wrapMode: 0
orientationOffsetY: 0
level: 0

156
Assets/Animation/Characters/Robot/Clips/Stand--Poses_Weapon.anim.fbx
文件差异内容过多而无法显示
查看文件

2
Assets/Animation/Characters/Robot/Clips/Stand--Poses_Weapon.anim.fbx.meta


name: Poses_Weapon
takeName: Poses_Weapon
firstFrame: 0
lastFrame: 5
lastFrame: 15
wrapMode: 0
orientationOffsetY: 0
level: 0

993
Assets/Animation/Characters/Terraformer/Clips/Stand--Poses.anim.fbx
文件差异内容过多而无法显示
查看文件

564
Assets/Animation/Characters/Terraformer/Clips/Stand--Poses_Weapon.anim.fbx
文件差异内容过多而无法显示
查看文件

34
Assets/BundledResources/Client/Characters.asset


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f7bc28c1f6a340344af6a4f64947066d, type: 3}
m_Name: Characters
m_EditorClassIdentifier:
entries:
- {fileID: 11400000, guid: ef10be3110022d547abec5105be5d2f7, type: 2}
- {fileID: 11400000, guid: fcee05c128090e446b5e538ea51e6133, type: 2}
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f7bc28c1f6a340344af6a4f64947066d, type: 3}
m_Name: Characters
m_EditorClassIdentifier:
entries:
- {fileID: 11400000, guid: ef10be3110022d547abec5105be5d2f7, type: 2}
- {fileID: 11400000, guid: fcee05c128090e446b5e538ea51e6133, type: 2}

36
Assets/BundledResources/Client/ProjectileRegistry.asset


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 100f97db1bc7708449e66e21e9f9e94a, type: 3}
m_Name: ProjectileRegistry
m_EditorClassIdentifier:
entries:
- definition: {fileID: 11400000, guid: a86d35bb3c06cd644aeeeb80d91846ea, type: 2}
- definition: {fileID: 11400000, guid: 5245d99c24474a542b6e5142a08a9ecb, type: 2}
- definition: {fileID: 11400000, guid: 0ae4f3eb805dfaa46b0fb17e468206f8, type: 2}
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 100f97db1bc7708449e66e21e9f9e94a, type: 3}
m_Name: ProjectileRegistry
m_EditorClassIdentifier:
entries:
- definition: {fileID: 11400000, guid: a86d35bb3c06cd644aeeeb80d91846ea, type: 2}
- definition: {fileID: 11400000, guid: 5245d99c24474a542b6e5142a08a9ecb, type: 2}
- definition: {fileID: 11400000, guid: 0ae4f3eb805dfaa46b0fb17e468206f8, type: 2}

34
Assets/BundledResources/Server/Characters.asset


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f7bc28c1f6a340344af6a4f64947066d, type: 3}
m_Name: Characters
m_EditorClassIdentifier:
entries:
- {fileID: 11400000, guid: ef10be3110022d547abec5105be5d2f7, type: 2}
- {fileID: 11400000, guid: fcee05c128090e446b5e538ea51e6133, type: 2}
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f7bc28c1f6a340344af6a4f64947066d, type: 3}
m_Name: Characters
m_EditorClassIdentifier:
entries:
- {fileID: 11400000, guid: ef10be3110022d547abec5105be5d2f7, type: 2}
- {fileID: 11400000, guid: fcee05c128090e446b5e538ea51e6133, type: 2}

36
Assets/BundledResources/Server/ProjectileRegistry.asset


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 100f97db1bc7708449e66e21e9f9e94a, type: 3}
m_Name: ProjectileRegistry
m_EditorClassIdentifier:
entries:
- definition: {fileID: 11400000, guid: a86d35bb3c06cd644aeeeb80d91846ea, type: 2}
- definition: {fileID: 11400000, guid: 5245d99c24474a542b6e5142a08a9ecb, type: 2}
- definition: {fileID: 11400000, guid: 0ae4f3eb805dfaa46b0fb17e468206f8, type: 2}
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 100f97db1bc7708449e66e21e9f9e94a, type: 3}
m_Name: ProjectileRegistry
m_EditorClassIdentifier:
entries:
- definition: {fileID: 11400000, guid: a86d35bb3c06cd644aeeeb80d91846ea, type: 2}
- definition: {fileID: 11400000, guid: 5245d99c24474a542b6e5142a08a9ecb, type: 2}
- definition: {fileID: 11400000, guid: 0ae4f3eb805dfaa46b0fb17e468206f8, type: 2}

34
Assets/BundledResources/Shared/HitscanEffectRegistry.asset


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 2e804af01086f8143a38335a2250aa74, type: 3}
m_Name: HitscanEffectRegistry
m_EditorClassIdentifier:
entries:
- {fileID: 11400000, guid: 78c6697ae0f7ed04c8b0b8b59519ae61, type: 2}
- {fileID: 11400000, guid: 0535d66d5ba94b442bb4a6824f0dcfd0, type: 2}
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 2e804af01086f8143a38335a2250aa74, type: 3}
m_Name: HitscanEffectRegistry
m_EditorClassIdentifier:
entries:
- {fileID: 11400000, guid: 78c6697ae0f7ed04c8b0b8b59519ae61, type: 2}
- {fileID: 11400000, guid: 0535d66d5ba94b442bb4a6824f0dcfd0, type: 2}

42
Assets/BundledResources/Shared/SpatialEffectRegistry.asset


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a432273cf0631cc40b8e61f9afc1aa48, type: 3}
m_Name: SpatialEffectRegistry
m_EditorClassIdentifier:
entries:
- {fileID: 11400000, guid: 090f8686190245849b000508ef74ad0e, type: 2}
- {fileID: 11400000, guid: 7110c14a9d2a35b41bf6706daa0a5535, type: 2}
- {fileID: 11400000, guid: 67a2bcb76b270414a9ebb7cdb3717f5d, type: 2}
- {fileID: 11400000, guid: dedadc755e9129a4bb9061ed728ca5cd, type: 2}
- {fileID: 11400000, guid: 7942eed226c6d424596134d04568620f, type: 2}
- {fileID: 11400000, guid: 67a6d542fdddf744684c258d66e99253, type: 2}
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a432273cf0631cc40b8e61f9afc1aa48, type: 3}
m_Name: SpatialEffectRegistry
m_EditorClassIdentifier:
entries:
- {fileID: 11400000, guid: 090f8686190245849b000508ef74ad0e, type: 2}
- {fileID: 11400000, guid: 7110c14a9d2a35b41bf6706daa0a5535, type: 2}
- {fileID: 11400000, guid: 67a2bcb76b270414a9ebb7cdb3717f5d, type: 2}
- {fileID: 11400000, guid: dedadc755e9129a4bb9061ed728ca5cd, type: 2}
- {fileID: 11400000, guid: 7942eed226c6d424596134d04568620f, type: 2}
- {fileID: 11400000, guid: 67a6d542fdddf744684c258d66e99253, type: 2}

483
Assets/Resources/Prefabs/ClientFrontend.prefab


m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 1, y: 0.5}
m_AnchorMax: {x: 1, y: 0.5}
m_AnchoredPosition: {x: 494, y: 0}
m_SizeDelta: {x: 1000, y: 120}
m_AnchoredPosition: {x: 495, y: 0}
m_SizeDelta: {x: 1000, y: 70}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &222409734660394872
CanvasRenderer:

m_PersistentCalls:
m_Calls: []
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
m_text: intro
m_text: INTRO
m_fontAsset: {fileID: 11400000, guid: e8dd31c5cf20e0440b80650c8c2aa947, type: 2}
m_sharedMaterial: {fileID: 21305714255772556, guid: e8dd31c5cf20e0440b80650c8c2aa947, type: 2}
m_fontAsset: {fileID: 11400000, guid: fad1e628092afee439f9d0640a3ace4a, type: 2}
m_sharedMaterial: {fileID: 21037965732074340, guid: fad1e628092afee439f9d0640a3ace4a, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []

m_outlineColor:
serializedVersion: 2
rgba: 4278190080
m_fontSize: 92
m_fontSizeBase: 92
m_fontSize: 50
m_fontSizeBase: 50
m_textAlignment: 257
m_textAlignment: 513
m_characterSpacing: 0
m_characterSpacing: 6.5
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0

m_Component:
- component: {fileID: 224109762556039232}
- component: {fileID: 222083774759077668}
- component: {fileID: 114989075695354682}
- component: {fileID: 114760549733743566}
- component: {fileID: 4130449369157599546}
- component: {fileID: 63961015180784229}

m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 1}
m_AnchorMax: {x: 0.5, y: 1}
m_AnchoredPosition: {x: -384, y: -122}
m_SizeDelta: {x: 128, y: 128}
m_AnchoredPosition: {x: -618, y: 106}
m_SizeDelta: {x: 70, y: 70}
m_Pivot: {x: 0.5, y: 1}
--- !u!222 &222083774759077668
CanvasRenderer:

m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1040315289112802}
m_CullTransparentMesh: 0
--- !u!114 &114989075695354682
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1040315289112802}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
m_Sprite: {fileID: 21300000, guid: 36fd4b8e0a4d0fc479a26546ede998de, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
--- !u!114 &114760549733743566
MonoBehaviour:
m_ObjectHideFlags: 0

m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 2
m_Transition: 1
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_NormalColor: {r: 0.8627451, g: 0.8627451, b: 0.8627451, a: 0.8627451}
m_HighlightedColor: {r: 1, g: 1, b: 1, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1

m_PressedTrigger: Pressed
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 114989075695354682}
m_TargetGraphic: {fileID: 114039307380407634}
m_OnClick:
m_PersistentCalls:
m_Calls:

m_Component:
- component: {fileID: 224806954963159302}
- component: {fileID: 222496155142255870}
- component: {fileID: 114790663271486106}
- component: {fileID: 114879904533767892}
- component: {fileID: 4633030917556982851}
- component: {fileID: 932076077341370610}

m_GameObject: {fileID: 1128611719432524}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1.0000172, y: 1.0000172, z: 1.0000172}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 224759544282688714}
m_Father: {fileID: 224023294723339100}

m_AnchorMax: {x: 0.5, y: 1}
m_AnchoredPosition: {x: -384, y: -249.80005}
m_SizeDelta: {x: 128, y: 128}
m_AnchoredPosition: {x: -618, y: -18}
m_SizeDelta: {x: 70, y: 70}
m_Pivot: {x: 0.5, y: 1}
--- !u!222 &222496155142255870
CanvasRenderer:

m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1128611719432524}
m_CullTransparentMesh: 0
--- !u!114 &114790663271486106
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1128611719432524}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
m_Sprite: {fileID: 21300000, guid: 36fd4b8e0a4d0fc479a26546ede998de, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
--- !u!114 &114879904533767892
MonoBehaviour:
m_ObjectHideFlags: 0

m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 2
m_Transition: 1
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_NormalColor: {r: 0.8627451, g: 0.8627451, b: 0.8627451, a: 0.8627451}
m_HighlightedColor: {r: 1, g: 1, b: 1, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1

m_PressedTrigger: Pressed
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 114790663271486106}
m_TargetGraphic: {fileID: 114519749871694498}
m_OnClick:
m_PersistentCalls:
m_Calls:

m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 0}
m_AnchoredPosition: {x: 0, y: 19.999836}
m_AnchoredPosition: {x: 0, y: 20.000038}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0, y: 1}
--- !u!114 &114635037818496874

m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 1, y: 0.5}
m_AnchorMax: {x: 1, y: 0.5}
m_AnchoredPosition: {x: 494, y: -4}
m_SizeDelta: {x: 1000, y: 120}
m_AnchoredPosition: {x: 494, y: 0}
m_SizeDelta: {x: 1000, y: 70}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &222127173558556510
CanvasRenderer:

m_PersistentCalls:
m_Calls: []
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
m_text: exit game
m_text: EXIT GAME
m_fontAsset: {fileID: 11400000, guid: e8dd31c5cf20e0440b80650c8c2aa947, type: 2}
m_sharedMaterial: {fileID: 21305714255772556, guid: e8dd31c5cf20e0440b80650c8c2aa947, type: 2}
m_fontAsset: {fileID: 11400000, guid: fad1e628092afee439f9d0640a3ace4a, type: 2}
m_sharedMaterial: {fileID: 21037965732074340, guid: fad1e628092afee439f9d0640a3ace4a, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []

m_outlineColor:
serializedVersion: 2
rgba: 4278190080
m_fontSize: 92
m_fontSizeBase: 92
m_fontSize: 50
m_fontSizeBase: 50
m_textAlignment: 257
m_textAlignment: 513
m_characterSpacing: 0
m_characterSpacing: 6.5
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0

- {fileID: 0}
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!1 &1383869785128036
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 224955655769095576}
- component: {fileID: 222686424762416406}
- component: {fileID: 114015092020389576}
m_Layer: 5
m_Name: UI_MainMenu_UnitySpin
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
--- !u!224 &224955655769095576
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1383869785128036}
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_Children: []
m_Father: {fileID: 224229603623420492}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &222686424762416406
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1383869785128036}
m_CullTransparentMesh: 0
--- !u!114 &114015092020389576
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1383869785128036}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 2100000, guid: b142557732eb5ad419e07672090d77cb, type: 2}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
m_Sprite: {fileID: 21300000, guid: 4c3ff384a0324614a873598d8f8d4649, type: 3}
m_Type: 0
m_PreserveAspect: 1
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
--- !u!1 &1389163410279636
GameObject:
m_ObjectHideFlags: 0

m_Component:
- component: {fileID: 224611500205399926}
- component: {fileID: 222698695385665376}
- component: {fileID: 114657131440950386}
- component: {fileID: 114744715032753294}
- component: {fileID: 114146403259090394}
- component: {fileID: 328475589501971106}

m_GameObject: {fileID: 1396668020626518}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1.00001, y: 1.00001, z: 1.00001}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 224723314472919770}
m_Father: {fileID: 224023294723339100}

m_AnchorMax: {x: 0.5, y: 1}
m_AnchoredPosition: {x: -384, y: 6.0002136}
m_SizeDelta: {x: 128, y: 128}
m_AnchoredPosition: {x: -618, y: 230}
m_SizeDelta: {x: 70, y: 70}
m_Pivot: {x: 0.5, y: 1}
--- !u!222 &222698695385665376
CanvasRenderer:

m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1396668020626518}
m_CullTransparentMesh: 0
--- !u!114 &114657131440950386
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1396668020626518}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
m_Sprite: {fileID: 21300000, guid: 36fd4b8e0a4d0fc479a26546ede998de, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
--- !u!114 &114744715032753294
MonoBehaviour:
m_ObjectHideFlags: 0

m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 2
m_Transition: 1
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_NormalColor: {r: 0.8627451, g: 0.8627451, b: 0.8627451, a: 0.8627451}
m_HighlightedColor: {r: 1, g: 1, b: 1, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1

m_PressedTrigger: Pressed
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 114657131440950386}
m_TargetGraphic: {fileID: 114334828250215294}
m_OnClick:
m_PersistentCalls:
m_Calls:

- {fileID: 224565347677887328}
- {fileID: 224228686822707078}
m_Father: {fileID: 224229603623420492}
m_RootOrder: 2
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 1}

m_Component:
- component: {fileID: 224442775038273536}
- component: {fileID: 222676189104355618}
- component: {fileID: 114549717592276096}
- component: {fileID: 114343094750923372}
- component: {fileID: 2040736241185335753}
- component: {fileID: 2963445762205384214}

m_GameObject: {fileID: 1468005845480538}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1.0000172, y: 1.0000172, z: 1.0000172}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 224981979473752832}
m_Father: {fileID: 224023294723339100}

m_AnchorMax: {x: 0.5, y: 1}
m_AnchoredPosition: {x: -383.99997, y: -505.80005}
m_SizeDelta: {x: 128, y: 128}
m_AnchoredPosition: {x: -618, y: -266}
m_SizeDelta: {x: 70, y: 70}
m_Pivot: {x: 0.5, y: 1}
--- !u!222 &222676189104355618
CanvasRenderer:

m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1468005845480538}
m_CullTransparentMesh: 0
--- !u!114 &114549717592276096
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1468005845480538}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
m_Sprite: {fileID: 21300000, guid: 36fd4b8e0a4d0fc479a26546ede998de, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
--- !u!114 &114343094750923372
MonoBehaviour:
m_ObjectHideFlags: 0

m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 2
m_Transition: 1
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_NormalColor: {r: 0.8627451, g: 0.8627451, b: 0.8627451, a: 0.8627451}
m_HighlightedColor: {r: 1, g: 1, b: 1, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1

m_PressedTrigger: Pressed
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 114549717592276096}
m_TargetGraphic: {fileID: 114002382521419848}
m_OnClick:
m_PersistentCalls:
m_Calls:

m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0, y: 0, z: 0}
m_Children:
- {fileID: 224611427667990434}
- {fileID: 224955655769095576}
- {fileID: 224687590558452354}
m_Father: {fileID: 4910277629910146}
m_RootOrder: 3

m_AnchorMin: {x: 1, y: 0.5}
m_AnchorMax: {x: 1, y: 0.5}
m_AnchoredPosition: {x: 494.0056, y: 0}
m_SizeDelta: {x: 1000, y: 120}
m_SizeDelta: {x: 1000, y: 70}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &222348640500201228
CanvasRenderer:

m_PersistentCalls:
m_Calls: []
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
m_text: join game
m_text: JOIN GAME
m_fontAsset: {fileID: 11400000, guid: e8dd31c5cf20e0440b80650c8c2aa947, type: 2}
m_sharedMaterial: {fileID: 21305714255772556, guid: e8dd31c5cf20e0440b80650c8c2aa947, type: 2}
m_fontAsset: {fileID: 11400000, guid: fad1e628092afee439f9d0640a3ace4a, type: 2}
m_sharedMaterial: {fileID: 21037965732074340, guid: fad1e628092afee439f9d0640a3ace4a, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []

m_outlineColor:
serializedVersion: 2
rgba: 4278190080
m_fontSize: 92
m_fontSizeBase: 92
m_fontSize: 50
m_fontSizeBase: 50
m_textAlignment: 257
m_textAlignment: 513
m_characterSpacing: 0
m_characterSpacing: 6.5
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0

m_AnchorMin: {x: 1, y: 0.5}
m_AnchorMax: {x: 1, y: 0.5}
m_AnchoredPosition: {x: 493.99597, y: 0}
m_SizeDelta: {x: 1000, y: 120}
m_SizeDelta: {x: 1000, y: 70}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &222829770787926552
CanvasRenderer:

m_PersistentCalls:
m_Calls: []
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
m_text: options
m_text: OPTIONS
m_fontAsset: {fileID: 11400000, guid: e8dd31c5cf20e0440b80650c8c2aa947, type: 2}
m_sharedMaterial: {fileID: 21305714255772556, guid: e8dd31c5cf20e0440b80650c8c2aa947, type: 2}
m_fontAsset: {fileID: 11400000, guid: fad1e628092afee439f9d0640a3ace4a, type: 2}
m_sharedMaterial: {fileID: 21037965732074340, guid: fad1e628092afee439f9d0640a3ace4a, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []

m_outlineColor:
serializedVersion: 2
rgba: 4278190080
m_fontSize: 92
m_fontSizeBase: 92
m_fontSize: 50
m_fontSizeBase: 50
m_textAlignment: 257
m_textAlignment: 513
m_characterSpacing: 0
m_characterSpacing: 6.5
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0

m_Component:
- component: {fileID: 224311329842401574}
- component: {fileID: 222361601739014404}
- component: {fileID: 114865374112680640}
- component: {fileID: 114027351169161646}
- component: {fileID: 3599851762882674894}
- component: {fileID: 2020417385723002582}

m_GameObject: {fileID: 1700547181528984}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1.0000172, y: 1.0000172, z: 1.0000172}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 224275379094939996}
m_Father: {fileID: 224023294723339100}

m_AnchorMax: {x: 0.5, y: 1}
m_AnchoredPosition: {x: -383.99997, y: -377.80005}
m_SizeDelta: {x: 128, y: 128}
m_AnchoredPosition: {x: -618, y: -142}
m_SizeDelta: {x: 70, y: 70}
m_Pivot: {x: 0.5, y: 1}
--- !u!222 &222361601739014404
CanvasRenderer:

m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1700547181528984}
m_CullTransparentMesh: 0
--- !u!114 &114865374112680640
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1700547181528984}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
m_Sprite: {fileID: 21300000, guid: 36fd4b8e0a4d0fc479a26546ede998de, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
--- !u!114 &114027351169161646
MonoBehaviour:
m_ObjectHideFlags: 0

m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 2
m_Transition: 1
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_NormalColor: {r: 0.8627451, g: 0.8627451, b: 0.8627451, a: 0.8627451}
m_HighlightedColor: {r: 1, g: 1, b: 1, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1

m_PressedTrigger: Pressed
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 114865374112680640}
m_TargetGraphic: {fileID: 114907029047360124}
m_OnClick:
m_PersistentCalls:
m_Calls:

m_Father: {fileID: 224687590558452354}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: -128, y: 580}
m_SizeDelta: {x: 2048, y: 1024}
m_AnchorMin: {x: 0, y: 0.5}
m_AnchorMax: {x: 0, y: 0.5}
m_AnchoredPosition: {x: 432, y: 746}
m_SizeDelta: {x: 441, y: 220}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &222443331855441254
CanvasRenderer:

m_AnchorMin: {x: 1, y: 0.5}
m_AnchorMax: {x: 1, y: 0.5}
m_AnchoredPosition: {x: 493.9961, y: 0}
m_SizeDelta: {x: 1000, y: 120}
m_SizeDelta: {x: 1000, y: 70}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &222939599236478400
CanvasRenderer:

m_PersistentCalls:
m_Calls: []
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
m_text: create game
m_text: CREATE GAME
m_fontAsset: {fileID: 11400000, guid: e8dd31c5cf20e0440b80650c8c2aa947, type: 2}
m_sharedMaterial: {fileID: 21305714255772556, guid: e8dd31c5cf20e0440b80650c8c2aa947, type: 2}
m_fontAsset: {fileID: 11400000, guid: fad1e628092afee439f9d0640a3ace4a, type: 2}
m_sharedMaterial: {fileID: 21037965732074340, guid: fad1e628092afee439f9d0640a3ace4a, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []

m_outlineColor:
serializedVersion: 2
rgba: 4278190080
m_fontSize: 92
m_fontSizeBase: 92
m_fontSize: 50
m_fontSizeBase: 50
m_textAlignment: 257
m_textAlignment: 513
m_characterSpacing: 0
m_characterSpacing: 6.5
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0

m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
m_text: DevBuild
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_fontAsset: {fileID: 11400000, guid: 90e7292c4a00e4b4390f5ae17ca505fe, type: 2}
m_sharedMaterial: {fileID: 21340180728877086, guid: 90e7292c4a00e4b4390f5ae17ca505fe, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []

m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text:
--- !u!1 &1967448853619996
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 224611427667990434}
- component: {fileID: 222862438053792700}
- component: {fileID: 114408327522687340}
m_Layer: 5
m_Name: UI_MainMenu_Background
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
--- !u!224 &224611427667990434
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1967448853619996}
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_Children: []
m_Father: {fileID: 224229603623420492}
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}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &222862438053792700
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1967448853619996}
m_CullTransparentMesh: 0
--- !u!114 &114408327522687340
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1967448853619996}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
m_Sprite: {fileID: 21300000, guid: f5a4d5ac2699e4144b24361902cbae4c, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
--- !u!1 &1976684508413792
GameObject:
m_ObjectHideFlags: 0

m_Father: {fileID: 224687590558452354}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 100, y: 168}
m_SizeDelta: {x: 1000, y: 100}
m_AnchorMin: {x: 0, y: 0.5}
m_AnchorMax: {x: 0, y: 0.5}
m_AnchoredPosition: {x: 303, y: 636}
m_SizeDelta: {x: 1250.4, y: 276.69995}
m_Pivot: {x: 0, y: 1}
--- !u!222 &222364189404344500
CanvasRenderer:

m_PersistentCalls:
m_Calls: []
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
m_text: fps.sample
m_text: FPS Sample
m_fontAsset: {fileID: 11400000, guid: e8dd31c5cf20e0440b80650c8c2aa947, type: 2}
m_sharedMaterial: {fileID: 21305714255772556, guid: e8dd31c5cf20e0440b80650c8c2aa947, type: 2}
m_fontAsset: {fileID: 11400000, guid: fad1e628092afee439f9d0640a3ace4a, type: 2}
m_sharedMaterial: {fileID: 21037965732074340, guid: fad1e628092afee439f9d0640a3ace4a, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []

m_outlineColor:
serializedVersion: 2
rgba: 4278190080
m_fontSize: 72
m_fontSizeBase: 72
m_fontSize: 208
m_fontSizeBase: 208
m_textAlignment: 1025
m_textAlignment: 257
m_isAlignmentEnumConverted: 1
m_characterSpacing: 0
m_wordSpacing: 0

textComponent: {fileID: 114031374689038358}
characterCount: 10
spriteCount: 0
spaceCount: 0
spaceCount: 1
wordCount: 2
linkCount: 0
lineCount: 1

2
Assets/Scripts/Audio/SoundBank.cs


public bool IsValid() { return guid != ""; }
}
[CreateAssetMenu(fileName = "Sound", menuName = "SampleGame/Audio/SoundBank", order = 10000)]
[CreateAssetMenu(fileName = "Sound", menuName = "FPS Sample/Audio/SoundBank", order = 10000)]
public class SoundBank : ScriptableObject
{
public List<SoundDef> soundDefs;

2
Assets/Scripts/Audio/SoundDef.cs


_Count
}
[CreateAssetMenu(fileName = "Sound", menuName = "SampleGame/Audio/SoundDef", order = 10000)]
[CreateAssetMenu(fileName = "Sound", menuName = "FPS Sample/Audio/SoundDef", order = 10000)]
public class SoundDef : ScriptableObject
{
public List<AudioClip> clips;

12
Assets/Scripts/Build/Editor/ScenePostProcessor.cs


public class ScenePostProcessor
{
// TODO (ulfj) : At some point we need to set these when building different configs
// TODO : At some point we need to set these when building different configs
public static LevelManager.BuildType buildType = LevelManager.BuildType.Default;
public static bool isDevelopmentBuild = false;

}
AddBuildInfo();
/*
if(BuildPipeline.isBuildingPlayer)
{
Debug.Log("Baking Occlusion data.");
StaticOcclusionCulling.Compute();
while(StaticOcclusionCulling.isRunning)
{
}
}
*/
}
static void AddBuildInfo()

2
Assets/Scripts/Build/LevelInfo.cs


using UnityEngine;
[CreateAssetMenu(fileName = "LevelInfo", menuName = "SampleGame/Level/LevelInfo")]
[CreateAssetMenu(fileName = "LevelInfo", menuName = "FPS Sample/Level/LevelInfo")]
public class LevelInfo : ScriptableObject
{
public enum LevelType

55
Assets/Scripts/Console/Console.cs


{
void Init();
void Shutdown();
//void Write(bstring message);
void OutputString(string message);
bool IsOpen();
void SetOpen(bool open);

/*
public class bstring
{
private class NoArg { };
public bstring() : this(0, "") { }
public bstring(int capacity) : this(capacity, "") { }
public bstring(string str) : this(str.Length, str) { }
public bstring(int capacity, string value) { _buf = new char[capacity]; value.CopyTo(0, _buf, 0, value.Length); }
public bstring(int capacity, char[] value, int length) { _buf = new char[capacity]; _len = length; System.Array.Copy(value, _buf, length); }
public bstring(bstring other) : this(other.Capacity, other._buf, other.Length) { }
public int Format<T0>(string format, T0 arg0)
{
return StringFormatter.Write<T0, NoArg, NoArg, NoArg, NoArg, NoArg>(ref _buf, 0, format, arg0, null, null, null, null, null);
}
public int Format<T0, T1>(string format, T0 arg0, T1 arg1)
{
return StringFormatter.Write<T0, T1, NoArg, NoArg, NoArg, NoArg>(ref _buf, 0, format, arg0, arg1, null, null, null, null);
}
public int Capacity { get { return _buf.Length; } }
public int Length { get { return _len; } }
public override string ToString()
{
return new string(_buf, 0, _len);
}
char[] _buf;
int _len;
}
*/
public class ConsoleNullUI : IConsoleUI
{
public void ConsoleUpdate()

public void SetOpen(bool open)
{
}
/*
public void Write(bstring message)
{
}
*/
}
public class Console

{
s_ConsoleUI.Shutdown();
}
/*
public static void Write(bstring message)
{
if (s_ConsoleUI != null)
s_ConsoleUI.Write(message);
}
*/
static void OutputString(string message)
{

OutputString(c.Value.name + ": " + c.Value.description);
}
//static bstring buf = new bstring(256);
static void CmdVars(string[] arguments)
{
var varNames = new List<string>(ConfigVar.ConfigVars.Keys);

var cv = ConfigVar.ConfigVars[v];
/*
buf.Format("{0} = {1}", cv.name, cv.Value);
Write(buf);
*/
OutputString(string.Format("{0} = {1}", cv.name, cv.Value));
}
}

9
Assets/Scripts/Console/ConsoleGUI.cs


text_area.text = string.Join("\n", m_Lines.GetRange(start, count).ToArray());
}
/*
public void Write(bstring message)
{
// TODO: make gui work on chars
OutputString(message.ToString());
}
*/
public bool IsOpen()
{
return panel.gameObject.activeSelf;

7
Assets/Scripts/Console/ConsoleTextWin.cs


DrawInputline();
}
/*
public void Write(bstring message)
{
OutputString(message.ToString());
}
*/
public void SetOpen(bool open)
{
}

4
Assets/Scripts/EditorTools/Editor/AnimationTools.cs


/// This is to stop the user from having to update the masks of all dependant animation clips everytime a "Source" mask changes.
/// Fall out of not having resource dependencies, but needing them anyway.
/// </remarks>
[MenuItem("fps.sample/Animation/Update Animation Masks")]
[MenuItem("FPS Sample/Animation/Update Animation Masks")]
static void UpdateAnimationMasks()
{
var guids = AssetDatabase.FindAssets("t:animation");

/// This is to stop the user from having to update the avatar definition of all dependant avatars everytime a "Source" definition changes.
/// Fall out of not having resource dependencies, but needing them anyway.
/// </remarks>
[MenuItem("fps.sample/Animation/Update Avatar References")]
[MenuItem("FPS Sample/Animation/Update Avatar References")]
static void UpdateAvatarReferences()
{
var guids = AssetDatabase.FindAssets("t:model");

39
Assets/Scripts/EditorTools/Editor/BuildTools.cs


return shared;
}
/*
// TODO (ulfj) : What is this function for?
public static void CloudBuild_PostExport(string unityPlayerPath)
{
Debug.Log("CloudBuild_PostExport, Begin. Player path: " + unityPlayerPath);
BuildInternal(true);
var unityPlayerDir = Path.GetDirectoryName(unityPlayerPath);
FileUtil.ReplaceDirectory(SimpleBundleManager.assetBundleFolder, unityPlayerDir + "/" + SimpleBundleManager.assetBundleFolder);
Debug.Log("CloudBuild_PostExport, End");
}
*/
public static void BuildBundles(string bundlePath, BuildTarget target, bool buildBundledAssets, bool buildBundledLevels, bool force = false, List<LevelInfo> buildOnlyLevels = null)
{
Debug.Log("Scene cooking started");

}
}
[MenuItem("fps.sample/BuildSystem/Win64/OpenBuildFolder")]
[MenuItem("FPS Sample/BuildSystem/Win64/OpenBuildFolder")]
public static void OpenBuildFolder()
{
var target = BuildTarget.StandaloneWindows64;

}
}
[MenuItem("fps.sample/BuildSystem/Win64/Deploy")]
[MenuItem("FPS Sample/BuildSystem/Win64/Deploy")]
public static void Deploy()
{
Debug.Log("Window64 Deploying...");

return;
}
[MenuItem("fps.sample/BuildSystem/Win64/PostProcess")]
[MenuItem("FPS Sample/BuildSystem/Win64/PostProcess")]
public static void PostProcess()
{
Debug.Log("Window64 build postprocessing...");

File.WriteAllLines(buildPath + "/server.bat", serverBat);
Debug.Log(" server.bat");
// Build client bat
var clientBat = new string[]
{
"REM start game client",
"start " + executableName
};
File.WriteAllLines(buildPath + "/client.bat", clientBat);
Debug.Log(" client.bat");
// Build empty user.cfg
File.WriteAllLines(buildPath + "/user.cfg", new string[] { });
Debug.Log(" user.cfg");

Debug.Log("Window64 build postprocessing done.");
}
[MenuItem("fps.sample/BuildSystem/Win64/CreateBuildWindows64")]
[MenuItem("FPS Sample/BuildSystem/Win64/CreateBuildWindows64")]
[MenuItem("fps.sample/BuildSystem/Win64/CreateBuildWindows64-IL2CPP")]
[MenuItem("FPS Sample/BuildSystem/Win64/CreateBuildWindows64-IL2CPP")]
public static void CreateBuildWindows64IL2CPP()
{
CreateBuildWindows64(true);

PostProcess();
}
[MenuItem("fps.sample/BuildSystem/PS4/CreateBuildPS4")]
[MenuItem("FPS Sample/BuildSystem/PS4/CreateBuildPS4")]
public static void CreateBuildPS4()
{
var target = BuildTarget.PS4;

throw new Exception("BuildPipeline.BuildPlayer failed: " + res.ToString());
}
[MenuItem("fps.sample/BuildSystem/Linux64/CreateBuildLinux64")]
[MenuItem("FPS Sample/BuildSystem/Linux64/CreateBuildLinux64")]
public static void CreateBuildLinux64()
{
var target = BuildTarget.StandaloneLinux64;

2
Assets/Scripts/EditorTools/Editor/BuildWindow.cs


// TODO reset m_LevelInfos if LevelInfos are added/removed
}
[MenuItem("fps.sample/Windows/Project Tools")]
[MenuItem("FPS Sample/Windows/Project Tools")]
public static void ShowWindow()
{
GetWindow<BuildWindow>(false, "Project Tools", true);

2
Assets/Scripts/EditorTools/Editor/ClearAllReflectionProbesToBlack.cs


public static class ClearAllReflectionProbesToBlack
{
[MenuItem("fps.sample/Lighting/Reflection Probes/Clear to Black")]
[MenuItem("FPS Sample/Lighting/Reflection Probes/Clear to Black")]
static void ClearAllReflection()
{

2
Assets/Scripts/EditorTools/Editor/EnableInstancingOnAllMaterials.cs


public static class EnableInstancingOnAllMaterials
{
[MenuItem("fps.sample/Performance/Enable Instancing on All Materials")]
[MenuItem("FPS Sample/Performance/Enable Instancing on All Materials")]
static void DoIt()
{

2
Assets/Scripts/EditorTools/Editor/GameViewTracker.cs


}
static bool s_Enabled;
const string k_MenuName = "fps.sample/Hotkeys/Toggle game view tracking _%#K";
const string k_MenuName = "FPS Sample/Hotkeys/Toggle game view tracking _%#K";
}

16
Assets/Scripts/EditorTools/Editor/HotKeys.cs


SceneView.onSceneGUIDelegate += OnSceneGUI;
}
[MenuItem("fps.sample/Hotkeys/Lookup asset guid %&l")]
[MenuItem("FPS Sample/Hotkeys/Lookup asset guid %&l")]
static void LookupAsset()
{
LookupAssetWindow.Open();

[MenuItem("fps.sample/Hotkeys/Cut GameObjects _%#X")]
[MenuItem("FPS Sample/Hotkeys/Cut GameObjects _%#X")]
static void Cut()
{
if (Selection.objects.Length > 0)

}
}
[MenuItem("fps.sample/Hotkeys/Paste GameObjects _%#V")]
[MenuItem("FPS Sample/Hotkeys/Paste GameObjects _%#V")]
static void Paste()
{
if (objectsSelectedForCut == null)

objectsSelectedForCut = null;
}
[MenuItem("fps.sample/Hotkeys/Deselect All &d")]
[MenuItem("FPS Sample/Hotkeys/Deselect All &d")]
static void Deselect()
{
Selection.activeGameObject = null;

lastMouseRay = HandleUtility.GUIPointToWorldRay(Event.current.mousePosition);
}
[MenuItem("fps.sample/Hotkeys/Position under mouse %#q")]
[MenuItem("FPS Sample/Hotkeys/Position under mouse %#q")]
static void MousePlace()
{
var transforms = Selection.transforms;

return hit;
}
[MenuItem("fps.sample/Hotkeys/Align and position under mouse %#z")]
[MenuItem("FPS Sample/Hotkeys/Align and position under mouse %#z")]
static void MousePlaceAndAlign()
{
var transforms = Selection.transforms;

}
}
[MenuItem("fps.sample/Hotkeys/Toggle Gizmos _%G")]
[MenuItem("FPS Sample/Hotkeys/Toggle Gizmos _%G")]
static void ToggleGizmos()
{
var etype = typeof(Editor);

}
private static string k_EditorPrefScreenshotPath = "ScreenshotPath";
[MenuItem("fps.sample/Take screenshot")]
[MenuItem("FPS Sample/Take screenshot")]
public static void CaptureScreenshot()
{
var path = UnityEditor.EditorPrefs.GetString(k_EditorPrefScreenshotPath, Application.dataPath.BeforeLast("Assets"));

2
Assets/Scripts/EditorTools/Editor/LaunchWindow.cs


}
[MenuItem("fps.sample/Windows/LaunchWindow")]
[MenuItem("FPS Sample/Windows/LaunchWindow")]
public static void ShowWindow()
{
GetWindow<LaunchWindow>(false, "Launch", true);

2
Assets/Scripts/EditorTools/Editor/NetworkProfilerWindow.cs


}
[MenuItem("fps.sample/Windows/Network Profiler")]
[MenuItem("FPS Sample/Windows/Network Profiler")]
public static void ShowWindow()
{
GetWindow<NetworkProfiler>(false, "Network Profiler", true);

2
Assets/Scripts/EditorTools/Editor/RevertSelectedPrefabs.cs


public class RevertSelectedPrefabs
{
[MenuItem("fps.sample/Revert Selected Prefabs")]
[MenuItem("FPS Sample/Revert Selected Prefabs")]
static void Execute()
{
foreach(var gameObject in Selection.gameObjects)

14
Assets/Scripts/EditorTools/Editor/SaveLoadPoses.cs


{
static string filepath => $"{Path.GetTempPath()}/Skeleton_Pose.json";
[MenuItem("fps.sample/Animation/Skeleton Pose Interop/Load from tmp folder: Bind Pose (Selected)")]
[MenuItem("FPS Sample/Animation/Skeleton Pose Interop/Load from tmp folder: Bind Pose (Selected)")]
[MenuItem("fps.sample/Animation/Skeleton Pose Interop/Load from tmp folder: T-Pose (Selected)")]
[MenuItem("FPS Sample/Animation/Skeleton Pose Interop/Load from tmp folder: T-Pose (Selected)")]
[MenuItem("fps.sample/Animation/Skeleton Pose Interop/Load from tmp folder: Human Pose (Selected)")]
[MenuItem("FPS Sample/Animation/Skeleton Pose Interop/Load from tmp folder: Human Pose (Selected)")]
[MenuItem("fps.sample/Animation/Skeleton Pose Interop/")]
[MenuItem("FPS Sample/Animation/Skeleton Pose Interop/")]
[MenuItem("fps.sample/Animation/Skeleton Pose Interop/Save to tmp folder: Bind Pose (Selected)")]
[MenuItem("FPS Sample/Animation/Skeleton Pose Interop/Save to tmp folder: Bind Pose (Selected)")]
[MenuItem("fps.sample/Animation/Skeleton Pose Interop/Save to tmp folder: T-Pose (Selected)")]
[MenuItem("FPS Sample/Animation/Skeleton Pose Interop/Save to tmp folder: T-Pose (Selected)")]
[MenuItem("fps.sample/Animation/Skeleton Pose Interop/Save to tmp folder: Human Pose (Selected)")]
[MenuItem("FPS Sample/Animation/Skeleton Pose Interop/Save to tmp folder: Human Pose (Selected)")]
static void SaveHumanPose()
{
SavePose(PoseType.humanpose);

2
Assets/Scripts/EditorTools/Editor/SceneCamFovFixer.cs


sceneView.pivot += -Camera.current.transform.forward * currentEvent.delta.y * 0.50f;
}
const string k_MenuName = "fps.sample/Fix sceneview fov";
const string k_MenuName = "FPS Sample/Fix sceneview fov";
static FieldInfo s_OnPreSceneGUIDelegateInfo;
static bool s_Enabled;

2
Assets/Scripts/EditorTools/Editor/TexturePostProcessor.cs


VerifyTextureSettings(Selection.assetGUIDs);
}
[MenuItem("fps.sample/VerifyTextureSettings")]
[MenuItem("FPS Sample/VerifyTextureSettings")]
public static void VerifyTextureSettings()
{
var textures = AssetDatabase.FindAssets("t:texture");

2
Assets/Scripts/Game/Core/LevelManager.cs


if (currentLevel.state == LevelState.Loading)
throw new NotImplementedException("TODO : Implement unload during load");
// TODO (ulfj) : Load empty scene for now
// TODO : Load empty scene for now
SceneManager.LoadScene(1);
SimpleBundleManager.ReleaseLevelAssetBundle(currentLevel.name);

8
Assets/Scripts/Game/Frontend/MainMenu.cs


{
var servername = uiBinding.servername.text;
// TODO (ulfj) : Fix console handling of whitespaces
// TODO : Fix console handling of whitespaces
// TODO (ulfj) : Add commands to set these
// TODO : Add commands to set these
var gamemode = uiBinding.gamemode.options[uiBinding.gamemode.value].text.ToLower();
var maxplayers = uiBinding.maxplayers.options[uiBinding.maxplayers.value].text;

}
else
{
// TODO (ulfj) : We should look to make this more robust but for now we just
// TODO : We should look to make this more robust but for now we just
// kill other processes to avoid running multiple servers locally
var thisProcess = System.Diagnostics.Process.GetCurrentProcess();
var processes = System.Diagnostics.Process.GetProcesses();

data.serverNameField.text = data.info.Name;
data.serverModeField.text = data.info.GameMode;
data.serverPlayersField.text = data.info.Players + "/" + data.info.MaxPlayers;
data.serverPingField.text = "-"; // TODO (ulfj)
data.serverPingField.text = "-";
data.lastUpdated = data.info.LastSeenTime;
}
}

2
Assets/Scripts/Game/Main/PreviewGameLoop.cs


commandWasConsumed = true;
PreviewTickUpdate(); // TODO (ulfj) : Need to sort out what is fixed timestep and what is not
PreviewTickUpdate();
m_GameWorld.nextTickTime += m_GameWorld.worldTime.tickInterval;
}

36
Assets/Scripts/Game/Main/ServerGameLoop.cs


CmdLoad(args);
Game.SetMousePointerLock(false);
m_ServerStartTime = Time.time;
GameDebug.Log("Server initialized");
Console.SetOpen(false);
return true;

public void Update()
{
if(serverRecycleInterval.FloatValue > 0.0f)
{
// Recycle server if time is up and no clients connected
if(m_Clients.Count == 0 && Time.time > m_ServerStartTime + serverRecycleInterval.FloatValue)
{
GameDebug.Log("Server exiting because recycle timeout was hit.");
Console.EnqueueCommandNoHistory("quit");
}
}
if (m_Clients.Count > m_MaxClients)
m_MaxClients = m_Clients.Count;
if(serverQuitWhenEmpty.IntValue > 0 && m_MaxClients > 0 && m_Clients.Count == 0)
{
GameDebug.Log("Server exiting because last client disconnected");
Console.EnqueueCommandNoHistory("quit");
}
m_SimStartTime = Game.Clock.ElapsedTicks;
m_SimStartTimeTick = m_serverGameWorld != null ? m_serverGameWorld.WorldTick : 0;

#if USE_UNET
//m_ServerBroadcast.gameInfo.levelname = Game.game.levelManager.currentLevel.name;
//m_ServerBroadcast.gameInfo.gamemode = "Deathmatch"; // TODO (ulfj) : Report game mode when we have more than one
//m_ServerBroadcast.gameInfo.gamemode = "Deathmatch";
//m_ServerBroadcast.UpdateGameInfo();
#endif
}

if (m_serverGameWorld != null && m_SimStartTimeTick != m_serverGameWorld.WorldTick)
{
// Only update sim time if we actually simulatated
// TODO (ulfj) : remove this when targetFrameRate works the way we want it.
// TODO : remove this when targetFrameRate works the way we want it.
m_LastSimTime = Game.Clock.GetTicksDeltaAsMilliseconds(m_SimStartTime);
}

void OnDebugDrawGameloopInfo()
{
// TODO (ulfj) : Reimplement this
//DebugOverlay.Write(2,2,"Server Gameloop Info:");
//var y = 3;

[ConfigVar(Name = "server.port", DefaultValue = "7913", Description = "Port listened to by server")]
static ConfigVar serverPort;
[ConfigVar(Name = "server.quitwhenempty", DefaultValue = "0", Description = "If enabled, quit when last client disconnects.")]
static ConfigVar serverQuitWhenEmpty;
[ConfigVar(Name = "server.recycleinterval", DefaultValue = "0", Description = "Exit when N seconds old AND when 0 players. 0 means never.")]
static ConfigVar serverRecycleInterval;
[ConfigVar(Name = "server.sqp_port", DefaultValue = "7912", Description = "Port used for server query protocol")]
static ConfigVar serverSQPPort;

[ConfigVar(Name = "server.servername", DefaultValue = "", Description = "Servername")]
static ConfigVar serverServerName;
float m_ServerStartTime;
int m_MaxClients;
}

2
Assets/Scripts/Game/Modules/Character/Animation/AnimGraph/AnimGraph_AdditiveAnimation.cs


using UnityEngine.Animations;
using UnityEngine.Playables;
[CreateAssetMenu(fileName = "AdditiveAnimation", menuName = "SampleGame/Animation/AnimGraph/AdditiveAnimation")]
[CreateAssetMenu(fileName = "AdditiveAnimation", menuName = "FPS Sample/Animation/AnimGraph/AdditiveAnimation")]
public class AnimGraph_AdditiveAnimation : AnimGraphAsset
{
public AnimationClip clip;

2
Assets/Scripts/Game/Modules/Character/Animation/AnimGraph/AnimGraph_AimDrag.cs


using UnityEngine.Experimental.Animations;
using UnityEngine.Playables;
[CreateAssetMenu(fileName = "AimDrag", menuName = "SampleGame/Animation/AnimGraph/AimDrag")]
[CreateAssetMenu(fileName = "AimDrag", menuName = "FPS Sample/Animation/AnimGraph/AimDrag")]
public class AnimGraph_AimDrag : AnimGraphAsset
{
public string weaponHandBone;

2
Assets/Scripts/Game/Modules/Character/Animation/AnimGraph/AnimGraph_AnimatorController.cs


using UnityEngine;
using UnityEngine.Playables;
[CreateAssetMenu(fileName = "AnimatorController", menuName = "SampleGame/Animation/AnimGraph/AnimatorController")]
[CreateAssetMenu(fileName = "AnimatorController", menuName = "FPS Sample/Animation/AnimGraph/AnimatorController")]
public class AnimGraph_AnimatorController : AnimGraphAsset
{
public RuntimeAnimatorController animatorController;

2
Assets/Scripts/Game/Modules/Character/Animation/AnimGraph/AnimGraph_Banking.cs


using UnityEngine.Experimental.Animations;
using UnityEngine.Playables;
[CreateAssetMenu(fileName = "Banking", menuName = "SampleGame/Animation/AnimGraph/Banking")]
[CreateAssetMenu(fileName = "Banking", menuName = "FPS Sample/Animation/AnimGraph/Banking")]
public class AnimGraph_Banking : AnimGraphAsset
{
public string bankTransform;

2
Assets/Scripts/Game/Modules/Character/Animation/AnimGraph/AnimGraph_CameraNoise.cs


using UnityEngine.Experimental.Animations;
using UnityEngine.Playables;
[CreateAssetMenu(fileName = "CameraNoise", menuName = "SampleGame/Animation/AnimGraph/CameraNoise")]
[CreateAssetMenu(fileName = "CameraNoise", menuName = "FPS Sample/Animation/AnimGraph/CameraNoise")]
public class AnimGraph_CameraNoise : AnimGraphAsset
{
public string cameraBone;

2
Assets/Scripts/Game/Modules/Character/Animation/AnimGraph/AnimGraph_DamageReaction.cs


using UnityEngine.Animations;
using UnityEngine.Playables;
[CreateAssetMenu(fileName = "DamageReaction", menuName = "SampleGame/Animation/AnimGraph/DamageReaction")]
[CreateAssetMenu(fileName = "DamageReaction", menuName = "FPS Sample/Animation/AnimGraph/DamageReaction")]
public class AnimGraph_DamageReaction : AnimGraphAsset
{
[Tooltip("Reaction animations starting from S (damage comming from front) going clockwise")]

2
Assets/Scripts/Game/Modules/Character/Animation/AnimGraph/AnimGraph_Death.cs


using UnityEngine.Animations;
using UnityEngine.Playables;
[CreateAssetMenu(fileName = "Death", menuName = "SampleGame/Animation/AnimGraph/Death")]
[CreateAssetMenu(fileName = "Death", menuName = "FPS Sample/Animation/AnimGraph/Death")]
public class AnimGraph_Death : AnimGraphAsset
{
public AnimationClip[] anims;

2
Assets/Scripts/Game/Modules/Character/Animation/AnimGraph/AnimGraph_InAir.cs


using UnityEngine.Playables;
using UnityEngine.Animations;
[CreateAssetMenu(fileName = "InAir", menuName = "SampleGame/Animation/AnimGraph/InAir")]
[CreateAssetMenu(fileName = "InAir", menuName = "FPS Sample/Animation/AnimGraph/InAir")]
public class AnimGraph_InAir : AnimGraphAsset
{
public AnimationClip animInAir;

2
Assets/Scripts/Game/Modules/Character/Animation/AnimGraph/AnimGraph_Jump.cs


using UnityEngine.Animations;
using UnityEngine.Playables;
[CreateAssetMenu(fileName = "Jump", menuName = "SampleGame/Animation/AnimGraph/Jump")]
[CreateAssetMenu(fileName = "Jump", menuName = "FPS Sample/Animation/AnimGraph/Jump")]
public class AnimGraph_Jump : AnimGraphAsset
{
public AnimationClip animJump;

2
Assets/Scripts/Game/Modules/Character/Animation/AnimGraph/AnimGraph_Move8Dir.cs


using UnityEngine.Playables;
using UnityEngine.Profiling;
[CreateAssetMenu(fileName = "Move8Dir", menuName = "SampleGame/Animation/AnimGraph/Move8Dir")]
[CreateAssetMenu(fileName = "Move8Dir", menuName = "FPS Sample/Animation/AnimGraph/Move8Dir")]
public class AnimGraph_Move8Dir : AnimGraphAsset
{
public float animMovePlaySpeed = 1.0f;

2
Assets/Scripts/Game/Modules/Character/Animation/AnimGraph/AnimGraph_Simple.cs


using UnityEngine.Animations;
using UnityEngine.Playables;
[CreateAssetMenu(fileName = "Simple", menuName = "SampleGame/Animation/AnimGraph/Simple")]
[CreateAssetMenu(fileName = "Simple", menuName = "FPS Sample/Animation/AnimGraph/Simple")]
public class AnimGraph_Simple : AnimGraphAsset
{
public AnimationClip animIdle;

2
Assets/Scripts/Game/Modules/Character/Animation/AnimGraph/AnimGraph_Sprint.cs


using UnityEngine.Animations;
using UnityEngine.Profiling;
[CreateAssetMenu(fileName = "Sprint", menuName = "SampleGame/Animation/AnimGraph/Sprint")]
[CreateAssetMenu(fileName = "Sprint", menuName = "FPS Sample/Animation/AnimGraph/Sprint")]
public class AnimGraph_Sprint : AnimGraphAsset
{
public AnimationClip animMoveNW;

2
Assets/Scripts/Game/Modules/Character/Animation/AnimGraph/AnimGraph_SprintBlend.cs


using UnityEngine.Playables;
using UnityEngine.Profiling;
[CreateAssetMenu(fileName = "SprintBlend", menuName = "SampleGame/Animation/AnimGraph/SprintBlend")]
[CreateAssetMenu(fileName = "SprintBlend", menuName = "FPS Sample/Animation/AnimGraph/SprintBlend")]
public class AnimGraph_SprintBlend : AnimGraphAsset
{
public AnimGraphAsset runTemplate;

2
Assets/Scripts/Game/Modules/Character/Animation/AnimGraph/AnimGraph_Squash.cs


using UnityEngine.Experimental.Animations;
using UnityEngine.Playables;
[CreateAssetMenu(fileName = "Squash", menuName = "SampleGame/Animation/AnimGraph/Squash")]
[CreateAssetMenu(fileName = "Squash", menuName = "FPS Sample/Animation/AnimGraph/Squash")]
public class AnimGraph_Squash : AnimGraphAsset
{
public AnimationClip animSquash;

2
Assets/Scripts/Game/Modules/Character/Animation/AnimGraph/AnimGraph_Stack.cs


using UnityEngine;
using UnityEngine.Playables;
[CreateAssetMenu(fileName = "Stack", menuName = "SampleGame/Animation/AnimGraph/Stack")]
[CreateAssetMenu(fileName = "Stack", menuName = "FPS Sample/Animation/AnimGraph/Stack")]
public class AnimGraph_Stack : AnimGraphAsset
{
public List<AnimGraphAsset> rootNodes = new List<AnimGraphAsset>();

2
Assets/Scripts/Game/Modules/Character/Animation/AnimGraph/AnimGraph_Stand.cs


using UnityEngine.Profiling;
using Debug = UnityEngine.Debug;
[CreateAssetMenu(fileName = "Stand", menuName = "SampleGame/Animation/AnimGraph/Stand")]
[CreateAssetMenu(fileName = "Stand", menuName = "FPS Sample/Animation/AnimGraph/Stand")]
public class AnimGraph_Stand : AnimGraphAsset
{
[ConfigVar(Name = "char.standik", DefaultValue = "1", Description = "Enable stand foot ik")]

2
Assets/Scripts/Game/Modules/Character/Animation/AnimGraph/AnimGraph_StateSelector.cs


using UnityEngine.Playables;
[CreateAssetMenu(fileName = "StateSelector", menuName = "SampleGame/Animation/AnimGraph/StateSelector")]
[CreateAssetMenu(fileName = "StateSelector", menuName = "FPS Sample/Animation/AnimGraph/StateSelector")]
public class AnimGraph_StateSelector : AnimGraphAsset
{
// TODO remove this and use character locomotion state

2
Assets/Scripts/Game/Modules/Character/Animation/AnimGraph/AnimGraph_TwoBoneIk.cs


using UnityEngine.Experimental.Animations;
using UnityEngine.Playables;
[CreateAssetMenu(fileName = "TwoBoneIk", menuName = "SampleGame/Animation/AnimGraph/TwoBoneIk")]
[CreateAssetMenu(fileName = "TwoBoneIk", menuName = "FPS Sample/Animation/AnimGraph/TwoBoneIk")]
public class AnimGraph_TwoBoneIk : AnimGraphAsset
{
public string targetBone;

2
Assets/Scripts/Game/Modules/Character/Animation/SkeletonDefinition.cs


using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu(menuName="SampleGame/Animation/SkeletonDefinition", fileName="SkeletonDefinition")]
[CreateAssetMenu(menuName="FPS Sample/Animation/SkeletonDefinition", fileName="SkeletonDefinition")]
public class SkeletonDefinition : ScriptableObject
{
public Avatar avatar;

2
Assets/Scripts/Game/Modules/Character/CharacterTypeDefinition.cs


using UnityEditor;
#endif
[CreateAssetMenu(fileName = "CharacterTypeDefinition", menuName = "SampleGame/Character/TypeDefinition")]
[CreateAssetMenu(fileName = "CharacterTypeDefinition", menuName = "FPS Sample/Character/TypeDefinition")]
public class CharacterTypeDefinition : DynamicEnum, IReplicatedEntityProvider
{
public WeakAssetReference prefabServer;

2
Assets/Scripts/Game/Modules/Character/CharacterTypeRegistry.cs


using UnityEditor;
#endif
[CreateAssetMenu(menuName = "SampleGame/Character/TypeRegistry", fileName = "CharacterTypeRegistry")]
[CreateAssetMenu(menuName = "FPS Sample/Character/TypeRegistry", fileName = "CharacterTypeRegistry")]
public class CharacterTypeRegistry : RegistryBase
{
public CharacterTypeDefinition[] entries;

2
Assets/Scripts/Game/Modules/Character/Editor/CharacterDebugWindow.cs


private static DamageInfo damageInfo;
[MenuItem("fps.sample/Windows/Character Debug")]
[MenuItem("FPS Sample/Windows/Character Debug")]
public static void ShowWindow()
{
GetWindow<CharacterDebugWindow>(false, "Char Debug", true);

2
Assets/Scripts/Game/Modules/Character/HeroTypeAsset.cs


using System;
using UnityEngine;
[CreateAssetMenu(fileName = "HeroType", menuName = "SampleGame/Hero/HeroType")]
[CreateAssetMenu(fileName = "HeroType", menuName = "FPS Sample/Hero/HeroType")]
public class HeroTypeAsset : ScriptableObject
{
[Serializable]

2
Assets/Scripts/Game/Modules/Character/HeroTypeRegistry.cs


using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu(menuName = "SampleGame/Hero/HeroTypeRegistry", fileName = "HeroTypeRegistry")]
[CreateAssetMenu(menuName = "FPS Sample/Hero/HeroTypeRegistry", fileName = "HeroTypeRegistry")]
public class HeroTypeRegistry : RegistryBase
{
public HeroTypeAsset[] entries;

2
Assets/Scripts/Game/Modules/Effect/HitscanEffect/HitscanEffectRegistry.cs


using UnityEngine;
[CreateAssetMenu(menuName = "SampleGame/Effect/HitscanEffectRegistry", fileName = "HitscanEffectRegistry")]
[CreateAssetMenu(menuName = "FPS Sample/Effect/HitscanEffectRegistry", fileName = "HitscanEffectRegistry")]
public class HitscanEffectRegistry : Registry<HitscanEffectTypeDefinition>
{
}

2
Assets/Scripts/Game/Modules/Effect/HitscanEffect/HitscanEffectTypeDefinition.cs


using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu(fileName = "HitscanEffectTypeDefinition", menuName = "SampleGame/Effect/HitscanEffectTypeDefinition")]
[CreateAssetMenu(fileName = "HitscanEffectTypeDefinition", menuName = "FPS Sample/Effect/HitscanEffectTypeDefinition")]
public class HitscanEffectTypeDefinition : DynamicEnum
{
public WeakAssetReference prefab;

2
Assets/Scripts/Game/Modules/Effect/SpatialEffect/SpatialEffectRegistry.cs


using UnityEditor;
#endif
[CreateAssetMenu(menuName = "SampleGame/Effect/SpatialEffectRegistry", fileName = "SpatialEffectRegistry")]
[CreateAssetMenu(menuName = "FPS Sample/Effect/SpatialEffectRegistry", fileName = "SpatialEffectRegistry")]
public class SpatialEffectRegistry : Registry<SpatialEffectTypeDefinition>
{
}

2
Assets/Scripts/Game/Modules/Effect/SpatialEffect/SpatialEffectTypeDefinition.cs


using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu(fileName = "SpatialEffectTypeDefinition", menuName = "SampleGame/Effect/SpatialEffectTypeDefinition")]
[CreateAssetMenu(fileName = "SpatialEffectTypeDefinition", menuName = "FPS Sample/Effect/SpatialEffectTypeDefinition")]
public class SpatialEffectTypeDefinition : DynamicEnum
{
public WeakAssetReference prefab;

2
Assets/Scripts/Game/Modules/Item/ItemRegistry.cs


using UnityEngine;
[CreateAssetMenu(menuName = "SampleGame/Item/TypeRegistry", fileName = "ItemTypeRegistry")]
[CreateAssetMenu(menuName = "FPS Sample/Item/TypeRegistry", fileName = "ItemTypeRegistry")]
public class ItemRegistry : Registry<ItemTypeDefinition>
{
public int GetIndexByClientGUID(string guid)

2
Assets/Scripts/Game/Modules/Item/ItemTypeDefinition.cs


using UnityEditor;
#endif
[CreateAssetMenu(fileName = "ItemTypeDefinition", menuName = "SampleGame/Item/TypeDefinition")]
[CreateAssetMenu(fileName = "ItemTypeDefinition", menuName = "FPS Sample/Item/TypeDefinition")]
public class ItemTypeDefinition : DynamicEnum, IReplicatedEntityProvider
{
public WeakAssetReference prefabServer;

2
Assets/Scripts/Game/Modules/Player/PlayerModuleSettings.cs


using UnityEngine;
[CreateAssetMenu(fileName = "PlayerModuleSettings", menuName = "SampleGame/Player/PlayerSystemSettings")]
[CreateAssetMenu(fileName = "PlayerModuleSettings", menuName = "FPS Sample/Player/PlayerSystemSettings")]
public class PlayerModuleSettings : ScriptableObject
{
public WeakAssetReference playerStatePrefab;

2
Assets/Scripts/Game/Modules/Projectile/ProjectileEntityFactory.cs


using Unity.Entities;
using UnityEngine;
[CreateAssetMenu(fileName = "ProjectileEntityFactory",menuName = "SampleGame/Projectile/ProjectileEntityFactory")]
[CreateAssetMenu(fileName = "ProjectileEntityFactory",menuName = "FPS Sample/Projectile/ProjectileEntityFactory")]
public class ProjectileEntityFactory : ReplicatedEntityFactor
{
public override Entity Create(EntityManager entityManager)

2
Assets/Scripts/Game/Modules/Projectile/ProjectileModuleSettings.cs


using UnityEngine;
[CreateAssetMenu(fileName = "ProjectileModuleSettings", menuName = "SampleGame/Projectile/ProjectileSystemSettings")]
[CreateAssetMenu(fileName = "ProjectileModuleSettings", menuName = "FPS Sample/Projectile/ProjectileSystemSettings")]
public class ProjectileModuleSettings : ScriptableObject
{
// public WeakAssetReference projectilePrefab;

2
Assets/Scripts/Game/Modules/Projectile/ProjectileRegistry.cs


using UnityEditor;
#endif
[CreateAssetMenu(menuName = "SampleGame/Projectile/ProjectileRegistry", fileName = "ProjectileRegistry")]
[CreateAssetMenu(menuName = "FPS Sample/Projectile/ProjectileRegistry", fileName = "ProjectileRegistry")]
public class ProjectileRegistry : RegistryBase
{
[System.Serializable]

2
Assets/Scripts/Game/Modules/Projectile/ProjectileTypeDefinition.cs


public SplashDamageSettings splashDamage;
}
[CreateAssetMenu(fileName = "ProjectileTypeDefinition", menuName = "SampleGame/Projectile/ProjectileTypeDefinition")]
[CreateAssetMenu(fileName = "ProjectileTypeDefinition", menuName = "FPS Sample/Projectile/ProjectileTypeDefinition")]
public class ProjectileTypeDefinition : DynamicEnum
{
public ProjectileSettings properties;

2
Assets/Scripts/Game/Modules/ReplicatedEntity/ReplicatedEntityRegistry.cs


[CreateAssetMenu(fileName = "ReplicatedEntityRegistry",
menuName = "SampleGame/ReplicatedEntity/ReplicatedEntityRegistry")]
menuName = "FPS Sample/ReplicatedEntity/ReplicatedEntityRegistry")]
public class ReplicatedEntityRegistry : RegistryBase
{
[Serializable]

2
Assets/Scripts/Game/Modules/SpectatorCam/SpectatorCamSettings.cs


using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu(fileName = "SpectatorCamSettings", menuName = "SampleGame/SpectatorCam/SpectatorCamSettings")]
[CreateAssetMenu(fileName = "SpectatorCamSettings", menuName = "FPS Sample/SpectatorCam/SpectatorCamSettings")]
public class SpectatorCamSettings : ScriptableObject
{
public WeakAssetReference spectatorCamPrefab;

2
Assets/Scripts/Game/Systems/Chat/ChatSystemServer.cs


public class ChatSystemServer
{
// TODO (ulfj) : The integration is annoying because we don't have a proper permanent place for player
// TODO : The integration is annoying because we don't have a proper permanent place for player
// info (world is destroyed for each level). We should try to make this smoother
public ChatSystemServer(Dictionary<int, ServerGameLoop.ClientInfo> clients, NetworkServer networkServer)
{

2
Assets/Scripts/Game/Systems/GameMode/GameModeSystemClient.cs


m_OverlayUI.Clear();
}
// TODO (ulfj) : We need to fix up these dependencies
// TODO : We need to fix up these dependencies
public void SetLocalPlayerId(int playerId)
{
m_LocalPlayerId = playerId;

2
Assets/Scripts/Game/Systems/GameMode/GameModeSystemSettings.cs


using UnityEngine;
[CreateAssetMenu(fileName = "GameModeSystemSettings", menuName = "SampleGame/GameMode/GameModeSystemSettings")]
[CreateAssetMenu(fileName = "GameModeSystemSettings", menuName = "FPS Sample/GameMode/GameModeSystemSettings")]
public class GameModeSystemSettings : ScriptableObject
{
public WeakAssetReference gameModePrefab;

2
Assets/Scripts/Game/Systems/GameMode/Modes/GameModeDeathmatch.cs


winTeam = teams[0].score > teams[1].score ? 0 : teams[0].score < teams[1].score ? 1 : -1;
}
// TODO (ulfj) : For now we just kill all players when we restart
// TODO : For now we just kill all players when we restart
// but we should change it to something less dramatic like taking
// control away from the player or something
for (int i = 0, c = players.Length; i < c; i++)

4
Assets/Scripts/Game/Systems/ServerCamera/ServerCameraSystem.cs


public ServerCameraSystem(GameWorld gameWorld)
{
// TODO (ulfj) : It would be better if we had a more appropriate way of
// finding all objects of a given type with the current level
// NOTE (ulfj) : We should look at this when we have figured out the final
// NOTE : We should look at this when we have figured out the final
// way that cameras should work
GameObject cameraGO = GameObject.Instantiate<GameObject>(Resources.Load<GameObject>("Prefabs/ServerCam"));
m_Camera = cameraGO.GetComponent<Camera>();

3
Assets/Scripts/Networking/DeltaReader.cs


case NetworkSchema.FieldType.Quaternion:
{
// TODO (ulfj) : Figure out what to do with quaternions
uint bx = baselineStream.ReadUInt32();
uint by = baselineStream.ReadUInt32();
uint bz = baselineStream.ReadUInt32();

case NetworkSchema.FieldType.String:
case NetworkSchema.FieldType.ByteArray:
{
// TODO (ulfj) : Do a better job with deltaing strings and buffers
// TODO : Do a better job with deltaing strings and buffers
if (!skip)
{
baselineStream.SkipByteArray(field.arraySize);

7
Assets/Scripts/Networking/DeltaWriter.cs


case NetworkSchema.FieldType.Quaternion:
{
// TODO (ulfj) : Figure out what to do with quaternions
uint vx = inputStream.ReadBits(field.bits);
uint vy = inputStream.ReadBits(field.bits);
uint vz = inputStream.ReadBits(field.bits);

case NetworkSchema.FieldType.String:
case NetworkSchema.FieldType.ByteArray:
{
// TODO (ulfj) : Do a better job of string and buffer diffs?
// TODO : Do a better job of string and buffer diffs?
byte[] valueBuffer;
int valueOffset;
int valueLength;

case NetworkSchema.FieldType.Quaternion:
{
// TODO (ulfj) : Figure out what to do with quaternions
// TODO : Figure out what to do with quaternions
uint vx = inputStream.ReadBits(field.bits);
uint vy = inputStream.ReadBits(field.bits);
uint vz = inputStream.ReadBits(field.bits);

case NetworkSchema.FieldType.String:
case NetworkSchema.FieldType.ByteArray:
{
// TODO (ulfj) : Do a better job of string and buffer diffs?
// TODO : Do a better job of string and buffer diffs?
byte[] valueBuffer;
int valueOffset;
int valueLength;

2
Assets/Scripts/Networking/NetworkClient.cs


public void Shutdown()
{
// TODO (ulfj) : Send disconnect?
Disconnect();
}

6
Assets/Scripts/Networking/NetworkConnection.cs


// means the package (inSequenceNew-15 and before) will be considered lost (either it will never come or we will
// reject it as being stale if we get it at a later point in time)
var distance = inSequenceNew - inSequence;
for (var i = 0; i < Math.Min(distance, 15); ++i) // TODO (ulfj) : Fix this contant
for (var i = 0; i < Math.Min(distance, 15); ++i) // TODO : Fix this contant
{
if ((inSequenceAckMask & 1 << (15 - i)) == 0)
counters.packagesLostIn++;

// of the ack mask, so we don't have to worry about resending messages as long as we do that
// after the original package has fallen off the ack mask.
var distance = inSequence - inSequenceNew;
if (distance > 15) // TODO (ulfj) : Fix this constant
if (distance > 15) // TODO : Fix this constant
{
counters.packagesStaleIn++;
return 0;

// Events
Dictionary<ushort, NetworkEventType> eventTypesIn = new Dictionary<ushort, NetworkEventType>();
List<NetworkEventType> ackedEventTypes = new List<NetworkEventType>();
public List<NetworkEvent> eventsOut = new List<NetworkEvent>(); // TODO (ulfj) : Should be private (content calc issue)
public List<NetworkEvent> eventsOut = new List<NetworkEvent>(); // TODO : Should be private (content calc issue)
}

2
Assets/Scripts/Networking/NetworkObjectPool.cs


using System.Collections.Generic;
using UnityEngine;
// TODO (ulfj) : Optimize internal data structures
// TODO : Optimize internal data structures
public class NetworkObjectPool<T> where T : class, new()
{
public int allocated { get { return m_Allocated.Count; } }

2
Assets/Scripts/Networking/NetworkReader.cs


public bool ReadCheck()
{
// TODO (ulfj) : Add conditional so we can ship without this
// TODO : Add conditional so we can ship without this
var check = m_Input.ReadUInt32();
return check == 0x12345678;
}

4
Assets/Scripts/Networking/NetworkServer.cs


// we find one. (This will happen if the client determines that it has gotten too
// far ahead and recalculate the client time.)
// TODO (ulfj) : We should be able to do this in a smarter way
// TODO : We should be able to do this in a smarter way
for (var sequence = commandSequenceProcessed + 1; sequence <= commandSequenceIn; ++sequence)
{
CommandInfo previous;

// so if the client baseline is older than that we cannot generate the snapshot. Furthermore, we require
// the client to keep the last N updates for any entity, so even though the client might have much older
// baselines for some entities we cannot guarantee it.
// TODO (ulfj) : Can we make this simpler?
// TODO : Can we make this simpler?
var haveBaseline = maxSnapshotAck != 0 && owner.m_ServerSequence - maxSnapshotAck < NetworkConfig.snapshotDeltaCacheSize - 2; // -2 because we want 3 baselines!

7
Assets/Scripts/Networking/NetworkUtils.cs


public static void MemCopy(byte[] src, int srcIndex, byte[] dst, int dstIndex, int count)
{
// TODO (ulfj) : Right now we cannot have unsafe code and be able to debug the project
// TODO : Right now we cannot have unsafe code and be able to debug the project
// at the same time because the generated project file doesn't add the allow unsafe
// block, so do the
for (int i = 0; i < count; ++i)

public static int MemCmp(byte[] a, int aIndex, byte[] b, int bIndex, int count)
{
// TODO (ulfj) : Right now we cannot have unsafe code and be able to debug the project
// TODO : Right now we cannot have unsafe code and be able to debug the project
// at the same time because the generated project file doesn't add the allow unsafe
// block, so do the
for (int i = 0; i < count; ++i)

}
catch (System.Exception e)
{
// NOTE (ulfj) : For some reason this can throw marshal exception in the interop
// NOTE : For some reason this can throw marshal exception in the interop
// TODO (ulfj) : Verify that this is only happening on my computer
GameDebug.Log("Error " + e.Message + " while getting IP properties for " + item.Description);
}
}

4
Assets/Scripts/Networking/SequenceBuffer.cs


using UnityEngine;
// TODO (ulfj) : Flip back to use ushort
// TODO : Flip back to use ushort
public static class Sequence
{

return (ushort)(value & 0xffff);
}
// TODO (ulfj) : We can probably implement this more elegantly?
// TODO : We can probably implement this more elegantly?
public static int FromUInt16(ushort value, int baseline)
{
ushort b = ToUInt16(baseline);

6
Assets/Scripts/Networking/UNet/UNETServerBroadcast.cs


public class UNETServerBroadcast
{
// TODO (ulfj) : The UNET broadcast functionality is not really suited to send server information like level, player count etc.
// that change over time but until we implement an alternative server info handshake that allows clients to query game info
// from the server this is the best we have.
public struct GameInfo
{
public uint token;

if (m_Broadcasting)
{
// TODO (ulfj) : We have to restart the broadcast to update the message but we cannot
// TODO : We have to restart the broadcast to update the message but we cannot
// do this in a single frame since we have to wait for some internal state in UNET
// to reset, so we try 3 times
NetworkTransport.StopBroadcastDiscovery();

2
Assets/Scripts/Utils/BundledResource/AssetRegistryRoot.cs


using UnityEngine;
[CreateAssetMenu(fileName = "AssetRegistryRoot", menuName = "SampleGame/Resource/AssetRegistryRoot", order = 10000)]
[CreateAssetMenu(fileName = "AssetRegistryRoot", menuName = "FPS Sample/Resource/AssetRegistryRoot", order = 10000)]
public class AssetRegistryRoot : ScriptableObject
{
public bool serverBuild;

4
Assets/Scripts/Utils/BundledResource/Editor/BundledResourceBuilder.cs


saveAssets = true;
}
[MenuItem("fps.sample/Registries/Dryrun update")]
[MenuItem("FPS Sample/Registries/Dryrun update")]
public static void DryrunUpdateRegistries()
{
BuildWindowProgress.Open("Dryrun Registry Update");

[MenuItem("fps.sample/Registries/Test registries")]
[MenuItem("FPS Sample/Registries/Test registries")]
public static void TestRegistriesMenu()
{
BuildWindowProgress.Open("Verify Registries");

2
Assets/Scripts/Utils/DebugPrimitive/DebugPrimitiveSystemSettings.cs


using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu(fileName = "DebugPrimitiveSystemSettings", menuName = "SampleGame/DebugPrimitive/DebugPrimitiveSystemSettings")]
[CreateAssetMenu(fileName = "DebugPrimitiveSystemSettings", menuName = "FPS Sample/DebugPrimitive/DebugPrimitiveSystemSettings")]
public class DebugPrimitiveSystemSettings : ScriptableObject
{
public CapsulePrimitive capsulePrefab;

2
Assets/Scripts/Utils/EditorHistory/Editor/EditorHistoryWindow.cs


Repaint();
}
[MenuItem("fps.sample/Windows/Selection History")]
[MenuItem("FPS Sample/Windows/Selection History")]
public static void ShowWindow()
{
GetWindow<EditorHistoryWindow>(false, "Selection History", true);

4
Assets/Scripts/Utils/GridSnapTool/Editor/GridSnapTool.cs


CheckSceneGUIRegistration();
}
private const string ToggleName = "fps.sample/GridSnapTool";
private const string ToggleName = "FPS Sample/GridSnapTool";
[MenuItem(ToggleName)]
private static void ToggleGridSnapTool()
{

[MenuItem("fps.sample/Hotkeys/Snap selected to grid &s")]
[MenuItem("FPS Sample/Hotkeys/Snap selected to grid &s")]
static void SnapSelectedHotkey()
{
SnapSelected();

2
Assets/Scripts/Utils/LodSelector/Editor/LodSelector.cs


EditorApplication.update += CheckSelected;
}
[MenuItem("fps.sample/Hotkeys/LodSelector &L")]
[MenuItem("FPS Sample/Hotkeys/LodSelector &L")]
static void ToggleLodSelector()
{
enabled = !enabled;

2
Assets/Scripts/Utils/StateHistory/Editor/StateHistorySampler.cs


public static bool captureOnMispredict;
public static event CaptureDelegate Capture;
[MenuItem("fps.sample/Hotkeys/Capture state history _%H")]
[MenuItem("FPS Sample/Hotkeys/Capture state history _%H")]
static void HotkeyCapture()
{
if (!StateHistory.Enabled)

2
Assets/Scripts/Utils/StateHistory/Editor/StateHistoryWindow.cs


public class StateHistoryWindow : EditorWindow
{
[MenuItem("fps.sample/Windows/State History")]
[MenuItem("FPS Sample/Windows/State History")]
public static void ShowWindow()
{
GetWindow<StateHistoryWindow>(false, "State History", true);

92
Assets/Sprites/UI/MainMenu/UI_MainMenu_UnityLogo.png
文件差异内容过多而无法显示
查看文件

6
Assets/Sprites/UI/MainMenu/UI_MainMenu_UnityLogo.png.meta


TextureImporter:
fileIDToRecycleName: {}
externalObjects: {}
serializedVersion: 6
serializedVersion: 7
mipmaps:
mipMapMode: 0
enableMipMap: 0

outline: []
physicsShape: []
bones: []
spriteID:
spriteID: e27216921c2cf8d439cbae004c7b230c
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

143
Documentation/Animation.md


# Animation Content Pipeline
Authoring, Export, Import
### Iteration
We assume an iterative workflow where animations are put into game in their earliest/mockup inceptions and continuously
updated as the projects progresses, bug surface and standards change late in production.
# Content
### Authoring
Animation is done in Maya. A Maya scene typically contains a grouping of related animations, for instance all animations
for the Stand State.

From here a separate clip is exported for each animation, with the help of a custom exporter. Splitting each animation
into multiple exports allow for quick export and import times. E.G:
In source animation clips are setup for export and exported to individual files (with the help of a custom export manager).
Splitting each animation into individual files allows for partial/quick export and import, but requires more work with
import settings.
> //sample_game/prototype01/main/ProjectFolder/Assets/Animation/Characters/Terraformer/Clips/Locomotion--Run_N.anim.fbx
> //sample_game/prototype01/main/ProjectFolder/Assets/Animation/Characters/Terraformer/Clips/Locomotion--Run_S.anim.fbx
> //Assets/Animation/Characters/Terraformer/Clips/Locomotion--Run_N.anim.fbx
> //Assets/Animation/Characters/Terraformer/Clips/Locomotion--Run_S.anim.fbx
We use both Humanoid and Generic for our characters, which let’s us exercise and show both pipelines:
We use Humanoid for third person and Generic for first person. Using both allows us to demonstrate and exercise
both pipelines. Humanoid provides re-targeting and built in IK solving, while Generic offers slightly better performance
and more degrees of freedom in places like fingers.
* Humanoid for Third Person - where you might want to share animation between characters.
* Generic for First Person - which is relative to camera and likely very specific to the skeleton you are using
* Generic for Menu and Cinematic sequences
The use of translation driven squash and stretch (TranslateScale Component) allow for non- uniform scale to be used
The use of translation driven squash and stretch (TranslateScale Component) allows for non-uniform scale to be used
We aim to define the Avatar for a Skeleton once (well once for Humanoid and once for Generic) and let any subsequent
We aim to define the Avatar for a Skeleton once (well once for Humanoid and Generic) and let any subsequent
model and animation FBX’s copy this avatar:
![](Images/AvatarReference.png)

> Menu -> fps.sample -> Animation -> Update Avatar References
> Menu > FPS Sample > Animation > Update Avatar References
### Avatar Masks
We use Avatar Masks for all our animations for a few reasons:

![](Images/DefaultMask.png)
As with Avatars, we assume a single default mask will be used for all Clips, unless a special case mask is needed.
As with Avatars, we assume a default mask will be used for all Clips, unless a special case mask is needed.
If the source mask changes it must be updated in all dependent clips, so there's a button for that:
If the source mask changes it must be updated in all dependent clips. Here is a small script that will accomplish that:
> Menu -> fps.sample -> Animation -> Update Avatar Masks`
> Menu > FPS Sample > Animation > Update Avatar Masks
`AnimationImport.cs`
An AssetPostProcessor is used during animation import, which does just a few things:
AssetPostProcessor `AnimationImport.cs` does just a few things:
Muscle clips to better represent the original motion and we in turn rely on compression to throw away the keys that are not needed.
* We force the length of any Clip that is present in the FBX (matched by name) to the frame range in the file.
Muscle clips to better represent the original motion and we in turn rely on compression to throw away keys that are not needed.
* Force the frame range of any Clip that is present in the FBX, to always match the frame range of the source take (which normally only
happens on first import).
full extension, which can be especially useful during retargeting to avoid IK pops. This can however have the side effect,
that arm and legs may never fully straighten the way they do in the source animation.
full extension. This can be especially useful during re-targeting to avoid IK pops, but can have the side effect
that arm and legs may never fully straighten, when they do in the source animation.
With our choice of animation style and having almost purely character specific animations, turning this feature off made the most sense.
Having almost purely character specific animations in combination with our animation style, turning this feature off made the most sense.
### Iteration
We try to have an iterative workflow where animations are put into game in their earliest/mockup form and continuously
updated as the projects progresses, bug surface and standards change late in production.
implement animation. We need to handle things like replication, rollback, prediction and lag compensation.
For this reason we have chosen to use a custom Playable Graph, rather than using the Animator Controller for third person.
implement animation. We need to handle things like replication, rollback, prediction and lag compensation. For this
reason we have chosen to use a custom Playable Graph for Third Person animation.
The playable graph is the backend for animation features like TimeLine and the Animator Controller. When you use these
a playble graph is created in the background.
The playable praph is the backend for animation features like TimeLine and the Animator Controller. When you use these
a playable graph is created in the background.
Playable graphs can also be constructed and managed through code using the Playable API, which is what we do.
These Playble Graphs can be visualized using the Playable Graph Visualizer
You can view Playable graphs using the Playable Graph Visualizer:
In Sample Game our playable graphs mainly consist of __AnimationClips__, __Animation Mixers__ and __AnimationScriptPlayables__.
A graph like ours mainly consists of Animation Clips, Animation Mixers and a few Animation Script Playables.
#### Animation Templates
Animation Templates is our way defining pieces of animation network (sub graphs). These are typically hooked together to

* A settings Scriptable Object.
* Code to build out the sub graph and connect it to any parent or child sub graphs.
* Code to build out the sub graph and connect it to any parent or child Templates.
* Code the reads the replicated state and applies it to actual playable nodes (mixer weight, clip time, foot ik enabled etc.)
* Code that reads the replicated state and applies it to actual playable nodes (mixer weight, clip time, foot ik enabled etc.)
To create an instance of an animation template, right click in the asset browser and select:
> Create->Sample Game->Animation->AnimGraph->Template
To create an instance of an animation template, right click in the Project window and select:
> Create> FPS Sample >Animation> AnimGraph >Template
Animation Templates for a third person character
Animation Templates for a third person character:
Sprint Template Inspector
Sprint Template Inspector:
Sub graph created from the Sprint Template highlighted. It consists of 4 animation clips, 1 regular and 1 layer mixer.
Sub graph created from the Sprint Template, consisting of 4 animation clips, a regular Mixer and a layer mixer:
A key Animation Template is `AnimGraph_StateSelector`. It acts as a state machine and maps child
A key Template is `AnimGraph_StateSelector`. It acts as a state machine and maps child
> E.G: //sample_game/prototype01/main/ProjectFolder/Assets/Animation/Characters/Terraformer/AnimationSets/AnimStateSelector.asset
> E.G: //Assets/Animation/Characters/Terraformer/AnimationSets/AnimStateSelector.asset
Each state has a default blend in time, with the possibility of defining custom transition times from specific states.
Each state has a default blend time from other states, with the possibility of defining custom transition times from other states
The `AnimGraph_Stack` is currently used as the root Animation Template of our characters graphs. Here we can
assign templates to be chained together in serial fashion.
The `AnimGraph_Stack` is currently used as the root Animation Template of our characters graphs. Here we assign
templates to be chained together in serial fashion.
> E.G: //sample_game/prototype01/main/ProjectFolder/Assets/Animation/Characters/Terraformer/AnimationSets/AnimGraph.asset
> E.G: //Assets/Animation/Characters/Terraformer/AnimationSets/AnimGraph.asset
### Animation Jobs
Animation Jobs/Animation Script Playables are used for custom nodes that read and write to the animation stream. Examples are:
* Offhand IK (Generic Stream)
* Foot IK while standing (Humanoid Stream)
* First Person Weapon Drag/Lead (Generic Stream)
* Banking (Humanoid Stream)
### Assigning the Animation Graph to a Character
To assign an Animation Template as a root template for a character, assign it to the `AnimStateController` in the

## First Person Animation
![](Images/FirstPerson.PNG)
First person is local to the client, which means no multi player constraints, so here we've used the Animator Controller
First person is local to the client, which means no multi player constraints, so here we've used the Animator Controller:
> //sample_game/prototype01/main/ProjectFolder/Assets/Animation/Characters/Robot_1P/AnimatorControllers/Robot.controller
> E.G: //Assets/Animation/Characters/Robot_1P/AnimatorControllers/Robot.controller
Characters and weapon are seperated hierachies, but need to play the same animations, so an override controller is
used for the weapon animation
Characters and weapon are separate hierarchies, but need to play in sync, so an override controller is used for the weapons:
> E.G: //Assets/Animation/Characters/Robot_1P/AnimatorControllers/Robot_Weapon.overrideController
> //sample_game/prototype01/main/ProjectFolder/Assets/Animation/Characters/Robot_1P/AnimatorControllers/Robot_Weapon.overrideController
### Setting up the First Person Controller
### Assigning the First Person Controller
The Animator Controller is not references in the Characters Animator Component, but assigned to an Animator Controller Template
(`AnimGraph_AnimatorController`). This template wraps the controller in an AnimatorControllerPlayable and forwards game state
to the Animator Controllers parameters etc.
Animator Controllers are not assigned directly to the Animator, but assigned to an Animator Controller Template
(`AnimGraph_AnimatorController`), which handles forwarding of game state to the Animator Controllers parameters.
> E.G: //Assets/Animation/Characters/Terraformer_1P/AnimationSets/Controller_Character.asset
> E.G: //sample_game/prototype01/main/ProjectFolder/Assets/Animation/Characters/Terraformer_1P/AnimationSets/Controller_Character.asset
This is in turn assigned to an Animation Stack Template (`AnimGraph_Stack`) where we add additional nodes, like
Off Hand IK and Aim Drag.
This is in turn assigned to an Animation State (AnimGraph_Stack) which also let's us add so additional nodes,
like Off Hand IK and Aim Drag.
### Assigning the First Person Controller
This Animation Template is assigned to the `AnimStateController` of the First Person Characters Prefab
The Stack Template is assigned to the `AnimStateController` of the First Person Character Prefab:
![](Images/AnimStateController1P.png)
## Animation Jobs
Animation Jobs/Animation Script Playables are used for custom nodes that read and write to the animation stream. Examples are:
* Offhand IK (Generic Stream)
* Foot IK while standing (Humanoid Stream)
* First Person Weapon Drag/Lead (Generic Stream)
* Banking (Humanoid Stream)
![](Images/AnimStateController.png)

部分文件因为文件数量过多而无法显示

正在加载...
取消
保存