+ | logicNode : _SceneNode |
地形对应的逻辑Node。 |
+ | terrainNode : _SceneNode |
地形对应的渲染Node。 |
+ | detailFadeTime : uint |
细节物体渐入渐出的时间
|
+ | detailRange : number |
细节物体的显示范围。
|
+ | graData : _GraphicsData |
场景的GraphicsData。
|
+ | lowPriorityLimit : uint |
低优先级的结点数限制。与_RenderDevice的dummyMesh属性一起使用。
|
+ | name : String |
资源逻辑名。
|
+ | pfxPlayer : _ParticlePlayer |
场景的ParticlePlayer。
|
+ | resname : String |
获得资源文件名。赋值则reload该文件。
|
+ | sceneScaling : number |
所有场景结点的缩放值。
|
+ | skyBox : _SceneNode |
天空盒。
|
+ | skyRange : uint |
天空盒裁剪的距离
|
+ | skyScaling : number |
天空盒的缩放量。默认值为1.0。
|
+ | terrain :_Terrain |
地形。 |
+ | transform: _Matrix3D |
场景的矩阵
|
+ | usePreCaster : bool |
是否使用预计算的投影体来加速阴影计算。 |
模拟碰撞后草摆动的动画。
|
+ | function add(filename : string) : _SceneNode |
为文件名为filename的文件创建mesh对象并作为结点加入场景。
|
+ | function add(mesh : _Mesh[, vm : _Matrix3D]) : _SceneNode |
将_Mesh对象作为结点加入场景。 |
+ | function addLight(light : _PointLight) |
将PointLight加入场景产生作用。
|
+ | function clear() |
清空场景中的所有结点。
|
+ | function del(node : _SceneNode) |
从场景中删除结点
|
+ | function delLight(light : _PointLight) |
从场景中移除指定的PointLight。
|
+ | function getNode(index : uint) : _SceneNode |
返回结点。
|
+ | function getNodeCount() : uint |
返回结点的个数。
|
+ | function getNodes() : _SceneNode[] |
返回所有结点。
|
+ | function getPickedNodes() : _SceneNode[] |
返回pick到的结点。
|
+ | function onRender(callback : function) |
设置渲染的回调函数。
|
+ | function onRenderCaster(callback : function) |
设置渲染阴影投射时的回调函数。设置了_RenderMethod的node不会回调。
|
+ | function onUpdate(callback : function) |
设置更新的回调函数。
|
+ | function pick(v1 : _Vector3, v2 : _Vector3[, pickFlag : uint, pickBoundbox : bool]) : {x, y, z, name, node} |
在场景中pick,参数可简化为sen:pick(_rd:buildRay(x, y))。
|
+ | function render([...]) |
渲染场景。对场景中的每个结点,调用通过设置的回调函数callback。调用的参数列表为(node : _SceneNode, [...])。
|
+ | function save(filename) |
将场景存入文件
|
+ | function update([...]) |
更新场景。对场景中的每个结点,调用通过设置的回调函数callback。调用的参数列表为(node : _SceneNode, [...])。
|
+ | function waveGrass(pos : _Vector3, dir: _Vector2, region : number, angle : number, power : number, time: number) |
模拟草的冲击波。
|
_sys:addPath('res')_dofile('cameracontrol.lua')sen = _Scene.new('water-scene.sen')teapot = _mf:createTeapot()teapot.transform:setScaling(10, 10, 10)_app:onKeyDown(function(key) if key == _System.Key1 then sen:add(teapot, _Matrix3D.new():setTranslation(_random(-100, 100), _random(-100, 100), _random(-100, 100))) elseif key == _System.Key2 then if #sen:getNodes() == 1 then return end local i repeat i = sen:getNode(_random(1, #sen:getNodes())) until not i.terrain sen:del(i) endend)noticefont = _Font.new('Arial', 10)noticefont.textColor = _Color.Yellow_app:onIdle(function(e) noticefont:drawText(0, 0, 'Press 1 to add a teapot') noticefont:drawText(0, 14, 'Press 2 to delete a teapot') sen:render()end)sen:onRender(function(node) if node.terrain then node.terrain:draw() else node.mesh:drawMesh() endend)