mirror of
https://github.com/photonstorm/phaser
synced 2024-12-24 20:13:35 +00:00
141 lines
3.3 KiB
JavaScript
141 lines
3.3 KiB
JavaScript
/**
|
|
* @author Richard Davey <rich@photonstorm.com>
|
|
* @copyright 2018 Photon Storm Ltd.
|
|
* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License}
|
|
*/
|
|
|
|
// Phaser.Physics.Arcade.StaticGroup
|
|
|
|
var ArcadeSprite = require('./ArcadeSprite');
|
|
var Class = require('../../utils/Class');
|
|
var CONST = require('./const');
|
|
var Group = require('../../gameobjects/group/Group');
|
|
|
|
/**
|
|
* @classdesc
|
|
* [description]
|
|
*
|
|
* @class StaticGroup
|
|
* @extends Phaser.GameObjects.Group
|
|
* @memberOf Phaser.Physics.Arcade
|
|
* @constructor
|
|
* @since 3.0.0
|
|
*
|
|
* @param {Phaser.Physics.Arcade.World} world - [description]
|
|
* @param {Phaser.Scene} scene - [description]
|
|
* @param {array} children - [description]
|
|
* @param {GroupConfig} config - [description]
|
|
*/
|
|
var StaticPhysicsGroup = new Class({
|
|
|
|
Extends: Group,
|
|
|
|
initialize:
|
|
|
|
function StaticPhysicsGroup (world, scene, children, config)
|
|
{
|
|
if (config === undefined && !Array.isArray(children) && typeof children === 'object')
|
|
{
|
|
config = children;
|
|
children = null;
|
|
}
|
|
else if (config === undefined)
|
|
{
|
|
config = {};
|
|
}
|
|
|
|
/**
|
|
* [description]
|
|
*
|
|
* @name Phaser.Physics.Arcade.StaticGroup#world
|
|
* @type {Phaser.Physics.Arcade.World}
|
|
* @since 3.0.0
|
|
*/
|
|
this.world = world;
|
|
|
|
config.createCallback = this.createCallbackHandler;
|
|
config.removeCallback = this.removeCallbackHandler;
|
|
config.createMultipleCallback = this.createMultipleCallbackHandler;
|
|
|
|
config.classType = ArcadeSprite;
|
|
|
|
/**
|
|
* [description]
|
|
*
|
|
* @name Phaser.Physics.Arcade.StaticGroup#physicsType
|
|
* @type {integer}
|
|
* @since 3.0.0
|
|
*/
|
|
this.physicsType = CONST.STATIC_BODY;
|
|
|
|
Group.call(this, scene, children, config);
|
|
},
|
|
|
|
/**
|
|
* [description]
|
|
*
|
|
* @method Phaser.Physics.Arcade.StaticGroup#createCallbackHandler
|
|
* @since 3.0.0
|
|
*
|
|
* @param {Phaser.GameObjects.GameObject} child - [description]
|
|
*/
|
|
createCallbackHandler: function (child)
|
|
{
|
|
if (!child.body)
|
|
{
|
|
this.world.enableBody(child, CONST.STATIC_BODY);
|
|
}
|
|
},
|
|
|
|
/**
|
|
* [description]
|
|
*
|
|
* @method Phaser.Physics.Arcade.StaticGroup#removeCallbackHandler
|
|
* @since 3.0.0
|
|
*
|
|
* @param {Phaser.GameObjects.GameObject} child - [description]
|
|
*/
|
|
removeCallbackHandler: function (child)
|
|
{
|
|
if (child.body)
|
|
{
|
|
this.world.disableBody(child);
|
|
}
|
|
},
|
|
|
|
/**
|
|
* [description]
|
|
*
|
|
* @method Phaser.Physics.Arcade.StaticGroup#createMultipleCallbackHandler
|
|
* @since 3.0.0
|
|
*
|
|
* @param {object} entries - [description]
|
|
*/
|
|
createMultipleCallbackHandler: function ()
|
|
{
|
|
this.refresh();
|
|
},
|
|
|
|
/**
|
|
* [description]
|
|
*
|
|
* @method Phaser.Physics.Arcade.StaticGroup#refresh
|
|
* @since 3.0.0
|
|
*
|
|
* @return {Phaser.Physics.Arcade.StaticGroup} [description]
|
|
*/
|
|
refresh: function ()
|
|
{
|
|
var children = this.children.entries;
|
|
|
|
for (var i = 0; i < children.length; i++)
|
|
{
|
|
children[i].body.reset();
|
|
}
|
|
|
|
return this;
|
|
}
|
|
|
|
});
|
|
|
|
module.exports = StaticPhysicsGroup;
|