Lots of Math component exports added.

Restructured Phaser export file, finally removing it out of the Boot folder.
Fixed several broken math functions.
This commit is contained in:
photonstorm 2016-12-13 16:12:25 +00:00
parent dc5ddec256
commit 6585297fbf
21 changed files with 221 additions and 63 deletions

View file

@ -4,35 +4,27 @@
* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License}
*/
var Device = require('../device');
var Config = require('./Config');
var DebugHeader = require('./DebugHeader');
var CreateRenderer = require('./CreateRenderer');
var Device = require('../device');
var AddToDOM = require('../dom/AddToDOM');
var RequestAnimationFrame = require('../dom/RequestAnimationFrame');
var DOMContentLoaded = require('../dom/DOMContentLoaded');
var CreateRenderer = require('./CreateRenderer');
var RandomDataGenerator = require('../math/random-data-generator/RandomDataGenerator');
var StateManager = require('../state/StateManager');
var FactoryContainer = require('../gameobjects/FactoryContainer');
var GameObjects = require('../gameobjects/');
var TextureManager = require ('../textures/TextureManager');
var AddToDOM = require('../dom/AddToDOM');
var Game = function (config)
{
this.config = new Config(config);
// Decide which of the following should be Game properties, or placed elsewhere ...
this.renderer = null;
this.canvas = null;
this.context = null;
/**
* @property {string|HTMLElement} parent - The Games DOM parent.
* @default
*/
this.parent = parent;
this.isBooted = false;
this.isRunning = false;
@ -45,17 +37,12 @@ var Game = function (config)
/**
* @property {Phaser.TextureManager} textures - Reference to the Phaser Texture Manager.
*/
this.textures = new TextureManager(this);
/**
* @property {Phaser.UpdateManager} updates - Reference to the Phaser Update Manager.
*/
this.updates = null;
this.textures = new TextureManager();
/**
* @property {Phaser.Cache} cache - Reference to the assets cache.
*/
this.cache = null;
// this.cache = new Cache();
/**
* @property {Phaser.Input} input - Reference to the input manager
@ -72,7 +59,7 @@ var Game = function (config)
*/
this.device = Device;
// More this somewhere else? Math perhaps? Doesn't need to be a Game level system.
// Move this somewhere else? Math perhaps? Doesn't need to be a Game level system.
this.rnd;
// Wait for the DOM Ready event, then call boot.

View file

@ -1,13 +0,0 @@
module.exports = {
// Doing this makes it available under Phaser.Game
Game: require('./Game'),
Event: require('../events/Event'),
EventDispatcher: require('../events/EventDispatcher'),
Loader: {
ImageFile: require('../loader/filetypes/ImageFile')
}
};

View file

@ -1,4 +1,4 @@
var CHECKSUM = {
build: '3ccb42b0-c0bb-11e6-b4bc-27e9a3360164'
build: 'a4ceb980-c14e-11e6-a2dd-3f0865028f71'
};
module.exports = CHECKSUM;

View file

@ -0,0 +1,36 @@
/**
* @author Richard Davey <rich@photonstorm.com>
* @copyright 2016 Photon Storm Ltd.
* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License}
*/
var CONST = require('../../const');
var GameObject = require('../GameObject');
var ContainerWebGLRenderer = require('./ContainerWebGLRenderer');
var Children = require('../../components/Children');
var Container = function (state, parent, x, y)
{
GameObject.call(this, state, x, y, null, null, parent);
this.type = CONST.CONTAINER;
this.render = ContainerWebGLRenderer;
this.children = new Children(this);
};
Container.prototype = Object.create(GameObject.prototype);
Container.prototype.constructor = Container;
Container.prototype.preUpdate = function ()
{
if (this.parent)
{
this.color.worldAlpha = this.parent.color.worldAlpha;
}
this.children.preUpdate();
};
module.exports = Container;

View file

@ -0,0 +1,28 @@
/**
* @author Richard Davey <rich@photonstorm.com>
* @copyright 2016 Photon Storm Ltd.
* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License}
*/
var Container = require('./Container');
var FactoryContainer = require('../../gameobjects/FactoryContainer');
var ContainerFactory = {
KEY: 'container',
add: function (parent, x, y)
{
if (group === undefined) { group = this.state; }
return group.children.add(new Container(this.state, parent, x, y));
},
make: function (parent, x, y)
{
return new Container(this.state, parent, x, y);
}
};
module.exports = FactoryContainer.register(ContainerFactory);

View file

@ -0,0 +1,23 @@
var ContainerWebGLRenderer = function (renderer, src, interpolationPercentage)
{
var frame = src.frame;
var alpha = src.color.worldAlpha * 255 << 24;
// Skip rendering?
if (src.skipRender || !src.visible || alpha === 0 || src.children.list.length === 0)
{
return;
}
// Render children
for (var i = 0; i < src.children.list.length; i++)
{
var child = src.children.list[i];
child.render(renderer, child);
}
};
module.exports = ContainerWebGLRenderer;

View file

@ -1,5 +1,4 @@
// Include all of the Game Object Factories
//
// This file should be linked to the specific build of Phaser, i.e. Phaser Nano won't require all GOs
require('./image/ImageFactory');
require('./container/ContainerFactory');

View file

@ -1,14 +1,13 @@
var Average = function ()
var Average = function (values)
{
var sum = 0;
var len = arguments.length;
for (var i = 0; i < len; i++)
for (var i = 0; i < values.length; i++)
{
sum += (+arguments[i]);
sum += (+values[i]);
}
return sum / len;
return sum / values.length;
};
module.exports = Average;

View file

@ -3,4 +3,4 @@ var Between = function (x1, y1, x2, y2)
return Math.atan2(y2 - y1, x2 - x1);
};
export.module = Between;
module.exports = Between;

View file

@ -1,8 +1,8 @@
var MathWrap from '../Wrap';
var Wrap = require('../Wrap');
var WrapDegrees (angle)
var WrapDegrees = function (angle)
{
return MathWrap(angle, -180, 180);
return Wrap(angle, -180, 180);
};
module.exports = WrapDegrees;

View file

@ -0,0 +1,7 @@
module.exports = {
Between: require('./DistanceBetween'),
Power: require('./DistancePower'),
Squared: require('./DistanceSquared')
};

View file

@ -0,0 +1,15 @@
module.exports = {
Back: require('./Back'),
Bounce: require('./Bounce'),
Circular: require('./Circular'),
Cubic: require('./Cubic'),
Elastic: require('./Elastic'),
Expo: require('./Expo'),
Linear: require('./Linear'),
Quadratic: require('./Quadratic'),
Quartic: require('./Quartic'),
Quintic: require('./Quintic'),
Sine: require('./Sine')
};

39
v3/src/math/index.js Normal file
View file

@ -0,0 +1,39 @@
module.exports = {
// Collections of functions
Angle: require('./angle/'),
Distance: require('./distance/'),
Easing: require('./easing/'),
Fuzzy: require('./fuzzy/'),
Interpolation: require('./interpolation/'),
Pow2: require('./pow2/'),
Snap: require('./snap/'),
// Single functions
Average: require('./Average'),
Bernstein: require('./Bernstein'),
Between: require('./Between'),
CatmullRom: require('./CatmullRom'),
CeilTo: require('./CeilTo'),
Clamp: require('./Clamp'),
DegToRad: require('./DegToRad'),
Difference: require('./Difference'),
Factorial: require('./Factorial'),
FloatBetween: require('./FloatBetween'),
FloorTo: require('./FloorTo'),
Linear: require('./Linear'),
MaxAdd: require('./MaxAdd'),
MinSub: require('./MinSub'),
Percent: require('./Percent'),
RadToDeg: require('./RadToDeg'),
Rotate: require('./Rotate'),
RotateAround: require('./RotateAround'),
RoundAwayFromZero: require('./RoundAwayFromZero'),
RoundTo: require('./RoundTo'),
SinCosTableGenerator: require('./SinCosTableGenerator'),
SmootherStep: require('./SmootherStep'),
SmoothStep: require('./SmoothStep'),
Within: require('./Within'),
Wrap: require('./Wrap')
};

View file

@ -0,0 +1,7 @@
module.exports = {
Bezier: require('./BezierInterpolation'),
CatmullRom: require('./CatmullRomInterpolation'),
Linear: require('./LinearInterpolation')
};

View file

@ -1,6 +1,6 @@
// Takes value and returns the nearest power of 2
var GetPowerOfTwo (value)
var GetPowerOfTwo = function (value)
{
// Math.log(2)
var index = Math.log(value) / 0.6931471805599453;

View file

@ -1,6 +1,6 @@
// Is value a power of 2?
var IsValuePowerOfTwo (value)
var IsValuePowerOfTwo = function (value)
{
return (value > 0 && (value & (value - 1)) === 0);
};

View file

@ -1,7 +1,7 @@
module.export = {
GetNext: require('./GetPowerOfTwo'),
IsValue: require('./IsValuePowerOfTwo'),
IsSize: require('./IsSizePowerOfTwo')
IsSize: require('./IsSizePowerOfTwo'),
IsValue: require('./IsValuePowerOfTwo')
};

View file

@ -1,7 +1,37 @@
require('./polyfills');
var boot = require('./boot');
// This object is exported globally
module.exports = boot;
var Phaser = {
global.Phaser = boot;
Game: require('./boot/Game'),
Event: require('./events/Event'),
EventDispatcher: require('./events/EventDispatcher'),
Math: require('./math'),
GameObjects: {
Factory: require('./gameobjects/FactoryContainer'),
},
Loader: {
ImageFile: require('./loader/filetypes/ImageFile')
}
};
// Required, but don't need Phaser level exports
require('./gameobjects/image/ImageFactory');
require('./gameobjects/container/ContainerFactory');
// Export it
module.exports = Phaser;
global.Phaser = Phaser;

View file

@ -31,17 +31,18 @@ Map.prototype = {
{
this.entries[key] = value;
}
return this;
},
delete: function (value)
delete: function (key)
{
var index = this.entries.indexOf(value);
if (index > -1)
if (this.entries.hasOwnProperty(key))
{
this.entries.splice(index, 1);
delete this.entries[key];
}
return this;
},
keys: function ()

4
v3/src/structs/index.js Normal file
View file

@ -0,0 +1,4 @@
module.exports = {
Set: require('./Set'),
Map: require('./Map')
};

View file

@ -17,13 +17,9 @@ var Texture = require('./Texture');
*
* @class Phaser.TextureManager
* @constructor
* @param {Phaser.Game} game
*/
var TextureManager = function (game)
var TextureManager = function ()
{
// Required? Remove if not
this.game = game;
this.list = {};
};