3d 엔진을 lua (5.1) 파서에 연결하려고합니다. 예를 들어, vec3의 LUA 클래스가 있고 vec3의 C++ 클래스가 있습니다. 나는 그들이 서로에게 일하기를 바란다.C++ 클래스를 LUA 테이블에 연결
vec3 = {};
vec3.__index = vec3;
local mt = {}
mt.__call = function(class_tbl, ...)
local obj = {}
setmetatable(obj, vec3);
vec3.init(obj, ...);
return obj;
end
vec3.init = function(obj, x, y, z)
obj.x, obj.y, obj.z = x, y, z;
end
setmetatable(vec3, mt);
function vec3:__tostring()
return "(" .. self.x .. ", " .. self.y .. ", " .. self.z .. ")";
end
function vec3:__add(b)
return vec3(self.x + b.x, self.y + b.y, self.z + b.z);
end
function vec3:dot(b)
return self.x * b.x + self.y * b.y + self.z * b.z;
end
나는 질문은 매우 분명하다 생각 : 나는 할 수 있도록하려면 이것은 (제한) 루아 버전이
class vec3
{
public:
vec3() {}
vec3(float _x, float _y, float _z) : x(_x), y(_y), z(_z) {}
vec3 operator+(const vec3 &b)
{
return vec3(x + b.x, y + b.y, z + b.z);
}
float dot(const vec3 &b)
{
return x * b.x + y * b.y + z * b.z;
}
float x, y, z;
}
:
이 내 C의 (일부) ++ 클래스 내 C++ 코드에서 vec3을 사용하는 것입니다. 예를 들어 노드 나 다른 것들의 위치를 지정하고 LUA 프로그래머가 vec3의 수학을 수행하고 C++로 다시 보낼 수 있도록 LUA에서이 코드를 사용할 수 있기를 원합니다. 그래서 저는 또한 LUA에서 vec3를 생성하고 그것을 vec3 클래스로 이해되는 C++로 보낼 수 있기를 원합니다.
이것을 달성하려면 위의 LUA 테이블을 LUA 대신 C로 작성해야한다고 생각하고 LUA로 보내고 LUA에서 검색하기 위해 "푸시"및 "팝"기능을 만들어야합니다.
하지만 내 모든 시도가 실패합니다.
누구든지 나를 도와 줄 수 있습니까?
더크.
그렇습니다. 아마도 그렇습니다. 그러나 사용하지 않는 많은 라이브러리를 포함 할 필요가없는 라이브러리를 아직 찾지 못했습니다. – scippie
AFAIK에는 추가 라이브러리가 필요하지 않습니다. –