private bool MarkForRepair(MyPrefabLargeWeapon turret)
        {
            if (turret != null)
            {
                if (turret.Health <= 250 && turret.IsDestructible && m_turretContainerToDetectorMapping.ContainsKey(turret.Parent.EntityId.Value.NumericValue))
                {
                    MyScriptWrapper.SetEntityDestructible(turret, false);
                    MyScriptWrapper.SetEntityEnabled(turret, false);
                    turret.AIPriority = -1;

                    uint detectorId = m_turretContainerToDetectorMapping[turret.Parent.EntityId.Value.NumericValue];

                    var repairDetector = (MyEntityDetector)MyScriptWrapper.GetEntity(detectorId);
                    repairDetector.On();
                    repairDetector.OnEntityEnter += RepairDetector_Enter;
                    repairDetector.OnEntityLeave += RepairDetector_Leave;

                    MyScriptWrapper.SetEntityEnabled(m_detectorToParticleMapping[detectorId], true);

                    MyScriptWrapper.MarkEntity(turret, MyTexts.Repair, MyHudIndicatorFlagsEnum.SHOW_TEXT | MyHudIndicatorFlagsEnum.SHOW_BORDER_INDICATORS);
                    return true;
                }
            }
            return false;
        }
        /// <summary>
        /// CreatePrefab
        /// </summary>
        /// <param name="hudLabelText"></param>
        /// <param name="objBuilder"></param>
        /// <returns></returns>
        public MyPrefabBase CreatePrefab(string hudLabelText, MyPrefabContainer prefabContainer, MyMwcObjectBuilder_PrefabBase prefabBuilder)
        {
            Render.MyRender.GetRenderProfiler().StartProfilingBlock("MyPrefabFactory.CreatePrefab");

            MyPrefabConfiguration config = MyPrefabConstants.GetPrefabConfiguration(prefabBuilder.GetObjectBuilderType(), prefabBuilder.GetObjectBuilderId().Value);
            Vector3 relativePosition = MyPrefabContainer.GetRelativePositionInAbsoluteCoords(prefabBuilder.PositionInContainer);
            Matrix prefabLocalOrientation = Matrix.CreateFromYawPitchRoll(prefabBuilder.AnglesInContainer.X, prefabBuilder.AnglesInContainer.Y, prefabBuilder.AnglesInContainer.Z);

            MyPrefabBase prefab = null;
            if (config is MyPrefabConfigurationKinematic)
            {
                prefab = new MyPrefabKinematic(prefabContainer);                
            }
            else if (config is MyPrefabConfigurationLight)
            {
                prefab = new MyPrefabLight(prefabContainer);                
            }
            else if (config is MyPrefabConfigurationLargeWeapon)
            {
                prefab = new MyPrefabLargeWeapon(prefabContainer);                
            }
            else if (config is MyPrefabConfigurationSound)
            {
                prefab = new MyPrefabSound(prefabContainer);                
            }
            else if (config is MyPrefabConfigurationParticles)
            {
                prefab = new MyPrefabParticles(prefabContainer);                
            }
            else if (config is MyPrefabConfigurationLargeShip)
            {
                prefab = new MyPrefabLargeShip(prefabContainer);                
            }
            else if (config is MyPrefabConfigurationHangar)
            {
                prefab = new MyPrefabHangar(prefabContainer);                
            }
            else if(config is MyPrefabConfigurationFoundationFactory)
            {
                prefab = new MyPrefabFoundationFactory(prefabContainer);                
            }
            else if (config is MyPrefabConfigurationSecurityControlHUB) 
            {
                prefab = new MyPrefabSecurityControlHUB(prefabContainer);                
            }
            else if (config is MyPrefabConfigurationBankNode) 
            {
                prefab = new MyPrefabBankNode(prefabContainer);                
            }
            else if (config is MyPrefabConfigurationGenerator) 
            {
                prefab = new MyPrefabGenerator(prefabContainer);                
            }
            else if (config is MyPrefabConfigurationScanner) 
            {
                prefab = new MyPrefabScanner(prefabContainer);
            }
            else if (config is MyPrefabConfigurationCamera)
            {
                prefab = new MyPrefabCamera(prefabContainer);
            }
            else if (config is MyPrefabConfigurationAlarm)
            {
                prefab = new MyPrefabAlarm(prefabContainer);
            }            
            else
            {
                prefab = new MyPrefab(prefabContainer);
                //prefab.Init(hudLabelText, relativePosition, prefabLocalOrientation, prefabBuilder, config);
            }
            prefab.Init(hudLabelText, relativePosition, prefabLocalOrientation, prefabBuilder, config);

            Render.MyRender.GetRenderProfiler().EndProfilingBlock();

            return prefab;
        }
        public MyGuiControlPrefabLargeWeaponUse(IMyGuiControlsParent parent, MyPrefabLargeWeapon prefab, MyTexture2D texture)
            : base(parent, prefab,texture)
        {

        }
 public MyGuiControlPrefabLargeWeaponUse(IMyGuiControlsParent parent, MyPrefabLargeWeapon prefab)
     : base(parent, prefab) 
 {
     
 }
 public bool IsControlledByPlayer(MyPrefabLargeWeapon largeWeapon)
 {
     return MyGuiScreenGamePlay.Static.CameraAttachedTo == MyCameraAttachedToEnum.LargeWeapon && ControlledLargeWeapon == largeWeapon;
 }
        public void TakeControlOfLargeWeapon(MyPrefabLargeWeapon largeWeapon)
        {
            CameraAttachedTo = MyCameraAttachedToEnum.LargeWeapon;
            ControlledLargeWeapon = largeWeapon;
            MyGuiManager.GetRemoteViewWeaponTextures();
            MyAudio.AddCue2D(MySoundCuesEnum.SfxAcquireWeaponOn);
            MySession.PlayerShip.StopSounds();
            largeWeapon.StopAimingSound();

            AddSwitchingNotification();

            AddLargeWeaponDetachingNotification();
        }
        public void SwitchControlOfLargeWeapon(MyPrefabLargeWeapon prefabLargeWeapon)
        {
            if (ControlledEntity != null)
            {
                ControlledEntity.Visible = true;
                if (ControlledEntity == ControlledLargeWeapon)
                {
                    ControlledLargeWeapon.StopAimingSound();
                }
            }

            //if (m_detachNotification != null)
            //{
            //    m_detachNotification.Disappear();
            //}

            TakeControlOfLargeWeapon(prefabLargeWeapon);
        }