Exemplo n.º 1
0
        protected override void OnLoad(BitStream stream, Action <MyVoxelBase> loadingDoneHandler)
        {
            MyVoxelBase map = null;

            bool isFromPrefab = VRage.Serialization.MySerializer.CreateAndRead <bool>(stream);
            bool rangeChanged = VRage.Serialization.MySerializer.CreateAndRead <bool>(stream);

            byte[] data = null;
            if (rangeChanged)
            {
                data = VRage.Serialization.MySerializer.CreateAndRead <byte[]>(stream);
            }

            if (isFromPrefab)
            {
                var builder  = VRage.Serialization.MySerializer.CreateAndRead <MyObjectBuilder_EntityBase>(stream, MyObjectBuilderSerializer.Dynamic);
                var voxelMap = new MyVoxelMap();

                if (rangeChanged && data != null)
                {
                    IMyStorage storage = MyStorageBase.Load(data);
                    MyEntity   entity;
                    if (MyEntities.TryGetEntityById(builder.EntityId, out entity) && entity is MyVoxelMap)
                    {
                        voxelMap         = (entity as MyVoxelMap);
                        voxelMap.Storage = storage;
                    }
                    else
                    {
                        voxelMap.Init(builder, storage);
                        MyEntities.Add(voxelMap);
                    }
                }
                else
                {
                    voxelMap.Init(builder);
                    MyEntities.Add(voxelMap);
                }
                map = voxelMap;
            }
            else
            {
                long voxelMapId = VRage.Serialization.MySerializer.CreateAndRead <long>(stream);

                MyEntity entity = null;
                MyEntities.TryGetEntityById(voxelMapId, out entity);

                map = entity as MyVoxelBase;
            }
            loadingDoneHandler(map);
        }
 IMyVoxelMap IMyVoxelMaps.CreateVoxelMap(string storageName, IMyStorage storage, Vector3D position,long voxelMapId)
 {
     var voxelMap = new MyVoxelMap();
     voxelMap.EntityId = voxelMapId;
     voxelMap.Init(storageName, storage as Sandbox.Engine.Voxels.IMyStorage, position);
     MyEntities.Add(voxelMap);
     return voxelMap;
 }
Exemplo n.º 3
0
        IMyVoxelMap IMyVoxelMaps.CreateVoxelMap(string storageName, IMyStorage storage, Vector3D position, long voxelMapId)
        {
            var voxelMap = new MyVoxelMap();

            voxelMap.EntityId = voxelMapId;
            voxelMap.Init(storageName, storage as Sandbox.Engine.Voxels.IMyStorage, position);
            MyEntities.Add(voxelMap);
            return(voxelMap);
        }
Exemplo n.º 4
0
        private void ChangeClipboardPreview(bool visible)
        {
            if (m_copiedVoxelMaps.Count == 0 || !visible)
            {
                foreach (var voxelMap in m_previewVoxelMaps)
                {
                    MyEntities.EnableEntityBoundingBoxDraw(voxelMap, false);
                    if (m_shouldMarkForClose)
                    {
                        voxelMap.Close();
                    }
                }
                m_previewVoxelMaps.Clear();
                m_visible = false;
                return;
            }

            MyEntities.RemapObjectBuilderCollection(m_copiedVoxelMaps);

            for (int i = 0; i < m_copiedVoxelMaps.Count; ++i)
            {
                var voxelMapOb      = m_copiedVoxelMaps[i];
                var storage         = m_copiedStorages[i];
                var previewVoxelMap = new MyVoxelMap();
                var pos             = voxelMapOb.PositionAndOrientation.Value.Position;
                previewVoxelMap.Init(voxelMapOb.StorageName, storage, new Vector3(pos.x, pos.y, pos.z));

                DisablePhysicsRecursively(previewVoxelMap);
                MakeTransparent(previewVoxelMap);
                MyEntities.Add(previewVoxelMap);
                previewVoxelMap.PositionLeftBottomCorner = m_pastePosition - previewVoxelMap.Storage.Size * 0.5f;
                previewVoxelMap.PositionComp.SetPosition(m_pastePosition);
                previewVoxelMap.Save = false;

                m_previewVoxelMaps.Add(previewVoxelMap);

                IsActive             = visible;
                m_visible            = visible;
                m_shouldMarkForClose = true;
            }
        }
        static void SpawnAsteroid(SpawnAsteroidInfo asteroidInfo)
        {
            if (MySession.Static.CreativeMode || MyEventContext.Current.IsLocallyInvoked || MySession.Static.HasPlayerAdminRights(MyEventContext.Current.Sender.Value))
            {
                MyStorageBase storage;
                string storageName;
                using (MyRandom.Instance.PushSeed(asteroidInfo.RandomSeed))
                {
                    if (!asteroidInfo.IsProcedural)
                    {
                        var storageNameBase = asteroidInfo.Asteroid + "-" + asteroidInfo.RandomSeed;
                        storageName = MakeStorageName(storageNameBase);
                        storage = CreateAsteroidStorage(asteroidInfo.Asteroid, asteroidInfo.RandomSeed);
                    }
                    else
                    {
                        var storageNameBase = "ProcAsteroid" + "-" + asteroidInfo.RandomSeed + "r" + asteroidInfo.ProceduralRadius;
                        storageName = MakeStorageName(storageNameBase);
                        storage = CreateProceduralAsteroidStorage(asteroidInfo.RandomSeed, asteroidInfo.ProceduralRadius, 0.03f);
                    }
                }

                var pastedVoxelMap = new MyVoxelMap();
                pastedVoxelMap.CreatedByUser = true;
                pastedVoxelMap.Save = true;
                pastedVoxelMap.AsteroidName = asteroidInfo.Asteroid;
                pastedVoxelMap.Init(storageName, storage, asteroidInfo.Position - storage.Size * 0.5f);
                MyEntities.Add(pastedVoxelMap);
                MyEntities.RaiseEntityCreated(pastedVoxelMap);
            }
        }
        static void SpawnAsteroidConfirmedSuccess(ref SpawnAsteroidConfirmedMsg msg, MyNetworkClient sender)
        {
            MyStorageBase storage;
            SpawnAsteroidMsg asteroid = msg.AsteroidDetails;

            string storageName;
            using (MyRandom.Instance.PushSeed(asteroid.RandomSeed))
            {
                if (!asteroid.IsProcedural)
                {
                    var storageNameBase = asteroid.StorageName ?? (asteroid.Asteroid + "-" + asteroid.RandomSeed);
                    storageName = MakeStorageName(storageNameBase);
                    storage = CreateAsteroidStorage(asteroid.Asteroid, asteroid.RandomSeed);
                }
                else
                {
                    var storageNameBase = asteroid.StorageName ?? "ProcAsteroid" + "-" + asteroid.RandomSeed + "r" + asteroid.ProceduralRadius;
                    storageName = MakeStorageName(storageNameBase);
                    storage = CreateProceduralAsteroidStorage(asteroid.RandomSeed, asteroid.ProceduralRadius, 0.03f);
                }
            }

            var pastedVoxelMap = new MyVoxelMap();
            pastedVoxelMap.EntityId = msg.EntityId;
            pastedVoxelMap.Init(storageName, storage, asteroid.Position - storage.Size * 0.5f);
            MyEntities.Add(pastedVoxelMap);
        }
Exemplo n.º 7
0
 public static MyVoxelMap AddVoxelMap(string storageName, MyStorageBase storage, Vector3 positionMinCorner, long entityId = 0)
 {
     var voxelMap = new MyVoxelMap();
     voxelMap.EntityId = entityId;
     voxelMap.Init(storageName, storage, positionMinCorner);
     MyEntities.Add(voxelMap);
     return voxelMap;
 }
Exemplo n.º 8
0
        public static MyVoxelMap AddVoxelMap(string storageName, MyStorageBase storage, MatrixD worldMatrix, long entityId=0, bool lazyPhysics = false)
        {
            ProfilerShort.Begin("AddVoxelMap");

            var voxelMap = new MyVoxelMap();
            if (entityId != 0)
            {
                voxelMap.EntityId = entityId;
            }
            voxelMap.DelayRigidBodyCreation = lazyPhysics;
            voxelMap.Init(storageName, storage, worldMatrix);
            MyEntities.Add(voxelMap);
            MyEntities.RaiseEntityCreated(voxelMap);

            ProfilerShort.End();
            return voxelMap;
        }
Exemplo n.º 9
0
        private void ChangeClipboardPreview(bool visible)
        {
            if (m_copiedVoxelMaps.Count == 0 || !visible)
            {
                foreach(var voxelMap in m_previewVoxelMaps)
                {
                    MyEntities.EnableEntityBoundingBoxDraw(voxelMap, false);
                    if (m_shouldMarkForClose)
                        voxelMap.Close();
                }
                m_previewVoxelMaps.Clear();
                m_visible = false;
                return;
            }

            MyEntities.RemapObjectBuilderCollection(m_copiedVoxelMaps);

            for (int i = 0; i < m_copiedVoxelMaps.Count; ++i)
            {
                var voxelMapOb = m_copiedVoxelMaps[i];
                var storage = m_copiedStorages[i];
                var previewVoxelMap = new MyVoxelMap();
                var pos = voxelMapOb.PositionAndOrientation.Value.Position;
                previewVoxelMap.Init(voxelMapOb.StorageName, storage, new Vector3(pos.x, pos.y, pos.z));

                DisablePhysicsRecursively(previewVoxelMap);
                MakeTransparent(previewVoxelMap);
                MyEntities.Add(previewVoxelMap);
                previewVoxelMap.PositionLeftBottomCorner = m_pastePosition - previewVoxelMap.Storage.Size * 0.5f;
                previewVoxelMap.PositionComp.SetPosition(m_pastePosition);
                previewVoxelMap.Save = false;

                m_previewVoxelMaps.Add(previewVoxelMap);

                IsActive = visible;
                m_visible = visible;
                m_shouldMarkForClose = true;
            }
        }
Exemplo n.º 10
0
 public static MyVoxelMap AddVoxelMap(string storageName, MyStorageBase storage, MatrixD worldMatrix, long entityId = 0)
 {
     var voxelMap = new MyVoxelMap();
     voxelMap.EntityId = entityId;
     voxelMap.Init(storageName, storage, worldMatrix);
     MyEntities.Add(voxelMap);
     MyEntities.RaiseEntityCreated(voxelMap);
     return voxelMap;
 }