UNPKG

@woosh/meep-engine

Version:

Pure JavaScript game engine. Fully featured and production ready.

120 lines (100 loc) 3.83 kB
import { EngineHarness } from "../../EngineHarness.js"; import { GameAssetType } from "../../asset/GameAssetType.js"; import { QuestDescriptionDatabase } from "../../../../../model/game/ecs/component/quest/QuestDescriptionDatabase.js"; import { MeshSystem } from "../../graphics/ecs/mesh/MeshSystem.js"; import { makeEngineOptionsModel } from "../../../../../model/game/options/makeEngineOptionsModel.js"; import Vector3 from "../../../core/geom/Vector3.js"; import Entity from "../Entity.js"; import { Transform } from "../transform/Transform.js"; import Mesh from "../../graphics/ecs/mesh/Mesh.js"; import { TooltipComponent } from "./TooltipComponent.js"; import { TooltipComponentSystem } from "./TooltipComponentSystem.js"; const engineHarness = new EngineHarness(); /** * * @param {EngineHarness} harness * @return {Promise<void>} */ async function init(harness) { const engine = harness.engine; engine.assetManager.insert('quests', GameAssetType.JSON, { create: function () { return [ { "id": "test", "completionCode": "", "completionCondition": "a > 7 && variable.name == 200 && flag.value == true", "variableMapping": { "a": "a_key", "variable.name": "v0_name", "flag.value": "flag0" } }, { "id": "test-2", "completionCode": "", "completionCondition": "a > 50", "variableMapping": { "a": "a_key", "variable.name": "v0_name", "flag.value": "flag0" } } ]; } }) engine.staticKnowledge.add('quests', 'quests', new QuestDescriptionDatabase()); const em = engine.entityManager; em.addSystem(new MeshSystem(engine.graphics, engine.assetManager)); em.addSystem(new TooltipComponentSystem({ graphics: engine.graphics, tooltips: engine.gui.tooltips, pointer: engine.devices.pointer, localization: engine.localization })); await makeEngineOptionsModel(engine.options, engine); await harness.initialize(); main(engine); } /** * * @param {Engine} engine */ function main(engine) { engine.graphics.renderer.setClearColor("#666666"); EngineHarness.buildLights({ engine: engine }); const camera = EngineHarness.buildCamera({ engine, target: new Vector3(10, 1, 10), pitch: -0.7 }); EngineHarness.buildOrbitalCameraController({ cameraEntity: camera.id, engine }); const ecd = engine.entityManager.dataset; new Entity() .add(Transform.fromJSON({ position: new Vector3(12.17416, 0.09969, 11.06082) })) .add(Mesh.fromJSON({ url: "data/models/Fantasy Props/coins-3.gltf", // url: "data/models/characters5/maleWarrior/wariorjin/gltf/warriorjin_003.glb", castShadow: true })) .add(TooltipComponent.fromJSON({ key: 'a' })) .build(ecd); new Entity() .add(Transform.fromJSON({ position: new Vector3(10.5, 0.09969, 9.06082) })) .add(Mesh.fromJSON({ url: "data/models/Fantasy Props/bottle-yellow-1.gltf", // url: "data/models/characters5/maleWarrior/wariorjin/gltf/warriorjin_003.glb", castShadow: true })) .add(TooltipComponent.fromJSON({ key: 'b' })) .build(ecd); } init(engineHarness);