public bool IsActivableReady()
        {
            bool ready = lastMine != null && !lastMine.Dead && !lastMine.GetControlOfType <AsteroidDroppingSingularityControl>().Detonated &&
                         !lastMine.GetControlOfType <AsteroidDroppingSingularityControl>().AsteroidSpawned;

            if (ready)
            {
                lastMine.GetControlOfType <HighlightingControl>().Enabled = true;
            }

            return(ready);
        }
        protected override ISceneObject SpawnMine(Point point)
        {
            SingularityMine mine = SceneObjectFactory.CreateAsteroidDroppingSingularityMine(SceneMgr, point, Owner);
            Vector          dir  = new Vector(endPoint.X - startPoint.X, endPoint.Y - startPoint.Y);

            dir.Normalize();
            mine.Direction = dir;

            LinearMovementControl c = mine.GetControlOfType <LinearMovementControl>();

            c.Speed = Owner.Data.MineFallingSpeed * SharedDef.MINE_LAUNCHER_SPEED_MODIFIER;

            if (SceneMgr.GameType != Gametype.SOLO_GAME)
            {
                NetOutgoingMessage msg = SceneMgr.CreateNetMessage();
                (mine as ISendable).WriteObject(msg);
                SceneMgr.SendMessage(msg);
            }

            HighlightingControl hc = new HighlightingControl();

            mine.AddControl(hc);

            lastMine = mine;
            SceneMgr.DelayedAttachToScene(mine);

            return(mine);
        }