More cleanup
This commit is contained in:
@@ -21,42 +21,6 @@ void entityCameraInit(const entityid_t ent, const componentid_t comp) {
|
||||
cam->perspective.fov = glm_rad(45.0f);
|
||||
}
|
||||
|
||||
float_t entityCameraGetZNear(const entityid_t ent, const componentid_t comp) {
|
||||
entitycamera_t *cam = (entitycamera_t *)componentGetData(
|
||||
ent, comp, COMPONENT_TYPE_CAMERA
|
||||
);
|
||||
return cam->nearClip;
|
||||
}
|
||||
|
||||
void entityCameraSetZNear(
|
||||
const entityid_t ent,
|
||||
const componentid_t comp,
|
||||
const float_t zNear
|
||||
) {
|
||||
entitycamera_t *cam = (entitycamera_t *)componentGetData(
|
||||
ent, comp, COMPONENT_TYPE_CAMERA
|
||||
);
|
||||
cam->nearClip = zNear;
|
||||
}
|
||||
|
||||
float_t entityCameraGetZFar(const entityid_t ent, const componentid_t comp) {
|
||||
entitycamera_t *cam = (entitycamera_t *)componentGetData(
|
||||
ent, comp, COMPONENT_TYPE_CAMERA
|
||||
);
|
||||
return cam->farClip;
|
||||
}
|
||||
|
||||
void entityCameraSetZFar(
|
||||
const entityid_t ent,
|
||||
const componentid_t comp,
|
||||
const float_t zFar
|
||||
) {
|
||||
entitycamera_t *cam = (entitycamera_t *)componentGetData(
|
||||
ent, comp, COMPONENT_TYPE_CAMERA
|
||||
);
|
||||
cam->farClip = zFar;
|
||||
}
|
||||
|
||||
void entityCameraGetProjection(
|
||||
const entityid_t ent,
|
||||
const componentid_t comp,
|
||||
|
||||
@@ -54,50 +54,6 @@ void entityCameraGetProjection(
|
||||
mat4 out
|
||||
);
|
||||
|
||||
/**
|
||||
* Gets the near clip distance of a camera.
|
||||
*
|
||||
* @param ent The entity ID.
|
||||
* @param comp The component ID.
|
||||
* @return The near clip distance.
|
||||
*/
|
||||
float_t entityCameraGetZNear(const entityid_t ent, const componentid_t comp);
|
||||
|
||||
/**
|
||||
* Sets the near clip distance of a camera.
|
||||
*
|
||||
* @param ent The entity ID.
|
||||
* @param comp The component ID.
|
||||
* @param zNear The near clip distance.
|
||||
*/
|
||||
void entityCameraSetZNear(
|
||||
const entityid_t ent,
|
||||
const componentid_t comp,
|
||||
const float_t zNear
|
||||
);
|
||||
|
||||
/**
|
||||
* Gets the far clip distance of a camera.
|
||||
*
|
||||
* @param ent The entity ID.
|
||||
* @param comp The component ID.
|
||||
* @return The far clip distance.
|
||||
*/
|
||||
float_t entityCameraGetZFar(const entityid_t ent, const componentid_t comp);
|
||||
|
||||
/**
|
||||
* Sets the far clip distance of a camera.
|
||||
*
|
||||
* @param ent The entity ID.
|
||||
* @param comp The component ID.
|
||||
* @param zFar The far clip distance.
|
||||
*/
|
||||
void entityCameraSetZFar(
|
||||
const entityid_t ent,
|
||||
const componentid_t comp,
|
||||
const float_t zFar
|
||||
);
|
||||
|
||||
/**
|
||||
* Returns the entity ID of the first active camera, or ENTITY_COUNT_MAX if none.
|
||||
*/
|
||||
|
||||
@@ -52,40 +52,36 @@ moduleBaseFunction(moduleColorSetR) {
|
||||
color_t *color = (color_t*)scriptProtoGetValue(
|
||||
&MODULE_COLOR_PROTO, callInfo->this_value
|
||||
);
|
||||
if(color && argc > 0) {
|
||||
color->r = (colorchannel8_t)jerry_value_as_number(args[0]);
|
||||
}
|
||||
return jerry_undefined();
|
||||
if(!color || argc < 1) return moduleBaseThrow("Expected a number argument");
|
||||
color->r = (colorchannel8_t)jerry_value_as_number(args[0]);
|
||||
return args[0];
|
||||
}
|
||||
|
||||
moduleBaseFunction(moduleColorSetG) {
|
||||
color_t *color = (color_t*)scriptProtoGetValue(
|
||||
&MODULE_COLOR_PROTO, callInfo->this_value
|
||||
);
|
||||
if(color && argc > 0) {
|
||||
color->g = (colorchannel8_t)jerry_value_as_number(args[0]);
|
||||
}
|
||||
return jerry_undefined();
|
||||
if(!color || argc < 1) return moduleBaseThrow("Expected a number argument");
|
||||
color->g = (colorchannel8_t)jerry_value_as_number(args[0]);
|
||||
return args[0];
|
||||
}
|
||||
|
||||
moduleBaseFunction(moduleColorSetB) {
|
||||
color_t *color = (color_t*)scriptProtoGetValue(
|
||||
&MODULE_COLOR_PROTO, callInfo->this_value
|
||||
);
|
||||
if(color && argc > 0) {
|
||||
color->b = (colorchannel8_t)jerry_value_as_number(args[0]);
|
||||
}
|
||||
return jerry_undefined();
|
||||
if(!color || argc < 1) return moduleBaseThrow("Expected a number argument");
|
||||
color->b = (colorchannel8_t)jerry_value_as_number(args[0]);
|
||||
return args[0];
|
||||
}
|
||||
|
||||
moduleBaseFunction(moduleColorSetA) {
|
||||
color_t *color = (color_t*)scriptProtoGetValue(
|
||||
&MODULE_COLOR_PROTO, callInfo->this_value
|
||||
);
|
||||
if(color && argc > 0) {
|
||||
color->a = (colorchannel8_t)jerry_value_as_number(args[0]);
|
||||
}
|
||||
return jerry_undefined();
|
||||
if(!color || argc < 1) return moduleBaseThrow("Expected a number argument");
|
||||
color->a = (colorchannel8_t)jerry_value_as_number(args[0]);
|
||||
return args[0];
|
||||
}
|
||||
|
||||
moduleBaseFunction(moduleColorToString) {
|
||||
|
||||
@@ -14,44 +14,194 @@
|
||||
|
||||
static scriptproto_t MODULE_ENTITY_CAMERA_PROTO;
|
||||
|
||||
// Getters
|
||||
moduleBaseFunction(moduleEntityCameraGetZNear) {
|
||||
/**
|
||||
* Shorthand function to get the camera component data from "this".
|
||||
*
|
||||
* @param callInfo The call info of the current function call.
|
||||
* @return The camera component data, or undefined if invalid.
|
||||
*/
|
||||
static entitycamera_t * moduleEntityCameraGet(
|
||||
const jerry_call_info_t *callInfo
|
||||
) {
|
||||
componenthandle_t *h = scriptProtoGetValue(
|
||||
&MODULE_ENTITY_CAMERA_PROTO, callInfo->this_value
|
||||
);
|
||||
if(!h) return jerry_undefined();
|
||||
return jerry_number((double)entityCameraGetZNear(h->eid, h->cid));
|
||||
if(!h) return NULL;
|
||||
|
||||
entitycamera_t *cam = (entitycamera_t*)componentGetData(
|
||||
h->eid, h->cid, COMPONENT_TYPE_CAMERA
|
||||
);
|
||||
if(!cam) return NULL;
|
||||
|
||||
return cam;
|
||||
}
|
||||
|
||||
|
||||
// Getters
|
||||
moduleBaseFunction(moduleEntityCameraGetZNear) {
|
||||
entitycamera_t *cam = moduleEntityCameraGet(callInfo);
|
||||
if(!cam) return jerry_undefined();
|
||||
return jerry_number(cam->nearClip);
|
||||
}
|
||||
|
||||
moduleBaseFunction(moduleEntityCameraGetZFar) {
|
||||
componenthandle_t *h = scriptProtoGetValue(
|
||||
&MODULE_ENTITY_CAMERA_PROTO, callInfo->this_value
|
||||
);
|
||||
if(!h) return jerry_undefined();
|
||||
return jerry_number((double)entityCameraGetZFar(h->eid, h->cid));
|
||||
entitycamera_t *cam = moduleEntityCameraGet(callInfo);
|
||||
if(!cam) return jerry_undefined();
|
||||
return jerry_number(cam->farClip);
|
||||
}
|
||||
|
||||
moduleBaseFunction(moduleEntityCameraGetOrthoTop) {
|
||||
entitycamera_t *cam = moduleEntityCameraGet(callInfo);
|
||||
if(!cam || cam->projType != ENTITY_CAMERA_PROJECTION_TYPE_ORTHOGRAPHIC) {
|
||||
return jerry_undefined();
|
||||
}
|
||||
return jerry_number(cam->orthographic.top);
|
||||
}
|
||||
|
||||
moduleBaseFunction(moduleEntityCameraGetOrthoBottom) {
|
||||
entitycamera_t *cam = moduleEntityCameraGet(callInfo);
|
||||
if(!cam || cam->projType != ENTITY_CAMERA_PROJECTION_TYPE_ORTHOGRAPHIC) {
|
||||
return jerry_undefined();
|
||||
}
|
||||
return jerry_number(cam->orthographic.bottom);
|
||||
}
|
||||
|
||||
moduleBaseFunction(moduleEntityCameraGetOrthoLeft) {
|
||||
entitycamera_t *cam = moduleEntityCameraGet(callInfo);
|
||||
if(!cam || cam->projType != ENTITY_CAMERA_PROJECTION_TYPE_ORTHOGRAPHIC) {
|
||||
return jerry_undefined();
|
||||
}
|
||||
return jerry_number(cam->orthographic.left);
|
||||
}
|
||||
|
||||
moduleBaseFunction(moduleEntityCameraGetOrthoRight) {
|
||||
entitycamera_t *cam = moduleEntityCameraGet(callInfo);
|
||||
if(!cam || cam->projType != ENTITY_CAMERA_PROJECTION_TYPE_ORTHOGRAPHIC) {
|
||||
return jerry_undefined();
|
||||
}
|
||||
return jerry_number(cam->orthographic.right);
|
||||
}
|
||||
|
||||
moduleBaseFunction(moduleEntityCameraGetFov) {
|
||||
entitycamera_t *cam = moduleEntityCameraGet(callInfo);
|
||||
if(!cam || (
|
||||
cam->projType != ENTITY_CAMERA_PROJECTION_TYPE_PERSPECTIVE &&
|
||||
cam->projType != ENTITY_CAMERA_PROJECTION_TYPE_PERSPECTIVE_FLIPPED
|
||||
)) {
|
||||
return jerry_undefined();
|
||||
}
|
||||
return jerry_number(cam->perspective.fov);
|
||||
}
|
||||
|
||||
moduleBaseFunction(moduleEntityCameraGetProjectionType) {
|
||||
entitycamera_t *cam = moduleEntityCameraGet(callInfo);
|
||||
if(!cam) return jerry_undefined();
|
||||
return jerry_number(cam->projType);
|
||||
}
|
||||
|
||||
|
||||
// Setters
|
||||
moduleBaseFunction(moduleEntityCameraSetZNear) {
|
||||
moduleBaseRequireArgs(1); moduleBaseRequireNumber(0);
|
||||
componenthandle_t *h = scriptProtoGetValue(
|
||||
&MODULE_ENTITY_CAMERA_PROTO, callInfo->this_value
|
||||
);
|
||||
if(!h) return jerry_undefined();
|
||||
entityCameraSetZNear(h->eid, h->cid, (float_t)jerry_value_as_number(args[0]));
|
||||
return jerry_undefined();
|
||||
if(argc < 1 || !jerry_value_is_number(args[0])) {
|
||||
return moduleBaseThrow("Expected a number");
|
||||
}
|
||||
entitycamera_t *cam = moduleEntityCameraGet(callInfo);
|
||||
if(!cam) return jerry_undefined();
|
||||
cam->nearClip = (float_t)jerry_value_as_number(args[0]);
|
||||
return args[0];
|
||||
}
|
||||
|
||||
moduleBaseFunction(moduleEntityCameraSetZFar) {
|
||||
moduleBaseRequireArgs(1); moduleBaseRequireNumber(0);
|
||||
componenthandle_t *h = scriptProtoGetValue(
|
||||
&MODULE_ENTITY_CAMERA_PROTO, callInfo->this_value
|
||||
);
|
||||
if(!h) return jerry_undefined();
|
||||
entityCameraSetZFar(h->eid, h->cid, (float_t)jerry_value_as_number(args[0]));
|
||||
return jerry_undefined();
|
||||
if(argc < 1 || !jerry_value_is_number(args[0])) {
|
||||
return moduleBaseThrow("Expected a number");
|
||||
}
|
||||
entitycamera_t *cam = moduleEntityCameraGet(callInfo);
|
||||
if(!cam) return jerry_undefined();
|
||||
cam->farClip = (float_t)jerry_value_as_number(args[0]);
|
||||
return args[0];
|
||||
}
|
||||
|
||||
moduleBaseFunction(moduleEntityCameraSetOrthoTop) {
|
||||
if(argc < 1 || !jerry_value_is_number(args[0])) {
|
||||
return moduleBaseThrow("Expected a number");
|
||||
}
|
||||
entitycamera_t *cam = moduleEntityCameraGet(callInfo);
|
||||
if(!cam || cam->projType != ENTITY_CAMERA_PROJECTION_TYPE_ORTHOGRAPHIC) {
|
||||
return jerry_undefined();
|
||||
}
|
||||
cam->orthographic.top = (float_t)jerry_value_as_number(args[0]);
|
||||
return args[0];
|
||||
}
|
||||
|
||||
moduleBaseFunction(moduleEntityCameraSetOrthoBottom) {
|
||||
if(argc < 1 || !jerry_value_is_number(args[0])) {
|
||||
return moduleBaseThrow("Expected a number");
|
||||
}
|
||||
entitycamera_t *cam = moduleEntityCameraGet(callInfo);
|
||||
if(!cam || cam->projType != ENTITY_CAMERA_PROJECTION_TYPE_ORTHOGRAPHIC) {
|
||||
return jerry_undefined();
|
||||
}
|
||||
cam->orthographic.bottom = (float_t)jerry_value_as_number(args[0]);
|
||||
return args[0];
|
||||
}
|
||||
|
||||
moduleBaseFunction(moduleEntityCameraSetOrthoLeft) {
|
||||
if(argc < 1 || !jerry_value_is_number(args[0])) {
|
||||
return moduleBaseThrow("Expected a number");
|
||||
}
|
||||
entitycamera_t *cam = moduleEntityCameraGet(callInfo);
|
||||
if(!cam || cam->projType != ENTITY_CAMERA_PROJECTION_TYPE_ORTHOGRAPHIC) {
|
||||
return jerry_undefined();
|
||||
}
|
||||
cam->orthographic.left = (float_t)jerry_value_as_number(args[0]);
|
||||
return args[0];
|
||||
}
|
||||
|
||||
moduleBaseFunction(moduleEntityCameraSetOrthoRight) {
|
||||
if(argc < 1 || !jerry_value_is_number(args[0])) {
|
||||
return moduleBaseThrow("Expected a number");
|
||||
}
|
||||
entitycamera_t *cam = moduleEntityCameraGet(callInfo);
|
||||
if(!cam || cam->projType != ENTITY_CAMERA_PROJECTION_TYPE_ORTHOGRAPHIC) {
|
||||
return jerry_undefined();
|
||||
}
|
||||
cam->orthographic.right = (float_t)jerry_value_as_number(args[0]);
|
||||
return args[0];
|
||||
}
|
||||
|
||||
moduleBaseFunction(moduleEntityCameraSetFov) {
|
||||
if(argc < 1 || !jerry_value_is_number(args[0])) {
|
||||
return moduleBaseThrow("Expected a number");
|
||||
}
|
||||
entitycamera_t *cam = moduleEntityCameraGet(callInfo);
|
||||
if(!cam || (
|
||||
cam->projType != ENTITY_CAMERA_PROJECTION_TYPE_PERSPECTIVE &&
|
||||
cam->projType != ENTITY_CAMERA_PROJECTION_TYPE_PERSPECTIVE_FLIPPED
|
||||
)) {
|
||||
return jerry_undefined();
|
||||
}
|
||||
cam->perspective.fov = (float_t)jerry_value_as_number(args[0]);
|
||||
return args[0];
|
||||
}
|
||||
|
||||
moduleBaseFunction(moduleEntityCameraSetProjectionType) {
|
||||
if(argc < 1 || !jerry_value_is_number(args[0])) {
|
||||
return moduleBaseThrow("Expected a number");
|
||||
}
|
||||
entitycamera_t *cam = moduleEntityCameraGet(callInfo);
|
||||
if(!cam) return jerry_undefined();
|
||||
int32_t projType = (int32_t)jerry_value_as_number(args[0]);
|
||||
if(
|
||||
projType < ENTITY_CAMERA_PROJECTION_TYPE_PERSPECTIVE ||
|
||||
projType > ENTITY_CAMERA_PROJECTION_TYPE_ORTHOGRAPHIC
|
||||
) {
|
||||
return moduleBaseThrow("Invalid projection type");
|
||||
}
|
||||
cam->projType = (entitycameraprojectiontype_t)projType;
|
||||
return args[0];
|
||||
}
|
||||
|
||||
|
||||
// Adder for this component.
|
||||
moduleBaseFunction(moduleEntityCameraAdd) {
|
||||
moduleBaseRequireArgs(1); moduleBaseRequireNumber(0);
|
||||
@@ -61,6 +211,7 @@ moduleBaseFunction(moduleEntityCameraAdd) {
|
||||
return scriptProtoCreateValue(&MODULE_ENTITY_CAMERA_PROTO, &h);
|
||||
}
|
||||
|
||||
|
||||
static void moduleEntityCAMERA(void) {
|
||||
scriptProtoInit(
|
||||
&MODULE_ENTITY_CAMERA_PROTO, NULL, sizeof(componenthandle_t), NULL
|
||||
@@ -74,4 +225,37 @@ static void moduleEntityCAMERA(void) {
|
||||
&MODULE_ENTITY_CAMERA_PROTO, "zFar",
|
||||
moduleEntityCameraGetZFar, moduleEntityCameraSetZFar
|
||||
);
|
||||
scriptProtoDefineProp(
|
||||
&MODULE_ENTITY_CAMERA_PROTO, "orthoTop",
|
||||
moduleEntityCameraGetOrthoTop, moduleEntityCameraSetOrthoTop
|
||||
);
|
||||
scriptProtoDefineProp(
|
||||
&MODULE_ENTITY_CAMERA_PROTO, "orthoBottom",
|
||||
moduleEntityCameraGetOrthoBottom, moduleEntityCameraSetOrthoBottom
|
||||
);
|
||||
scriptProtoDefineProp(
|
||||
&MODULE_ENTITY_CAMERA_PROTO, "orthoLeft",
|
||||
moduleEntityCameraGetOrthoLeft, moduleEntityCameraSetOrthoLeft
|
||||
);
|
||||
scriptProtoDefineProp(
|
||||
&MODULE_ENTITY_CAMERA_PROTO, "orthoRight",
|
||||
moduleEntityCameraGetOrthoRight, moduleEntityCameraSetOrthoRight
|
||||
);
|
||||
scriptProtoDefineProp(
|
||||
&MODULE_ENTITY_CAMERA_PROTO, "fov",
|
||||
moduleEntityCameraGetFov, moduleEntityCameraSetFov
|
||||
);
|
||||
scriptProtoDefineProp(
|
||||
&MODULE_ENTITY_CAMERA_PROTO, "projectionType",
|
||||
moduleEntityCameraGetProjectionType, moduleEntityCameraSetProjectionType
|
||||
);
|
||||
|
||||
char_t buffer[64];
|
||||
snprintf(
|
||||
buffer, sizeof(buffer),
|
||||
"%s = %d;\n%s = %d;\n",
|
||||
"CAMERA_TYPE_ORTHOGRAPHIC", ENTITY_CAMERA_PROJECTION_TYPE_ORTHOGRAPHIC,
|
||||
"CAMERA_TYPE_PERSPECTIVE", ENTITY_CAMERA_PROJECTION_TYPE_PERSPECTIVE
|
||||
);
|
||||
moduleBaseEval(buffer);
|
||||
}
|
||||
|
||||
@@ -24,6 +24,13 @@ typedef struct {
|
||||
static scriptproto_t MODULE_ENTITY_PROTO;
|
||||
|
||||
// Getters
|
||||
moduleBaseFunction(moduleEntityGetId) {
|
||||
entityscript_t *inst = (entityscript_t*)scriptProtoGetValue(
|
||||
&MODULE_ENTITY_PROTO, callInfo->this_value
|
||||
);
|
||||
if(!inst) return jerry_undefined();
|
||||
return jerry_number(inst->id);
|
||||
}
|
||||
|
||||
// Getter defined for each component type
|
||||
static jerry_value_t moduleEntityGetComponent(
|
||||
@@ -127,6 +134,11 @@ static void moduleEntity(void) {
|
||||
&MODULE_ENTITY_PROTO, "dispose", moduleEntityDisposeMethod
|
||||
);
|
||||
|
||||
// Entity props
|
||||
scriptProtoDefineProp(
|
||||
&MODULE_ENTITY_PROTO, "id", moduleEntityGetId, NULL
|
||||
);
|
||||
|
||||
// Init component type modules.
|
||||
char_t buffer[64];
|
||||
|
||||
|
||||
Reference in New Issue
Block a user