新增tire。修改transform.Component为es.ComponentTransform

This commit is contained in:
yhh
2021-07-04 21:03:30 +08:00
parent dc3d639824
commit 77ad112f67
11 changed files with 6591 additions and 40 deletions

6504
extensions/ecs-tween/lib/framework.d.ts vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -193,7 +193,7 @@ declare module es {
* 当实体的位置改变时调用。这允许组件知道它们由于父实体的移动而移动了。
* @param comp
*/
onEntityTransformChanged(comp: transform.Component): void;
onEntityTransformChanged(comp: ComponentTransform): void;
debugRender(batcher: IBatcher): void;
/**
*当父实体或此组件启用时调用
@@ -311,7 +311,7 @@ declare module es {
readonly worldInverseTransform: Matrix2D;
readonly localToWorldTransform: Matrix2D;
readonly worldToLocalTransform: Matrix2D;
onTransformChanged(comp: transform.Component): void;
onTransformChanged(comp: ComponentTransform): void;
setParent(parent: Entity): any;
setParent(parent: Transform): any;
setPosition(x: number, y: number): this;
@@ -760,14 +760,12 @@ declare module es {
getEntityProcessor<T extends EntitySystem>(type: new (...args: any[]) => T): T;
}
}
declare module transform {
enum Component {
declare module es {
enum ComponentTransform {
position = 0,
scale = 1,
rotation = 2
}
}
declare module es {
enum DirtyType {
clean = 0,
positionDirty = 1,
@@ -1390,7 +1388,7 @@ declare module es {
setShouldColliderScaleAndRotateWithTransform(shouldColliderScaleAndRotationWithTransform: boolean): Collider;
onAddedToEntity(): void;
onRemovedFromEntity(): void;
onEntityTransformChanged(comp: transform.Component): void;
onEntityTransformChanged(comp: ComponentTransform): void;
onEnabled(): void;
onDisabled(): void;
/**
@@ -1517,7 +1515,7 @@ declare module es {
color: Color;
renderLayer: number;
protected _renderLayer: number;
onEntityTransformChanged(comp: transform.Component): void;
onEntityTransformChanged(comp: ComponentTransform): void;
localOffset: es.Vector2;
setLocalOffset(offset: es.Vector2): this;
isVisible: boolean;
@@ -1878,7 +1876,7 @@ declare module es {
*/
getComponents(typeName: any, components?: any[]): any[];
update(): void;
onEntityTransformChanged(comp: transform.Component): void;
onEntityTransformChanged(comp: ComponentTransform): void;
onEntityEnabled(): void;
onEntityDisabled(): void;
debugRender(batcher: IBatcher): void;
@@ -4191,6 +4189,11 @@ declare module es {
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 {
abstract class Constraint {
composite: Composite;

View File

@@ -1762,17 +1762,14 @@ var es;
}());
es.Scene = Scene;
})(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;
(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;
(function (DirtyType) {
DirtyType[DirtyType["clean"] = 0] = "clean";
@@ -2200,13 +2197,13 @@ var es;
this.hierarchyDirty |= dirtyFlagType;
switch (dirtyFlagType) {
case DirtyType.positionDirty:
this.entity.onTransformChanged(transform.Component.position);
this.entity.onTransformChanged(ComponentTransform.position);
break;
case DirtyType.rotationDirty:
this.entity.onTransformChanged(transform.Component.rotation);
this.entity.onTransformChanged(ComponentTransform.rotation);
break;
case DirtyType.scaleDirty:
this.entity.onTransformChanged(transform.Component.scale);
this.entity.onTransformChanged(ComponentTransform.scale);
break;
}
// 告诉子项发生了变换
@@ -3369,13 +3366,13 @@ var es;
};
Collider.prototype.onEntityTransformChanged = function (comp) {
switch (comp) {
case transform.Component.position:
case es.ComponentTransform.position:
this._isPositionDirty = true;
break;
case transform.Component.scale:
case es.ComponentTransform.scale:
this._isPositionDirty = true;
break;
case transform.Component.rotation:
case es.ComponentTransform.rotation:
this._isRotationDirty = true;
break;
}
@@ -10774,6 +10771,32 @@ var es;
es.LineSegments = LineSegments;
})(es || (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) {
var Constraint = /** @class */ (function () {
function Constraint() {

File diff suppressed because one or more lines are too long

View File

@@ -80,7 +80,7 @@ module es {
* 当实体的位置改变时调用。这允许组件知道它们由于父实体的移动而移动了。
* @param comp
*/
public onEntityTransformChanged(comp: transform.Component) {
public onEntityTransformChanged(comp: ComponentTransform) {
}
public debugRender(batcher: IBatcher) {}

View File

@@ -152,15 +152,15 @@ module es {
this._isParentEntityAddedToScene = false;
}
public onEntityTransformChanged(comp: transform.Component) {
public onEntityTransformChanged(comp: ComponentTransform) {
switch (comp) {
case transform.Component.position:
case ComponentTransform.position:
this._isPositionDirty = true;
break;
case transform.Component.scale:
case ComponentTransform.scale:
this._isPositionDirty = true;
break;
case transform.Component.rotation:
case ComponentTransform.rotation:
this._isRotationDirty = true;
break;
}

View File

@@ -32,7 +32,7 @@ module es {
protected _renderLayer: number = 0;
public onEntityTransformChanged(comp: transform.Component) {
public onEntityTransformChanged(comp: ComponentTransform) {
this._areBoundsDirty = true;
}

View File

@@ -192,7 +192,7 @@ module es {
return this.transform.worldToLocalTransform;
}
public onTransformChanged(comp: transform.Component) {
public onTransformChanged(comp: ComponentTransform) {
// 通知我们的子项改变了位置
this.components.onEntityTransformChanged(comp);
}

View File

@@ -1,12 +1,10 @@
module transform {
export enum Component {
module es {
export enum ComponentTransform {
position,
scale,
rotation,
}
}
module es {
export enum DirtyType {
clean = 0,
positionDirty = 1,
@@ -458,13 +456,13 @@ module es {
switch (dirtyFlagType) {
case DirtyType.positionDirty:
this.entity.onTransformChanged(transform.Component.position);
this.entity.onTransformChanged(ComponentTransform.position);
break;
case DirtyType.rotationDirty:
this.entity.onTransformChanged(transform.Component.rotation);
this.entity.onTransformChanged(ComponentTransform.rotation);
break;
case DirtyType.scaleDirty:
this.entity.onTransformChanged(transform.Component.scale);
this.entity.onTransformChanged(ComponentTransform.scale);
break;
}

View File

@@ -294,7 +294,7 @@ module es {
}
}
public onEntityTransformChanged(comp: transform.Component) {
public onEntityTransformChanged(comp: ComponentTransform) {
if (this._components.length > 0 ){
for (let i = 0, s = this._components.length; i < s; ++ i) {
let component = this._components[i];

View File

@@ -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));
}
}
}
}