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; }
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); }
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); }
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; }
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; }
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; } }
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; }