#28 支持objectgroup的tile类型
This commit is contained in:
Vendored
+4
-1
@@ -1792,7 +1792,10 @@ declare module es {
|
|||||||
static loadTmxText(text: TmxText, xText: any): TmxText;
|
static loadTmxText(text: TmxText, xText: any): TmxText;
|
||||||
static loadTmxAlignment(alignment: TmxAlignment, xText: any): TmxAlignment;
|
static loadTmxAlignment(alignment: TmxAlignment, xText: any): TmxAlignment;
|
||||||
static parsePoints(xPoints: any): any[];
|
static parsePoints(xPoints: any): any[];
|
||||||
static parsePoint(s: string): Vector2;
|
static parsePoint(pt: {
|
||||||
|
x: number;
|
||||||
|
y: number;
|
||||||
|
}): Vector2;
|
||||||
static parseTmxTerrain(xTerrain: any): TmxTerrain;
|
static parseTmxTerrain(xTerrain: any): TmxTerrain;
|
||||||
static parseTmxTileOffset(xTileOffset: any): TmxTileOffset;
|
static parseTmxTileOffset(xTileOffset: any): TmxTileOffset;
|
||||||
static loadTmxImage(image: TmxImage, xImage: any): Promise<TmxImage>;
|
static loadTmxImage(image: TmxImage, xImage: any): Promise<TmxImage>;
|
||||||
|
|||||||
@@ -7865,7 +7865,7 @@ var es;
|
|||||||
switch (_c.label) {
|
switch (_c.label) {
|
||||||
case 0:
|
case 0:
|
||||||
_i = 0, _a = ObjectUtils.elements(xEle).where(function (x) {
|
_i = 0, _a = ObjectUtils.elements(xEle).where(function (x) {
|
||||||
return x.type == "tilelayer" || x.name == "objectgroup" || x.name == "imagelayer" || x.name == "group";
|
return x.type == "tilelayer" || x.type == "objectgroup" || x.type == "imagelayer" || x.type == "group";
|
||||||
});
|
});
|
||||||
_c.label = 1;
|
_c.label = 1;
|
||||||
case 1:
|
case 1:
|
||||||
@@ -8232,9 +8232,9 @@ var es;
|
|||||||
drawOrderDict.set("index", es.DrawOrderType.TopDown);
|
drawOrderDict.set("index", es.DrawOrderType.TopDown);
|
||||||
var drawOrderValue = xObjectGroup["draworder"];
|
var drawOrderValue = xObjectGroup["draworder"];
|
||||||
if (drawOrderValue)
|
if (drawOrderValue)
|
||||||
group.drawOrder = drawOrderDict[drawOrderValue];
|
group.drawOrder = drawOrderDict.get(drawOrderValue);
|
||||||
group.objects = [];
|
group.objects = [];
|
||||||
for (var _i = 0, _a = xObjectGroup["object"]; _i < _a.length; _i++) {
|
for (var _i = 0, _a = xObjectGroup["objects"]; _i < _a.length; _i++) {
|
||||||
var e = _a[_i];
|
var e = _a[_i];
|
||||||
group.objects.push(this.loadTmxObject(new es.TmxObject(), map, e));
|
group.objects.push(this.loadTmxObject(new es.TmxObject(), map, e));
|
||||||
}
|
}
|
||||||
@@ -8312,21 +8312,16 @@ var es;
|
|||||||
return alignment;
|
return alignment;
|
||||||
};
|
};
|
||||||
TiledMapLoader.parsePoints = function (xPoints) {
|
TiledMapLoader.parsePoints = function (xPoints) {
|
||||||
var pointString = xPoints["points"];
|
|
||||||
var pointStringPair = pointString.split(' ');
|
|
||||||
var points = [];
|
var points = [];
|
||||||
var index = 0;
|
var index = 0;
|
||||||
for (var _i = 0, pointStringPair_1 = pointStringPair; _i < pointStringPair_1.length; _i++) {
|
for (var _i = 0, xPoints_1 = xPoints; _i < xPoints_1.length; _i++) {
|
||||||
var s = pointStringPair_1[_i];
|
var s = xPoints_1[_i];
|
||||||
points[index++] = this.parsePoint(s);
|
points[index++] = this.parsePoint(s);
|
||||||
}
|
}
|
||||||
return points;
|
return points;
|
||||||
};
|
};
|
||||||
TiledMapLoader.parsePoint = function (s) {
|
TiledMapLoader.parsePoint = function (pt) {
|
||||||
var pt = s.split(',');
|
return new es.Vector2(pt.x, pt.y);
|
||||||
var x = Number(pt[0]);
|
|
||||||
var y = Number(pt[1]);
|
|
||||||
return new es.Vector2(x, y);
|
|
||||||
};
|
};
|
||||||
TiledMapLoader.parseTmxTerrain = function (xTerrain) {
|
TiledMapLoader.parseTmxTerrain = function (xTerrain) {
|
||||||
var terrain = new es.TmxTerrain();
|
var terrain = new es.TmxTerrain();
|
||||||
@@ -8500,16 +8495,52 @@ var es;
|
|||||||
break;
|
break;
|
||||||
case es.TmxObjectType.tile:
|
case es.TmxObjectType.tile:
|
||||||
var tileset = objGroup.map.getTilesetForTileGid(obj.tile.gid);
|
var tileset = objGroup.map.getTilesetForTileGid(obj.tile.gid);
|
||||||
var sourceRect = tileset.tileRegions[obj.tile.gid];
|
var sourceRect = tileset.tileRegions.get(obj.tile.gid);
|
||||||
pos.y -= obj.tile.tilesetTile.image.height;
|
if (obj.tile.horizontalFlip && obj.tile.verticalFlip) {
|
||||||
if (!obj.tile.tilesetTile.image.texture)
|
pos.x += tileset.tileHeight + (sourceRect.height * scale.y - tileset.tileHeight);
|
||||||
container.addChild(obj.tile.tilesetTile.image.texture);
|
pos.y -= (sourceRect.width * scale.x - tileset.tileWidth);
|
||||||
obj.tile.tilesetTile.image.texture.x = pos.x;
|
}
|
||||||
obj.tile.tilesetTile.image.texture.y = pos.y;
|
else if (obj.tile.horizontalFlip) {
|
||||||
obj.tile.tilesetTile.image.texture.filters = [];
|
pos.x += tileset.tileWidth + (sourceRect.height * scale.y - tileset.tileHeight);
|
||||||
obj.tile.tilesetTile.image.texture.rotation = 0;
|
}
|
||||||
obj.tile.tilesetTile.image.texture.scaleX = scale.x;
|
else if (obj.tile.verticalFlip) {
|
||||||
obj.tile.tilesetTile.image.texture.scaleY = scale.y;
|
pos.y += (tileset.tileWidth - sourceRect.width * scale.x);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
pos.y += (tileset.tileHeight - sourceRect.height * scale.y);
|
||||||
|
}
|
||||||
|
if (container) {
|
||||||
|
var texture = tileset.image.bitmap.getTexture("" + obj.tile.gid);
|
||||||
|
if (!texture) {
|
||||||
|
texture = tileset.image.bitmap.createTexture("" + obj.tile.gid, sourceRect.x, sourceRect.y, sourceRect.width, sourceRect.height);
|
||||||
|
}
|
||||||
|
tileset.image.texture = new Bitmap(texture);
|
||||||
|
container.addChild(tileset.image.texture);
|
||||||
|
if (tileset.image.texture.x != pos.x)
|
||||||
|
tileset.image.texture.x = pos.x;
|
||||||
|
if (tileset.image.texture.y != pos.y)
|
||||||
|
tileset.image.texture.y = pos.y;
|
||||||
|
if (obj.tile.verticalFlip && obj.tile.horizontalFlip) {
|
||||||
|
tileset.image.texture.scaleX = -1;
|
||||||
|
tileset.image.texture.scaleY = -1;
|
||||||
|
}
|
||||||
|
else if (obj.tile.verticalFlip) {
|
||||||
|
tileset.image.texture.scaleX = scale.x;
|
||||||
|
tileset.image.texture.scaleY = -1;
|
||||||
|
}
|
||||||
|
else if (obj.tile.horizontalFlip) {
|
||||||
|
tileset.image.texture.scaleX = -1;
|
||||||
|
tileset.image.texture.scaleY = scale.y;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
tileset.image.texture.scaleX = scale.x;
|
||||||
|
tileset.image.texture.scaleY = scale.y;
|
||||||
|
}
|
||||||
|
if (tileset.image.texture.anchorOffsetX != 0)
|
||||||
|
tileset.image.texture.anchorOffsetX = 0;
|
||||||
|
if (tileset.image.texture.anchorOffsetY != 0)
|
||||||
|
tileset.image.texture.anchorOffsetY = 0;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case es.TmxObjectType.ellipse:
|
case es.TmxObjectType.ellipse:
|
||||||
pos = new es.Vector2(obj.x + obj.width * 0.5, obj.y + obj.height * 0.5).multiply(scale);
|
pos = new es.Vector2(obj.x + obj.width * 0.5, obj.y + obj.height * 0.5).multiply(scale);
|
||||||
@@ -8580,7 +8611,6 @@ var es;
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
ty += tileHeight;
|
ty += tileHeight;
|
||||||
// ty += (tileHeight - sourceRect.height * scale.y);
|
|
||||||
}
|
}
|
||||||
var pos = new es.Vector2(tx, ty).add(position);
|
var pos = new es.Vector2(tx, ty).add(position);
|
||||||
if (tile.tileset.image) {
|
if (tile.tileset.image) {
|
||||||
|
|||||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
@@ -12,15 +12,15 @@ module scene {
|
|||||||
public async onStart() {
|
public async onStart() {
|
||||||
let mapData = await es.TiledMapLoader.loadTmxMap(new es.TmxMap(), "orthogonal-outside_json");
|
let mapData = await es.TiledMapLoader.loadTmxMap(new es.TmxMap(), "orthogonal-outside_json");
|
||||||
let map = this.createEntity("map");
|
let map = this.createEntity("map");
|
||||||
map.addComponent(new es.TiledMapRenderer(mapData));
|
let tiledMap = map.addComponent(new es.TiledMapRenderer(mapData)).setRenderLayer(1);
|
||||||
console.log(mapData);
|
console.log(mapData);
|
||||||
|
|
||||||
let sprite = new es.Sprite(RES.getRes("checkbox_select_disabled_png"));
|
let sprite = new es.Sprite(RES.getRes("checkbox_select_disabled_png"));
|
||||||
this.createEntityAsync("bg").then(bg => {
|
this.createEntityAsync("bg").then(bg => {
|
||||||
bg.addComponent(new component.PlayerController());
|
bg.addComponent(new component.PlayerController());
|
||||||
bg.addComponent(new es.Mover());
|
bg.addComponent(new es.Mover());
|
||||||
let spriteRenderer = bg.addComponent(new es.ScrollingSpriteRenderer(sprite));
|
let spriteRenderer = bg.addComponent(new es.ScrollingSpriteRenderer(sprite)).setRenderLayer(0);
|
||||||
spriteRenderer.scrollX = -30;
|
// spriteRenderer.scrollX = -30;
|
||||||
// bg.addComponent(new es.BoxCollider());
|
// bg.addComponent(new es.BoxCollider());
|
||||||
|
|
||||||
this.camera.follow(bg, es.CameraStyle.lockOn);
|
this.camera.follow(bg, es.CameraStyle.lockOn);
|
||||||
|
|||||||
Vendored
+4
-1
@@ -1792,7 +1792,10 @@ declare module es {
|
|||||||
static loadTmxText(text: TmxText, xText: any): TmxText;
|
static loadTmxText(text: TmxText, xText: any): TmxText;
|
||||||
static loadTmxAlignment(alignment: TmxAlignment, xText: any): TmxAlignment;
|
static loadTmxAlignment(alignment: TmxAlignment, xText: any): TmxAlignment;
|
||||||
static parsePoints(xPoints: any): any[];
|
static parsePoints(xPoints: any): any[];
|
||||||
static parsePoint(s: string): Vector2;
|
static parsePoint(pt: {
|
||||||
|
x: number;
|
||||||
|
y: number;
|
||||||
|
}): Vector2;
|
||||||
static parseTmxTerrain(xTerrain: any): TmxTerrain;
|
static parseTmxTerrain(xTerrain: any): TmxTerrain;
|
||||||
static parseTmxTileOffset(xTileOffset: any): TmxTileOffset;
|
static parseTmxTileOffset(xTileOffset: any): TmxTileOffset;
|
||||||
static loadTmxImage(image: TmxImage, xImage: any): Promise<TmxImage>;
|
static loadTmxImage(image: TmxImage, xImage: any): Promise<TmxImage>;
|
||||||
|
|||||||
+55
-24
@@ -7865,7 +7865,7 @@ var es;
|
|||||||
switch (_c.label) {
|
switch (_c.label) {
|
||||||
case 0:
|
case 0:
|
||||||
_i = 0, _a = ObjectUtils.elements(xEle).where(function (x) {
|
_i = 0, _a = ObjectUtils.elements(xEle).where(function (x) {
|
||||||
return x.type == "tilelayer" || x.name == "objectgroup" || x.name == "imagelayer" || x.name == "group";
|
return x.type == "tilelayer" || x.type == "objectgroup" || x.type == "imagelayer" || x.type == "group";
|
||||||
});
|
});
|
||||||
_c.label = 1;
|
_c.label = 1;
|
||||||
case 1:
|
case 1:
|
||||||
@@ -8232,9 +8232,9 @@ var es;
|
|||||||
drawOrderDict.set("index", es.DrawOrderType.TopDown);
|
drawOrderDict.set("index", es.DrawOrderType.TopDown);
|
||||||
var drawOrderValue = xObjectGroup["draworder"];
|
var drawOrderValue = xObjectGroup["draworder"];
|
||||||
if (drawOrderValue)
|
if (drawOrderValue)
|
||||||
group.drawOrder = drawOrderDict[drawOrderValue];
|
group.drawOrder = drawOrderDict.get(drawOrderValue);
|
||||||
group.objects = [];
|
group.objects = [];
|
||||||
for (var _i = 0, _a = xObjectGroup["object"]; _i < _a.length; _i++) {
|
for (var _i = 0, _a = xObjectGroup["objects"]; _i < _a.length; _i++) {
|
||||||
var e = _a[_i];
|
var e = _a[_i];
|
||||||
group.objects.push(this.loadTmxObject(new es.TmxObject(), map, e));
|
group.objects.push(this.loadTmxObject(new es.TmxObject(), map, e));
|
||||||
}
|
}
|
||||||
@@ -8312,21 +8312,16 @@ var es;
|
|||||||
return alignment;
|
return alignment;
|
||||||
};
|
};
|
||||||
TiledMapLoader.parsePoints = function (xPoints) {
|
TiledMapLoader.parsePoints = function (xPoints) {
|
||||||
var pointString = xPoints["points"];
|
|
||||||
var pointStringPair = pointString.split(' ');
|
|
||||||
var points = [];
|
var points = [];
|
||||||
var index = 0;
|
var index = 0;
|
||||||
for (var _i = 0, pointStringPair_1 = pointStringPair; _i < pointStringPair_1.length; _i++) {
|
for (var _i = 0, xPoints_1 = xPoints; _i < xPoints_1.length; _i++) {
|
||||||
var s = pointStringPair_1[_i];
|
var s = xPoints_1[_i];
|
||||||
points[index++] = this.parsePoint(s);
|
points[index++] = this.parsePoint(s);
|
||||||
}
|
}
|
||||||
return points;
|
return points;
|
||||||
};
|
};
|
||||||
TiledMapLoader.parsePoint = function (s) {
|
TiledMapLoader.parsePoint = function (pt) {
|
||||||
var pt = s.split(',');
|
return new es.Vector2(pt.x, pt.y);
|
||||||
var x = Number(pt[0]);
|
|
||||||
var y = Number(pt[1]);
|
|
||||||
return new es.Vector2(x, y);
|
|
||||||
};
|
};
|
||||||
TiledMapLoader.parseTmxTerrain = function (xTerrain) {
|
TiledMapLoader.parseTmxTerrain = function (xTerrain) {
|
||||||
var terrain = new es.TmxTerrain();
|
var terrain = new es.TmxTerrain();
|
||||||
@@ -8500,16 +8495,52 @@ var es;
|
|||||||
break;
|
break;
|
||||||
case es.TmxObjectType.tile:
|
case es.TmxObjectType.tile:
|
||||||
var tileset = objGroup.map.getTilesetForTileGid(obj.tile.gid);
|
var tileset = objGroup.map.getTilesetForTileGid(obj.tile.gid);
|
||||||
var sourceRect = tileset.tileRegions[obj.tile.gid];
|
var sourceRect = tileset.tileRegions.get(obj.tile.gid);
|
||||||
pos.y -= obj.tile.tilesetTile.image.height;
|
if (obj.tile.horizontalFlip && obj.tile.verticalFlip) {
|
||||||
if (!obj.tile.tilesetTile.image.texture)
|
pos.x += tileset.tileHeight + (sourceRect.height * scale.y - tileset.tileHeight);
|
||||||
container.addChild(obj.tile.tilesetTile.image.texture);
|
pos.y -= (sourceRect.width * scale.x - tileset.tileWidth);
|
||||||
obj.tile.tilesetTile.image.texture.x = pos.x;
|
}
|
||||||
obj.tile.tilesetTile.image.texture.y = pos.y;
|
else if (obj.tile.horizontalFlip) {
|
||||||
obj.tile.tilesetTile.image.texture.filters = [];
|
pos.x += tileset.tileWidth + (sourceRect.height * scale.y - tileset.tileHeight);
|
||||||
obj.tile.tilesetTile.image.texture.rotation = 0;
|
}
|
||||||
obj.tile.tilesetTile.image.texture.scaleX = scale.x;
|
else if (obj.tile.verticalFlip) {
|
||||||
obj.tile.tilesetTile.image.texture.scaleY = scale.y;
|
pos.y += (tileset.tileWidth - sourceRect.width * scale.x);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
pos.y += (tileset.tileHeight - sourceRect.height * scale.y);
|
||||||
|
}
|
||||||
|
if (container) {
|
||||||
|
var texture = tileset.image.bitmap.getTexture("" + obj.tile.gid);
|
||||||
|
if (!texture) {
|
||||||
|
texture = tileset.image.bitmap.createTexture("" + obj.tile.gid, sourceRect.x, sourceRect.y, sourceRect.width, sourceRect.height);
|
||||||
|
}
|
||||||
|
tileset.image.texture = new Bitmap(texture);
|
||||||
|
container.addChild(tileset.image.texture);
|
||||||
|
if (tileset.image.texture.x != pos.x)
|
||||||
|
tileset.image.texture.x = pos.x;
|
||||||
|
if (tileset.image.texture.y != pos.y)
|
||||||
|
tileset.image.texture.y = pos.y;
|
||||||
|
if (obj.tile.verticalFlip && obj.tile.horizontalFlip) {
|
||||||
|
tileset.image.texture.scaleX = -1;
|
||||||
|
tileset.image.texture.scaleY = -1;
|
||||||
|
}
|
||||||
|
else if (obj.tile.verticalFlip) {
|
||||||
|
tileset.image.texture.scaleX = scale.x;
|
||||||
|
tileset.image.texture.scaleY = -1;
|
||||||
|
}
|
||||||
|
else if (obj.tile.horizontalFlip) {
|
||||||
|
tileset.image.texture.scaleX = -1;
|
||||||
|
tileset.image.texture.scaleY = scale.y;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
tileset.image.texture.scaleX = scale.x;
|
||||||
|
tileset.image.texture.scaleY = scale.y;
|
||||||
|
}
|
||||||
|
if (tileset.image.texture.anchorOffsetX != 0)
|
||||||
|
tileset.image.texture.anchorOffsetX = 0;
|
||||||
|
if (tileset.image.texture.anchorOffsetY != 0)
|
||||||
|
tileset.image.texture.anchorOffsetY = 0;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case es.TmxObjectType.ellipse:
|
case es.TmxObjectType.ellipse:
|
||||||
pos = new es.Vector2(obj.x + obj.width * 0.5, obj.y + obj.height * 0.5).multiply(scale);
|
pos = new es.Vector2(obj.x + obj.width * 0.5, obj.y + obj.height * 0.5).multiply(scale);
|
||||||
@@ -8572,14 +8603,14 @@ var es;
|
|||||||
ty -= (sourceRect.width * scale.x - tileWidth);
|
ty -= (sourceRect.width * scale.x - tileWidth);
|
||||||
}
|
}
|
||||||
else if (tile.horizontalFlip) {
|
else if (tile.horizontalFlip) {
|
||||||
|
tx += tileWidth + (sourceRect.height * scale.y - tileHeight);
|
||||||
ty += tileHeight;
|
ty += tileHeight;
|
||||||
}
|
}
|
||||||
else if (tile.verticalFlip) {
|
else if (tile.verticalFlip) {
|
||||||
tx += tileWidth + (sourceRect.height * scale.y - tileHeight);
|
|
||||||
ty += (tileWidth - sourceRect.width * scale.x);
|
ty += (tileWidth - sourceRect.width * scale.x);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
ty += (tileHeight - sourceRect.height * scale.y);
|
ty += tileHeight;
|
||||||
}
|
}
|
||||||
var pos = new es.Vector2(tx, ty).add(position);
|
var pos = new es.Vector2(tx, ty).add(position);
|
||||||
if (tile.tileset.image) {
|
if (tile.tileset.image) {
|
||||||
|
|||||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
@@ -59,7 +59,7 @@ module es {
|
|||||||
*/
|
*/
|
||||||
public static async parseLayers(container: any, xEle: any, map: TmxMap, width: number, height: number) {
|
public static async parseLayers(container: any, xEle: any, map: TmxMap, width: number, height: number) {
|
||||||
for (let e of ObjectUtils.elements(xEle).where(x => {
|
for (let e of ObjectUtils.elements(xEle).where(x => {
|
||||||
return x.type == "tilelayer" || x.name == "objectgroup" || x.name == "imagelayer" || x.name == "group"
|
return x.type == "tilelayer" || x.type == "objectgroup" || x.type == "imagelayer" || x.type == "group"
|
||||||
})) {
|
})) {
|
||||||
let layer: ITmxLayer;
|
let layer: ITmxLayer;
|
||||||
switch (e.type) {
|
switch (e.type) {
|
||||||
@@ -394,10 +394,10 @@ module es {
|
|||||||
|
|
||||||
let drawOrderValue = xObjectGroup["draworder"];
|
let drawOrderValue = xObjectGroup["draworder"];
|
||||||
if (drawOrderValue)
|
if (drawOrderValue)
|
||||||
group.drawOrder = drawOrderDict[drawOrderValue];
|
group.drawOrder = drawOrderDict.get(drawOrderValue);
|
||||||
|
|
||||||
group.objects = [];
|
group.objects = [];
|
||||||
for (let e of xObjectGroup["object"])
|
for (let e of xObjectGroup["objects"])
|
||||||
group.objects.push(this.loadTmxObject(new TmxObject(), map, e));
|
group.objects.push(this.loadTmxObject(new TmxObject(), map, e));
|
||||||
group.properties = this.parsePropertyDict(xObjectGroup["properties"]);
|
group.properties = this.parsePropertyDict(xObjectGroup["properties"]);
|
||||||
return group;
|
return group;
|
||||||
@@ -479,24 +479,18 @@ module es {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static parsePoints(xPoints: any) {
|
public static parsePoints(xPoints: any) {
|
||||||
let pointString: string = xPoints["points"];
|
|
||||||
let pointStringPair = pointString.split(' ');
|
|
||||||
let points = [];
|
let points = [];
|
||||||
|
|
||||||
let index = 0;
|
let index = 0;
|
||||||
for (let s of pointStringPair)
|
for (let s of xPoints)
|
||||||
points[index++] = this.parsePoint(s);
|
points[index++] = this.parsePoint(s);
|
||||||
return points;
|
return points;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static parsePoint(s: string) {
|
public static parsePoint(pt: {x: number, y: number}) {
|
||||||
let pt = s.split(',');
|
return new Vector2(pt.x, pt.y);
|
||||||
let x = Number(pt[0]);
|
|
||||||
let y = Number(pt[1]);
|
|
||||||
return new Vector2(x, y);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static parseTmxTerrain(xTerrain: any) {
|
public static parseTmxTerrain(xTerrain: any) {
|
||||||
let terrain = new TmxTerrain();
|
let terrain = new TmxTerrain();
|
||||||
terrain.name = xTerrain["name"];
|
terrain.name = xTerrain["name"];
|
||||||
|
|||||||
@@ -112,7 +112,6 @@ module es {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
let pos = Vector2.add(position, new Vector2(obj.x, obj.y).multiply(scale));
|
let pos = Vector2.add(position, new Vector2(obj.x, obj.y).multiply(scale));
|
||||||
switch (obj.objectType) {
|
switch (obj.objectType) {
|
||||||
case TmxObjectType.basic:
|
case TmxObjectType.basic:
|
||||||
@@ -133,17 +132,49 @@ module es {
|
|||||||
break;
|
break;
|
||||||
case TmxObjectType.tile:
|
case TmxObjectType.tile:
|
||||||
let tileset = objGroup.map.getTilesetForTileGid(obj.tile.gid);
|
let tileset = objGroup.map.getTilesetForTileGid(obj.tile.gid);
|
||||||
let sourceRect = tileset.tileRegions[obj.tile.gid];
|
let sourceRect = tileset.tileRegions.get(obj.tile.gid);
|
||||||
pos.y -= obj.tile.tilesetTile.image.height;
|
|
||||||
|
|
||||||
if (!obj.tile.tilesetTile.image.texture)
|
if (obj.tile.horizontalFlip && obj.tile.verticalFlip) {
|
||||||
container.addChild(obj.tile.tilesetTile.image.texture);
|
pos.x += tileset.tileHeight + (sourceRect.height * scale.y - tileset.tileHeight);
|
||||||
obj.tile.tilesetTile.image.texture.x = pos.x;
|
pos.y -= (sourceRect.width * scale.x - tileset.tileWidth);
|
||||||
obj.tile.tilesetTile.image.texture.y = pos.y;
|
}
|
||||||
obj.tile.tilesetTile.image.texture.filters = [];
|
else if (obj.tile.horizontalFlip) {
|
||||||
obj.tile.tilesetTile.image.texture.rotation = 0;
|
pos.x += tileset.tileWidth + (sourceRect.height * scale.y - tileset.tileHeight);
|
||||||
obj.tile.tilesetTile.image.texture.scaleX = scale.x;
|
}
|
||||||
obj.tile.tilesetTile.image.texture.scaleY = scale.y;
|
else if (obj.tile.verticalFlip) {
|
||||||
|
pos.y += (tileset.tileWidth - sourceRect.width * scale.x);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
pos.y += (tileset.tileHeight - sourceRect.height * scale.y);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (container){
|
||||||
|
let texture: egret.Texture = tileset.image.bitmap.getTexture(`${obj.tile.gid}`);
|
||||||
|
if (!texture) {
|
||||||
|
texture = tileset.image.bitmap.createTexture(`${obj.tile.gid}`, sourceRect.x, sourceRect.y, sourceRect.width, sourceRect.height);
|
||||||
|
}
|
||||||
|
|
||||||
|
tileset.image.texture = new Bitmap(texture);
|
||||||
|
container.addChild(tileset.image.texture);
|
||||||
|
|
||||||
|
if (tileset.image.texture.x != pos.x) tileset.image.texture.x = pos.x;
|
||||||
|
if (tileset.image.texture.y != pos.y) tileset.image.texture.y = pos.y;
|
||||||
|
if (obj.tile.verticalFlip && obj.tile.horizontalFlip){
|
||||||
|
tileset.image.texture.scaleX = -1;
|
||||||
|
tileset.image.texture.scaleY = -1;
|
||||||
|
}else if (obj.tile.verticalFlip){
|
||||||
|
tileset.image.texture.scaleX = scale.x;
|
||||||
|
tileset.image.texture.scaleY = -1;
|
||||||
|
}else if(obj.tile.horizontalFlip){
|
||||||
|
tileset.image.texture.scaleX = -1;
|
||||||
|
tileset.image.texture.scaleY = scale.y;
|
||||||
|
}else{
|
||||||
|
tileset.image.texture.scaleX = scale.x;
|
||||||
|
tileset.image.texture.scaleY = scale.y;
|
||||||
|
}
|
||||||
|
if (tileset.image.texture.anchorOffsetX != 0) tileset.image.texture.anchorOffsetX = 0;
|
||||||
|
if (tileset.image.texture.anchorOffsetY != 0) tileset.image.texture.anchorOffsetY = 0;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case TmxObjectType.ellipse:
|
case TmxObjectType.ellipse:
|
||||||
pos = new Vector2(obj.x + obj.width * 0.5, obj.y + obj.height * 0.5).multiply(scale);
|
pos = new Vector2(obj.x + obj.width * 0.5, obj.y + obj.height * 0.5).multiply(scale);
|
||||||
|
|||||||
Reference in New Issue
Block a user