feat: debuggable
This commit is contained in:
parent
b59901012a
commit
f160f71d7a
19
packages/entity/traits/debuggable.trait.js
Normal file
19
packages/entity/traits/debuggable.trait.js
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
import {compose} from '@avocado/core';
|
||||||
|
|
||||||
|
import {StateProperty, Trait} from '../trait';
|
||||||
|
|
||||||
|
const decorate = compose(
|
||||||
|
StateProperty('isDebugging', {
|
||||||
|
track: true,
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
|
||||||
|
export class Debuggable extends decorate(Trait) {
|
||||||
|
|
||||||
|
static defaultState() {
|
||||||
|
return {
|
||||||
|
isDebugging: false,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -43,7 +43,7 @@ export class ShapeView extends Renderable {
|
||||||
primitives.drawCircle(
|
primitives.drawCircle(
|
||||||
this.shape.position,
|
this.shape.position,
|
||||||
this.shape.radius,
|
this.shape.radius,
|
||||||
Primitives.lineStyle(new Color(255, 0, 255), 0.5),
|
Primitives.lineStyle(new Color(255, 0, 255), 1),
|
||||||
);
|
);
|
||||||
this.container.removeAllChildren();
|
this.container.removeAllChildren();
|
||||||
this.container.addChild(primitives);
|
this.container.addChild(primitives);
|
||||||
|
@ -61,7 +61,7 @@ export class ShapeView extends Renderable {
|
||||||
primitives.drawLine(
|
primitives.drawLine(
|
||||||
lastVertice,
|
lastVertice,
|
||||||
vertice,
|
vertice,
|
||||||
Primitives.lineStyle(new Color(255, 0, 255), 0.5),
|
Primitives.lineStyle(new Color(255, 0, 255), 1),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
lastVertice = vertice;
|
lastVertice = vertice;
|
||||||
|
@ -69,7 +69,7 @@ export class ShapeView extends Renderable {
|
||||||
primitives.drawLine(
|
primitives.drawLine(
|
||||||
lastVertice,
|
lastVertice,
|
||||||
firstVertice,
|
firstVertice,
|
||||||
Primitives.lineStyle(new Color(255, 0, 255), 0.5),
|
Primitives.lineStyle(new Color(255, 0, 255), 1),
|
||||||
);
|
);
|
||||||
this.container.removeAllChildren();
|
this.container.removeAllChildren();
|
||||||
this.container.addChild(primitives);
|
this.container.addChild(primitives);
|
||||||
|
|
|
@ -36,9 +36,10 @@ export class Physical extends decorate(Trait) {
|
||||||
body.setCollisionForEntity(this.entity);
|
body.setCollisionForEntity(this.entity);
|
||||||
world.addBody(body);
|
world.addBody(body);
|
||||||
this._body = body;
|
this._body = body;
|
||||||
if (this.entity.container) {
|
if (this.entity.is('visible') && this.entity.is('debuggable')) {
|
||||||
this.bodyView = new BodyView(body);
|
this.bodyView = new BodyView(body);
|
||||||
this.bodyView.position = Vector.scale(this.entity.position, -1);
|
this.bodyView.position = Vector.scale(this.entity.position, -1);
|
||||||
|
this.bodyView.visible = this.entity.isDebugging;
|
||||||
this.bodyView.zIndex = 101;
|
this.bodyView.zIndex = 101;
|
||||||
this.entity.container.addChild(this.bodyView);
|
this.entity.container.addChild(this.bodyView);
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,9 +34,10 @@ export class Shaped extends decorate(Trait) {
|
||||||
return {
|
return {
|
||||||
|
|
||||||
traitAdded: (type) => {
|
traitAdded: (type) => {
|
||||||
if (this.entity.container) {
|
if (this.entity.is('visible') && this.entity.is('debuggable')) {
|
||||||
if (!this.shapeView) {
|
if (!this.shapeView) {
|
||||||
this.shapeView = new ShapeView(this.entity.shape);
|
this.shapeView = new ShapeView(this.entity.shape);
|
||||||
|
this.shapeView.visible = this.entity.isDebugging;
|
||||||
this.shapeView.zIndex = 100;
|
this.shapeView.zIndex = 100;
|
||||||
this.entity.container.addChild(this.shapeView);
|
this.entity.container.addChild(this.shapeView);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user