Создание объектов во время выполнения
Очень часто игры или приложения добавляют новые объекты во время выполнения, возможно, в ответ на действия пользователя или для создания визуального эффекта.
В Wonderland Engine вы можете создавать объекты из пользовательского компонента JavaScript, используя либо Scene.addObject, либо Scene.addObjects.
Добавление одного объекта
Добавление одного объекта осуществляется с помощью Scene.addObject:
import {Component, Property} from '@wonderlandengine/api';
export class Spawner extends Component {
static TypeName = 'spawner';
static Properties = {
mesh: Property.mesh(),
material: Property.material(),
};
start() {
/* Создать новый объект с this.object в качестве родителя */
const o = this.engine.scene.addObject(this.object);
/* Присоединить mesh */
o.addComponent('mesh', {
mesh: this.mesh,
material: this.material,
});
}
} Добавление множества объектов
Для добавления множества объектов Scene.addObjects обеспечивает лучшую производительность:
import {Component, Property} from '@wonderlandengine/api';
export class BatchSpawner extends Component {
static TypeName = 'batch-spawner';
static Properties = {
mesh: Property.mesh(),
material: Property.material(),
count: Property.int(10),
};
start() {
/* Создать 'count' новых объектов с this.object в качестве родителя и
* сообщить Wonderland Engine, что нам потребуется 'count' компонентов (по одному на объект) */
const objs = this.engine.scene.addObjects(10, this.object, this.count);
/* Присоединить mesh'и */
for(let o of objs) {
o.addComponent('mesh', {
mesh: this.mesh,
material: this.material,
});
/* Разместить объект в случайном месте в объеме 10x10x10 */
o.translate([Math.random()*10, Math.random()*10, Math.random()*10]);
}
}
}