static void Camera_get_viewport (LIScrArgs* args) { LIExtCamera* camera; camera = args->self; liscr_args_set_output (args, LISCR_ARGS_OUTPUT_TABLE); liscr_args_seti_float (args, camera->view.viewport[0]); liscr_args_seti_float (args, camera->view.viewport[1]); liscr_args_seti_float (args, camera->view.viewport[2]); liscr_args_seti_float (args, camera->view.viewport[3]); }
static void Sound_get_music_offset (LIScrArgs* args) { #ifndef LI_DISABLE_SOUND LIExtModule* module; module = liscr_script_get_userdata (args->script, LIEXT_SCRIPT_SOUND); if (module->music != NULL) liscr_args_seti_float (args, lisnd_source_get_offset (module->music)); else liscr_args_seti_float (args, 0.0f); #else liscr_args_seti_float (args, 0.0f); #endif }
static void Widget_get_y (LIScrArgs* args) { LIWdgRect rect; liwdg_widget_get_allocation (args->self, &rect); liscr_args_seti_float (args, rect.y); }
static void Animation_get_duration (LIScrArgs* args) { LIMdlAnimation* self; self = args->self; liscr_args_seti_float (args, limdl_animation_get_duration (self)); }
static void FirFilter_get (LIScrArgs* args) { float output; output = liext_fir_filter_get (args->self); liscr_args_seti_float (args, output); }
static void Terrain_cast_sphere (LIScrArgs* args) { float radius; LIExtTerrain* self; LIMatVector src; LIMatVector dst; LIExtTerrainCollision result; /* Get the arguments. */ self = args->self; if (!liscr_args_geti_vector (args, 0, &src)) return; if (!liscr_args_geti_vector (args, 1, &dst)) return; if (!liscr_args_geti_float (args, 2, &radius)) return; if (radius <= LIMAT_EPSILON) return; /* Convert into grid coordinates. */ src.x /= self->grid_size; src.z /= self->grid_size; dst.x /= self->grid_size; dst.z /= self->grid_size; radius /= self->grid_size; /* Cast the sphere. */ if (!liext_terrain_cast_sphere (self, &src, &dst, radius, &result)) return; liscr_args_seti_float (args, result.fraction); }
static void Camera_get_rotation_smoothing (LIScrArgs* args) { float pos; float rot; liext_camera_get_smoothing (args->self, &pos, &rot); liscr_args_seti_float (args, rot); }
static void Terrain_get_stick (LIScrArgs* args) { int grid_x; int grid_z; float y; float ref_y; LIExtTerrainColumn* column; LIExtTerrainStick* stick; /* Get the arguments. */ if (!liscr_args_geti_int (args, 0, &grid_x) || grid_x < 0) return; if (!liscr_args_geti_int (args, 1, &grid_z) || grid_z < 0) return; if (!liscr_args_geti_float (args, 2, &ref_y)) return; /* Get the column. */ column = liext_terrain_get_column (args->self, grid_x, grid_z); if (column == NULL) return; /* Find the stick. */ y = 0.0f; for (stick = column->sticks ; stick != NULL ; stick = stick->next) { if (ref_y < y + stick->height) { liscr_args_seti_float (args, y); liscr_args_seti_float (args, stick->height); liscr_args_seti_int (args, stick->material); return; } y += stick->height; } /* Return the infinite end stick. */ liscr_args_seti_float (args, y); liscr_args_seti_float (args, 1000000.0f); liscr_args_seti_int (args, 0); }
static void Camera_get_projection (LIScrArgs* args) { int i; LIExtCamera* camera; LIMatMatrix matrix; camera = args->self; liext_camera_get_projection (camera, &matrix); liscr_args_set_output (args, LISCR_ARGS_OUTPUT_TABLE); for (i = 0 ; i < 16 ; i++) liscr_args_seti_float (args, matrix.m[i]); }
static void Terrain_cast_ray (LIScrArgs* args) { int grid_x; int grid_z; float fraction; LIMatVector src; LIMatVector dst; LIMatVector point; LIMatVector normal; /* Get the arguments. */ if (!liscr_args_geti_vector (args, 0, &src)) return; if (!liscr_args_geti_vector (args, 1, &dst)) return; if (!liext_terrain_intersect_ray (args->self, &src, &dst, &grid_x, &grid_z, &point, &normal, &fraction)) return; liscr_args_seti_int (args, grid_x); liscr_args_seti_int (args, grid_z); liscr_args_seti_float (args, point.x); liscr_args_seti_float (args, point.y); liscr_args_seti_float (args, point.z); liscr_args_seti_float (args, normal.x); liscr_args_seti_float (args, normal.y); liscr_args_seti_float (args, normal.z); }
static void Heightmap_get_height (LIScrArgs* args) { int clamp = 1; float height; LIMatVector vector; if (!liscr_args_geti_vector (args, 0, &vector)) return; liscr_args_geti_bool (args, 1, &clamp); if (liext_heightmap_get_height (args->self, vector.x, vector.z, clamp, &height)) liscr_args_seti_float (args, height); }
static void Terrain_find_nearest_empty_stick (LIScrArgs* args) { int grid_x; int grid_z; float y; float min_height; /* Get the arguments. */ if (!liscr_args_geti_int (args, 0, &grid_x) || grid_x < 0 || !liscr_args_geti_int (args, 1, &grid_z) || grid_z < 0) { liscr_args_seti_float (args, 1000000000.0f); return; } if (!liscr_args_geti_float (args, 2, &y)) return; if (!liscr_args_geti_float (args, 3, &min_height)) min_height = 0.0f; /* Find the stick. */ y = liext_terrain_find_nearest_empty_stick (args->self, grid_x, grid_z, y, min_height); liscr_args_seti_float (args, y); }
static void Camera_calculate_3rd_person_clipped_distance (LIScrArgs* args) { int group = 0xFFFF; int mask = 0xFFFF; float distance; float radius; float result; LIMatTransform center; if (!liscr_args_geti_vector (args, 0, ¢er.position)) return; if (!liscr_args_geti_quaternion (args, 1, ¢er.rotation)) return; if (!liscr_args_geti_float (args, 2, &distance)) return; if (!liscr_args_geti_float (args, 3, &radius)) radius = 0.0f; liscr_args_geti_int (args, 4, &group); liscr_args_geti_int (args, 5, &mask); result = liext_camera_calculate_3rd_person_clipped_distance ( args->self, ¢er, distance, radius, group, mask); liscr_args_seti_float (args, result); }
static void Camera_get_fov (LIScrArgs* args) { liscr_args_seti_float (args, liext_camera_get_fov (args->self)); }