Пример #1
0
 public override void OnReplicationSerialize_CJGenerated(P2PNetworkWriter writer, bool initial_state)
 {
     base.OnReplicationSerialize_CJGenerated(writer, initial_state);
     writer.Write((int)this.m_LCInfo_m_LiquidType_Repl);
     writer.Write(this.m_LCInfo_m_Capacity_Repl);
     writer.Write(this.m_LCInfo_m_Amount_Repl);
 }
 public virtual void OnReplicationSerialize_CJGenerated(P2PNetworkWriter writer, bool initial_state)
 {
     writer.Write(this.m_BestTriggerReplObj_Repl);
     writer.Write(this.m_ExecutedTriggerReplObj_Repl);
     if (this.m_BestTriggerChildIdx_Repl == null)
     {
         writer.WritePackedUInt32(0u);
     }
     else
     {
         writer.WritePackedUInt32((uint)this.m_BestTriggerChildIdx_Repl.Count);
         for (int i = 0; i < this.m_BestTriggerChildIdx_Repl.Count; i++)
         {
             writer.Write(this.m_BestTriggerChildIdx_Repl[i]);
         }
     }
     if (this.m_ExecutedTriggerChildIdx_Repl == null)
     {
         writer.WritePackedUInt32(0u);
         return;
     }
     writer.WritePackedUInt32((uint)this.m_ExecutedTriggerChildIdx_Repl.Count);
     for (int j = 0; j < this.m_ExecutedTriggerChildIdx_Repl.Count; j++)
     {
         writer.Write(this.m_ExecutedTriggerChildIdx_Repl[j]);
     }
 }
Пример #3
0
 public void Serialize(P2PNetworkWriter writer)
 {
     writer.Write(this.m_Position);
     writer.Write((int)this.m_ItemID);
     writer.Write(this.m_ActiveChildrenMask);
     writer.Write((short)this.m_Group.index);
 }
Пример #4
0
 public virtual void OnReplicationSerialize_CJGenerated(P2PNetworkWriter writer, bool initial_state)
 {
     if (this.m_ReplActiveElements_Repl == null)
     {
         writer.WritePackedUInt32(0u);
     }
     else
     {
         writer.WritePackedUInt32((uint)this.m_ReplActiveElements_Repl.Length);
         for (int i = 0; i < this.m_ReplActiveElements_Repl.Length; i++)
         {
             writer.Write(this.m_ReplActiveElements_Repl[i]);
         }
     }
     if (initial_state)
     {
         if (this.m_ReplActiveElementsHash == null)
         {
             writer.WritePackedUInt32(0u);
             return;
         }
         writer.WritePackedUInt32((uint)this.m_ReplActiveElementsHash.Length);
         for (int j = 0; j < this.m_ReplActiveElementsHash.Length; j++)
         {
             writer.Write(this.m_ReplActiveElementsHash[j]);
         }
     }
 }
    public override void OnReplicationSerialize(P2PNetworkWriter writer, bool initialState)
    {
        if (this.IsAttached())
        {
            writer.Write('\0');
            return;
        }
        writer.Write((char)this.transformSyncMode);
        switch (this.transformSyncMode)
        {
        case ReplicatedTransform.TransformSyncMode.SyncNone:
            return;

        case ReplicatedTransform.TransformSyncMode.SyncTransform:
            this.SerializeModeTransform(writer);
            return;

        case ReplicatedTransform.TransformSyncMode.SyncRigidbody2D:
            this.SerializeMode2D(writer);
            return;

        case ReplicatedTransform.TransformSyncMode.SyncRigidbody3D:
            this.SerializeMode3D(writer);
            return;

        case ReplicatedTransform.TransformSyncMode.SyncCharacterController:
            this.SerializeModeCharacterController(writer);
            return;

        default:
            return;
        }
    }
 private void SerializeMode3D(P2PNetworkWriter writer)
 {
     if (base.gameObject.activeSelf)
     {
         writer.Write(this.m_RigidBody3D.worldCenterOfMass);
     }
     else
     {
         writer.Write(base.transform.position);
     }
     ReplicatedTransform.SerializeVelocity3D(writer, this.m_RigidBody3D.velocity, ReplicatedTransform.CompressionSyncMode.None);
     if (this.syncRotationAxis != ReplicatedTransform.AxisSyncMode.None)
     {
         if (base.gameObject.activeSelf)
         {
             ReplicatedTransform.SerializeRotation3D(writer, this.m_RigidBody3D.rotation, this.syncRotationAxis, this.rotationSyncCompression);
         }
         else
         {
             ReplicatedTransform.SerializeRotation3D(writer, base.transform.rotation, this.syncRotationAxis, this.rotationSyncCompression);
         }
     }
     if (this.m_SyncSpin)
     {
         ReplicatedTransform.SerializeSpin3D(writer, this.m_RigidBody3D.angularVelocity, this.syncRotationAxis, this.rotationSyncCompression);
     }
     this.m_PrevPosition = (base.gameObject.activeSelf ? this.m_RigidBody3D.position : base.transform.position);
     this.m_PrevRotation = (base.gameObject.activeSelf ? this.m_RigidBody3D.rotation : base.transform.rotation);
     this.m_PrevVelocity = this.m_RigidBody3D.velocity.sqrMagnitude;
 }
Пример #7
0
        // Create a P2PNetworkWriter from a list of entities. This P2PNetworkWriter can then be sent to peers
        private P2PNetworkWriter CreateNetworkWriterForChangedEntities(List <EntityData> changedEntities)
        {
            for (int i = changedEntities.Count - 1; i >= 0; i--)
            {
                if (!changedEntities[i].transform)
                {
                    changedEntities.RemoveAt(i);
                }
            }

            if (changedEntities.Count == 0)
            {
                return(null);
            }

            P2PNetworkWriter writer = new P2PNetworkWriter();

            writer.StartMessage(ENTITY_SCALE_SYNC_MESSAGE_TYPE);
            writer.Write((byte)changedEntities.Count);
            for (int i = 0; i < changedEntities.Count; i++)
            {
                writer.Write(changedEntities[i].transform.gameObject);
                writer.Write(changedEntities[i].transform.localScale.x);
            }
            writer.FinishMessage();

            return(writer);
        }
 public override void Serialize(P2PNetworkWriter writer)
 {
     writer.Write(this.guid_bytes, GuidComponent.GUID_BYTES_CNT);
     writer.Write(this.assetId);
     writer.Write(this.position);
     writer.WriteBytesFull(this.payload);
 }
Пример #9
0
 public override void OnReplicationSerialize(P2PNetworkWriter writer, bool initialState)
 {
     if (this.m_AnimatorParamsDirty || initialState)
     {
         writer.Write(this.m_AnimatorParams.Count);
         for (int i = 0; i < this.m_AnimatorParams.Count; i++)
         {
             this.m_AnimatorParams[i].Serialize(writer);
         }
         this.m_AnimatorParamsDirty = false;
     }
     else
     {
         writer.Write(0);
     }
     if (this.m_LayeredAnimationsDirty || initialState)
     {
         writer.Write(this.m_LayeredAnimationStringHashes.Length);
         for (int j = 0; j < this.m_LayeredAnimationStringHashes.Length; j++)
         {
             writer.Write(this.m_LayeredAnimationStringHashes[j]);
         }
         this.m_LayeredAnimationsDirty = false;
         return;
     }
     writer.Write(0);
 }
Пример #10
0
 public override void OnReplicationSerialize(P2PNetworkWriter writer, bool initialState)
 {
     writer.Write(MainLevel.s_GameTime);
     writer.Write(MainLevel.Instance.m_TODSky.Cycle.Day);
     writer.Write(MainLevel.Instance.m_TODSky.Cycle.Hour);
     writer.Write(MainLevel.Instance.m_TODSky.Cycle.Month);
     writer.Write(MainLevel.Instance.m_TODSky.Cycle.Year);
 }
 public override void OnReplicationSerialize(P2PNetworkWriter writer, bool initial_state)
 {
     writer.Write((int)this.m_ReplControllerType);
     if (this.m_ReplControllerType != PlayerControllerType.Unknown)
     {
         writer.Write(this.m_ReplItemName);
     }
 }
Пример #12
0
 public override void Serialize(P2PNetworkWriter writer)
 {
     writer.Write((ushort)this.scripts.Length);
     foreach (P2PCRCMessageEntry p2PCRCMessageEntry in this.scripts)
     {
         writer.Write(p2PCRCMessageEntry.name);
         writer.Write(p2PCRCMessageEntry.channel);
     }
 }
Пример #13
0
 public override void OnReplicationSerialize(P2PNetworkWriter writer, bool initial_state)
 {
     base.OnReplicationSerialize(writer, initial_state);
     writer.Write(this.m_CurrentHitsCount);
     foreach (ConstructionSlot constructionSlot in this.m_ConstructionSlots)
     {
         writer.Write((constructionSlot.m_Construction != null) ? constructionSlot.m_Construction.gameObject : null);
     }
 }
Пример #14
0
 public override void OnReplicationSerialize(P2PNetworkWriter writer, bool initial_state)
 {
     if (initial_state)
     {
         List <Vector3> allPoints = this.m_DestroyedObjects.GetAllPoints();
         writer.Write((ushort)allPoints.Count);
         for (int i = 0; i < allPoints.Count; i++)
         {
             writer.Write(allPoints[i]);
         }
     }
 }
Пример #15
0
 public override void OnReplicationSerialize(P2PNetworkWriter writer, bool initial_state)
 {
     writer.Write(this.m_IsRunning);
     writer.Write(this.m_IsInWater);
     writer.Write(this.m_IsSwimming);
     writer.Write(this.m_IsSleeping);
     writer.Write(this.m_LastCollisionFlags);
     writer.Write(this.m_WantedSpeed2d);
     writer.Write(this.m_IsDead);
     writer.Write(this.m_IsInSafeZone);
     writer.Write(this.m_Health);
     writer.Write(this.m_MaxHealth);
 }
Пример #16
0
        private void SyncScale(bool tcp)
        {
            if (!ReplTools.IsPlayingAlone())
            {
                float scale = targetTransform.localScale.x;
                remoteScale = scale;

                P2PNetworkWriter writer = new P2PNetworkWriter();
                writer.StartMessage(GulliverMod.PLAYER_SCALE_SYNC_MESSAGE_TYPE);
                writer.Write(gameObject);
                writer.Write(scale);
                writer.FinishMessage();
                P2PSession.Instance.SendWriterToAll(writer, tcp ? 0 : 1);                   // 0: TCP, 1: UDP
            }
        }
Пример #17
0
        private IEnumerator SendDroppedItemsToPeersCoroutine(GameObject[] droppedItems)
        {
            yield return(new WaitForSecondsRealtime(0.2f));

            if (droppedItems != null && droppedItems.Length > 0)
            {
                P2PNetworkWriter writer = new P2PNetworkWriter();
                writer.StartMessage(DROPPED_ITEMS_SYNC_MESSAGE_TYPE);
                writer.Write((byte)droppedItems.Length);
                for (int i = 0; i < droppedItems.Length; i++)
                {
                    writer.Write(droppedItems[i].gameObject);
                }
                writer.FinishMessage();
                P2PSession.Instance.SendWriterToAll(writer, 0);                   // 0: TCP, 1: UDP
            }
        }
Пример #18
0
    public void SendTextChatMessage(string message)
    {
        P2PNetworkWriter p2PNetworkWriter = new P2PNetworkWriter();

        p2PNetworkWriter.StartMessage(10);
        p2PNetworkWriter.Write(message);
        p2PNetworkWriter.FinishMessage();
        this.SendWriterToAll(p2PNetworkWriter, 1);
    }
Пример #19
0
 private void SerializeModeCharacterController(P2PNetworkWriter writer)
 {
     writer.Write(base.transform.position);
     if (this.syncRotationAxis != ReplicatedTransform.AxisSyncMode.None)
     {
         ReplicatedTransform.SerializeRotation3D(writer, base.transform.rotation, this.syncRotationAxis, this.rotationSyncCompression);
     }
     this.m_PrevPosition = base.transform.position;
     this.m_PrevRotation = base.transform.rotation;
     this.m_PrevVelocity = 0f;
 }
Пример #20
0
    private static void WriteAngle(P2PNetworkWriter writer, float angle, ReplicatedTransform.CompressionSyncMode compression)
    {
        switch (compression)
        {
        case ReplicatedTransform.CompressionSyncMode.None:
            writer.Write(angle);
            return;

        case ReplicatedTransform.CompressionSyncMode.Low:
            writer.Write((short)angle);
            return;

        case ReplicatedTransform.CompressionSyncMode.High:
            writer.Write((short)angle);
            return;

        default:
            return;
        }
    }
Пример #21
0
 public override void OnReplicationSerialize(P2PNetworkWriter writer, bool initialState)
 {
     if (!initialState)
     {
         writer.WritePackedUInt32((uint)this.m_ReplDestroyedObject.Count);
         for (int i = 0; i < this.m_ReplDestroyedObject.Count; i++)
         {
             writer.Write(this.m_ReplDestroyedObject[i]);
         }
         this.m_ReplDestroyedObject.Clear();
     }
 }
 public override void OnReplicationSerialize(P2PNetworkWriter writer, bool initial_state)
 {
     writer.Write(this.m_PlantDestroyed);
     if (this.m_PlantDestroyed)
     {
         writer.Write(this.m_ActivateScripts);
         writer.Write(this.m_DontDestroy);
         writer.Write(this.m_Layer);
         ItemReplacer component = base.GetComponent <ItemReplacer>();
         if (component != null)
         {
             writer.WritePackedUInt32((uint)component.m_DestroyOnReplace.Count);
             for (int i = 0; i < component.m_DestroyOnReplace.Count; i++)
             {
                 writer.Write(component.m_DestroyOnReplace[i]);
             }
             return;
         }
         writer.WritePackedUInt32(0u);
     }
 }
 public override void OnReplicationSerialize(P2PNetworkWriter writer, bool initial_state)
 {
     base.OnReplicationSerialize(writer, initial_state);
     using (P2PNetworkWriterSeekHelper p2PNetworkWriterSeekHelper = new P2PNetworkWriterSeekHelper(writer))
     {
         writer.WritePackedUInt32(0u);
         uint num = 0u;
         foreach (ReplicatedPlayerInjuries.ReplicatedWoundSlot replicatedWoundSlot in this.m_WoundSlots)
         {
             if (replicatedWoundSlot.IsInjury())
             {
                 writer.Write((int)replicatedWoundSlot.m_InjuryData.type);
                 writer.Write((int)replicatedWoundSlot.m_InjuryData.state);
                 writer.Write(replicatedWoundSlot.m_SlotIndex);
                 num += 1u;
             }
         }
         p2PNetworkWriterSeekHelper.SeekToStoredPos();
         writer.WritePackedUInt32(num);
     }
 }
 public virtual void OnReplicationSerialize_CJGenerated(P2PNetworkWriter writer, bool initial_state)
 {
     if (this.m_Rotation_Repl == null)
     {
         writer.WritePackedUInt32(0u);
         return;
     }
     writer.WritePackedUInt32((uint)this.m_Rotation_Repl.Length);
     for (int i = 0; i < this.m_Rotation_Repl.Length; i++)
     {
         writer.Write(this.m_Rotation_Repl[i]);
     }
 }
Пример #25
0
        // Synchronize IsEnabled's value with peers
        private void SendEnabledStateToPeers()
        {
            enabledStateNextSyncTime = Time.realtimeSinceStartup + ENABLED_STATE_SYNC_INTERVAL;

            // Master (host) determines whether or not the mod is enabled
            if (ReplTools.AmIMaster() && !ReplTools.IsPlayingAlone())
            {
                P2PNetworkWriter writer = new P2PNetworkWriter();
                writer.StartMessage(ENABLED_STATE_SYNC_MESSAGE_TYPE);
                writer.Write(IsEnabled);
                writer.FinishMessage();
                P2PSession.Instance.SendWriterToAll(writer, 0);                   // 0: TCP, 1: UDP
            }
        }
Пример #26
0
 public override void OnReplicationSerialize(P2PNetworkWriter writer, bool initial_state)
 {
     writer.Write(this.m_WeatherInterpolated);
     writer.Write(this.m_CurrentDataIndex);
     writer.Write((this.m_CurrentRainData != null) ? this.m_CurrentRainData.m_ExecutionTime : 0f);
     writer.Write(this.m_CurrentPeriod);
     writer.Write(this.m_PeriodStartTime);
     writer.Write(this.m_LastRainTime);
 }
 public void SerializeAllObjects(P2PNetworkWriter writer)
 {
     using (P2PNetworkWriterSeekHelper p2PNetworkWriterSeekHelper = new P2PNetworkWriterSeekHelper(writer))
     {
         writer.Write(0);
         int num = 0;
         for (int i = 0; i < this.m_NumCellsX; i++)
         {
             for (int j = 0; j < this.m_NumCellsY; j++)
             {
                 QuadTreeCellBalanceSystem quadTreeCellBalanceSystem = this.m_Cells[i, j];
                 for (int k = 0; k < quadTreeCellBalanceSystem.m_Objects.Count; k++)
                 {
                     BalanceSystemObject balanceSystemObject = quadTreeCellBalanceSystem.m_Objects[k];
                     writer.Write(balanceSystemObject.m_Position);
                     balanceSystemObject.Serialize(writer);
                     num++;
                 }
             }
         }
         p2PNetworkWriterSeekHelper.SeekToStoredPos();
         writer.Write(num);
     }
 }
Пример #28
0
    private P2PNetworkWriter BuildDespawnWriter(ReplicationComponent obj)
    {
        if (obj.GetGuidComponent == null)
        {
            if (P2PLogFilter.logError)
            {
                Debug.LogError("Replicator::BuildDespawnWriter called for object without guid!");
            }
            return(null);
        }
        P2PNetworkWriter p2PNetworkWriter = new P2PNetworkWriter();

        p2PNetworkWriter.StartMessage(3);
        p2PNetworkWriter.Write(obj.gameObject);
        p2PNetworkWriter.FinishMessage();
        return(p2PNetworkWriter);
    }
Пример #29
0
    public void OnReplicationMessage(P2PNetworkMessage net_msg)
    {
        byte[]     array      = net_msg.m_Reader.ReadGuidBytesTemporary();
        GameObject gameObject = GuidManager.ResolveGuid(array);

        if (gameObject)
        {
            this.GetReplComponentForGameObject(gameObject, true).ReplicationReceive(net_msg.m_Reader, false);
            return;
        }
        if (P2PLogFilter.logWarn)
        {
            Debug.LogWarning("Did not find target for replication update message for " + new Guid(array));
        }
        P2PNetworkWriter p2PNetworkWriter = new P2PNetworkWriter();

        p2PNetworkWriter.StartMessage(8);
        p2PNetworkWriter.Write(array, GuidComponent.GUID_BYTES_CNT);
        p2PNetworkWriter.FinishMessage();
        P2PSession.Instance.SendWriterTo(net_msg.m_Connection.m_Peer, p2PNetworkWriter, 0);
    }
Пример #30
0
 private void SerializeMode2D(P2PNetworkWriter writer)
 {
     writer.Write(this.m_RigidBody2D.position);
     ReplicatedTransform.SerializeVelocity2D(writer, this.m_RigidBody2D.velocity, ReplicatedTransform.CompressionSyncMode.None);
     if (this.syncRotationAxis != ReplicatedTransform.AxisSyncMode.None)
     {
         float num = this.m_RigidBody2D.rotation % 360f;
         if (num < 0f)
         {
             num += 360f;
         }
         ReplicatedTransform.SerializeRotation2D(writer, num, this.rotationSyncCompression);
     }
     if (this.m_SyncSpin)
     {
         ReplicatedTransform.SerializeSpin2D(writer, this.m_RigidBody2D.angularVelocity, this.rotationSyncCompression);
     }
     this.m_PrevPosition = this.m_RigidBody2D.position;
     this.m_PrevRotation = base.transform.rotation;
     this.m_PrevVelocity = this.m_RigidBody2D.velocity.sqrMagnitude;
 }