浏览代码

Work on replay camera and post game stats

/demo-work
André McGrail 5 年前
当前提交
cf6aa00a
共有 39 个文件被更改,包括 4406 次插入627 次删除
  1. 8
      Assets/AddressableAssetsData/AssetGroups/UI.asset
  2. 4
      Assets/AddressableAssetsData/AssetGroups/Utility.asset
  3. 204
      Assets/Objects/Levels/Island/Environment Objects Prefabs/Buildings/CoveHouse.prefab
  4. 589
      Assets/Objects/Levels/Island/Island Level.prefab
  5. 93
      Assets/Objects/Levels/Island/Logic.prefab
  6. 109
      Assets/Objects/Levels/Island/ReplayCameras.prefab
  7. 871
      Assets/Objects/UI/Race_Canvas.prefab
  8. 124
      Assets/Resources/AppManager.prefab
  9. 85
      Assets/Scripts/Boat/AiController.cs
  10. 80
      Assets/Scripts/Boat/Boat.cs
  11. 36
      Assets/Scripts/Camera/ReplayCamera.cs
  12. 29
      Assets/Scripts/Editor/BoatControllerEditor.cs
  13. 8
      Assets/Scripts/GameSystem/Editor/WaypointDrawer.cs
  14. 113
      Assets/Scripts/GameSystem/Editor/WaypointGroupEditor.cs
  15. 201
      Assets/Scripts/GameSystem/RaceManager.cs
  16. 125
      Assets/Scripts/GameSystem/WaypointGroup.cs
  17. 34
      Assets/Scripts/UI/MainMenuHelper.cs
  18. 97
      Assets/Scripts/UI/RaceUI.cs
  19. 20
      Assets/Scripts/Utility/WaypointTest.cs
  20. 12
      Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Drop Shadow.mat
  21. 192
      Assets/scenes/demo_Island.unity
  22. 25
      Assets/Materials/Checkpoint.mat
  23. 8
      Assets/Materials/Checkpoint.mat.meta
  24. 164
      Assets/Objects/UI/PlayerMapMarker.prefab
  25. 7
      Assets/Objects/UI/PlayerMapMarker.prefab.meta
  26. 899
      Assets/Objects/UI/RaceStats_Player.prefab
  27. 7
      Assets/Objects/UI/RaceStats_Player.prefab.meta
  28. 8
      Assets/Objects/UI/meshes.meta
  29. 81
      Assets/Objects/misc/checkpoint.prefab
  30. 7
      Assets/Objects/misc/checkpoint.prefab.meta
  31. 57
      Assets/Scripts/UI/PlayerMapMarker.cs
  32. 11
      Assets/Scripts/UI/PlayerMapMarker.cs.meta
  33. 78
      Assets/Scripts/UI/RaceStatsPlayer.cs
  34. 11
      Assets/Scripts/UI/RaceStatsPlayer.cs.meta
  35. 452
      Assets/Shaders/CheckpointShader.shadergraph
  36. 10
      Assets/Shaders/CheckpointShader.shadergraph.meta
  37. 75
      Assets/Objects/UI/meshes/checkpoint.fbx
  38. 99
      Assets/Objects/UI/meshes/checkpoint.fbx.meta

8
Assets/AddressableAssetsData/AssetGroups/UI.asset


m_Address: ui_player_marker
m_ReadOnly: 0
m_SerializedLabels: []
- m_GUID: 4823b5c430af647578af56a5d37f7276
m_Address: ui_racestats_player
m_ReadOnly: 0
m_SerializedLabels: []
- m_GUID: d6294ade8f31d403eaab049b86f2ed11
m_Address: ui_player_map_marker
m_ReadOnly: 0
m_SerializedLabels: []
m_ReadOnly: 0
m_Settings: {fileID: 11400000, guid: 46fc3d082b08c4dacacae72d7016c235, type: 2}
m_SchemaSet:

4
Assets/AddressableAssetsData/AssetGroups/Utility.asset


m_Address: camera
m_ReadOnly: 0
m_SerializedLabels: []
- m_GUID: 5b930c10a697b4d8c9c8084e03800523
m_Address: checkpoint
m_ReadOnly: 0
m_SerializedLabels: []
m_ReadOnly: 0
m_Settings: {fileID: 11400000, guid: 46fc3d082b08c4dacacae72d7016c235, type: 2}
m_SchemaSet:

204
Assets/Objects/Levels/Island/Environment Objects Prefabs/Buildings/CoveHouse.prefab


m_Modification:
m_TransformParent: {fileID: 8430302347011869341}
m_Modifications:
- target: {fileID: 1178623679222630, guid: 851454441f29b4ab9a78308458eafccb, type: 3}
propertyPath: m_Name
value: JettySqr01 (13)
objectReference: {fileID: 0}
- target: {fileID: 4759700577955508, guid: 851454441f29b4ab9a78308458eafccb, type: 3}
propertyPath: m_LocalPosition.x
value: -31.072334

propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1178623679222630, guid: 851454441f29b4ab9a78308458eafccb, type: 3}
propertyPath: m_Name
value: JettySqr01 (13)
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 851454441f29b4ab9a78308458eafccb, type: 3}
--- !u!4 &8425843191796264346 stripped

m_Modification:
m_TransformParent: {fileID: 8430302347011869341}
m_Modifications:
- target: {fileID: 1194048478597714, guid: e77c5d66f9ece49a9aaf971f1cab072d, type: 3}
propertyPath: m_Name
value: Geo_Props_Chair (8)
objectReference: {fileID: 0}
- target: {fileID: 4422286388676066, guid: e77c5d66f9ece49a9aaf971f1cab072d, type: 3}
propertyPath: m_LocalPosition.x
value: -40.43

propertyPath: m_LocalScale.z
value: 1.0000005
objectReference: {fileID: 0}
- target: {fileID: 1194048478597714, guid: e77c5d66f9ece49a9aaf971f1cab072d, type: 3}
propertyPath: m_Name
value: Geo_Props_Chair (8)
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: e77c5d66f9ece49a9aaf971f1cab072d, type: 3}
--- !u!4 &8426733369253773299 stripped

m_Modification:
m_TransformParent: {fileID: 8430302347011869341}
m_Modifications:
- target: {fileID: 1194048478597714, guid: e77c5d66f9ece49a9aaf971f1cab072d, type: 3}
propertyPath: m_Name
value: Geo_Props_Chair (2)
objectReference: {fileID: 0}
- target: {fileID: 4422286388676066, guid: e77c5d66f9ece49a9aaf971f1cab072d, type: 3}
propertyPath: m_LocalPosition.x
value: -18.27

propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1194048478597714, guid: e77c5d66f9ece49a9aaf971f1cab072d, type: 3}
propertyPath: m_Name
value: Geo_Props_Chair (2)
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: e77c5d66f9ece49a9aaf971f1cab072d, type: 3}
--- !u!4 &8426733369254443035 stripped

m_Modification:
m_TransformParent: {fileID: 8430302347011869341}
m_Modifications:
- target: {fileID: 1194048478597714, guid: e77c5d66f9ece49a9aaf971f1cab072d, type: 3}
propertyPath: m_Name
value: Geo_Props_Chair (6)
objectReference: {fileID: 0}
- target: {fileID: 4422286388676066, guid: e77c5d66f9ece49a9aaf971f1cab072d, type: 3}
propertyPath: m_LocalPosition.x
value: -29.24

propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1194048478597714, guid: e77c5d66f9ece49a9aaf971f1cab072d, type: 3}
propertyPath: m_Name
value: Geo_Props_Chair (6)
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: e77c5d66f9ece49a9aaf971f1cab072d, type: 3}
--- !u!4 &8426733369628165351 stripped

m_Modification:
m_TransformParent: {fileID: 8430302347011869341}
m_Modifications:
- target: {fileID: 1178623679222630, guid: 851454441f29b4ab9a78308458eafccb, type: 3}
propertyPath: m_Name
value: JettySqr01 (14)
objectReference: {fileID: 0}
- target: {fileID: 4759700577955508, guid: 851454441f29b4ab9a78308458eafccb, type: 3}
propertyPath: m_LocalPosition.x
value: -30.449999

propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1178623679222630, guid: 851454441f29b4ab9a78308458eafccb, type: 3}
propertyPath: m_Name
value: JettySqr01 (14)
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 851454441f29b4ab9a78308458eafccb, type: 3}
--- !u!4 &8425843192096680043 stripped

m_Modification:
m_TransformParent: {fileID: 8430302347011869341}
m_Modifications:
- target: {fileID: 1579226770011358, guid: 93a21ad838562455fbfdd84d54fca009, type: 3}
propertyPath: m_Name
value: JettyLong01 (10)
objectReference: {fileID: 0}
- target: {fileID: 4407848929593064, guid: 93a21ad838562455fbfdd84d54fca009, type: 3}
propertyPath: m_LocalPosition.x
value: -21.675

propertyPath: m_LocalEulerAnglesHint.z
value: 2.167
objectReference: {fileID: 0}
- target: {fileID: 1579226770011358, guid: 93a21ad838562455fbfdd84d54fca009, type: 3}
propertyPath: m_Name
value: JettyLong01 (10)
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 93a21ad838562455fbfdd84d54fca009, type: 3}
--- !u!4 &8426757977558069124 stripped

m_Modification:
m_TransformParent: {fileID: 8430302347011869341}
m_Modifications:
- target: {fileID: 1502625712807056, guid: c809c76e5a12443498dc83d3bf205842, type: 3}
propertyPath: m_Name
value: Props_ArrowSign
objectReference: {fileID: 0}
- target: {fileID: 4203461003883598, guid: c809c76e5a12443498dc83d3bf205842, type: 3}
propertyPath: m_LocalPosition.x
value: -43.656

propertyPath: m_LocalEulerAnglesHint.z
value: -10.574
objectReference: {fileID: 0}
- target: {fileID: 1502625712807056, guid: c809c76e5a12443498dc83d3bf205842, type: 3}
propertyPath: m_Name
value: Props_ArrowSign
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: c809c76e5a12443498dc83d3bf205842, type: 3}
--- !u!4 &8426406800731215939 stripped

m_Modification:
m_TransformParent: {fileID: 8430302347011869341}
m_Modifications:
- target: {fileID: 1034065356363976, guid: a8cf78d9746e449f69179132e78d867f, type: 3}
propertyPath: m_Name
value: Geo_Props_Kayak
objectReference: {fileID: 0}
- target: {fileID: 4950301651628742, guid: a8cf78d9746e449f69179132e78d867f, type: 3}
propertyPath: m_LocalPosition.x
value: -22.899

- target: {fileID: 4950301651628742, guid: a8cf78d9746e449f69179132e78d867f, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1034065356363976, guid: a8cf78d9746e449f69179132e78d867f, type: 3}
propertyPath: m_Name
value: Geo_Props_Kayak
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: a8cf78d9746e449f69179132e78d867f, type: 3}

m_Modification:
m_TransformParent: {fileID: 8430302347011869341}
m_Modifications:
- target: {fileID: 1178623679222630, guid: 851454441f29b4ab9a78308458eafccb, type: 3}
propertyPath: m_Name
value: JettySqr01 (12)
objectReference: {fileID: 0}
- target: {fileID: 4759700577955508, guid: 851454441f29b4ab9a78308458eafccb, type: 3}
propertyPath: m_LocalPosition.x
value: -12.12656

propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1178623679222630, guid: 851454441f29b4ab9a78308458eafccb, type: 3}
propertyPath: m_Name
value: JettySqr01 (12)
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 851454441f29b4ab9a78308458eafccb, type: 3}
--- !u!4 &8425843191265867257 stripped

m_Modification:
m_TransformParent: {fileID: 8430302347011869341}
m_Modifications:
- target: {fileID: 1194048478597714, guid: e77c5d66f9ece49a9aaf971f1cab072d, type: 3}
propertyPath: m_Name
value: Geo_Props_Chair (1)
objectReference: {fileID: 0}
- target: {fileID: 4422286388676066, guid: e77c5d66f9ece49a9aaf971f1cab072d, type: 3}
propertyPath: m_LocalPosition.x
value: -22.37

propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1194048478597714, guid: e77c5d66f9ece49a9aaf971f1cab072d, type: 3}
propertyPath: m_Name
value: Geo_Props_Chair (1)
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: e77c5d66f9ece49a9aaf971f1cab072d, type: 3}
--- !u!4 &8426733369768844266 stripped

m_Modification:
m_TransformParent: {fileID: 8430302347011869341}
m_Modifications:
- target: {fileID: 1229474891580490, guid: 56562e4a2716749ef878b457e80ad01c, type: 3}
propertyPath: m_Name
value: House05
objectReference: {fileID: 0}
- target: {fileID: 4517467000177320, guid: 56562e4a2716749ef878b457e80ad01c, type: 3}
propertyPath: m_LocalPosition.x
value: -18.8

propertyPath: m_LocalScale.x
value: -1
objectReference: {fileID: 0}
- target: {fileID: 1229474891580490, guid: 56562e4a2716749ef878b457e80ad01c, type: 3}
propertyPath: m_Name
value: House05
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 56562e4a2716749ef878b457e80ad01c, type: 3}
--- !u!4 &8425812471626243984 stripped

m_Modification:
m_TransformParent: {fileID: 8430302347011869341}
m_Modifications:
- target: {fileID: 1178623679222630, guid: 851454441f29b4ab9a78308458eafccb, type: 3}
propertyPath: m_Name
value: JettySqr01 (11)
objectReference: {fileID: 0}
- target: {fileID: 4759700577955508, guid: 851454441f29b4ab9a78308458eafccb, type: 3}
propertyPath: m_LocalPosition.x
value: -32.182056

- target: {fileID: 4759700577955508, guid: 851454441f29b4ab9a78308458eafccb, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1178623679222630, guid: 851454441f29b4ab9a78308458eafccb, type: 3}
propertyPath: m_Name
value: JettySqr01 (11)
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 851454441f29b4ab9a78308458eafccb, type: 3}

m_Modification:
m_TransformParent: {fileID: 8430302347011869341}
m_Modifications:
- target: {fileID: 1579226770011358, guid: 93a21ad838562455fbfdd84d54fca009, type: 3}
propertyPath: m_Name
value: JettyLong01 (7)
objectReference: {fileID: 0}
- target: {fileID: 4407848929593064, guid: 93a21ad838562455fbfdd84d54fca009, type: 3}
propertyPath: m_LocalPosition.x
value: -24.645

propertyPath: m_LocalEulerAnglesHint.z
value: -1.5430001
objectReference: {fileID: 0}
- target: {fileID: 1579226770011358, guid: 93a21ad838562455fbfdd84d54fca009, type: 3}
propertyPath: m_Name
value: JettyLong01 (7)
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 93a21ad838562455fbfdd84d54fca009, type: 3}
--- !u!4 &8426757978223865342 stripped

m_Modification:
m_TransformParent: {fileID: 8430302347011869341}
m_Modifications:
- target: {fileID: 1726786857222734, guid: e273ea20cef2d43fabb2f46111866497, type: 3}
propertyPath: m_Name
value: Props_Umbrella
objectReference: {fileID: 0}
- target: {fileID: 4226095984308140, guid: e273ea20cef2d43fabb2f46111866497, type: 3}
propertyPath: m_LocalPosition.x
value: -19.83

propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1726786857222734, guid: e273ea20cef2d43fabb2f46111866497, type: 3}
propertyPath: m_Name
value: Props_Umbrella
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: e273ea20cef2d43fabb2f46111866497, type: 3}
--- !u!4 &8426640403871490376 stripped

m_Modification:
m_TransformParent: {fileID: 8430302347011869341}
m_Modifications:
- target: {fileID: 1194048478597714, guid: e77c5d66f9ece49a9aaf971f1cab072d, type: 3}
propertyPath: m_Name
value: Geo_Props_Chair (4)
objectReference: {fileID: 0}
- target: {fileID: 4422286388676066, guid: e77c5d66f9ece49a9aaf971f1cab072d, type: 3}
propertyPath: m_LocalPosition.x
value: -27.4

propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1194048478597714, guid: e77c5d66f9ece49a9aaf971f1cab072d, type: 3}
propertyPath: m_Name
value: Geo_Props_Chair (4)
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: e77c5d66f9ece49a9aaf971f1cab072d, type: 3}
--- !u!4 &8426733370017194001 stripped

m_Modification:
m_TransformParent: {fileID: 8430302347011869341}
m_Modifications:
- target: {fileID: 1726786857222734, guid: e273ea20cef2d43fabb2f46111866497, type: 3}
propertyPath: m_Name
value: Geo_Props_Umbrella (1)
objectReference: {fileID: 0}
- target: {fileID: 4226095984308140, guid: e273ea20cef2d43fabb2f46111866497, type: 3}
propertyPath: m_LocalPosition.x
value: -28.39

- target: {fileID: 4226095984308140, guid: e273ea20cef2d43fabb2f46111866497, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 38.864002
objectReference: {fileID: 0}
- target: {fileID: 1726786857222734, guid: e273ea20cef2d43fabb2f46111866497, type: 3}
propertyPath: m_Name
value: Geo_Props_Umbrella (1)
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: e273ea20cef2d43fabb2f46111866497, type: 3}

m_Modification:
m_TransformParent: {fileID: 8430302347011869341}
m_Modifications:
- target: {fileID: 1194048478597714, guid: e77c5d66f9ece49a9aaf971f1cab072d, type: 3}
propertyPath: m_Name
value: Geo_Props_Chair (5)
objectReference: {fileID: 0}
- target: {fileID: 4422286388676066, guid: e77c5d66f9ece49a9aaf971f1cab072d, type: 3}
propertyPath: m_LocalPosition.x
value: -30.49

propertyPath: m_LocalScale.z
value: 1.0000005
objectReference: {fileID: 0}
- target: {fileID: 1194048478597714, guid: e77c5d66f9ece49a9aaf971f1cab072d, type: 3}
propertyPath: m_Name
value: Geo_Props_Chair (5)
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: e77c5d66f9ece49a9aaf971f1cab072d, type: 3}
--- !u!4 &8426733368366555749 stripped

propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1502625712807056, guid: c809c76e5a12443498dc83d3bf205842, type: 3}
propertyPath: m_Name
value: Geo_Props_ArrowSign (1)
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: c809c76e5a12443498dc83d3bf205842, type: 3}
--- !u!4 &8426406801612767653 stripped

m_Modification:
m_TransformParent: {fileID: 8430302347011869341}
m_Modifications:
- target: {fileID: 1034065356363976, guid: a8cf78d9746e449f69179132e78d867f, type: 3}
propertyPath: m_Name
value: Geo_Props_Kayak (2)
objectReference: {fileID: 0}
- target: {fileID: 4950301651628742, guid: a8cf78d9746e449f69179132e78d867f, type: 3}
propertyPath: m_LocalPosition.x
value: -33.58301

propertyPath: m_LocalScale.x
value: 0.99999994
objectReference: {fileID: 0}
- target: {fileID: 1034065356363976, guid: a8cf78d9746e449f69179132e78d867f, type: 3}
propertyPath: m_Name
value: Geo_Props_Kayak (2)
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: a8cf78d9746e449f69179132e78d867f, type: 3}
--- !u!4 &8426205302731225145 stripped

m_Modification:
m_TransformParent: {fileID: 8430302347011869341}
m_Modifications:
- target: {fileID: 1194048478597714, guid: e77c5d66f9ece49a9aaf971f1cab072d, type: 3}
propertyPath: m_Name
value: Props_Chair
objectReference: {fileID: 0}
- target: {fileID: 4422286388676066, guid: e77c5d66f9ece49a9aaf971f1cab072d, type: 3}
propertyPath: m_LocalPosition.x
value: -21.47

propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1194048478597714, guid: e77c5d66f9ece49a9aaf971f1cab072d, type: 3}
propertyPath: m_Name
value: Props_Chair
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: e77c5d66f9ece49a9aaf971f1cab072d, type: 3}
--- !u!4 &8426733368497898551 stripped

m_Modification:
m_TransformParent: {fileID: 8430302347011869341}
m_Modifications:
- target: {fileID: 1194048478597714, guid: e77c5d66f9ece49a9aaf971f1cab072d, type: 3}
propertyPath: m_Name
value: Geo_Props_Chair (7)
objectReference: {fileID: 0}
- target: {fileID: 4422286388676066, guid: e77c5d66f9ece49a9aaf971f1cab072d, type: 3}
propertyPath: m_LocalPosition.x
value: -38.798

propertyPath: m_LocalEulerAnglesHint.z
value: -6.873
objectReference: {fileID: 0}
- target: {fileID: 1194048478597714, guid: e77c5d66f9ece49a9aaf971f1cab072d, type: 3}
propertyPath: m_Name
value: Geo_Props_Chair (7)
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: e77c5d66f9ece49a9aaf971f1cab072d, type: 3}
--- !u!4 &8426733368832045787 stripped

m_Modification:
m_TransformParent: {fileID: 8430302347011869341}
m_Modifications:
- target: {fileID: 1034065356363976, guid: a8cf78d9746e449f69179132e78d867f, type: 3}
propertyPath: m_Name
value: Geo_Props_Kayak (1)
objectReference: {fileID: 0}
- target: {fileID: 4950301651628742, guid: a8cf78d9746e449f69179132e78d867f, type: 3}
propertyPath: m_LocalPosition.x
value: -35.953064

propertyPath: m_LocalScale.z
value: 1.0000004
objectReference: {fileID: 0}
- target: {fileID: 1034065356363976, guid: a8cf78d9746e449f69179132e78d867f, type: 3}
propertyPath: m_Name
value: Geo_Props_Kayak (1)
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: a8cf78d9746e449f69179132e78d867f, type: 3}
--- !u!4 &8426205302163363590 stripped

m_Modification:
m_TransformParent: {fileID: 8430302347011869341}
m_Modifications:
- target: {fileID: 1726786857222734, guid: e273ea20cef2d43fabb2f46111866497, type: 3}
propertyPath: m_Name
value: Geo_Props_Umbrella (2)
objectReference: {fileID: 0}
- target: {fileID: 4226095984308140, guid: e273ea20cef2d43fabb2f46111866497, type: 3}
propertyPath: m_LocalPosition.x
value: -39.617

propertyPath: m_LocalEulerAnglesHint.z
value: 0.17
objectReference: {fileID: 0}
- target: {fileID: 1726786857222734, guid: e273ea20cef2d43fabb2f46111866497, type: 3}
propertyPath: m_Name
value: Geo_Props_Umbrella (2)
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: e273ea20cef2d43fabb2f46111866497, type: 3}
--- !u!4 &8426640404643033221 stripped

m_Modification:
m_TransformParent: {fileID: 8430302347011869341}
m_Modifications:
- target: {fileID: 1194048478597714, guid: e77c5d66f9ece49a9aaf971f1cab072d, type: 3}
propertyPath: m_Name
value: Geo_Props_Chair (3)
objectReference: {fileID: 0}
- target: {fileID: 4422286388676066, guid: e77c5d66f9ece49a9aaf971f1cab072d, type: 3}
propertyPath: m_LocalPosition.x
value: -20.78

propertyPath: m_LocalScale.z
value: 1.0000005
objectReference: {fileID: 0}
- target: {fileID: 1194048478597714, guid: e77c5d66f9ece49a9aaf971f1cab072d, type: 3}
propertyPath: m_Name
value: Geo_Props_Chair (3)
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: e77c5d66f9ece49a9aaf971f1cab072d, type: 3}
--- !u!4 &8426733368705776912 stripped

m_Modification:
m_TransformParent: {fileID: 8430302347011869341}
m_Modifications:
- target: {fileID: 1091104221591282, guid: 93cf74635170a4ed786c6aa8b42082de, type: 3}
propertyPath: m_Name
value: House04 (1)
objectReference: {fileID: 0}
- target: {fileID: 4252279632055026, guid: 93cf74635170a4ed786c6aa8b42082de, type: 3}
propertyPath: m_LocalPosition.x
value: -2.5621748

propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1091104221591282, guid: 93cf74635170a4ed786c6aa8b42082de, type: 3}
propertyPath: m_Name
value: House04 (1)
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 93cf74635170a4ed786c6aa8b42082de, type: 3}
--- !u!4 &8426630988695922474 stripped

m_Modification:
m_TransformParent: {fileID: 8430302347011869341}
m_Modifications:
- target: {fileID: 1579226770011358, guid: 93a21ad838562455fbfdd84d54fca009, type: 3}
propertyPath: m_Name
value: JettyLong01 (8)
objectReference: {fileID: 0}
- target: {fileID: 4407848929593064, guid: 93a21ad838562455fbfdd84d54fca009, type: 3}
propertyPath: m_LocalPosition.x
value: -28.475

- target: {fileID: 4407848929593064, guid: 93a21ad838562455fbfdd84d54fca009, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 3.2760003
objectReference: {fileID: 0}
- target: {fileID: 1579226770011358, guid: 93a21ad838562455fbfdd84d54fca009, type: 3}
propertyPath: m_Name
value: JettyLong01 (8)
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 93a21ad838562455fbfdd84d54fca009, type: 3}

589
Assets/Objects/Levels/Island/Island Level.prefab


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &3135541845534798743
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6778877709566074116}
- component: {fileID: 7511755994742402332}
- component: {fileID: 9193248202997075843}
- component: {fileID: 5728137917220899624}
- component: {fileID: 7817465646372975117}
m_Layer: 0
m_Name: cm
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &6778877709566074116
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3135541845534798743}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: -2.7274246, y: -37.07448, z: 39.362007}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 1196049560152573815}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &7511755994742402332
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3135541845534798743}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ac0b09e7857660247b1477e93731de29, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &9193248202997075843
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3135541845534798743}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4044717213e31446939f7bd49c896ea, type: 3}
m_Name:
m_EditorClassIdentifier:
m_TrackedObjectOffset: {x: 0, y: 0, z: 0}
m_LookaheadTime: 0.5
m_LookaheadSmoothing: 10
m_LookaheadIgnoreY: 1
m_HorizontalDamping: 0.5
m_VerticalDamping: 0.5
m_ScreenX: 0.5
m_ScreenY: 0.5
m_DeadZoneWidth: 0
m_DeadZoneHeight: 0
m_SoftZoneWidth: 0.8
m_SoftZoneHeight: 0.8
m_BiasX: 0
m_BiasY: 0
m_CenterOnActivate: 1
--- !u!114 &5728137917220899624
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3135541845534798743}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fa7155796051b734daa718462081dc5f, type: 3}
m_Name:
m_EditorClassIdentifier:
m_BindingMode: 1
m_FollowOffset: {x: 0, y: -6.25, z: 3}
m_XDamping: 0
m_YDamping: 0
m_ZDamping: 0
m_AngularDampingMode: 0
m_PitchDamping: 0
m_YawDamping: 0
m_RollDamping: 0
m_AngularDamping: 0
--- !u!114 &7817465646372975117
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3135541845534798743}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 68bb026fafb42b14791938953eaace77, type: 3}
m_Name:
m_EditorClassIdentifier:
m_NoiseProfile: {fileID: 11400000, guid: a3dacaec0287d7444b4bd276816e1666, type: 2}
m_AmplitudeGain: 0.25
m_FrequencyGain: 4
mNoiseOffsets: {x: 0, y: 0, z: 0}
--- !u!1 &3732207528960458779
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5524404323185098445}
- component: {fileID: 3963369332886328139}
m_Layer: 0
m_Name: FishermansBay
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &5524404323185098445
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3732207528960458779}
m_LocalRotation: {x: 0.09235915, y: 0.2953173, z: -0.028695947, w: 0.95049155}
m_LocalPosition: {x: 89.3, y: 3.6, z: -66.4}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 538980467756735438}
m_Father: {fileID: 4725109567025409010}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 11.1, y: 34.52, z: 0}
--- !u!114 &3963369332886328139
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3732207528960458779}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 45e653bab7fb20e499bda25e1b646fea, type: 3}
m_Name:
m_EditorClassIdentifier:
m_ExcludedPropertiesInInspector:
- m_Script
m_LockStageInInspector:
m_StreamingVersion: 20170927
m_Priority: 10
m_StandbyUpdate: 2
m_LookAt: {fileID: 0}
m_Follow: {fileID: 0}
m_Lens:
FieldOfView: 77
OrthographicSize: 10
NearClipPlane: 0.3
FarClipPlane: 2000
Dutch: 0
LensShift: {x: 0, y: 0}
m_Transitions:
m_BlendHint: 0
m_InheritPosition: 0
m_OnCameraLive:
m_PersistentCalls:
m_Calls: []
m_LegacyBlendHint: 0
m_ComponentOwner: {fileID: 538980467756735438}
--- !u!1 &4694759363669432772
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1196049560152573815}
- component: {fileID: 1612615654321301717}
- component: {fileID: 1912821275226970953}
m_Layer: 0
m_Name: BlimpCamera
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1196049560152573815
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4694759363669432772}
m_LocalRotation: {x: 0.3307133, y: 0.65137696, z: -0.37939095, w: 0.5678022}
m_LocalPosition: {x: 4.409273, y: 38.868496, z: 72.38463}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 6778877709566074116}
m_Father: {fileID: 4725109567025409010}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 60, y: 0, z: 0}
--- !u!114 &1612615654321301717
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4694759363669432772}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 45e653bab7fb20e499bda25e1b646fea, type: 3}
m_Name:
m_EditorClassIdentifier:
m_ExcludedPropertiesInInspector:
- m_Script
m_LockStageInInspector:
m_StreamingVersion: 20170927
m_Priority: 10
m_StandbyUpdate: 2
m_LookAt: {fileID: 0}
m_Follow: {fileID: 6589000189327295505}
m_Lens:
FieldOfView: 40
OrthographicSize: 10
NearClipPlane: 2
FarClipPlane: 2000
Dutch: 0
LensShift: {x: 0, y: 0}
m_Transitions:
m_BlendHint: 0
m_InheritPosition: 0
m_OnCameraLive:
m_PersistentCalls:
m_Calls: []
m_LegacyBlendHint: 0
m_ComponentOwner: {fileID: 6778877709566074116}
--- !u!114 &1912821275226970953
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4694759363669432772}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4700f9f03ad19f94baf0367cb7a9c988, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Width: 15
m_Damping: 1
m_MinFOV: 3
m_MaxFOV: 40
--- !u!1 &5327037243665391040
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 538980467756735438}
- component: {fileID: 1967422779967480748}
- component: {fileID: 7200481532267828629}
- component: {fileID: 3506673189502948693}
m_Layer: 0
m_Name: cm
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &538980467756735438
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5327037243665391040}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 38.66, y: -3.9351444, z: -22.08}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 5524404323185098445}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1967422779967480748
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5327037243665391040}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ac0b09e7857660247b1477e93731de29, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &7200481532267828629
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5327037243665391040}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4044717213e31446939f7bd49c896ea, type: 3}
m_Name:
m_EditorClassIdentifier:
m_TrackedObjectOffset: {x: 0, y: 0, z: 0}
m_LookaheadTime: 0.5
m_LookaheadSmoothing: 10
m_LookaheadIgnoreY: 1
m_HorizontalDamping: 2
m_VerticalDamping: 0
m_ScreenX: 0.5
m_ScreenY: 0.5
m_DeadZoneWidth: 0
m_DeadZoneHeight: 1
m_SoftZoneWidth: 0.8
m_SoftZoneHeight: 1
m_BiasX: 0
m_BiasY: 0
m_CenterOnActivate: 1
--- !u!114 &3506673189502948693
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5327037243665391040}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fa7155796051b734daa718462081dc5f, type: 3}
m_Name:
m_EditorClassIdentifier:
m_BindingMode: 1
m_FollowOffset: {x: -9.750008, y: 0, z: -107.21}
m_XDamping: 1
m_YDamping: 1
m_ZDamping: 1
m_AngularDampingMode: 0
m_PitchDamping: 0
m_YawDamping: 0
m_RollDamping: 0
m_AngularDamping: 0
--- !u!1 &6589000189934312664
GameObject:
m_ObjectHideFlags: 0

blendDistance: 0
weight: 1
sharedProfile: {fileID: 11400000, guid: d153a876a90764357ab87d707662af52, type: 2}
--- !u!1 &7089225085253259249
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5302628993953209002}
- component: {fileID: 6137788099058364434}
- component: {fileID: 5391731537733354878}
- component: {fileID: 7901153921532238567}
m_Layer: 0
m_Name: cm
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &5302628993953209002
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7089225085253259249}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 53.250652, y: -3.9351444, z: 47.90117}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 677530510789093538}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &6137788099058364434
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7089225085253259249}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ac0b09e7857660247b1477e93731de29, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &5391731537733354878
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7089225085253259249}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4044717213e31446939f7bd49c896ea, type: 3}
m_Name:
m_EditorClassIdentifier:
m_TrackedObjectOffset: {x: 0, y: 0, z: 0}
m_LookaheadTime: 0.5
m_LookaheadSmoothing: 10
m_LookaheadIgnoreY: 1
m_HorizontalDamping: 0.5
m_VerticalDamping: 0.5
m_ScreenX: 0.5
m_ScreenY: 0.5
m_DeadZoneWidth: 0
m_DeadZoneHeight: 0
m_SoftZoneWidth: 0.8
m_SoftZoneHeight: 0.8
m_BiasX: 0
m_BiasY: 0
m_CenterOnActivate: 1
--- !u!114 &7901153921532238567
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7089225085253259249}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fa7155796051b734daa718462081dc5f, type: 3}
m_Name:
m_EditorClassIdentifier:
m_BindingMode: 1
m_FollowOffset: {x: 14.530655, y: -1.9251443, z: 59.971115}
m_XDamping: 1
m_YDamping: 1
m_ZDamping: 1
m_AngularDampingMode: 0
m_PitchDamping: 0
m_YawDamping: 0
m_RollDamping: 0
m_AngularDamping: 0
--- !u!1 &8412588744993800169
GameObject:
m_ObjectHideFlags: 0

m_Name:
m_EditorClassIdentifier:
computeOverride: 1
_bakedDepthTex: {fileID: 2800000, guid: 93bf4e51726633144823e135b668c836, type: 3}
_depthTex: {fileID: 0}
bakedDepthTex: {fileID: 0}
_waves:
- amplitude: 0.22704089
direction: -88.46054

settingsData: {fileID: 11400000, guid: 51d5286b580b54b69a91da9e3338548f, type: 2}
surfaceData: {fileID: 11400000, guid: 9e1c83d2d3fac4b94b91c7b3a80ce964, type: 2}
resources: {fileID: 11400000, guid: 40615c805d6e84ce7800418367985fe1, type: 2}
--- !u!1 &9041299318871249523
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 677530510789093538}
- component: {fileID: 6372979737712939257}
m_Layer: 0
m_Name: ShaggyCove
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &677530510789093538
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9041299318871249523}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: -38.55, y: 2.01, z: 21.84}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 5302628993953209002}
m_Father: {fileID: 4725109567025409010}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &6372979737712939257
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9041299318871249523}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 45e653bab7fb20e499bda25e1b646fea, type: 3}
m_Name:
m_EditorClassIdentifier:
m_ExcludedPropertiesInInspector:
- m_Script
m_LockStageInInspector:
m_StreamingVersion: 20170927
m_Priority: 10
m_StandbyUpdate: 2
m_LookAt: {fileID: 0}
m_Follow: {fileID: 0}
m_Lens:
FieldOfView: 40
OrthographicSize: 10
NearClipPlane: 1
FarClipPlane: 2000
Dutch: 0
LensShift: {x: 0, y: 0}
m_Transitions:
m_BlendHint: 0
m_InheritPosition: 0
m_OnCameraLive:
m_PersistentCalls:
m_Calls: []
m_LegacyBlendHint: 0
m_ComponentOwner: {fileID: 5302628993953209002}
--- !u!1001 &1488833590889370986
PrefabInstance:
m_ObjectHideFlags: 0

m_Modification:
m_TransformParent: {fileID: 6589000189934312487}
m_Modifications:
- target: {fileID: 3027621729415438540, guid: e8d3746aee68c468f86cbabb0b56502f,
type: 3}
propertyPath: m_ChildCameras.Array.size
value: 4
objectReference: {fileID: 0}
- target: {fileID: 3027621729415438540, guid: e8d3746aee68c468f86cbabb0b56502f,
type: 3}
propertyPath: m_Enabled
value: 1
objectReference: {fileID: 0}
- target: {fileID: 3027621729415438540, guid: e8d3746aee68c468f86cbabb0b56502f,
type: 3}
propertyPath: m_ChildCameras.Array.data[0]
value:
objectReference: {fileID: 1612615654321301717}
- target: {fileID: 3027621729415438540, guid: e8d3746aee68c468f86cbabb0b56502f,
type: 3}
propertyPath: m_ChildCameras.Array.data[1]
value:
objectReference: {fileID: 6372979737712939257}
- target: {fileID: 3027621729415438540, guid: e8d3746aee68c468f86cbabb0b56502f,
type: 3}
propertyPath: m_ChildCameras.Array.data[2]
value:
objectReference: {fileID: 3963369332886328139}
- target: {fileID: 3027621729415438540, guid: e8d3746aee68c468f86cbabb0b56502f,
type: 3}
propertyPath: m_ChildCameras.Array.data[3]
value:
objectReference: {fileID: 4569583912487961972}
- target: {fileID: 3201256131757088765, guid: e8d3746aee68c468f86cbabb0b56502f,
type: 3}
propertyPath: levelShots.Array.size
value: 1
objectReference: {fileID: 0}
- target: {fileID: 3201256131757088765, guid: e8d3746aee68c468f86cbabb0b56502f,
type: 3}
propertyPath: levelShots.Array.data[0]
value:
objectReference: {fileID: 0}
- target: {fileID: 5076232292041737950, guid: e8d3746aee68c468f86cbabb0b56502f,
type: 3}
propertyPath: m_Name

propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7924522256525669911, guid: e8d3746aee68c468f86cbabb0b56502f,
type: 3}
propertyPath: m_RootOrder
value: 3
objectReference: {fileID: 0}
--- !u!4 &4725109567025409010 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 2285092046597647431, guid: e8d3746aee68c468f86cbabb0b56502f,
type: 3}
m_PrefabInstance: {fileID: 6783741560201447349}
m_PrefabAsset: {fileID: 0}
--- !u!4 &1753825904496165226 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 5076232292041737951, guid: e8d3746aee68c468f86cbabb0b56502f,

--- !u!114 &4569583912487961972 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 7011785049636061889, guid: e8d3746aee68c468f86cbabb0b56502f,
type: 3}
m_PrefabInstance: {fileID: 6783741560201447349}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 45e653bab7fb20e499bda25e1b646fea, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1001 &7345816720632778274
PrefabInstance:
m_ObjectHideFlags: 0

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 344be8fa397804294b1b2f63976790a9, type: 3}
--- !u!4 &6589000189327295505 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 3691299466161859038, guid: 344be8fa397804294b1b2f63976790a9,
type: 3}
m_PrefabInstance: {fileID: 7515088917347921359}
m_PrefabAsset: {fileID: 0}
--- !u!4 &6589000189253528373 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 3691299466235561722, guid: 344be8fa397804294b1b2f63976790a9,

93
Assets/Objects/Levels/Island/Logic.prefab


m_Script: {fileID: 11500000, guid: 647b62ae31d264ee5a0839e89dcad48f, type: 3}
m_Name:
m_EditorClassIdentifier:
WaypointGroupID: 0
WaypointColour: {r: 1, g: 0.92156863, b: 0.015686275, a: 1}
Loop: 1
NextWPradius: 5
waypointGroupId: 0
waypointColour: {r: 1, g: 0.92156863, b: 0.015686275, a: 1}
loop: 1
WPwidth: 6.4
width: 6.4
WPnumber: 0
index: 0
normalizedDistance: 0
WPwidth: 7.32
width: 7.32
WPnumber: 1
index: 0
normalizedDistance: 0
WPwidth: 6.4
width: 6.4
WPnumber: 2
isCheckpoint: 0
index: 0
isCheckpoint: 1
normalizedDistance: 0
WPwidth: 7.33
width: 7.33
WPnumber: 3
index: 0
normalizedDistance: 0
WPwidth: 6.514844
width: 6.514844
WPnumber: 4
index: 0
normalizedDistance: 0
WPwidth: 4.8
width: 4.8
WPnumber: 5
isCheckpoint: 0
index: 0
isCheckpoint: 1
normalizedDistance: 0
WPwidth: 5.6619344
width: 5.6619344
WPnumber: 6
index: 0
normalizedDistance: 0
WPwidth: 6.995
width: 6.995
WPnumber: 7
index: 0
normalizedDistance: 0
WPwidth: 7.15
width: 7.15
WPnumber: 8
index: 0
normalizedDistance: 0
WPwidth: 10.37
width: 10.37
WPnumber: 9
isCheckpoint: 0
index: 0
isCheckpoint: 1
normalizedDistance: 0
WPwidth: 3.75
width: 3.75
WPnumber: 10
index: 0
normalizedDistance: 0
WPwidth: 9.15
width: 9.15
WPnumber: 11
index: 0
normalizedDistance: 0
WPwidth: 7.24
width: 7.24
WPnumber: 12
isCheckpoint: 0
index: 0
isCheckpoint: 1
normalizedDistance: 0
WPwidth: 5.635
width: 5.635
WPnumber: 13
index: 0
normalizedDistance: 0
WPwidth: 5.235
width: 5.235
WPnumber: 14
index: 0
normalizedDistance: 0
length: 540.5497
checkpoint:
m_AssetGUID: 5b930c10a697b4d8c9c8084e03800523
--- !u!1 &5076232291228677030
GameObject:
m_ObjectHideFlags: 0

109
Assets/Objects/Levels/Island/ReplayCameras.prefab


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

m_Name:
m_EditorClassIdentifier:
droneCamera: {fileID: 4724235160255684310}
clearShot: {fileID: 776099557020744923}
--- !u!1 &3664626529338384677
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4573194999906529360}
- component: {fileID: 776099557020744923}
- component: {fileID: 7204065250356199666}
m_Layer: 0
m_Name: ClearShot
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &4573194999906529360
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3664626529338384677}
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:
- {fileID: 5564347434838206976}
m_Father: {fileID: 297009973342671820}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &776099557020744923
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3664626529338384677}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d62f748f5292bb343be9e6b0c84416d9, type: 3}
m_Name:
m_EditorClassIdentifier:
m_ExcludedPropertiesInInspector:
- m_Script
m_LockStageInInspector:
m_StreamingVersion: 20170927
m_Priority: 0
m_StandbyUpdate: 0
m_LookAt: {fileID: 0}
m_Follow: {fileID: 0}
m_ShowDebugText: 0
m_ChildCameras: []
m_ActivateAfter: 0
m_MinDuration: 2
m_RandomizeChoice: 0
m_DefaultBlend:
m_Style: 0
m_Time: 0
m_CustomCurve:
serializedVersion: 2
m_Curve: []
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
m_CustomBlends: {fileID: 0}
--- !u!114 &7204065250356199666
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3664626529338384677}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e501d18bb52cf8c40b1853ca4904654f, type: 3}
m_Name:
m_EditorClassIdentifier:
m_CollideAgainst:
serializedVersion: 2
m_Bits: 2147484673
m_IgnoreTag:
m_TransparentLayers:
serializedVersion: 2
m_Bits: 0
m_MinimumDistanceFromTarget: 2
m_AvoidObstacles: 0
m_DistanceLimit: 0
m_MinimumOcclusionTime: 0
m_CameraRadius: 0.1
m_Strategy: 1
m_MaximumEffort: 4
m_SmoothingTime: 0
m_Damping: 0
m_DampingWhenOccluded: 0
m_OptimalTargetDistance: 0
--- !u!1 &5991782582361120558
GameObject:
m_ObjectHideFlags: 0

m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 5529485174150996548}
m_Father: {fileID: 297009973342671820}
m_Father: {fileID: 4573194999906529360}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &4724235160255684310

- m_Script
m_LockStageInInspector:
m_StreamingVersion: 20170927
m_Priority: 10
m_StandbyUpdate: 0
m_Priority: -100
m_StandbyUpdate: 2
m_LookAt: {fileID: 0}
m_Follow: {fileID: 0}
m_Lens:

m_LocalScale: {x: 0.5, y: 0.5, z: 0.5}
m_Children: []
m_Father: {fileID: 297009973342671820}
m_RootOrder: 1
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &3642328058395868419
MonoBehaviour:

871
Assets/Objects/UI/Race_Canvas.prefab
文件差异内容过多而无法显示
查看文件

124
Assets/Resources/AppManager.prefab


- component: {fileID: 3829577903138488074}
- component: {fileID: 8490184438857729681}
- component: {fileID: 7312333174115242941}
- component: {fileID: 5054393478131282040}
m_Layer: 0
m_Name: AppManager
m_TagString: Untagged

m_Script: {fileID: 11500000, guid: ce2d6128fa5c04c7e84e7978ef8b37a4, type: 3}
m_Name:
m_EditorClassIdentifier:
autoStart: 1
raceData:
demoRaceData:
game: 0
type: 0
boatCount: 4

boatPrefab:
m_AssetGUID: 405c4bc591de844a3a100e1538790229
livery:
PrimaryColor: {r: 0.78823537, g: 0.19215688, b: 0.15294118, a: 0}
TrimColor: {r: 0.8352942, g: 0.8352942, b: 0.8352942, a: 0}
Human: 0
primaryColor: {r: 0.8773585, g: 0.09518514, b: 0.09518514, a: 0}
trimColor: {r: 0.8679245, g: 0.8679245, b: 0.8679245, a: 0}
human: 0
PrimaryColor: {r: 0.2901961, g: 0.6156863, b: 0.19215688, a: 0}
TrimColor: {r: 0.57254905, g: 0.20000002, b: 0.86274517, a: 0}
Human: 0
primaryColor: {r: 0.11053756, g: 0.8679245, b: 0.17524286, a: 0}
trimColor: {r: 0.7354654, g: 0.122774996, b: 0.8396226, a: 0}
human: 0
PrimaryColor: {r: 0.57254905, g: 0.47450984, b: 0.3372549, a: 0}
TrimColor: {r: 0.16078432, g: 0.16078432, b: 0.16078432, a: 0}
Human: 0
primaryColor: {r: 0.098039225, g: 0.8980392, b: 0.8708881, a: 0}
trimColor: {r: 0.14150941, g: 0.14150941, b: 0.14150941, a: 0}
human: 0
PrimaryColor: {r: 0.8745099, g: 0.7607844, b: 0.27058825, a: 0}
TrimColor: {r: 0.03529412, g: 0.10588236, b: 0.6039216, a: 0}
Human: 0
primaryColor: {r: 0.1481844, g: 0.2092964, b: 0.8490566, a: 0}
trimColor: {r: 0.9339623, g: 0.7163166, b: 0.074893214, a: 0}
human: 0
boats:
- m_AssetGUID: 405c4bc591de844a3a100e1538790229
- m_AssetGUID: 70d78230a0527e74dabc4f14906eef98

m_Script: {fileID: 11500000, guid: 12170cf0581b249279bf9ba0eda0b212, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!82 &5054393478131282040
AudioSource:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3829577903138488069}
m_Enabled: 1
serializedVersion: 4
OutputAudioMixerGroup: {fileID: 0}
m_audioClip: {fileID: 8300000, guid: 643024a49360c40c0a27365c40d4d58d, type: 3}
m_PlayOnAwake: 1
m_Volume: 0.5
m_Pitch: 1
Loop: 1
Mute: 0
Spatialize: 0
SpatializePostEffects: 0
Priority: 256
DopplerLevel: 1
MinDistance: 1
MaxDistance: 500
Pan2D: 0
rolloffMode: 0
BypassEffects: 1
BypassListenerEffects: 1
BypassReverbZones: 1
rolloffCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 1
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
panLevelCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
spreadCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
reverbZoneMixCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4

85
Assets/Scripts/Boat/AiController.cs


/// </summary>
public class AiController : BaseController
{
public NavMeshPath navPath;//navigation path;
private NavMeshPath _navPath;// navigation path
private Vector3[] _pathPoint;
private Vector3 _curWpPos;
private int _curPoint;

private WaypointGroup.Waypoint[] _wPs;
public AiController()
{
_curWp = 0;
}
IEnumerator Start ()
private IEnumerator Start ()
float delay = WaypointGroup.RaceDelay;
yield return new WaitForSeconds(delay);
while (!RaceManager.RaceStarted)
{
yield return new WaitForEndOfFrame();
}
AssignWp(WaypointGroup.Instance.GetWaypoint(0));
}

if (_pathPoint != null)
if (_pathPoint != null &&_pathPoint.Length > _curPoint && _foundPath)
if (_pathPoint.Length > _curPoint && _foundPath)
// If we are close to the current point on the path get the next
if (Vector3.Distance(transform.position, _pathPoint[_curPoint]) < 8)
if ((Vector3.Distance(transform.position, _pathPoint[_curPoint])) < 8) // If we are close to the current point on the path get the next
{
_curPoint++; // Move on to next point
if (_curPoint >= _pathPoint.Length)
GetNextWp();
}
_curPoint++; // Move on to next point
if (_curPoint >= _pathPoint.Length)
GetNextWp();
if (_idleTime > 4f)
if(RaceManager.RaceStarted)
Debug.Log($"AI boat {gameObject.name} was stuck, re-spawning.");
_idleTime = 0f;
controller.ResetPosition();
}
if (engine.VelocityMag < 0.1f)
{
_idleTime += Time.deltaTime;
}
else
{
_idleTime = 0f;
if (_idleTime > 3f) // if been idle for 3 seconds assume AI is stuck
{
Debug.Log($"AI boat {gameObject.name} was stuck, re-spawning.");
_idleTime = 0f;
controller.ResetPosition();
}
_idleTime = (engine.VelocityMag < 0.15f || transform.up.y < 0) ? _idleTime + Time.deltaTime : _idleTime = 0f;
}
}

if (_pathPoint != null && _pathPoint.Length > _curPoint)
{
//\\\\\\\\Get angle to the destination and the side
var normDir = _pathPoint[_curPoint] - transform.position;
normDir = normDir.normalized;
var dot = Vector3.Dot(normDir, transform.forward);
_targetSide = Vector3.Cross(transform.forward, normDir).y;//positive on right side, negative on left side
if (_pathPoint == null || _pathPoint.Length <= _curPoint) return;
//\\\\\\\\Get angle to the destination and the side
var normDir = _pathPoint[_curPoint] - transform.position;
normDir = normDir.normalized;
var dot = Vector3.Dot(normDir, transform.forward);
_targetSide = Vector3.Cross(transform.forward, normDir).y;//positive on right side, negative on left side
engine.Turn(Mathf.Clamp(_targetSide, -1.0f, 1.0f));
engine.Accelerate(dot > 0 ? 1f : 0.25f);
}
engine.Turn(Mathf.Clamp(_targetSide, -1.0f, 1.0f));
engine.Accelerate(dot > 0 ? 1f : 0.25f);
}
private void GetNextWp()

{
var offset = (Random.value * 2f - 1f) * wp.width * Vector3.left;
_curWpPos = wp.point + wp.rotation * offset;
_curWp++;
if (_curWp >= WaypointGroup.Instance.WPs.Count)
_curWp = 0;
_curWp = _curWp >= WaypointGroup.Instance.WPs.Count ? 0 : _curWp + 1;
CalculatePath();
}

private void CalculatePath()
{
navPath = new NavMeshPath(); // New nav path
NavMesh.CalculatePath(transform.position, _curWpPos, 255, navPath);
if (navPath.status == NavMeshPathStatus.PathComplete) // if the path is good(complete) use it
_navPath = new NavMeshPath(); // New nav path
NavMesh.CalculatePath(transform.position, _curWpPos, 255, _navPath);
if (_navPath.status == NavMeshPathStatus.PathComplete) // if the path is good(complete) use it
_pathPoint = navPath.corners;
_pathPoint = _navPath.corners;
else if(navPath == null || navPath.status == NavMeshPathStatus.PathInvalid) // if the path is bad, we haven't found a path
else if(_navPath == null || _navPath.status == NavMeshPathStatus.PathInvalid) // if the path is bad, we haven't found a path
{
_foundPath = false;
}

80
Assets/Scripts/Boat/Boat.cs


public class Boat : MonoBehaviour
{
// Boat stats
public bool human; // Is human
[NonSerialized] public bool MatchComplete;
private WaypointGroup.Waypoint _lastCheckpoint;
private WaypointGroup.Waypoint _nextCheckpoint;
[NonSerialized] public float TotalTime;
public float camFovVel;
private float _camFovVel;
private int _playerIndex;
void Awake()
private void Awake()
{
_spawnPosition = transform.localToWorldMatrix;
TryGetComponent(out engine.RB);

{
_playerIndex = player - 1;
cam.gameObject.layer = LayerMask.NameToLayer("Player" + player); // assign player layer
SetupController(isHuman); // create or change controller
Colorize(livery);

}
}
private void LateUpdate()
private void Update()
TotalTime = Time.time;
}
private void LateUpdate()
{
cam.m_Lens.FieldOfView = Mathf.SmoothDamp(cam.m_Lens.FieldOfView, fov, ref camFovVel, 0.5f);
cam.m_Lens.FieldOfView = Mathf.SmoothDamp(cam.m_Lens.FieldOfView, fov, ref _camFovVel, 0.5f);
}
}
private void FixedUpdate()
{
if (!RaceManager.RaceStarted)
{
// race not started, make sure to keep boat fairly aligned.
var target = WaypointGroup.Instance.StartingPositions[_playerIndex];
Vector3 targetPosition = target.GetColumn(3);
Vector3 targetForward = target.GetColumn(2);
var currentPosition = transform.position;
var currentForward = transform.forward;
targetPosition.y = currentPosition.y;
engine.RB.AddForce((currentPosition - targetPosition) * 0.25f);
engine.RB.MoveRotation(Quaternion.LookRotation(Vector3.Slerp(currentForward, targetForward, 0.1f * Time.fixedDeltaTime)));
LapPercentage = (float)_wpCount / WaypointGroup.Instance.WPs.Count;
LapPercentage += WaypointGroup.Instance.GetCurrentSegmentPercentage(_wpCount, transform.position) /
WaypointGroup.Instance.WPs.Count;
LapPercentage = WaypointGroup.Instance.GetPercentageAroundTrack(transform.position);
var lowPercentage = _lastCheckpoint?.normalizedDistance ?? 0f;
var highPercentage = _nextCheckpoint?.normalizedDistance ?? 1f;
LapPercentage = Mathf.Clamp(LapPercentage, lowPercentage, highPercentage <= 0.001f ? 1f : highPercentage);
if (RaceUi)
{
RaceUi.UpdateLapCounter(LapCount);

private void OnTriggerEnter(Collider other)
{
if (other.CompareTag("waypoint"))
if (!other.CompareTag("waypoint")) return;
var wp = WaypointGroup.Instance.GetTriggersWaypoint(other as BoxCollider);
var wpIndex = WaypointGroup.Instance.GetWaypointIndex(wp);
if (wp.isCheckpoint || wpIndex == 0)
var wp = WaypointGroup.Instance.GetTriggersWaypoint(other as BoxCollider);
var wpIndex = WaypointGroup.Instance.GetWaypointIndex(wp);
EnteredWaypoint(wpIndex);
_lastCheckpoint = wp;
_nextCheckpoint = WaypointGroup.Instance.GetNextCheckpoint(wpIndex);
Debug.Log($"{name} clamping between checkpoint {_lastCheckpoint.normalizedDistance} and {_nextCheckpoint.normalizedDistance}");
EnteredWaypoint(wpIndex, wp.isCheckpoint);
private void EnteredWaypoint(int index)
private void EnteredWaypoint(int index, bool checkpoint)
{
var count = WaypointGroup.Instance.WPs.Count;
var nextWp = (int) Mathf.Repeat(_wpCount + 1, count);

if (index != 0) return;
LapCount++;
if(LapCount > 1) SplitTimes.Add(TotalTime);
if (LapCount > RaceManager.GetLapCount())
{
RaceManager.BoatFinished(_playerIndex);
MatchComplete = true;
}
SplitTimes.Add(RaceManager.RaceTime);
}
[ContextMenu("Randomize")]

36
Assets/Scripts/Camera/ReplayCamera.cs


using Cinemachine;
using System;
using Cinemachine;
using UnityEngine;
namespace BoatAttack

public static ReplayCamera Instance;
private static bool _spectatorEnabled;
private static BoatData _focusedBoat;
private Transform _focusPoint;
//public CinemachineVirtualCamera[] levelCameras;
public CinemachineClearShot clearShot;
private void OnEnable()
{

public void EnableSpectatorMode(GameObject focus)
private void LateUpdate()
SetReplayTarget(focus);
droneCamera.Priority = 100;
if (_spectatorEnabled && _focusedBoat == null)
{
_focusedBoat = RaceManager.RaceData.boats[0];
_focusPoint = _focusedBoat.BoatObject.transform;
SetReplayTarget(_focusPoint);
}
}
public void EnableSpectatorMode()
{
_spectatorEnabled = true;
//droneCamera.Priority = 100;
}
public void DisableSpectatorMode()

private void SetReplayTarget(Transform target)
{
droneCamera.Follow = target;
droneCamera.LookAt = target;
_focusPoint = target;
if (clearShot)
{
clearShot.Priority = 100;
clearShot.LookAt = _focusPoint;
}
droneCamera.Follow = _focusPoint;
droneCamera.LookAt = _focusPoint;
}
}
}

29
Assets/Scripts/Editor/BoatControllerEditor.cs


using UnityEditor;
using System.Globalization;
using UnityEditor;
public class BoatControllerEditor : Editor
public class BoatEditor : Editor
public override void OnInspectorGUI()
{
var boat = target as Boat;
base.OnInspectorGUI();
EditorGUILayout.BeginHorizontal();
EditorGUILayout.PrefixLabel("Lap Percentage");
EditorGUILayout.LabelField(boat.LapPercentage.ToString(CultureInfo.InvariantCulture));
EditorGUILayout.EndHorizontal();
}
}
[CustomPropertyDrawer(typeof(BoatData))]

var oldLabelWidth = EditorGUIUtility.labelWidth;
EditorGUI.indentLevel--;
EditorGUIUtility.labelWidth = 100;
var halfSize = new Vector2(position.width / 2, singleHeight);
var nameRect = new Rect(position.position + new Vector2(5, singleSpace), halfSize);
var prefabRect = new Rect(position.position + new Vector2(nameRect.width, 0), halfSize);

Rect box = EditorGUI.IndentedRect(position);
GUI.Box(box, "", EditorStyles.helpBox);

EditorGUI.PropertyField(prefabRect, prefabProp, new GUIContent("Asset"));
EditorGUI.PropertyField(humanRect, property.FindPropertyRelative("Human"));
EditorGUI.PropertyField(humanRect, property.FindPropertyRelative("human"));
EditorGUI.PropertyField(color1Rect, property.FindPropertyRelative("livery").FindPropertyRelative("PrimaryColor"));
EditorGUI.PropertyField(color2Rect, property.FindPropertyRelative("livery").FindPropertyRelative("TrimColor"));
EditorGUI.PropertyField(color1Rect, property.FindPropertyRelative("livery").FindPropertyRelative("primaryColor"));
EditorGUI.PropertyField(color2Rect, property.FindPropertyRelative("livery").FindPropertyRelative("trimColor"));
EditorGUIUtility.labelWidth = oldLabelWidth;
EditorGUI.indentLevel++;

8
Assets/Scripts/GameSystem/Editor/WaypointDrawer.cs


posProp = property.FindPropertyRelative("point");
rotProp = property.FindPropertyRelative("rotation");
numProp = property.FindPropertyRelative("WPnumber");
widthProp = property.FindPropertyRelative("WPwidth");
numProp = property.FindPropertyRelative("index");
widthProp = property.FindPropertyRelative("width");
checkProp = property.FindPropertyRelative("isCheckpoint");
var firstLine = rect.y + EditorGUIUtility.standardVerticalSpacing;

Rect posRect = new Rect(rect.x + numRect.width + 4, firstLine, dynamicWidth * 0.666f - 4, vertHeight);
Rect rotRect = new Rect(posRect.x + posRect.width + 4, firstLine, dynamicWidth * 0.333f - 4, vertHeight);
Rect widthRect = new Rect(rect.x, secondLine, rect.width * 0.5f, vertHeight);
Rect checkRect = new Rect(rect.x + widthRect.width, secondLine, rect.width * 0.5f, vertHeight);
Rect checkRect = new Rect(rect.x + widthRect.width + 10, secondLine, rect.width * 0.5f - 10, vertHeight);
GUI.Button(numRect, label.text.Split(' ')[1]); // get array number

EditorGUIUtility.labelWidth = 60;
EditorGUI.PropertyField(widthRect, widthProp, new GUIContent("Width", "Width of this waypoint, AI boats will keep within this and checkpoint gates will scale to this width."));
EditorGUI.PropertyField(checkRect, checkProp, new GUIContent("Checkpoint", "Is this waypoint a checkpoint in game."));
checkProp.boolValue = EditorGUI.ToggleLeft(checkRect, new GUIContent("Checkpoint", "Is this waypoint a checkpoint in game."), checkProp.boolValue);
EditorGUIUtility.labelWidth = labelWidth;
EditorGUI.EndProperty();

113
Assets/Scripts/GameSystem/Editor/WaypointGroupEditor.cs


private SerializedProperty _waypoints;
private ReorderableList _waypointList;
private int _selectedWp = -1;
private const bool WpHeaderBool = false;
private bool _wpHeaderBool;
if(_wpGroup == null)
_wpGroup = (WaypointGroup) target;
drawHeaderCallback = rect => { EditorGUI.LabelField(rect, "Way Points"); },
drawHeaderCallback = rect => { EditorGUI.LabelField(rect, "Waypoints"); },
onSelectCallback = list => { _selectedWp = list.index; },
elementHeightCallback = index => EditorGUI.GetPropertyHeight(_waypoints.GetArrayElementAtIndex(index))
};

public override void OnInspectorGUI()
{
serializedObject.Update();
if(WpHeaderBool == EditorGUILayout.BeginFoldoutHeaderGroup(WpHeaderBool, "Waypoints"))
EditorGUI.BeginChangeCheck();
_wpHeaderBool = EditorGUILayout.BeginFoldoutHeaderGroup(_wpHeaderBool, "Waypoint List");
if (_wpHeaderBool)
{
EditorGUILayout.Space();
}
if (EditorGUI.EndChangeCheck())
{
var len = _wpGroup.CalculateTrackDistance();
_wpGroup.length = len;
}
_wpGroup = (WaypointGroup) target;
if(_wpGroup == null)
_wpGroup = (WaypointGroup) target;
for (int i = 0; i < _wpGroup.WPs.Count; i++)
for (var i = 0; i < _wpGroup.WPs.Count; i++)
WaypointGroup.Waypoint wp = _wpGroup.WPs[i];
var wp = _wpGroup.WPs[i];
#region Control
if (_selectedWp == i)
{

}
}
}
var a = wp;
var b = i != _wpGroup.WPs.Count - 1 ? _wpGroup.WPs[i + 1] : _wpGroup.WPs[0];
#endregion
#region Visualization
{ // Draw lines
var a = wp;
var b = i != _wpGroup.WPs.Count - 1 ? _wpGroup.WPs[i + 1] : _wpGroup.WPs[0];
Handles.DrawDottedLine(a.point, b.point, 4f);
var aMatrix = Matrix4x4.Rotate(a.rotation);
var aW = Vector3.right * a.width;
Vector3 a1 = aMatrix * aW;
Vector3 a2 = aMatrix * -aW;
var bMatrix = Matrix4x4.Rotate(b.rotation);
var bW = Vector3.right * b.width;
Vector3 b1 = bMatrix * bW;
Vector3 b2 = bMatrix * -bW;
Handles.DrawLine(a.point + a1, b.point + b1);
Handles.DrawLine(a.point + a2, b.point + b2);
Handles.DrawDottedLine(a.point, b.point, 4f);
var col = _wpGroup.waypointColour;
col.a = 0.05f;
Handles.color = col;
Handles.DrawAAConvexPolygon(a.point + a1,
a.point + a2,
b.point + b2,
b.point + b1);
}
var aMatrix = Matrix4x4.Rotate(a.rotation);
var aW = Vector3.right * a.width;
Vector3 a1 = aMatrix * aW;
Vector3 a2 = aMatrix * -aW;
var bMatrix = Matrix4x4.Rotate(b.rotation);
var bW = Vector3.right * b.width;
Vector3 b1 = bMatrix * bW;
Vector3 b2 = bMatrix * -bW;
Handles.DrawLine(a.point + a1, b.point + b1);
Handles.DrawLine(a.point + a2, b.point + b2);
{ // Draw points
var p = wp.point;
var r = wp.rotation;
var w = wp.width;
var col = _wpGroup.waypointColour;
col.a = 0.05f;
Handles.color = col;
Handles.DrawAAConvexPolygon(a.point + a1,
a.point + a2,
b.point + b2,
b.point + b1);
if (i == 0) // Draw Start/Finish line
{
Handles.color = new Color(0f, 1f, 0f, 0.5f);
}
else if (wp.isCheckpoint) // Draw Checkpoints
{
Handles.color = new Color(0f, 0f, 1f, 0.5f);
}
DrawRectangle(p, r, new Vector2(w, 1f));
}
#endregion
}
private void DrawRectangle(Vector3 center, Quaternion rotation, Vector2 size)
{
var m = Matrix4x4.Rotate(rotation);
Vector3 a = m * new Vector3(size.x, 0f, size.y);
Vector3 b = m * new Vector3(size.x, 0f, -size.y);
Handles.DrawAAConvexPolygon(center + a, center + b, center - a, center - b);
}
}
}

201
Assets/Scripts/GameSystem/RaceManager.cs


using UnityEngine.ResourceManagement.AsyncOperations;
using UnityEngine.SceneManagement;
using BoatAttack.UI;
using UnityEngine.Serialization;
using Random = UnityEngine.Random;
namespace BoatAttack

Spectator = 3,
Benchmark = 4
}
[Serializable]
public enum RaceType
{

public string level;
public int laps = 3;
public bool reversed;
private bool _raceStarted;
public Race raceData = new Race();
[NonSerialized] public static bool RaceStarted;
public static Race RaceData;
[FormerlySerializedAs("raceData")]
public Race demoRaceData = new Race();
[NonSerialized] public static float RaceTime;
public static void BoatFinished(int player)
{
Debug.Log($"Player {player + 1} just finished.");
switch (RaceData.game)
{
case GameType.Singleplayer:
if (player == 0)
{
var raceUi = RaceData.boats[0].Boat.RaceUi;
raceUi.SetGameplayUi(false);
raceUi.SetGameStats(true);
ReplayCamera.Instance.EnableSpectatorMode();
}
break;
case GameType.LocalMultiplayer:
break;
case GameType.Multiplayer:
break;
case GameType.Spectator:
break;
case GameType.Benchmark:
break;
default:
throw new ArgumentOutOfRangeException();
}
}
RaceData = demoRaceData;
private void SetupRace(Scene scene, LoadSceneMode mode)
private static void SetupRace(Scene scene, LoadSceneMode mode)
WaypointGroup.Instance.Setup(RaceData.reversed); // setup waypoints
var boatSetup = Instance.StartCoroutine(CreateBoats()); // spawn boats
Coroutine uiSetup = null;
switch (RaceData.game)
{
case GameType.Singleplayer:
uiSetup = Instance.StartCoroutine(CreatePlayerUi(0));
break;
case GameType.LocalMultiplayer:
break;
case GameType.Multiplayer:
break;
case GameType.Spectator:
break;
case GameType.Benchmark:
break;
default:
throw new ArgumentOutOfRangeException();
}
StartCoroutine(BeginRace()); // TODO need to make much better with race intro etc
Instance.StartCoroutine(BeginRace( new []{boatSetup, uiSetup})); // TODO need to make much better with race intro etc
public void SetupGame(GameType gameType)
public static void SetGameType(GameType gameType)
raceData.game = gameType;
raceData.boats = new List<BoatData>();
Debug.Log($"Game type set to:{raceData.game}");
switch (raceData.game)
RaceData.game = gameType;
RaceData.boats = new List<BoatData>();
Debug.Log($"Game type set to:{RaceData.game}");
switch (RaceData.game)
raceData.boats.Add(b); // add player boat
GenerateRandomBoats(raceData.boatCount - 1); // add random AI
RaceData.boats.Add(b); // add player boat
GenerateRandomBoats(RaceData.boatCount - 1); // add random AI
GenerateRandomBoats(raceData.boatCount);
GenerateRandomBoats(RaceData.boatCount);
public void SetLevel(int levelIndex)
public static void SetLevel(int levelIndex)
raceData.level = ConstantData.GetLevelName(levelIndex);
Debug.Log($"Level set to:{levelIndex} with path:{raceData.level}");
RaceData.level = ConstantData.GetLevelName(levelIndex);
Debug.Log($"Level set to:{levelIndex} with path:{RaceData.level}");
public void SetHull(int player, int hull)
public static void SetHull(int player, int hull)
raceData.boats[player].boatPrefab = boats[hull];
RaceData.boats[player].boatPrefab = Instance.boats[hull];
public void LoadGame()
public static void LoadGame()
SceneManager.LoadSceneAsync(raceData.level);
SceneManager.LoadSceneAsync(RaceData.level);
private IEnumerator BeginRace()
private static IEnumerator BeginRace(IEnumerable<Coroutine> loading)
yield return new WaitForSeconds(1f); // TODO should not wait here
WaypointGroup.Instance.Reverse = raceData.reversed;
WaypointGroup.Instance.Setup();
yield return StartCoroutine(CreateBoats());
switch (raceData.game)
foreach (var load in loading)
case GameType.Singleplayer:
// Setup race UI
var uiLoading = raceUiPrefab.InstantiateAsync();
yield return uiLoading;
if (uiLoading.Result.TryGetComponent(out RaceUI uiComponent))
{
raceData.boats[0].Boat.RaceUi = uiComponent;
uiComponent.Setup(0);
}
// Setup race camera
Camera.main.cullingMask |= 1 << LayerMask.NameToLayer("Player1");
break;
case GameType.Spectator:
ReplayCamera.Instance.EnableSpectatorMode(raceData.boats[0].BoatObject);
break;
yield return load;
_raceStarted = true;
if(RaceData.game == GameType.Spectator) ReplayCamera.Instance.EnableSpectatorMode();
yield return new WaitForSeconds(5f);
RaceStarted = true;
void GenerateRandomBoats(int count, bool ai = true)
private static void GenerateRandomBoats(int count, bool ai = true)
for (int i = 0; i < count; i++)
for (var i = 0; i < count; i++)
BoatData boat = new BoatData();
var boat = new BoatData();
Random.InitState(ConstantData.SeedNow+i);
boat.boatName = ConstantData.AiNames[Random.Range(0, ConstantData.AiNames.Length)];
BoatLivery livery = new BoatLivery

};
boat.livery = livery;
boat.boatPrefab = boats[Random.Range(0, boats.Length)];
boat.boatPrefab = Instance.boats[Random.Range(0, Instance.boats.Length)];
raceData.boats.Add(boat);
RaceData.boats.Add(boat);
void Update()
void LateUpdate()
if (_raceStarted)
if (RaceStarted)
for (int i = 0; i < raceData.boats.Count; i++)
for (int i = 0; i < RaceData.boats.Count; i++)
var boat = raceData.boats[i].Boat;
_boatTimes[i] = boat.LapPercentage + boat.LapCount;
var boat = RaceData.boats[i].Boat;
if (boat.MatchComplete)
{
_boatTimes[i] = boat.SplitTimes.Last();
}
else
{
_boatTimes[i] = boat.LapPercentage + boat.LapCount;
}
}
var mySortedList = _boatTimes.OrderBy(d => d.Value).ToList();
mySortedList.Reverse();

raceData.boats[index.Key].Boat.Place = place;
RaceData.boats[index.Key].Boat.Place = place;
RaceTime += Time.deltaTime;
public int GetLapCount()
public static int GetLapCount()
if (raceData != null && raceData.type == RaceType.Race)
if (RaceData != null && RaceData.type == RaceType.Race)
return raceData.laps;
return RaceData.laps;
private IEnumerator CreateBoats()
private static IEnumerator CreateBoats()
for (int i = 0; i < raceData.boats.Count; i++)
for (int i = 0; i < RaceData.boats.Count; i++)
var boat = raceData.boats[i]; // boat to setup
var boat = RaceData.boats[i]; // boat to setup
_boatTimes.Add(i, 0f);
Instance._boatTimes.Add(i, 0f);
}
}
private static IEnumerator CreatePlayerUi(int player)
{
var uiLoading = Instance.raceUiPrefab.InstantiateAsync();
yield return uiLoading;
if (uiLoading.Result.TryGetComponent(out RaceUI uiComponent))
{
RaceData.boats[player].Boat.RaceUi = uiComponent;
uiComponent.Setup(player);
// Setup race camera
Camera.main.cullingMask |= 1 << LayerMask.NameToLayer($"Player{player + 1}");
}
}
}

125
Assets/Scripts/GameSystem/WaypointGroup.cs


using System;
using System.Collections;
using Unity.Mathematics;
using UnityEngine.AddressableAssets;
using UnityEngine.Serialization;
using Random = UnityEngine.Random;

{
public static float RaceDelay = 4f;
public float nextWpRadius = 5f;
public float length;
private readonly SortedDictionary<int, Waypoint> _checkpointPairs = new SortedDictionary<int, Waypoint>();
public AssetReference checkpoint;
public static WaypointGroup Instance { get; private set; }
private BoxCollider[] _triggers;

{
Instance = this;
CalculateTrackDistance();
public void Setup()
public void Setup(bool reversed)
Reverse = reversed;
if (Reverse)
{
WPs.Reverse();

_triggers[i].size = new Vector3(wp.width * 2f, 50f, 0.5f);
_triggerPairs.Add(_triggers[i], wp);
wp.Trigger = _triggers[i];
if (wp.isCheckpoint || i == 0)
{
_checkpointPairs.Add(i, wp);
StartCoroutine(CreateCheckpoint(wp, i == 0));
}
i++;
}

IEnumerator CreateCheckpoint(Waypoint wp, bool start)
{
var checkpointLoading = checkpoint.InstantiateAsync(wp.point, wp.rotation);
yield return checkpointLoading;
checkpointLoading.Result.transform.localScale = Vector3.one * ((wp.width + 1) / 6);
if (!start) yield break;
if(checkpointLoading.Result.TryGetComponent<MeshRenderer>(out var renderer))
renderer.material.SetColor("_Color", Color.red);
}
[Serializable]
public class Waypoint
{

public int index;
public bool isCheckpoint;
[NonSerialized] public BoxCollider Trigger;
public float normalizedDistance;
public Waypoint(Vector3 position, float radius)
{

return GetWaypoint(WPs.IndexOf(wp) - 1);
}
public Waypoint GetClosestWaypoint(Vector3 point)
public Waypoint GetNextCheckpoint(Waypoint wp)
return WPs.OrderBy(wp => Vector3.Distance(point, wp.point)).ToArray()[0];
var startingPoint = WPs.IndexOf(wp);
return GetNextCheckpoint(startingPoint);
public float GetCurrentSegmentPercentage(Waypoint wp, Vector3 point)
public Waypoint GetNextCheckpoint(int index)
return GetCurrentSegmentPercentage(WPs.IndexOf(wp), point);
return _checkpointPairs.FirstOrDefault(x => x.Key > index).Value ?? WPs[0];
public float GetCurrentSegmentPercentage(int index, Vector3 point)
public Waypoint GetClosestWaypoint(Vector3 point)
index = (int)Mathf.Repeat(index, WPs.Count);
var a = WPs[index].point;
var b = GetNextWaypoint(WPs[index]).point;
var pointOnLine = FindNearestPointOnLine(a, b, point);
var distToCurrent = Vector3.Distance(pointOnLine, a);
var distToNext = Vector3.Distance(a, b);
return WPs.OrderBy(wp => Vector3.Distance(point, wp.point)).ToArray()[0];
}
return distToCurrent / distToNext;
public float GetPercentageAroundTrack(Vector3 point)
{
var closestPoint = GetClosestPointOnPath(point, out Tuple<WaypointGroup.Waypoint, WaypointGroup.Waypoint> wps);
var looped = wps.Item2.normalizedDistance <= 0;
var segmentPercentage = (looped ? 1f : wps.Item2.normalizedDistance) - wps.Item1.normalizedDistance;
var segmentDistance = length * segmentPercentage;
var positionSegmentPercentage = Vector3.Distance(closestPoint, wps.Item1.point) / segmentDistance;
return Mathf.Lerp(wps.Item1.normalizedDistance, (looped ? 1f : wps.Item2.normalizedDistance), positionSegmentPercentage);
public Vector3 GetClosestPointOnPath(Vector3 point)
public Vector3 GetClosestPointOnPath(Vector3 point, out Tuple<Waypoint, Waypoint> wpIndices)
{
var closest = GetClosestWaypoint(point);
var next = GetNextWaypoint(closest);

var prevLine = FindNearestPointOnLine(closest.point, previous.point, point);
return Vector3.Distance(point, nextLine) < Vector3.Distance(point, prevLine) ? nextLine : prevLine;
var nextIsClosest = Vector3.Distance(point, nextLine) < Vector3.Distance(point, prevLine);
wpIndices = new Tuple<Waypoint, Waypoint>(nextIsClosest ? closest : previous, nextIsClosest ? next : closest);
return nextIsClosest ? nextLine : prevLine;
public Matrix4x4 GetClosestPointOnWaypoint(Vector3 point)
{
var sortedWPs = WPs.OrderBy(wp => Vector3.Distance(point, wp.point)).ToArray();

Vector3 lookVec;
if (wpA.index > wpB.index)
{

if ((wpA.index == 0 && wpB.index == WPs.Count - 1) || (wpB.index == 0 && wpA.index == WPs.Count - 1)) // if at the loop point we need to reverse the lookVec
lookVec = -lookVec;
return matrix;
}

var rotation = WPs[0].rotation;
if(Reverse)
rotation *= Quaternion.AngleAxis(180f, Vector3.up);
var pos = new Vector3(i % 2 == 0 ? 3f : -3f, 0f, i * 6f + 4f);
var pos = new Vector3(i % 2 == 0 ? 3f : -3f, 0f, i * 5f + 4f);
public float CalculateTrackDistance()
{
var distance = 0f;
for (var i = 1; i < WPs.Count; i++)
{
distance += Vector3.Distance(WPs[i - 1].point, WPs[i].point);
}
if (loop) // if the track is a loop then add the last>first distance
{
distance += Vector3.Distance(WPs[0].point, WPs[WPs.Count - 1].point);
}
var percentage = 0f;
for (var i = 1; i < WPs.Count; i++)
{
var segment = Vector3.Distance(WPs[i - 1].point, WPs[i].point);
percentage += segment / distance;
WPs[i].normalizedDistance = percentage;
}
return distance;
}
private static Vector3 FindNearestPointOnLine(Vector3 start, Vector3 end, Vector3 point)
{
var line = (end - start);

{
StartingPositions = GetStartPositions();
var c = Color.green;
var c = Reverse ? Color.red : Color.green;
var startBox = new Vector3(2f, 0.1f, 6f);
foreach (var startPos in StartingPositions)
{

Gizmos.color = c;
Gizmos.DrawWireCube(Vector3.zero, startBox);
}
}
}
}

34
Assets/Scripts/UI/MainMenuHelper.cs


UpdateBoatColor(boatTrimColorSelector.CurrentOption, false);
}
// private void OnDisable()
// {
// // level stuff
// levelSelector.updateVal -= SetLevel;
// lapSelector.updateVal -= SetLaps;
// reverseSelector.updateVal -= SetReverse;
// // boat stuff
// boatHullSelector.updateVal -= UpdateBoat;
// boatPrimaryColorSelector.updateVal -= UpdatePrimaryColor;
// boatTrimColorSelector.updateVal -= UpdateTrimColor;
// }
void UpdateBoat(int index)
private void UpdateBoat(int index)
RaceManager.Instance.SetHull(0, index);
RaceManager.SetHull(0, index);
for (int i = 0; i < boatMeshes.Length; i++)
{
boatMeshes[i].SetActive(i == index);

public void SetupSingleplayerGame()
{
RaceManager.Instance.SetupGame(RaceManager.GameType.Singleplayer);
RaceManager.SetGameType(RaceManager.GameType.Singleplayer);
RaceManager.Instance.SetupGame(RaceManager.GameType.Spectator);
RaceManager.SetGameType(RaceManager.GameType.Spectator);
private static void SetLevel(int index) { RaceManager.Instance.SetLevel(index); }
private static void SetLevel(int index) { RaceManager.SetLevel(index); }
private static void SetLaps(int index) { RaceManager.Instance.raceData.laps = ConstantData.Laps[index]; }
private static void SetLaps(int index) { RaceManager.RaceData.laps = ConstantData.Laps[index]; }
private static void SetReverse(int reverse) { RaceManager.Instance.raceData.reversed = reverse == 1; }
private static void SetReverse(int reverse) { RaceManager.RaceData.reversed = reverse == 1; }
public void StartRace() { RaceManager.Instance.LoadGame(); }
public void StartRace() { RaceManager.LoadGame(); }
public void SetSinglePlayerName(string playerName) { RaceManager.Instance.raceData.boats[0].boatName = playerName; }
public void SetSinglePlayerName(string playerName) { RaceManager.RaceData.boats[0].boatName = playerName; }
private void UpdatePrimaryColor(int index) { UpdateBoatColor(index, true); }

// update racedata
if (primary)
{
RaceManager.Instance.raceData.boats[0].livery.primaryColor = ConstantData.GetPaletteColor(index);
RaceManager.RaceData.boats[0].livery.primaryColor = ConstantData.GetPaletteColor(index);
RaceManager.Instance.raceData.boats[0].livery.trimColor = ConstantData.GetPaletteColor(index);
RaceManager.RaceData.boats[0].livery.trimColor = ConstantData.GetPaletteColor(index);
}
// update menu boats

97
Assets/Scripts/UI/RaceUI.cs


public TextMeshProUGUI timeLap;
public TextMeshProUGUI speedText;
public TextMeshProUGUI speedFormatText;
public AssetReference playerMarkerPrefab;
public RectTransform map;
public GameObject gameplayUi;
public GameObject raceStat;
[Header("Assets")]
public AssetReference playerMarker;
public AssetReference playerMapMarker;
public AssetReference raceStatsPlayer;
private int _playerIndex;
private int _totalLaps;

private float _smoothSpeedVel;
private AppSettings.SpeedFormat _speedFormat;
private RaceStatsPlayer[] _raceStats;
var manager = RaceManager.Instance;
_boat = manager.raceData.boats[_playerIndex].Boat;
_totalLaps = manager.GetLapCount();
_totalPlayers = manager.raceData.boats.Count;
_boat = RaceManager.RaceData.boats[_playerIndex].Boat;
_totalLaps = RaceManager.GetLapCount();
_totalPlayers = RaceManager.RaceData.boats.Count;
_timeOffset = Time.time;
switch (AppSettings.Instance.speedFormat)

}
StartCoroutine(SetupPlayerMarkers(player));
StartCoroutine(SetupPlayerMapMarkers());
StartCoroutine(CreateGameStats());
}
public void Disable()
{
gameObject.SetActive(false);
IEnumerator SetupPlayerMarkers(int player)
public void SetGameplayUi(bool enable)
{
if (enable)
{
foreach (var stat in _raceStats)
{
stat.UpdateStats();
}
}
gameplayUi.SetActive(enable);
}
public void SetGameStats(bool enable)
{
raceStat.SetActive(enable);
}
private IEnumerator CreateGameStats()
{
_raceStats = new RaceStatsPlayer[RaceManager.RaceData.boatCount];
for(var i = 0; i < RaceManager.RaceData.boatCount; i++)
{
var raceStatLoading = raceStatsPlayer.InstantiateAsync(raceStat.transform);
yield return raceStatLoading;
raceStatLoading.Result.name += RaceManager.RaceData.boats[i].boatName;
raceStatLoading.Result.TryGetComponent(out _raceStats[i]);
_raceStats[i].Setup(RaceManager.RaceData.boats[i].Boat);
}
}
private IEnumerator SetupPlayerMarkers(int player)
for (int i = 0; i < RaceManager.Instance.raceData.boats.Count; i++)
for (int i = 0; i < RaceManager.RaceData.boats.Count; i++)
var markerLoading = playerMarkerPrefab.InstantiateAsync(transform);
var markerLoading = playerMarker.InstantiateAsync(gameplayUi.transform);
markerLoading.Result.name += RaceManager.RaceData.boats[i].boatName;
pm.Setup(RaceManager.Instance.raceData.boats[i]);
pm.Setup(RaceManager.RaceData.boats[i]);
}
}
private IEnumerator SetupPlayerMapMarkers()
{
foreach (var boatData in RaceManager.RaceData.boats)
{
var mapMarkerLoading = playerMapMarker.InstantiateAsync(map);
yield return mapMarkerLoading; // wait for marker to load
if (mapMarkerLoading.Result.TryGetComponent<PlayerMapMarker>(out var pm))
pm.Setup(boatData);
}
}

public void LateUpdate()
{
var t = TimeSpan.FromSeconds(_boat.TotalTime);
timeTotal.text = $"time {t.Minutes:D2}:{t.Seconds:D2}.{t.Milliseconds:D3}";
var rawTime = RaceManager.RaceTime;
timeTotal.text = $"time {FormatRaceTime(rawTime)}";
var l = (_boat.SplitTimes.Count > 0) ? rawTime - _boat.SplitTimes[_boat.LapCount - 1] : 0f;
timeLap.text = $"lap {FormatRaceTime(l)}";
}
var l = _boat.TotalTime;
if (_boat.LapCount > 1)
l -= _boat.SplitTimes[_boat.LapCount - 2];
var lt = TimeSpan.FromSeconds(l);
timeLap.text = $"lap +{lt.Minutes:D2}:{lt.Seconds:D2}.{lt.Milliseconds:D3}";
public static string FormatRaceTime(float seconds)
{
var t = TimeSpan.FromSeconds(seconds);
return $"{t.Minutes:D2}:{t.Seconds:D2}.{t.Milliseconds:D3}";
}
}
}

20
Assets/Scripts/Utility/WaypointTest.cs


using BoatAttack;
using System;
using BoatAttack;
using UnityEngine;
public class WaypointTest : MonoBehaviour

public float segmentPercentage;
public float trackPercentage;
Gizmos.DrawLine(position, wpGroup.GetClosestPointOnPath(position));
var closestPoint =
wpGroup.GetClosestPointOnPath(position, out Tuple<WaypointGroup.Waypoint, WaypointGroup.Waypoint> wps);
Gizmos.DrawLine(position, closestPoint);
var loop = wps.Item2.normalizedDistance <= 0;
segmentPercentage = (loop ? 1f : wps.Item2.normalizedDistance) - wps.Item1.normalizedDistance;
var segmentDistance = wpGroup.length * segmentPercentage;
var positionSegmentPercentage = Vector3.Distance(closestPoint, wps.Item1.point) / segmentDistance;
trackPercentage = Mathf.Lerp(wps.Item1.normalizedDistance, (loop ? 1f : wps.Item2.normalizedDistance), positionSegmentPercentage);
}
}

12
Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Drop Shadow.mat


m_PrefabAsset: {fileID: 0}
m_Name: LiberationSans SDF - Drop Shadow
m_Shader: {fileID: 4800000, guid: fe393ace9b354375a9cb14cdbbc28be4, type: 3}
m_ShaderKeywords: OUTLINE_ON UNDERLAY_ON
m_ShaderKeywords: UNDERLAY_ON
m_LightmapFlags: 5
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0

- _Reflectivity: 10
- _ScaleRatioA: 0.9
- _ScaleRatioB: 0.73125
- _ScaleRatioC: 0.64125
- _ScaleRatioC: 0.513
- _ScaleX: 1
- _ScaleY: 1
- _ShaderFlags: 0

- _TextureHeight: 1024
- _TextureWidth: 1024
- _UnderlayDilate: 0
- _UnderlayOffsetX: 0.5
- _UnderlayOffsetY: -0.5
- _UnderlaySoftness: 0.05
- _UnderlayOffsetX: 1
- _UnderlayOffsetY: 0
- _UnderlaySoftness: 0.25
- _VertexOffsetX: 0
- _VertexOffsetY: 0
- _WeightBold: 0.75

- _ReflectFaceColor: {r: 0, g: 0, b: 0, a: 1}
- _ReflectOutlineColor: {r: 0, g: 0, b: 0, a: 1}
- _SpecularColor: {r: 1, g: 1, b: 1, a: 1}
- _UnderlayColor: {r: 0, g: 0, b: 0, a: 0.5}
- _UnderlayColor: {r: 0.06354573, g: 0.20683518, b: 0.26415092, a: 0.6392157}

192
Assets/scenes/demo_Island.unity


m_Name:
m_EditorClassIdentifier:
wpGroup: {fileID: 1821773010}
segmentPercentage: 1
trackPercentage: 0.039363794
--- !u!4 &164750594
Transform:
m_ObjectHideFlags: 0

m_GameObject: {fileID: 164750592}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -75.27, y: 1.2, z: 66.8}
m_LocalPosition: {x: -119.9, y: 1.2, z: 13.7}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}

m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 2061336192}
- {fileID: 1490334303}
m_Father: {fileID: 0}
m_RootOrder: 2

m_Script: {fileID: 11500000, guid: 30b50fc06dfa846f189e6a884ed7088f, type: 3}
m_Name:
m_EditorClassIdentifier:
_time: 0.45
_autoIcrement: 0
_speed: -0.1
time: 0.45
autoIcrement: 0
speed: 1
_skybox: {fileID: 2100000, guid: e14f29569c2db49fdb0a5fd5b3e95b86, type: 2}
_skyboxColour:
serializedVersion: 2

- {fileID: 598956451}
- {fileID: 1011791627}
m_Father: {fileID: 208737146}
m_RootOrder: 1
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!320 &1490334304
PlayableDirector:

m_Father: {fileID: 1490334303}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1873663218
GameObject:
m_ObjectHideFlags: 3
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1873663219}
- component: {fileID: 1873663220}
- component: {fileID: 1873663221}
m_Layer: 0
m_Name: cm
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1873663219
Transform:
m_ObjectHideFlags: 3
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1873663218}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 78.97502, y: -56.122513, z: 54.445614}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 2061336192}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1873663220
MonoBehaviour:
m_ObjectHideFlags: 3
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1873663218}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ac0b09e7857660247b1477e93731de29, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &1873663221
MonoBehaviour:
m_ObjectHideFlags: 3
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1873663218}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 68bb026fafb42b14791938953eaace77, type: 3}
m_Name:
m_EditorClassIdentifier:
m_NoiseProfile: {fileID: 11400000, guid: 8608ec81ee27a15488d33f9dad239e91, type: 2}
m_AmplitudeGain: 0.2
m_FrequencyGain: 1
mNoiseOffsets: {x: -402.15027, y: -818.2488, z: 723.7754}
--- !u!1 &1881355359
GameObject:
m_ObjectHideFlags: 0

m_PositionOffset: 0
m_SearchRadius: 2
m_SearchResolution: 5
--- !u!1 &2061336191
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2061336192}
- component: {fileID: 2061336193}
- component: {fileID: 2061336194}
m_Layer: 0
m_Name: TempCam
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &2061336192
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2061336191}
m_LocalRotation: {x: 0.15989794, y: 0.8180529, z: -0.27892298, w: 0.47689015}
m_LocalPosition: {x: -48.77421, y: 6.880318, z: 55.289295}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 1873663219}
m_Father: {fileID: 208737146}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: -2.58, y: 430.44, z: -0.25300002}
--- !u!114 &2061336193
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2061336191}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 45e653bab7fb20e499bda25e1b646fea, type: 3}
m_Name:
m_EditorClassIdentifier:
m_ExcludedPropertiesInInspector:
- m_Script
m_LockStageInInspector:
m_StreamingVersion: 20170927
m_Priority: 10
m_StandbyUpdate: 0
m_LookAt: {fileID: 0}
m_Follow: {fileID: 0}
m_Lens:
FieldOfView: 60
OrthographicSize: 10
NearClipPlane: 0.2
FarClipPlane: 18000
Dutch: 0
LensShift: {x: 0, y: 0}
m_Transitions:
m_BlendHint: 0
m_InheritPosition: 0
m_OnCameraLive:
m_PersistentCalls:
m_Calls: []
m_LegacyBlendHint: 0
m_ComponentOwner: {fileID: 1873663219}
--- !u!114 &2061336194
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2061336191}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 172515602e62fb746b5d573b38a5fe58, type: 3}
m_Name:
m_EditorClassIdentifier:
isGlobal: 1
priority: 0
blendDistance: 0
weight: 1
sharedProfile: {fileID: 11400000, guid: 67a01c295e82045b2a327aedcbb4bdec, type: 2}
--- !u!1001 &6589000189408555943
PrefabInstance:
m_ObjectHideFlags: 0

propertyPath: m_Name
value: Island Level
objectReference: {fileID: 0}
- target: {fileID: 8367957410019747705, guid: e70416e3bc35d4004a9981d0ac102ba5,
type: 3}
propertyPath: m_ChildCameras.Array.size
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: e70416e3bc35d4004a9981d0ac102ba5, type: 3}
--- !u!4 &6589000189408555944 stripped

- target: {fileID: 7003470173341666312, guid: 530da10d6c4d9442e9e8d5eeb77a25d8,
type: 3}
propertyPath: m_LocalPosition.x
value: -48.77421
value: 4.409273
value: 6.880318
value: 38.868496
value: 55.289295
value: 72.38463
value: 0.15989794
value: 0.3307133
value: 0.8180529
value: 0.65137696
value: -0.27892298
value: -0.37939095
value: 0.47689015
value: 0.5678022
objectReference: {fileID: 0}
- target: {fileID: 7003470173341666312, guid: 530da10d6c4d9442e9e8d5eeb77a25d8,
type: 3}

type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7003470173341666315, guid: 530da10d6c4d9442e9e8d5eeb77a25d8,
type: 3}
propertyPath: near clip plane
value: 2
objectReference: {fileID: 0}
- target: {fileID: 7003470173341666315, guid: 530da10d6c4d9442e9e8d5eeb77a25d8,
type: 3}
propertyPath: far clip plane
value: 2000
objectReference: {fileID: 0}
- target: {fileID: 7003470173341666315, guid: 530da10d6c4d9442e9e8d5eeb77a25d8,
type: 3}
propertyPath: field of view
value: 40
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 530da10d6c4d9442e9e8d5eeb77a25d8, type: 3}

25
Assets/Materials/Checkpoint.mat


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Checkpoint
m_Shader: {fileID: -6465566751694194690, guid: 2acbf7e74813d47868cad8387461befd,
type: 3}
m_ShaderKeywords:
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses:
- SHADOWCASTER
m_SavedProperties:
serializedVersion: 3
m_TexEnvs: []
m_Floats: []
m_Colors: []

8
Assets/Materials/Checkpoint.mat.meta


fileFormatVersion: 2
guid: f8e9a5a4d2fe64b468543970ce0122d9
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 0
userData:
assetBundleName:
assetBundleVariant:

164
Assets/Objects/UI/PlayerMapMarker.prefab


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1945448827197797840
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 819696510986052958}
- component: {fileID: 140628402077312567}
- component: {fileID: 8251455453453692730}
m_Layer: 5
m_Name: Col2
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &819696510986052958
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1945448827197797840}
m_LocalRotation: {x: 0, y: 0, z: 0.38268343, w: 0.92387956}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 6559714379407293361}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 45}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 30, y: 30}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &140628402077312567
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1945448827197797840}
m_CullTransparentMesh: 0
--- !u!114 &8251455453453692730
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1945448827197797840}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 0
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: 92c7bbe7447cf4baf947b6dc165c177b, type: 3}
m_Type: 3
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 0.25
m_FillClockwise: 1
m_FillOrigin: 2
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &2536570277455445458
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6559714379407293361}
- component: {fileID: 4418411924675782604}
- component: {fileID: 7177177326816015316}
- component: {fileID: 5840951769666755810}
m_Layer: 5
m_Name: PlayerMapMarker
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &6559714379407293361
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2536570277455445458}
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:
- {fileID: 819696510986052958}
m_Father: {fileID: 0}
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: 0, y: 0}
m_SizeDelta: {x: 30, y: 30}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &4418411924675782604
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2536570277455445458}
m_CullTransparentMesh: 0
--- !u!114 &7177177326816015316
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2536570277455445458}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 0, b: 0, a: 1}
m_RaycastTarget: 0
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: 92c7bbe7447cf4baf947b6dc165c177b, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!114 &5840951769666755810
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2536570277455445458}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 66c72c4bafaab4d889b593bc1a11a639, type: 3}
m_Name:
m_EditorClassIdentifier:
primary: {fileID: 7177177326816015316}
secondary: {fileID: 8251455453453692730}

7
Assets/Objects/UI/PlayerMapMarker.prefab.meta


fileFormatVersion: 2
guid: d6294ade8f31d403eaab049b86f2ed11
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

899
Assets/Objects/UI/RaceStats_Player.prefab


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1459660083945636707
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2805909154493863314}
- component: {fileID: 851601147218821785}
- component: {fileID: 8410545364529771218}
m_Layer: 5
m_Name: Time
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &2805909154493863314
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1459660083945636707}
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: 1651242306443558259}
m_RootOrder: 4
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 200, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &851601147218821785
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1459660083945636707}
m_CullTransparentMesh: 0
--- !u!114 &8410545364529771218
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1459660083945636707}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, 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_text: 00:00.000
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4294967295
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_outlineColor:
serializedVersion: 2
rgba: 4278190080
m_fontSize: 36
m_fontSizeBase: 36
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_textAlignment: 513
m_characterSpacing: 5
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_enableWordWrapping: 1
m_wordWrappingRatios: 0
m_overflowMode: 1
m_firstOverflowCharacterIndex: -1
m_linkedTextComponent: {fileID: 0}
m_isLinkedTextComponent: 0
m_isTextTruncated: 0
m_enableKerning: 1
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
m_ignoreRectMaskCulling: 0
m_ignoreCulling: 1
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_VertexBufferAutoSizeReduction: 1
m_firstVisibleCharacter: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_textInfo:
textComponent: {fileID: 8410545364529771218}
characterCount: 9
spriteCount: 0
spaceCount: 0
wordCount: 3
linkCount: 0
lineCount: 1
pageCount: 1
materialCount: 1
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_spriteAnimator: {fileID: 0}
m_hasFontAssetChanged: 0
m_subTextObjects:
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!1 &2698428838123643335
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3849491572532317107}
- component: {fileID: 5371796125840864690}
- component: {fileID: 3608511208612296465}
m_Layer: 5
m_Name: BestLap
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &3849491572532317107
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2698428838123643335}
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: 1651242306443558259}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 200, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5371796125840864690
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2698428838123643335}
m_CullTransparentMesh: 0
--- !u!114 &3608511208612296465
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2698428838123643335}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, 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_text: 00:00.000
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4294967295
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_outlineColor:
serializedVersion: 2
rgba: 4278190080
m_fontSize: 36
m_fontSizeBase: 36
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_textAlignment: 513
m_characterSpacing: 5
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_enableWordWrapping: 1
m_wordWrappingRatios: 0
m_overflowMode: 1
m_firstOverflowCharacterIndex: -1
m_linkedTextComponent: {fileID: 0}
m_isLinkedTextComponent: 0
m_isTextTruncated: 0
m_enableKerning: 1
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
m_ignoreRectMaskCulling: 0
m_ignoreCulling: 1
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_VertexBufferAutoSizeReduction: 1
m_firstVisibleCharacter: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_textInfo:
textComponent: {fileID: 3608511208612296465}
characterCount: 9
spriteCount: 0
spaceCount: 0
wordCount: 3
linkCount: 0
lineCount: 1
pageCount: 1
materialCount: 1
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_spriteAnimator: {fileID: 0}
m_hasFontAssetChanged: 0
m_subTextObjects:
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!1 &3361683635333884076
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1651242306443558259}
- component: {fileID: 8632667853080850385}
- component: {fileID: 270868407313706351}
- component: {fileID: 7651148715158182635}
- component: {fileID: 2194370003346166560}
m_Layer: 5
m_Name: RaceStats_Player
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1651242306443558259
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3361683635333884076}
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:
- {fileID: 2427694164499877701}
- {fileID: 4853612697922662547}
- {fileID: 4738927921735069793}
- {fileID: 3849491572532317107}
- {fileID: 2805909154493863314}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 60}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &8632667853080850385
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3361683635333884076}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Padding:
m_Left: 10
m_Right: 10
m_Top: 0
m_Bottom: 0
m_ChildAlignment: 0
m_Spacing: 5
m_ChildForceExpandWidth: 1
m_ChildForceExpandHeight: 1
m_ChildControlWidth: 0
m_ChildControlHeight: 1
m_ChildScaleWidth: 0
m_ChildScaleHeight: 0
--- !u!222 &270868407313706351
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3361683635333884076}
m_CullTransparentMesh: 0
--- !u!114 &7651148715158182635
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3361683635333884076}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0.21176472, g: 0.8078432, b: 0.94117653, a: 0.5019608}
m_RaycastTarget: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: 92c7bbe7447cf4baf947b6dc165c177b, type: 3}
m_Type: 1
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 2
--- !u!114 &2194370003346166560
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3361683635333884076}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 21d89ad855159435bb924c6ec5544dd6, type: 3}
m_Name:
m_EditorClassIdentifier:
place: {fileID: 1155670549187173950}
playerName: {fileID: 5324532405065709284}
boatType: {fileID: 3393974456527619347}
bestLap: {fileID: 3608511208612296465}
time: {fileID: 8410545364529771218}
--- !u!1 &5906836751935656087
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4738927921735069793}
- component: {fileID: 5523800761215966796}
- component: {fileID: 3393974456527619347}
m_Layer: 5
m_Name: Boat
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &4738927921735069793
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5906836751935656087}
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: 1651242306443558259}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 260, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5523800761215966796
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5906836751935656087}
m_CullTransparentMesh: 0
--- !u!114 &3393974456527619347
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5906836751935656087}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, 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_text: Renegade
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4294967295
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_outlineColor:
serializedVersion: 2
rgba: 4278190080
m_fontSize: 36
m_fontSizeBase: 36
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_textAlignment: 513
m_characterSpacing: 5
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_enableWordWrapping: 1
m_wordWrappingRatios: 0
m_overflowMode: 1
m_firstOverflowCharacterIndex: -1
m_linkedTextComponent: {fileID: 0}
m_isLinkedTextComponent: 0
m_isTextTruncated: 0
m_enableKerning: 1
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
m_ignoreRectMaskCulling: 0
m_ignoreCulling: 1
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_VertexBufferAutoSizeReduction: 1
m_firstVisibleCharacter: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_textInfo:
textComponent: {fileID: 3393974456527619347}
characterCount: 8
spriteCount: 0
spaceCount: 0
wordCount: 1
linkCount: 0
lineCount: 1
pageCount: 1
materialCount: 1
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_spriteAnimator: {fileID: 0}
m_hasFontAssetChanged: 0
m_subTextObjects:
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!1 &8355593077391515718
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2427694164499877701}
- component: {fileID: 6432127212156477952}
- component: {fileID: 1155670549187173950}
m_Layer: 5
m_Name: Place
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &2427694164499877701
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8355593077391515718}
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: 1651242306443558259}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 100, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &6432127212156477952
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8355593077391515718}
m_CullTransparentMesh: 0
--- !u!114 &1155670549187173950
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8355593077391515718}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, 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_text: 1st
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4294967295
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_outlineColor:
serializedVersion: 2
rgba: 4278190080
m_fontSize: 36
m_fontSizeBase: 36
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_textAlignment: 513
m_characterSpacing: 5
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_enableWordWrapping: 1
m_wordWrappingRatios: 0
m_overflowMode: 1
m_firstOverflowCharacterIndex: -1
m_linkedTextComponent: {fileID: 0}
m_isLinkedTextComponent: 0
m_isTextTruncated: 0
m_enableKerning: 1
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
m_ignoreRectMaskCulling: 0
m_ignoreCulling: 1
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_VertexBufferAutoSizeReduction: 1
m_firstVisibleCharacter: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_textInfo:
textComponent: {fileID: 1155670549187173950}
characterCount: 3
spriteCount: 0
spaceCount: 0
wordCount: 1
linkCount: 0
lineCount: 1
pageCount: 1
materialCount: 1
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_spriteAnimator: {fileID: 0}
m_hasFontAssetChanged: 0
m_subTextObjects:
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!1 &9120483241784819981
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4853612697922662547}
- component: {fileID: 313783800436006203}
- component: {fileID: 5324532405065709284}
m_Layer: 5
m_Name: Player
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &4853612697922662547
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9120483241784819981}
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: 1651242306443558259}
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: 0, y: 0}
m_SizeDelta: {x: 400, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &313783800436006203
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9120483241784819981}
m_CullTransparentMesh: 0
--- !u!114 &5324532405065709284
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9120483241784819981}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, 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_text: Verasl (AI)
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4294967295
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_outlineColor:
serializedVersion: 2
rgba: 4278190080
m_fontSize: 36
m_fontSizeBase: 36
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_textAlignment: 513
m_characterSpacing: 5
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_enableWordWrapping: 1
m_wordWrappingRatios: 0
m_overflowMode: 1
m_firstOverflowCharacterIndex: -1
m_linkedTextComponent: {fileID: 0}
m_isLinkedTextComponent: 0
m_isTextTruncated: 0
m_enableKerning: 1
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
m_ignoreRectMaskCulling: 0
m_ignoreCulling: 1
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_VertexBufferAutoSizeReduction: 1
m_firstVisibleCharacter: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_textInfo:
textComponent: {fileID: 5324532405065709284}
characterCount: 11
spriteCount: 0
spaceCount: 1
wordCount: 2
linkCount: 0
lineCount: 1
pageCount: 1
materialCount: 1
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_spriteAnimator: {fileID: 0}
m_hasFontAssetChanged: 0
m_subTextObjects:
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}

7
Assets/Objects/UI/RaceStats_Player.prefab.meta


fileFormatVersion: 2
guid: 4823b5c430af647578af56a5d37f7276
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

8
Assets/Objects/UI/meshes.meta


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

81
Assets/Objects/misc/checkpoint.prefab


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &6274034011572116593
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7010558061549940322}
- component: {fileID: 2022547064098935892}
- component: {fileID: 5705232510240925869}
m_Layer: 0
m_Name: checkpoint
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &7010558061549940322
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6274034011572116593}
m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: -90.12, y: 0, z: -12.98}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &2022547064098935892
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6274034011572116593}
m_Mesh: {fileID: 3185056376471686388, guid: ac3cbcf257fba4d8ab74976d548b630e, type: 3}
--- !u!23 &5705232510240925869
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6274034011572116593}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: f8e9a5a4d2fe64b468543970ce0122d9, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0

7
Assets/Objects/misc/checkpoint.prefab.meta


fileFormatVersion: 2
guid: 5b930c10a697b4d8c9c8084e03800523
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

57
Assets/Scripts/UI/PlayerMapMarker.cs


using TMPro;
using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.UI;
namespace BoatAttack.UI
{
public class PlayerMapMarker : MonoBehaviour
{
public Image primary;
public Image secondary;
private RectTransform _rect;
private BoatData _boatData;
private Boat _boat;
private Transform _boatTransform;
private float _scale;
private int _playerCount;
private void OnEnable()
{
RenderPipelineManager.beginFrameRendering += UpdatePosition;
}
private void OnDisable()
{
RenderPipelineManager.beginFrameRendering -= UpdatePosition;
}
public void Setup(BoatData boat, float scale = 0.0028f) // TODO magic number for mini map size
{
_boatData = boat;
_boat = boat.Boat;
_boatTransform = boat.Boat.transform;
_rect = transform as RectTransform;
_scale = scale;
var p = _boatData.livery.primaryColor;
p.a = 1f;
primary.color = p;
var t = _boatData.livery.trimColor;
t.a = 1f;
secondary.color = t;
_playerCount = RaceManager.RaceData.boatCount;
}
private void UpdatePosition(ScriptableRenderContext context, Camera[] cameras)
{
if (_boatData == null || Camera.main == null) return; // if no boat or camera, the player marker cannot work
var position = _boatTransform.position;
_rect.anchorMin = _rect.anchorMax = Vector2.one * 0.5f + new Vector2(position.x, position.z) * _scale;
_rect.SetSiblingIndex(_playerCount - _boat.Place + 1);
}
}
}

11
Assets/Scripts/UI/PlayerMapMarker.cs.meta


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

78
Assets/Scripts/UI/RaceStatsPlayer.cs


using System;
using System.Collections.Generic;
using System.Linq;
using TMPro;
using UnityEngine;
namespace BoatAttack.UI
{
public class RaceStatsPlayer : MonoBehaviour
{
public TextMeshProUGUI place;
public TextMeshProUGUI playerName;
public TextMeshProUGUI boatType;
public TextMeshProUGUI bestLap;
public TextMeshProUGUI time;
private Boat _boat;
private int _place = -1;
private bool _update = true;
public void Setup(Boat boat)
{
_boat = boat;
playerName.text = _boat.name;
boatType.text = "TODO"; // TODO - need to implement
}
private void Update()
{
if (!_update) return;
UpdateStats();
}
private void LateUpdate()
{
_update = !_boat.MatchComplete;
}
public void UpdateStats()
{
_place = _boat.Place;
transform.SetSiblingIndex(_place);
place.text = OrdinalNumber(_boat.Place);
var bestLapTime = BestLapFromSplitTimes(_boat.SplitTimes);
bestLap.text = bestLapTime > 0 ? RaceUI.FormatRaceTime(bestLapTime) : "N/A";
var totalTime = _boat.MatchComplete ? _boat.SplitTimes.Last() : RaceManager.RaceTime;
time.text = RaceUI.FormatRaceTime(totalTime);
}
public static string OrdinalNumber(int num)
{
var number = num.ToString();
if (number.EndsWith("11")) return $"{number}th";
if (number.EndsWith("12")) return $"{number}th";
if (number.EndsWith("13")) return $"{number}th";
if (number.EndsWith("1")) return $"{number}st";
if (number.EndsWith("2")) return $"{number}nd";
if (number.EndsWith("3")) return $"{number}rd";
return $"{number}th";
}
public static float BestLapFromSplitTimes(List<float> splits)
{
// ignore 0 as it's the beginning of the race
if (splits.Count <= 1) return 0;
var fastestLap = Mathf.Infinity;
for (var i = 1; i < splits.Count; i++)
{
var lap = splits[i] - splits[i - 1];
fastestLap = lap < fastestLap ? lap : fastestLap;
}
return fastestLap;
}
}
}

11
Assets/Scripts/UI/RaceStatsPlayer.cs.meta


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

452
Assets/Shaders/CheckpointShader.shadergraph
文件差异内容过多而无法显示
查看文件

10
Assets/Shaders/CheckpointShader.shadergraph.meta


fileFormatVersion: 2
guid: 2acbf7e74813d47868cad8387461befd
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3}

75
Assets/Objects/UI/meshes/checkpoint.fbx


Kaydara FBX Binary L� FBXHeaderExtensiontFBXHeaderVersionI��
FBXVersionIL�EncryptionTypeI)CreationTimeStampVersionI�9YearI�\MonthI}DayI�HourI�MinuteI#�SecondI MillisecondIr)CreatorS$FBX SDK/FBX Plugins version 2018.1.1� ' SceneInfoSGlobalInfoSceneInfoSUserData� TypeSUserData
VersionIdPMetaDataPVersionId}TitleS
checkpoint�SubjectS�AuthorS�KeywordsSRevisionS7CommentSu Properties70�PS DocumentUrlSKStringSUrlSSS/Users/andrem/Documents/GitRepos/BoatAttack/Assets/Objects/UI/meshes/checkpoint.fbx��PSSrcDocumentUrlSKStringSUrlSSS/Users/andrem/Documents/GitRepos/BoatAttack/Assets/Objects/UI/meshes/checkpoint.fbx�$PSOriginalSCompoundSSKEPSOriginal|ApplicationVendorSKStringSSS The Foundry�<PSOriginal|ApplicationNameSKStringSSSMODO�;PSOriginal|ApplicationVersionSKStringSSS]MPSOriginal|DateTime_GMTSDateTimeSSS05/01/2020 16:35:19.000�1PSOriginal|FileNameSKStringSSS�%PS LastSavedSCompoundSSGFPSLastSaved|ApplicationVendorSKStringSSS The Foundry�=PSLastSaved|ApplicationNameSKStringSSSMODO�<PSLastSaved|ApplicationVersionSKStringSSS\ NPSLastSaved|DateTime_GMTSDateTimeSSS05/01/2020 16:35:19.000� FileIdR)�"��*�ȵ¹*�.��
 CreationTimeS2020-01-05 16:35:19:000t
8CreatorS3FBX SDK/FBX Plugins version 2018.1.1 build=20170505GlobalSettings�
VersionI�� Properties70( )PSUpAxisSintSIntegerSIo -PS
UpAxisSignSintSIntegerSI� ,PS FrontAxisSintSIntegerSI� 0PS FrontAxisSignSintSIntegerSIE ,PS CoordAxisSintSIntegerSI� 0PS CoordAxisSignSintSIntegerSI� 1PSOriginalUpAxisSintSIntegerSI����) 5PSOriginalUpAxisSignSintSIntegerSI{ 8PSUnitScaleFactorSdoubleSNumberSD�?� @PSOriginalUnitScaleFactorSdoubleSNumberSD�?7HPS AmbientColorSColorRGBSColorSDDD�APS DefaultCameraSKStringSSSProducer Perspective�%PSTimeModeSenumSSI )PS TimeProtocolSenumSSIZ,PSSnapOnFrameModeSenumSSI�3PS TimeSpanStartSKTimeSTimeSL�2PS TimeSpanStopSKTimeSTimeSLp6��5E8PSCustomFrameRateSdoubleSNumberSD���&PS
TimeMarkerSCompoundSS�4PSCurrentTimeMarkerSintSIntegerSI����� DocumentsJCountI�DocumentL�;F`SSSceneN Properties70�&PS SourceObjectSobjectSS53PSActiveAnimStackNameSKStringSSSx RootNodeL�
References> Definitions/VersionIdRCountI�
ObjectTypeSGlobalSettings�CountI�
ObjectTypeSGeometryCountI� PropertyTemplateSFbxMesht Properties70�APSColorSColorRGBSColorSD�������?D�������?D�������?*DPSBBoxMinSVector3DSVectorSDDD�DPSBBoxMaxSVector3DSVectorSDDD�/PSPrimary VisibilitySboolSSI*PS Casts ShadowsSboolSSI[,PSReceive ShadowsSboolSSI�-
ObjectTypeSModel�CountI�- PropertyTemplateSFbxNode�- Properties70�2PSQuaternionInterpolateSenumSSIKPSRotationOffsetSVector3DSVectorSDDDeJPS RotationPivotSVector3DSVectorSDDD�JPS ScalingOffsetSVector3DSVectorSDDD,IPS ScalingPivotSVector3DSVectorSDDDt.PSTranslationActiveSboolSSI�KPSTranslationMinSVector3DSVectorSDDD>KPSTranslationMaxSVector3DSVectorSDDD�,PSTranslationMinXSboolSSI�,PSTranslationMinYSboolSSI,PSTranslationMinZSboolSSIV,PSTranslationMaxXSboolSSI�,PSTranslationMaxYSboolSSI�,PSTranslationMaxZSboolSSI&*PS RotationOrderSenumSSIv6PSRotationSpaceForLimitOnlySboolSSI�;PSRotationStiffnessXSdoubleSNumberSD ;PSRotationStiffnessYSdoubleSNumberSDu;PSRotationStiffnessZSdoubleSNumberSD�0PSAxisLenSdoubleSNumberSD$@!HPS PreRotationSVector3DSVectorSDDD�IPS PostRotationSVector3DSVectorSDDD�+PSRotationActiveSboolSSI+HPS RotationMinSVector3DSVectorSDDD�HPS RotationMaxSVector3DSVectorSDDD�)PS RotationMinXSboolSSI )PS RotationMinYSboolSSIV )PS RotationMinZSboolSSI� )PS RotationMaxXSboolSSI� )PS RotationMaxYSboolSSI!)PS RotationMaxZSboolSSIa!(PS InheritTypeSenumSSI�!*PS ScalingActiveSboolSSI"GPS
ScalingMinSVector3DSVectorSDDDg"GPS
ScalingMaxSVector3DSVectorSD�?D�?D�?�"(PS ScalingMinXSboolSSI�"(PS ScalingMinYSboolSSI-#(PS ScalingMinZSboolSSIo#(PS ScalingMaxXSboolSSI�#(PS ScalingMaxYSboolSSI�#(PS ScalingMaxZSboolSSI^$QPSGeometricTranslationSVector3DSVectorSDDD�$NPSGeometricRotationSVector3DSVectorSDDD-%MPSGeometricScalingSVector3DSVectorSD�?D�?D�?}%6PS MinDampRangeXSdoubleSNumberSD�%6PS MinDampRangeYSdoubleSNumberSD&6PS MinDampRangeZSdoubleSNumberSDm&6PS MaxDampRangeXSdoubleSNumberSD�&6PS MaxDampRangeYSdoubleSNumberSD '6PS MaxDampRangeZSdoubleSNumberSD`'9PSMinDampStrengthXSdoubleSNumberSD�'9PSMinDampStrengthYSdoubleSNumberSD(9PSMinDampStrengthZSdoubleSNumberSDY(9PSMaxDampStrengthXSdoubleSNumberSD�(9PSMaxDampStrengthYSdoubleSNumberSD�(9PSMaxDampStrengthZSdoubleSNumberSDP)7PSPreferedAngleXSdoubleSNumberSD�)7PSPreferedAngleYSdoubleSNumberSD�)7PSPreferedAngleZSdoubleSNumberSD4*(PSLookAtPropertySobjectSSx**PSUpVectorPropertySobjectSS�*!PSShowSboolSSI+8PSNegativePercentShapeSupportSboolSSIW+8PSDefaultAttributeIndexSintSIntegerSI�����+#PSFreezeSboolSSI�+#PSLODBoxSboolSSI9,NPSLcl TranslationSLcl TranslationSSADDD�,HPS Lcl RotationS Lcl RotationSSADDD�,FPS Lcl ScalingS Lcl ScalingSSAD�?D�?D�?G-2PS
VisibilityS
VisibilitySSAD�?�-EPSVisibility InheritanceSVisibility InheritanceSSIO6
ObjectTypeSMaterialD.CountI66PropertyTemplateSFbxSurfacePhong6 Properties70�.1PS ShadingModelSKStringSSSPhong2/'PS
MultiLayerSboolSSI�/BPS EmissiveColorSColorSSADDD�/2PSEmissiveFactorSNumberSSAD�?50APS AmbientColorSColorSSAD�������?D�������?D�������?�01PS AmbientFactorSNumberSSAD�?�0APS DiffuseColorSColorSSAD�������?D�������?D�������?&11PS DiffuseFactorSNumberSSAD�?�1APSBumpSVector3DSVectorSDDD�1FPS NormalMapSVector3DSVectorSDDD.23PS
BumpFactorSdoubleSNumberSD�?�2EPSTransparentColorSColorSSADDD�26PSTransparencyFactorSNumberSSADD3MPSDisplacementColorSColorRGBSColorSDDD�3;PSDisplacementFactorSdoubleSNumberSD�?4SPSVectorDisplacementColorSColorRGBSColorSDDDa4APSVectorDisplacementFactorSdoubleSNumberSD�?�4BPS SpecularColorSColorSSAD�������?D�������?D�������? 52PSSpecularFactorSNumberSSAD�?X55PSShininessExponentSNumberSSAD4@�5DPSReflectionColorSColorSSADDD64PSReflectionFactorSNumberSSAD�?�8
ObjectTypeSAnimationStack�6CountI�8PropertyTemplateS FbxAnimStack�8 Properties70L7+PS DescriptionSKStringSSS�70PS
LocalStartSKTimeSTimeSL�7/PS LocalStopSKTimeSTimeSL-84PSReferenceStartSKTimeSTimeSLz83PS ReferenceStopSKTimeSTimeSLB<
ObjectTypeSAnimationLayer9CountI)<PropertyTemplateS FbxAnimLayer< Properties70�9*PSWeightSNumberSSADY@�9!PSMuteSboolSSI7:!PSSoloSboolSSIr:!PSLockSboolSSI�:APSColorSColorRGBSColorSD�������?D�������?D�������? ;&PS BlendModeSenumSSI\;5PSRotationAccumulationModeSenumSSI�;2PSScaleAccumulationModeSenumSSI�;5PSBlendModeBypassS ULongLongSSL�=
ObjectTypeSAnimationCurveNode�<CountIk=PropertyTemplateSFbxAnimCurveNodeR= Properties709=PSdSCompoundSS�=
ObjectTypeSAnimationCurve�=CountI ��ObjectsXb!GeometryL0<F��S
GeometrySMesh ? Properties70�>@PSPolygonPartNamesS
stringlistSSUISDefault�E\VerticesddOx]�mh�e�Ge#Q�����R�˷Ybkwk�h/CKf�A"m%� \5�nk�E ��2�$c ��F�]F��B����Є�jY�������x?v������u�����XRb��������ٿ{~� _Z|`m�x��7�������7�m�-֬�g�3_Y�,~���h������/����}:��}j���W,�;����OuF�� ��߻��+c���t�<p��E��'����7�_�-��Y���-�|:|8��E����h�N��"uG�w}�”��'&\'��矴/����x=�������z��Ot���+O��Op��>�\:���.ݪ�� �:U7�n��������e)��������\�}�����\�Q_���)�Os�}��p�]����B�������a~
��e�ľP�G��� \���\���\���\���\��� \����:�����h��Ҿ�/�C����n�I��_���>�^�*�Ƌ�}����>^ �X2����Lx�7:9+�;��w꽞���Z�[Xgq�x��`���-��8'�O��}�� f���zs�-�w��<�1Z��)�'/X��hq��r68��"��M8:�EtE�]�U��;X��hq���2p� �;Z����W��C�����p�����/^������/�^p�]�?���u�\������y�K������N��<��}a~��`y������z�����~_/����W��g~���\rp�\}A8���P8���ho�p}�S����7p͛�Opͧ�gp�3ϕ��_gg�/|�}����R_t��Q����W}�.����:���ꖟ�|"��w=�%���E�o$������)ӛ97,�\,�<��{�w�v!���+w~��)�,]6���9O����`��G�I��J�j�S~I�����_<Ӯ�� .=����������ş�H����k+Kum�a���W�v1�k*oJ�_z��5��v���[�_J���K <��?��s�9<�)�L\�5�H�e+?O��~��q���/�L�#6?�~?J���{��}do[z�KO㢡ijd���#��Gz��L<��N<ʯ`���i�.�gz������1���\ܳ���?.=Mo�J<�v$��?瑞� M��9p>�(�������g�}��W |�����J���}�"��.�w��?瑞U��W�?��=���PV/u��e����eY?���}�֛�H�$?�'���Ð�����0o�ټ1��<�<�s������/������~��>�Wg��f�>��K�#=]���'�G�?$j~� ��!Q��r����O8��5?9���W���>?����x��h�K������#~�<�#���}>~�z�\�����㟯����m���KO�#=�!�����|���҃�;������\��a�3� .=9�������_�\��S�\z��`g�\�~��'���~����`���������3~.=�>�|�0�Y���<҃r}�����D�Sg��(=z����ʗ����ғ�H���|�~?>�?$J�޿�!����\zr�������~�{����C������C���C��!Qzr��ɫ���L�\�HePolygonVertexIndexiPXx-�i�t��UJ�ҡ$EH�SKe+��:vU���niS�(�K���-,i;��t�S�^ ]�U�Y萫��o��������fddd\�b�����&y��J_m���z}U�{�}� �y���׺� ��ot��=���
~�ӗ'�a��Mlxwlҗ%�fЍmx!~ԍ��ͺ� �[�����[u~;���ɻ�����������Ϻ� ��_�E�;��� ��_���;ڝ�� ��.}A��[�o�;`����6�W�g��c�>7y;��>dž�������v��e����>+����>ӆ߂?t��7�?�6< �ӓ����l�M8�OM~��G�b�o�a]#y+{D�l�[��>)y�=�����q\�����W�`ï��Z�����c�G *u�}x����C��
��0M�1�:�<���P�8JQ���0L�Oۧ0�u��xc�H;�1\�?�QxV���P�R>�� =Ѿ�r ��/`��)v2*�_�����g�WP�>��A��}o�H����P�g�Yx=u�L�A/��}sQ����(���X�<>!_/�c rt�B,F�^j?�rd��O� m�*����_�ϐ�W�/��:� �AK�?�~� �I�Edgesi�x�ik�1�sccf�06�m���m66L!�B!�B!�B!��Ν;w�ܹ�|x?��8�LIJS���Jy�'�JDR�(�M թA,qԢ��%�D��DC�L
��єf��A 2ɢ���K����B�ӑ":љ.t���AOzћ>����@1�! e��HF1�1�e���D&1�)Leә�Lf1�9�e�Y�B��%,e�Y�JV��5�e���F6��-le���Nv��=�e�9�Aq�#��9�INq�3�����E.q�+\�׹�Mnq�;���y�C��'<��y�K^��7�����G>��/|����O~��?���b'�L)JS���#�P*F8T��T!��DS��S�X��Em�O=H�> H�!�I&�T��FS��N-hI&Y�&�riC����B�Ӂ��"7p�JGeometryVersionI|pRLayerElementNormalItJVersionIf�J NameSNormals�JMappingInformationTypeSByPolygonVertex#KReferenceInformationTypeS IndexToDirectXNNormalsd�xm�MHTQ�oQ1A�0��Da �E�(��"!�i�"H����.�B��0k�6 ���>B��U~̫H,ЅԀ�J+�IZ����ϽW����;��<��]Bw�Þj��B��g�B�J��4<lꭩ"��o����� � ��8����B\���Y0������|/���K��g[ ���+9w�~ؖ9̹� �{
q��t�;�-���������>ʹ}��vC5���΃�R�=������*?p�n�=���x�y�|�M�������}�p�ө��x���繑�t���U�/=�~ɵ1�^�h#������W��.�#�i���Ωj�|��W���� _O�K'��m��,�����e�������� �w����Կ��?�ے��̀���<�;���Ow�?v}��o��q>w��� n�d_t
<��M���\�woE�;g��>���ipg2��}[��o����9���Αwn4`���B�߮s�d�1�8�#�[TXy�rj�)_�9b��;p�n���3�|�h
�� j�U���7�������A:g�}s��[���D�����Wp�|�ΓB�%��^���]:�ŜOr`�����R�]A��,� 5D�_uK��!��y��s1�C��G)iVF��=$�<���Cp[�������C�W�s��!�-x���ĕ���<���M<����Cpx�=�����!��Ct�!��!8��ۂ�4+ѹ���!��y�7A�����{H{�C��C����Ɂ��=�!u�!fx��=� ѩ��F�B�PuNormalsWdMhWRD NormalsIndexiP7x}��NPQAP�BSD�(X(��������L�;Y�p�ɝ��m ��|�{t2D'�tr�N�������<��Gt򘾋'�O��d�N&�d�N���)�<��:yN'䭗�빽��빽��빽��빽��빽���wm���^����^����^����^����^���~�ȋ��%-���U�>O��x]�/��} ���Z����E�*-���]�����cѾN�� �,ڷh�� >�_h�����Z���^ѾO���V�������Z��Ӣ�-�¯��7-����h�C�� �,گh����״x�(�$!ATLayerElementColorI�RVersionIe�R
NameSColor.SMappingInformationTypeSByPolygonVertexqSReferenceInformationTypeS IndexToDirect�SMColorsd@�?�?�?(T(
ColorIndexiPxc`�!0rC���Q<���`�VLayerElementColorI�TVersionIe�TNameSVal�TMappingInformationTypeSByPolygonVertex@UReferenceInformationTypeS IndexToDirect�UMColorsd@����?�U(
ColorIndexiPxc`�!0rC���Q<���`�<]LayerElementUVIaVVersionIe�V NameSTexture�VMappingInformationTypeSByPolygonVertexWReferenceInformationTypeS IndexToDirect3[UVd��xu�M�PU�O2�QТ�@�@l�6��t7�"]�h!n!}�ą+]\�
GM� 2�H" 4DR�;SR���@�A��t4ǖIRĽ����������s�9��9��Y{�Ȗ��=�������~<� �{���6�;5ĵ?��GfS|���s����j:�|���7��C{�Ŀ:�S����}��C0����0��Ԧo������w��.�w�Wv��s_����П��_�kL��;���x�o��>?�~8�������N��S��y�܇?v�}���x���������.��3�6��y0�ڡ�w��������[���/ȯ��{o��>�rv髜&�)v毊�]�5�����;���L���E7����g������W�Ï=cX�|��TOms�u���q�/O���F�M���^����5��>���_{lG��?�Źxޏ?����o|�M�_Kq�~�I|��� ���D����-�57'�8�I{ך�����)73����__O�.�;�%��Aw�\�a����μ�Ӗ��������=����G~��V������U~�:�����؆���=�G����Q?�W۞�尋��������s=�>z�t|�_�N{�N���v}��/���O���0������ě)z���|�[��-�՜X��Rg�_��թ��ᜧS����Љ�?{ �٢G醾��ٹT����G߉8\���_��^э_�y�Ǘ��
ӽ�3K��ݓ��xn��ݜ_��x���C<j�x��������PҡWM}�ꓗNm��Io�KY���y��FsH�[�ڔ7���� �ٿ�W��Frm�����E{�i��Y�N[���|�5�-v�G�x,vxR>�X�:3x��ᅽ�����h�=q�g�;N����w���M��xg�K7�5����)<)�V��K���b��~�?���������W�;��'���J<xgϩ�A�y���9���.�
���Z�ύ���I�[����������Љ�=\�邵�ʜ�~��;z��ß�\�����@[��#]�UVIndexiP�x-�W�񿑑��E�T��dd�l2�=22*d��d����T2�Bė��s�{���缵�@���m�_�f���c�j|5�'�0�<7�[�0�K<5u��!*M��L��M}wL��M����A���p���q���q���p���(4�?�5�O���1Θ�N��8���
L]�æ>�\S��>S��nS��6S��So�SoE��/a��7b��נ��+q������q�ԧ���u�o���3�^,5�,6�&d���X��HG�����y�+��l�,v�)� L�Tw#���6 �1�=���_;c1�=��_;��ƮB"�a(��̞�o���݇��_1��d�o�����B4z�{���1��.�twf������i���`;�ׁm�kw�c����A(ں���� a� ���������ݟ�X�氭���-�(����h���&�N�����z^LayerElementMaterialI�]VersionIe�]NameS�] MappingInformationTypeSAllSame3^ReferenceInformationTypeS IndexToDirectf^ MaterialsiEaLayerI�^VersionIda_ LayerElement _TypeSLayerElementNormalH_
TypedIndexI�_ LayerElement�_TypeSLayerElementMaterial�_
TypedIndexI�` LayerElementU`TypeSLayerElementColor}`
TypedIndexI,a LayerElement�`TypeSLayerElementUVa
TypedIndexI?bLayerI�aVersionId&b LayerElement�aTypeSLayerElementColor b
TypedIndexIe(ModelL�0 �SCheckpointModelSMesh�bVersionI��d Properties70,c*PS RotationOrderSenumSSIqc+PSRotationActiveSboolSSI�cGPS
ScalingMaxSVector3DSVectorSDDD$d8PSDefaultAttributeIndexSintSIntegerSI�dEPSVisibility InheritanceSVisibility InheritanceSSI�dShadingCY�dCullingS
CullingOff�g1ModelL@ �SMODO_RenderSettingsModelSNullzeVersionI�>g Properties70fGPS
ScalingMaxSVector3DSVectorSDDDLf2PS
VisibilityS
VisibilitySSAD�f-PSCameraSKStringSSUSCamera�f/PS ResolutionXSintSIntegerSUI%g/PS ResolutionYSintSIntegerSUI�`gShadingCY�gCullingS
CullingOffk$MaterialL�����SDefaultMaterialShVersionIfAh
ShadingModelSphongih
MultiLayerIk Properties70�hEPSEmissiveSVector3DSVectorSDDDKiDPSAmbientSVector3DSVectorSD�������?D�������?D�������?�iDPSDiffuseSVector3DSVectorSD�������?D�������?D�������?jEPSSpecularSVector3DSVectorSD�������?D�������?D�������?Tj2PS ShininessSdoubleSNumberSD4@�j0PSOpacitySdoubleSNumberSD�?�j5PS ReflectivitySdoubleSNumberSD l&AnimationStackLЍM`STake 001AnimStackS�k Properties70�k/PS LocalStopSKTimeSTimeSLp6��5xsAnimationCurveL���`S AnimCurveSzl DefaultD�lKeyVerI��p�KeyTimely�R^�r��h��XHy���ׅ=�5:�>��"�����PW4� {� ���kt`*�(�|(�EΆ�� �E+rC��ġ�c�h^����h �� ^y4N
����
6�3 T�Q� �� �P�� J�n� � #q �k�� @ʋV�(@����;6娮�C]!ڡ�,�~^zyм.�"�^ty����KD6�j��)��h�Q`�с� ��l:gV����(�L��W�L� 2�C����tB)��^��漑o8F��y�T�׮�.6c:������$Q��v�4� �wl��l�Q]�(���B b�n� �C#(!�ך!X� "�^@�"����"N�e#�y]�#��K$D6ƽ$��z0%��.�%:Q�&����&� L�&0ln'�ʴ�'�(iS(&��(x��8)�C��)�:*n��*�^�+�Wv+d �+�y�[,�t�,Z6)A-��ݳ-���&.PQF�.��� /� �~/Flc�/��d0�(��0<��I1��4�1�C�.22���2�R3�^�3(���3zol4�y#�4��Q5p6��5�r� KeyValueFloatfy��r KeyAttrFlagsi&sKeyAttrDataFloatf  _sKeyAttrRefCountiy�zAnimationCurveL`��`S AnimCurveS�s DefaultD
tKeyVerI��w�KeyTimely�R^�r��h��XHy���ׅ=�5:�>��"�����PW4� {� ���kt`*�(�|(�EΆ�� �E+rC��ġ�c�h^����h �� ^y4N
����
6�3 T�Q� �� �P�� J�n� � #q �k�� @ʋV�(@����;6娮�C]!ڡ�,�~^zyм.�"�^ty����KD6�j��)��h�Q`�с� ��l:gV����(�L��W�L� 2�C����tB)��^��漑o8F��y�T�׮�.6c:������$Q��v�4� �wl��l�Q]�(���B b�n� �C#(!�ך!X� "�^@�"����"N�e#�y]�#��K$D6ƽ$��z0%��.�%:Q�&����&� L�&0ln'�ʴ�'�(iS(&��(x��8)�C��)�:*n��*�^�+�Wv+d �+�y�[,�t�,Z6)A-��ݳ-���&.PQF�.��� /� �~/Flc�/��d0�(��0<��I1��4�1�C�.22���2�R3�^�3(���3zol4�y#�4��Q5p6��5z� KeyValueFloatfy�Lz KeyAttrFlagsi�zKeyAttrDataFloatf  �zKeyAttrRefCountiyP�AnimationCurveL���`S AnimCurveSR{ DefaultDv{KeyVerI�k�KeyTimely�R^�r��h��XHy���ׅ=�5:�>��"�����PW4� {� ���kt`*�(�|(�EΆ�� �E+rC��ġ�c�h^����h �� ^y4N
����
6�3 T�Q� �� �P�� J�n� � #q �k�� @ʋV�(@����;6娮�C]!ڡ�,�~^zyм.�"�^ty����KD6�j��)��h�Q`�с� ��l:gV����(�L��W�L� 2�C����tB)��^��漑o8F��y�T�׮�.6c:������$Q��v�4� �wl��l�Q]�(���B b�n� �C#(!�ך!X� "�^@�"����"N�e#�y]�#��K$D6ƽ$��z0%��.�%:Q�&����&� L�&0ln'�ʴ�'�(iS(&��(x��8)�C��)�:*n��*�^�+�Wv+d �+�y�[,�t�,Z6)A-��ݳ-���&.PQF�.��� /� �~/Flc�/��d0�(��0<��I1��4�1�C�.22���2�R3�^�3(���3zol4�y#�4��Q5p6��5��� KeyValueFloatfy��� KeyAttrFlagsi��KeyAttrDataFloatf  7�KeyAttrRefCountiy��AnimationCurveL���`S AnimCurveS�� DefaultD��KeyVerI�׆�KeyTimely�R^�r��h��XHy���ׅ=�5:�>��"�����PW4� {� ���kt`*�(�|(�EΆ�� �E+rC��ġ�c�h^����h �� ^y4N
����
6�3 T�Q� �� �P�� J�n� � #q �k�� @ʋV�(@����;6娮�C]!ڡ�,�~^zyм.�"�^ty����KD6�j��)��h�Q`�с� ��l:gV����(�L��W�L� 2�C����tB)��^��漑o8F��y�T�׮�.6c:������$Q��v�4� �wl��l�Q]�(���B b�n� �C#(!�ך!X� "�^@�"����"N�e#�y]�#��K$D6ƽ$��z0%��.�%:Q�&����&� L�&0ln'�ʴ�'�(iS(&��(x��8)�C��)�:*n��*�^�+�Wv+d �+�y�[,�t�,Z6)A-��ݳ-���&.PQF�.��� /� �~/Flc�/��d0�(��0<��I1��4�1�C�.22���2�R3�^�3(���3zol4�y#�4��Q5p6��5��� KeyValueFloatfy��������������������������������������������������������������������������������������������������������������������������$� KeyAttrFlagsij�KeyAttrDataFloatf  ��KeyAttrRefCountiy(�AnimationCurveL���`S AnimCurveS*� DefaultDN�KeyVerI�C��KeyTimely�R^�r��h��XHy���ׅ=�5:�>��"�����PW4� {� ���kt`*�(�|(�EΆ�� �E+rC��ġ�c�h^����h �� ^y4N
����
6�3 T�Q� �� �P�� J�n� � #q �k�� @ʋV�(@����;6娮�C]!ڡ�,�~^zyм.�"�^ty����KD6�j��)��h�Q`�с� ��l:gV����(�L��W�L� 2�C����tB)��^��漑o8F��y�T�׮�.6c:������$Q��v�4� �wl��l�Q]�(���B b�n� �C#(!�ך!X� "�^@�"����"N�e#�y]�#��K$D6ƽ$��z0%��.�%:Q�&����&� L�&0ln'�ʴ�'�(iS(&��(x��8)�C��)�:*n��*�^�+�Wv+d �+�y�[,�t�,Z6)A-��ݳ-���&.PQF�.��� /� �~/Flc�/��d0�(��0<��I1��4�1�C�.22���2�R3�^�3(���3zol4�y#�4��Q5p6��5Z�� KeyValueFloatfy��� KeyAttrFlagsi֐KeyAttrDataFloatf  �KeyAttrRefCountiy��AnimationCurveL���`S AnimCurveS�� DefaultD��KeyVerI����KeyTimely�R^�r��h��XHy���ׅ=�5:�>��"�����PW4� {� ���kt`*�(�|(�EΆ�� �E+rC��ġ�c�h^����h �� ^y4N
����
6�3 T�Q� �� �P�� J�n� � #q �k�� @ʋV�(@����;6娮�C]!ڡ�,�~^zyм.�"�^ty����KD6�j��)��h�Q`�с� ��l:gV����(�L��W�L� 2�C����tB)��^��漑o8F��y�T�׮�.6c:������$Q��v�4� �wl��l�Q]�(���B b�n� �C#(!�ך!X� "�^@�"����"N�e#�y]�#��K$D6ƽ$��z0%��.�%:Q�&����&� L�&0ln'�ʴ�'�(iS(&��(x��8)�C��)�:*n��*�^�+�Wv+d �+�y�[,�t�,Z6)A-��ݳ-���&.PQF�.��� /� �~/Flc�/��d0�(��0<��I1��4�1�C�.22���2�R3�^�3(���3zol4�y#�4��Q5p6��5Ɨ� KeyValueFloatfy��� KeyAttrFlagsiB�KeyAttrDataFloatf  {�KeyAttrRefCountiy�AnimationCurveL���`S AnimCurveS� DefaultD�?&�KeyVerI���KeyTimely�R^�r��h��XHy���ׅ=�5:�>��"�����PW4� {� ���kt`*�(�|(�EΆ�� �E+rC��ġ�c�h^����h �� ^y4N
����
6�3 T�Q� �� �P�� J�n� � #q �k�� @ʋV�(@����;6娮�C]!ڡ�,�~^zyм.�"�^ty����KD6�j��)��h�Q`�с� ��l:gV����(�L��W�L� 2�C����tB)��^��漑o8F��y�T�׮�.6c:������$Q��v�4� �wl��l�Q]�(���B b�n� �C#(!�ך!X� "�^@�"����"N�e#�y]�#��K$D6ƽ$��z0%��.�%:Q�&����&� L�&0ln'�ʴ�'�(iS(&��(x��8)�C��)�:*n��*�^�+�Wv+d �+�y�[,�t�,Z6)A-��ݳ-���&.PQF�.��� /� �~/Flc�/��d0�(��0<��I1��4�1�C�.22���2�R3�^�3(���3zol4�y#�4��Q5p6��52�� KeyValueFloatfy��?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?h� KeyAttrFlagsi��KeyAttrDataFloatf  ��KeyAttrRefCountiyl�AnimationCurveL`��`S AnimCurveSn� DefaultD�?��KeyVerI����KeyTimely�R^�r��h��XHy���ׅ=�5:�>��"�����PW4� {� ���kt`*�(�|(�EΆ�� �E+rC��ġ�c�h^����h �� ^y4N
����
6�3 T�Q� �� �P�� J�n� � #q �k�� @ʋV�(@����;6娮�C]!ڡ�,�~^zyм.�"�^ty����KD6�j��)��h�Q`�с� ��l:gV����(�L��W�L� 2�C����tB)��^��漑o8F��y�T�׮�.6c:������$Q��v�4� �wl��l�Q]�(���B b�n� �C#(!�ך!X� "�^@�"����"N�e#�y]�#��K$D6ƽ$��z0%��.�%:Q�&����&� L�&0ln'�ʴ�'�(iS(&��(x��8)�C��)�:*n��*�^�+�Wv+d �+�y�[,�t�,Z6)A-��ݳ-���&.PQF�.��� /� �~/Flc�/��d0�(��0<��I1��4�1�C�.22���2�R3�^�3(���3zol4�y#�4��Q5p6��5��� KeyValueFloatfy��?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?Ԧ KeyAttrFlagsi�KeyAttrDataFloatf  S�KeyAttrRefCountiyخAnimationCurveL���`S AnimCurveSڧ DefaultD�?��KeyVerI����KeyTimely�R^�r��h��XHy���ׅ=�5:�>��"�����PW4� {� ���kt`*�(�|(�EΆ�� �E+rC��ġ�c�h^����h �� ^y4N
����
6�3 T�Q� �� �P�� J�n� � #q �k�� @ʋV�(@����;6娮�C]!ڡ�,�~^zyм.�"�^ty����KD6�j��)��h�Q`�с� ��l:gV����(�L��W�L� 2�C����tB)��^��漑o8F��y�T�׮�.6c:������$Q��v�4� �wl��l�Q]�(���B b�n� �C#(!�ך!X� "�^@�"����"N�e#�y]�#��K$D6ƽ$��z0%��.�%:Q�&����&� L�&0ln'�ʴ�'�(iS(&��(x��8)�C��)�:*n��*�^�+�Wv+d �+�y�[,�t�,Z6)A-��ݳ-���&.PQF�.��� /� �~/Flc�/��d0�(��0<��I1��4�1�C�.22���2�R3�^�3(���3zol4�y#�4��Q5p6��5
�� KeyValueFloatfy��?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?@� KeyAttrFlagsi��KeyAttrDataFloatf  ��KeyAttrRefCountiy@�#AnimationCurveNodeL��U`STAnimCurveNodeS'� Properties70��'PSd|XSNumberSSADͯ'PSd|YSNumberSSAD�'PSd|ZSNumberSSAD��#AnimationCurveNodeL�U`SRAnimCurveNodeS�� Properties70��'PSd|XSNumberSSAD5�'PSd|YSNumberSSADv�'PSd|ZSNumberSSAD�#AnimationCurveNodeL��U`SSAnimCurveNodeS�� Properties70\�'PSd|XSNumberSSAD�?��'PSd|YSNumberSSAD�?޲'PSd|ZSNumberSSAD�?w�'AnimationLayerL�=���SLayer 001AnimLayerS� Connections��CSOOL�0 �L�CSOOL0<F��L�0 �M�CSOOL�����L�0 ���-CSOPL��U`L�0 �SLcl Translationش*CSOPL�U`L�0 �S Lcl Rotation�)CSOPL��U`L�0 �S Lcl ScalingN�CSOOL�=���LЍM`��CSOOL��U`L�=�����CSOOL�U`L�=�����CSOOL��U`L�=���"�!CSOPL���`L��U`Sd|X]�!CSOPL`��`L��U`Sd|Y��!CSOPL���`L��U`Sd|ZӶ!CSOPL���`L�U`Sd|X�!CSOPL���`L�U`Sd|YI�!CSOPL���`L�U`Sd|Z��!CSOPL���`L��U`Sd|X��!CSOPL`��`L��U`Sd|Y��!CSOPL���`L��U`Sd|ZP�TakesV�CurrentS7� TakeSTake 001��FileNameS Take_001.tak�� LocalTimeLLp6��5� ReferenceTimeLLp6��5������h�r���/uL�Z�j���~�� �u�)

99
Assets/Objects/UI/meshes/checkpoint.fbx.meta


fileFormatVersion: 2
guid: ac3cbcf257fba4d8ab74976d548b630e
ModelImporter:
serializedVersion: 19300
internalIDToNameTable:
- first:
74: 1827226128182048838
second: Take 001
externalObjects: {}
materials:
materialImportMode: 0
materialName: 0
materialSearch: 1
materialLocation: 1
animations:
legacyGenerateAnimations: 4
bakeSimulation: 0
resampleCurves: 1
optimizeGameObjects: 0
motionNodeName:
rigImportErrors:
rigImportWarnings:
animationImportErrors:
animationImportWarnings:
animationRetargetingWarnings:
animationDoRetargetingWarnings: 0
importAnimatedCustomProperties: 0
importConstraints: 0
animationCompression: 1
animationRotationError: 0.5
animationPositionError: 0.5
animationScaleError: 0.5
animationWrapMode: 0
extraExposedTransformPaths: []
extraUserProperties: []
clipAnimations: []
isReadable: 0
meshes:
lODScreenPercentages: []
globalScale: 1
meshCompression: 0
addColliders: 0
useSRGBMaterialColor: 1
sortHierarchyByName: 0
importVisibility: 0
importBlendShapes: 0
importCameras: 0
importLights: 0
swapUVChannels: 0
generateSecondaryUV: 0
useFileUnits: 1
keepQuads: 0
weldVertices: 1
preserveHierarchy: 0
skinWeightsMode: 0
maxBonesPerVertex: 4
minBoneWeight: 0.001
meshOptimizationFlags: -1
indexFormat: 0
secondaryUVAngleDistortion: 8
secondaryUVAreaDistortion: 15.000001
secondaryUVHardAngle: 88
secondaryUVPackMargin: 4
useFileScale: 1
tangentSpace:
normalSmoothAngle: 60
normalImportMode: 2
tangentImportMode: 2
normalCalculationMode: 4
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
blendShapeNormalImportMode: 2
normalSmoothingSource: 0
referencedClips: []
importAnimation: 0
humanDescription:
serializedVersion: 3
human: []
skeleton: []
armTwist: 0.5
foreArmTwist: 0.5
upperLegTwist: 0.5
legTwist: 0.5
armStretch: 0.05
legStretch: 0.05
feetSpacing: 0
globalScale: 1
rootMotionBoneName:
hasTranslationDoF: 0
hasExtraRoot: 0
skeletonHasParents: 1
lastHumanDescriptionAvatarSource: {instanceID: 0}
autoGenerateAvatarMappingIfUnspecified: 1
animationType: 0
humanoidOversampling: 1
avatarSetup: 0
additionalBone: 0
userData:
assetBundleName:
assetBundleVariant:
正在加载...
取消
保存