public static void UnserializeInbound(CNetworkPlayer _cNetworkPlayer, CNetworkStream _cStream) { GameObject cPlayerActor = CGamePlayers.GetPlayerActor(_cNetworkPlayer.PlayerId); if (cPlayerActor != null) { CPlayerAirMotor cAirMotor = cPlayerActor.GetComponent <CPlayerAirMotor>(); while (_cStream.HasUnreadData) { ENetworkAction eNetworkAction = (ENetworkAction)_cStream.ReadByte(); switch (eNetworkAction) { case ENetworkAction.UpdateStates: cAirMotor.m_usMovementStates = _cStream.ReadUInt(); break; default: Debug.LogError(string.Format("Unknown network action ({0})", (int)eNetworkAction)); break; } } } }
void OnRecievedPlayerMicrophoneAudio(CNetworkPlayer _cPlayer, CNetworkStream _cAudioDataStream) { GameObject playerActor = CGamePlayers.GetPlayerActor(_cPlayer.PlayerId); CNetworkViewId playerViewID = playerActor.GetComponent <CNetworkView>().ViewId; _cAudioDataStream.SetReadOffset(0); byte[] streamData = _cAudioDataStream.ReadBytes(_cAudioDataStream.NumUnreadBytes); CNetworkStream dataStream = new CNetworkStream(); dataStream.Write(streamData); dataStream.Write(playerViewID); Dictionary <ulong, CNetworkPlayer> players = CNetwork.Server.FindNetworkPlayers(); foreach (ulong playerID in players.Keys) { if (m_bReturnToSender) { CNetwork.Server.TransmitMicrophoneAudio(playerID, dataStream); } else { if (_cPlayer.PlayerId != playerID) { CNetwork.Server.TransmitMicrophoneAudio(playerID, dataStream); } } } }
private void HandlePlayerOxygenRefill(ulong _ulPlayerId) { //being broken may be done here, seeing as it is the server. GameObject cPlayerActor = CGamePlayers.GetPlayerActor(_ulPlayerId); cPlayerActor.GetComponent <CPlayerSuit>().AddOxygen(20.0f); }
public static void UnserializeInbound(CNetworkPlayer _cNetworkPlayer, CNetworkStream _cStream) { GameObject cPlayerObject = CGamePlayers.GetPlayerActor(_cNetworkPlayer.PlayerId); CPlayerBackPack cPlayerBackPack = cPlayerObject.GetComponent <CPlayerBackPack>(); // Process stream data while (_cStream.HasUnreadData) { // Extract action ENetworkAction eAction = (ENetworkAction)_cStream.ReadByte(); // Handle action switch (eAction) { case ENetworkAction.PickupModule: CNetworkViewId cModuleViewId = _cStream.ReadNetworkViewId(); cPlayerBackPack.PickupModule(_cNetworkPlayer.PlayerId, cModuleViewId); break; case ENetworkAction.DropModule: cPlayerBackPack.DropModule(); break; case ENetworkAction.InsertCell: CNetworkViewId cCellSlotViewId = _cStream.ReadNetworkViewId(); cPlayerBackPack.InsertCell(_cNetworkPlayer.PlayerId, cCellSlotViewId); break; } } }
void HandleLeaveCockpit(ulong _ulPlayerId) { // Allow player to leave cockpit if (MountedPlayerId == _ulPlayerId) { // Teleport player back to entered position GameObject cPlayerActor = CGamePlayers.GetPlayerActor(_ulPlayerId); if (cPlayerActor != null) { // UnParent the player to the cockpit seat cPlayerActor.GetComponent <CNetworkView>().SetParent(null); // Move player back to positions when entered cPlayerActor.GetComponent <CNetworkView>().SetPosition(m_vEnterPosition); cPlayerActor.GetComponent <CNetworkView>().SetRotation(m_EnterRotation); // Turn of kinematic cPlayerActor.rigidbody.isKinematic = false; } m_cMountedPlayerId.Set(0); // Notify observers if (EventPlayerLeave != null) { EventPlayerLeave(m_cMountedPlayerId.GetPrevious()); } //Debug.Log(string.Format("Player ({0}) left cockpit", _ulPlayerId)); } }
void HandleEnterCockpit(ulong _ulPlayerId) { GameObject cPlayerActor = CGamePlayers.GetPlayerActor(_ulPlayerId); if (cPlayerActor != null && !IsMounted) { CNetworkViewId cPlayerActorViewId = cPlayerActor.GetComponent <CNetworkView>().ViewId; // Save position on player when entering m_vEnterPosition = cPlayerActor.transform.position; m_EnterRotation = cPlayerActor.transform.rotation; // Parent the player to the cockpit seat cPlayerActor.GetComponent <CNetworkView>().SetParent(m_cSeat.GetComponent <CNetworkView>().ViewId); // Teleport player in cockpit cPlayerActor.GetComponent <CNetworkView>().SetPosition(m_cSeat.transform.position); cPlayerActor.GetComponent <CNetworkView>().SetRotation(m_cSeat.transform.rotation); // Set the player kinematic cPlayerActor.rigidbody.isKinematic = true; m_cMountedPlayerId.Set(_ulPlayerId); // Notify observers if (EventPlayerEnter != null) { EventPlayerEnter(m_cMountedPlayerId.Get()); } } }
public static void UnserializePlayerState(CNetworkPlayer _cNetworkPlayer, CNetworkStream _cStream) { // Retrieve player actors head CPlayerHead cMyActorHead = CGamePlayers.GetPlayerActor(_cNetworkPlayer.PlayerId).GetComponent <CPlayerHead>(); // Write my head's x-rotation float fRotationX = _cStream.ReadFloat(); cMyActorHead.m_fHeadEulerX.Set(fRotationX); }
public static void Unserialize(CNetworkPlayer _cNetworkPlayer, CNetworkStream _cStream) { GameObject cPlayerActor = CGamePlayers.GetPlayerActor(_cNetworkPlayer.PlayerId); CPlayerRagdoll ragdoll = cPlayerActor.GetComponent <CPlayerRagdoll>(); while (_cStream.HasUnreadData) { // Extract action ragdoll.m_bRagdollState.Set(_cStream.ReadByte()); } }
private void UpdateListInformation() { foreach (KeyValuePair <ulong, GameObject> listItem in m_PlayersList) { // Set the alive status CPlayerHealth playerActorHealth = CGamePlayers.GetPlayerActor(listItem.Key).GetComponent <CPlayerHealth>(); if (playerActorHealth.CurrentHealthState == CPlayerHealth.HealthState.ALIVE) { listItem.Value.transform.FindChild("StatusAlive").gameObject.SetActive(true); listItem.Value.transform.FindChild("StatusDead").gameObject.SetActive(false); } else { listItem.Value.transform.FindChild("StatusAlive").gameObject.SetActive(false); listItem.Value.transform.FindChild("StatusDead").gameObject.SetActive(true); } } }
public static void UnserializeBeltState(CNetworkPlayer _cNetworkPlayer, CNetworkStream _cStream) { while (_cStream.HasUnreadData) { ENetworkAction eAction = (ENetworkAction)_cStream.ReadByte(); CPlayerBelt cPlayerBelt = CGamePlayers.GetPlayerActor(_cNetworkPlayer.PlayerId).GetComponent <CPlayerBelt>(); switch (eAction) { case ENetworkAction.PickupTool: { CNetworkViewId cToolViewId = _cStream.ReadNetworkViewId(); cPlayerBelt.PickupTool(cToolViewId.GameObject); } break; } } }
public void Pickup(ulong _ulPlayerId) { Logger.WriteErrorOn(!CNetwork.IsServer, "Only servers are allow to invoke this method"); if (!IsHeld) { // Set owning player m_ulOwnerPlayerId = _ulPlayerId; // Set owning object view id m_cOwnerActorViewId.Set(CGamePlayers.GetPlayerActor(_ulPlayerId).GetComponent <CNetworkView>().ViewId); // Notify observers if (EventPickedUp != null) { EventPickedUp(); } } }
public static void UnserializePlayerState(CNetworkPlayer _cNetworkPlayer, CNetworkStream _cStream) { GameObject cPlayerActor = CGamePlayers.GetPlayerActor(_cNetworkPlayer.PlayerId); if (cPlayerActor != null) { //while (_cStream.HasUnreadData) { // Retrieve player actor motor CPlayerGroundMotor cPlayerActorMotor = cPlayerActor.GetComponent <CPlayerGroundMotor>(); ENetworkAction eNetworkAction = (ENetworkAction)_cStream.ReadByte(); switch (eNetworkAction) { case ENetworkAction.UpdateStates: { cPlayerActorMotor.m_uiMovementStates = _cStream.ReadByte(); if (cPlayerActor != CGamePlayers.SelfActor) { cPlayerActor.transform.eulerAngles = new Vector3(0.0f, _cStream.ReadFloat(), 0.0f); } else { _cStream.ReadFloat(); } cPlayerActorMotor.m_bStates.Set((byte)cPlayerActorMotor.m_uiMovementStates); } break; default: Debug.LogError(string.Format("Unknown network action ({0})", (byte)eNetworkAction)); break; } } } }
public static void UnserializeIKTarget(CNetworkPlayer _cNetworkPlayer, CNetworkStream _cStream) { GameObject cPlayerActor = CGamePlayers.GetPlayerActor(_cNetworkPlayer.PlayerId); if (cPlayerActor != null) { CPlayerIKController cPlayerIKController = cPlayerActor.GetComponent <CPlayerIKController>(); ENetworkAction eNetworkAction = (ENetworkAction)_cStream.ReadByte(); switch (eNetworkAction) { case ENetworkAction.SetRightTransform: { Vector3 pos = new Vector3(); Vector3 rot = new Vector3(); pos.x = _cStream.ReadFloat(); pos.y = _cStream.ReadFloat(); pos.z = _cStream.ReadFloat(); cPlayerIKController.m_RightHandTarget.position = pos; rot.x = _cStream.ReadFloat(); rot.y = _cStream.ReadFloat(); rot.z = _cStream.ReadFloat(); cPlayerIKController.m_RightHandTarget.rotation = Quaternion.Euler(rot); cPlayerIKController.m_RightHandNetworkedPos.Set(cPlayerIKController.m_RightHandTarget.position); cPlayerIKController.m_RightHandNetworkedRot.Set(cPlayerIKController.m_RightHandTarget.rotation.eulerAngles); } break; case ENetworkAction.SetLeftTransform: { Vector3 pos = new Vector3(); Vector3 rot = new Vector3(); pos.x = _cStream.ReadFloat(); pos.y = _cStream.ReadFloat(); pos.z = _cStream.ReadFloat(); cPlayerIKController.m_LeftHandTarget.position = pos; rot.x = _cStream.ReadFloat(); rot.y = _cStream.ReadFloat(); rot.z = _cStream.ReadFloat(); cPlayerIKController.m_LeftHandTarget.rotation = Quaternion.Euler(rot); cPlayerIKController.m_RightHandNetworkedPos.Set(cPlayerIKController.m_LeftHandTarget.position); cPlayerIKController.m_RightHandNetworkedRot.Set(cPlayerIKController.m_LeftHandTarget.rotation.eulerAngles); } break; default: Debug.LogError(string.Format("Unknown network action ({0})", (byte)eNetworkAction)); break; } } }