public virtual ORSX_ResourceManager createManagerForVessel(PartModule pm)
        {
            var megamanager = new ORSX_ResourceManager(pm, resource_name);

            managers.Add(pm.vessel, megamanager);
            return(megamanager);
        }
        public double getSpareResourceCapacity(String resourcename)
        {
            if (!getOvermanagerForResource(resourcename).hasManagerForVessel(vessel))
            {
                return(0);
            }

            ORSX_ResourceManager manager = getOvermanagerForResource(resourcename).getManagerForVessel(vessel);

            return(manager.getSpareResourceCapacity());
        }
        public double getResourceBarRatio(String resourcename)
        {
            if (!getOvermanagerForResource(resourcename).hasManagerForVessel(vessel))
            {
                return(0);
            }

            ORSX_ResourceManager manager = getOvermanagerForResource(resourcename).getManagerForVessel(vessel);

            return(manager.getResourceBarRatio());
        }
        public float getCurrentUnfilledResourceDemand(String resourcename)
        {
            if (!getOvermanagerForResource(resourcename).hasManagerForVessel(vessel))
            {
                return(0);
            }

            ORSX_ResourceManager manager = getOvermanagerForResource(resourcename).getManagerForVessel(vessel);

            return(manager.getCurrentUnfilledResourceDemand());
        }
        public float getStableResourceSupply(String resourcename)
        {
            if (!getOvermanagerForResource(resourcename).hasManagerForVessel(vessel))
            {
                return(0);
            }

            ORSX_ResourceManager manager = getOvermanagerForResource(resourcename).getManagerForVessel(vessel);

            return(manager.getStableResourceSupply());
        }
        public double supplyFNResource(double supply, String resourcename)
        {
            supply = Math.Max(supply, 0);
            if (!getOvermanagerForResource(resourcename).hasManagerForVessel(vessel))
            {
                return(0);
            }

            ORSX_ResourceManager manager = getOvermanagerForResource(resourcename).getManagerForVessel(vessel);

            return(manager.powerSupply(this, supply));
        }
        public double supplyManagedFNResourceWithMinimum(double supply, double rat_min, String resourcename)
        {
            supply  = Math.Max(supply, 0);
            rat_min = Math.Max(rat_min, 0);
            if (!getOvermanagerForResource(resourcename).hasManagerForVessel(vessel))
            {
                return(0);
            }

            ORSX_ResourceManager manager = getOvermanagerForResource(resourcename).getManagerForVessel(vessel);

            return(manager.managedPowerSupplyWithMinimum(this, supply, rat_min));
        }
        public float consumeFNResource(double power, String resourcename)
        {
            power = Math.Max(power, 0);
            if (!getOvermanagerForResource(resourcename).hasManagerForVessel(vessel))
            {
                return(0);
            }
            if (!fnresource_supplied.ContainsKey(resourcename))
            {
                fnresource_supplied.Add(resourcename, 0);
            }
            double power_taken = Math.Max(Math.Min(power, fnresource_supplied[resourcename] * TimeWarp.fixedDeltaTime), 0);

            fnresource_supplied[resourcename] -= power_taken;
            ORSX_ResourceManager mega_manager = getOvermanagerForResource(resourcename).getManagerForVessel(vessel);

            mega_manager.powerDraw(this, power);
            return((float)power_taken);
        }
 public void deleteManager(ORSX_ResourceManager manager)
 {
     managers.Remove(manager.getVessel());
 }
 public void deleteManager(ORSX_ResourceManager manager)
 {
     managers.Remove(manager.getVessel());
 }
 public virtual ORSX_ResourceManager createManagerForVessel(PartModule pm)
 {
     var megamanager = new ORSX_ResourceManager(pm, resource_name);
     managers.Add(pm.vessel, megamanager);
     return megamanager;
 }