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; }
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; }
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; }