KSPMathModule() { List <RealizedType> types = new List <RealizedType> { Vector2Binding.Vector2Type, Vector3Binding.Vector3Type, DirectionBinding.DirectionType, Matrix2x2Binding.Matrix2x2Type }; BindingGenerator.RegisterTypeMapping(typeof(Vector2d), Vector2Binding.Vector2Type); BindingGenerator.RegisterTypeMapping(typeof(Vector3d), Vector3Binding.Vector3Type); BindingGenerator.RegisterTypeMapping(typeof(Direction), DirectionBinding.DirectionType); BindingGenerator.RegisterTypeMapping(typeof(Matrix2x2), Matrix2x2Binding.Matrix2x2Type); List <CompiledKontrolConstant> constants = new List <CompiledKontrolConstant>(); List <CompiledKontrolFunction> functions = new List <CompiledKontrolFunction> { Direct.BindFunction(typeof(Vector2Binding), "Vec2", "Create a new 2-dimensional vector", typeof(double), typeof(double)), Direct.BindFunction(typeof(Vector3Binding), "Vec3", "Create a new 3-dimensional vector", typeof(double), typeof(double), typeof(double)), Direct.BindFunction(typeof(DirectionBinding), "Euler", "Create a Direction from euler angles in degree", typeof(double), typeof(double), typeof(double)), Direct.BindFunction(typeof(DirectionBinding), "AngleAxis", "Create a Direction from a given axis with rotation angle in degree", typeof(double), typeof(Vector3d)), Direct.BindFunction(typeof(DirectionBinding), "FromVectorToVector", "Create a Direction to rotate from one vector to another", typeof(Vector3d), typeof(Vector3d)), Direct.BindFunction(typeof(DirectionBinding), "LookDirUp", "Create a Direction from a fore-vector and an up-vector", typeof(Vector3d), typeof(Vector3d)), Direct.BindFunction(typeof(ExtraMath), "AngleDelta", "Calculate the difference between to angles in degree (-180 .. 180)", typeof(double), typeof(double)), Direct.BindFunction(typeof(Matrix2x2Binding), "Matrix2x2", "Create a new 2-dimensional matrix", typeof(double), typeof(double), typeof(double), typeof(double)) }; module = Direct.BindModule(ModuleName, "Collection of KSP/Unity related mathematical functions.", types, constants, functions); }