mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2025-05-11 18:20:47 +00:00
[ruamoko] Allow scenes to be fetched by C code
Need to clean up that part of the API, though.
This commit is contained in:
parent
7b275ebab6
commit
d850285e3f
2 changed files with 17 additions and 2 deletions
|
@ -65,5 +65,6 @@ void RUA_Mersenne_Init (struct progs_s *pr, int secure);
|
||||||
void RUA_Model_Init (struct progs_s *pr, int secure);
|
void RUA_Model_Init (struct progs_s *pr, int secure);
|
||||||
struct model_s *Model_GetModel (progs_t *pr, int handle);
|
struct model_s *Model_GetModel (progs_t *pr, int handle);
|
||||||
void RUA_Scene_Init (struct progs_s *pr, int secure);
|
void RUA_Scene_Init (struct progs_s *pr, int secure);
|
||||||
|
struct scene_s *Scene_GetScene (struct progs_s *pr, pr_ulong_t handle);
|
||||||
|
|
||||||
#endif//__rua_internal_h
|
#endif//__rua_internal_h
|
||||||
|
|
|
@ -180,6 +180,17 @@ bi_Scene_DeleteScene (progs_t *pr, void *_res)
|
||||||
rua_delete_scene (res, scene);
|
rua_delete_scene (res, scene);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
scene_t *
|
||||||
|
Scene_GetScene (progs_t *pr, pr_ulong_t handle)
|
||||||
|
{
|
||||||
|
if (!handle) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
rua_scene_resources_t *res = PR_Resources_Find (pr, "Scene");
|
||||||
|
rua_scene_t *scene = rua_scene_get (res, P_ULONG (pr, 0));
|
||||||
|
return scene->scene;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
bi_Scene_CreateEntity (progs_t *pr, void *_res)
|
bi_Scene_CreateEntity (progs_t *pr, void *_res)
|
||||||
{
|
{
|
||||||
|
@ -221,10 +232,13 @@ bi_Entity_SetModel (progs_t *pr, void *_res)
|
||||||
pr_int_t model_id = P_INT (pr, 1);
|
pr_int_t model_id = P_INT (pr, 1);
|
||||||
entity_t *ent = rua_entity_get (res, ent_id);
|
entity_t *ent = rua_entity_get (res, ent_id);
|
||||||
model_t *model = Model_GetModel (pr, model_id);
|
model_t *model = Model_GetModel (pr, model_id);
|
||||||
|
pr_ulong_t scene_id = ent_id & 0xffffffff;
|
||||||
|
// bad scene caught above
|
||||||
|
rua_scene_t *scene = rua_scene_get (res, scene_id);
|
||||||
|
|
||||||
R_RemoveEfrags (ent);
|
R_RemoveEfrags (ent);
|
||||||
ent->renderer.model = model;
|
ent->renderer.model = model;
|
||||||
R_AddEfrags (&r_data->refdef->worldmodel->brush, ent);//FIXME r_data
|
R_AddEfrags (&scene->scene->worldmodel->brush, ent);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -502,6 +516,6 @@ RUA_Scene_Init (progs_t *pr, int secure)
|
||||||
|
|
||||||
res->pr = pr;
|
res->pr = pr;
|
||||||
|
|
||||||
PR_Resources_Register (pr, "scene", res, bi_scene_clear);
|
PR_Resources_Register (pr, "Scene", res, bi_scene_clear);
|
||||||
PR_RegisterBuiltins (pr, builtins, res);
|
PR_RegisterBuiltins (pr, builtins, res);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue