public void Render() { Matrix[] boneTransforms = new Matrix[AmmoModel.Bones.Count]; AmmoModel.CopyAbsoluteBoneTransformsTo(boneTransforms); foreach (ModelMesh mesh in AmmoModel.Meshes) { foreach (BasicEffect effect in mesh.Effects) { Matrix world = Matrix.Identity; world = boneTransforms[mesh.ParentBone.Index] * Matrix.CreateScale(0.01f) * Matrix.CreateRotationY(MathHelper.ToRadians(90)) * Matrix.CreateFromAxisAngle(Vector3.Zero, -17.447933f) * Matrix.CreateTranslation(new Vector3(0, -0.45f, Z)) * Matrix.Invert(WorldMatrix); BoundingBox = BoundingBoxRenderer.UpdateBoundingBox(AmmoModel, world); effect.World = world; effect.View = Camera.ViewMatrix; effect.Projection = Camera.ProjectionsMatrix; effect.AmbientLightColor = new Vector3(1.0f, 1.0f, 1.0f); effect.TextureEnabled = true; effect.CurrentTechnique.Passes[0].Apply(); } mesh.Draw(); } BoundingBoxRenderer.Render(BoundingBox, Device, Camera.ViewMatrix, Camera.ProjectionsMatrix, Color.Red); }
public CalculatorViewModel(IEventAggregator eventsAggregator, RiflesModel riflesModel, AmmoModel cartridgeModel, ConfigurationModel configurationModel) : base(eventsAggregator) { this.riflesModel = riflesModel; this.configurationModel = configurationModel; this.cartridgeModel = cartridgeModel; selectedRifle = null; DisplayName = "Ballistic Calculation"; configurationModel.Load(); selectedRifle = configurationModel.CalculatorSettings.CurrentRifle; var rifles = Rifles.ToList(); if (string.IsNullOrWhiteSpace(selectedRifle?.Name) && rifles.Count > 0) SelectedRifle = rifles.OrderByDescending(x => x.Name).FirstOrDefault(); if (selectedRifle != null) { selectedCartridge = configurationModel.CalculatorSettings.CurrentCartridge; if (string.IsNullOrWhiteSpace(selectedCartridge?.Name)) selectedCartridge = selectedRifle.Cartridge; } }
// private static HttpClient httpClient = new HttpClient(); public async Task Fire(AmmoModel ammo) { if (ammo.Protocol.Equals("get", StringComparison.OrdinalIgnoreCase)) { var response = await _httpClient.GetAsync(new Uri(ammo.Url)); ammo.ActualCode = (int)response.StatusCode; ammo.ActualResponse = await response.Content.ReadAsStringAsync(); } }
public EditCartridgeViewModel(ConfigurationModel configurationModel, AmmoModel cartridgesModel, Cartridge cartridgeToEdit = null) { Cartridge = cartridgeToEdit ?? new Cartridge(); isNew = cartridgeToEdit == null; configurationModel.Initialize(); units = configurationModel.Units; DisplayName = "Cartridge Data"; this.cartridgesModel = cartridgesModel; }
public RiflesViewModel(RiflesModel riflesModel, ConfigurationModel configurationModel, AmmoModel cartridgesModel, ScopesModel scopesModel, IWindowManager windowManager, IEventAggregator eventsAggregator) : base(eventsAggregator) { DisplayName = "Rifles"; this.riflesModel = riflesModel; this.configurationModel = configurationModel; this.cartridgesModel = cartridgesModel; this.scopesModel = scopesModel; this.windowManager = windowManager; }
public static AmmoIdentifier GetIdentifier(AmmoModel model) { var foundKey = _cache.FirstOrDefault((x) => x.Value == model).Key; if (foundKey.AmmoType != AmmoType.NONE) { return(foundKey); } var newIdentifier = GetIdentifierInternal(model); if (newIdentifier.AmmoType != AmmoType.NONE) { _cache[newIdentifier] = model; } return(newIdentifier); }
internal static PersistentAmmo GetPersistentAmmoForAmmo(AmmoModel model) { var identifier = AmmoIdentifier.GetIdentifier(model); if (identifier.AmmoType == AmmoType.NONE) { return(null); } if (!PersistentAmmoData.ContainsKey(identifier)) { var newData = new PersistentAmmo(identifier, new PersistentAmmoModel(model)); PersistentAmmoData.Add(identifier, newData); newData.Sync(); } return(PersistentAmmoData[identifier]); }
public AmmoViewModel(AmmoModel ammoModel, RiflesModel riflesModel, ConfigurationModel configurationModel, IWindowManager windowManager, IEventAggregator eventsAggregator) : base(eventsAggregator) { #pragma warning disable CC0021 // Use nameof DisplayName = "Cartridges"; #pragma warning restore CC0021 // Use nameof this.ammoModel = ammoModel; this.configurationModel = configurationModel; this.windowManager = windowManager; configurationModel.Initialize(); this.eventsAggregator = eventsAggregator; this.riflesModel = riflesModel; }
public EditRifleViewModel(ConfigurationModel configurationModel, AmmoModel cartridgesModel, ScopesModel scopesModel, Rifle rifle = null) { this.cartridgesModel = cartridgesModel; this.scopesModel = scopesModel; this.configurationModel = configurationModel; this.rifle = rifle ?? new Rifle { ZeroingWeather = WeatherCondition.Default }; NotifyOfPropertyChange(() => Scope); NotifyOfPropertyChange(() => Cartridge); DisplayName = "Rifle Settings"; }
static AmmoIdentifier GetIdentifierInternal(AmmoModel ammoModel) // warning, this is a reference based check { foreach (var candidate in SceneContext.Instance.GameModel.player.ammoDict) { if (candidate.Value == ammoModel) { return(new AmmoIdentifier(Ammo.AmmoType.PLAYER, (long)candidate.Key)); } } foreach (var candidate in SceneContext.Instance.GameModel.gadgetSites.Where((x) => x.Value.HasAttached())) { var potentialKey = new AmmoIdentifier(AmmoType.GADGET, candidate.Key); if (candidate.Value.attached is DroneModel drone) { if (drone.ammo == ammoModel) { return(potentialKey); } } if (candidate.Value.attached is WarpDepotModel depot) { if (depot.ammo == ammoModel) { return(potentialKey); } } } foreach (var candidate in SceneContext.Instance.GameModel.landPlots) { foreach (var ammo in candidate.Value.siloAmmo) { if (ammo.Value == ammoModel) { return(new AmmoIdentifier(AmmoType.LANDPLOT, (long)ammo.Key, candidate.Key)); } } } return(new AmmoIdentifier(AmmoType.NONE, 0)); }
public static bool TryGetIdentifier(AmmoModel model, out AmmoIdentifier identifier) { identifier = GetIdentifier(model); return(identifier.AmmoType != AmmoType.NONE); }
public PersistentAmmoModel(AmmoModel model) { UpdateFromExistingSlots(model.slots); }