修复tiledmap tmxDirectory不正确问题

This commit is contained in:
yhh
2020-08-25 16:19:56 +08:00
parent 0bb09f6442
commit 794e33a0a0
13 changed files with 77 additions and 46 deletions
+1 -1
View File
@@ -1836,7 +1836,7 @@ declare module es {
declare module es {
class TiledMapLoader {
static loadTmxMap(map: TmxMap, filePath: string): Promise<TmxMap>;
static loadTmxMapData(map: TmxMap, xMap: any): Promise<TmxMap>;
static loadTmxMapData(map: TmxMap, xMap: any, info: any): Promise<TmxMap>;
static parseLayers(container: any, xEle: any, map: TmxMap, width: number, height: number, tmxDirectory: string): Promise<void>;
static loadTmxGroup(group: TmxGroup, map: TmxMap, xGroup: any, width: number, height: number, tmxDirectory: string): Promise<TmxGroup>;
static loadTmxImageLayer(layer: TmxImageLayer, map: TmxMap, xImageLayer: any, tmxDirectory: string): Promise<TmxImageLayer>;
+24 -13
View File
@@ -2769,7 +2769,7 @@ var es;
RenderableComponent.prototype.isVisibleFromCamera = function (camera) {
if (!camera)
return false;
this.isVisible = camera.bounds.intersects(this.displayObject.getBounds().union(this.bounds));
this.isVisible = camera.bounds.intersects(this.bounds);
return this.isVisible;
};
RenderableComponent.prototype.setRenderLayer = function (renderLayer) {
@@ -2950,11 +2950,10 @@ var es;
};
SpriteRenderer.prototype.render = function (camera) {
this.sync(camera);
var afterPos = new es.Vector2(this.entity.position.x + this.localOffset.x - camera.position.x + camera.origin.x, this.entity.position.y + this.localOffset.y - camera.position.y + camera.origin.y);
if (this.displayObject.x != afterPos.x)
this.displayObject.x = afterPos.x;
if (this.displayObject.y != afterPos.y)
this.displayObject.y = afterPos.y;
if (this.displayObject.x != this.bounds.x)
this.displayObject.x = this.bounds.x;
if (this.displayObject.y != this.bounds.y)
this.displayObject.y = this.bounds.y;
};
return SpriteRenderer;
}(es.RenderableComponent));
@@ -3845,20 +3844,26 @@ var es;
if (poly.points.length >= 2) {
this.polygonShape.graphics.beginFill(es.Colors.colliderEdge, 0);
this.polygonShape.graphics.lineStyle(es.Size.lineSizeMultiplier, es.Colors.colliderEdge);
for (var i = 1; i < poly.points.length; i++)
this.polygonShape.graphics.lineTo(poly.position.x + poly.points[i].x, poly.position.y + poly.points[i].y);
for (var i = 1; i < poly.points.length; i++) {
if (i == 1) {
this.polygonShape.graphics.moveTo(poly.position.x + poly.points[i].x, poly.position.y + poly.points[i].y);
}
else {
this.polygonShape.graphics.lineTo(poly.position.x + poly.points[i].x, poly.position.y + poly.points[i].y);
}
}
this.polygonShape.graphics.lineTo(poly.position.x + poly.points[poly.points.length - 1].x, poly.position.y + poly.points[0].y);
this.polygonShape.graphics.endFill();
}
this.pixelShape1.graphics.clear();
this.pixelShape1.graphics.beginFill(es.Colors.colliderPosition, 0);
this.pixelShape1.graphics.lineStyle(4 * es.Size.lineSizeMultiplier, es.Colors.colliderPosition);
this.pixelShape1.graphics.lineTo(this.entity.transform.position.x, this.entity.transform.position.y);
this.pixelShape1.graphics.moveTo(this.entity.transform.position.x, this.entity.transform.position.y);
this.pixelShape1.graphics.endFill();
this.pixelShape2.graphics.clear();
this.pixelShape2.graphics.beginFill(es.Colors.colliderCenter, 0);
this.pixelShape2.graphics.lineStyle(2 * es.Size.lineSizeMultiplier, es.Colors.colliderCenter);
this.pixelShape2.graphics.lineTo(this.entity.transform.position.x + this.shape.center.x, this.entity.transform.position.y + this.shape.center.y);
this.pixelShape2.graphics.moveTo(this.entity.transform.position.x + this.shape.center.x, this.entity.transform.position.y + this.shape.center.y);
this.pixelShape2.graphics.endFill();
};
BoxCollider.prototype.toString = function () {
@@ -8148,9 +8153,9 @@ var es;
}
TiledMapLoader.loadTmxMap = function (map, filePath) {
var xMap = RES.getRes(filePath);
return this.loadTmxMapData(map, xMap);
return this.loadTmxMapData(map, xMap, RES.getResourceInfo(filePath));
};
TiledMapLoader.loadTmxMapData = function (map, xMap) {
TiledMapLoader.loadTmxMapData = function (map, xMap, info) {
return __awaiter(this, void 0, void 0, function () {
var _i, _a, e, tileset;
return __generator(this, function (_b) {
@@ -8172,6 +8177,7 @@ var es;
map.properties = this.parsePropertyDict(xMap["properties"]);
map.maxTileWidth = map.tileWidth;
map.maxTileHeight = map.tileHeight;
map.tmxDirectory = info.root + info.url.replace(".", "_").replace(info.name, "");
map.tilesets = [];
_i = 0, _a = xMap["tilesets"];
_b.label = 1;
@@ -8918,7 +8924,12 @@ var es;
obj.shape.graphics.clear();
obj.shape.graphics.lineStyle(1, 0xa0a0a4);
for (var i = 0; i < points.length; i++) {
obj.shape.graphics.lineTo(points[i].x, points[i].y);
if (i == 0) {
obj.shape.graphics.moveTo(points[i].x, points[i].y);
}
else {
obj.shape.graphics.lineTo(points[i].x, points[i].y);
}
}
obj.shape.graphics.endFill();
debugRender(obj, pos);
+1 -1
View File
File diff suppressed because one or more lines are too long
@@ -120,8 +120,14 @@ module es {
if (poly.points.length >= 2){
this.polygonShape.graphics.beginFill(Colors.colliderEdge, 0);
this.polygonShape.graphics.lineStyle(Size.lineSizeMultiplier, Colors.colliderEdge);
for (let i = 1; i < poly.points.length; i ++)
this.polygonShape.graphics.lineTo(poly.position.x + poly.points[i].x, poly.position.y + poly.points[i].y);
for (let i = 1; i < poly.points.length; i ++){
if (i == 1){
this.polygonShape.graphics.moveTo(poly.position.x + poly.points[i].x, poly.position.y + poly.points[i].y);
}else{
this.polygonShape.graphics.lineTo(poly.position.x + poly.points[i].x, poly.position.y + poly.points[i].y);
}
}
this.polygonShape.graphics.lineTo(poly.position.x + poly.points[poly.points.length - 1].x, poly.position.y + poly.points[0].y);
this.polygonShape.graphics.endFill();
}
@@ -129,13 +135,13 @@ module es {
this.pixelShape1.graphics.clear();
this.pixelShape1.graphics.beginFill(Colors.colliderPosition, 0);
this.pixelShape1.graphics.lineStyle(4 * Size.lineSizeMultiplier, Colors.colliderPosition);
this.pixelShape1.graphics.lineTo(this.entity.transform.position.x, this.entity.transform.position.y);
this.pixelShape1.graphics.moveTo(this.entity.transform.position.x, this.entity.transform.position.y);
this.pixelShape1.graphics.endFill();
this.pixelShape2.graphics.clear();
this.pixelShape2.graphics.beginFill(Colors.colliderCenter, 0);
this.pixelShape2.graphics.lineStyle(2 * Size.lineSizeMultiplier, Colors.colliderCenter);
this.pixelShape2.graphics.lineTo(this.entity.transform.position.x + this.shape.center.x,
this.pixelShape2.graphics.moveTo(this.entity.transform.position.x + this.shape.center.x,
this.entity.transform.position.y + this.shape.center.y);
this.pixelShape2.graphics.endFill();
}
@@ -148,7 +148,7 @@ module es {
if (!camera)
return false;
this.isVisible = camera.bounds.intersects(this.displayObject.getBounds().union(this.bounds));
this.isVisible = camera.bounds.intersects(this.bounds);
return this.isVisible;
}
+2 -4
View File
@@ -123,10 +123,8 @@ module es {
public render(camera: Camera) {
this.sync(camera);
let afterPos = new Vector2(this.entity.position.x + this.localOffset.x - camera.position.x + camera.origin.x,
this.entity.position.y + this.localOffset.y - camera.position.y + camera.origin.y);
if (this.displayObject.x != afterPos.x) this.displayObject.x = afterPos.x;
if (this.displayObject.y != afterPos.y) this.displayObject.y = afterPos.y;
if (this.displayObject.x != this.bounds.x) this.displayObject.x = this.bounds.x;
if (this.displayObject.y != this.bounds.y) this.displayObject.y = this.bounds.y;
}
}
}
+3 -2
View File
@@ -4,10 +4,10 @@ module es {
export class TiledMapLoader {
public static loadTmxMap(map: TmxMap, filePath: string) {
let xMap = RES.getRes(filePath);
return this.loadTmxMapData(map, xMap);
return this.loadTmxMapData(map, xMap, RES.getResourceInfo(filePath));
}
public static async loadTmxMapData(map: TmxMap, xMap: any) {
public static async loadTmxMapData(map: TmxMap, xMap: any, info: any) {
map.version = xMap["version"];
map.tiledVersion = xMap["tiledversion"];
map.width = xMap["width"];
@@ -29,6 +29,7 @@ module es {
// 我们保持记录的最大瓷砖大小的情况下,图像tileset随机大小
map.maxTileWidth = map.tileWidth;
map.maxTileHeight = map.tileHeight;
map.tmxDirectory = info.root + info.url.replace(".", "_").replace(info.name, "");
map.tilesets = [];
for (let e of xMap["tilesets"]) {
+5 -1
View File
@@ -202,7 +202,11 @@ module es {
obj.shape.graphics.clear();
obj.shape.graphics.lineStyle(1, 0xa0a0a4);
for (let i = 0; i < points.length; i ++){
obj.shape.graphics.lineTo(points[i].x, points[i].y);
if (i == 0){
obj.shape.graphics.moveTo(points[i].x, points[i].y);
}else{
obj.shape.graphics.lineTo(points[i].x, points[i].y);
}
}
obj.shape.graphics.endFill();
debugRender(obj, pos);