public static void RegisterMethods() { RegisterMethod(new Method <AvailablePart, PartCategories>("Category", p => p == null ? 0 : p.category)); RegisterMethod(new Method <AvailablePart, float>("Cost", p => p == null ? 0.0f : p.cost)); RegisterMethod(new Method <AvailablePart, string>("Description", p => p == null ? "" : p.description)); RegisterMethod(new Method <AvailablePart, string>("Manufacturer", p => p == null ? "" : p.manufacturer)); RegisterMethod(new Method <AvailablePart, float>("Size", p => p == null ? 0.0f : p.partSize)); RegisterMethod(new Method <AvailablePart, Tech>("TechRequired", p => p == null ? null : Tech.GetTech(p.TechRequired))); RegisterMethod(new Method <AvailablePart, int>("UnlockCost", p => p == null ? 0 : p.entryCost)); RegisterMethod(new Method <AvailablePart, bool>("IsUnlocked", p => p == null ? false : ResearchAndDevelopment.PartModelPurchased(p), false)); RegisterMethod(new Method <AvailablePart, int>("CrewCapacity", p => p == null ? 0 : p.partPrefab.CrewCapacity)); RegisterMethod(new Method <AvailablePart, List <Resource> >("Resources", ResourceList)); RegisterMethod(new Method <AvailablePart, Resource, double>("ResourceCapacity", ResourceCapacity)); RegisterMethod(new Method <AvailablePart, float>("EngineAtmosphereThrust", GetEngineAtmoThrust)); RegisterMethod(new Method <AvailablePart, float>("EngineVacuumThrust", GetEngineVacThrust)); RegisterMethod(new Method <AvailablePart, float>("EngineAtmosphereISP", GetEngineAtmoISP)); RegisterMethod(new Method <AvailablePart, float>("EngineVacuumISP", GetEngineVacISP)); RegisterGlobalFunction(new Function <List <AvailablePart> >("AllParts", () => PartLoader.Instance.parts.ToList())); RegisterGlobalFunction(new Function <AvailablePart, AvailablePart>("AvailablePart", p => p)); }