コード例 #1
0
    private bool createRemotePlayer(DataEntityHandle remotePlayerHandle, bool attemptSpawn = true)
    {
        if (!dataEntityCollection.HasComponent <GameObjectReferenceData>(remotePlayerHandle))
        {
            dataEntityCollection.AddComponent <GameObjectReferenceData>(remotePlayerHandle);
        }
        if (!dataEntityCollection.HasComponent <AirBubbleData>(remotePlayerHandle))
        {
            dataEntityCollection.AddComponent <AirBubbleData>(remotePlayerHandle);
        }
        PositionData     component  = dataEntityCollection.GetComponent <PositionData>(remotePlayerHandle);
        RemotePlayerData component2 = dataEntityCollection.GetComponent <RemotePlayerData>(remotePlayerHandle);

        component2.PlayerRemoved += onPlayerRemoved;
        playerRemovedListeners.Add(component2);
        PresenceData component3 = dataEntityCollection.GetComponent <PresenceData>(remotePlayerHandle);

        if (component3 != null)
        {
            component3.PresenceDataUpdated += onPresenceDataUpdated;
        }
        if (!dataEntityCollection.HasComponent <LODRequestReference>(remotePlayerHandle))
        {
            LODRequestData requestData = new LODRequestData(LODSystem.REMOTE_PLAYER, remotePlayerHandle, component);
            requestData.OnGameObjectGeneratedEvent += onLODGameObjectGenerated;
            requestData.OnGameObjectRevokedEvent   += onLODGameObjectRevoked;
            LODRequest request = Service.Get <LODService>().Request(requestData, attemptSpawn);
            dataEntityCollection.AddComponent <LODRequestReference>(remotePlayerHandle).Request = request;
        }
        return(false);
    }
コード例 #2
0
        private bool deleteRemotePlayer(DataEntityHandle remotePlayerHandle)
        {
            RemotePlayerData component = dataEntityCollection.GetComponent <RemotePlayerData>(remotePlayerHandle);

            component.PlayerRemoved -= onPlayerDisconnect;
            return(playerRemovedListeners.Remove(component));
        }
コード例 #3
0
 private void onPlayerRemoved(RemotePlayerData remotePlayerData)
 {
     if (deleteRemotePlayer(remotePlayerData))
     {
         updateTeamworkLevel(0f - teamworkDelta);
     }
 }
コード例 #4
0
    private bool addRemotePlayer(DataEntityHandle remotePlayerHandle)
    {
        RemotePlayerData component = dataEntityCollection.GetComponent <RemotePlayerData>(remotePlayerHandle);

        component.PlayerRemoved += onPlayerRemoved;
        return(playerRemovedListeners.Add(component));
    }
コード例 #5
0
ファイル: RemotePlayer.cs プロジェクト: mecha-rm/GDW_Y3-PJT
 // applies remote player data
 public void ApplyData(RemotePlayerData rpd)
 {
     // player number should not be overriddden
     idNumber = rpd.idNumber;
     player.transform.position   = rpd.position;
     player.transform.localScale = rpd.scale;
     player.transform.rotation   = rpd.rotation;
     player.playerScore          = rpd.playerScore;
 }
コード例 #6
0
        private string getPlayerName(RemotePlayerData remotePlayerData)
        {
            DataEntityHandle entityByComponent = dataEntityCollection.GetEntityByComponent(remotePlayerData);

            if (dataEntityCollection.TryGetComponent <DisplayNameData>(entityByComponent, out var component))
            {
                return(component.DisplayName);
            }
            return("Error: name not found");
        }
コード例 #7
0
    private void onPlayerRemoved(RemotePlayerData remotePlayerData)
    {
        remotePlayerData.PlayerRemoved -= onPlayerRemoved;
        DataEntityHandle entityByComponent = dataEntityCollection.GetEntityByComponent(remotePlayerData);
        long             sessionId         = dataEntityCollection.GetComponent <SessionIdData>(entityByComponent).SessionId;

        if (activePlayerIndicator.ContainsKey(sessionId))
        {
            removePlayerIndicator(sessionId, isStored: false);
        }
    }
コード例 #8
0
ファイル: PropService.cs プロジェクト: smdx24/CPI-Source-Code
 private void onPlayerRemoved(RemotePlayerData remotePlayerData)
 {
     if (dataEntityCollection != null && userIdToPropUser != null)
     {
         DataEntityHandle entityByComponent = dataEntityCollection.GetEntityByComponent(remotePlayerData);
         if (!entityByComponent.IsNull)
         {
             long sessionId = dataEntityCollection.GetComponent <SessionIdData>(entityByComponent).SessionId;
             userIdToPropUser.Remove(sessionId);
         }
         remotePlayerData.PlayerRemoved -= onPlayerRemoved;
     }
 }
コード例 #9
0
 private void onPlayerDisconnect(RemotePlayerData remotePlayerData)
 {
     if (deleteRemotePlayer(remotePlayerData))
     {
         DataEntityHandle entityByComponent = dataEntityCollection.GetEntityByComponent(remotePlayerData);
         DisplayNameData  component2;
         if (Service.Get <CPDataEntityCollection>().TryGetComponent <GameObjectReferenceData>(entityByComponent, out var component))
         {
             decreasePlayers(component.GameObject);
         }
         else if (dataEntityCollection.TryGetComponent <DisplayNameData>(entityByComponent, out component2) && dispatcher != null && !string.IsNullOrEmpty(VolumeId))
         {
             dispatcher.DispatchEvent(new TiltATubesEvents.DisconnectPlayer(VolumeId, component2.DisplayName));
         }
     }
 }
コード例 #10
0
    private void onPlayerRemoved(RemotePlayerData component)
    {
        component.PlayerRemoved -= onPlayerRemoved;
        playerRemovedListeners.Remove(component);
        DataEntityHandle entityByComponent = dataEntityCollection.GetEntityByComponent(component);

        if (entityByComponent.IsNull)
        {
            Log.LogError(this, "RemotePlayerData removed, but the handle could not be found for the component");
        }
        if (dataEntityCollection.TryGetComponent(entityByComponent, out LODRequestReference component2))
        {
            Service.Get <LODService>().RemoveRequest(component2.Request);
        }
        avatarViewReady.Remove(entityByComponent);
        hasBeenPlaced.Remove(entityByComponent);
        dataEntityCollection.RemoveComponent <GameObjectReferenceData>(entityByComponent);
    }
コード例 #11
0
        private void onPlayerRemoved(RemotePlayerData remotePlayerData)
        {
            remotePlayerData.PlayerRemoved -= onPlayerRemoved;
            DataEntityHandle entityByComponent = dataEntityCollection.GetEntityByComponent(remotePlayerData);
            long             sessionId         = dataEntityCollection.GetComponent <SessionIdData>(entityByComponent).SessionId;

            if (!playerScoresDictionary.ContainsKey(sessionId))
            {
                return;
            }
            if (playerScoresDictionary.TryGetValue(sessionId, out var value))
            {
                for (int i = 0; i < value.Count; i++)
                {
                    removePlayerScore(sessionId, value[i]);
                }
            }
            playerScoresDictionary.Remove(sessionId);
        }
コード例 #12
0
ファイル: PropService.cs プロジェクト: smdx24/CPI-Source-Code
 private bool onRemotePlayerSpawned(PlayerSpawnedEvents.RemotePlayerSpawned evt)
 {
     if (!evt.Handle.IsNull)
     {
         PropUser value = evt.RemotePlayerGameObject.AddComponent <PropUser>();
         userIdToPropUser[dataEntityCollection.GetComponent <SessionIdData>(evt.Handle).SessionId] = value;
         RemotePlayerData component = dataEntityCollection.GetComponent <RemotePlayerData>(evt.Handle);
         if (component != null)
         {
             loadExistingPlayerHeldExperiences(dataEntityCollection.GetComponent <SessionIdData>(evt.Handle).SessionId);
             component.PlayerRemoved += onPlayerRemoved;
         }
         else
         {
             Log.LogError(this, "Failed to get the remote player data once it was spawned");
         }
     }
     return(false);
 }
コード例 #13
0
ファイル: RemotePlayer.cs プロジェクト: mecha-rm/GDW_Y3-PJT
    // converts byte data to remote player data
    public static RemotePlayerData BytesToRemotePlayerData(byte[] data)
    {
        // remote player data
        RemotePlayerData rpd = new RemotePlayerData();

        // index
        int index = 0;

        // no data sent.
        // TODO: should check for enough data being available.
        if (data == null || data.Length == 0)
        {
            return(rpd);
        }

        // ID Number
        {
            rpd.idNumber = BitConverter.ToInt32(data, index);
            index       += sizeof(int);
        }

        // Player Position
        {
            // getting position values
            // x value
            rpd.position.x = BitConverter.ToSingle(data, index);
            index         += sizeof(float);

            // y value
            rpd.position.y = BitConverter.ToSingle(data, index);
            index         += sizeof(float);

            // z value
            rpd.position.z = BitConverter.ToSingle(data, index);
            index         += sizeof(float);
        }

        // Player Scale
        {
            // getting position values
            // x value
            rpd.scale.x = BitConverter.ToSingle(data, index);
            index      += sizeof(float);

            // y value
            rpd.scale.y = BitConverter.ToSingle(data, index);
            index      += sizeof(float);

            // z value
            rpd.scale.z = BitConverter.ToSingle(data, index);
            index      += sizeof(float);
        }

        // Player Rotation
        {
            // getting position values
            // x value
            rpd.rotation.x = BitConverter.ToSingle(data, index);
            index         += sizeof(float);

            // y value
            rpd.rotation.y = BitConverter.ToSingle(data, index);
            index         += sizeof(float);

            // z value
            rpd.rotation.z = BitConverter.ToSingle(data, index);
            index         += sizeof(float);

            // w value
            rpd.rotation.w = BitConverter.ToSingle(data, index);
            index         += sizeof(float);
        }

        // Player Score
        {
            rpd.playerScore = BitConverter.ToSingle(data, index);
            index          += sizeof(float);
        }

        return(rpd);
    }
コード例 #14
0
ファイル: RemotePlayer.cs プロジェクト: mecha-rm/GDW_Y3-PJT
    // converts remote player data to bytes
    public static byte[] RemotePlayerDataToBytes(RemotePlayerData rpd)
    {
        // size of content
        byte[] sendData = new byte[DATA_SIZE];

        // index of content
        int index = 0;

        // Identification Number
        {
            byte[] data = BitConverter.GetBytes(rpd.idNumber);
            Buffer.BlockCopy(data, 0, sendData, index, data.Length);
            index += data.Length;
        }


        // Player Position
        {
            byte[] data;

            // x position
            data = BitConverter.GetBytes(rpd.position.x);
            Buffer.BlockCopy(data, 0, sendData, index, data.Length);
            index += data.Length;

            // y position
            data = BitConverter.GetBytes(rpd.position.y);
            Buffer.BlockCopy(data, 0, sendData, index, data.Length);
            index += data.Length;

            // z position
            data = BitConverter.GetBytes(rpd.position.z);
            Buffer.BlockCopy(data, 0, sendData, index, data.Length);
            index += data.Length;
        }

        // Player Scale
        {
            byte[] data;

            // x scale
            data = BitConverter.GetBytes(rpd.scale.x);
            Buffer.BlockCopy(data, 0, sendData, index, data.Length);
            index += data.Length;

            // y scale
            data = BitConverter.GetBytes(rpd.scale.y);
            Buffer.BlockCopy(data, 0, sendData, index, data.Length);
            index += data.Length;

            // z scale
            data = BitConverter.GetBytes(rpd.scale.z);
            Buffer.BlockCopy(data, 0, sendData, index, data.Length);
            index += data.Length;
        }

        // Player Rotation
        {
            byte[] data;

            // x rotation
            data = BitConverter.GetBytes(rpd.rotation.x);
            Buffer.BlockCopy(data, 0, sendData, index, data.Length);
            index += data.Length;

            // y rotation
            data = BitConverter.GetBytes(rpd.rotation.y);
            Buffer.BlockCopy(data, 0, sendData, index, data.Length);
            index += data.Length;

            // z rotation
            data = BitConverter.GetBytes(rpd.rotation.z);
            Buffer.BlockCopy(data, 0, sendData, index, data.Length);
            index += data.Length;

            // w value
            data = BitConverter.GetBytes(rpd.rotation.w);
            Buffer.BlockCopy(data, 0, sendData, index, data.Length);
            index += data.Length;
        }

        // Player Score
        {
            byte[] data;

            // player score
            data = BitConverter.GetBytes(rpd.playerScore);
            Buffer.BlockCopy(data, 0, sendData, index, data.Length);
            index += data.Length;
        }

        return(sendData);
    }
コード例 #15
0
 private bool deleteRemotePlayer(RemotePlayerData remotePlayerData)
 {
     remotePlayerData.PlayerRemoved -= onPlayerDisconnect;
     return(playerRemovedListeners.Remove(remotePlayerData));
 }
コード例 #16
0
 private bool addRemotePlayer(RemotePlayerData remotePlayerData)
 {
     remotePlayerData.PlayerRemoved += onPlayerDisconnect;
     return(playerRemovedListeners.Add(remotePlayerData));
 }