//---------------------------------------------------------------------- //Clear From Registry //---------------------------------------------------------------------- public static void ClearAllForceIntegrators(PhysicsObject obj) { List<KeyValuePair<PhysicsObject, ForceIntegratorParams>> directory; List<KeyValuePair<PhysicsObject, ForceIntegratorParams>> toRemove = new List<KeyValuePair<PhysicsObject, ForceIntegratorParams>>(); foreach (ForceIntegrator.Type type in Enum.GetValues(typeof(ForceIntegrator.Type)).Cast<ForceIntegrator.Type>()) { if (registry.ContainsKey(type)) { if (registry.TryGetValue(type, out directory)) { foreach (KeyValuePair<PhysicsObject, ForceIntegratorParams> pair in directory) { if (pair.Key.Equals(obj) || pair.Value.Equals(obj)) { toRemove.Add(pair); } } foreach (KeyValuePair<PhysicsObject, ForceIntegratorParams> trash in toRemove) { directory.Remove(trash); } } } } }
public bool Equals(PhysicsObject obj) { if (obj.ID == this.ID) { return true; } return false; }
//---------------------------------------------------------------------- //Add To Registry //---------------------------------------------------------------------- public static void AddToRegistry(PhysicsObject obj1, ForceIntegratorParams obj2, ForceIntegrator.Type type) { List<KeyValuePair<PhysicsObject, ForceIntegratorParams>> directory; if (registry.ContainsKey(type)) { if (registry.TryGetValue(type, out directory)) { directory.Add(new KeyValuePair<PhysicsObject, ForceIntegratorParams>(obj1, obj2)); return; } } directory = new List<KeyValuePair<PhysicsObject, ForceIntegratorParams>>(); directory.Add(new KeyValuePair<PhysicsObject, ForceIntegratorParams>(obj1, obj2)); registry.Add(type, directory); }
public FighterJet(Texture2D jet) { image = jet; model = new PhysicsObject(); model.SetMass(FIGHTER_JET_MASS); }
public SmallAirplane(Texture2D air) { image = air; model = new PhysicsObject(); model.SetMass(SMALL_AIRPLANE_MASS); }
public PaperAirplane(Texture2D paper) { image = paper; model = new PhysicsObject(); model.SetMass(PAPER_AIRPLANE_MASS); }
//---------------------------------------------------------------------- //Remove From Registry //---------------------------------------------------------------------- public static void RemoveFromRegistry(PhysicsObject obj1, ForceIntegratorParams obj2, ForceIntegrator.Type type) { List<KeyValuePair<PhysicsObject, ForceIntegratorParams>> directory; KeyValuePair<PhysicsObject, ForceIntegratorParams> pair = (new KeyValuePair<PhysicsObject, ForceIntegratorParams>(obj1, obj2)); if (registry.ContainsKey(type)) { if (registry.TryGetValue(type, out directory)) { if (directory.Contains(pair)) { directory.Remove(pair); } } } }