mikymod 12 лет назад
Родитель
Сommit
b1d70b58f0
1 измененных файлов с 60 добавлено и 0 удалено
  1. 60 0
      game/lua/vec3.lua

+ 60 - 0
game/lua/vec3.lua

@@ -0,0 +1,60 @@
+local ffi = require("ffi")
+
+ffi.cdef
+[[
+	typedef struct
+	{
+		float x;
+		float y;
+		float z;
+	} Vec3;
+
+	Vec3* 				vec3(float nx, float ny, float nz);
+
+	Vec3*				vec3_add(Vec3* self, const Vec3* v);
+
+	Vec3*				vec3_subtract(Vec3* self, const Vec3* v);
+
+	Vec3*				vec3_multiply(Vec3* self, const float s);
+
+	Vec3*				vec3_divide(Vec3* self, const float s);
+
+	float				vec3_dot(Vec3* self, const Vec3* v);
+
+	Vec3*				vec3_cross(Vec3* self, const Vec3* v);				
+
+	bool				vec3_equal(Vec3* self, const Vec3* other);	
+	
+	bool				vec3_lower(Vec3* self, const Vec3* other);
+
+	bool				vec3_greater(Vec3* self, const Vec3* other);		
+
+	float				vec3_length(Vec3* self);	
+
+	float				vec3_squared_length(Vec3* self);
+
+	void				vec3_set_length(Vec3* self, float len);
+
+	Vec3*				vec3_normalize(Vec3* self);
+
+	Vec3*				vec3_negate(Vec3* self);					
+
+	float				vec3_get_distance_to(Vec3* self, const Vec3* a);	
+
+	float				vec3_get_angle_between(Vec3* self, const Vec3* a);	
+
+	void				vec3_zero(Vec3* self);	
+				
+]]
+
+local lib_path = os.getenv("LD_LIBRARY_PATH")
+
+lib = ffi.load(lib_path .. "libcrown.so", true)
+
+
+local dir = lib.vec3(1, 1, 1)
+
+print(lib.vec3_negate(dir).x)
+
+
+