ARNode
场景中物体的节点类。
Public methods | |
---|---|
ARNode | is_empty_node 判断节点是否为空 |
ARNode | get_sub_node_by_name 获取该名称的子节点 |
ARNode | sub_node_with_name 获取该名称的子节点 |
ARNode | replace_texture 更换节点对应材质使用的texture |
ARNode | get_texture_id 获取节点的材质id |
ARNode | update_webview_texture 更新webview的材质 |
ARNode | set_event_handler 设置手势交互事件处理 |
ARNode | set_position 设置节点位置 |
ARNode | set_scale 设置节点缩放 |
ARNode | set_rotation 设置节点旋转 |
ARNode | set_euler_angles 设置节点旋转 |
ARNode | set_visible 设置节点可见 |
ARNode | set_touchable 设置节点是否可以点击 |
ARNode | get_position 获取节点位置 |
ARNode | get_scale 获取节点缩放值 |
ARNode | get_world_scale 获取节点在世界坐标系中缩放信息 |
ARNode | get_world_position 获取节点在世界坐标系中坐标信息 |
ARNode | set_flag 设置节点的属性 |
ARNode | set_light_direction 设置灯光的方向 |
ARNode | set_light_intensity 设置灯光的强度 |
ARNode | set_material_property 设置节点的材质属性 |
ARNode | set_material_vector_property 设置节点的材质属性 |
ARNode | get_visible 获取节点可见状态 |
ARNode | get_touchable 获取节点是否可点击状态 |
ARNode | play_frame_animation 播放帧动画,在Json配置中指定帧位置 |
ARNode | set_hud_position 修改hud节点位置 |
ARNode | set_rotate_with_world_axis 设置节点旋转所绕轴 |
ARNode | set_rotate_angle_limit 设置节点关于世界坐标系的旋转角度限制 |
ARNode | add_sub_node 为节点添加子节点 |
ARNode | remove_sub_node 移除指定名称的子节点 |
ARNode | parent_node 获取节点对应的父节点的指针 |
ARNode | reset_transform 重置节点相对父节点的transform矩阵 |
ARNode | get_bounding_box 获取当前节点的AABB包围盒 |
ARNode | set_interaction_event_handler 设置节点的交互响应回调 |
ARNode | set_update_handler 设置节点每帧渲染update()调用之前的回调 |
ARNode | pin_to_node将一个HUD节点绑定在一个非HUD节点上,通常用于引导Tips等 |
ARNode | unpin 解除绑定,与pin_to_node相对 |
ARNode | create_physics_body 为该节点创建一个物理碰撞体 |
ARNode | get_physics_body 获取该节点的物理碰撞体 |
ARNode | get_media_controller 获取节点对应的媒体播放控制器对象 |
ARNode | get_animation_controller 获取节点对应的动画播放控制器对象 |
ARNode | description 获取当前节点相关的属性信息 |
ARNode | Key-Value Coding support 在脚本中设置节点属性的方法支持KVC设置 |
ARNode | Key-Value Observing 在脚本中获取节点属性的方法支持KVO设置 |
is_empty_node
API起始版本:190
bool is_empty_node();
判断节点是否为空
sample:
local node = get_node_by_name(nodename)
local is_empty = node:is_empty_node()
get_sub_node_by_name
API起始版本:190
ARNode& get_sub_node_by_name(string& name);
获取该名称的子节点
Parameter
- string | name : 要获取的子节点名称
return
- ARNode : 返回子节点对象(不为空)
sample:
local node = get_sub_node_by_name(nodename)
sub_node_with_name
API起始版本:190
ARNode* sub_node_with_name(string& name);
获取该名称的子节点
Parameter
- string | name : 要获取的子节点名称
return
- ARNode : 返回子节点对象
replace_texture
API起始版本:190
void replace_texture(string &texture_dir,string &texture_name);
更换节点对应材质使用的texture
Parameter
- string | texture_dir : texture的相对路径
- string | texture_name : texture在shader中名字
get_texture_id
API起始版本:190
int get_texture_id(string &texture_name);
获取节点的材质id
Parameter
- string | texture_name : texture在shader中名字
update_webview_texture
API起始版本:190
bool update_webview_texture(int update_id);
更新webview的材质
Parameter
- int | update_id : 材质的id
set_event_handler
API起始版本:190
void set_event_handler(int event_type, int handler_id);
设置手势交互事件处理
Parameter
- int | event_type : 手势交互事件类型。0:click,1:long-press,2:scroll,4:pinch,5:unpinch, 100: node updated,1-5暂不支持
- int | handler_id : 回调函数id
sample:
local handler = lua_handler:register_handle("on_click")
local node = current_scene:get_node_by_name("node_name")
node:set_event_handler(0, handler)
--点击事件
function on_click()
io.write("on click")
end
set_position(float x, float y, float z)
API起始版本:190
设置节点位置
Parameter
- float | x y z : 三轴坐标
sample:
local node = current_scene:get_node_by_name("savage")
node:set_position(1.0,1.0,1.0)
set_scale(float x, float y, float z)
API起始版本:190
设置节点缩放
Parameter
- float | x y z : 三轴方向缩放
sample:
local node = current_scene:get_node_by_name("savage")
node:set_scale(0.5,0.5,0.5)
set_rotation(float x, float y, float z, float w)
API起始版本:190
设置节点旋转
Parameter
- float | x y z : 三轴方向
- float | w : 旋转角度
set_euler_angles(float x, float y, float z)
API起始版本:190
设定节点欧拉角,按照节点全局坐标系xyz的顺序设定
Parameter
- float | x y z :绕三轴方向旋转欧拉角
set_visible(bool visible)
API起始版本:190
设置节点是否可见
Parameter
- bool | visible : true or false
set_touchable(bool touchable)
API起始版本:190
设置节点是否可以点击
Parameter
- bool | touchable : true可以点击,false不可点击
get_position
API起始版本:190
string get_position();
获取节点位置
return
- string : 返回节点位置,值为字符串类型,分别对应x、y、z的坐标值
sample:
local node = current_scene:get_node_by_name("savage")
local position = node:get_position()
get_scale
API起始版本:190
string get_scale();
获取节点缩放值
return
- string : 返回节点缩放值,值为字符串类型,分别对应x、y、z方向的放大倍数
sample:
local node = current_scene:get_node_by_name("savage")
local scale = node:get_scale()
get_world_scale
API起始版本:190
string get_world_scale();
获取节点在世界坐标系中缩放信息
return
- string : 返回值为字符串类型, "x,y,z"分别对应x、y、z方向
get_world_position
API起始版本:190
string get_world_position();
获取节点在世界坐标系中坐标信息。
return
- string : 返回值为字符串类型,"x,y,z"分别对应x、y、z方向
set_flag
API起始版本:190
void set_flag(int type, bool value);
设置节点的属性
Parameter
- int | type : 0:visible,1:transparent,2:touchable,3:select, 4:local_rotation,5: local_translation, 6: local_scale
- bool | value : true|false
set_light_direction(float x, float y, float z)
API起始版本:190
设置灯光的方向
Parameter
- float | x y z : 灯的方向在x、y、z轴的分量
set_light_intensity(float intensity)
API起始版本:190
设置灯光的强度
Parameter
- float | intensity : 灯光的强度
sample:
light:set_light_intensity(0.8)
set_material_property(string &key, float value)
API起始版本:190
设置节点的材质属性。会影响使用这个材质的所有节点
Parameter
string | key : 属性的名称
[roughness|metalness|clearCoat|clearCoatRoughness|reflectivity|refractionRatio|emissiveIntensity|shininess|opacity|aoMapIntensity|lightMapIntensity|envMapIntensity|displacementScale|displacementBias |bumpScale]
- float | value : 属性的值
sample:
node:set_material_property("roughness", 0.8)
set_material_vector_property
API起始版本:190
void set_material_vector_property(string &key, string value);
设置节点的材质属性。会影响使用这个材质的所有节点
Parameter
- string | key : 属性的名称[offsetRepeat|normalScale|diffuse|specular|emissive]
- float | value : 属性的值
sample:
node:set_material_vector_property("offsetRepeat", "0,0,1,1")
get_visible
API起始版本:190
bool get_visible();
获取节点可见状态
return
- bool : 返回节点是否可见属性,true可见,false不可见
sample:
local node = current_scene:get_node_by_name("savage")
local visible = node:get_visible()
io.write("node: savage visible:" .. visible)
get_touchable
API起始版本:190
bool get_touchable();
获取节点是否可点击状态
return
- bool : true可点击,false不可点击
sample:
local node = current_scene:get_node_by_name("savage")
local touchable = node:get_touchable()
io.write("node: savage visible:" .. touchable)
play_frame_animation
API起始版本:190
unsigned int play_frame_animation(int repeat_count = 0, float delay = 0);
播放帧动画,在Json配置中指定帧位置
Parameter
- int | repeat_count : 重复次数
- float | delay : 延迟时间,单位毫秒
return
- int : 返回播放动画动作的id值,通过此值可以绑定播放完成后的回调
set_hud_position
API起始版本:190
void set_hud_position(float pos_left, float pos_top, bool relative = true);
修改hud节点位置
Parameter
- float | pos_left : hud节点的x
- float | pos_top : hud节点的y
- bool | relative : 是否相对位置
set_rotate_with_world_axis
API起始版本:190
void set_rotate_with_world_axis(int world_axis);
设置节点旋转所绕轴。不开启热区时,仅配置场景根节点生效;开启热区时,配置场景中子节点生效
Parameter
- int | world_axis : 世界坐标系的轴:-1-全自由度旋转、0-绕x轴、1-绕y轴、2-绕z轴
set_rotate_angle_limit
API起始版本:190
void set_rotate_angle_limit(int world_axis, float min_angle, float max_angle);
设置节点关于世界坐标系的旋转角度限制。不开启热区时,仅配置场景根节点生效;开启热区时,配置场景中子节点生效
Parameter
- int | world_axis : 世界坐标系的轴:0-x轴、1-y轴、2-z轴
- float | min_angle : 对应轴上的最小旋转角度(单位:°),有效范围[-180,0]
- float | max_angle : 对应轴上的最小旋转角度(单位:°),有效范围[0,180]
add_sub_node
API起始版本:190
void add_sub_node(ARNode& node);
为节点添加子节点
Parameter
- ARNode |node : 子节点的对象
sample:
local new_node = scene:clone_node("node", "clone1")
node:add_sub_node(new_node)
remove_sub_node
API起始版本:190
void remove_sub_node(string& name);
移除指定名称的子节点,对应的子节点不会被销毁,只是从场景树中移除
Parameter
- ARNode |stiring : 要移除的子节点的名称
sample:
scene:remove_sub_node("(clone1)node")
parent_node
API起始版本:190
ARNode* parent_node();
获取节点对应的父节点的指针,如果对一个节点的父节点不存在,将返回nil
Return
- ARNode* : 节点对应的父节点的指针
sample:
local parent = node:parent_node()
io.write(parent:description())
reset_transform
API起始版本:190
void reset_transform();
重置节点相对父节点的transform矩阵
sample:
node:reset_transform()
get_bounding_box
API起始版本:190
BoundingBox get_bounding_box();
获取当前节点的AABB包围盒
Return
- BoundingBox : 一个表示AABB包围盒的数据对象
sample:
camera = scene:get_active_camera()
local bounding_box = node1:get_bounding_box()
local visible = camera:is_visible_in_frustum(bounding_box)
io.write("is node1 visible in the frusum now? "..tostring(visible))
set_interaction_event_handler
API起始版本:190
void set_interaction_event_handler(string &event_name, ARLuaFunction handler);
设置节点的交互响应回调
Parameter
- string |event_name : 交互事件名称,可用的交互事件名称如下表
- LUA_FUNCTION | handler : 一个Lua原生的Function,带一个参数,用作对应的交互响应的回调
event_name | description |
---|---|
"click" | 节点被点中 |
" long_press" | 节点被长按 |
" button_state_changed" | 按钮状态发生变化 |
sample:
function on_interaction(event_name)
io.write("event"..event_name.."triggered")
end
node:set_interaction_event_handler(on_interaction)
set_update_handler
API起始版本:190
void set_update_handler(ARLuaFunction handler);
设置节点每帧渲染update()调用之前的回调
Parameter
- LUA_FUNCTION | handler : 一个Lua原生的Function,将在节点每次渲染update前被调用
sample code:
function on_update()
ARLOG("before node:update()")
end
node:set_update_handler(on_update)
pin_to_node
API起始版本:190
void pin_to_node(ARNode &non_hud_node, ARVec3 offset, ARVec3 rotation_align_vec);
将一个HUD节点绑定在一个非HUD节点上,通常用于引导Tips等
Parameter
- ARNode | non_hud_node : 一个非HUD节点,作为将要绑定到的节点
- ARVec3 | offset : 相对x、 y、 z三个坐标轴的偏移量,用于调整HUD节点和非HUD节点之间的相对位置
- ARVec3 |rotation_align_vec : 一个三维向量,用于对齐HUD节点和非HUD节点的旋转,HUD的y坐标将和此向量在屏幕上的投影保持平行
unpin
API起始版本:190
void unpin();
解除绑定,与pin_to_node相对
sample:
local hud_node = scene:get_node_by_name("hud_tip")
local node3d = scene:get_node_by_name("cube")
local offset = ARVec3:new_local(0, 0, 0)
lcoal rotation_align = ARVec3:new_local(0, 1, 0)
hud_node:pin_to_node(node3d, offset, |rotation_align)
---------------------------------------------------------------
hud_node:unpin()
create_physics_body
API起始版本:190
void create_physics_body(float mass, float restitution, float friction, string body_type, string shape_type, float shape_scale = 1.0)
为该节点创建一个物理碰撞体
Parameters
- mass | float : 物体的质量
- restitution | float : 弹性系数
- friction | float : 摩擦系数
- body_type | string : 碰撞体类型,包括:dynamic、kinematic、static
- shape_type | string : 碰撞体形状,包括:box、sphere、capsule、cylinder、cone、mesh
- shape_scale | float : 形状放缩系数
Returns
- void
sample:
node:create_physics_body(0.0, 0.5, 0.3,"kinematic", "box");
get_physics_body
API起始版本:190
ARPhysicsBody& get_physics_body()
获取该节点的物理碰撞体
(调用这个接口时必须保证已经调用了create_physics_body接口, 不然程序会退出!!!)
Parameters
- 无
Returns
- ARPhysicsBody& : 返回该节点的物理碰撞体
sample:
node:create_physics_body(10, 0.5, 0.5,"dynamic", "box")
local physics_body = node:get_physics_body()
get_media_controller
API起始版本:190
ARMediaController & get_media_controller();
获取节点对应的媒体播放控制器对象
Return
- ARMediaController : 返回当前节点的媒体播放控制器对象。
get_animation_controller
API起始版本:190
ARAnimationController & get_animation_controller();
获取节点对应的动画播放控制器对象
Return
- ARAnimationController : 返回当前节点的动画控制器对象。
description
API起始版本:190
string description()
获取当前节点相关的属性信息
Return
- string : 当前节点的调试信息。
Key-Value Coding support
API起始版本:190
set_property
void set_property_int(string &key, int value); void set_property_bool(string &key, bool value); void set_property_float(string &key, float value); void set_property_string(string &key, string value); void set_property_vec2(string &key, ARVec2 value); void set_property_vec3(string &key, ARVec3 value); void set_property_vec4(string &key, ARVec4 value); void set_property_mat44(string &key, ARMat44 value); void set_property_quat(string &key, ARQuat value); void set_property_boundingbox(string &key, BoundingBox value);
通过给定的Key和Value设置当前节点对应Key和类型的属性的值
sample:
node:set_property_bool("key", value)
node:set_property_int("key", value)
node:set_property_float("key", value)
node:set_property_string("key", value)
get_property
int get_property_int(string &key); bool get_property_bool(string &key); float get_property_float(string &key); string get_property_string(string &key); ARVec2 get_property_vec2(string &key); ARVec3 get_property_vec3(string &key); ARVec4 get_property_vec4(string &key); ARMat44 get_property_mat44(string &key); ARQuat get_property_quat(string &key); BoundingBox get_property_boundingbox(string &key);
通过给定的Key来获取当前节点对应属性的值
sample:
node:get_property_bool("key")
node:get_property_int("key")
node:get_property_float("key")
node:get_property_string("key")
可用的Key和对应的类型如下:
Key | 类型 | 描述 | 默认值 | 适用性 | 备注 |
---|---|---|---|---|---|
name | string | 节点名 | 无 | get & set | |
empty | bool | 是否为空节点 | 无 | get only | |
transform | ARMat44 | 相对父节点的变换矩阵(local) | ARMat44(0) | get & set | |
initial_transform | ARMat44 | 初始化时设置的相对父节点的变换矩阵(local) | ARMat44(0) | get & set | |
world_transform | ARMat44 | 相对世界坐标系的变换矩阵 | ARMat44(0) | get & set | |
position | ARVec3 | 相对父节点的位置(local) | ARVec3(0) | get & set | |
world_position | ARVec3 | 相对世界坐标系原点的位置 | ARVec3(0) | get & set | |
rotation_quat | ARQuat | 以四元素表示的当前节点相对父节点的旋转(local) | ARQuat(0) | get & set | |
world_rotation_quat | ARQuat | 以四元素表示的当前节点相对世界坐标系的旋转 | ARQuat(0) | get & set | |
rotation_vec | ARVec4 | 以4维向量表示的当前节点相对父节点的旋转(local) | ARVec4(0) | get & set | |
euler_angles | ARVec3 | 以欧拉角表示的节点相对父节点的旋转信息 | ARVec3(0) | get & set | |
scale | ARVec3 | 相对父节点的变换矩阵的scale分量(local) | ARVec3(1) | get & set | |
world_scale | ARVec3 | 相对世界坐标系的变换矩阵的scale分量(local) | ARVec3(1) | get & set | |
visible | bool | 节点是否可见 | 从场景配置文件中加载,默认为true | get & set | |
touchable | bool | 节点是否响应手势交互 | 从场景配置文件中加载,默认为true | get & set | |
physics/enabled | bool | 是否开启物理效果 | false | get & set | |
physics/ sync_physics_rotation | bool | 三维模型的旋转是否受dynamic物理碰撞体影响 | true | get & set | 设置为false后,物理碰撞体仍会因力作用产生位移且旋转,但是三维模型仅移动不旋转 |
physics/sync_physics_position | bool | 三维模型的位置是否受dynamic物理碰撞体影响 | true | get & set | 设置为false后,物理碰撞体仍会因力作用产生位移且旋转,但是三维模型仅旋转不移动 |
transparent | bool | 是否为透明节点 | false | get & set | |
ditach_parent_rotate | bool | 不跟随父节点旋转 | false | set only | |
ditach_parent_translate | bool | 不跟随父节点平移 | false | set only | |
ditach_parent_scale | bool | 不跟随父节点缩放 | false | set only | |
world_rotate_axis | ARVec3 | 设置节点的旋转轴 | 无 | set only | |
world_rotate_limit_range | Vec2 | 节点绕上述旋转轴旋转角度限制 | 无 | set only | 单位(度°) |
external_transform_setting_enabled | bool | 是否允许从脚本以外的入口(自动跟踪)修改节点的transform | true | get & set | |
virtual_color | Vec4 | 模型虚化(变成半透明)的颜色 | ARVec4 | set only | |
touch_zone_radius | float | 手势交互热区的半径 | 120 | set only | |
"material/roughness" | float | 粗糙度 | 0 | get & set | |
"material/metalness" | float | 金属度 | 0 | get & set | |
"material/clearCoat" | float | 透明涂层的透明度 | 0 | get & set | |
"material/clearCoatRoughness" | float | 透明涂层的粗糙度 | 0 | get & set | |
"material/reflectivity" | float | 反射系数 | 1.0 | get & set | |
"material/refractionRatio" | float | 折射率 | 0.98 | get & set | |
"material/emissiveIntensity" | float | 自发光的强度 | 1.0 | get & set | |
"material/shininess" | float | 镜面高光度 | 1.0 | get & set | |
"material/opacity" | float | 不透明度 | 1.0 | get & set | |
"material/aoMapIntensity" | float | 环境光吸收AO贴图强度系数 | 1.0 | get & set | |
"material/lightMapIntensity" | float | 光照贴图系数 | 1.0 | get & set | |
"material/envMapIntensity" | float | 环境贴图系数 | 1.0 | get & set | |
"material/displacementScale" | float | 置换贴图的系数 | 1.0 | get & set | |
"material/displacementBias" | float | 置换贴图的偏移量 | 0 | get & set | |
"material/bumpScale" | float | 凹凸贴图系数 | 1.0 | get & set | |
"material/offsetRepeat | ARVec4 | 纹理偏移 | ARVec4(0, 1, 1, -1) | get & set | |
"material/normalScale" | ARVec2 | 法线贴图系数 | ARVec2(1) | get & set | |
"material/ambient" | ARVec3 | 环境光系数 | ARVec3(0) | get & set | |
"material/diffuse" | ARVec3 | 漫反射光系数 | ARVec3(1) | get & set | |
"material/specular" | ARVec3 | 高光系数 | ARVec3(1) | get & set | |
"material/emissive" | ARVec3 | 自发光系数 | ARVec3(0) | get & set | |
"light/direction" | ARVec3 | 光的方向 | 无 | get & set | |
"light/color" | ARVec4 | 光的颜色 | ARVec4(1) | get & set | |
"light/intensity" | float | 光强 | 1.0 | get & set | |
"light/spot_angle" | float | Spot光的投射角 | 30° | get & set | 单位度 |
"light/ decay" | float | 光的衰减系数 | 1.0 | get & set | |
"light/cast_shadow" | bool | 是否开启阴影 | true | get & set | |
"particle/emit_particle" | bool | 发射指定数量的粒子 | 无 | set only | |
"particle/emitter_position" | ARVec3 | 发射器的位置 | ARVec3(0) | set only | |
"particle/emitter_rotation_axis" | ARVec3 | 发射器所绕的旋转轴 | ARVec3(0) | set only | |
"particle/emitter_rotation_axis_variance" | ARVec3 | 发射器所绕旋转轴变化值 | ARVec3(0) | set only | |
"particle/emitter_rotation_angle_min" | float | 发射器绕轴旋转角度最小值 | 0 | set only | |
"particle/emitter_rotation_angle_max" | float | 发射器绕轴旋转角度最大值 | 0 | set only | |
"particle/shape_strectch_scale" | ARVec3 | 发射器形状的xyz的拉伸系数 | ARVec3(1) | set only | |
"particle/emit_status" | bool | 发射状态开启/关闭 | false | set only | |
"particle/emission_rate" | float | 每秒发射粒子数量 | 10 | set only | |
"particle/particle_stretch_scale" | ARVec3 | 粒子渲染时沿着x,y,z轴拉伸,由于粒子是二维,z无意义 | ARVec3(0) | set only | |
"particle/particle_velocity" | ARVec3 | 粒子沿着x,y,z三个方向的速度分量 | ARVec3(100, 0, 0) | set only | |
"particle/particle_velocity_var" | ARVec3 | 粒子沿着x,y,z三个方向的速度分量的变化值 | ARVec3(0) | set only | |
"particle/particle_acceleration" | ARVec3 | 粒子沿着x,y,z三个方向的加速度分量 | ARVec3(0) | set only | |
"particle/particle_acceleration_var" | ARVec3 | 粒子沿着x,y,z三个方向的加速度分量的变化值 | ARVec3(0) | set only | |
"particle/particle_size" | ARVec4 | 粒子在生命周期内的最大和最小值 | 默认值为(1, 100, 1, 1) | set only | |
"particle/particle_color_start" | ARVec4 | 粒子产生时的颜色值 | ARVec4( 1,1,1,1 ) | set only | |
"particle/particle_color_start_var" | ARVec4 | 粒子产生时的颜色值的变化值 | ARVec4( 0,0,0,0 ) | set only | |
"particle/particle_color_end" | ARVec4 | 粒子在消亡时的颜色值 | ARVec4( 1,1,1,1 ) | set only | |
"particle/particle_color_end_var" | ARVec4 | 粒子在消亡时的颜色值的变化值 | ARVec4( 0,0,0,0 ) | set only | |
"particle/spin_angle_min" | float | 粒子每秒自转角度的最小值 | 0 | set only | |
"particle/spin_angle_max" | float | 粒子每秒自转角度的最大值 | 0 | set only | |
"hud/position" | ARVec2 | HUD节点的位置(像素) | (0,0) | set | |
"hud/position_screen_ratio" | ARVec2 | HUD节点的位置(相对屏幕尺寸的占比) | (0,0) | set |
KVO支持(Key-Value Observing)
API起始版本:190
上述表格中支持get_property的key才支持KVO机制,对于只支持set的key不适用。
add_observer_for_property
void add_observer_for_property(string &key, ARLuaFunction on_observer);
为指定的property设置观察者回调,当对应的property值发生改变时,会触发所注册的回调,并将改变前和改变后的数据以参数形式传递到对应的回调函数中
Parameters
- string | key : 要设置监听的的property的名字
- LUA_FUNCTION | on_observer : 观察者回调,需要包含3个参数,key、old_value和new_value
sample code:
function on_observer(key, old_value, new_value)
ARLOG("property"..key.."changed from"..old_value.."to new value"..new_value)
end
node:add_observer_for_property("visible", on_observer)
remove_observer_for_property
void remove_observer_for_property(string &key);
删除指定的property已设置的观察者回调,删除不存在的Observer或者重复删除将会被忽略
Parameters
- string | key : 要删除监听设置的的property的名字
node:remove_observer_for_property("visible")
Deprecated methods(建议不再使用的方法)
过期的方法将在若干个版本后停止维护。
play_audio
unsigned int play_audio(string &path, int repeat_count = -1, float delay = 0);
unsigned int play_audio(ActionPriorityConfig &config, string &path,
int repeat_count = -1, float delay = 0);
旧版本中,在当前节点上关联播放音乐的方法,新版本中请使用 ARMediaController & ARMediaSession中的方法替代
play_texture_video
unsigned int play_texture_video(string &path, int repeat_count = -1, float delay = 0);
unsigned int play_texture_video(ActionPriorityConfig &config, string &path, \
int repeat_count = -1, float delay = 0);
旧版本中,在当前节点上关联播放视频纹理的方法,新版本中请使用 ARMediaController & ARMediaSession中的方法替代
play_rigid_anim
unsigned int play_rigid_anim(TranslateMotionParam &p, ActionPriorityConfig &cfg);
unsigned int play_rigid_anim(RotateMotionParam &p, ActionPriorityConfig &cfg);
unsigned int play_rigid_anim(ScaleMotionParam &p, ActionPriorityConfig &cfg)
unsigned int play_rigid_anim(TranslateMotionParam &tp, RotateMotionParam &rp,
ScaleMotionParam &sp, ActionPriorityConfig &tcfg,
ActionPriorityConfig &rcfg, ActionPriorityConfig &scfg);
旧版本中,用于在当前节点上播放刚体动画的方法,新版本中请使用 ARAnimationController & ARAnimationSession 中的方法替代
play_rigid_anim(Fade)
unsigned int play_rigid_anim(FadeMotionParam &p, ActionPriorityConfig &cfg);
旧版本中,用于在当前节点上播放淡入/淡出动画的方法,新版本中请使用 ARAnimationController & ARAnimationSession中的create_alpha_animation 方法替代
play_pod_animation_all
unsigned int play_pod_animation_all(float speed, bool repeat, int start = -1, int end = -1);
unsigned int play_pod_animation_all(float speed, unsigned int repeat_count, int start = -1, int end = -1);
unsigned int play_pod_animation_all(float speed, bool repeat, string animation_name);
unsigned int play_pod_animation_all(float speed, unsigned int repeat_count, string animation_name);
int play_pod_animation_all(PodAnimationParam &p, ActionPriorityConfig &cfg);
旧版本中,用于在当前节点上播放对应模型动画的方法(pod&gLTF),新版本中请使用 ARAnimationController & ARAnimationSession中的 方法替代
pause_action
void pause_action(unsigned int action_id);
旧版本中,用于暂停某一个(动画/音乐/视频)播放操作的方法,新的版本中,动画相关请使用ARAnimationSession:pause() 代替, 媒体播放相关请使用ARMediaSession:pause() 代替
resume_action
void resume_action(unsigned int action_id);
旧版本中,用于恢复某一个(动画/音乐/视频)播放操作的方法,新的版本中,动画相关请使用ARAnimationSession:play() 代替, 媒体播放相关请使用ARMediaSession:play() 代替
stop_action
void stop_action(unsigned int action_id);
旧版本中,用于恢复某一个(动画/音乐/视频)播放操作的方法,新的版本中,动画相关请使用ARAnimationSession:stop() 代替, 媒体播放相关请使用ARMediaSession:stop() 代替
set_action_completion_handler
void set_action_completion_handler(unsigned int action_id, int handler_id);
旧版本中,用于设置一个(动画/音乐/视频)播放操作完成时的回调。新版本中请在ARAnimationController /ARMediaController中通过设置complete_handler 来替代
get_audio_play_info
MapData &get_audio_play_info();
旧版本中用于获取音频播放(播放状态、缓冲状态、播放进度、缓冲进度)信息的接口。新版本中请使用ARMediaSession的get_property 来替代
get_video_play_info
MapData &get_video_play_info();
旧版本中用于获取视频播放(播放状态、缓冲状态、播放进度、缓冲进度)信息的接口。新版本中请使用ARMediaSession的get_property 来替代
set_rotation_by_xyz
void set_rotation_by_xyz();
旧版本中中用于将节点绕三轴旋转的接口,节点绕坐标轴的旋转角度,绕节点局部坐标系按照xyz顺序转动对应角度。新版本中使用kvc接口来实现旋转,建议使用rotation_quat和rotation_vec代替
set_rotation_by_xyz
void rotate_by_xyz();
旧版本中用于将节点绕三轴旋转的接口,在节点已有的旋转基础上,添加局部坐标系按照xyz顺序对应角度的旋转。新版本中kvc接口尚无该功能接口
reset_rts
void reset_rts();
旧版本中用于重置节点变换矩阵的状态。新版本中使用ARNode的reset_transform来代替
set_particle_system_property
void set_particle_system_property();
旧版本中用于设置粒子系统属性,不建议再使用。新版本中使用ARNode的set_property_particle来代替
get_world_rotation
void get_world_rotation();
旧版本中用于获取节点相对世界坐标系的旋转四元数。新版本中请使用kvc接口来使用,接口属性名称为world_rotation_quat
set_world_rotation
void set_world_rotation();
旧版本中用于设置节点相对世界坐标系的旋转四元数。新版本中请使用kvc接口来使用,接口属性名称为world_rotation_quat
attach_hud_to_node
void attach_hud_to_node();
旧版本中用于将HUD附着在节点上。新版本中请使用ARNode的pin_to_node接口
remove_hud_attach
void remove_hud_attach();
旧版本中用于将节点上的HUD移除。新版本中请使用ARNode的unpin接口
refresh_texture
void refresh_texture(string &texture_type);
刷新纹理
get_corners
OBB get_corners();
获取模型obb
set_entity_touch_zone_radius
void set_entity_touch_zone_radius(float zone);
设置物体手势热区范围