Exemplo n.º 1
0
        public void Run()
        {
            if (HasData)
            {
                throw new InvalidOperationException("Experiment already contains data");
            }
            if (Inoperable)
            {
                throw new InvalidOperationException("Experiment is inoperable");
            }
            // Stock experiments
            // FIXME: Don't use private API!!!
            var gatherData = experiment.GetType().GetMethod("gatherData", BindingFlags.NonPublic | BindingFlags.Instance);

            if (gatherData != null)
            {
                var result = (IEnumerator)gatherData.Invoke(experiment, new object[] { false });
                experiment.StartCoroutine(result);
                return;
            }
            // DMagic experiments
            gatherData = experiment.GetType().GetMethod("gatherScienceData", BindingFlags.Public | BindingFlags.Instance | BindingFlags.FlattenHierarchy);
            if (gatherData != null)
            {
                gatherData.Invoke(experiment, new object[] { true });
                return;
            }
            throw new InvalidOperationException("Failed to find a gather data method for this experiment");
        }
Exemplo n.º 2
0
        private void DeployExperiment()
        {
            if (module.GetData().Any())
            {
                throw new KOSException("Experiment already contains data");
            }

            if (module.Inoperable)
            {
                throw new KOSException("Experiment is inoperable");
            }

            object result = gatherDataMethod.Invoke(module, new object[] { false });

            IEnumerator e = result as IEnumerator;

            module.StartCoroutine(e);
        }
Exemplo n.º 3
0
            public void Deploy()
            {
                var gatherDataMethod = experiment.GetType()
                                       .GetMethod("gatherData", BindingFlags.NonPublic | BindingFlags.Instance);

                experiment.DeployExperiment();
                object result = gatherDataMethod !.Invoke(experiment, new object[] { false });

                experiment.StartCoroutine(result as IEnumerator);
            }
        protected virtual void Deploy()
        {
            ThrowIfNotCPUVessel();

            var gatherDataMethod = module.GetType().GetMethod("gatherData",
                                                              BindingFlags.NonPublic | BindingFlags.Instance);

            object result = gatherDataMethod.Invoke(module, new object[] { false });

            IEnumerator e = result as IEnumerator;

            module.StartCoroutine(e);
        }
Exemplo n.º 5
0
        public void Run()
        {
            if (HasData)
            {
                throw new InvalidOperationException("Experiment already contains data");
            }
            if (Inoperable)
            {
                throw new InvalidOperationException("Experiment is inoperable");
            }
            // FIXME: Don't use private API!!!
            var gatherData = experiment.GetType().GetMethod("gatherData", BindingFlags.NonPublic | BindingFlags.Instance);
            var result     = (IEnumerator)gatherData.Invoke(experiment, new object[] { false });

            experiment.StartCoroutine(result);
        }