123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- import * as THREE from '../threejs/build/three.module.js';
- import { GLTFLoader } from '../threejs/examples/jsm/loaders/GLTFLoader.js';
- export class Flower {
- static collection = [];
- constructor() {
- this.position = new THREE.Vector3();
- this.rotation = new THREE.Vector3();
- this.model = null;
- this.nectarRemaining = 100;
- }
- static loadModel() {
- return new Promise((resolve, reject) => {
- var gltfloader = new GLTFLoader();
- return gltfloader.load(
- './flowers/scene.gltf',
- function (gltf) {
- resolve(gltf);
- },
- function (xhr) { },
- function (error) {
- reject(error);
- }
- );
- });
- }
- async load(model) {
- this.model = model.scene.clone() ?? await Flower.loadModel().scene;
- this.init();
- }
- init() {
- this.model.scale.set(0.5, 0.5, 0.5);
- this.model.traverse(function (node) {
- if (node.isMesh) { node.castShadow = true; node.receiveShadow = true; }
- });
- this.position.z = 100;
- }
- addToScene(scene) {
- scene.add(this.model);
- }
- update(delta, timer) {
- this.model.position.set(this.position.x, this.position.y, this.position.z);
- this.model.rotation.set(this.rotation.x, this.rotation.y, this.rotation.z);
- }
- visitFromBee(bee) {
- bee.carryingHoney += 10;
- this.nectarRemaining -= 10;
- bee.setTarget(bee.homeHive.entranceWaypoint);
- }
- }
|