luce bree

This commit is contained in:
2026-05-06 20:24:16 -05:00
parent 3232a14d1d
commit 7301d2ad76
3 changed files with 19 additions and 44 deletions
@@ -7,10 +7,10 @@
#pragma once
#include "script/module/modulebase.h"
#include "script/module/display/modulecolor.h"
#include "script/scriptproto.h"
#include "entity/entity.h"
#include "entity/component/display/entitymaterial.h"
#include "display/color.h"
#include "moduleentityposition.h"
static scriptproto_t MODULE_ENTITY_MATERIAL_PROTO;
@@ -27,52 +27,30 @@ static entitymaterial_t * moduleEntityMaterialGet(
);
}
moduleBaseFunction(moduleEntityMaterialGetColor) {
entitymaterial_t *mat = moduleEntityMaterialGet(callInfo);
if(!mat) return jerry_undefined();
return moduleColorMakeObject(mat->material.unlit.color);
}
moduleBaseFunction(moduleEntityMaterialSetColor) {
if(argc < 1) return moduleBaseThrow("Expected at least 1 argument");
if(!jerry_value_is_object(args[0])) {
return moduleBaseThrow("expected color object");
if(argc < 1 || !jerry_value_is_object(args[0])) {
return moduleBaseThrow("Material.color: expected color object");
}
color_t *color = (color_t*)scriptProtoGetValue(&MODULE_COLOR_PROTO, args[0]);
if(!color) {
return moduleBaseThrow("Material.color: expected valid color object");
}
entitymaterial_t *mat = moduleEntityMaterialGet(callInfo);
if(!mat) return jerry_undefined();
jerry_value_t key;
jerry_value_t v;
color_t col;
key = jerry_string_sz("r");
v = jerry_object_get(args[0], key);
jerry_value_free(key);
col.r = (colorchannel8_t)jerry_value_as_number(v);
jerry_value_free(v);
key = jerry_string_sz("g");
v = jerry_object_get(args[0], key);
jerry_value_free(key);
col.g = (colorchannel8_t)jerry_value_as_number(v);
jerry_value_free(v);
key = jerry_string_sz("b");
v = jerry_object_get(args[0], key);
jerry_value_free(key);
col.b = (colorchannel8_t)jerry_value_as_number(v);
jerry_value_free(v);
key = jerry_string_sz("a");
v = jerry_object_get(args[0], key);
jerry_value_free(key);
col.a = (colorchannel8_t)jerry_value_as_number(v);
jerry_value_free(v);
mat->material.unlit.color = col;
memoryCopy(&mat->material.unlit.color, color, sizeof(color_t));
return jerry_undefined();
}
moduleBaseFunction(moduleEntityMaterialAdd) {
if(argc < 1) {
if(argc < 1 || !jerry_value_is_number(args[0])) {
return moduleBaseThrow("Expected at least 1 argument");
}
moduleBaseRequireNumber(0);
entityid_t id = (entityid_t)jerry_value_as_number(args[0]);
componentid_t comp = entityAddComponent(id, COMPONENT_TYPE_MATERIAL);
componenthandle_t h = { .eid = id, .cid = comp };
@@ -87,9 +65,8 @@ static void moduleEntityMATERIAL(void) {
NULL
);
scriptProtoDefineFunc(
&MODULE_ENTITY_MATERIAL_PROTO,
"setColor",
moduleEntityMaterialSetColor
scriptProtoDefineProp(
&MODULE_ENTITY_MATERIAL_PROTO, "color",
moduleEntityMaterialGetColor, moduleEntityMaterialSetColor
);
}
@@ -36,14 +36,12 @@ moduleBaseFunction(moduleEntityMeshSetMesh) {
entitymesh_t *comp = moduleEntityMeshGet(callInfo);
if(!comp) return jerry_undefined();
// User-created Mesh JS object (meshscript_t)
meshscript_t *ms = moduleMeshFrom(args[0]);
if(ms) {
comp->mesh = &ms->mesh;
return jerry_undefined();
}
// Engine-owned default mesh (Mesh.DEFAULT_CUBE etc.) — raw mesh_t*
mesh_t *raw = (mesh_t*)moduleBaseUnwrapPointer(args[0]);
if(raw) {
comp->mesh = raw;
@@ -52,7 +52,7 @@ moduleBaseFunction(moduleEntityPhysicsGetOnGround) {
moduleBaseFunction(moduleEntityPhysicsGetBodyType) {
entityphysics_t *phys = moduleEntityPhysicsGet(callInfo);
if(!phys) return jerry_undefined();
return jerry_number((double)phys->type);
return jerry_number(phys->type);
}
moduleBaseFunction(moduleEntityPhysicsSetBodyType) {