WaterControl/library/imports/0b/0b9eeb66-4947-4945-9090-4bdd53602c3f.js
2024-07-10 18:35:07 +08:00

180 lines
5.1 KiB
JavaScript

"use strict";
cc._RF.push(module, '0b9eetmSUdJRZCQS91TYCw/', 'TmoTiledMap');
// Script/TmoTiledMap.js
"use strict";
// Learn cc.Class:
// - https://docs.cocos.com/creator/manual/en/scripting/class.html
// Learn Attribute:
// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html
// Learn life-cycle callbacks:
// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html
var TmoTiledLayer = require("./TmoTiledLayer");
var TmoObjectGroup = require("./TmoObjectGroup");
cc.Class({
"extends": cc.TiledMap,
properties: {
objectMaterial: cc.Material,
noColor: true,
singleTexture: true,
_objectTextures: []
},
_applyFile: function _applyFile() {
if (!this.objectMaterial) {
cc.error("TiledmapOptimize: 未设置objectMaterial!");
return;
}
this._super();
},
_buildLayerAndGroup: function _buildLayerAndGroup() {
var tilesets = this._tilesets;
var texGrids = this._texGrids;
var animations = this._animations;
texGrids.length = 0;
for (var i = 0, l = tilesets.length; i < l; ++i) {
var tilesetInfo = tilesets[i];
if (!tilesetInfo) continue;
cc.TiledMap.fillTextureGrids(tilesetInfo, texGrids, i);
}
this._fillAniGrids(texGrids, animations);
var layers = this._layers;
var groups = this._groups;
var images = this._images;
var oldNodeNames = {};
for (var _i = 0, n = layers.length; _i < n; _i++) {
oldNodeNames[layers[_i].node._name] = true;
}
for (var _i2 = 0, _n = groups.length; _i2 < _n; _i2++) {
oldNodeNames[groups[_i2].node._name] = true;
}
for (var _i3 = 0, _n2 = images.length; _i3 < _n2; _i3++) {
oldNodeNames[images[_i3]._name] = true;
}
layers = this._layers = [];
groups = this._groups = [];
images = this._images = [];
var mapInfo = this._mapInfo;
var node = this.node;
var layerInfos = mapInfo.getAllChildren();
var textures = this._textures;
var maxWidth = 0;
var maxHeight = 0;
this._objectTextures = [];
var firstTmxLayer = null;
if (layerInfos && layerInfos.length > 0) {
for (var _i4 = 0, len = layerInfos.length; _i4 < len; _i4++) {
var layerInfo = layerInfos[_i4];
var name = layerInfo.name;
var child = this.node.getChildByName(name);
oldNodeNames[name] = false;
if (!child) {
child = new cc.Node();
child.name = name;
node.addChild(child);
}
child.setSiblingIndex(_i4);
child.active = layerInfo.visible;
if (layerInfo instanceof cc.TMXLayerInfo) {
// 此处修改 改为创建MyTiledLayer
var layer = child.getComponent(TmoTiledLayer);
if (!layer) {
layer = child.addComponent(TmoTiledLayer);
} // 修改结束
// 此处修改 传递firstTmxLayer 记录firstTmxLayer
layer._init(layerInfo, mapInfo, tilesets, textures, texGrids, this, firstTmxLayer);
firstTmxLayer = firstTmxLayer || layer; // 修改结束
// tell the layerinfo to release the ownership of the tiles map.
layerInfo.ownTiles = false;
layers.push(layer);
} else if (layerInfo instanceof cc.TMXObjectGroupInfo) {
var group = child.getComponent(TmoObjectGroup);
if (!group) {
group = child.addComponent(TmoObjectGroup);
}
group._init(layerInfo, mapInfo, texGrids, this);
groups.push(group);
} else if (layerInfo instanceof cc.TMXImageLayerInfo) {
var texture = layerInfo.sourceImage;
child.opacity = layerInfo.opacity;
child.layerInfo = layerInfo;
child._offset = cc.v2(layerInfo.offset.x, -layerInfo.offset.y);
var image = child.getComponent(cc.Sprite);
if (!image) {
image = child.addComponent(cc.Sprite);
}
var spf = image.spriteFrame || new cc.SpriteFrame();
spf.setTexture(texture);
image.spriteFrame = spf;
child.width = texture.width;
child.height = texture.height;
images.push(child);
}
maxWidth = Math.max(maxWidth, child.width);
maxHeight = Math.max(maxHeight, child.height);
}
} // 设置材质的texture属性
var objectTextures = this._objectTextures;
for (var _i5 = 0; _i5 < objectTextures.length; _i5++) {
var idx = _i5 === 0 ? '' : _i5;
this.objectMaterial.setProperty("texture" + idx, objectTextures[_i5], 0);
}
var children = node.children;
for (var _i6 = 0, _n3 = children.length; _i6 < _n3; _i6++) {
var c = children[_i6];
if (oldNodeNames[c._name]) {
c.destroy();
}
}
this.node.width = maxWidth;
this.node.height = maxHeight;
this._syncAnchorPoint();
},
getObjectMaterial: function getObjectMaterial() {
return this.objectMaterial;
},
isNoColor: function isNoColor() {
return this.noColor;
},
isSingleTexture: function isSingleTexture() {
return this.singleTexture;
},
getObjectTextures: function getObjectTextures() {
return this._objectTextures;
}
});
cc._RF.pop();