public ScienceSubject GetScienceSubject(ModuleScienceExperiment baseExperiment) { var currentExperiment = baseExperiment as DMModuleScienceAnimateGeneric.DMModuleScienceAnimateGeneric; if (DMSciAnimAPI.isAsteroidGrappled(currentExperiment)) { return(DMSciAnimAPI.getAsteroidSubject(currentExperiment)); } else { ExperimentSituations situation = ScienceUtil.GetExperimentSituation(FlightGlobals.ActiveVessel); var biome = currentExperiment.getBiome(situation); return(ResearchAndDevelopment.GetExperimentSubject(ResearchAndDevelopment.GetExperiment(currentExperiment.experimentID), situation, FlightGlobals.currentMainBody, biome, ScienceUtil.GetBiomedisplayName(FlightGlobals.currentMainBody, biome))); } }
internal bool RunExperiment(string sid, ModuleScienceExperiment exp, bool runSingleUse = true) { IScienceDataContainer m = null; // If possible run with DMagic new API IEnumerable <DMModuleScienceAnimateGeneric_NM.DMModuleScienceAnimateGeneric> lm = FindDMAnimateGenericsForExperiment(sid); if (lm != null && lm.Any()) { m = lm.FirstOrDefault(x => (int)x.Fields.GetValue("experimentsLimit") > 1 ? DMSciAnimAPI.experimentCanConduct(x) : DMSciAnimAPI.experimentCanConduct(x) && (x.rerunnable || runSingleUse)); if (m != null) { DMSciAnimAPI.deployDMExperiment(m, false); } return(true); } return(false); }