新增tire。修改transform.Component为es.ComponentTransform
This commit is contained in:
+6504
File diff suppressed because it is too large
Load Diff
Vendored
+12
-9
@@ -193,7 +193,7 @@ declare module es {
|
|||||||
* 当实体的位置改变时调用。这允许组件知道它们由于父实体的移动而移动了。
|
* 当实体的位置改变时调用。这允许组件知道它们由于父实体的移动而移动了。
|
||||||
* @param comp
|
* @param comp
|
||||||
*/
|
*/
|
||||||
onEntityTransformChanged(comp: transform.Component): void;
|
onEntityTransformChanged(comp: ComponentTransform): void;
|
||||||
debugRender(batcher: IBatcher): void;
|
debugRender(batcher: IBatcher): void;
|
||||||
/**
|
/**
|
||||||
*当父实体或此组件启用时调用
|
*当父实体或此组件启用时调用
|
||||||
@@ -311,7 +311,7 @@ declare module es {
|
|||||||
readonly worldInverseTransform: Matrix2D;
|
readonly worldInverseTransform: Matrix2D;
|
||||||
readonly localToWorldTransform: Matrix2D;
|
readonly localToWorldTransform: Matrix2D;
|
||||||
readonly worldToLocalTransform: Matrix2D;
|
readonly worldToLocalTransform: Matrix2D;
|
||||||
onTransformChanged(comp: transform.Component): void;
|
onTransformChanged(comp: ComponentTransform): void;
|
||||||
setParent(parent: Entity): any;
|
setParent(parent: Entity): any;
|
||||||
setParent(parent: Transform): any;
|
setParent(parent: Transform): any;
|
||||||
setPosition(x: number, y: number): this;
|
setPosition(x: number, y: number): this;
|
||||||
@@ -760,14 +760,12 @@ declare module es {
|
|||||||
getEntityProcessor<T extends EntitySystem>(type: new (...args: any[]) => T): T;
|
getEntityProcessor<T extends EntitySystem>(type: new (...args: any[]) => T): T;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
declare module transform {
|
declare module es {
|
||||||
enum Component {
|
enum ComponentTransform {
|
||||||
position = 0,
|
position = 0,
|
||||||
scale = 1,
|
scale = 1,
|
||||||
rotation = 2
|
rotation = 2
|
||||||
}
|
}
|
||||||
}
|
|
||||||
declare module es {
|
|
||||||
enum DirtyType {
|
enum DirtyType {
|
||||||
clean = 0,
|
clean = 0,
|
||||||
positionDirty = 1,
|
positionDirty = 1,
|
||||||
@@ -1390,7 +1388,7 @@ declare module es {
|
|||||||
setShouldColliderScaleAndRotateWithTransform(shouldColliderScaleAndRotationWithTransform: boolean): Collider;
|
setShouldColliderScaleAndRotateWithTransform(shouldColliderScaleAndRotationWithTransform: boolean): Collider;
|
||||||
onAddedToEntity(): void;
|
onAddedToEntity(): void;
|
||||||
onRemovedFromEntity(): void;
|
onRemovedFromEntity(): void;
|
||||||
onEntityTransformChanged(comp: transform.Component): void;
|
onEntityTransformChanged(comp: ComponentTransform): void;
|
||||||
onEnabled(): void;
|
onEnabled(): void;
|
||||||
onDisabled(): void;
|
onDisabled(): void;
|
||||||
/**
|
/**
|
||||||
@@ -1517,7 +1515,7 @@ declare module es {
|
|||||||
color: Color;
|
color: Color;
|
||||||
renderLayer: number;
|
renderLayer: number;
|
||||||
protected _renderLayer: number;
|
protected _renderLayer: number;
|
||||||
onEntityTransformChanged(comp: transform.Component): void;
|
onEntityTransformChanged(comp: ComponentTransform): void;
|
||||||
localOffset: es.Vector2;
|
localOffset: es.Vector2;
|
||||||
setLocalOffset(offset: es.Vector2): this;
|
setLocalOffset(offset: es.Vector2): this;
|
||||||
isVisible: boolean;
|
isVisible: boolean;
|
||||||
@@ -1878,7 +1876,7 @@ declare module es {
|
|||||||
*/
|
*/
|
||||||
getComponents(typeName: any, components?: any[]): any[];
|
getComponents(typeName: any, components?: any[]): any[];
|
||||||
update(): void;
|
update(): void;
|
||||||
onEntityTransformChanged(comp: transform.Component): void;
|
onEntityTransformChanged(comp: ComponentTransform): void;
|
||||||
onEntityEnabled(): void;
|
onEntityEnabled(): void;
|
||||||
onEntityDisabled(): void;
|
onEntityDisabled(): void;
|
||||||
debugRender(batcher: IBatcher): void;
|
debugRender(batcher: IBatcher): void;
|
||||||
@@ -4191,6 +4189,11 @@ declare module es {
|
|||||||
pinParticleAtIndex(index: number): LineSegments;
|
pinParticleAtIndex(index: number): LineSegments;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
declare module es {
|
||||||
|
class Tire extends Composite {
|
||||||
|
constructor(origin: Vector2, radius: number, segments: number, spokeStiffness?: number, treadStiffness?: number);
|
||||||
|
}
|
||||||
|
}
|
||||||
declare module es {
|
declare module es {
|
||||||
abstract class Constraint {
|
abstract class Constraint {
|
||||||
composite: Composite;
|
composite: Composite;
|
||||||
|
|||||||
+38
-15
@@ -1762,17 +1762,14 @@ var es;
|
|||||||
}());
|
}());
|
||||||
es.Scene = Scene;
|
es.Scene = Scene;
|
||||||
})(es || (es = {}));
|
})(es || (es = {}));
|
||||||
var transform;
|
|
||||||
(function (transform) {
|
|
||||||
var Component;
|
|
||||||
(function (Component) {
|
|
||||||
Component[Component["position"] = 0] = "position";
|
|
||||||
Component[Component["scale"] = 1] = "scale";
|
|
||||||
Component[Component["rotation"] = 2] = "rotation";
|
|
||||||
})(Component = transform.Component || (transform.Component = {}));
|
|
||||||
})(transform || (transform = {}));
|
|
||||||
var es;
|
var es;
|
||||||
(function (es) {
|
(function (es) {
|
||||||
|
var ComponentTransform;
|
||||||
|
(function (ComponentTransform) {
|
||||||
|
ComponentTransform[ComponentTransform["position"] = 0] = "position";
|
||||||
|
ComponentTransform[ComponentTransform["scale"] = 1] = "scale";
|
||||||
|
ComponentTransform[ComponentTransform["rotation"] = 2] = "rotation";
|
||||||
|
})(ComponentTransform = es.ComponentTransform || (es.ComponentTransform = {}));
|
||||||
var DirtyType;
|
var DirtyType;
|
||||||
(function (DirtyType) {
|
(function (DirtyType) {
|
||||||
DirtyType[DirtyType["clean"] = 0] = "clean";
|
DirtyType[DirtyType["clean"] = 0] = "clean";
|
||||||
@@ -2200,13 +2197,13 @@ var es;
|
|||||||
this.hierarchyDirty |= dirtyFlagType;
|
this.hierarchyDirty |= dirtyFlagType;
|
||||||
switch (dirtyFlagType) {
|
switch (dirtyFlagType) {
|
||||||
case DirtyType.positionDirty:
|
case DirtyType.positionDirty:
|
||||||
this.entity.onTransformChanged(transform.Component.position);
|
this.entity.onTransformChanged(ComponentTransform.position);
|
||||||
break;
|
break;
|
||||||
case DirtyType.rotationDirty:
|
case DirtyType.rotationDirty:
|
||||||
this.entity.onTransformChanged(transform.Component.rotation);
|
this.entity.onTransformChanged(ComponentTransform.rotation);
|
||||||
break;
|
break;
|
||||||
case DirtyType.scaleDirty:
|
case DirtyType.scaleDirty:
|
||||||
this.entity.onTransformChanged(transform.Component.scale);
|
this.entity.onTransformChanged(ComponentTransform.scale);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// 告诉子项发生了变换
|
// 告诉子项发生了变换
|
||||||
@@ -3369,13 +3366,13 @@ var es;
|
|||||||
};
|
};
|
||||||
Collider.prototype.onEntityTransformChanged = function (comp) {
|
Collider.prototype.onEntityTransformChanged = function (comp) {
|
||||||
switch (comp) {
|
switch (comp) {
|
||||||
case transform.Component.position:
|
case es.ComponentTransform.position:
|
||||||
this._isPositionDirty = true;
|
this._isPositionDirty = true;
|
||||||
break;
|
break;
|
||||||
case transform.Component.scale:
|
case es.ComponentTransform.scale:
|
||||||
this._isPositionDirty = true;
|
this._isPositionDirty = true;
|
||||||
break;
|
break;
|
||||||
case transform.Component.rotation:
|
case es.ComponentTransform.rotation:
|
||||||
this._isRotationDirty = true;
|
this._isRotationDirty = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -10774,6 +10771,32 @@ var es;
|
|||||||
es.LineSegments = LineSegments;
|
es.LineSegments = LineSegments;
|
||||||
})(es || (es = {}));
|
})(es || (es = {}));
|
||||||
var es;
|
var es;
|
||||||
|
(function (es) {
|
||||||
|
var Tire = /** @class */ (function (_super) {
|
||||||
|
__extends(Tire, _super);
|
||||||
|
function Tire(origin, radius, segments, spokeStiffness, treadStiffness) {
|
||||||
|
if (spokeStiffness === void 0) { spokeStiffness = 1; }
|
||||||
|
if (treadStiffness === void 0) { treadStiffness = 1; }
|
||||||
|
var _this = _super.call(this) || this;
|
||||||
|
var stride = 2 * Math.PI / segments;
|
||||||
|
for (var i = 0; i < segments; i++) {
|
||||||
|
var theta = i * stride;
|
||||||
|
_this.addParticle(new es.Particle(new es.Vector2(origin.x + Math.cos(theta) * radius, origin.y + Math.sin(theta) * radius)));
|
||||||
|
}
|
||||||
|
var centerParticle = _this.addParticle(new es.Particle(origin));
|
||||||
|
for (var i = 0; i < segments; i++) {
|
||||||
|
_this.addConstraint(new es.DistanceConstraint(_this.particles[i], _this.particles[(i + 1) % segments], treadStiffness));
|
||||||
|
_this.addConstraint(new es.DistanceConstraint(_this.particles[i], centerParticle, spokeStiffness))
|
||||||
|
.setCollidesWithColliders(false);
|
||||||
|
_this.addConstraint(new es.DistanceConstraint(_this.particles[i], _this.particles[(i + 5) % segments], treadStiffness));
|
||||||
|
}
|
||||||
|
return _this;
|
||||||
|
}
|
||||||
|
return Tire;
|
||||||
|
}(es.Composite));
|
||||||
|
es.Tire = Tire;
|
||||||
|
})(es || (es = {}));
|
||||||
|
var es;
|
||||||
(function (es) {
|
(function (es) {
|
||||||
var Constraint = /** @class */ (function () {
|
var Constraint = /** @class */ (function () {
|
||||||
function Constraint() {
|
function Constraint() {
|
||||||
|
|||||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
@@ -80,7 +80,7 @@ module es {
|
|||||||
* 当实体的位置改变时调用。这允许组件知道它们由于父实体的移动而移动了。
|
* 当实体的位置改变时调用。这允许组件知道它们由于父实体的移动而移动了。
|
||||||
* @param comp
|
* @param comp
|
||||||
*/
|
*/
|
||||||
public onEntityTransformChanged(comp: transform.Component) {
|
public onEntityTransformChanged(comp: ComponentTransform) {
|
||||||
}
|
}
|
||||||
|
|
||||||
public debugRender(batcher: IBatcher) {}
|
public debugRender(batcher: IBatcher) {}
|
||||||
|
|||||||
@@ -152,15 +152,15 @@ module es {
|
|||||||
this._isParentEntityAddedToScene = false;
|
this._isParentEntityAddedToScene = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public onEntityTransformChanged(comp: transform.Component) {
|
public onEntityTransformChanged(comp: ComponentTransform) {
|
||||||
switch (comp) {
|
switch (comp) {
|
||||||
case transform.Component.position:
|
case ComponentTransform.position:
|
||||||
this._isPositionDirty = true;
|
this._isPositionDirty = true;
|
||||||
break;
|
break;
|
||||||
case transform.Component.scale:
|
case ComponentTransform.scale:
|
||||||
this._isPositionDirty = true;
|
this._isPositionDirty = true;
|
||||||
break;
|
break;
|
||||||
case transform.Component.rotation:
|
case ComponentTransform.rotation:
|
||||||
this._isRotationDirty = true;
|
this._isRotationDirty = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ module es {
|
|||||||
|
|
||||||
protected _renderLayer: number = 0;
|
protected _renderLayer: number = 0;
|
||||||
|
|
||||||
public onEntityTransformChanged(comp: transform.Component) {
|
public onEntityTransformChanged(comp: ComponentTransform) {
|
||||||
this._areBoundsDirty = true;
|
this._areBoundsDirty = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -192,7 +192,7 @@ module es {
|
|||||||
return this.transform.worldToLocalTransform;
|
return this.transform.worldToLocalTransform;
|
||||||
}
|
}
|
||||||
|
|
||||||
public onTransformChanged(comp: transform.Component) {
|
public onTransformChanged(comp: ComponentTransform) {
|
||||||
// 通知我们的子项改变了位置
|
// 通知我们的子项改变了位置
|
||||||
this.components.onEntityTransformChanged(comp);
|
this.components.onEntityTransformChanged(comp);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,10 @@
|
|||||||
module transform {
|
module es {
|
||||||
export enum Component {
|
export enum ComponentTransform {
|
||||||
position,
|
position,
|
||||||
scale,
|
scale,
|
||||||
rotation,
|
rotation,
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
module es {
|
|
||||||
export enum DirtyType {
|
export enum DirtyType {
|
||||||
clean = 0,
|
clean = 0,
|
||||||
positionDirty = 1,
|
positionDirty = 1,
|
||||||
@@ -458,13 +456,13 @@ module es {
|
|||||||
|
|
||||||
switch (dirtyFlagType) {
|
switch (dirtyFlagType) {
|
||||||
case DirtyType.positionDirty:
|
case DirtyType.positionDirty:
|
||||||
this.entity.onTransformChanged(transform.Component.position);
|
this.entity.onTransformChanged(ComponentTransform.position);
|
||||||
break;
|
break;
|
||||||
case DirtyType.rotationDirty:
|
case DirtyType.rotationDirty:
|
||||||
this.entity.onTransformChanged(transform.Component.rotation);
|
this.entity.onTransformChanged(ComponentTransform.rotation);
|
||||||
break;
|
break;
|
||||||
case DirtyType.scaleDirty:
|
case DirtyType.scaleDirty:
|
||||||
this.entity.onTransformChanged(transform.Component.scale);
|
this.entity.onTransformChanged(ComponentTransform.scale);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -294,7 +294,7 @@ module es {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public onEntityTransformChanged(comp: transform.Component) {
|
public onEntityTransformChanged(comp: ComponentTransform) {
|
||||||
if (this._components.length > 0 ){
|
if (this._components.length > 0 ){
|
||||||
for (let i = 0, s = this._components.length; i < s; ++ i) {
|
for (let i = 0, s = this._components.length; i < s; ++ i) {
|
||||||
let component = this._components[i];
|
let component = this._components[i];
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
module es {
|
||||||
|
export class Tire extends Composite {
|
||||||
|
constructor(origin: Vector2, radius: number, segments: number, spokeStiffness: number = 1, treadStiffness: number = 1) {
|
||||||
|
super();
|
||||||
|
|
||||||
|
const stride = 2 * Math.PI / segments;
|
||||||
|
for (let i = 0; i < segments; i ++) {
|
||||||
|
const theta = i * stride;
|
||||||
|
this.addParticle(new Particle(new Vector2(origin.x + Math.cos(theta) * radius,
|
||||||
|
origin.y + Math.sin(theta) * radius)));
|
||||||
|
}
|
||||||
|
|
||||||
|
const centerParticle = this.addParticle(new Particle(origin));
|
||||||
|
|
||||||
|
for (let i = 0; i < segments; i ++) {
|
||||||
|
this.addConstraint(new DistanceConstraint(this.particles[i], this.particles[(i + 1) % segments], treadStiffness));
|
||||||
|
this.addConstraint(new DistanceConstraint(this.particles[i], centerParticle, spokeStiffness))
|
||||||
|
.setCollidesWithColliders(false);
|
||||||
|
this.addConstraint(new DistanceConstraint(this.particles[i], this.particles[(i + 5) % segments], treadStiffness));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user