Exemple #1
0
        protected override void Init(MyObjectBuilder_DefinitionBase baseBuilder)
        {
            base.Init(baseBuilder);

            var builder = baseBuilder as MyObjectBuilder_SpawnGroupDefinition;

            Frequency = builder.Frequency;
            if (Frequency == 0.0f)
            {
                MySandboxGame.Log.WriteLine("Spawn group initialization: spawn group has zero frequency");
                return;
            }

            SpawnRadius = 0.0f;
            BoundingSphere sphere = new BoundingSphere(Vector3.Zero, float.MinValue);

            Prefabs.Clear();
            foreach (var prefab in builder.Prefabs)
            {
                SpawnGroupPrefab spawnPrefab = new SpawnGroupPrefab();
                spawnPrefab.Position   = prefab.Position;
                spawnPrefab.SubtypeId  = prefab.SubtypeId;
                spawnPrefab.BeaconText = prefab.BeaconText;
                spawnPrefab.Speed      = prefab.Speed;

                var prefabDef = MyDefinitionManager.Static.GetPrefabDefinition(spawnPrefab.SubtypeId);
                if (prefabDef == null)
                {
                    System.Diagnostics.Debug.Assert(false, "Spawn group initialization: Could not get prefab " + spawnPrefab.SubtypeId);
                    MySandboxGame.Log.WriteLine("Spawn group initialization: Could not get prefab " + spawnPrefab.SubtypeId);
                    return;
                }

                BoundingSphere prefabSphere = prefabDef.BoundingSphere;
                prefabSphere.Center += spawnPrefab.Position;

                sphere.Include(prefabSphere);

                Prefabs.Add(spawnPrefab);
            }

            Voxels.Clear();
            if (builder.Voxels != null)
            {
                foreach (var prefab in builder.Voxels)
                {
                    SpawnGroupVoxel spawnPrefab = new SpawnGroupVoxel();
                    spawnPrefab.Offset      = prefab.Offset;
                    spawnPrefab.StorageName = prefab.StorageName;

                    Voxels.Add(spawnPrefab);
                }
            }
            SpawnRadius = sphere.Radius + 5.0f; // Add 5m just to be sure
            IsEncounter = builder.IsEncounter;
        }
Exemple #2
0
        protected override void Init(MyObjectBuilder_DefinitionBase baseBuilder)
        {
            base.Init(baseBuilder);
            MyObjectBuilder_SpawnGroupDefinition definition = baseBuilder as MyObjectBuilder_SpawnGroupDefinition;

            this.Frequency = definition.Frequency;
            if (this.Frequency == 0f)
            {
                MySandboxGame.Log.WriteLine("Spawn group initialization: spawn group has zero frequency");
            }
            else
            {
                this.SpawnRadius = 0f;
                BoundingSphere sphere = new BoundingSphere(Vector3.Zero, float.MinValue);
                this.Prefabs.Clear();
                foreach (MyObjectBuilder_SpawnGroupDefinition.SpawnGroupPrefab prefab in definition.Prefabs)
                {
                    SpawnGroupPrefab item = new SpawnGroupPrefab {
                        Position                    = prefab.Position,
                        SubtypeId                   = prefab.SubtypeId,
                        BeaconText                  = prefab.BeaconText,
                        Speed                       = prefab.Speed,
                        ResetOwnership              = prefab.ResetOwnership,
                        PlaceToGridOrigin           = prefab.PlaceToGridOrigin,
                        Behaviour                   = prefab.Behaviour,
                        BehaviourActivationDistance = prefab.BehaviourActivationDistance
                    };
                    if (MyDefinitionManager.Static.GetPrefabDefinition(item.SubtypeId) == null)
                    {
                        MySandboxGame.Log.WriteLine("Spawn group initialization: Could not get prefab " + item.SubtypeId);
                        return;
                    }
                    this.Prefabs.Add(item);
                }
                this.Voxels.Clear();
                if (definition.Voxels != null)
                {
                    foreach (MyObjectBuilder_SpawnGroupDefinition.SpawnGroupVoxel voxel in definition.Voxels)
                    {
                        SpawnGroupVoxel item = new SpawnGroupVoxel {
                            Offset       = voxel.Offset,
                            StorageName  = voxel.StorageName,
                            CenterOffset = voxel.CenterOffset
                        };
                        this.Voxels.Add(item);
                    }
                }
                this.SpawnRadius = sphere.Radius + 5f;
                this.IsEncounter = definition.IsEncounter;
                this.IsCargoShip = definition.IsCargoShip;
                this.IsPirate    = definition.IsPirate;
                this.ReactorsOn  = definition.ReactorsOn;
            }
        }
        protected override void Init(MyObjectBuilder_DefinitionBase baseBuilder)
        {
            base.Init(baseBuilder);

            var builder = baseBuilder as MyObjectBuilder_SpawnGroupDefinition;

            Frequency = builder.Frequency;
            if (Frequency == 0.0f)
            {
                MySandboxGame.Log.WriteLine("Spawn group initialization: spawn group has zero frequency");
                return;
            }

            SpawnRadius = 0.0f;
            BoundingSphere sphere = new BoundingSphere(Vector3.Zero, float.MinValue);

            Prefabs.Clear();
            foreach (var prefab in builder.Prefabs)
            {
                SpawnGroupPrefab spawnPrefab = new SpawnGroupPrefab();
                spawnPrefab.Position = prefab.Position;
                spawnPrefab.SubtypeId = prefab.SubtypeId;
                spawnPrefab.BeaconText = prefab.BeaconText;
                spawnPrefab.Speed = prefab.Speed;

                var prefabDef = MyDefinitionManager.Static.GetPrefabDefinition(spawnPrefab.SubtypeId);
                if (prefabDef == null)
                {
                    System.Diagnostics.Debug.Assert(false, "Spawn group initialization: Could not get prefab " + spawnPrefab.SubtypeId);
                    MySandboxGame.Log.WriteLine("Spawn group initialization: Could not get prefab " + spawnPrefab.SubtypeId);
                    return;
                }

                BoundingSphere prefabSphere = prefabDef.BoundingSphere;
                prefabSphere.Center += spawnPrefab.Position;

                sphere.Include(prefabSphere);

                Prefabs.Add(spawnPrefab);
            }

            Voxels.Clear();
            if (builder.Voxels != null)
            {
                foreach (var prefab in builder.Voxels)
                {
                    SpawnGroupVoxel spawnPrefab = new SpawnGroupVoxel();
                    spawnPrefab.Offset = prefab.Offset;
                    spawnPrefab.StorageName = prefab.StorageName;

                    Voxels.Add(spawnPrefab);
                }
            }
            SpawnRadius = sphere.Radius + 5.0f; // Add 5m just to be sure
            IsEncounter = builder.IsEncounter;
        }