private VehicleEffectsDefinition GetCleanedDefinition() { if (m_definition == null) { m_definition = new VehicleEffectsDefinition(); } var cleanedDef = m_definition.Copy(); for (int i = cleanedDef.Vehicles.Count - 1; i >= 0; i--) { Logging.LogWarning(i + " " + cleanedDef.Vehicles[i]); string name = cleanedDef.Vehicles[i].ApplyToTrailersOnly ? cleanedDef.Vehicles[i].Name + ALL_TRAILER_POSTFIX : cleanedDef.Vehicles[i].Name; bool inScene = false; foreach (var vehicle in m_vehicles) { if (name == vehicle) { inScene = true; break; } } if (!inScene || cleanedDef.Vehicles[i].Effects.Count < 1) { Logging.Log("Removing definition for " + cleanedDef.Vehicles[i].Name + "\nInScene: " + inScene.ToString()); cleanedDef.Vehicles.RemoveAt(i); } } return(cleanedDef); }