diff --git a/Assets/Mirror/Examples/BilliardsPredicted.meta b/Assets/Mirror/Examples/BilliardsPredicted.meta new file mode 100644 index 000000000..eae62395f --- /dev/null +++ b/Assets/Mirror/Examples/BilliardsPredicted.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d31c223f5c476410b988c7e416495114 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mirror/Examples/BilliardsPredicted/Ball.meta b/Assets/Mirror/Examples/BilliardsPredicted/Ball.meta new file mode 100644 index 000000000..024c0733b --- /dev/null +++ b/Assets/Mirror/Examples/BilliardsPredicted/Ball.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a3db73e3af7b04b51864106cf8b38b24 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mirror/Examples/BilliardsPredicted/Ball/Ball.physicMaterial b/Assets/Mirror/Examples/BilliardsPredicted/Ball/Ball.physicMaterial new file mode 100644 index 000000000..26d5e524e --- /dev/null +++ b/Assets/Mirror/Examples/BilliardsPredicted/Ball/Ball.physicMaterial @@ -0,0 +1,14 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!134 &13400000 +PhysicMaterial: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Ball + dynamicFriction: 0.6 + staticFriction: 0.6 + bounciness: 0.8 + frictionCombine: 0 + bounceCombine: 0 diff --git a/Assets/Mirror/Examples/BilliardsPredicted/Ball/Ball.physicMaterial.meta b/Assets/Mirror/Examples/BilliardsPredicted/Ball/Ball.physicMaterial.meta new file mode 100644 index 000000000..4527d27c6 --- /dev/null +++ b/Assets/Mirror/Examples/BilliardsPredicted/Ball/Ball.physicMaterial.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cc38ab2f114164a8abcd76b7fd41e029 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 13400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mirror/Examples/BilliardsPredicted/Ball/Red.mat b/Assets/Mirror/Examples/BilliardsPredicted/Ball/Red.mat new file mode 100644 index 000000000..77a227247 --- /dev/null +++ b/Assets/Mirror/Examples/BilliardsPredicted/Ball/Red.mat @@ -0,0 +1,80 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + 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_ValidKeywords: [] + m_InvalidKeywords: [] + 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_Ints: [] + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.92 + - _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.2971698, b: 0.2971698, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/Mirror/Examples/BilliardsPredicted/Ball/Red.mat.meta b/Assets/Mirror/Examples/BilliardsPredicted/Ball/Red.mat.meta new file mode 100644 index 000000000..bd5cfe585 --- /dev/null +++ b/Assets/Mirror/Examples/BilliardsPredicted/Ball/Red.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 411a48b4a197d4924bec3e3809bc9320 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mirror/Examples/BilliardsPredicted/Ball/RedBall.cs b/Assets/Mirror/Examples/BilliardsPredicted/Ball/RedBall.cs new file mode 100644 index 000000000..7bd6b15bc --- /dev/null +++ b/Assets/Mirror/Examples/BilliardsPredicted/Ball/RedBall.cs @@ -0,0 +1,15 @@ +using UnityEngine; + +namespace Mirror.Examples.BilliardsPredicted +{ + public class RedBall : NetworkBehaviour + { + // destroy when entering a pocket. + // there's only one trigger in the scene (the pocket). + [ServerCallback] + void OnTriggerEnter(Collider other) + { + NetworkServer.Destroy(gameObject); + } + } +} diff --git a/Assets/Mirror/Examples/BilliardsPredicted/Ball/RedBall.cs.meta b/Assets/Mirror/Examples/BilliardsPredicted/Ball/RedBall.cs.meta new file mode 100644 index 000000000..eae8c8d47 --- /dev/null +++ b/Assets/Mirror/Examples/BilliardsPredicted/Ball/RedBall.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3c3384f4b0aaa417abfc3335d2d873c0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mirror/Examples/BilliardsPredicted/Ball/RedPredicted.prefab b/Assets/Mirror/Examples/BilliardsPredicted/Ball/RedPredicted.prefab new file mode 100644 index 000000000..1a331dd91 --- /dev/null +++ b/Assets/Mirror/Examples/BilliardsPredicted/Ball/RedPredicted.prefab @@ -0,0 +1,185 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &3429911415116987808 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3429911415116987812} + - component: {fileID: 3429911415116987813} + - component: {fileID: 3429911415116987810} + - component: {fileID: 6723567693459418947} + - component: {fileID: 3429911415116987811} + - component: {fileID: -177125271246800426} + - component: {fileID: 5308121378143249733} + - component: {fileID: -4867038537898682568} + m_Layer: 0 + m_Name: RedPredicted + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3429911415116987812 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3429911415116987808} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &3429911415116987813 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3429911415116987808} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &3429911415116987810 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3429911415116987808} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + 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: 4260669eb9d994f8c96cd5be23e52164, 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!114 &6723567693459418947 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3429911415116987808} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9b91ecbcc199f4492b9a91e820070131, type: 3} + m_Name: + m_EditorClassIdentifier: + sceneId: 0 + _assetId: 776221176 + serverOnly: 0 + visible: 0 + hasSpawned: 0 +--- !u!135 &3429911415116987811 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3429911415116987808} + m_Material: {fileID: 13400000, guid: b70c4b1c659c647859a8491848d4b145, type: 2} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!54 &-177125271246800426 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3429911415116987808} + serializedVersion: 2 + m_Mass: 0.5 + m_Drag: 0.5 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 1 + m_Constraints: 0 + m_CollisionDetection: 1 +--- !u!114 &5308121378143249733 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3429911415116987808} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4662d0882e1d446089fb4f73bfcaa224, type: 3} + m_Name: + m_EditorClassIdentifier: + syncDirection: 0 + syncMode: 0 + syncInterval: 0 +--- !u!114 &-4867038537898682568 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3429911415116987808} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3b20dc110904e47f8a154cdcf6433eae, type: 3} + m_Name: + m_EditorClassIdentifier: + syncDirection: 0 + syncMode: 0 + syncInterval: 0 + target: {fileID: 3429911415116987812} + clientAuthority: 0 + syncPosition: 1 + syncRotation: 1 + syncScale: 0 + interpolatePosition: 1 + interpolateRotation: 1 + interpolateScale: 0 + coordinateSpace: 0 + sendIntervalMultiplier: 1 + timelineOffset: 0 + showGizmos: 0 + showOverlay: 0 + overlayColor: {r: 0, g: 0, b: 0, a: 0.5} + onlySyncOnChange: 0 + bufferResetMultiplier: 3 + positionSensitivity: 0.01 + rotationSensitivity: 0.01 + scaleSensitivity: 0.01 diff --git a/Assets/Mirror/Examples/BilliardsPredicted/Ball/RedPredicted.prefab.meta b/Assets/Mirror/Examples/BilliardsPredicted/Ball/RedPredicted.prefab.meta new file mode 100644 index 000000000..dbb67f810 --- /dev/null +++ b/Assets/Mirror/Examples/BilliardsPredicted/Ball/RedPredicted.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ecbb35e2a01c0427ebb0b4b6ed146c70 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mirror/Examples/BilliardsPredicted/Ball/White.mat b/Assets/Mirror/Examples/BilliardsPredicted/Ball/White.mat new file mode 100644 index 000000000..00e46c520 --- /dev/null +++ b/Assets/Mirror/Examples/BilliardsPredicted/Ball/White.mat @@ -0,0 +1,80 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: White + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ValidKeywords: [] + m_InvalidKeywords: [] + 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_Ints: [] + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.93 + - _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: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/Mirror/Examples/BilliardsPredicted/Ball/White.mat.meta b/Assets/Mirror/Examples/BilliardsPredicted/Ball/White.mat.meta new file mode 100644 index 000000000..6751d4f5b --- /dev/null +++ b/Assets/Mirror/Examples/BilliardsPredicted/Ball/White.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 320e58d7a025d4857b08a68c463a3e75 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mirror/Examples/BilliardsPredicted/Ball/WhiteBall.cs b/Assets/Mirror/Examples/BilliardsPredicted/Ball/WhiteBall.cs new file mode 100644 index 000000000..9ea872f7f --- /dev/null +++ b/Assets/Mirror/Examples/BilliardsPredicted/Ball/WhiteBall.cs @@ -0,0 +1,100 @@ +using System; +using Mirror; +using UnityEngine; + +namespace Mirror.Examples.BilliardsPredicted +{ + public class WhiteBall : NetworkBehaviour + { + public LineRenderer dragIndicator; + public Rigidbody rigidBody; + public float forceMultiplier = 10; + + // remember start position to reset to after entering a pocket + Vector3 startPosition; + + // cast mouse position on screen to world position + bool MouseToWorld(out Vector3 position) + { + Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); + Plane plane = new Plane(Vector3.up, transform.position); + if (plane.Raycast(ray, out float distance)) + { + position = ray.GetPoint(distance); + return true; + } + position = default; + return false; + } + + void Awake() + { + startPosition = transform.position; + } + + [ClientCallback] + void OnMouseDown() + { + // enable drag indicator + dragIndicator.SetPosition(0, transform.position); + dragIndicator.SetPosition(1, transform.position); + dragIndicator.gameObject.SetActive(true); + } + + [ClientCallback] + void OnMouseDrag() + { + // cast mouse position to world + if (!MouseToWorld(out Vector3 current)) return; + + // drag indicator + dragIndicator.SetPosition(0, transform.position); + dragIndicator.SetPosition(1, current); + } + + // all players can apply force to the white ball. + // (this is not cheat safe) + [Command(requiresAuthority = false)] + void CmdApplyForce(Vector3 force) + { + rigidBody.AddForce(force); + } + + [ClientCallback] + void OnMouseUp() + { + // cast mouse position to world + if (!MouseToWorld(out Vector3 current)) return; + + // calculate delta from ball to mouse + // ball may have moved since we started dragging, + // so always use current ball position here. + Vector3 from = transform.position; + + // debug drawing: only works if Gizmos are enabled! + Debug.DrawLine(from, current, Color.red, 3); + + // calculate pending force delta + Vector3 delta = from - current; + Vector3 force = delta * forceMultiplier; + + // apply force to rigidbody. + // it will take a round trip to show the effect. + // the goal for prediction will be to show it immediately. + CmdApplyForce(force); + + // disable drag indicator + dragIndicator.gameObject.SetActive(false); + } + + // reset position when entering a pocket. + // there's only one trigger in the scene (the pocket). + [ServerCallback] + void OnTriggerEnter(Collider other) + { + rigidBody.position = startPosition; + rigidBody.Sleep(); // reset forces + GetComponent().RpcTeleport(startPosition); + } + } +} diff --git a/Assets/Mirror/Examples/BilliardsPredicted/Ball/WhiteBall.cs.meta b/Assets/Mirror/Examples/BilliardsPredicted/Ball/WhiteBall.cs.meta new file mode 100644 index 000000000..f65695aad --- /dev/null +++ b/Assets/Mirror/Examples/BilliardsPredicted/Ball/WhiteBall.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8fb3f86b63cef4b2093db683f699a13c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mirror/Examples/BilliardsPredicted/Ball/WhitePredicted.prefab b/Assets/Mirror/Examples/BilliardsPredicted/Ball/WhitePredicted.prefab new file mode 100644 index 000000000..d0248fb09 --- /dev/null +++ b/Assets/Mirror/Examples/BilliardsPredicted/Ball/WhitePredicted.prefab @@ -0,0 +1,320 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &982362981 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 982362983} + - component: {fileID: 982362982} + m_Layer: 0 + m_Name: DragIndicator - Line + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &982362983 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 982362981} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 13} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3429911415116987812} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!120 &982362982 +LineRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 982362981} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 0 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10306, 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_Positions: + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 1} + m_Parameters: + serializedVersion: 3 + widthMultiplier: 0.1 + widthCurve: + 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 + colorGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 0} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 31418 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + numCornerVertices: 0 + numCapVertices: 0 + alignment: 0 + textureMode: 0 + shadowBias: 0.5 + generateLightingData: 0 + m_UseWorldSpace: 1 + m_Loop: 0 +--- !u!1 &3429911415116987808 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3429911415116987812} + - component: {fileID: 3429911415116987813} + - component: {fileID: 3429911415116987810} + - component: {fileID: -1560774411725421365} + - component: {fileID: 3429911415116987811} + - component: {fileID: 1848203816128897140} + - component: {fileID: 6607303410184343467} + - component: {fileID: -2991986576794647411} + m_Layer: 0 + m_Name: WhitePredicted + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3429911415116987812 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3429911415116987808} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 982362983} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &3429911415116987813 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3429911415116987808} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &3429911415116987810 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3429911415116987808} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + 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: e88ccd07dc10d443b808d53676994410, 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!114 &-1560774411725421365 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3429911415116987808} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9b91ecbcc199f4492b9a91e820070131, type: 3} + m_Name: + m_EditorClassIdentifier: + sceneId: 0 + _assetId: 554815358 + serverOnly: 0 + visible: 0 + hasSpawned: 0 +--- !u!135 &3429911415116987811 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3429911415116987808} + m_Material: {fileID: 13400000, guid: b70c4b1c659c647859a8491848d4b145, type: 2} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!54 &1848203816128897140 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3429911415116987808} + serializedVersion: 2 + m_Mass: 0.5 + m_Drag: 0.5 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 1 + m_Constraints: 0 + m_CollisionDetection: 1 +--- !u!114 &6607303410184343467 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3429911415116987808} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 22982698a2c944cf39e961e49e9cd00c, type: 3} + m_Name: + m_EditorClassIdentifier: + syncDirection: 0 + syncMode: 0 + syncInterval: 0 + dragIndicator: {fileID: 982362982} + rigidBody: {fileID: 1848203816128897140} + forceMultiplier: 100 +--- !u!114 &-2991986576794647411 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3429911415116987808} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3b20dc110904e47f8a154cdcf6433eae, type: 3} + m_Name: + m_EditorClassIdentifier: + syncDirection: 0 + syncMode: 0 + syncInterval: 0 + target: {fileID: 3429911415116987812} + clientAuthority: 0 + syncPosition: 1 + syncRotation: 1 + syncScale: 0 + interpolatePosition: 1 + interpolateRotation: 1 + interpolateScale: 0 + coordinateSpace: 0 + sendIntervalMultiplier: 1 + timelineOffset: 0 + showGizmos: 0 + showOverlay: 0 + overlayColor: {r: 0, g: 0, b: 0, a: 0.5} + onlySyncOnChange: 0 + bufferResetMultiplier: 3 + positionSensitivity: 0.01 + rotationSensitivity: 0.01 + scaleSensitivity: 0.01 diff --git a/Assets/Mirror/Examples/BilliardsPredicted/Ball/WhitePredicted.prefab.meta b/Assets/Mirror/Examples/BilliardsPredicted/Ball/WhitePredicted.prefab.meta new file mode 100644 index 000000000..96c4f7e4d --- /dev/null +++ b/Assets/Mirror/Examples/BilliardsPredicted/Ball/WhitePredicted.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8b8303075efb94c0e9478abfb2e558df +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mirror/Examples/BilliardsPredicted/BilliardsPredicted.unity b/Assets/Mirror/Examples/BilliardsPredicted/BilliardsPredicted.unity new file mode 100644 index 000000000..92fa4635b --- /dev/null +++ b/Assets/Mirror/Examples/BilliardsPredicted/BilliardsPredicted.unity @@ -0,0 +1,1377 @@ +%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: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 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, g: 0, b: 0, 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: 0 + 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: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + 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: 4890085278179872738, guid: 1cb229a9b0b434acf9cb6b263057a2a0, + type: 2} +--- !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: 23800000, guid: 0bc607fa2e315482ebe98797e844e11f, type: 2} +--- !u!1 &88936773 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 88936777} + - component: {fileID: 88936776} + - component: {fileID: 88936778} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!20 &88936776 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 88936773} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 0.09433961, g: 0.09433961, b: 0.09433961, 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 &88936777 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 88936773} + m_LocalRotation: {x: 0.27059805, y: 0.6532815, z: -0.27059805, w: 0.6532815} + m_LocalPosition: {x: -30, y: 25, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 45, y: 90, z: 0} +--- !u!114 &88936778 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 88936773} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9021b6cc314944290986ab6feb48db79, type: 3} + m_Name: + m_EditorClassIdentifier: + height: 150 + maxLogCount: 50 + hotKey: 293 +--- !u!1001 &156927597 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: -1560774411725421365, guid: 8b8303075efb94c0e9478abfb2e558df, + type: 3} + propertyPath: sceneId + value: 42925857 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987808, guid: 8b8303075efb94c0e9478abfb2e558df, + type: 3} + propertyPath: m_Name + value: WhitePredicted + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: 8b8303075efb94c0e9478abfb2e558df, + type: 3} + propertyPath: m_RootOrder + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: 8b8303075efb94c0e9478abfb2e558df, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: 8b8303075efb94c0e9478abfb2e558df, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: 8b8303075efb94c0e9478abfb2e558df, + type: 3} + propertyPath: m_LocalPosition.z + value: -13 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: 8b8303075efb94c0e9478abfb2e558df, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: 8b8303075efb94c0e9478abfb2e558df, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: 8b8303075efb94c0e9478abfb2e558df, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: 8b8303075efb94c0e9478abfb2e558df, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: 8b8303075efb94c0e9478abfb2e558df, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: 8b8303075efb94c0e9478abfb2e558df, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: 8b8303075efb94c0e9478abfb2e558df, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 8b8303075efb94c0e9478abfb2e558df, type: 3} +--- !u!1001 &361125969 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 3429911415116987808, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_Name + value: RedPredicted + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_RootOrder + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalPosition.z + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6723567693459418947, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: sceneId + value: 1856985153 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, type: 3} +--- !u!1 &535739935 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 535739936} + - component: {fileID: 535739937} + m_Layer: 0 + m_Name: Spawn + m_TagString: Untagged + m_Icon: {fileID: -964228994112308473, guid: 0000000000000000d000000000000000, type: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &535739936 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 535739935} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &535739937 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 535739935} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 41f84591ce72545258ea98cb7518d8b9, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &988968053 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 3429911415116987808, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_Name + value: RedPredicted + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_RootOrder + value: 12 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalPosition.z + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6723567693459418947, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: sceneId + value: 3861589763 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, type: 3} +--- !u!1001 &1022481212 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 3429911415116987808, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_Name + value: RedPredicted + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_RootOrder + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalPosition.z + value: 16 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6723567693459418947, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: sceneId + value: 1907832951 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, type: 3} +--- !u!1001 &1036820049 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 3429911415116987808, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_Name + value: RedPredicted + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_RootOrder + value: 13 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalPosition.z + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6723567693459418947, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: sceneId + value: 4130529288 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, type: 3} +--- !u!1001 &1054702367 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 3429911415116987808, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_Name + value: RedPredicted + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_RootOrder + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalPosition.z + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6723567693459418947, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: sceneId + value: 1408280240 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, type: 3} +--- !u!1 &1282001517 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1282001518} + - component: {fileID: 1282001520} + - component: {fileID: 1282001519} + - component: {fileID: 1282001521} + - component: {fileID: 1282001522} + m_Layer: 0 + m_Name: NetworkManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1282001518 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1282001517} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1282001519 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1282001517} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6442dc8070ceb41f094e44de0bf87274, type: 3} + m_Name: + m_EditorClassIdentifier: + offsetX: 0 + offsetY: 0 +--- !u!114 &1282001520 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1282001517} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8aab4c8111b7c411b9b92cf3dbc5bd4e, type: 3} + m_Name: + m_EditorClassIdentifier: + dontDestroyOnLoad: 1 + runInBackground: 1 + autoStartServerBuild: 1 + autoConnectClientBuild: 0 + sendRate: 120 + offlineScene: + onlineScene: + transport: {fileID: 1282001521} + networkAddress: localhost + maxConnections: 2 + disconnectInactiveConnections: 0 + disconnectInactiveTimeout: 60 + authenticator: {fileID: 0} + playerPrefab: {fileID: 7529115942715260948, guid: ffab5af8b8b354f8ca8eb7aeaf89dfac, + type: 3} + autoCreatePlayer: 1 + playerSpawnMethod: 1 + spawnPrefabs: + - {fileID: 3429911415116987808, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, type: 3} + - {fileID: 3429911415116987808, guid: 8b8303075efb94c0e9478abfb2e558df, type: 3} + snapshotSettings: + bufferTimeMultiplier: 2 + bufferLimit: 32 + catchupNegativeThreshold: -1 + catchupPositiveThreshold: 1 + catchupSpeed: 0.019999999552965164 + slowdownSpeed: 0.03999999910593033 + driftEmaDuration: 1 + dynamicAdjustment: 1 + dynamicAdjustmentTolerance: 1 + deliveryTimeEmaDuration: 2 + connectionQualityInterval: 3 + timeInterpolationGui: 1 +--- !u!114 &1282001521 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1282001517} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6b0fecffa3f624585964b0d0eb21b18e, type: 3} + m_Name: + m_EditorClassIdentifier: + port: 7777 + DualMode: 1 + NoDelay: 1 + Interval: 10 + Timeout: 10000 + RecvBufferSize: 7361536 + SendBufferSize: 7361536 + FastResend: 2 + ReceiveWindowSize: 4096 + SendWindowSize: 4096 + MaxRetransmit: 40 + MaximizeSocketBuffers: 1 + ReliableMaxMessageSize: 297433 + UnreliableMaxMessageSize: 1195 + debugLog: 0 + statisticsGUI: 0 + statisticsLog: 0 +--- !u!114 &1282001522 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1282001517} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: bc654f29862fc2643b948f772ebb9e68, type: 3} + m_Name: + m_EditorClassIdentifier: + color: {r: 1, g: 1, b: 1, a: 1} + padding: 2 + width: 180 + height: 25 +--- !u!1001 &1321391581 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 3429911415116987808, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_Name + value: RedPredicted + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_RootOrder + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalPosition.z + value: 12 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6723567693459418947, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: sceneId + value: 965588151 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, type: 3} +--- !u!1001 &1647917375 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 3429911415116987808, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_Name + value: RedPredicted + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_RootOrder + value: 14 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6723567693459418947, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: sceneId + value: 412313944 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, type: 3} +--- !u!1001 &1740264579 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 3429911415116987808, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_Name + value: RedPredicted + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_RootOrder + value: 9 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalPosition.z + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6723567693459418947, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: sceneId + value: 2313561832 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, type: 3} +--- !u!1001 &1763788932 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 3429911415116987808, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_Name + value: RedPredicted + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_RootOrder + value: 7 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalPosition.z + value: 14 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6723567693459418947, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: sceneId + value: 382588830 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, type: 3} +--- !u!1001 &1927000090 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 3429911415116987808, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_Name + value: RedPredicted + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_RootOrder + value: 15 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalPosition.z + value: -2 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3429911415116987812, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6723567693459418947, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, + type: 3} + propertyPath: sceneId + value: 3301516472 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: ecbb35e2a01c0427ebb0b4b6ed146c70, type: 3} +--- !u!1 &2054208274 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2054208276} + - component: {fileID: 2054208275} + m_Layer: 0 + m_Name: Directional light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &2054208275 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2054208274} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.802082 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 0.5 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &2054208276 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2054208274} + m_LocalRotation: {x: 0, y: 0.9063079, z: -0.42261827, w: 0} + m_LocalPosition: {x: 0, y: 10, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: 180, z: 0} +--- !u!1001 &3539222711505105259 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 3699661344160954761, guid: dc0a91834ded843aba24753233b8c029, + type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 3699661344160954761, guid: dc0a91834ded843aba24753233b8c029, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3699661344160954761, guid: dc0a91834ded843aba24753233b8c029, + type: 3} + propertyPath: m_LocalPosition.y + value: -9.79 + objectReference: {fileID: 0} + - target: {fileID: 3699661344160954761, guid: dc0a91834ded843aba24753233b8c029, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3699661344160954761, guid: dc0a91834ded843aba24753233b8c029, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3699661344160954761, guid: dc0a91834ded843aba24753233b8c029, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 3699661344160954761, guid: dc0a91834ded843aba24753233b8c029, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 3699661344160954761, guid: dc0a91834ded843aba24753233b8c029, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 3699661344160954761, guid: dc0a91834ded843aba24753233b8c029, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3699661344160954761, guid: dc0a91834ded843aba24753233b8c029, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3699661344160954761, guid: dc0a91834ded843aba24753233b8c029, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4634620164816052983, guid: dc0a91834ded843aba24753233b8c029, + type: 3} + propertyPath: m_Name + value: Billiard Table + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: dc0a91834ded843aba24753233b8c029, type: 3} diff --git a/Assets/Mirror/Examples/BilliardsPredicted/BilliardsPredicted.unity.meta b/Assets/Mirror/Examples/BilliardsPredicted/BilliardsPredicted.unity.meta new file mode 100644 index 000000000..9ddef3bbf --- /dev/null +++ b/Assets/Mirror/Examples/BilliardsPredicted/BilliardsPredicted.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b18c719cb0805482ca6fc7c2db38ab4b +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mirror/Examples/BilliardsPredicted/PlayerPredicted.prefab b/Assets/Mirror/Examples/BilliardsPredicted/PlayerPredicted.prefab new file mode 100644 index 000000000..5d56497ff --- /dev/null +++ b/Assets/Mirror/Examples/BilliardsPredicted/PlayerPredicted.prefab @@ -0,0 +1,51 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &7529115942715260948 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1534822232247476853} + - component: {fileID: 1279227879756014839} + m_Layer: 0 + m_Name: PlayerPredicted + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1534822232247476853 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7529115942715260948} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1279227879756014839 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7529115942715260948} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9b91ecbcc199f4492b9a91e820070131, type: 3} + m_Name: + m_EditorClassIdentifier: + sceneId: 0 + _assetId: 3550837448 + serverOnly: 0 + visible: 0 + hasSpawned: 0 diff --git a/Assets/Mirror/Examples/BilliardsPredicted/PlayerPredicted.prefab.meta b/Assets/Mirror/Examples/BilliardsPredicted/PlayerPredicted.prefab.meta new file mode 100644 index 000000000..30ae213e6 --- /dev/null +++ b/Assets/Mirror/Examples/BilliardsPredicted/PlayerPredicted.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ffab5af8b8b354f8ca8eb7aeaf89dfac +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mirror/Examples/BilliardsPredicted/_Readme.txt b/Assets/Mirror/Examples/BilliardsPredicted/_Readme.txt new file mode 100644 index 000000000..ed0f01895 --- /dev/null +++ b/Assets/Mirror/Examples/BilliardsPredicted/_Readme.txt @@ -0,0 +1,8 @@ +Advanced multiplayer Billiards demo with Prediction. +Mouse drag the white ball to apply force. + +If you are a beginner, start with the basic Billiards demo instead. +If you are advanced, this demo shows how to use Mirror's prediction features for physics / FPS games. + +The demo is work in progress. +At the moment, this is only for the Mirror team to test individual prediction features! \ No newline at end of file diff --git a/Assets/Mirror/Examples/BilliardsPredicted/_Readme.txt.meta b/Assets/Mirror/Examples/BilliardsPredicted/_Readme.txt.meta new file mode 100644 index 000000000..35d062ec2 --- /dev/null +++ b/Assets/Mirror/Examples/BilliardsPredicted/_Readme.txt.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: e88568e61917a49d5957d51c4f8fb239 +timeCreated: 1684039107 \ No newline at end of file