Skip to content

Plugin

插件基类,所有扩展应用的基础类,继承自EventManager,提供插件开发的基础功能。插件系统允许开发者扩展Viewer3D的功能,添加自定义的交互、渲染、数据处理等功能。

类定义

javascript
class Plugin extends EventManager

构造函数

constructor(viewer3D, options)

创建插件实例,初始化插件,设置Viewer3D实例、插件选项和基础属性。

参数:

  • viewer3D {Viewer3D} - Viewer3D实例,提供3D场景访问。详见Viewer3D
  • options {Object} - 插件配置选项

示例:

javascript
// 创建自定义插件
class MyPlugin extends Plugin {
    constructor(viewer3D, options) {
        super(viewer3D, options);
        this.name = 'MyPlugin';
    }
}

// 使用插件
const plugin = new MyPlugin(viewer3D, { option1: 'value1' });

属性

viewer3D

Viewer3D实例,提供3D场景访问。

类型: {Viewer3D}
只读: true

isPlugin

插件标识,标识这是一个插件对象。

类型: {boolean}
默认值: true
只读: true

name

插件名称,用于标识插件。

类型: {string}
默认值: ""

enabled

插件启用状态,控制插件是否处于活动状态。禁用的插件不会执行更新逻辑。

类型: {boolean}
默认值: true

示例:

javascript
// 启用插件
plugin.enabled = true;

// 禁用插件
plugin.enabled = false;

// 检查插件状态
if (plugin.enabled) {
    console.log('插件已启用');
} else {
    console.log('插件已禁用');
}

defaultOptions

插件默认配置选项,包含插件的各种配置参数。

类型:

方法

update(param)

更新插件,插件的更新方法,在渲染循环中被调用。子类应该重写此方法来实现插件的更新逻辑。

参数:

  • param {number} - 时间参数,通常是deltaTime(时间差)

示例:

javascript
// 重写更新方法
update(deltaTime) {
    if (!this.enabled) return;
    
    // 插件更新逻辑
    this.updateAnimation(deltaTime);
    this.updateUI();
}

dispose()

销毁插件,清理插件资源,包括事件监听器和相关数据。子类应该重写此方法来清理特定的资源。

示例:

javascript
// 重写销毁方法
dispose() {
    // 清理特定资源
    this.cleanupResources();
    this.removeEventListeners();
    
    // 调用父类销毁方法
    super.dispose();
}

disposeObject3D(object3D)

释放Object3D对象内存,递归释放Object3D对象及其子对象的内存,包括几何体和材质的释放。这是一个工具方法,帮助插件管理3D对象的内存。

参数:

  • object3D {Object3D} - 要释放内存的Object3D对象

示例:

javascript
// 释放对象内存
plugin.disposeObject3D(object3D);

// 在插件销毁时使用
dispose() {
    this.disposeObject3D(this.myObject3D);
    super.dispose();
}

使用场景

自定义交互

  • 添加新的鼠标/触摸交互
  • 实现自定义的选择逻辑
  • 创建特殊的用户界面

动画效果

  • 添加对象动画
  • 实现相机动画
  • 创建粒子效果

数据处理

  • 实时数据处理
  • 模型分析

渲染增强

  • 后处理效果
  • 自定义着色器
  • 特殊材质

相关链接

文档内容为北京逆维悦动科技有限公司版权所有,禁止未授权转载