コード例 #1
0
        //  Read this object from message-in
        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)
        {
            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false)
            {
                return(NetworkError());
            }

            // Ship Type
            MyMwcObjectBuilder_SmallDebris_TypesEnum?debrisType = MyMwcMessageIn.ReadObjectBuilderSmallDebrisTypesEnumEx(binaryReader, senderEndPoint);

            if (debrisType == null)
            {
                return(NetworkError());
            }
            DebrisType = debrisType.Value;
            MyMwcLog.IfNetVerbose_AddToLog("DebrisType: " + DebrisType);

            //Immovable
            bool?immovable = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);

            if (immovable == null)
            {
                return(NetworkError());
            }
            Immovable = immovable.Value;
            MyMwcLog.IfNetVerbose_AddToLog("Immovable: " + Immovable);

            return(true);
        }
コード例 #2
0
 public static MyGuiSmallDebrisHelper GetMyGuiSmallDebrisHelper(MyMwcObjectBuilder_SmallDebris_TypesEnum smallDebrisEnum)
 {
     MyGuiSmallDebrisHelper ret;
     if (m_smallDebrisHelpers.TryGetValue(smallDebrisEnum, out ret))
         return ret;
     else
         return null;
 }
コード例 #3
0
        public static MyGuiSmallDebrisHelper GetMyGuiSmallDebrisHelper(MyMwcObjectBuilder_SmallDebris_TypesEnum smallDebrisEnum)
        {
            MyGuiSmallDebrisHelper ret;

            if (m_smallDebrisHelpers.TryGetValue(smallDebrisEnum, out ret))
            {
                return(ret);
            }
            else
            {
                return(null);
            }
        }
コード例 #4
0
        public static MyModelsEnum GetModelForType(MyMwcObjectBuilder_SmallDebris_TypesEnum smallDebrisEnum)
        {
            switch (smallDebrisEnum)
            {
            case MyMwcObjectBuilder_SmallDebris_TypesEnum.Cistern:
                return(MyModelsEnum.cistern);

                break;

            case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris1:
                return(MyModelsEnum.Debris1);

                break;

            case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris2:
                return(MyModelsEnum.Debris2);

                break;

            case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris3:
                return(MyModelsEnum.Debris3);

                break;

            case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris4:
                return(MyModelsEnum.Debris4);

                break;

            case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris5:
                return(MyModelsEnum.Debris5);

                break;

            case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris6:
                return(MyModelsEnum.Debris6);

                break;

            case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris7:
                return(MyModelsEnum.Debris7);

                break;

            case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris8:
                return(MyModelsEnum.Debris8);

                break;

            case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris9:
                return(MyModelsEnum.Debris9);

                break;

            case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris10:
                return(MyModelsEnum.Debris10);

                break;

            case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris11:
                return(MyModelsEnum.Debris11);

                break;

            case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris12:
                return(MyModelsEnum.Debris12);

                break;

            case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris13:
                return(MyModelsEnum.Debris13);

                break;

            case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris14:
                return(MyModelsEnum.Debris14);

                break;

            case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris15:
                return(MyModelsEnum.Debris15);

                break;

            case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris16:
                return(MyModelsEnum.Debris16);

                break;

            case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris17:
                return(MyModelsEnum.Debris17);

                break;

            case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris18:
                return(MyModelsEnum.Debris18);

                break;

            case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris19:
                return(MyModelsEnum.Debris19);

                break;

            case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris20:
                return(MyModelsEnum.Debris20);

                break;

            case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris21:
                return(MyModelsEnum.Debris21);

                break;

            case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris22:
                return(MyModelsEnum.Debris22);

                break;

            case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris23:
                return(MyModelsEnum.Debris23);

                break;

            case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris24:
                return(MyModelsEnum.Debris24);

                break;

            case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris25:
                return(MyModelsEnum.Debris25);

                break;

            case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris26:
                return(MyModelsEnum.Debris26);

                break;

            case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris27:
                return(MyModelsEnum.Debris27);

                break;

            case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris28:
                return(MyModelsEnum.Debris28);

                break;

            case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris29:
                return(MyModelsEnum.Debris29);

                break;

            case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris30:
                return(MyModelsEnum.Debris30);

                break;

            case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris31:
                return(MyModelsEnum.Debris31);

                break;

            case MyMwcObjectBuilder_SmallDebris_TypesEnum.pipe_bundle:
                return(MyModelsEnum.pipe_bundle);

                break;

            case MyMwcObjectBuilder_SmallDebris_TypesEnum.UtilityVehicle_1:
                return(MyModelsEnum.UtilityVehicle_1);

                break;

            case MyMwcObjectBuilder_SmallDebris_TypesEnum.Standard_Container_1:
                return(MyModelsEnum.Standard_Container_1);

                break;

            case MyMwcObjectBuilder_SmallDebris_TypesEnum.Standard_Container_2:
                return(MyModelsEnum.Standard_Container_2);

                break;

            case MyMwcObjectBuilder_SmallDebris_TypesEnum.Standard_Container_3:
                return(MyModelsEnum.Standard_Container_3);

                break;

            case MyMwcObjectBuilder_SmallDebris_TypesEnum.Standard_Container_4:
                return(MyModelsEnum.Standard_Container_4);

                break;

            case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris32_pilot:
                return(MyModelsEnum.Debris32_pilot);

                break;

            default:
                throw new MyMwcExceptionApplicationShouldNotGetHere();
            }
        }
コード例 #5
0
        private void AddDebris(MyMwcObjectBuilder_SmallDebris_TypesEnum? tag, Vector2? screenPosition = null)
        {
            if (!tag.HasValue)
            {
                return;
            }

            MyMwcObjectBuilder_SmallDebris smallDebrisBuilder = new MyMwcObjectBuilder_SmallDebris(tag.Value, false, 10000);
            MyEditor.Static.CreateFromObjectBuilder(smallDebrisBuilder, Matrix.Identity, screenPosition);
        }
コード例 #6
0
        public static MyModelsEnum GetModelForType(MyMwcObjectBuilder_SmallDebris_TypesEnum smallDebrisEnum)
        {
            switch (smallDebrisEnum)
            {
                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Cistern:
                    return MyModelsEnum.cistern;
                    break;
                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris1:
                    return MyModelsEnum.Debris1;
                    break;
                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris2:
                    return MyModelsEnum.Debris2;
                    break;
                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris3:
                    return MyModelsEnum.Debris3;
                    break;
                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris4:
                    return MyModelsEnum.Debris4;
                    break;
                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris5:
                    return MyModelsEnum.Debris5;
                    break;
                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris6:
                    return MyModelsEnum.Debris6;
                    break;
                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris7:
                    return MyModelsEnum.Debris7;
                    break;
                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris8:
                    return MyModelsEnum.Debris8;
                    break;
                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris9:
                    return MyModelsEnum.Debris9;
                    break;
                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris10:
                    return MyModelsEnum.Debris10;
                    break;
                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris11:
                    return MyModelsEnum.Debris11;
                    break;
                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris12:
                    return MyModelsEnum.Debris12;
                    break;
                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris13:
                    return MyModelsEnum.Debris13;
                    break;
                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris14:
                    return MyModelsEnum.Debris14;
                    break;
                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris15:
                    return MyModelsEnum.Debris15;
                    break;
                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris16:
                    return MyModelsEnum.Debris16;
                    break;
                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris17:
                    return MyModelsEnum.Debris17;
                    break;
                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris18:
                    return MyModelsEnum.Debris18;
                    break;
                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris19:
                    return MyModelsEnum.Debris19;
                    break;
                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris20:
                    return MyModelsEnum.Debris20;
                    break;
                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris21:
                    return MyModelsEnum.Debris21;
                    break;
                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris22:
                    return MyModelsEnum.Debris22;
                    break;
                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris23:
                    return MyModelsEnum.Debris23;
                    break;
                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris24:
                    return MyModelsEnum.Debris24;
                    break;
                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris25:
                    return MyModelsEnum.Debris25;
                    break;
                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris26:
                    return MyModelsEnum.Debris26;
                    break;
                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris27:
                    return MyModelsEnum.Debris27;
                    break;
                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris28:
                    return MyModelsEnum.Debris28;
                    break;
                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris29:
                    return MyModelsEnum.Debris29;
                    break;
                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris30:
                    return MyModelsEnum.Debris30;
                    break;
                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris31:
                    return MyModelsEnum.Debris31;
                    break;
                case MyMwcObjectBuilder_SmallDebris_TypesEnum.pipe_bundle:
                    return MyModelsEnum.pipe_bundle;
                    break;
                case MyMwcObjectBuilder_SmallDebris_TypesEnum.UtilityVehicle_1:
                    return MyModelsEnum.UtilityVehicle_1;
                    break;
                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Standard_Container_1:
                    return MyModelsEnum.Standard_Container_1;
                    break;
                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Standard_Container_2:
                    return MyModelsEnum.Standard_Container_2;
                    break;
                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Standard_Container_3:
                    return MyModelsEnum.Standard_Container_3;
                    break;
                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Standard_Container_4:
                    return MyModelsEnum.Standard_Container_4;
                    break;
                case MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris32_pilot:
                    return MyModelsEnum.Debris32_pilot;
                    break;
                default:
                    throw new MyMwcExceptionApplicationShouldNotGetHere();
            }

        }
コード例 #7
0
 internal override void SetObjectBuilderIdInternal(int?objectBuilderId)
 {
     DebrisType = (MyMwcObjectBuilder_SmallDebris_TypesEnum)Convert.ToUInt16(objectBuilderId);
 }
コード例 #8
0
 public MyMwcObjectBuilder_SmallDebris(MyMwcObjectBuilder_SmallDebris_TypesEnum debrisType, bool immovable, float mass)
 {
     DebrisType = debrisType;
     Immovable  = immovable;
     Mass       = mass;
 }
コード例 #9
0
 internal override void SetObjectBuilderIdInternal(int? objectBuilderId)
 {
     DebrisType = (MyMwcObjectBuilder_SmallDebris_TypesEnum) Convert.ToUInt16(objectBuilderId);
 }
コード例 #10
0
 public MyMwcObjectBuilder_SmallDebris(MyMwcObjectBuilder_SmallDebris_TypesEnum debrisType, bool immovable, float mass)
 {
     DebrisType = debrisType;
     Immovable = immovable;
     Mass = mass;
 }
コード例 #11
0
        //  Read this object from message-in
        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)
        {
            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError();

            // Ship Type
            MyMwcObjectBuilder_SmallDebris_TypesEnum? debrisType = MyMwcMessageIn.ReadObjectBuilderSmallDebrisTypesEnumEx(binaryReader, senderEndPoint);
            if (debrisType == null) return NetworkError();
            DebrisType = debrisType.Value;
            MyMwcLog.IfNetVerbose_AddToLog("DebrisType: " + DebrisType);

            //Immovable
            bool? immovable = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);
            if (immovable == null) return NetworkError();
            Immovable = immovable.Value;
            MyMwcLog.IfNetVerbose_AddToLog("Immovable: " + Immovable);

            return true;
        }
コード例 #12
0
 private static void AddDebrisToList(List<MyMwcObjectBuilder_SmallDebris> list, MyMwcObjectBuilder_SmallDebris_TypesEnum debrisType, Vector3 position)
 {
     var debris = new MyMwcObjectBuilder_SmallDebris(debrisType, false, 10000);
     debris.PositionAndOrientation.Forward = Vector3.Forward;
     debris.PositionAndOrientation.Up = Vector3.Up;
     debris.PositionAndOrientation.Position = position;
     list.Add(debris);
 }
コード例 #13
0
 //  Use only for quick test or trailer animations
 public MySmallDebris CreateFakeSmallDebris(string hudLabelText, MyMwcObjectBuilder_SmallDebris_TypesEnum debrisType,
     Vector3 position, bool immovable)
 {
     MySmallDebris debris = (MySmallDebris)MyEntities.CreateFromObjectBuilderAndAdd(hudLabelText,
             new MyMwcObjectBuilder_SmallDebris(debrisType, immovable, 10000), Matrix.CreateWorld(position, Vector3.Forward, Vector3.Up));
     MyEntities.TestEntityAfterInsertionForCollision(debris);
     return debris;
 }
コード例 #14
0
 public static void WriteObjectBuilderSmallDebrisTypesEnum(MyMwcObjectBuilder_SmallDebris_TypesEnum val, BinaryWriter binaryWriter)
 {
     binaryWriter.Write((ushort)val);
 }
コード例 #15
0
        public static void Update()
        {
            /*
             * foreach (var pair in m_usedCoords)
             * {
             *  pair.Value.MarkForClose();
             * }
             *
             * m_usedCoords.Clear(); */
            if (!MySector.DebrisProperties.Enabled || !MinerWars.AppCode.Game.Render.MyRenderConstants.RenderQualityProfile.EnableFlyingDebris)
            {
                return;
            }

            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock("MyDebrisField.Update");

            if ((lastDustFieldCountInDirectionHalf != DustFieldCountInDirectionHalf)
                ||
                (lastDistanceBetween != DistanceBetween))
            {
                lastDistanceBetween = DistanceBetween;
                lastDustFieldCountInDirectionHalf = DustFieldCountInDirectionHalf;

                //  Fill 3D array with random values from interval <0..1>
                m_random = new float[DustFieldCountInDirection][][];
                for (int x = 0; x < m_random.Length; x++)
                {
                    m_random[x] = new float[DustFieldCountInDirection][];

                    for (int y = 0; y < m_random.Length; y++)
                    {
                        m_random[x][y] = new float[DustFieldCountInDirection];

                        for (int z = 0; z < m_random.Length; z++)
                        {
                            m_random[x][y][z] = MyMwcUtils.GetRandomFloat(0, 1);
                        }
                    }
                }
            }

            //  Update helper frustum and then its bounding box
            m_helperBoundingSphere = new BoundingSphere(MySession.PlayerShip.GetPosition(), MaxDistance);
            BoundingBox helperBoundingBox = BoundingBox.CreateFromSphere(m_helperBoundingSphere);

            MyMwcVector3Int minCoord = GetMetersToDustFieldCoord(ref helperBoundingBox.Min);
            MyMwcVector3Int maxCoord = GetMetersToDustFieldCoord(ref helperBoundingBox.Max);

            m_entitiesToRemove.Clear();
            m_entitiesToRemove.AddRange(m_usedCoords.Keys);

            BoundingSphere collisionBoundingSphere    = new BoundingSphere(MySession.PlayerShip.GetPosition(), MaxDistance / 3);
            BoundingBox    helperCollisionBoundingBox = BoundingBox.CreateFromSphere(m_helperBoundingSphere);


            MyEntities.GetCollisionsInBoundingBox(ref helperCollisionBoundingBox, m_list);

            bool newDebrisAllowed = true;

            foreach (MyRBElement element in m_list)
            {
                MyEntity entity = ((MinerWars.AppCode.Game.Physics.MyPhysicsBody)element.GetRigidBody().m_UserData).Entity;
                if ((entity is MyVoxelMap)
                    ||
                    (entity is MinerWars.AppCode.Game.Prefabs.MyPrefabBase))
                {
                    newDebrisAllowed = false;
                }
            }

            MyMwcVector3Int tempCoord;

            for (tempCoord.X = minCoord.X; tempCoord.X <= maxCoord.X; tempCoord.X++)
            {
                for (tempCoord.Y = minCoord.Y; tempCoord.Y <= maxCoord.Y; tempCoord.Y++)
                {
                    for (tempCoord.Z = minCoord.Z; tempCoord.Z <= maxCoord.Z; tempCoord.Z++)
                    {
                        //  Position of this particle
                        Vector3 position;
                        position.X = tempCoord.X * DistanceBetween;
                        position.Y = tempCoord.Y * DistanceBetween;
                        position.Z = tempCoord.Z * DistanceBetween;


                        //  Get pseudo-random number. It's randomness is based on 3D position, so values don't change between draw calls.
                        float pseudoRandomVariationMod = m_random[Math.Abs(tempCoord.X) % m_random.Length][Math.Abs(tempCoord.Y) % m_random.Length][Math.Abs(tempCoord.Z) % m_random.Length];

                        //  Alter position by randomness
                        position.X += MathHelper.Lerp(-DistanceBetweenHalf, +DistanceBetweenHalf, pseudoRandomVariationMod);
                        position.Y += MathHelper.Lerp(-DistanceBetweenHalf, +DistanceBetweenHalf, pseudoRandomVariationMod);
                        position.Z += MathHelper.Lerp(-DistanceBetweenHalf, +DistanceBetweenHalf, pseudoRandomVariationMod);

                        //  Distance to particle
                        float   distance;
                        Vector3 center = MySession.PlayerShip.GetPosition();

                        Vector3.Distance(ref center, ref position, out distance);

                        if (distance > MaxDistance)
                        {
                            continue;
                        }

                        //  Pseudo-random color and alpha
                        float pseudoRandomColor = MathHelper.Lerp(0.1f, 0.2f, pseudoRandomVariationMod); //MathHelper.Lerp(0.2f, 0.3f, pseudoRandomVariationMod);
                        //float pseudoRandomAlpha = 0.5f; //0.4f;  // 0.2f;// MathHelper.Lerp(0.2f, 0.3f, pseudoRandomVariationMod);


                        //Remove only entities outside distance, not frustum (looks better)
                        m_entitiesToRemove.Remove(tempCoord);

                        if (MyCamera.GetBoundingFrustum().Contains(position) == ContainmentType.Disjoint)
                        {
                            continue;
                        }

                        float alpha = 0;

                        if (distance < FullScaleDistance)
                        {
                            alpha = 1;
                        }
                        else if ((distance >= FullScaleDistance) && (distance < MaxDistance))
                        {
                            alpha = 1 - MathHelper.Clamp((distance - FullScaleDistance) / (MaxDistance - FullScaleDistance), 0, 1);
                        }
                        else
                        {
                            alpha = 0;
                        }

                        MyEntity entity;
                        m_usedCoords.TryGetValue(tempCoord, out entity);

                        float scale = MathHelper.Lerp(0.2f, 1.0f, alpha);

                        if (entity == null)
                        {
                            if (!newDebrisAllowed)
                            {
                                continue;
                            }

                            if (alpha > 0.2f)
                            {
                                continue;  //it would be popping
                            }
                            MinerWars.CommonLIB.AppCode.ObjectBuilders.MyMwcObjectBuilder_Base debrisBuilder = null;

                            if (MyMwcUtils.GetRandomInt(2) % 2 == 0)
                            {
                                entity = MyExplosionDebrisVoxel.Allocate();
                                if (entity == null)
                                {
                                    continue;
                                }

                                int voxelMatEnumIndex = (int)MyMwcUtils.GetRandomShort((short)0, (short)(MySector.DebrisProperties.DebrisVoxelMaterials.Length));
                                MyMwcVoxelMaterialsEnum voxelMatEnum = (MyMwcVoxelMaterialsEnum)MySector.DebrisProperties.DebrisVoxelMaterials.GetValue(voxelMatEnumIndex);

                                ((MyExplosionDebrisVoxel)entity).Start(position, 1, voxelMatEnum, MyGroupMask.Empty, false);
                                MyEntities.Add(entity);
                            }
                            else
                            {
                                int debrisEnumIndex = (int)MyMwcUtils.GetRandomShort((short)0, (short)(MySector.DebrisProperties.DebrisEnumValues.Length));
                                MyMwcObjectBuilder_SmallDebris_TypesEnum debrisEnum = (MyMwcObjectBuilder_SmallDebris_TypesEnum)MySector.DebrisProperties.DebrisEnumValues.GetValue(debrisEnumIndex);

                                debrisBuilder = new MyMwcObjectBuilder_SmallDebris(debrisEnum, true, 0);
                                //MyMwcObjectBuilder_SmallDebris debrisBuilder = new MyMwcObjectBuilder_SmallDebris(MyMwcObjectBuilder_SmallDebris_TypesEnum.Debris32_pilot, true, 0);
                                entity = MyEntities.CreateFromObjectBuilderAndAdd(null, debrisBuilder, Matrix.CreateWorld(position, MyMwcUtils.GetRandomVector3Normalized(), MyMwcUtils.GetRandomVector3Normalized()));
                            }

                            entity.Save        = false;
                            entity.CastShadows = false;

                            m_usedCoords.Add(tempCoord, entity);
                        }


                        if (entity.Physics != null && entity.Physics.Enabled == true)
                        {
                            entity.Physics.Enabled = false;
                        }


                        /*
                         * if (!(entity is MyExplosionDebrisVoxel) && (distance < FullScaleDistance / 2.0f))
                         * {
                         *  if (entity.Physics == null)
                         *  {
                         *      entity.InitBoxPhysics(MyMaterialType.METAL, entity.ModelCollision, 500, 0, MyConstants.COLLISION_LAYER_MODEL_DEBRIS, RigidBodyFlag.RBF_DEFAULT);
                         *  }
                         *  if (entity.Physics.Enabled == false)
                         *  {
                         *      entity.Physics.Clear();
                         *      entity.Physics.Enabled = true;
                         *  }
                         * }*/
                        /*
                         * else
                         * {
                         * if (entity.Physics != null && entity.Physics.Enabled)
                         * {
                         *  entity.Physics.Enabled = false;
                         * }
                         * }     */


                        if (entity is MyExplosionDebrisVoxel)
                        {
                            scale *= 0.08f;
                        }

                        entity.Scale = scale;

                        /*
                         * if (entity.Physics == null && distance < FullScaleDistance / 3)
                         * {
                         *  entity.InitBoxPhysics(MyMaterialType.METAL, entity.ModelLod0, 100, MyPhysicsConfig.DefaultAngularDamping, MyConstants.COLLISION_LAYER_ALL, RigidBodyFlag.RBF_DEFAULT);
                         *  entity.Physics.Enabled = true;
                         * } */
                    }
                }
            }


            foreach (MyMwcVector3Int positionToRemove in m_entitiesToRemove)
            {
                MyEntity entity = m_usedCoords[positionToRemove];

                /*
                 * if (entity.Physics != null && entity.Physics.LinearVelocity.LengthSquared() > 0.1f)
                 * {
                 *  //  Particles.MyParticleEffect effect = Particles.MyParticlesManager.CreateParticleEffect((int)MyParticleEffectsIDEnum.Explosion_Missile);
                 *  //  effect.WorldMatrix = entity.WorldMatrix;
                 * } */

                entity.MarkForClose();

                m_usedCoords.Remove(positionToRemove);
            }

            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();
        }