Skip to content

Commit 333945a

Browse files
committed
Remove Mesh Game Object and add Layer3D
1 parent afe765a commit 333945a

11 files changed

Lines changed: 230 additions & 236 deletions

src/gameobjects/index.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -122,17 +122,18 @@ var GameObjects = {
122122
if (typeof WEBGL_RENDERER)
123123
{
124124
// WebGL only Game Objects
125-
GameObjects.Mesh = require('./mesh/Mesh');
126-
GameObjects.MeshCamera = require('./mesh/MeshCamera');
125+
GameObjects.Layer3D = require('./layer3d/Layer3D');
126+
GameObjects.Layer3DCamera = require('./layer3d/Layer3DCamera');
127+
GameObjects.Layer3DLight = require('./layer3d/Layer3DLight');
127128

128129
GameObjects.Quad = require('./quad/Quad');
129130
GameObjects.Shader = require('./shader/Shader');
130131

131-
GameObjects.Factories.Mesh = require('./mesh/MeshFactory');
132+
GameObjects.Factories.Layer3D = require('./layer3d/Layer3DFactory');
132133
GameObjects.Factories.Quad = require('./quad/QuadFactory');
133134
GameObjects.Factories.Shader = require('./shader/ShaderFactory');
134135

135-
GameObjects.Creators.Mesh = require('./mesh/MeshCreator');
136+
GameObjects.Creators.Layer3D = require('./layer3d/Layer3DCreator');
136137
GameObjects.Creators.Quad = require('./quad/QuadCreator');
137138
GameObjects.Creators.Shader = require('./shader/ShaderCreator');
138139

Lines changed: 113 additions & 108 deletions
Large diffs are not rendered by default.
Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,18 @@ var Vector4 = require('../../math/Vector4');
1212

1313
/**
1414
* @classdesc
15-
* The Mesh Camera.
15+
* The Layer3D Camera.
1616
*
17-
* @class MeshCamera
17+
* @class Layer3DCamera
1818
* @memberof Phaser.GameObjects
1919
* @constructor
2020
* @since 3.50.0
2121
*/
22-
var MeshCamera = new Class({
22+
var Layer3DCamera = new Class({
2323

2424
initialize:
2525

26-
function MeshCamera (fov, x, y, z, near, far)
26+
function Layer3DCamera (fov, x, y, z, near, far)
2727
{
2828
this.dirty = true;
2929
this.aspectRatio = 1;
@@ -44,7 +44,7 @@ var MeshCamera = new Class({
4444
this.projectionMatrix = new Matrix4(); // perspective projection matrix
4545
this.viewProjectionMatrix = new Matrix4(); // perspective projection matrix multiplied by the view matrix
4646

47-
this.mode = MeshCamera.MODE_ORBIT;
47+
this.mode = Layer3DCamera.MODE_ORBIT;
4848
},
4949

5050
panX: function (v)
@@ -60,7 +60,7 @@ var MeshCamera = new Class({
6060

6161
this.position.y += this.up.y * v;
6262

63-
if (this.mode === MeshCamera.MODE_ORBIT)
63+
if (this.mode === Layer3DCamera.MODE_ORBIT)
6464
{
6565
// Can only move up and down the y axix in orbit mode
6666
return;
@@ -74,7 +74,7 @@ var MeshCamera = new Class({
7474
{
7575
this.updateViewMatrix();
7676

77-
if (this.mode === MeshCamera.MODE_ORBIT)
77+
if (this.mode === Layer3DCamera.MODE_ORBIT)
7878
{
7979
// orbit mode does translate after rotate, so only need to set Z, the rotate will handle the rest.
8080
this.position.z += v;
@@ -91,7 +91,7 @@ var MeshCamera = new Class({
9191
{
9292
var matView = this.matrix;
9393

94-
if (this.mode === MeshCamera.MODE_FREE)
94+
if (this.mode === Layer3DCamera.MODE_FREE)
9595
{
9696
matView.fromRotationXYTranslation(this.rotation, this.position, true);
9797
}
@@ -126,6 +126,7 @@ var MeshCamera = new Class({
126126
this.up.set(0, 1, 0, 0).transformMat4(matView);
127127
this.right.set(1, 0, 0, 0).transformMat4(matView);
128128
},
129+
129130
fov: {
130131

131132
get: function ()
@@ -278,9 +279,9 @@ var MeshCamera = new Class({
278279
});
279280

280281
// Allows free movement of position and rotation
281-
MeshCamera.MODE_FREE = 0;
282+
Layer3DCamera.MODE_FREE = 0;
282283

283284
// Movement is locked to rotate around the origin
284-
MeshCamera.MODE_ORBIT = 1;
285+
Layer3DCamera.MODE_ORBIT = 1;
285286

286-
module.exports = MeshCamera;
287+
module.exports = Layer3DCamera;

src/gameobjects/mesh/MeshCanvasRenderer.js renamed to src/gameobjects/layer3d/Layer3DCanvasRenderer.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,18 @@
55
*/
66

77
/**
8-
* This is a stub function for Mesh.Render. There is no Canvas renderer for Mesh objects.
8+
* This is a stub function for Layer3D.Render. There is no Canvas renderer for Layer3D objects.
99
*
10-
* @method Phaser.GameObjects.Mesh#renderCanvas
11-
* @since 3.0.0
10+
* @method Phaser.GameObjects.Layer3D#renderCanvas
11+
* @since 3.50.0
1212
* @private
1313
*
1414
* @param {Phaser.Renderer.Canvas.CanvasRenderer} renderer - A reference to the current active Canvas renderer.
15-
* @param {Phaser.GameObjects.Mesh} src - The Game Object being rendered in this call.
15+
* @param {Phaser.GameObjects.Layer3D} src - The Game Object being rendered in this call.
1616
* @param {Phaser.Cameras.Scene2D.Camera} camera - The Camera that is rendering the Game Object.
1717
*/
18-
var MeshCanvasRenderer = function ()
18+
var Layer3DCanvasRenderer = function ()
1919
{
2020
};
2121

22-
module.exports = MeshCanvasRenderer;
22+
module.exports = Layer3DCanvasRenderer;
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/**
2+
* @author Richard Davey <rich@photonstorm.com>
3+
* @copyright 2020 Photon Storm Ltd.
4+
* @license {@link https://opensource.org/licenses/MIT|MIT License}
5+
*/
6+
7+
var BuildGameObject = require('../BuildGameObject');
8+
var GameObjectCreator = require('../GameObjectCreator');
9+
var Layer3D = require('./Layer3D');
10+
11+
/**
12+
* Creates a new Layer3D Game Object and returns it.
13+
*
14+
* Note: This method will only be available if the Layer3D Game Object and WebGL support have been built into Phaser.
15+
*
16+
* @method Phaser.GameObjects.GameObjectCreator#layer3d
17+
* @since 3.50.0
18+
*
19+
* @param {object} config - The configuration object this Game Object will use to create itself.
20+
* @param {boolean} [addToScene] - Add this Game Object to the Scene after creating it? If set this argument overrides the `add` property in the config object.
21+
*
22+
* @return {Phaser.GameObjects.Layer3D} The Game Object that was created.
23+
*/
24+
GameObjectCreator.register('layer3d', function (config, addToScene)
25+
{
26+
if (config === undefined) { config = {}; }
27+
28+
var layer = new Layer3D(this.scene, 0, 0);
29+
30+
if (addToScene !== undefined)
31+
{
32+
config.add = addToScene;
33+
}
34+
35+
BuildGameObject(this.scene, layer, config);
36+
37+
return layer;
38+
});
39+
40+
// When registering a factory function 'this' refers to the GameObjectCreator context.
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
/**
2+
* @author Richard Davey <rich@photonstorm.com>
3+
* @copyright 2020 Photon Storm Ltd.
4+
* @license {@link https://opensource.org/licenses/MIT|MIT License}
5+
*/
6+
7+
var Layer3D = require('./Layer3D');
8+
var GameObjectFactory = require('../GameObjectFactory');
9+
10+
/**
11+
* Creates a new Layer3D Game Object and adds it to the Scene.
12+
*
13+
* Note: This method will only be available if the Layer3D Game Object and WebGL support have been built into Phaser.
14+
*
15+
* @method Phaser.GameObjects.GameObjectFactory#layer3d
16+
* @webglOnly
17+
* @since 3.50.0
18+
*
19+
* @param {number} [x] - The horizontal position of this Game Object in the world.
20+
* @param {number} [y] - The vertical position of this Game Object in the world.
21+
*
22+
* @return {Phaser.GameObjects.Layer3D} The Game Object that was created.
23+
*/
24+
if (typeof WEBGL_RENDERER)
25+
{
26+
GameObjectFactory.register('layer3d', function (x, y)
27+
{
28+
return this.displayList.add(new Layer3D(this.scene, x, y));
29+
});
30+
}
31+
32+
// When registering a factory function 'this' refers to the GameObjectFactory context.
33+
//
34+
// There are several properties available to use:
35+
//
36+
// this.scene - a reference to the Scene that owns the GameObjectFactory
37+
// this.displayList - a reference to the Display List the Scene owns
38+
// this.updateList - a reference to the Update List the Scene owns
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,18 @@ var Vector3 = require('../../math/Vector3');
1010

1111
/**
1212
* @classdesc
13-
* The Mesh Light.
13+
* A Layer3D Ambient Light.
1414
*
15-
* @class MeshLight
15+
* @class Layer3DLight
1616
* @memberof Phaser.GameObjects
1717
* @constructor
1818
* @since 3.50.0
1919
*/
20-
var MeshLight = new Class({
20+
var Layer3DLight = new Class({
2121

2222
initialize:
2323

24-
function MeshLight (x, y, z)
24+
function Layer3DLight (x, y, z)
2525
{
2626
this.position = new Vector3(x, y, z);
2727
this.ambient = new RGB(1, 1, 1);
@@ -124,4 +124,4 @@ var MeshLight = new Class({
124124

125125
});
126126

127-
module.exports = MeshLight;
127+
module.exports = Layer3DLight;
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@ var renderCanvas = require('../../utils/NOOP');
99

1010
if (typeof WEBGL_RENDERER)
1111
{
12-
renderWebGL = require('./MeshWebGLRenderer');
12+
renderWebGL = require('./Layer3DWebGLRenderer');
1313
}
1414

1515
if (typeof CANVAS_RENDERER)
1616
{
17-
renderCanvas = require('./MeshCanvasRenderer');
17+
renderCanvas = require('./Layer3DCanvasRenderer');
1818
}
1919

2020
module.exports = {

src/gameobjects/mesh/MeshWebGLRenderer.js renamed to src/gameobjects/layer3d/Layer3DWebGLRenderer.js

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,16 @@
99
* The object will not render if any of its renderFlags are set or it is being actively filtered out by the Camera.
1010
* This method should not be called directly. It is a utility function of the Render module.
1111
*
12-
* @method Phaser.GameObjects.Mesh#renderWebGL
13-
* @since 3.0.0
12+
* @method Phaser.GameObjects.Layer3D#renderWebGL
13+
* @since 3.50.0
1414
* @private
1515
*
1616
* @param {Phaser.Renderer.WebGL.WebGLRenderer} renderer - A reference to the current active WebGL renderer.
17-
* @param {Phaser.GameObjects.Mesh} src - The Game Object being rendered in this call.
17+
* @param {Phaser.GameObjects.Layer3D} src - The Game Object being rendered in this call.
1818
* @param {Phaser.Cameras.Scene2D.Camera} camera - The Camera that is rendering the Game Object.
1919
* @param {Phaser.GameObjects.Components.TransformMatrix} parentMatrix - This transform matrix is defined if the game object is nested
2020
*/
21-
var MeshWebGLRenderer = function (renderer, src)
21+
var Layer3DWebGLRenderer = function (renderer, src)
2222
{
2323
var models = src.models;
2424
var totalModels = models.length;
@@ -36,12 +36,15 @@ var MeshWebGLRenderer = function (renderer, src)
3636
{
3737
var model = models[m];
3838

39-
pipeline.drawModel(src, model);
39+
if (model.visible && model.vertexCount > 0)
40+
{
41+
pipeline.drawModel(src, model);
42+
}
4043
}
4144

4245
src.resetDirtyFlags();
4346

4447
renderer.pipelines.rebind();
4548
};
4649

47-
module.exports = MeshWebGLRenderer;
50+
module.exports = Layer3DWebGLRenderer;

src/gameobjects/mesh/MeshCreator.js

Lines changed: 0 additions & 49 deletions
This file was deleted.

0 commit comments

Comments
 (0)