Marek Fix
This commit is contained in:
@@ -182,6 +182,7 @@ namespace MegaKoop.Game.Networking
|
|||||||
var clone = Instantiate(template, spawnPosition, baseRotation, parent);
|
var clone = Instantiate(template, spawnPosition, baseRotation, parent);
|
||||||
clone.name = BuildPlayerName(info, i);
|
clone.name = BuildPlayerName(info, i);
|
||||||
|
|
||||||
|
AdjustSpawnToGround(clone);
|
||||||
ConfigureCloneForPlayer(clone, info, i);
|
ConfigureCloneForPlayer(clone, info, i);
|
||||||
|
|
||||||
ulong ownerSteamId = ParseSteamId(info.SteamId);
|
ulong ownerSteamId = ParseSteamId(info.SteamId);
|
||||||
@@ -252,6 +253,25 @@ namespace MegaKoop.Game.Networking
|
|||||||
return center + offset;
|
return center + offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void AdjustSpawnToGround(GameObject clone)
|
||||||
|
{
|
||||||
|
if (clone == null) return;
|
||||||
|
var t = clone.transform;
|
||||||
|
var cc = clone.GetComponent<CharacterController>();
|
||||||
|
Vector3 pos = t.position;
|
||||||
|
float up = 2.5f;
|
||||||
|
float down = 10f;
|
||||||
|
float radius = cc != null ? cc.radius : 0.25f;
|
||||||
|
Vector3 origin = pos + Vector3.up * up;
|
||||||
|
if (Physics.SphereCast(origin, Mathf.Max(0.05f, radius * 0.9f), Vector3.down, out RaycastHit hit, up + down, ~0, QueryTriggerInteraction.Ignore))
|
||||||
|
{
|
||||||
|
float centerY = cc != null ? cc.center.y : 0f;
|
||||||
|
float height = cc != null ? cc.height : 2f;
|
||||||
|
float targetY = hit.point.y + (height * 0.5f) - centerY + 0.02f;
|
||||||
|
t.position = new Vector3(pos.x, targetY, pos.z);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void ConfigureCloneForPlayer(GameObject clone, LobbyPlayerInfo info, int index)
|
private void ConfigureCloneForPlayer(GameObject clone, LobbyPlayerInfo info, int index)
|
||||||
{
|
{
|
||||||
// Ensure network identity is deterministic across clients.
|
// Ensure network identity is deterministic across clients.
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ namespace MegaKoop.Game.Networking
|
|||||||
private Quaternion remoteTargetRotation;
|
private Quaternion remoteTargetRotation;
|
||||||
private Vector3 remoteTargetVelocity;
|
private Vector3 remoteTargetVelocity;
|
||||||
private bool haveRemoteState;
|
private bool haveRemoteState;
|
||||||
|
private SteamCharacterNetworkBridge characterBridge;
|
||||||
|
|
||||||
private void Awake()
|
private void Awake()
|
||||||
{
|
{
|
||||||
@@ -54,6 +55,13 @@ namespace MegaKoop.Game.Networking
|
|||||||
trackedNavMeshAgent = GetComponent<UnityEngine.AI.NavMeshAgent>();
|
trackedNavMeshAgent = GetComponent<UnityEngine.AI.NavMeshAgent>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
characterBridge = GetComponent<SteamCharacterNetworkBridge>();
|
||||||
|
if (characterBridge != null)
|
||||||
|
{
|
||||||
|
enabled = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
remoteTargetPosition = targetTransform.position;
|
remoteTargetPosition = targetTransform.position;
|
||||||
remoteTargetRotation = targetTransform.rotation;
|
remoteTargetRotation = targetTransform.rotation;
|
||||||
remoteTargetVelocity = Vector3.zero;
|
remoteTargetVelocity = Vector3.zero;
|
||||||
@@ -62,6 +70,12 @@ namespace MegaKoop.Game.Networking
|
|||||||
|
|
||||||
private void OnEnable()
|
private void OnEnable()
|
||||||
{
|
{
|
||||||
|
characterBridge = GetComponent<SteamCharacterNetworkBridge>();
|
||||||
|
if (characterBridge != null)
|
||||||
|
{
|
||||||
|
enabled = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
EnsureNetworkManager();
|
EnsureNetworkManager();
|
||||||
RegisterHandlers();
|
RegisterHandlers();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -86,6 +86,7 @@ namespace MegaKoop.Game
|
|||||||
{
|
{
|
||||||
EnsureAnimatorReference();
|
EnsureAnimatorReference();
|
||||||
InitializeAnimatorHashes();
|
InitializeAnimatorHashes();
|
||||||
|
SnapToGroundImmediate();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Update()
|
private void Update()
|
||||||
@@ -120,6 +121,31 @@ namespace MegaKoop.Game
|
|||||||
UpdateAnimator();
|
UpdateAnimator();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void SnapToGroundImmediate()
|
||||||
|
{
|
||||||
|
if (characterController == null)
|
||||||
|
{
|
||||||
|
characterController = GetComponent<UnityEngine.CharacterController>();
|
||||||
|
}
|
||||||
|
|
||||||
|
Vector3 pos = transform.position;
|
||||||
|
float up = 2.5f;
|
||||||
|
float down = 10f;
|
||||||
|
float radius = characterController != null ? characterController.radius : 0.25f;
|
||||||
|
Vector3 origin = pos + Vector3.up * up;
|
||||||
|
if (Physics.SphereCast(origin, Mathf.Max(0.05f, radius * 0.9f), Vector3.down, out RaycastHit hit, up + down, ~0, QueryTriggerInteraction.Ignore))
|
||||||
|
{
|
||||||
|
float centerY = characterController != null ? characterController.center.y : 0f;
|
||||||
|
float height = characterController != null ? characterController.height : 2f;
|
||||||
|
float bottomToCenter = Mathf.Max(radius, height * 0.5f) - radius;
|
||||||
|
float targetY = hit.point.y + bottomToCenter - centerY + 0.02f;
|
||||||
|
transform.position = new Vector3(pos.x, targetY, pos.z);
|
||||||
|
isGrounded = true;
|
||||||
|
verticalVelocity = groundedGravity;
|
||||||
|
lastTimeGrounded = Time.time;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void SetInputSource(MegaKoop.Game.Networking.ICharacterInputSource source)
|
public void SetInputSource(MegaKoop.Game.Networking.ICharacterInputSource source)
|
||||||
{
|
{
|
||||||
inputSource = source;
|
inputSource = source;
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -26438,27 +26438,6 @@ GameObject:
|
|||||||
m_CorrespondingSourceObject: {fileID: 100000, guid: 4f32dfddb033d3e40b5841bc53cc1689, type: 3}
|
m_CorrespondingSourceObject: {fileID: 100000, guid: 4f32dfddb033d3e40b5841bc53cc1689, type: 3}
|
||||||
m_PrefabInstance: {fileID: 1547596301}
|
m_PrefabInstance: {fileID: 1547596301}
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
--- !u!65 &1101562815
|
|
||||||
BoxCollider:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 1101562811}
|
|
||||||
m_Material: {fileID: 0}
|
|
||||||
m_IncludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_ExcludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_LayerOverridePriority: 0
|
|
||||||
m_IsTrigger: 0
|
|
||||||
m_ProvidesContacts: 0
|
|
||||||
m_Enabled: 1
|
|
||||||
serializedVersion: 3
|
|
||||||
m_Size: {x: 20, y: 0.20000087, z: 20}
|
|
||||||
m_Center: {x: 0, y: 0.1, z: 0}
|
|
||||||
--- !u!65 &1101562816
|
--- !u!65 &1101562816
|
||||||
BoxCollider:
|
BoxCollider:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -40151,9 +40130,6 @@ PrefabInstance:
|
|||||||
m_RemovedGameObjects: []
|
m_RemovedGameObjects: []
|
||||||
m_AddedGameObjects: []
|
m_AddedGameObjects: []
|
||||||
m_AddedComponents:
|
m_AddedComponents:
|
||||||
- targetCorrespondingSourceObject: {fileID: 100000, guid: 4f32dfddb033d3e40b5841bc53cc1689, type: 3}
|
|
||||||
insertIndex: -1
|
|
||||||
addedObject: {fileID: 1101562815}
|
|
||||||
- targetCorrespondingSourceObject: {fileID: 100000, guid: 4f32dfddb033d3e40b5841bc53cc1689, type: 3}
|
- targetCorrespondingSourceObject: {fileID: 100000, guid: 4f32dfddb033d3e40b5841bc53cc1689, type: 3}
|
||||||
insertIndex: -1
|
insertIndex: -1
|
||||||
addedObject: {fileID: 1101562816}
|
addedObject: {fileID: 1101562816}
|
||||||
@@ -43612,27 +43588,6 @@ GameObject:
|
|||||||
m_PrefabInstance: {fileID: 1803301414}
|
m_PrefabInstance: {fileID: 1803301414}
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
--- !u!65 &1676182022
|
--- !u!65 &1676182022
|
||||||
BoxCollider:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 1676182018}
|
|
||||||
m_Material: {fileID: 0}
|
|
||||||
m_IncludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_ExcludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_LayerOverridePriority: 0
|
|
||||||
m_IsTrigger: 0
|
|
||||||
m_ProvidesContacts: 0
|
|
||||||
m_Enabled: 1
|
|
||||||
serializedVersion: 3
|
|
||||||
m_Size: {x: 19.999998, y: 0.20000087, z: 19.999998}
|
|
||||||
m_Center: {x: 0, y: 0.1, z: 0}
|
|
||||||
--- !u!65 &1676182023
|
|
||||||
BoxCollider:
|
BoxCollider:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
@@ -47240,9 +47195,6 @@ PrefabInstance:
|
|||||||
- targetCorrespondingSourceObject: {fileID: 100000, guid: cbc86bb57f673ba45a8426789eb0fac0, type: 3}
|
- targetCorrespondingSourceObject: {fileID: 100000, guid: cbc86bb57f673ba45a8426789eb0fac0, type: 3}
|
||||||
insertIndex: -1
|
insertIndex: -1
|
||||||
addedObject: {fileID: 1676182022}
|
addedObject: {fileID: 1676182022}
|
||||||
- targetCorrespondingSourceObject: {fileID: 100000, guid: cbc86bb57f673ba45a8426789eb0fac0, type: 3}
|
|
||||||
insertIndex: -1
|
|
||||||
addedObject: {fileID: 1676182023}
|
|
||||||
- targetCorrespondingSourceObject: {fileID: 100000, guid: cbc86bb57f673ba45a8426789eb0fac0, type: 3}
|
- targetCorrespondingSourceObject: {fileID: 100000, guid: cbc86bb57f673ba45a8426789eb0fac0, type: 3}
|
||||||
insertIndex: -1
|
insertIndex: -1
|
||||||
addedObject: {fileID: 1676182027}
|
addedObject: {fileID: 1676182027}
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user