diff --git a/Assets/Prefabs.meta b/Assets/Prefabs.meta
new file mode 100644
index 0000000..4c8c036
--- /dev/null
+++ b/Assets/Prefabs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 655c444d50a58d446ade327c2f1beea8
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Prefabs/Player.meta b/Assets/Prefabs/Player.meta
new file mode 100644
index 0000000..ceb686d
--- /dev/null
+++ b/Assets/Prefabs/Player.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 5029cde9d0840f44ca2868133f66ed69
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Prefabs/Player/Player.prefab b/Assets/Prefabs/Player/Player.prefab
new file mode 100644
index 0000000..1a30cdf
--- /dev/null
+++ b/Assets/Prefabs/Player/Player.prefab
@@ -0,0 +1,463 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &2699541614218734239
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2699541614218734238}
+ - component: {fileID: 2699541614218734235}
+ - component: {fileID: 2699541614218734236}
+ - component: {fileID: 2699541614218734237}
+ m_Layer: 0
+ m_Name: Capsule
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &2699541614218734238
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2699541614218734239}
+ 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: 2699541615817244671}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &2699541614218734235
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2699541614218734239}
+ m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!23 &2699541614218734236
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2699541614218734239}
+ 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_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: c0772b21f0f4f5d4fa3e104d18061880, 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
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!136 &2699541614218734237
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2699541614218734239}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ m_Radius: 0.5
+ m_Height: 2
+ m_Direction: 1
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!1 &2699541614725998678
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2699541614725998675}
+ - component: {fileID: 2699541614725998676}
+ - component: {fileID: 2699541614725998677}
+ - component: {fileID: 1719040015222051317}
+ m_Layer: 0
+ m_Name: Main Camera
+ m_TagString: MainCamera
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &2699541614725998675
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2699541614725998678}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0.45, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 6080732055766769769}
+ m_Father: {fileID: 2699541615817244671}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!20 &2699541614725998676
+Camera:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2699541614725998678}
+ m_Enabled: 1
+ serializedVersion: 2
+ m_ClearFlags: 1
+ m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
+ m_projectionMatrixMode: 1
+ m_GateFitMode: 2
+ m_FOVAxisMode: 0
+ m_SensorSize: {x: 36, y: 24}
+ m_LensShift: {x: 0, y: 0}
+ m_FocalLength: 50
+ m_NormalizedViewPortRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+ near clip plane: 0.3
+ far clip plane: 1000
+ field of view: 60
+ orthographic: 0
+ orthographic size: 5
+ m_Depth: -1
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingPath: -1
+ m_TargetTexture: {fileID: 0}
+ m_TargetDisplay: 0
+ m_TargetEye: 3
+ m_HDR: 1
+ m_AllowMSAA: 1
+ m_AllowDynamicResolution: 0
+ m_ForceIntoRT: 0
+ m_OcclusionCulling: 1
+ m_StereoConvergence: 10
+ m_StereoSeparation: 0.022
+--- !u!81 &2699541614725998677
+AudioListener:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2699541614725998678}
+ m_Enabled: 1
+--- !u!114 &1719040015222051317
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2699541614725998678}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: e96cb6065543e43c4a752faaa1468eb1, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ FixedSendsPerSecond: 20
+ AssumeSyncedSends: 1
+ InterpolatePosition: 1
+ SnapDistance: 10
+ InterpolateServer: 1
+ MinMeters: 0.15
+ MinDegrees: 1.5
+ ExtrapolatePosition: 0
+ MaxSendsToExtrapolate: 5
+ Channel:
+ EnableRange: 0
+ EnableNonProvokedResendChecks: 0
+ DistanceSendrate:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 3
+ time: 0
+ value: 20
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ weightedMode: 0
+ inWeight: 0
+ outWeight: 0
+ - serializedVersion: 3
+ time: 500
+ value: 20
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ weightedMode: 0
+ inWeight: 0
+ outWeight: 0
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 4
+--- !u!1 &2699541615817244657
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2699541615817244671}
+ - component: {fileID: 2699541615817244656}
+ - component: {fileID: 2699541615817244670}
+ - component: {fileID: 2158362131595646823}
+ - component: {fileID: 1931442515427953606}
+ m_Layer: 0
+ m_Name: Player
+ m_TagString: Player
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &2699541615817244671
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2699541615817244657}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0.14, y: 2, z: -1.9}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 2699541614218734238}
+ - {fileID: 2699541614725998675}
+ m_Father: {fileID: 0}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!143 &2699541615817244656
+CharacterController:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2699541615817244657}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ serializedVersion: 2
+ m_Height: 2
+ m_Radius: 0.5
+ m_SlopeLimit: 45
+ m_StepOffset: 0.3
+ m_SkinWidth: 0.08
+ m_MinMoveDistance: 0.001
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!114 &2699541615817244670
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2699541615817244657}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 75773a9e7fe83d2479dea1b0917cf7c6, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ gravity: 15
+ movementSpeed: 10
+ jumpSpeed: 10
+ maxPitch: 85
+ minPitch: -85
+ mouseSensitivity: 2
+--- !u!114 &2158362131595646823
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2699541615817244657}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ NetworkInstanceId: 0
+ PrefabHash: 1897319656204293034
+ PrefabHashGenerator: Player
+ AlwaysReplicateAsRoot: 0
+ DontDestroyWithOwner: 0
+--- !u!114 &1931442515427953606
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2699541615817244657}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: e96cb6065543e43c4a752faaa1468eb1, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ FixedSendsPerSecond: 20
+ AssumeSyncedSends: 1
+ InterpolatePosition: 1
+ SnapDistance: 10
+ InterpolateServer: 1
+ MinMeters: 0.15
+ MinDegrees: 1.5
+ ExtrapolatePosition: 0
+ MaxSendsToExtrapolate: 5
+ Channel:
+ EnableRange: 0
+ EnableNonProvokedResendChecks: 0
+ DistanceSendrate:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 3
+ time: 0
+ value: 20
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ weightedMode: 0
+ inWeight: 0
+ outWeight: 0
+ - serializedVersion: 3
+ time: 500
+ value: 20
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ weightedMode: 0
+ inWeight: 0
+ outWeight: 0
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 4
+--- !u!1 &3136625245200168079
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 6080732055766769769}
+ - component: {fileID: 8763778867933935618}
+ - component: {fileID: 7324518848491606944}
+ - component: {fileID: 8246762925149782923}
+ m_Layer: 0
+ m_Name: Cube
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &6080732055766769769
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3136625245200168079}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0.04000002, z: 0.30000007}
+ m_LocalScale: {x: 0.79905, y: 0.1703828, z: 0.55147}
+ m_Children: []
+ m_Father: {fileID: 2699541614725998675}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &8763778867933935618
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3136625245200168079}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!23 &7324518848491606944
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3136625245200168079}
+ 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_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: e14942a3b8d9aee40a5ba3869d1ad2a3, 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
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!65 &8246762925149782923
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3136625245200168079}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ serializedVersion: 2
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
diff --git a/Assets/Prefabs/Player/Player.prefab.meta b/Assets/Prefabs/Player/Player.prefab.meta
new file mode 100644
index 0000000..249d12f
--- /dev/null
+++ b/Assets/Prefabs/Player/Player.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 5d353d131e213f94fb9639806519a1fa
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Prefabs/Player/Resources.meta b/Assets/Prefabs/Player/Resources.meta
new file mode 100644
index 0000000..2b423aa
--- /dev/null
+++ b/Assets/Prefabs/Player/Resources.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: f1c2a125ba6a71f44aea881be417c09e
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Prefabs/Player/Resources/Black.mat b/Assets/Prefabs/Player/Resources/Black.mat
new file mode 100644
index 0000000..71c39b0
--- /dev/null
+++ b/Assets/Prefabs/Player/Resources/Black.mat
@@ -0,0 +1,77 @@
+%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: Black
+ m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
+ m_ShaderKeywords:
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap: {}
+ disabledShaderPasses: []
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _BumpMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Floats:
+ - _BumpScale: 1
+ - _Cutoff: 0.5
+ - _DetailNormalMapScale: 1
+ - _DstBlend: 0
+ - _GlossMapScale: 1
+ - _Glossiness: 0.5
+ - _GlossyReflections: 1
+ - _Metallic: 0
+ - _Mode: 0
+ - _OcclusionStrength: 1
+ - _Parallax: 0.02
+ - _SmoothnessTextureChannel: 0
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _UVSec: 0
+ - _ZWrite: 1
+ m_Colors:
+ - _Color: {r: 0, g: 0, b: 0, a: 1}
+ - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
diff --git a/Assets/Prefabs/Player/Resources/Black.mat.meta b/Assets/Prefabs/Player/Resources/Black.mat.meta
new file mode 100644
index 0000000..ed2410d
--- /dev/null
+++ b/Assets/Prefabs/Player/Resources/Black.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e14942a3b8d9aee40a5ba3869d1ad2a3
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Prefabs/Player/Resources/Red.mat b/Assets/Prefabs/Player/Resources/Red.mat
new file mode 100644
index 0000000..bf1d64a
--- /dev/null
+++ b/Assets/Prefabs/Player/Resources/Red.mat
@@ -0,0 +1,77 @@
+%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: Red
+ m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
+ m_ShaderKeywords:
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap: {}
+ disabledShaderPasses: []
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _BumpMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Floats:
+ - _BumpScale: 1
+ - _Cutoff: 0.5
+ - _DetailNormalMapScale: 1
+ - _DstBlend: 0
+ - _GlossMapScale: 1
+ - _Glossiness: 0.5
+ - _GlossyReflections: 1
+ - _Metallic: 0
+ - _Mode: 0
+ - _OcclusionStrength: 1
+ - _Parallax: 0.02
+ - _SmoothnessTextureChannel: 0
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _UVSec: 0
+ - _ZWrite: 1
+ m_Colors:
+ - _Color: {r: 1, g: 0, b: 0, a: 1}
+ - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
diff --git a/Assets/Prefabs/Player/Resources/Red.mat.meta b/Assets/Prefabs/Player/Resources/Red.mat.meta
new file mode 100644
index 0000000..383854c
--- /dev/null
+++ b/Assets/Prefabs/Player/Resources/Red.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: c0772b21f0f4f5d4fa3e104d18061880
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Prefabs/Player/Scripts.meta b/Assets/Prefabs/Player/Scripts.meta
new file mode 100644
index 0000000..63a90fe
--- /dev/null
+++ b/Assets/Prefabs/Player/Scripts.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 9d835f295e92c86409ea10533e2079a3
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Prefabs/Player/Scripts/FirstPersonController.cs b/Assets/Prefabs/Player/Scripts/FirstPersonController.cs
new file mode 100644
index 0000000..bceda6c
--- /dev/null
+++ b/Assets/Prefabs/Player/Scripts/FirstPersonController.cs
@@ -0,0 +1,101 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using MLAPI;
+
+[RequireComponent(typeof(CharacterController))]
+public class FirstPersonController : NetworkBehaviour
+{
+ ///
+ /// Move the player charactercontroller based on horizontal and vertical axis input
+ ///
+
+ float yVelocity = 0f;
+ [Range(5f,25f)]
+ public float gravity = 15f;
+ //the speed of the player movement
+ [Range(5f,15f)]
+ public float movementSpeed = 10f;
+ //jump speed
+ [Range(5f,15f)]
+ public float jumpSpeed = 10f;
+
+ //now the camera so we can move it up and down
+ Transform cameraTransform;
+ float pitch = 0f;
+ [Range(1f,90f)]
+ public float maxPitch = 85f;
+ [Range(-1f, -90f)]
+ public float minPitch = -85f;
+ [Range(0.5f, 5f)]
+ public float mouseSensitivity = 2f;
+
+ //the charachtercompononet for moving us
+ CharacterController cc;
+
+ private void Start()
+ {
+ cameraTransform = GetComponentInChildren().transform;
+ if (IsLocalPlayer)
+ {
+ cc = GetComponent();
+ }
+ else
+ {
+ cameraTransform.GetComponent().enabled = false;
+ cameraTransform.GetComponent().enabled = false;
+ }
+ }
+
+ // Update is called once per frame
+ void Update()
+ {
+ if (IsLocalPlayer)
+ {
+ Look();
+ Move();
+ }
+ }
+
+ void Look()
+ {
+ //get the mouse inpuit axis values
+ float xInput = Input.GetAxis("Mouse X") * mouseSensitivity;
+ float yInput = Input.GetAxis("Mouse Y") * mouseSensitivity;
+ //turn the whole object based on the x input
+ transform.Rotate(0, xInput, 0);
+ //now add on y input to pitch, and clamp it
+ pitch -= yInput;
+ pitch = Mathf.Clamp(pitch, minPitch, maxPitch);
+ //create the local rotation value for the camera and set it
+ Quaternion rot = Quaternion.Euler(pitch, 0, 0);
+ cameraTransform.localRotation = rot;
+ }
+
+ void Move()
+ {
+ //update speed based onn the input
+ Vector3 input = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
+ input = Vector3.ClampMagnitude(input, 1f);
+ //transofrm it based off the player transform and scale it by movement speed
+ Vector3 move = transform.TransformVector(input) * movementSpeed;
+ //is it on the ground
+ if (cc.isGrounded)
+ {
+ yVelocity = -gravity * Time.deltaTime;
+ //check for jump here
+ if (Input.GetButtonDown("Jump"))
+ {
+ yVelocity = jumpSpeed;
+ }
+ }
+ //now add the gravity to the yvelocity
+ yVelocity -= gravity * Time.deltaTime;
+ move.y = yVelocity;
+ //and finally move
+ cc.Move(move * Time.deltaTime);
+ }
+
+
+
+}
diff --git a/Assets/Prefabs/Player/Scripts/FirstPersonController.cs.meta b/Assets/Prefabs/Player/Scripts/FirstPersonController.cs.meta
new file mode 100644
index 0000000..a9fa976
--- /dev/null
+++ b/Assets/Prefabs/Player/Scripts/FirstPersonController.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 75773a9e7fe83d2479dea1b0917cf7c6
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scenes/Demos.meta b/Assets/Scenes/Demos.meta
new file mode 100644
index 0000000..c89363a
--- /dev/null
+++ b/Assets/Scenes/Demos.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 0301452d3d158e04096e594c2825a5a8
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scenes/Demos/Demo-Multiplayer.unity b/Assets/Scenes/Demos/Demo-Multiplayer.unity
new file mode 100644
index 0000000..4eb1239
--- /dev/null
+++ b/Assets/Scenes/Demos/Demo-Multiplayer.unity
@@ -0,0 +1,502 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!29 &1
+OcclusionCullingSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_OcclusionBakeSettings:
+ smallestOccluder: 5
+ smallestHole: 0.25
+ backfaceThreshold: 100
+ m_SceneGUID: 00000000000000000000000000000000
+ m_OcclusionCullingData: {fileID: 0}
+--- !u!104 &2
+RenderSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 9
+ m_Fog: 0
+ m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
+ m_FogMode: 3
+ m_FogDensity: 0.01
+ m_LinearFogStart: 0
+ m_LinearFogEnd: 300
+ m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
+ m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
+ m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
+ m_AmbientIntensity: 1
+ m_AmbientMode: 0
+ m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
+ m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
+ m_HaloStrength: 0.5
+ m_FlareStrength: 1
+ m_FlareFadeSpeed: 3
+ m_HaloTexture: {fileID: 0}
+ m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
+ m_DefaultReflectionMode: 0
+ m_DefaultReflectionResolution: 128
+ m_ReflectionBounces: 1
+ m_ReflectionIntensity: 1
+ m_CustomReflection: {fileID: 0}
+ m_Sun: {fileID: 0}
+ m_IndirectSpecularColor: {r: 0.37311953, g: 0.38074014, b: 0.3587274, a: 1}
+ m_UseRadianceAmbientProbe: 0
+--- !u!157 &3
+LightmapSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 12
+ m_GIWorkflowMode: 1
+ m_GISettings:
+ serializedVersion: 2
+ m_BounceScale: 1
+ m_IndirectOutputScale: 1
+ m_AlbedoBoost: 1
+ m_EnvironmentLightingMode: 0
+ m_EnableBakedLightmaps: 1
+ m_EnableRealtimeLightmaps: 0
+ m_LightmapEditorSettings:
+ serializedVersion: 12
+ m_Resolution: 2
+ m_BakeResolution: 40
+ m_AtlasSize: 1024
+ m_AO: 0
+ m_AOMaxDistance: 1
+ m_CompAOExponent: 1
+ m_CompAOExponentDirect: 0
+ m_ExtractAmbientOcclusion: 0
+ m_Padding: 2
+ m_LightmapParameters: {fileID: 0}
+ m_LightmapsBakeMode: 1
+ m_TextureCompression: 1
+ m_FinalGather: 0
+ m_FinalGatherFiltering: 1
+ m_FinalGatherRayCount: 256
+ m_ReflectionCompression: 2
+ m_MixedBakeMode: 2
+ m_BakeBackend: 1
+ m_PVRSampling: 1
+ m_PVRDirectSampleCount: 32
+ m_PVRSampleCount: 512
+ m_PVRBounces: 2
+ m_PVREnvironmentSampleCount: 256
+ m_PVREnvironmentReferencePointCount: 2048
+ m_PVRFilteringMode: 1
+ m_PVRDenoiserTypeDirect: 1
+ m_PVRDenoiserTypeIndirect: 1
+ m_PVRDenoiserTypeAO: 1
+ m_PVRFilterTypeDirect: 0
+ m_PVRFilterTypeIndirect: 0
+ m_PVRFilterTypeAO: 0
+ m_PVREnvironmentMIS: 1
+ m_PVRCulling: 1
+ m_PVRFilteringGaussRadiusDirect: 1
+ m_PVRFilteringGaussRadiusIndirect: 5
+ m_PVRFilteringGaussRadiusAO: 2
+ m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+ m_PVRFilteringAtrousPositionSigmaIndirect: 2
+ m_PVRFilteringAtrousPositionSigmaAO: 1
+ m_ExportTrainingData: 0
+ m_TrainingDataDestination: TrainingData
+ m_LightProbeSampleCountMultiplier: 4
+ m_LightingDataAsset: {fileID: 0}
+ m_LightingSettings: {fileID: 0}
+--- !u!196 &4
+NavMeshSettings:
+ serializedVersion: 2
+ m_ObjectHideFlags: 0
+ m_BuildSettings:
+ serializedVersion: 2
+ agentTypeID: 0
+ agentRadius: 0.5
+ agentHeight: 2
+ agentSlope: 45
+ agentClimb: 0.4
+ ledgeDropHeight: 0
+ maxJumpAcrossDistance: 0
+ minRegionArea: 2
+ manualCellSize: 0
+ cellSize: 0.16666667
+ manualTileSize: 0
+ tileSize: 256
+ accuratePlacement: 0
+ maxJobWorkers: 0
+ preserveTilesOutsideBounds: 0
+ debug:
+ m_Flags: 0
+ m_NavMeshData: {fileID: 0}
+--- !u!1 &8891836
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 8891839}
+ - component: {fileID: 8891838}
+ - component: {fileID: 8891837}
+ m_Layer: 0
+ m_Name: NetworkManager
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &8891837
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8891836}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: b84c2d8dfe509a34fb59e2b81f8e1319, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ MessageBufferSize: 5120
+ MaxConnections: 100
+ MaxSentMessageQueueSize: 128
+ ConnectAddress: 127.0.0.1
+ ConnectPort: 7777
+ ServerListenPort: 7777
+ ServerWebsocketListenPort: 8887
+ SupportWebsocket: 0
+ Channels: []
+ UseMLAPIRelay: 0
+ MLAPIRelayAddress: 184.72.104.138
+ MLAPIRelayPort: 8888
+ MessageSendMode: 0
+--- !u!114 &8891838
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8891836}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 593a2fe42fa9d37498c96f9a383b6521, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ DontDestroy: 1
+ RunInBackground: 1
+ LogLevel: 1
+ NetworkConfig:
+ ProtocolVersion: 0
+ NetworkTransport: {fileID: 8891837}
+ RegisteredScenes:
+ - Demo-Multiplayer
+ AllowRuntimeSceneChanges: 0
+ NetworkPrefabs:
+ - Prefab: {fileID: 2699541615817244657, guid: 5d353d131e213f94fb9639806519a1fa, type: 3}
+ PlayerPrefab: 1
+ PlayerPrefabHash:
+ id: 0
+ CreatePlayerPrefab: 1
+ ReceiveTickrate: 64
+ NetworkTickIntervalSec: 0.05
+ MaxReceiveEventsPerTickRate: 500
+ EventTickrate: 64
+ ClientConnectionBufferTimeout: 10
+ ConnectionApproval: 0
+ ConnectionData:
+ EnableTimeResync: 0
+ TimeResyncInterval: 30
+ EnableNetworkVariable: 1
+ EnsureNetworkVariableLengthSafety: 0
+ EnableSceneManagement: 1
+ ForceSamePrefabs: 1
+ UsePrefabSync: 0
+ RecycleNetworkIds: 1
+ NetworkIdRecycleDelay: 120
+ RpcHashSize: 0
+ LoadSceneTimeOut: 120
+ EnableMessageBuffering: 1
+ MessageBufferTimeout: 20
+ EnableNetworkLogs: 1
+ references:
+ version: 1
+ 00000000:
+ type: {class: NullableBoolSerializable, ns: MLAPI.Configuration, asm: Unity.Multiplayer.MLAPI.Runtime}
+ data:
+ Value: 1897319656204293034
+--- !u!4 &8891839
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8891836}
+ 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: 2081275522}
+ m_Father: {fileID: 0}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &683029037
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 683029040}
+ - component: {fileID: 683029039}
+ - component: {fileID: 683029038}
+ m_Layer: 0
+ m_Name: Main Camera
+ m_TagString: MainCamera
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!81 &683029038
+AudioListener:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 683029037}
+ m_Enabled: 1
+--- !u!20 &683029039
+Camera:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 683029037}
+ m_Enabled: 1
+ serializedVersion: 2
+ m_ClearFlags: 1
+ m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
+ m_projectionMatrixMode: 1
+ m_GateFitMode: 2
+ m_FOVAxisMode: 0
+ m_SensorSize: {x: 36, y: 24}
+ m_LensShift: {x: 0, y: 0}
+ m_FocalLength: 50
+ m_NormalizedViewPortRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+ near clip plane: 0.3
+ far clip plane: 1000
+ field of view: 60
+ orthographic: 0
+ orthographic size: 5
+ m_Depth: -1
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingPath: -1
+ m_TargetTexture: {fileID: 0}
+ m_TargetDisplay: 0
+ m_TargetEye: 3
+ m_HDR: 1
+ m_AllowMSAA: 1
+ m_AllowDynamicResolution: 0
+ m_ForceIntoRT: 0
+ m_OcclusionCulling: 1
+ m_StereoConvergence: 10
+ m_StereoSeparation: 0.022
+--- !u!4 &683029040
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 683029037}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 1, z: -10}
+ 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!1 &951779232
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 951779234}
+ - component: {fileID: 951779233}
+ m_Layer: 0
+ m_Name: HelloWorldManager
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &951779233
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 951779232}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: eef8ecf97071c834d9bc006d60a98431, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!4 &951779234
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 951779232}
+ 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: 0}
+ m_RootOrder: 3
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1289761377
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1289761381}
+ - component: {fileID: 1289761380}
+ - component: {fileID: 1289761379}
+ - component: {fileID: 1289761378}
+ m_Layer: 0
+ m_Name: Plane
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!64 &1289761378
+MeshCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1289761377}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ serializedVersion: 4
+ m_Convex: 0
+ m_CookingOptions: 30
+ m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!23 &1289761379
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1289761377}
+ 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_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!33 &1289761380
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1289761377}
+ m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!4 &1289761381
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1289761377}
+ 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: 0}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &2081275521
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2081275522}
+ - component: {fileID: 2081275523}
+ m_Layer: 0
+ m_Name: NetworkCommandLine
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &2081275522
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2081275521}
+ 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: 8891839}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &2081275523
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2081275521}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 44dec3ade0a1cc64a9df68dde56174a6, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
diff --git a/Assets/Scenes/Demos/Demo-Multiplayer.unity.meta b/Assets/Scenes/Demos/Demo-Multiplayer.unity.meta
new file mode 100644
index 0000000..63c22b4
--- /dev/null
+++ b/Assets/Scenes/Demos/Demo-Multiplayer.unity.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: a8bd145473807dd4db28363ca74aa0df
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts.meta b/Assets/Scripts.meta
index e901630..8cb7648 100644
--- a/Assets/Scripts.meta
+++ b/Assets/Scripts.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 55882331b1a10804785dc94f91422119
+guid: 0cf12607d0ba32a4d8208c6ef36f163c
folderAsset: yes
DefaultImporter:
externalObjects: {}
diff --git a/Assets/Scripts/Network.meta b/Assets/Scripts/Network.meta
new file mode 100644
index 0000000..c34996f
--- /dev/null
+++ b/Assets/Scripts/Network.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e5d806122d5199f4b9885debb6a2d46b
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Network/HelloWorldManager.cs b/Assets/Scripts/Network/HelloWorldManager.cs
new file mode 100644
index 0000000..e0efe2d
--- /dev/null
+++ b/Assets/Scripts/Network/HelloWorldManager.cs
@@ -0,0 +1,41 @@
+
+using MLAPI;
+using UnityEngine;
+
+namespace HelloWorld
+{
+ public class HelloWorldManager : MonoBehaviour
+ {
+ void OnGUI()
+ {
+ GUILayout.BeginArea(new Rect(10, 10, 300, 300));
+ if (!NetworkManager.Singleton.IsClient && !NetworkManager.Singleton.IsServer)
+ {
+ StartButtons();
+ }
+ else
+ {
+ StatusLabels();
+ }
+
+ GUILayout.EndArea();
+ }
+
+ static void StartButtons()
+ {
+ if (GUILayout.Button("Host")) NetworkManager.Singleton.StartHost();
+ if (GUILayout.Button("Client")) NetworkManager.Singleton.StartClient();
+ if (GUILayout.Button("Server")) NetworkManager.Singleton.StartServer();
+ }
+
+ static void StatusLabels()
+ {
+ var mode = NetworkManager.Singleton.IsHost ?
+ "Host" : NetworkManager.Singleton.IsServer ? "Server" : "Client";
+
+ GUILayout.Label("Transport: " +
+ NetworkManager.Singleton.NetworkConfig.NetworkTransport.GetType().Name);
+ GUILayout.Label("Mode: " + mode);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Scripts/Network/HelloWorldManager.cs.meta b/Assets/Scripts/Network/HelloWorldManager.cs.meta
new file mode 100644
index 0000000..b4094a7
--- /dev/null
+++ b/Assets/Scripts/Network/HelloWorldManager.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: eef8ecf97071c834d9bc006d60a98431
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Network/NetworkCommandLine.cs b/Assets/Scripts/Network/NetworkCommandLine.cs
new file mode 100644
index 0000000..d6fe4a4
--- /dev/null
+++ b/Assets/Scripts/Network/NetworkCommandLine.cs
@@ -0,0 +1,47 @@
+using System.Collections.Generic;
+using MLAPI;
+using UnityEngine;
+
+public class NetworkCommandLine : MonoBehaviour {
+ private NetworkManager netManager;
+
+ void Start() {
+ netManager = GetComponentInParent();
+
+ if (Application.isEditor) return;
+
+ var args = GetCommandlineArgs();
+
+ if (args.TryGetValue("-mlapi", out string mlapiValue)) {
+ switch (mlapiValue) {
+ case "server":
+ netManager.StartServer();
+ break;
+ case "host":
+ netManager.StartHost();
+ break;
+ case "client":
+
+ netManager.StartClient();
+ break;
+ }
+ }
+ }
+
+ private Dictionary GetCommandlineArgs() {
+ Dictionary argDictionary = new Dictionary();
+
+ var args = System.Environment.GetCommandLineArgs();
+
+ for (int i = 0; i < args.Length; ++i) {
+ var arg = args[i].ToLower();
+ if (arg.StartsWith("-")) {
+ var value = i < args.Length - 1 ? args[i + 1].ToLower() : null;
+ value = (value?.StartsWith("-") ?? false) ? null : value;
+
+ argDictionary.Add(arg, value);
+ }
+ }
+ return argDictionary;
+ }
+}
diff --git a/Assets/Scripts/Network/NetworkCommandLine.cs.meta b/Assets/Scripts/Network/NetworkCommandLine.cs.meta
new file mode 100644
index 0000000..515e22f
--- /dev/null
+++ b/Assets/Scripts/Network/NetworkCommandLine.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 44dec3ade0a1cc64a9df68dde56174a6
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/manifest.json b/Packages/manifest.json
index b7a74b5..4b3421e 100644
--- a/Packages/manifest.json
+++ b/Packages/manifest.json
@@ -4,6 +4,7 @@
"com.unity.ide.rider": "2.0.7",
"com.unity.ide.visualstudio": "2.0.11",
"com.unity.ide.vscode": "1.2.4",
+ "com.unity.multiplayer.mlapi": "https://github.com/Unity-Technologies/com.unity.multiplayer.mlapi.git?path=/com.unity.multiplayer.mlapi#release/0.1.0",
"com.unity.test-framework": "1.1.29",
"com.unity.textmeshpro": "3.0.6",
"com.unity.timeline": "1.4.8",
diff --git a/Packages/packages-lock.json b/Packages/packages-lock.json
index 73c8bc3..28457a6 100644
--- a/Packages/packages-lock.json
+++ b/Packages/packages-lock.json
@@ -39,6 +39,24 @@
"dependencies": {},
"url": "https://packages.unity.com"
},
+ "com.unity.multiplayer.mlapi": {
+ "version": "https://github.com/Unity-Technologies/com.unity.multiplayer.mlapi.git?path=/com.unity.multiplayer.mlapi#release/0.1.0",
+ "depth": 0,
+ "source": "git",
+ "dependencies": {
+ "com.unity.modules.ai": "1.0.0",
+ "com.unity.modules.animation": "1.0.0",
+ "com.unity.nuget.mono-cecil": "1.10.1-preview.1"
+ },
+ "hash": "3e3aef6aa02c2a25359898319e5bd49d3518b57b"
+ },
+ "com.unity.nuget.mono-cecil": {
+ "version": "1.10.1-preview.1",
+ "depth": 1,
+ "source": "registry",
+ "dependencies": {},
+ "url": "https://packages.unity.com"
+ },
"com.unity.test-framework": {
"version": "1.1.29",
"depth": 0,
diff --git a/ProjectSettings/EditorBuildSettings.asset b/ProjectSettings/EditorBuildSettings.asset
index 738b5a5..c0981cf 100644
--- a/ProjectSettings/EditorBuildSettings.asset
+++ b/ProjectSettings/EditorBuildSettings.asset
@@ -5,6 +5,9 @@ EditorBuildSettings:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Scenes:
+ - enabled: 1
+ path: Assets/Scenes/Demos/Demo-Multiplayer.unity
+ guid: a8bd145473807dd4db28363ca74aa0df
- enabled: 1
path: Assets/Scenes/TitleScene.unity
guid: bf4e30a4ac6e4b74fa456e2af406a95e
diff --git a/ProjectSettings/PackageManagerSettings.asset b/ProjectSettings/PackageManagerSettings.asset
index be4a797..568fee6 100644
--- a/ProjectSettings/PackageManagerSettings.asset
+++ b/ProjectSettings/PackageManagerSettings.asset
@@ -12,11 +12,11 @@ MonoBehaviour:
m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0}
m_Name:
m_EditorClassIdentifier:
- m_EnablePreviewPackages: 0
+ m_EnablePreviewPackages: 1
m_EnablePackageDependencies: 0
m_AdvancedSettingsExpanded: 1
m_ScopedRegistriesSettingsExpanded: 1
- oneTimeWarningShown: 0
+ oneTimeWarningShown: 1
m_Registries:
- m_Id: main
m_Name:
diff --git a/ProjectSettings/SceneTemplateSettings.json b/ProjectSettings/SceneTemplateSettings.json
new file mode 100644
index 0000000..6f3e60f
--- /dev/null
+++ b/ProjectSettings/SceneTemplateSettings.json
@@ -0,0 +1,167 @@
+{
+ "templatePinStates": [],
+ "dependencyTypeInfos": [
+ {
+ "userAdded": false,
+ "type": "UnityEngine.AnimationClip",
+ "ignore": false,
+ "defaultInstantiationMode": 0,
+ "supportsModification": true
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEditor.Animations.AnimatorController",
+ "ignore": false,
+ "defaultInstantiationMode": 0,
+ "supportsModification": true
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEngine.AnimatorOverrideController",
+ "ignore": false,
+ "defaultInstantiationMode": 0,
+ "supportsModification": true
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEditor.Audio.AudioMixerController",
+ "ignore": false,
+ "defaultInstantiationMode": 0,
+ "supportsModification": true
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEngine.ComputeShader",
+ "ignore": true,
+ "defaultInstantiationMode": 1,
+ "supportsModification": true
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEngine.Cubemap",
+ "ignore": false,
+ "defaultInstantiationMode": 0,
+ "supportsModification": true
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEngine.GameObject",
+ "ignore": false,
+ "defaultInstantiationMode": 0,
+ "supportsModification": true
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEditor.LightingDataAsset",
+ "ignore": false,
+ "defaultInstantiationMode": 0,
+ "supportsModification": false
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEngine.LightingSettings",
+ "ignore": false,
+ "defaultInstantiationMode": 0,
+ "supportsModification": true
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEngine.Material",
+ "ignore": false,
+ "defaultInstantiationMode": 0,
+ "supportsModification": true
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEditor.MonoScript",
+ "ignore": true,
+ "defaultInstantiationMode": 1,
+ "supportsModification": true
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEngine.PhysicMaterial",
+ "ignore": false,
+ "defaultInstantiationMode": 0,
+ "supportsModification": true
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEngine.PhysicsMaterial2D",
+ "ignore": false,
+ "defaultInstantiationMode": 0,
+ "supportsModification": true
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEngine.Rendering.PostProcessing.PostProcessProfile",
+ "ignore": false,
+ "defaultInstantiationMode": 0,
+ "supportsModification": true
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEngine.Rendering.PostProcessing.PostProcessResources",
+ "ignore": false,
+ "defaultInstantiationMode": 0,
+ "supportsModification": true
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEngine.Rendering.VolumeProfile",
+ "ignore": false,
+ "defaultInstantiationMode": 0,
+ "supportsModification": true
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEditor.SceneAsset",
+ "ignore": false,
+ "defaultInstantiationMode": 0,
+ "supportsModification": false
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEngine.Shader",
+ "ignore": true,
+ "defaultInstantiationMode": 1,
+ "supportsModification": true
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEngine.ShaderVariantCollection",
+ "ignore": true,
+ "defaultInstantiationMode": 1,
+ "supportsModification": true
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEngine.Texture",
+ "ignore": false,
+ "defaultInstantiationMode": 0,
+ "supportsModification": true
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEngine.Texture2D",
+ "ignore": false,
+ "defaultInstantiationMode": 0,
+ "supportsModification": true
+ },
+ {
+ "userAdded": false,
+ "type": "UnityEngine.Timeline.TimelineAsset",
+ "ignore": false,
+ "defaultInstantiationMode": 0,
+ "supportsModification": true
+ }
+ ],
+ "defaultDependencyTypeInfo": {
+ "userAdded": false,
+ "type": "",
+ "ignore": false,
+ "defaultInstantiationMode": 1,
+ "supportsModification": true
+ },
+ "newSceneOverride": 0
+}
\ No newline at end of file
diff --git a/UserSettings/EditorUserSettings.asset b/UserSettings/EditorUserSettings.asset
index a74bff9..92260ad 100644
--- a/UserSettings/EditorUserSettings.asset
+++ b/UserSettings/EditorUserSettings.asset
@@ -11,6 +11,9 @@ EditorUserSettings:
RecentlyUsedScenePath-1:
value: 22424703114646680e0b0227036c6b19021b1d192f2d2835633c133af6f9
flags: 0
+ RecentlyUsedScenePath-2:
+ value: 22424703114646680e0b0227036c7b151b180b65082d2b3f6004083ff6e92434e3fe33fba92f31352d1b
+ flags: 0
UnityRemoteCompression:
value: 337f73
flags: 0