util_lib
简介
一些工具函数和工具组件的集合
组件接口
FEntry0.gs
被包含FLoadEntries0组件的对象管理的子对象,可选择包含本组件以便获得额外的功能(比如通过update更新后可以自动向管理对象注册自己)
| 函数原型 | 函数作用 |
|---|---|
| string get_entry_id() | 获取用于注册的id |
| void register_myself() | 注册自己 |
| object query_mgr() | 获取自己的管理器对象 |
FLoadEntries0.gs
用于管理子对象的组件
| 函数原型 | 函数作用 |
|---|---|
| void reload() | 重新注册和加载所有接口对象 |
| void clear_all_entry() | 清空并销毁所有已登记的接口对象(保留管理的目录列表) |
| array drop_all_entry() | 清空所有已登记的接口对象和管理目录(执行clear_all_entry) |
| array clear_all_dirs() | 清空本管理器记录的所有管理目录(执行clear_all_entry) |
| void load_all_entry(string path, mixed para = nil, domain d = nil, bool recursive = false) | 加载并且注册指定目录下的所有接口对象 |
| void load_entry(mixed entry_id, object entry_ob) | 注册一个接口对象(添加到本对象的接口对象表中并执行on_entry_registered) |
| object query_entry(mixed entry_id) | 查询一个接口对象 |
| map query_all_entries() | 查询所有接口对象 |
| void remove_entry(mixed entry_id) | 移除一个接口对象(从本对象的接口对象表中移除并执行on_entry_remove) |
util_directory.gs
文件目录相关的一些功能函数集合
| 函数原型 | 函数作用 |
|---|---|
| string get_os_path(string script_path) | 获取操作系统路径 |
| string get_script_path(string os_path) | 获取脚本路径 |
| bool is_same_script_path(string path1, string path2) | 判断两个脚本路径指向的系统路径是否相同 |
| string get_relative_path(string path1, string path2) | 获取两个路径的相对路径 |
| string get_cwd() | 获取当前工作目录 |
| bool move_file(string src_file, string to_file) | 移动文件 |
util_function.gs
function 相关的一些功能函数集合
| 函数原型 | 函数作用 |
|---|---|
| array function.param_info(function func) | 获取函数实例的形参信息 |
util_map_array.gs
map, array 相关的一些功能函数集合
| 函数原型 | 函数作用 |
|---|---|
| int array.search(array arr, function func) | 查找数组中符合条件的第一个元素的索引 |
| array array.distinct(array arr) | 数组去重(直接修改原数组) |
| bool array.deep_compare(array left, array right) | 深度比较两个数组 |
| bool array.deep_contains(array arr, mixed val) | 深度判断数组是否包含指定值 |
| array array.deep_merge(array left, array right, bool replace = true) | 深度合并两个数组(相同位置元素合并) |
| array array.deep_remove(array left, array right) | 从数组1中移除所有被数组2包含的元素 |
| bool map.deep_compare(map left, map right) | 深度比较两个 map |
| map map.deep_absorb(map left, map right, bool replace = true) | 深度合并两个词典 |
| map map.deep_remove(map left, map right) | 深度移除词典1中所有被词典2包含的键值对 |
util_math.gs
一些数学功能函数集合
| 函数原型 | 函数作用 |
|---|---|
| bool is_number(mixed val) | 判断是否为数字(包括整数和浮点数) |
| mixed math.sum(array arr) | 求数组中的元素和(推荐用array.sum) |
| mixed vector3_dot(map a, map b) | 计算向量3D点积 |
| float vec2_magnitude_distance(float x1, float y1, float x2, float y2) | 计算两个二维点之间的距离 |
| float pos2_magnitude_distance(map pos1, map pos2) | 两个坐标点距离的平方 |
| float vec2_distance(float x1, float y1, float x2, float y2) | 两个坐标点距离 |
| float pos2_distance(map pos1, map pos2) | 两个2D坐标点距离 |
| bool pos2_dist_lessthan(map pos1, map pos2, mixed dist) | 两个2D坐标点距离在指定距离内 |
| map vec2_lerp(map pos_begin, map pos_end, float lerp_val) | 二维坐标线性插值 |
| map vec3_lerp(map pos_begin, map pos_end, float lerp_val) | 3维坐标线性插值 |
| map pos3(mixed x, mixed y, mixed z) | 新建一个3D坐标实例 |
| map pos2(mixed x, mixed z) | 新建一个2D坐标实例 |
| int random_one() | 随机生成一个1或-1 |
| float math.lerp(mixed from, mixed to, float val) | 线性插值 |
| float math.random_real(float from, float to) | 随机生成一个区间内的浮点数 |
| float math.random_one() | 随机生成一个(0~1)的浮点数 |
| mixed math.shuffle_select(array arr) | 从数组中随机选择一个元素 |
| float math.boxmuller(float mu = 0, float sigma = 1, int rand_max = 1000000) |