mirror of
https://github.com/photonstorm/phaser
synced 2024-11-24 05:33:35 +00:00
Allowing to work with Containers
This commit is contained in:
parent
276ae03aff
commit
f80db91429
1 changed files with 52 additions and 4 deletions
|
@ -7,8 +7,10 @@
|
||||||
var CircleContains = require('../../geom/circle/Contains');
|
var CircleContains = require('../../geom/circle/Contains');
|
||||||
var Class = require('../../utils/Class');
|
var Class = require('../../utils/Class');
|
||||||
var CONST = require('./const');
|
var CONST = require('./const');
|
||||||
|
var RadToDeg = require('../../math/RadToDeg');
|
||||||
var Rectangle = require('../../geom/rectangle/Rectangle');
|
var Rectangle = require('../../geom/rectangle/Rectangle');
|
||||||
var RectangleContains = require('../../geom/rectangle/Contains');
|
var RectangleContains = require('../../geom/rectangle/Contains');
|
||||||
|
var TransformMatrix = require('../../gameobjects/components/TransformMatrix');
|
||||||
var Vector2 = require('../../math/Vector2');
|
var Vector2 = require('../../math/Vector2');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -66,6 +68,23 @@ var Body = new Class({
|
||||||
*/
|
*/
|
||||||
this.gameObject = gameObject;
|
this.gameObject = gameObject;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* [description]
|
||||||
|
*
|
||||||
|
* @name Phaser.Physics.Arcade.Body#transform
|
||||||
|
* @type {object}
|
||||||
|
* @since 3.4.0
|
||||||
|
*/
|
||||||
|
this.transform = {
|
||||||
|
x: gameObject.x,
|
||||||
|
y: gameObject.y,
|
||||||
|
rotation: gameObject.angle,
|
||||||
|
scaleX: gameObject.scaleX,
|
||||||
|
scaleY: gameObject.scaleY,
|
||||||
|
displayOriginX: gameObject.displayOriginX,
|
||||||
|
displayOriginY: gameObject.displayOriginY
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* [description]
|
* [description]
|
||||||
*
|
*
|
||||||
|
@ -709,6 +728,8 @@ var Body = new Class({
|
||||||
* @since 3.0.0
|
* @since 3.0.0
|
||||||
*/
|
*/
|
||||||
this._bounds = new Rectangle();
|
this._bounds = new Rectangle();
|
||||||
|
|
||||||
|
this._tempMatrix = new TransformMatrix();
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -721,6 +742,29 @@ var Body = new Class({
|
||||||
{
|
{
|
||||||
var sprite = this.gameObject;
|
var sprite = this.gameObject;
|
||||||
|
|
||||||
|
// Container?
|
||||||
|
|
||||||
|
var transform = this.transform;
|
||||||
|
|
||||||
|
if (sprite.parentContainer)
|
||||||
|
{
|
||||||
|
var matrix = sprite.getWorldTransformMatrix(this._tempMatrix);
|
||||||
|
|
||||||
|
transform.x = matrix.tx;
|
||||||
|
transform.y = matrix.ty;
|
||||||
|
transform.rotation = RadToDeg(matrix.rotation);
|
||||||
|
transform.scaleX = matrix.scaleX;
|
||||||
|
transform.scaleY = matrix.scaleY;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
transform.x = sprite.x;
|
||||||
|
transform.y = sprite.y;
|
||||||
|
transform.rotation = sprite.angle;
|
||||||
|
transform.scaleX = sprite.scaleX;
|
||||||
|
transform.scaleY = sprite.scaleY;
|
||||||
|
}
|
||||||
|
|
||||||
if (this.syncBounds)
|
if (this.syncBounds)
|
||||||
{
|
{
|
||||||
var b = sprite.getBounds(this._bounds);
|
var b = sprite.getBounds(this._bounds);
|
||||||
|
@ -734,8 +778,8 @@ var Body = new Class({
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var asx = Math.abs(sprite.scaleX);
|
var asx = Math.abs(transform.scaleX);
|
||||||
var asy = Math.abs(sprite.scaleY);
|
var asy = Math.abs(transform.scaleY);
|
||||||
|
|
||||||
if (asx !== this._sx || asy !== this._sy)
|
if (asx !== this._sx || asy !== this._sy)
|
||||||
{
|
{
|
||||||
|
@ -803,16 +847,17 @@ var Body = new Class({
|
||||||
|
|
||||||
this.embedded = false;
|
this.embedded = false;
|
||||||
|
|
||||||
|
// Updates the transform values
|
||||||
this.updateBounds();
|
this.updateBounds();
|
||||||
|
|
||||||
var sprite = this.gameObject;
|
var sprite = this.transform;
|
||||||
|
|
||||||
this.position.x = sprite.x + sprite.scaleX * (this.offset.x - sprite.displayOriginX);
|
this.position.x = sprite.x + sprite.scaleX * (this.offset.x - sprite.displayOriginX);
|
||||||
this.position.y = sprite.y + sprite.scaleY * (this.offset.y - sprite.displayOriginY);
|
this.position.y = sprite.y + sprite.scaleY * (this.offset.y - sprite.displayOriginY);
|
||||||
|
|
||||||
this.updateCenter();
|
this.updateCenter();
|
||||||
|
|
||||||
this.rotation = sprite.angle;
|
this.rotation = sprite.rotation;
|
||||||
|
|
||||||
this.preRotation = this.rotation;
|
this.preRotation = this.rotation;
|
||||||
|
|
||||||
|
@ -918,6 +963,9 @@ var Body = new Class({
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// this.transform.x += this._dx;
|
||||||
|
// this.transform.y += this._dy;
|
||||||
|
|
||||||
this.gameObject.x += this._dx;
|
this.gameObject.x += this._dx;
|
||||||
this.gameObject.y += this._dy;
|
this.gameObject.y += this._dy;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue