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)));
            }
        }
Пример #2
0
        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);
        }