예제 #1
0
        public bool IsDetected(Vector3 radarPosition, IMyObjectToDetect objectToDetect)
        {
            //if (objectToDetect is MyFoundationFactory)
            //{
            //    return false;
            //}

            //// we don't want detect prefab containers with hagnars
            //if (objectToDetect is MyPrefabContainer && ((MyPrefabContainer)objectToDetect).ContainsPrefab(PrefabTypesFlagEnum.Hangar))
            //{
            //    return false;
            //}

            if (!CanBeDetected(objectToDetect))
            {
                return(false);
            }

            BoundingSphere detectingSphere = new BoundingSphere(radarPosition, Range);

            if (!detectingSphere.Intersects(objectToDetect.WorldAABB))
            {
                return(false);
            }

            return(IsObjectMeetDetectCriterium(objectToDetect));
        }
예제 #2
0
        protected override bool IsObjectMeetDetectCriterium(IMyObjectToDetect objectToDetect)
        {
            // entity movement, prefabcontainer or ship detect
            if (objectToDetect is MyEntity)
            {
                MyEntity entity = objectToDetect as MyEntity;

                if (entity.Physics != null && entity.Physics.Speed > MyHudConstants.RADAR_MOVEMENT_DETECTOR_MIN_SPEED_TO_DETECT)
                {
                    return(true);
                }
                else
                {
                    if (entity is MyShip || entity is MyPrefabBase)
                    {
                        return(true);
                    }
                }
            }
            // ore detect
            else if (objectToDetect is MyVoxelMapOreDepositCell)
            {
                return(true);
            }
            return(false);
        }
예제 #3
0
        protected override bool IsObjectMeetDetectCriterium(IMyObjectToDetect objectToDetect)
        {            
            // entity movement, prefabcontainer or ship detect
            if(objectToDetect is MyEntity)
            {
                MyEntity entity = objectToDetect as MyEntity;

                if (entity.Physics != null && entity.Physics.Speed > MyHudConstants.RADAR_MOVEMENT_DETECTOR_MIN_SPEED_TO_DETECT)
                {
                    return true;
                }
                else
                {
                    if(entity is MyShip || entity is MyPrefabBase)
                    {
                        return true;                    
                    }                    
                }                
            }
            // ore detect
            else if (objectToDetect is MyVoxelMapOreDepositCell)
            {
                return true;
            }
            return false;
        }
예제 #4
0
        public bool IsDetected(Vector3 radarPosition, IMyObjectToDetect objectToDetect)
        {
            //if (objectToDetect is MyFoundationFactory)
            //{
            //    return false;
            //}

            //// we don't want detect prefab containers with hagnars
            //if (objectToDetect is MyPrefabContainer && ((MyPrefabContainer)objectToDetect).ContainsPrefab(PrefabTypesFlagEnum.Hangar))
            //{
            //    return false;
            //}

            if (!CanBeDetected(objectToDetect))
            {
                return false;
            }

            BoundingSphere detectingSphere = new BoundingSphere(radarPosition, Range);
            if (!detectingSphere.Intersects(objectToDetect.WorldAABB))
            {
                return false;
            }

            return IsObjectMeetDetectCriterium(objectToDetect);
        }
예제 #5
0
 protected override bool CanBeDetected(IMyObjectToDetect objectToDetect)
 {
     //return objectToDetect is MyEntity &&
     //    !(objectToDetect is MySmallDebris || objectToDetect is MyExplosionDebrisBase || objectToDetect is MyLargeDebrisField) &&
     //    !(objectToDetect is MyPrefabBase);
     return(objectToDetect is MyShip || objectToDetect is MyAmmoBase);
 }
예제 #6
0
 protected override bool CanBeDetected(IMyObjectToDetect objectToDetect)
 {
     //return objectToDetect is MyEntity || objectToDetect is MyMwcVoxelMaterialsEnum;
     return(objectToDetect is MyShip ||
            objectToDetect is MyPrefabFoundationFactory ||
            objectToDetect is MyPrefabHangar ||
            objectToDetect is MyAmmoBase ||
            objectToDetect is MyVoxelMapOreDepositCell);
 }
예제 #7
0
 protected override bool CanBeDetected(IMyObjectToDetect objectToDetect)
 {
     //return objectToDetect is MyEntity || objectToDetect is MyMwcVoxelMaterialsEnum;
     return objectToDetect is MyShip ||
            objectToDetect is MyPrefabFoundationFactory ||
            objectToDetect is MyPrefabHangar || 
            objectToDetect is MyAmmoBase ||
            objectToDetect is MyVoxelMapOreDepositCell;
 }
예제 #8
0
 private static void RemoveClosedObject(IMyObjectToDetect obj)
 {
     using (m_detectedObjectsLock.AcquireExclusiveUsing())
     {
         m_detectedObjects.Remove(obj);
         m_detectedBotsAndLargeWeapons.Remove(obj);
         m_detectedObjectsHelperCollection.Remove(obj);
         m_objectsToDetect.Remove(obj);
     }
 }
예제 #9
0
        protected override bool IsObjectMeetDetectCriterium(IMyObjectToDetect objectToDetect)
        {
            MyEntity entity = objectToDetect as MyEntity;

            if (entity.Physics == null)
            {
                return(false);
            }
            return(entity.Physics.Speed > MyHudConstants.RADAR_MOVEMENT_DETECTOR_MIN_SPEED_TO_DETECT);
        }
예제 #10
0
 protected override bool IsObjectMeetDetectCriterium(IMyObjectToDetect objectToDetect)
 {
     if (objectToDetect is MySmallShip)
     {
         MySmallShip smallShip = objectToDetect as MySmallShip;
         return(smallShip.Radar != null);
     }
     if (objectToDetect is MyPrefabBase)
     {
         MyPrefabBase prefab = objectToDetect as MyPrefabBase;
         return(prefab.GetOwner().ContainsPrefab(PrefabTypesFlagEnum.LargeShip));
     }
     return(false);
 }
예제 #11
0
 protected override bool IsObjectMeetDetectCriterium(IMyObjectToDetect objectToDetect)
 {
     if (objectToDetect is MySmallShip)
     {
         MySmallShip smallShip = objectToDetect as MySmallShip;
         return smallShip.Radar != null;
     }            
     if(objectToDetect is MyPrefabBase)
     {
         MyPrefabBase prefab = objectToDetect as MyPrefabBase;
         return prefab.GetOwner().ContainsPrefab(PrefabTypesFlagEnum.LargeShip);
     }
     return false;
 }
예제 #12
0
 static bool CanBeDetected(IMyObjectToDetect objectToDetect)
 {
     if (objectToDetect is MyVoxelMapOreDepositCell)
     {
         MyVoxelMapOreDepositCell oreDeposit = objectToDetect as MyVoxelMapOreDepositCell;
         return(oreDeposit.GetTotalRareOreContent() > 0);
     }
     //return objectToDetect is MyEntity || objectToDetect is MyMwcVoxelMaterialsEnum;
     return(objectToDetect is MyShip ||
            objectToDetect is MyPrefabFoundationFactory ||
            objectToDetect is MyPrefabHangar ||
            objectToDetect is MyPrefabLargeWeapon ||
            objectToDetect is MyAmmoBase /*||
                                          * objectToDetect is MyVoxelMapOreDepositCell*/);
 }
예제 #13
0
 protected override bool IsObjectMeetDetectCriterium(IMyObjectToDetect objectToDetect)
 {            
     MyEntity entity = objectToDetect as MyEntity;            
     // TODO: temporary disable displaying mission entities on radar
     /*// we detect all mission entities
     if(MyMissions.IsMissionEntity(entity))
     {
         return true;
     }
     // we detect all friendly ship, foundation factories and hangars
     else */if(entity is MyShip || entity is MyPrefabFoundationFactory || entity is MyPrefabHangar)
     {
         return MyFactions.GetFactionsRelation(m_ship, entity) == MyFactionRelationEnum.Friend;
     }
     return false;
 }
예제 #14
0
        protected override bool IsObjectMeetDetectCriterium(IMyObjectToDetect objectToDetect)
        {
            MyEntity entity = objectToDetect as MyEntity;

            // TODO: temporary disable displaying mission entities on radar

            /*// we detect all mission entities
             * if(MyMissions.IsMissionEntity(entity))
             * {
             *  return true;
             * }
             * // we detect all friendly ship, foundation factories and hangars
             * else */if (entity is MyShip || entity is MyPrefabFoundationFactory || entity is MyPrefabHangar)
            {
                return(MyFactions.GetFactionsRelation(m_ship, entity) == MyFactionRelationEnum.Friend);
            }
            return(false);
        }
예제 #15
0
        private static bool CanShout(IMyObjectToDetect detectedObject)
        {
            MyEntity detectedEntity = detectedObject as MyEntity;

            if (detectedEntity != null)
            {
                MyFactionRelationEnum factionRelation = MyFactions.GetFactionsRelation(MySession.PlayerShip, detectedEntity);
                if (detectedEntity is MySmallShipBot && factionRelation != MyFactionRelationEnum.Friend)
                {
                    MySmallShipBot bot = detectedEntity as MySmallShipBot;
                    return(!bot.IsParked() && !bot.IsPilotDead());
                }
                if (detectedEntity is MyPrefabLargeWeapon && factionRelation == MyFactionRelationEnum.Enemy)
                {
                    MyPrefabLargeWeapon largeWeapon = detectedEntity as MyPrefabLargeWeapon;
                    return(largeWeapon.IsWorking());
                }
            }
            return(false);
        }
예제 #16
0
 protected override bool IsObjectMeetDetectCriterium(IMyObjectToDetect objectToDetect)
 {            
     return true;
 }
예제 #17
0
        private static bool CanShout(IMyObjectToDetect detectedObject) 
        {
            MyEntity detectedEntity = detectedObject as MyEntity;

            if (detectedEntity != null)
            {
                MyFactionRelationEnum factionRelation = MyFactions.GetFactionsRelation(MySession.PlayerShip, detectedEntity);                
                if (detectedEntity is MySmallShipBot && factionRelation != MyFactionRelationEnum.Friend) 
                {
                    MySmallShipBot bot = detectedEntity as MySmallShipBot;
                    return !bot.IsParked() && !bot.IsPilotDead();
                }
                if (detectedEntity is MyPrefabLargeWeapon && factionRelation == MyFactionRelationEnum.Enemy) 
                {
                    MyPrefabLargeWeapon largeWeapon = detectedEntity as MyPrefabLargeWeapon;
                    return largeWeapon.IsWorking();
                }
            }
            return false;
        }
예제 #18
0
 protected abstract bool CanBeDetected(IMyObjectToDetect objectToDetect);
예제 #19
0
 protected override bool IsObjectMeetDetectCriterium(IMyObjectToDetect objectToDetect)
 {
     MyVoxelMapOreDepositCell oreDeposit = (MyVoxelMapOreDepositCell)objectToDetect;
     return oreDeposit.GetOreContent(m_oreMaterial) > 0;
 }
예제 #20
0
 protected override bool CanBeDetected(IMyObjectToDetect objectToDetect)
 {
     return(objectToDetect is MyVoxelMapOreDepositCell);
 }
예제 #21
0
 static bool CanBeDetected(IMyObjectToDetect objectToDetect)
 {
     if (objectToDetect is MyVoxelMapOreDepositCell)
     {
         MyVoxelMapOreDepositCell oreDeposit = objectToDetect as MyVoxelMapOreDepositCell;
         return oreDeposit.GetTotalRareOreContent() > 0;
     }
     //return objectToDetect is MyEntity || objectToDetect is MyMwcVoxelMaterialsEnum;
     return objectToDetect is MyShip ||
            objectToDetect is MyPrefabFoundationFactory ||
            objectToDetect is MyPrefabHangar ||
            objectToDetect is MyPrefabLargeWeapon ||
            objectToDetect is MyAmmoBase /*||
            objectToDetect is MyVoxelMapOreDepositCell*/;
 }
예제 #22
0
 private static void RemoveClosedObject(IMyObjectToDetect obj)
 {
     using (m_detectedObjectsLock.AcquireExclusiveUsing())
     {
         m_detectedObjects.Remove(obj);
         m_detectedBotsAndLargeWeapons.Remove(obj);
         m_detectedObjectsHelperCollection.Remove(obj);
         m_objectsToDetect.Remove(obj);
     }
 }
예제 #23
0
 protected override bool CanBeDetected(IMyObjectToDetect objectToDetect)
 {
     return(objectToDetect is MySmallShip ||
            objectToDetect is MyPrefabFoundationFactory ||
            objectToDetect is MyPrefabHangar);
 }
예제 #24
0
 protected abstract bool IsObjectMeetDetectCriterium(IMyObjectToDetect objectToDetect);
예제 #25
0
 protected override bool CanBeDetected(IMyObjectToDetect objectToDetect)
 {
     return objectToDetect is MySmallShip || 
            objectToDetect is MyPrefabFoundationFactory || 
            objectToDetect is MyPrefabHangar;
 }
예제 #26
0
 protected abstract bool CanBeDetected(IMyObjectToDetect objectToDetect);
예제 #27
0
 protected override bool CanBeDetected(IMyObjectToDetect objectToDetect)
 {
     return objectToDetect is MyVoxelMapOreDepositCell;
 }        
예제 #28
0
        protected override bool IsObjectMeetDetectCriterium(IMyObjectToDetect objectToDetect)
        {
            MyVoxelMapOreDepositCell oreDeposit = (MyVoxelMapOreDepositCell)objectToDetect;

            return(oreDeposit.GetOreContent(m_oreMaterial) > 0);
        }
예제 #29
0
 protected override bool CanBeDetected(IMyObjectToDetect objectToDetect)
 {
     //return objectToDetect is MyShip || objectToDetect is MyPrefabContainer;
     return(objectToDetect is MyEntity);
 }
예제 #30
0
 protected override bool IsObjectMeetDetectCriterium(IMyObjectToDetect objectToDetect)
 {
     return(true);
 }
예제 #31
0
 protected override bool CanBeDetected(IMyObjectToDetect objectToDetect)
 {
     //return objectToDetect is MyShip || objectToDetect is MyPrefabContainer;
     return objectToDetect is MyEntity;
 }
예제 #32
0
 protected abstract bool IsObjectMeetDetectCriterium(IMyObjectToDetect objectToDetect);