223 lines
6.5 KiB
C
223 lines
6.5 KiB
C
/**
|
|
* Copyright (c) 2021 Dominic Masters
|
|
*
|
|
* This software is released under the MIT License.
|
|
* https://opensource.org/licenses/MIT
|
|
*/
|
|
|
|
#include "display.h"
|
|
|
|
scripterreturn_t _scriptPrimitiveCreate(scriptercontext_t *ctx) {
|
|
primitive_t *primitive = malloc(sizeof(primitive_t));
|
|
duk_push_pointer(ctx, primitive);
|
|
return 1;
|
|
}
|
|
|
|
scripterreturn_t _scriptPrimitiveInit(scriptercontext_t *ctx) {
|
|
primitive_t *primitive = duk_to_pointer(ctx, 0);
|
|
int32_t verticeCount = duk_to_int32(ctx, 1);
|
|
int32_t indiceCount = duk_to_int32(ctx, 2);
|
|
primitiveInit(primitive, verticeCount, indiceCount);
|
|
return 0;
|
|
}
|
|
|
|
scripterreturn_t _scriptPrimitiveDraw(scriptercontext_t *context) {
|
|
primitive_t *primitive = duk_to_pointer(context, 0);
|
|
int32_t start = duk_to_int32(context, 1);
|
|
int32_t count = duk_to_int32(context, 2);
|
|
primitiveDraw(primitive, start, count);
|
|
return 0;
|
|
}
|
|
|
|
scripterreturn_t _scriptPrimitiveDispose(scriptercontext_t *context) {
|
|
primitive_t *primitive = duk_to_pointer(context, 0);
|
|
primitiveDispose(primitive);
|
|
free(primitive);
|
|
return 0;
|
|
}
|
|
|
|
|
|
scripterreturn_t _scriptQuadInit(scriptercontext_t *ctx) {
|
|
quadInit(duk_to_pointer(ctx, 0), (float)duk_to_number(ctx, 1),
|
|
(float)duk_to_number(ctx, 2), (float)duk_to_number(ctx, 3),
|
|
(float)duk_to_number(ctx, 4), (float)duk_to_number(ctx, 5),
|
|
(float)duk_to_number(ctx, 6), (float)duk_to_number(ctx, 7),
|
|
(float)duk_to_number(ctx, 8), (float)duk_to_number(ctx, 9)
|
|
);
|
|
return 0;
|
|
}
|
|
|
|
|
|
scripterreturn_t _scriptCameraCreate(scriptercontext_t *ctx) {
|
|
camera_t *camera = malloc(sizeof(camera_t));
|
|
duk_push_pointer(ctx, camera);
|
|
return 1;
|
|
}
|
|
|
|
scripterreturn_t _scriptCameraLookAt(scriptercontext_t *ctx) {
|
|
cameraLookAt(duk_to_pointer(ctx, 0),
|
|
(float)duk_to_number(ctx, 1),
|
|
(float)duk_to_number(ctx, 2),
|
|
(float)duk_to_number(ctx, 3),
|
|
(float)duk_to_number(ctx, 4),
|
|
(float)duk_to_number(ctx, 5),
|
|
(float)duk_to_number(ctx, 6)
|
|
);
|
|
return 0;
|
|
}
|
|
|
|
scripterreturn_t _scriptCameraLook(scriptercontext_t *ctx) {
|
|
cameraLook(
|
|
duk_to_pointer(ctx, 0),
|
|
(float)duk_to_number(ctx, 1),
|
|
(float)duk_to_number(ctx, 2),
|
|
(float)duk_to_number(ctx, 3),
|
|
(float)duk_to_number(ctx, 4),
|
|
(float)duk_to_number(ctx, 5),
|
|
(float)duk_to_number(ctx, 6)
|
|
);
|
|
return 0;
|
|
}
|
|
|
|
scripterreturn_t _scriptCameraPerspective(scriptercontext_t *ctx) {
|
|
cameraPerspective(
|
|
duk_to_pointer(ctx, 0),
|
|
(float)duk_to_number(ctx, 1),
|
|
(float)duk_to_number(ctx, 2),
|
|
(float)duk_to_number(ctx, 3),
|
|
(float)duk_to_number(ctx, 4)
|
|
);
|
|
return 0;
|
|
}
|
|
|
|
scripterreturn_t _scriptCameraOrtho(scriptercontext_t *ctx) {
|
|
cameraOrtho(
|
|
duk_to_pointer(ctx, 0),
|
|
(float)duk_to_number(ctx, 1),
|
|
(float)duk_to_number(ctx, 2),
|
|
(float)duk_to_number(ctx, 3),
|
|
(float)duk_to_number(ctx, 4),
|
|
(float)duk_to_number(ctx, 5),
|
|
(float)duk_to_number(ctx, 6)
|
|
);
|
|
return 0;
|
|
}
|
|
|
|
scripterreturn_t _scriptCameraDispose(scriptercontext_t *ctx) {
|
|
camera_t *camera = duk_to_pointer(ctx, 0);
|
|
free(camera);
|
|
return 0;
|
|
}
|
|
|
|
|
|
scripterreturn_t _scriptShaderCreate(scriptercontext_t *ctx) {
|
|
shader_t *shader = malloc(sizeof(shader_t));
|
|
duk_push_pointer(ctx, shader);
|
|
return 1;
|
|
}
|
|
|
|
scripterreturn_t _scriptShaderInit(scriptercontext_t *ctx) {
|
|
shader_t *shader = duk_to_pointer(ctx, 0);
|
|
char *vertex = duk_to_string(ctx, 1);
|
|
char *frag = duk_to_string(ctx, 2);
|
|
shaderInit(shader, vertex, frag);
|
|
return 0;
|
|
}
|
|
|
|
scripterreturn_t _scriptShaderDispose(scriptercontext_t *ctx) {
|
|
shader_t *shader = duk_to_pointer(ctx, 0);
|
|
shaderDispose(shader);
|
|
free(shader);
|
|
return 0;
|
|
}
|
|
|
|
scripterreturn_t _scriptShaderUse(scriptercontext_t *ctx) {
|
|
shaderUse(duk_to_pointer(ctx, 0));
|
|
return 0;
|
|
}
|
|
|
|
scripterreturn_t _scriptShaderUseCamera(scriptercontext_t *ctx) {
|
|
shaderUseCamera(duk_to_pointer(ctx, 0), duk_to_pointer(ctx, 1));
|
|
return 0;
|
|
}
|
|
|
|
scripterreturn_t _scriptShaderUseTexture(scriptercontext_t *ctx) {
|
|
shaderUseTexture(duk_to_pointer(ctx, 0), duk_to_pointer(ctx, 1));
|
|
return 0;
|
|
}
|
|
|
|
scripterreturn_t _scriptShaderUsePosition(scriptercontext_t *ctx) {
|
|
shaderUsePosition(
|
|
duk_to_pointer(ctx, 0),
|
|
(float)duk_to_number(ctx, 1),
|
|
(float)duk_to_number(ctx, 2),
|
|
(float)duk_to_number(ctx, 3),
|
|
(float)duk_to_number(ctx, 4),
|
|
(float)duk_to_number(ctx, 5),
|
|
(float)duk_to_number(ctx, 6)
|
|
);
|
|
return 0;
|
|
}
|
|
|
|
scripterreturn_t _scriptShaderUsePositionAndScale(scriptercontext_t *ctx) {
|
|
shaderUsePositionAndScale(
|
|
duk_to_pointer(ctx, 0),
|
|
(float)duk_to_number(ctx, 1),
|
|
(float)duk_to_number(ctx, 2),
|
|
(float)duk_to_number(ctx, 3),
|
|
|
|
(float)duk_to_number(ctx, 4),
|
|
(float)duk_to_number(ctx, 5),
|
|
(float)duk_to_number(ctx, 6),
|
|
|
|
(float)duk_to_number(ctx, 7),
|
|
(float)duk_to_number(ctx, 8),
|
|
(float)duk_to_number(ctx, 9)
|
|
);
|
|
return 0;
|
|
}
|
|
|
|
|
|
scripterreturn_t _scriptTextureCreate(scriptercontext_t *ctx) {
|
|
texture_t *texture = malloc(sizeof(texture_t));
|
|
duk_push_pointer(ctx, texture);
|
|
return 1;
|
|
}
|
|
|
|
scripterreturn_t _scriptTextureDispose(scriptercontext_t *ctx) {
|
|
texture_t *texture = duk_to_pointer(ctx, 0);
|
|
textureDispose(texture);
|
|
free(texture);
|
|
return 0;
|
|
}
|
|
|
|
|
|
void scriptsApiDisplay(scripter_t *s) {
|
|
scripterDefineMethod(s, "primitiveCreate", 0, &_scriptPrimitiveCreate);
|
|
scripterDefineMethod(s, "primitiveInit", 3, &_scriptPrimitiveInit);
|
|
scripterDefineMethod(s, "primitiveDraw", 3, &_scriptPrimitiveDraw);
|
|
scripterDefineMethod(s, "primitiveDispose",1,&_scriptPrimitiveDispose);
|
|
|
|
scripterDefineMethod(s, "quadInit", 10, &_scriptQuadInit);
|
|
|
|
scripterDefineMethod(s, "cameraCreate", 0, &_scriptCameraCreate);
|
|
scripterDefineMethod(s, "cameraLookAt", 7, &_scriptCameraLookAt);
|
|
scripterDefineMethod(s, "cameraLook", 7, &_scriptCameraLook);
|
|
scripterDefineMethod(s, "cameraPerspective", 5, &_scriptCameraPerspective);
|
|
scripterDefineMethod(s, "cameraOrtho", 7, &_scriptCameraOrtho);
|
|
scripterDefineMethod(s, "cameraDispose", 1, &_scriptCameraDispose);
|
|
|
|
scripterDefineMethod(s, "shaderCreate", 0, &_scriptShaderCreate);
|
|
scripterDefineMethod(s, "shaderInit", 3, &_scriptShaderInit);
|
|
scripterDefineMethod(s, "shaderDispose", 1, &_scriptShaderDispose);
|
|
scripterDefineMethod(s, "shaderUse", 1, &_scriptShaderUse);
|
|
scripterDefineMethod(s, "shaderUseTexture", 2, &_scriptShaderUseTexture);
|
|
scripterDefineMethod(s, "shaderUseCamera", 2, &_scriptShaderUseCamera);
|
|
scripterDefineMethod(s, "shaderUsePosition", 7, &_scriptShaderUsePosition);
|
|
scripterDefineMethod(
|
|
s, "shaderUsePositionAndScale", 10, &_scriptShaderUsePositionAndScale
|
|
);
|
|
|
|
scripterDefineMethod(s, "textureCreate", 0, &_scriptTextureCreate);
|
|
scripterDefineMethod(s, "textureDispose", 1, &_scriptTextureDispose);
|
|
} |