SkylinesMultiplayer.VehicleNetworkManager.UpdateCarsPositions C# (CSharp) Method

UpdateCarsPositions() public method

public UpdateCarsPositions ( NetIncomingMessage msg ) : void
msg Lidgren.Network.NetIncomingMessage
return void
        public void UpdateCarsPositions(NetIncomingMessage msg)
        {
            int carCount = msg.ReadInt32();
            for (int i = 0; i < carCount; i++)
            {
                int carID = msg.ReadInt32();
                int prefabIndex = msg.ReadInt32();

                Vector3 pos = new Vector3();
                pos.x = msg.ReadFloat();
                pos.y = msg.ReadFloat();
                pos.z = msg.ReadFloat();

                Quaternion rot2 = new Quaternion();
                rot2.x = msg.ReadFloat();
                rot2.y = msg.ReadFloat();
                rot2.z = msg.ReadFloat();
                rot2.w = msg.ReadFloat();

                if (!m_fakeCarsCurrentPool.ContainsKey(carID) && m_fakeCarsPoolAvailable.Count > 0)
                {
                    var obj = m_fakeCarsPoolAvailable[0];
                    m_fakeCarsPoolAvailable.RemoveAt(0);
                    m_fakeCarsPoolInUse.Add(obj);
                    m_fakeCarsCurrentPool.Add(carID, obj);

                    obj.GameObject.GetComponent<VehicleNetworkView>().ResertState();
                    obj.GameObject.GetComponent<VehicleNetworkView>().m_id = carID;
                    var prefab = PrefabCollection<VehicleInfo>.GetPrefab((uint)prefabIndex);
                    obj.GameObject.GetComponent<MeshFilter>().sharedMesh = prefab.m_mesh;
                    obj.GameObject.GetComponent<MeshRenderer>().sharedMaterial = prefab.m_material;
                    obj.GameObject.SetActive(true);
                }
                if (m_fakeCarsCurrentPool.ContainsKey(carID))
                    m_fakeCarsCurrentPool[carID].GameObject.GetComponent<VehicleNetworkView>().OnNetworkData(msg.ReceiveTime, pos, rot2);
            }
        }

Usage Example

Example #1
0
        void HandleClientMessage(NetIncomingMessage msg)
        {
            MessageFunction type = (MessageFunction)msg.ReadInt32();

            switch (type)
            {
            case MessageFunction.ClassMessage:
                string  assemblyName = msg.ReadString();
                string  classType    = msg.ReadString();
                Message report       = (Message)Activator.CreateInstance(assemblyName, classType).Unwrap();
                msg.ReadAllFields(report);
                report.OnCalled(report, msg);
                break;

            case MessageFunction.SpawnAllPlayer:
                int count = msg.ReadInt32();
                for (int i = 0; i < count; i++)
                {
                    int    id         = msg.ReadInt32();
                    string playerName = msg.ReadString();

                    SpawnPlayer(id, playerName);
                }

                int newId = SpawnLocalPlayer();
                MessageSpawnPlayer spawnMessage = new MessageSpawnPlayer();
                spawnMessage.playerId   = newId;
                spawnMessage.playerName = PlatformService.personaName;
                SendNetworkMessage(spawnMessage, SendTo.Others);
                break;

            case MessageFunction.UpdateVehiclesPositions:
                m_vNetworkManager.UpdateCarsPositions(msg);
                break;

            case MessageFunction.RemoveVehicle:
                int carID2 = msg.ReadInt32();
                m_vNetworkManager.RemoveCar(carID2);
                break;

            case MessageFunction.UpdateCitizensPositions:
                m_cNetworkManager.UpdateCitizensPositions(msg);
                break;

            default:
                Debug.LogWarning("Unhandled msg type: " + type.ToString());
                break;
            }
        }