mage-engine 3.23.38 → 3.23.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/mage.js +107 -11
- package/package.json +1 -1
package/dist/mage.js
CHANGED
|
@@ -54641,7 +54641,8 @@ let Keyboard = /*#__PURE__*/function (_EventDispatcher) {
|
|
|
54641
54641
|
TYPE: "CAMERA",
|
|
54642
54642
|
SUBTYPES: {
|
|
54643
54643
|
DEFAULT: "CAMERA.SUBTYPE.DEFAULT",
|
|
54644
|
-
MAIN: "CAMERA.SUBTYPE.MAIN"
|
|
54644
|
+
MAIN: "CAMERA.SUBTYPE.MAIN",
|
|
54645
|
+
GAME: "CAMERA.SUBTYPE.GAME"
|
|
54645
54646
|
}
|
|
54646
54647
|
},
|
|
54647
54648
|
MESH: {
|
|
@@ -54736,7 +54737,7 @@ let Keyboard = /*#__PURE__*/function (_EventDispatcher) {
|
|
|
54736
54737
|
UNKNOWN: "UNKNOWN"
|
|
54737
54738
|
};
|
|
54738
54739
|
const FLAT_ENTITY_TYPES = [ENTITY_TYPES.SCENE.TYPE, ENTITY_TYPES.CAMERA.TYPE, ENTITY_TYPES.MESH.TYPE, ENTITY_TYPES.LABEL.TYPE, ENTITY_TYPES.LIGHT.TYPE, ENTITY_TYPES.AUDIO.TYPE, ENTITY_TYPES.MODEL.TYPE, ENTITY_TYPES.SPRITE.TYPE, ENTITY_TYPES.PARTICLE.TYPE, ENTITY_TYPES.SCENERY.TYPE, ENTITY_TYPES.HELPER.TYPE, ENTITY_TYPES.UNKNOWN];
|
|
54739
|
-
const FLAT_ENTITY_SUBTYPES = [ENTITY_TYPES.SCENE.SUBTYPES.DEFAULT, ENTITY_TYPES.CAMERA.SUBTYPES.DEFAULT, ENTITY_TYPES.CAMERA.SUBTYPES.MAIN, ENTITY_TYPES.MESH.SUBTYPES.DEFAULT, ENTITY_TYPES.MESH.SUBTYPES.BOX, ENTITY_TYPES.MESH.SUBTYPES.SPHERE, ENTITY_TYPES.MESH.SUBTYPES.PLANE, ENTITY_TYPES.MESH.SUBTYPES.CYLINDER, ENTITY_TYPES.MESH.SUBTYPES.CONE, ENTITY_TYPES.MESH.SUBTYPES.CUBE, ENTITY_TYPES.MESH.SUBTYPES.LINE, ENTITY_TYPES.MESH.SUBTYPES.CURVE_LINE, ENTITY_TYPES.MESH.SUBTYPES.AXES, ENTITY_TYPES.MESH.SUBTYPES.GRID, ENTITY_TYPES.MESH.SUBTYPES.TARGET, ENTITY_TYPES.LABEL.SUBTYPES.DEFAULT, ENTITY_TYPES.LIGHT.SUBTYPES.DEFAULT, ENTITY_TYPES.LIGHT.SUBTYPES.AMBIENT, ENTITY_TYPES.LIGHT.SUBTYPES.SUN, ENTITY_TYPES.LIGHT.SUBTYPES.HEMISPHERE, ENTITY_TYPES.LIGHT.SUBTYPES.POINT, ENTITY_TYPES.LIGHT.SUBTYPES.SPOT, ENTITY_TYPES.AUDIO.SUBTYPES.DEFAULT, ENTITY_TYPES.AUDIO.SUBTYPES.DIRECTIONAL, ENTITY_TYPES.AUDIO.SUBTYPES.AMBIENT, ENTITY_TYPES.MODEL.SUBTYPES.DEFAULT, ENTITY_TYPES.SPRITE.SUBTYPES.DEFAULT, ENTITY_TYPES.SPRITE.SUBTYPES.ANIMATED_SPRITE, ENTITY_TYPES.PARTICLE.SUBTYPES.DEFAULT, ENTITY_TYPES.PARTICLE.SUBTYPES.EMITTER, ENTITY_TYPES.PARTICLE.SUBTYPES.SYSTEM, ENTITY_TYPES.PARTICLE.SUBTYPES.EMITTER_GROUP, ENTITY_TYPES.PARTICLE.SUBTYPES.PROTON_EMITTER, ENTITY_TYPES.SCENERY.SUBTYPES.DEFAULT, ENTITY_TYPES.SCENERY.SUBTYPES.SKY, ENTITY_TYPES.SCENERY.SUBTYPES.SKYBOX, ENTITY_TYPES.HELPER.SUBTYPES.GRID, ENTITY_TYPES.HELPER.SUBTYPES.AXES, ENTITY_TYPES.HELPER.SUBTYPES.HELPER_SPRITE];
|
|
54740
|
+
const FLAT_ENTITY_SUBTYPES = [ENTITY_TYPES.SCENE.SUBTYPES.DEFAULT, ENTITY_TYPES.CAMERA.SUBTYPES.DEFAULT, ENTITY_TYPES.CAMERA.SUBTYPES.MAIN, ENTITY_TYPES.CAMERA.SUBTYPES.GAME, ENTITY_TYPES.MESH.SUBTYPES.DEFAULT, ENTITY_TYPES.MESH.SUBTYPES.BOX, ENTITY_TYPES.MESH.SUBTYPES.SPHERE, ENTITY_TYPES.MESH.SUBTYPES.PLANE, ENTITY_TYPES.MESH.SUBTYPES.CYLINDER, ENTITY_TYPES.MESH.SUBTYPES.CONE, ENTITY_TYPES.MESH.SUBTYPES.CUBE, ENTITY_TYPES.MESH.SUBTYPES.LINE, ENTITY_TYPES.MESH.SUBTYPES.CURVE_LINE, ENTITY_TYPES.MESH.SUBTYPES.AXES, ENTITY_TYPES.MESH.SUBTYPES.GRID, ENTITY_TYPES.MESH.SUBTYPES.TARGET, ENTITY_TYPES.LABEL.SUBTYPES.DEFAULT, ENTITY_TYPES.LIGHT.SUBTYPES.DEFAULT, ENTITY_TYPES.LIGHT.SUBTYPES.AMBIENT, ENTITY_TYPES.LIGHT.SUBTYPES.SUN, ENTITY_TYPES.LIGHT.SUBTYPES.HEMISPHERE, ENTITY_TYPES.LIGHT.SUBTYPES.POINT, ENTITY_TYPES.LIGHT.SUBTYPES.SPOT, ENTITY_TYPES.AUDIO.SUBTYPES.DEFAULT, ENTITY_TYPES.AUDIO.SUBTYPES.DIRECTIONAL, ENTITY_TYPES.AUDIO.SUBTYPES.AMBIENT, ENTITY_TYPES.MODEL.SUBTYPES.DEFAULT, ENTITY_TYPES.SPRITE.SUBTYPES.DEFAULT, ENTITY_TYPES.SPRITE.SUBTYPES.ANIMATED_SPRITE, ENTITY_TYPES.PARTICLE.SUBTYPES.DEFAULT, ENTITY_TYPES.PARTICLE.SUBTYPES.EMITTER, ENTITY_TYPES.PARTICLE.SUBTYPES.SYSTEM, ENTITY_TYPES.PARTICLE.SUBTYPES.EMITTER_GROUP, ENTITY_TYPES.PARTICLE.SUBTYPES.PROTON_EMITTER, ENTITY_TYPES.SCENERY.SUBTYPES.DEFAULT, ENTITY_TYPES.SCENERY.SUBTYPES.SKY, ENTITY_TYPES.SCENERY.SUBTYPES.SKYBOX, ENTITY_TYPES.HELPER.SUBTYPES.GRID, ENTITY_TYPES.HELPER.SUBTYPES.AXES, ENTITY_TYPES.HELPER.SUBTYPES.HELPER_SPRITE];
|
|
54740
54741
|
const ENTITY_EVENTS = {
|
|
54741
54742
|
DISPOSE: "DISPOSE",
|
|
54742
54743
|
STATE_MACHINE: {
|
|
@@ -56793,9 +56794,12 @@ var Physics$1 = new Physics();let Scene = /*#__PURE__*/function () {
|
|
|
56793
56794
|
key: "getHierarchy",
|
|
56794
56795
|
value: function getHierarchy() {
|
|
56795
56796
|
let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
56797
|
+
const camera = this.getCamera(); // Only include camera in hierarchy if it's serializable (scene camera is not)
|
|
56798
|
+
|
|
56799
|
+
const cameraChildren = camera && camera.isSerializable() ? [camera.getHierarchy(options)] : [];
|
|
56796
56800
|
return [{
|
|
56797
56801
|
element: this.toJSON(options.parseJSON),
|
|
56798
|
-
children: [
|
|
56802
|
+
children: [...cameraChildren, ...this.elements.filter(e => !e.hasParent() && !e.isHelper() && e.isSerializable()).map(e => e.getHierarchy(options))]
|
|
56799
56803
|
}];
|
|
56800
56804
|
}
|
|
56801
56805
|
}, {
|
|
@@ -58135,7 +58139,7 @@ function applyMiddleware() {
|
|
|
58135
58139
|
|
|
58136
58140
|
var thunk = createThunkMiddleware();
|
|
58137
58141
|
thunk.withExtraArgument = createThunkMiddleware;var name = "mage-engine";
|
|
58138
|
-
var version$1 = "3.23.
|
|
58142
|
+
var version$1 = "3.23.39";
|
|
58139
58143
|
var description = "A WebGL Javascript Game Engine, built on top of THREE.js and many other libraries.";
|
|
58140
58144
|
var main = "dist/mage.js";
|
|
58141
58145
|
var author$1 = {
|
|
@@ -63006,12 +63010,16 @@ let Element$1 = /*#__PURE__*/function (_Entity) {
|
|
|
63006
63010
|
fov = Config$1.camera().fov,
|
|
63007
63011
|
ratio = Config$1.screen().ratio,
|
|
63008
63012
|
near = Config$1.camera().near,
|
|
63009
|
-
far = Config$1.camera().far
|
|
63013
|
+
far = Config$1.camera().far,
|
|
63014
|
+
serializable = true
|
|
63010
63015
|
} = options;
|
|
63011
63016
|
_this = _super.call(this, {
|
|
63012
|
-
name
|
|
63017
|
+
name,
|
|
63018
|
+
serializable
|
|
63013
63019
|
});
|
|
63014
|
-
|
|
63020
|
+
|
|
63021
|
+
_this.extendOptions(options);
|
|
63022
|
+
|
|
63015
63023
|
const body = new PerspectiveCamera(fov, ratio, near, far);
|
|
63016
63024
|
|
|
63017
63025
|
_this.setBody({
|
|
@@ -63058,6 +63066,58 @@ let Element$1 = /*#__PURE__*/function (_Entity) {
|
|
|
63058
63066
|
} = position;
|
|
63059
63067
|
this.body.lookAt(x, y, z);
|
|
63060
63068
|
}
|
|
63069
|
+
}, {
|
|
63070
|
+
key: "getFov",
|
|
63071
|
+
value: function getFov() {
|
|
63072
|
+
return this.getBody().fov;
|
|
63073
|
+
}
|
|
63074
|
+
}, {
|
|
63075
|
+
key: "setFov",
|
|
63076
|
+
value: function setFov(fov) {
|
|
63077
|
+
const num = Number(fov);
|
|
63078
|
+
const numericFov = Number.isFinite(num) ? num : 75;
|
|
63079
|
+
this.getBody().fov = numericFov;
|
|
63080
|
+
this.getBody().updateProjectionMatrix();
|
|
63081
|
+
}
|
|
63082
|
+
}, {
|
|
63083
|
+
key: "getNear",
|
|
63084
|
+
value: function getNear() {
|
|
63085
|
+
return this.getBody().near;
|
|
63086
|
+
}
|
|
63087
|
+
}, {
|
|
63088
|
+
key: "setNear",
|
|
63089
|
+
value: function setNear(near) {
|
|
63090
|
+
const num = Number(near);
|
|
63091
|
+
const numericNear = Number.isFinite(num) ? num : 0.1;
|
|
63092
|
+
this.getBody().near = numericNear;
|
|
63093
|
+
this.getBody().updateProjectionMatrix();
|
|
63094
|
+
}
|
|
63095
|
+
}, {
|
|
63096
|
+
key: "getFar",
|
|
63097
|
+
value: function getFar() {
|
|
63098
|
+
return this.getBody().far;
|
|
63099
|
+
}
|
|
63100
|
+
}, {
|
|
63101
|
+
key: "setFar",
|
|
63102
|
+
value: function setFar(far) {
|
|
63103
|
+
const num = Number(far);
|
|
63104
|
+
const numericFar = Number.isFinite(num) ? num : 3000000;
|
|
63105
|
+
this.getBody().far = numericFar;
|
|
63106
|
+
this.getBody().updateProjectionMatrix();
|
|
63107
|
+
}
|
|
63108
|
+
}, {
|
|
63109
|
+
key: "toJSON",
|
|
63110
|
+
value: function toJSON() {
|
|
63111
|
+
let parseJSON = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|
63112
|
+
|
|
63113
|
+
if (this.isSerializable()) {
|
|
63114
|
+
return { ..._get(_getPrototypeOf(Camera.prototype), "toJSON", this).call(this, parseJSON),
|
|
63115
|
+
fov: this.getFov(),
|
|
63116
|
+
near: this.getNear(),
|
|
63117
|
+
far: this.getFar()
|
|
63118
|
+
};
|
|
63119
|
+
}
|
|
63120
|
+
}
|
|
63061
63121
|
}]);
|
|
63062
63122
|
|
|
63063
63123
|
return Camera;
|
|
@@ -91145,8 +91205,11 @@ let Level = /*#__PURE__*/function (_EventDispatcher) {
|
|
|
91145
91205
|
_defineProperty$1(_assertThisInitialized(_this), "cancelNextAnimationFrame", () => cancelAnimationFrame(_this.requestAnimationFrameId));
|
|
91146
91206
|
|
|
91147
91207
|
_defineProperty$1(_assertThisInitialized(_this), "init", () => {
|
|
91148
|
-
Scene$1.create(_this.getName());
|
|
91149
|
-
|
|
91208
|
+
Scene$1.create(_this.getName()); // Scene camera is for editor navigation, not serializable
|
|
91209
|
+
|
|
91210
|
+
Scene$1.createCamera(new Camera({
|
|
91211
|
+
serializable: false
|
|
91212
|
+
}));
|
|
91150
91213
|
Physics$1.init().then(() => {
|
|
91151
91214
|
Particles$1.init();
|
|
91152
91215
|
PostProcessing$1.init();
|
|
@@ -94131,10 +94194,43 @@ let Sky = /*#__PURE__*/function (_Element) {
|
|
|
94131
94194
|
elements = [],
|
|
94132
94195
|
lights = [],
|
|
94133
94196
|
audio = [],
|
|
94134
|
-
sounds = []
|
|
94197
|
+
sounds = [],
|
|
94198
|
+
cameras = []
|
|
94135
94199
|
} = data; // Support both 'audio' and 'sounds' keys for backwards compatibility
|
|
94136
94200
|
|
|
94137
|
-
const allSounds = [...audio, ...sounds]; //
|
|
94201
|
+
const allSounds = [...audio, ...sounds]; // Process cameras - create game camera entity and apply settings to scene camera
|
|
94202
|
+
|
|
94203
|
+
for (const cameraData of cameras) {
|
|
94204
|
+
if (cameraData.entitySubType === ENTITY_TYPES.CAMERA.SUBTYPES.GAME) {
|
|
94205
|
+
// Create a Camera entity that will appear in the hierarchy (for editor)
|
|
94206
|
+
const gameCamera = new Camera({
|
|
94207
|
+
name: cameraData.name || "Game Camera",
|
|
94208
|
+
fov: cameraData.fov || 75,
|
|
94209
|
+
near: cameraData.near || 0.1,
|
|
94210
|
+
far: cameraData.far || 3000000,
|
|
94211
|
+
serializable: true
|
|
94212
|
+
});
|
|
94213
|
+
gameCamera.setEntitySubtype(ENTITY_TYPES.CAMERA.SUBTYPES.GAME); // Set position and rotation
|
|
94214
|
+
|
|
94215
|
+
if (cameraData.position) gameCamera.setPosition(cameraData.position);
|
|
94216
|
+
if (cameraData.rotation) gameCamera.setRotation(cameraData.rotation); // Set uuid and name for persistence
|
|
94217
|
+
|
|
94218
|
+
if (cameraData.uuid) gameCamera.setUuid(cameraData.uuid);
|
|
94219
|
+
if (cameraData.name) gameCamera.setName(cameraData.name); // Add tags for selectability in editor
|
|
94220
|
+
|
|
94221
|
+
if (cameraData.tags) gameCamera.addTags(cameraData.tags); // Add to Scene.elements so it appears in hierarchy
|
|
94222
|
+
|
|
94223
|
+
Scene$1.add(gameCamera.getBody(), gameCamera); // Also apply to the scene's rendering camera (for deployed games)
|
|
94224
|
+
|
|
94225
|
+
const sceneCamera = Scene$1.getCamera();
|
|
94226
|
+
if (cameraData.position) sceneCamera.setPosition(cameraData.position);
|
|
94227
|
+
if (cameraData.rotation) sceneCamera.setRotation(cameraData.rotation);
|
|
94228
|
+
if (cameraData.fov) sceneCamera.setFov(cameraData.fov);
|
|
94229
|
+
if (cameraData.near) sceneCamera.setNear(cameraData.near);
|
|
94230
|
+
if (cameraData.far) sceneCamera.setFar(cameraData.far);
|
|
94231
|
+
}
|
|
94232
|
+
} // Use for...of to properly await async completeElementCreation calls
|
|
94233
|
+
|
|
94138
94234
|
|
|
94139
94235
|
for (const elementData of elements) {
|
|
94140
94236
|
try {
|