@wonderlandengine/api
TypeScript icon, indicating that this package has built-in type declarations

1.2.0-rc.1 • Public • Published
Wonderland Engine Logo

Wonderland Engine API

The bindings between Wonderland Engine's WebAssembly runtime and custom JavaScript or TypeScript components.

Learn more about Wonderland Engine at https://wonderlandengine.com.

Usage

Wonderland Engine projects usually come with this package pre-installed. Install via npm or yarn:

npm i --save @wonderlandengine/api
# or:
yarn add @wonderlandengine/api

To update the API to the latest version use

npm i --save @wonderlandengine/api@latest

Writing a Custom Component

JavaScript

import {Component, Property} from '@wonderlandengine/api';

class Forward extends Component {
    static TypeName = 'forward';
    static Properties = {
        speed: Property.float(1.5)
    };

    _forward = new Float32Array(3);

    update(dt) {
        this.object.getForward(this._forward);
        this._forward[0] *= this.speed;
        this._forward[1] *= this.speed;
        this._forward[2] *= this.speed;
        this.object.translate(this._forward);
    }
}

TypeScript

import {Component} from '@wonderlandengine/api';
import {Component} from '@wonderlandengine/api/decorators.js';

class Forward extends Component {
    static TypeName = 'forward';

    @property.float(1.5)
    speed!: number;

    private _forward = new Float32Array(3);

    update(dt) {
        this.object.getForward(this._forward);
        this._forward[0] *= this.speed;
        this._forward[1] *= this.speed;
        this._forward[2] *= this.speed;
        this.object.translate(this._forward);
    }
}

For more information, please refer to the JavaScript Quick Start Guide.

For Library Maintainers

To ensure the user of your library can use a range of API versions with your library, use "peerDepenedencies" in your package.json:

"peerDependencies": {
    "@wonderlandengine/api": ">= 1.0.0 < 2"
},

Which signals that your package works with any API version >= 1.0.0 (choose whichever version has all the features you need) until 2.0.0.

Also see the Writing JavaScript Libraries Tutorial.

Contributing

Installation

Make sure to install dependencies first:

npm i

Build

To build the TypeScript, use one of:

npm run build
npm run build:watch

Test

To run the tests, use one of:

npm run test
npm run test:watch

Test File

To run the tests of a file, use:

 npm run test -- [PATH]

Example with the component file:

npm run test -- ./test/component.test.ts

Grep

The runner uses Mocha, which supports filtering tests using regexp.

You can provide a regexp using --grep or -g:

 npm run test -- -g 'MeshComponent'

The grep flag can be mixed with the positional file argument:

 npm run test -- ./test/component.test.ts -g 'MeshComponent'

This command will only run the tests matching the "MeshComponent" string in the test/component.test.ts file.

API <> Runtime Versioning

The Wonderland Engine Runtime is compatible on all patch versions of the API, but the major and minor versions are required to match. Example: you will be able to use Wonderland Editor 1.0.4 with API version 1.0.0 or 1.0.9 for example, but probably not with API 1.1.0.

License

Wonderland Engine API TypeScript and JavaScript code is released under MIT license. The runtime and editor are licensed under the Wonderland Engine EULA

Package Sidebar

Install

npm i @wonderlandengine/api

Weekly Downloads

756

Version

1.2.0-rc.1

License

MIT

Unpacked Size

595 kB

Total Files

49

Last publish

Collaborators

  • davidpeicho
  • squareys