mirror of
https://github.com/ValKmjolnir/Nasal-Interpreter.git
synced 2026-07-20 01:28:45 +08:00
✨ support nasal module
This commit is contained in:
+10
-12
@@ -1,12 +1,10 @@
|
||||
var libkey=func(){
|
||||
var lib=dylib.dlopen("libkey"~(os.platform()=="windows"?".dll":".so"));
|
||||
var kb=lib.nas_kbhit;
|
||||
var gt=lib.nas_getch;
|
||||
var nb=lib.nas_noblock;
|
||||
var call=dylib.limitcall(0);
|
||||
return {
|
||||
kbhit:func(){return call(kb);},
|
||||
getch:func(){return call(gt);},
|
||||
nonblock:func(){return call(nb);}
|
||||
}
|
||||
}();
|
||||
|
||||
var lib=dylib.dlopen("libkey"~(os.platform()=="windows"?".dll":".so"));
|
||||
var kb=lib.nas_kbhit;
|
||||
var gt=lib.nas_getch;
|
||||
var nb=lib.nas_noblock;
|
||||
var call=dylib.limitcall(0);
|
||||
|
||||
var kbhit = func(){return call(kb);}
|
||||
var getch = func(){return call(gt);}
|
||||
var nonblock = func(){return call(nb);}
|
||||
|
||||
+61
-62
@@ -1,62 +1,61 @@
|
||||
var libmat=func(){
|
||||
var dl=dylib.dlopen("libmat."~(os.platform()=="windows"?"dll":"so"));
|
||||
var vec2=dl.nas_vec2;
|
||||
var vec3=dl.nas_vec3;
|
||||
var (vec2add,vec2sub,vec2mul,vec2div,vec2neg,vec2norm,vec2len,vec2dot)=(
|
||||
dl.nas_vec2_add,
|
||||
dl.nas_vec2_sub,
|
||||
dl.nas_vec2_mult,
|
||||
dl.nas_vec2_div,
|
||||
dl.nas_vec2_neg,
|
||||
dl.nas_vec2_norm,
|
||||
dl.nas_vec2_len,
|
||||
dl.nas_vec2_dot
|
||||
);
|
||||
var (vec3add,vec3sub,vec3mul,vec3div,vec3neg,vec3norm,vec3len,vec3dot)=(
|
||||
dl.nas_vec3_add,
|
||||
dl.nas_vec3_sub,
|
||||
dl.nas_vec3_mult,
|
||||
dl.nas_vec3_div,
|
||||
dl.nas_vec3_neg,
|
||||
dl.nas_vec3_norm,
|
||||
dl.nas_vec3_len,
|
||||
dl.nas_vec3_dot
|
||||
);
|
||||
var (rotate_x,rotate_y,rotate_z)=(
|
||||
dl.nas_rotate_x,
|
||||
dl.nas_rotate_y,
|
||||
dl.nas_rotate_z
|
||||
);
|
||||
var (invoke_i,invoke_ii,invoke_iii)=(
|
||||
dylib.limitcall(1),
|
||||
dylib.limitcall(2),
|
||||
dylib.limitcall(3)
|
||||
);
|
||||
return {
|
||||
vec2:{
|
||||
new: func(x,y){return invoke_ii(vec2,x,y);},
|
||||
add: func(v0,v1){return invoke_ii(vec2add,v0,v1);},
|
||||
sub: func(v0,v1){return invoke_ii(vec2sub,v0,v1);},
|
||||
mul: func(v0,v1){return invoke_ii(vec2mul,v0,v1);},
|
||||
div: func(v0,v1){return invoke_ii(vec2div,v0,v1);},
|
||||
neg: func(v0){return invoke_i(vec2neg,v0);},
|
||||
norm: func(v0){return invoke_i(vec2norm,v0);},
|
||||
len: func(v0){return invoke_i(vec2len,v0);},
|
||||
dot: func(v0,v1){return invoke_ii(vec2dot,v0,v1);}
|
||||
},
|
||||
vec3:{
|
||||
new: func(x,y,z){return invoke_iii(vec3,x,y,z);},
|
||||
add: func(v0,v1){return invoke_ii(vec3add,v0,v1);},
|
||||
sub: func(v0,v1){return invoke_ii(vec3sub,v0,v1);},
|
||||
mul: func(v0,v1){return invoke_ii(vec3mul,v0,v1);},
|
||||
div: func(v0,v1){return invoke_ii(vec3div,v0,v1);},
|
||||
neg: func(v0){return invoke_i(vec3neg,v0);},
|
||||
norm: func(v0){return invoke_i(vec3norm,v0);},
|
||||
len: func(v0){return invoke_i(vec3len,v0);},
|
||||
rx: func(v0,angle){return invoke_ii(rotate_x,v0,angle);},
|
||||
ry: func(v0,angle){return invoke_ii(rotate_y,v0,angle);},
|
||||
rz: func(v0,angle){return invoke_ii(rotate_z,v0,angle);},
|
||||
dot: func(v0,v1){return invoke_ii(vec3dot,v0,v1);}
|
||||
}
|
||||
};
|
||||
}();
|
||||
|
||||
var dl=dylib.dlopen("libmat."~(os.platform()=="windows"?"dll":"so"));
|
||||
var vec2=dl.nas_vec2;
|
||||
var vec3=dl.nas_vec3;
|
||||
var (vec2add,vec2sub,vec2mul,vec2div,vec2neg,vec2norm,vec2len,vec2dot)=(
|
||||
dl.nas_vec2_add,
|
||||
dl.nas_vec2_sub,
|
||||
dl.nas_vec2_mult,
|
||||
dl.nas_vec2_div,
|
||||
dl.nas_vec2_neg,
|
||||
dl.nas_vec2_norm,
|
||||
dl.nas_vec2_len,
|
||||
dl.nas_vec2_dot
|
||||
);
|
||||
var (vec3add,vec3sub,vec3mul,vec3div,vec3neg,vec3norm,vec3len,vec3dot)=(
|
||||
dl.nas_vec3_add,
|
||||
dl.nas_vec3_sub,
|
||||
dl.nas_vec3_mult,
|
||||
dl.nas_vec3_div,
|
||||
dl.nas_vec3_neg,
|
||||
dl.nas_vec3_norm,
|
||||
dl.nas_vec3_len,
|
||||
dl.nas_vec3_dot
|
||||
);
|
||||
var (rotate_x,rotate_y,rotate_z)=(
|
||||
dl.nas_rotate_x,
|
||||
dl.nas_rotate_y,
|
||||
dl.nas_rotate_z
|
||||
);
|
||||
var (invoke_i,invoke_ii,invoke_iii)=(
|
||||
dylib.limitcall(1),
|
||||
dylib.limitcall(2),
|
||||
dylib.limitcall(3)
|
||||
);
|
||||
|
||||
var vec2={
|
||||
new: func(x,y){return invoke_ii(vec2,x,y);},
|
||||
add: func(v0,v1){return invoke_ii(vec2add,v0,v1);},
|
||||
sub: func(v0,v1){return invoke_ii(vec2sub,v0,v1);},
|
||||
mul: func(v0,v1){return invoke_ii(vec2mul,v0,v1);},
|
||||
div: func(v0,v1){return invoke_ii(vec2div,v0,v1);},
|
||||
neg: func(v0){return invoke_i(vec2neg,v0);},
|
||||
norm: func(v0){return invoke_i(vec2norm,v0);},
|
||||
len: func(v0){return invoke_i(vec2len,v0);},
|
||||
dot: func(v0,v1){return invoke_ii(vec2dot,v0,v1);}
|
||||
};
|
||||
var vec3={
|
||||
new: func(x,y,z){return invoke_iii(vec3,x,y,z);},
|
||||
add: func(v0,v1){return invoke_ii(vec3add,v0,v1);},
|
||||
sub: func(v0,v1){return invoke_ii(vec3sub,v0,v1);},
|
||||
mul: func(v0,v1){return invoke_ii(vec3mul,v0,v1);},
|
||||
div: func(v0,v1){return invoke_ii(vec3div,v0,v1);},
|
||||
neg: func(v0){return invoke_i(vec3neg,v0);},
|
||||
norm: func(v0){return invoke_i(vec3norm,v0);},
|
||||
len: func(v0){return invoke_i(vec3len,v0);},
|
||||
rx: func(v0,angle){return invoke_ii(rotate_x,v0,angle);},
|
||||
ry: func(v0,angle){return invoke_ii(rotate_y,v0,angle);},
|
||||
rz: func(v0,angle){return invoke_ii(rotate_z,v0,angle);},
|
||||
dot: func(v0,v1){return invoke_ii(vec3dot,v0,v1);}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user