不同于raycaster插件是基于view且面向所有主对象而存在,这里提到的raycaster只面向特定几个对象做检测。基于3D对象的raycaster是由个别插件对辅助3D对象的需求,而这些辅助对象需要单独特别处理,因而我们有了基于对象的raycaster。
基于3D对象的raycaster的运行周期通常不长,仅仅在插件的某些特定状态下使用。它需要能够灵活的被创建和消除。它由插件调用实例TuoScene的setObjectsRaycaster函数来激活,并使用TuoScene.removeObjectsRaycaster函数删除。
基于对象的raycaster使用流程如下:
- 某个插件进入了一个状态,需要基于特定对象的raycaster支持。
- 该插件创建一个新的core/ObjectsRaycaster 对象,并监听其'hoverObject', 'unHoverObject', 和'clickObject'事件。
- 插件调用TuoScene.setObjectsRaycaster函数,使能此ObjectsRaycaster。TuoScene会将此ObjectsRaycaster安装到与之相关的所有TuoView上。
- 该插件退出该状态,取消对之前创建的ObjectsRaycaster对象事件的监听,并调用TuoScene.removeObjectsRaycaster注销掉ObjectsRaycaster