Exemplo n.º 1
0
        static void OnMessageCreateAndInit(ref CreateAndInitMsg msg, MyNetworkClient sender)
        {
            MemoryStream stream = new MemoryStream(msg.ObjectBuilder, 0, msg.BuilderLength);

            MyObjectBuilder_EntityBase entityBuilder;

            if (MyObjectBuilderSerializer.DeserializeGZippedXML(stream, out entityBuilder))
            {
                if (entityBuilder == null)
                {
                    Debug.Fail("Object builder was not deserialized");
                    return;
                }
            }
            else
            {
                Debug.Fail("Deserialization failed");
                return;
            }

            MyPhysicalItemDefinition entityDefinition;

            if (!MyDefinitionManager.Static.TryGetDefinition(msg.DefinitionId, out entityDefinition))
            {
                Debug.Fail("Can not find definition with id:" + msg.DefinitionId.ToString());
                return;
            }

            MyEntities.CreateAndAddFromDefinition(entityBuilder, entityDefinition);
        }
Exemplo n.º 2
0
        public static void SendEntityCreated(MyObjectBuilder_EntityBase entityBuilder, MyDefinitionId myDefinitionId)
        {
            var msg = new CreateAndInitMsg();

            MemoryStream stream = new MemoryStream();

            MyObjectBuilderSerializer.SerializeXML(stream, (MyObjectBuilder_Base)entityBuilder, MyObjectBuilderSerializer.XmlCompression.Gzip, typeof(MyObjectBuilder_EntityBase));

            Debug.Assert(stream.Length <= int.MaxValue);
            if (stream.Length > int.MaxValue)
            {
                MySandboxGame.Log.WriteLine("Cannot synchronize created entity: number of bytes when serialized is larger than int.MaxValue!");
                return;
            }

            msg.ObjectBuilder = stream.ToArray();
            msg.BuilderLength = (int)stream.Length;
            msg.DefinitionId  = myDefinitionId;

            MySession.Static.SyncLayer.SendMessageToAll(ref msg);
        }
Exemplo n.º 3
0
        static void OnMessageCreateAndInit(ref CreateAndInitMsg msg, MyNetworkClient sender)
        {
            Debug.Fail("Use replication instead of this!");
            MemoryStream stream = new MemoryStream(msg.ObjectBuilder, 0, msg.BuilderLength);

            MyObjectBuilder_EntityBase entityBuilder;

            if (MyObjectBuilderSerializer.DeserializeGZippedXML(stream, out entityBuilder))
            {
                if (entityBuilder == null)
                {
                    Debug.Fail("Object builder was not deserialized");
                    return;
                }
            }
            else
            {
                Debug.Fail("Deserialization failed");
                return;
            }

            MyEntities.CreateAndAddFromDefinition(entityBuilder, msg.DefinitionId);
        }
Exemplo n.º 4
0
        static void OnMessageCreateAndInit(ref CreateAndInitMsg msg, MyNetworkClient sender)
        {
            Debug.Fail("Use replication instead of this!");
            MemoryStream stream = new MemoryStream(msg.ObjectBuilder, 0, msg.BuilderLength);

            MyObjectBuilder_EntityBase entityBuilder;
            if (MyObjectBuilderSerializer.DeserializeGZippedXML(stream, out entityBuilder))
            {
                if (entityBuilder == null)
                {
                    Debug.Fail("Object builder was not deserialized");
                    return;
                }
            }
            else
            {
                Debug.Fail("Deserialization failed");
                return;
            }

            MyEntities.CreateAndAddFromDefinition(entityBuilder, msg.DefinitionId);
        }
Exemplo n.º 5
0
        public static void SendEntityCreated(MyObjectBuilder_EntityBase entityBuilder, MyDefinitionId myDefinitionId)
        {
            Debug.Fail("Use replication instead of this!");
            var msg = new CreateAndInitMsg();

            MemoryStream stream = new MemoryStream();
            MyObjectBuilderSerializer.SerializeXML(stream, (MyObjectBuilder_Base)entityBuilder, MyObjectBuilderSerializer.XmlCompression.Gzip, typeof(MyObjectBuilder_EntityBase));

            Debug.Assert(stream.Length <= int.MaxValue);
            if (stream.Length > int.MaxValue)
            {
                MySandboxGame.Log.WriteLine("Cannot synchronize created entity: number of bytes when serialized is larger than int.MaxValue!");
                return;
            }

            msg.ObjectBuilder = stream.ToArray();
            msg.BuilderLength = (int)stream.Length;
            msg.DefinitionId = myDefinitionId;

            MySession.Static.SyncLayer.SendMessageToAll(ref msg);
        }
Exemplo n.º 6
0
        static void OnMessageCreateAndInit(ref CreateAndInitMsg msg, MyNetworkClient sender)
        {
            MemoryStream stream = new MemoryStream(msg.ObjectBuilder, 0, msg.BuilderLength);

            MyObjectBuilder_EntityBase entityBuilder;
            if (MyObjectBuilderSerializer.DeserializeGZippedXML(stream, out entityBuilder))
            {               
                if (entityBuilder == null)
                {
                    Debug.Fail("Object builder was not deserialized");
                    return;
                }
            }              
            else
            {
                Debug.Fail("Deserialization failed");
                return;
            }

            MyPhysicalItemDefinition entityDefinition;
            if (!MyDefinitionManager.Static.TryGetDefinition(msg.DefinitionId, out entityDefinition))
            {
                Debug.Fail("Can not find definition with id:" + msg.DefinitionId.ToString());
                return;
            }

            MyEntities.CreateAndAddFromDefinition(entityBuilder, entityDefinition);
        }