OpenLibExtensions.cs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. using Lua.Standard.Base;
  2. using Lua.Standard.Mathematics;
  3. namespace Lua.Standard;
  4. public static class OpenLibExtensions
  5. {
  6. static readonly LuaFunction[] baseFunctions = [
  7. AssertFunction.Instance,
  8. ErrorFunction.Instance,
  9. PrintFunction.Instance,
  10. RawGetFunction.Instance,
  11. RawSetFunction.Instance,
  12. GetMetatableFunction.Instance,
  13. SetMetatableFunction.Instance,
  14. ToStringFunction.Instance
  15. ];
  16. static readonly LuaFunction[] mathFunctions = [
  17. AbsFunction.Instance,
  18. AcosFunction.Instance,
  19. AsinFunction.Instance,
  20. Atan2Function.Instance,
  21. AtanFunction.Instance,
  22. CeilFunction.Instance,
  23. CosFunction.Instance,
  24. CoshFunction.Instance,
  25. DegFunction.Instance,
  26. ExpFunction.Instance,
  27. FloorFunction.Instance,
  28. FmodFunction.Instance,
  29. FrexpFunction.Instance,
  30. LdexpFunction.Instance,
  31. LogFunction.Instance,
  32. MaxFunction.Instance,
  33. MinFunction.Instance,
  34. ModfFunction.Instance,
  35. PowFunction.Instance,
  36. RadFunction.Instance,
  37. RandomFunction.Instance,
  38. RandomSeedFunction.Instance,
  39. SinFunction.Instance,
  40. SinhFunction.Instance,
  41. SqrtFunction.Instance,
  42. TanFunction.Instance,
  43. TanhFunction.Instance,
  44. ];
  45. public static void OpenBaseLibrary(this LuaState state)
  46. {
  47. state.Environment["_G"] = state.Environment;
  48. state.Environment["_VERSION"] = "Lua 5.2";
  49. foreach (var func in baseFunctions)
  50. {
  51. state.Environment[func.Name] = func;
  52. }
  53. }
  54. public static void OpenMathLibrary(this LuaState state)
  55. {
  56. state.Environment[RandomFunction.RandomInstanceKey] = new(new Random());
  57. state.Environment["pi"] = Math.PI;
  58. state.Environment["huge"] = double.PositiveInfinity;
  59. var table = new LuaTable(0, mathFunctions.Length);
  60. foreach (var func in mathFunctions)
  61. {
  62. table[func.Name] = func;
  63. }
  64. state.Environment["math"] = table;
  65. }
  66. }