disguise developers

Designer Plugins

Plugins for Disguise Designer software.

Plugin Architecture

d3 supports two types of plugins: internal and remote. Each type has its own characteristics and use cases.

Internal Plugins

Internal plugins are stored directly within the project folder structure:

{project_path}/
  └── plugins/
      └── my-plugin/
          ├── index.html
          ├── index.js
          └── ... other plugin files

or alternatively can be stored in the common folder, making them accessible to all projects on that machine:

common/
  └── plugins/
      └── my-plugin/
          ├── index.html
          ├── index.js
          └── ... other plugin files

Characteristics

Note: Internal plugins run within Designer’s embedded Chromium browser engine, providing access to modern web technologies and JavaScript frameworks. However, they are served using HTTP (not HTTPS), which means certain browser features that require a secure (HTTPS) context will not work. This includes (but is not limited to):

If your plugin relies on any feature that requires HTTPS, please verify if it will function properly in the embedded browser context.

For the latest information about which Chromium instance is supplied, see the Chromium Web Integration page in the Disguise user guide which lists the different versions for each Disguise Designer version.

WebGL is not enabled by default in the embedded browser engine. To use WebGL features in your internal plugin, you must enable the enableWebGL option in Advanced Project Settings.

Use Cases

Remote Plugins

Remote plugins are discovered using DNS-SD (Bonjour) on the network:

_d3plugin._tcp.local.

Characteristics

Architecture

Remote plugins typically consist of two parts:

  1. Frontend: HTML/JavaScript interface
  2. Backend: A separate application that handles server-side processing

Use Cases

Working Together

Both types of plugins can coexist in the same project:

  1. Internal plugins are loaded when the plugins button is clicked
  2. Remote plugins are discovered and loaded as they appear in the DNS-SD registry

Best Practices

  1. Choose the Right Type

    • Use internal plugins for project-specific needs
    • Use remote plugins for system-wide tools
  2. Version Management

    • Keep internal plugin versions in sync with project requirements
    • Document version dependencies in plugin manifests
  3. Network Considerations

    • Ensure critical plugins are internal if offline operation is required
    • Consider network availability when designing plugin dependencies
  4. Resource Management

    • Monitor plugin size and loading times
    • Consider impact on project file size with internal plugins