Przeglądaj źródła

binds incapsulated in Lua Tables

mikymod 12 lat temu
rodzic
commit
f811a6aa4b
4 zmienionych plików z 89 dodań i 12 usunięć
  1. 19 7
      game/lua/init.lua
  2. 32 1
      game/lua/mat4.lua
  3. 13 1
      game/lua/quat.lua
  4. 25 3
      game/lua/vec3.lua

+ 19 - 7
game/lua/init.lua

@@ -1,16 +1,28 @@
+local ffi = require("ffi")
+
+local lib_path = os.getenv("LD_LIBRARY_PATH")
+
+lib = ffi.load(lib_path .. "/libcrown.so", true)
+
 require("vec3")
 require("mat4")
 require("quat")
 
+print("-- Testing Mat4 --\n")
+local m = Mat4.mat4(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0)
+local t = Mat4.mat4(9.0, 8.0, 7.0, 6.0, 5.0, 4.0, 3.0, 2.0, 1.0)
 
-local ffi = require("ffi")
+Mat4.print(m)
+print("\n")
 
-local lib_path = os.getenv("LD_LIBRARY_PATH")
+print("-- Mat4.add --\n")
 
-lib = ffi.load(lib_path .. "libcrown.so", true)
+m = Mat4.add(m, t)
+Mat4.print(m)
+print("\n")
 
-local v = lib.vec3(1.0, 1.0, 1.0)
-local q = lib.quat(10.0, v)
-local m = lib.mat4(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0)
+print("-- Mat4.subtract --\n")
 
-lib.mat4_print(m)
+m = Mat4.subtract(m, t)
+Mat4.print(m)
+print("\n")

+ 32 - 1
game/lua/mat4.lua

@@ -78,4 +78,35 @@ ffi.cdef
 
 	void 				mat4_print(Mat4* self);
 
-]]
+]]
+
+Mat4 = {}
+
+Mat4.mat4 								= lib.mat4
+Mat4.add 								= lib.mat4_add
+Mat4.subtract 							= lib.mat4_subtract
+Mat4.multiply 							= lib.mat4_multiply
+Mat4.multiply_by_scalar 				= lib.mat4_multiply_by_scalar
+Mat4.divide_by_scalar 					= lib.mat4_divide_by_scalar
+Mat4.build_rotation_x 					= lib.mat4_build_rotation_x
+Mat4.build_rotation_y 					= lib.mat4_build_rotation_y
+Mat4.build_rotation_z 					= lib.mat4_build_rotation_z
+Mat4.build_rotation 					= lib.mat4_build_rotation
+Mat4.build_projection_perspective_rh 	= lib.mat4_build_projection_perspective_rh
+Mat4.build_projection_perspective_lh 	= lib.mat4_build_projection_perspective_lh
+Mat4.build_projection_ortho_rh 			= lib.mat4_build_projection_ortho_rh
+Mat4.build_projection_ortho_lh 			= lib.mat4_build_projection_ortho_lh
+Mat4.build_projection_ortho_2d_rh 		= lib.mat4_build_projection_ortho_2d_rh
+Mat4.build_look_at_rh 					= lib.mat4_build_look_at_rh
+Mat4.build_look_at_lh 					= lib.mat4_build_look_at_lh
+Mat4.build_viewpoint_billboard 			= lib.mat4_build_viewpoint_billboard
+Mat4.build_axis_billboard 				= lib.mat4_build_axis_billboard
+Mat4.transpose 							= lib.mat4_transpose
+Mat4.determinant 						= lib.mat4_determinant
+Mat4.invert 							= lib.mat4_invert
+Mat4.load_identity 						= lib.mat4_load_identity
+Mat4.get_translation 					= lib.mat4_get_translation
+Mat4.set_translation 					= lib.mat4_set_translation
+Mat4.get_scale 							= lib.mat4_get_scale
+Mat4.set_scale 							= lib.mat4_set_scale
+Mat4.print 								= lib.mat4_print

+ 13 - 1
game/lua/quat.lua

@@ -28,4 +28,16 @@ ffi.cdef
 	Quat*		quat_multiply(Quat* self, const float& k);
 
 	Quat*		quat_power(Quat* self, float exp);
-]]
+]]
+
+Quat = {}
+
+Quat.quat 			= lib.quat
+Quat.negate  		= lib.quat_negate
+Quat.load_identity  = lib.quat_load_identity
+Quat.length  		= lib.quat_length	
+Quat.conjugate 		= lib.quat_conjugate
+Quat.inverse  		= lib.quat_inverse			
+Quat.cross  		= lib.quat_cross
+Quat.multiply 		= lib.quat_multiply
+Quat.power  		= lib.quat_power

+ 25 - 3
game/lua/vec3.lua

@@ -43,6 +43,28 @@ ffi.cdef
 
 	float				vec3_get_angle_between(Vec3* self, const Vec3* a);	
 
-	void				vec3_zero(Vec3* self);	
-				
-]]
+	void				vec3_zero(Vec3* self);					
+]]
+
+-- Encapsulate method in Vec3 table
+
+Vec3 = {}
+
+Vec3.vec3 				= lib.vec3;
+Vec3.add 				= lib.vec3_add
+Vec3.subtract 			= lib.vec3_subtract
+Vec3.multiply 			= lib.vec3_multiply
+Vec3.divide 			= lib.vec3_divide
+Vec3.dot 				= lib.vec3_dot
+Vec3.cross 				= lib.vec3_cross
+Vec3.equal 				= lib.vec3_equal
+Vec3.lower 				= lib.vec3_lower
+Vec3.greater 			= lib.vec3_greater
+Vec3.lenght 			= lib.vec3_length
+Vec3.squared_length 	= lib.vec3_squared_length
+Vec3.set_length 		= lib.vec3_set_length
+Vec3.normalize 			= lib.vec3_normalize
+Vec3.negate 			= lib.vec3_negate
+Vec3.get_distance_to 	= lib.vec3_get_distance_to
+Vec3.get_angle_between 	= lib.vec3_get_angle_between
+Vec3.zero 				= lib.vec3_zero