示例#1
0
 public MyPrefabConfigurationLargeWeapon(
     BuildTypesEnum buildType,
     CategoryTypesEnum categoryType,
     SubCategoryTypesEnum?subCategoryType,
     MyMaterialType materialType,
     MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum weaponType,
     MyMwcObjectBuilder_Prefab_AppearanceEnum?factionSpecific = null,
     MyExplosionTypeEnum explosionType = MyExplosionTypeEnum.SMALL_SHIP_EXPLOSION,
     float explosionRadiusMultiplier   = 5,
     float explosionDamageMultiplier   = 300)
     : base(buildType, categoryType, subCategoryType, materialType, PrefabTypesFlagEnum.Default, factionSpecific: factionSpecific, explosionType: explosionType, explosionRadiusMultiplier: explosionRadiusMultiplier, explosionDamageMultiplier: explosionDamageMultiplier, requiresEnergy: true, displayHud: true)
 {
     WeaponType = weaponType;
 }
 public MyPrefabConfigurationLargeWeapon(
     BuildTypesEnum buildType,
     CategoryTypesEnum categoryType,
     SubCategoryTypesEnum? subCategoryType,
     MyMaterialType materialType, 
     MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum weaponType,
     MyMwcObjectBuilder_Prefab_AppearanceEnum? factionSpecific = null,
     MyExplosionTypeEnum explosionType = MyExplosionTypeEnum.SMALL_SHIP_EXPLOSION,
     float explosionRadiusMultiplier = 5,
     float explosionDamageMultiplier = 300)
     : base(buildType, categoryType, subCategoryType, materialType, PrefabTypesFlagEnum.Default, factionSpecific: factionSpecific, explosionType: explosionType, explosionRadiusMultiplier: explosionRadiusMultiplier, explosionDamageMultiplier: explosionDamageMultiplier, requiresEnergy: true, displayHud: true)
 {
     WeaponType = weaponType;
 }
示例#3
0
        protected override void InitPrefab(string displayName, Vector3 relativePosition, Matrix localOrientation, MyMwcObjectBuilder_PrefabBase objectBuilder, MyPrefabConfiguration prefabConfig)
        {
            prefabConfiguration = prefabConfig as MyPrefabConfigurationLargeWeapon;
            MyMwcObjectBuilder_PrefabLargeWeapon largeWeaponBuilder = objectBuilder as MyMwcObjectBuilder_PrefabLargeWeapon;

            weaponType = largeWeaponBuilder.PrefabLargeWeaponType;

            UseProperties = new MyUseProperties(MyUseType.FromHUB | MyUseType.Solo, MyUseType.FromHUB);
            if (largeWeaponBuilder.UseProperties == null)
            {
                UseProperties.Init(MyUseType.FromHUB | MyUseType.Solo, MyUseType.FromHUB, 1, 4000, false);
            }
            else
            {
                UseProperties.Init(largeWeaponBuilder.UseProperties);
            }

            // create & initialize weapon:
            MyLargeShipGunBase.CreateAloneWeapon(ref m_gun, displayName, Vector3.Zero, Matrix.Identity, largeWeaponBuilder, Activated);
            AddChild(m_gun);

            m_gun.PrefabParent = this;
            m_gun.Enabled      = IsWorking();
            m_gun.SetRandomRotation();

            // if (largeWeaponBuilder.SearchingDistance == 2000)
            //   largeWeaponBuilder.SearchingDistance = 1000;

            this.LocalMatrix    = Matrix.CreateWorld(relativePosition, localOrientation.Forward, localOrientation.Up);
            m_searchingDistance = MathHelper.Clamp(largeWeaponBuilder.SearchingDistance, MyLargeShipWeaponsConstants.MIN_SEARCHING_DISTANCE, MyLargeShipWeaponsConstants.MAX_SEARCHING_DISTANCE);
            m_targetDetectorCriterias.Add(new MyEntityDetectorCriterium <MySmallShip>(1, IsPossibleTarget, true));
            m_targetsDetector = new MyEntityDetector(true);

            m_potentialTargetsDetector = new MyEntityDetector(true);
            m_potentialTargetDetectorCriterias.Add(new MyEntityDetectorCriterium <MySmallShip>(1, IsPotentialTarget, true));
            //m_targetsDetector.OnEntityEnter += OnTargetDetected;
            //m_targetsDetector.OnEntityLeave += OnTargetLost;
            m_targetsDetector.OnNearestEntityChange          += OnNearestTargetChange;
            m_potentialTargetsDetector.OnNearestEntityChange += OnNearestPotentialTargetChange;
            //m_targetsDetector.OnEntityPositionChange += OnTargetPositionChanged;
            InitDetector(Activated);
        }
 public MyMwcObjectBuilder_PrefabLargeWeapon(MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum prefabType, MyMwcObjectBuilder_Prefab_AppearanceEnum appearance, MyMwcVector3Short position, Vector3 anglesInContainer, float? prefabMaxHealth, float prefabHealthRatio, string displayName, float electricCapacity, bool? causesAlarm, float aimingDistance, float searchingDistance, int aiPriority)
     : base((int)prefabType, appearance, position, anglesInContainer, prefabMaxHealth, prefabHealthRatio, displayName, electricCapacity, causesAlarm, aiPriority)
 {
     AimingDistance = aimingDistance;
     SearchingDistance = searchingDistance;
 }
        protected override void InitPrefab(string displayName, Vector3 relativePosition, Matrix localOrientation, MyMwcObjectBuilder_PrefabBase objectBuilder, MyPrefabConfiguration prefabConfig)
        {            
            prefabConfiguration = prefabConfig as MyPrefabConfigurationLargeWeapon;
            MyMwcObjectBuilder_PrefabLargeWeapon largeWeaponBuilder = objectBuilder as MyMwcObjectBuilder_PrefabLargeWeapon;
            weaponType = largeWeaponBuilder.PrefabLargeWeaponType;

            UseProperties = new MyUseProperties(MyUseType.FromHUB | MyUseType.Solo, MyUseType.FromHUB);
            if (largeWeaponBuilder.UseProperties == null)
            {
                UseProperties.Init(MyUseType.FromHUB | MyUseType.Solo, MyUseType.FromHUB, 1, 4000, false);
            }
            else
            {                
                UseProperties.Init(largeWeaponBuilder.UseProperties);
            }            

            // create & initialize weapon:
            MyLargeShipGunBase.CreateAloneWeapon(ref m_gun, displayName, Vector3.Zero, Matrix.Identity, largeWeaponBuilder, Activated);
            AddChild(m_gun);

            m_gun.PrefabParent = this;
            m_gun.Enabled = IsWorking();
            m_gun.SetRandomRotation();

           // if (largeWeaponBuilder.SearchingDistance == 2000)
             //   largeWeaponBuilder.SearchingDistance = 1000;

            this.LocalMatrix = Matrix.CreateWorld(relativePosition, localOrientation.Forward, localOrientation.Up);
            m_searchingDistance = MathHelper.Clamp(largeWeaponBuilder.SearchingDistance, MyLargeShipWeaponsConstants.MIN_SEARCHING_DISTANCE, MyLargeShipWeaponsConstants.MAX_SEARCHING_DISTANCE); 
            m_targetDetectorCriterias.Add(new MyEntityDetectorCriterium<MySmallShip>(1, IsPossibleTarget, true));
            m_targetsDetector = new MyEntityDetector(true);
            
            m_potentialTargetsDetector = new MyEntityDetector(true);
            m_potentialTargetDetectorCriterias.Add(new MyEntityDetectorCriterium<MySmallShip>(1, IsPotentialTarget, true));
            //m_targetsDetector.OnEntityEnter += OnTargetDetected;
            //m_targetsDetector.OnEntityLeave += OnTargetLost;
            m_targetsDetector.OnNearestEntityChange += OnNearestTargetChange;
            m_potentialTargetsDetector.OnNearestEntityChange += OnNearestPotentialTargetChange;
            //m_targetsDetector.OnEntityPositionChange += OnTargetPositionChanged;
            InitDetector(Activated);
        }
 public MyMwcObjectBuilder_PrefabLargeWeapon(MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum prefabType, MyMwcObjectBuilder_Prefab_AppearanceEnum appearance, MyMwcVector3Short position, Vector3 anglesInContainer, float?prefabMaxHealth, float prefabHealthRatio, string displayName, float electricCapacity, bool?causesAlarm, float aimingDistance, float searchingDistance, int aiPriority)
     : base((int)prefabType, appearance, position, anglesInContainer, prefabMaxHealth, prefabHealthRatio, displayName, electricCapacity, causesAlarm, aiPriority)
 {
     AimingDistance    = aimingDistance;
     SearchingDistance = searchingDistance;
 }
 public static bool GetWeaponModels(MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum type, ref MyModel baseModel, ref MyModel barrelModel)
 {
     switch (type)
     {
         case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_AUTOCANNON:
             baseModel = MyModels.GetModelForDraw(MyModelsEnum.LargeShipAutocannonBase);
             barrelModel = MyModels.GetModelForDraw(MyModelsEnum.LargeShipAutocannonBarrel);
             break;
         case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_CIWS:
             baseModel = MyModels.GetModelForDraw(MyModelsEnum.LargeShipCiwsBase);
             barrelModel = MyModels.GetModelForDraw(MyModelsEnum.LargeShipCiwsBarrel);
             break;
         case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MACHINEGUN:
             baseModel = MyModels.GetModelForDraw(MyModelsEnum.LargeShipMachineGunBase);
             barrelModel = MyModels.GetModelForDraw(MyModelsEnum.LargeShipMachineGunBarrel);
             break;
         case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC4:
         case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED4:
             baseModel = MyModels.GetModelForDraw(MyModelsEnum.LargeShipMissileLauncher4Base);
             barrelModel = MyModels.GetModelForDraw(MyModelsEnum.LargeShipMissileLauncher4Barrel);
             break;
         case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC6:
         case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED6:
             baseModel = MyModels.GetModelForDraw(MyModelsEnum.LargeShipMissileLauncher6Base);
             barrelModel = MyModels.GetModelForDraw(MyModelsEnum.LargeShipMissileLauncher6Barrel);
             break;
         case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC9:
         case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED9:
             baseModel = MyModels.GetModelForDraw(MyModelsEnum.LargeShipMissileLauncher9Base);
             barrelModel = MyModels.GetModelForDraw(MyModelsEnum.LargeShipMissileLauncher9Barrel);
             break;
         default:
             return false;
     }
     return true;
 }
 // helping static functions:
 public static StringBuilder GetHudLabelText(MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum type)
 {
     switch (type)
     {
         case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_AUTOCANNON:
             return MyTextsWrapper.Get(MyTextsWrapperEnum.p351_a01_largeship_autocannon);
             break;
         case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MACHINEGUN:
             return MyTextsWrapper.Get(MyTextsWrapperEnum.p351_a01_largeship_machinegun);
             break;
         case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_CIWS:
             return MyTextsWrapper.Get(MyTextsWrapperEnum.p351_a01_largeship_ciws);
             break;
         case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC4:
             return MyTextsWrapper.Get(MyTextsWrapperEnum.p351_a01_largeship_missile_gun4);
             break;
         case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC6:
             return MyTextsWrapper.Get(MyTextsWrapperEnum.p351_a01_largeship_missile_gun6);
             break;
         case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC9:
             return MyTextsWrapper.Get(MyTextsWrapperEnum.p351_a01_largeship_missile_gun9);
             break;
         case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED4:
             return MyTextsWrapper.Get(MyTextsWrapperEnum.p351_a02_largeship_missile_gun_guided4);
             break;
         case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED6:
             return MyTextsWrapper.Get(MyTextsWrapperEnum.p351_a02_largeship_missile_gun_guided6);
             break;
         case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED9:
             return MyTextsWrapper.Get(MyTextsWrapperEnum.p351_a02_largeship_missile_gun_guided9);
             break;
         default:
             return null;
     }
     return null;
 }
        public static bool GetVisualPreviewData(MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum prefab,
            ref MyModel baseModel, ref MyModel barrelModel, ref Matrix baseMatrix, ref Matrix barrelMatrix)
        {
            MyModelsEnum baseModelEnum, barelModelEnum;
            if (!GetModelEnums(prefab, out baseModelEnum, out barelModelEnum))
            {
                return false;
            }

            baseModel = MyModels.GetModelForDraw(baseModelEnum);
            barrelModel = MyModels.GetModelForDraw(barelModelEnum);

            baseMatrix = Matrix.Identity;
            baseMatrix.Translation = -baseModel.BoundingSphere.Center;
            baseMatrix.Translation -= new Vector3(0, 0.2f * baseModel.BoundingSphere.Radius, 0);
            baseMatrix *= Matrix.CreateRotationY(MathHelper.PiOver2 + MathHelper.PiOver4 + MathHelper.PiOver4 * 0.2f);
            baseMatrix *= Matrix.CreateRotationX(.35f * MathHelper.PiOver4);
            float distanceMultiplier = baseModelEnum == MyModelsEnum.LargeShipCiwsBase ? 3.0f : 2.3f;
            baseMatrix.Translation += new Vector3(0.0f, 0.0f, -baseModel.BoundingSphere.Radius * distanceMultiplier);
            barrelMatrix = baseMatrix;
            Matrix barrelMatrixLocal = baseModel.Dummies.ContainsKey("axis") ? MyMath.NormalizeMatrix(baseModel.Dummies["axis"].Matrix) : Matrix.Identity;
            barrelMatrix.Translation += barrelMatrixLocal.Translation;

            return true;
        }
示例#10
0
 public static bool GetModelEnums(MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum prefab, out MyModelsEnum baseModel, out MyModelsEnum barrelModel)
 {
     switch (prefab)
     {
         case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_AUTOCANNON:
             baseModel = MyModelsEnum.LargeShipAutocannonBase;
             barrelModel = MyModelsEnum.LargeShipAutocannonBarrel;
             break;
         case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_CIWS:
             baseModel = MyModelsEnum.LargeShipCiwsBase;
             barrelModel = MyModelsEnum.LargeShipCiwsBarrel;
             break;
         case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MACHINEGUN:
             baseModel = MyModelsEnum.LargeShipMachineGunBase;
             barrelModel = MyModelsEnum.LargeShipMachineGunBarrel;
             break;
         case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC4:
         case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED4:
             baseModel = MyModelsEnum.LargeShipMissileLauncher4Base;
             barrelModel = MyModelsEnum.LargeShipMissileLauncher4Barrel;
             break;
         case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC6:
         case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED6:
             baseModel = MyModelsEnum.LargeShipMissileLauncher6Base;
             barrelModel = MyModelsEnum.LargeShipMissileLauncher6Barrel;
             break;
         case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A01_LARGESHIP_MISSILE_BASIC9:
         case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P352_A02_LARGESHIP_MISSILE_GUIDED9:
             baseModel = MyModelsEnum.LargeShipMissileLauncher9Base;
             barrelModel = MyModelsEnum.LargeShipMissileLauncher9Barrel;
             break;
         //case MyMwcObjectBuilder_PrefabLargeWeapon_TypesEnum.P351_A01_WEAPON_MOUNT:
         //    baseModel = MyModelsEnum.p351_a01_weapon_mount;
         //    barrelModel = MyModelsEnum.p351_a01_weapon_mount;
         //    break;
         default:
             baseModel = MyModelsEnum.LargeShipAutocannonBase;
             barrelModel = MyModelsEnum.LargeShipAutocannonBarrel;
             return false;
     }
     return true;
 }