138 lines
4.6 KiB
JavaScript
138 lines
4.6 KiB
JavaScript
|
let defaultPolygonPath = "assets/";
|
|||
|
let polygonNameHeader = "polygon_";
|
|||
|
let polygonName = "";
|
|||
|
Editor.Panel.extend({
|
|||
|
style: `
|
|||
|
:host { margin: 5px; }
|
|||
|
h2 { color: #f90; }
|
|||
|
.bottom {
|
|||
|
height: 30px;
|
|||
|
}
|
|||
|
`,
|
|||
|
|
|||
|
template: `
|
|||
|
<h2 style="text-align:center">輸出Component</h2>
|
|||
|
<hr />
|
|||
|
<div>
|
|||
|
這邊用PhysicsPolygonCollider的Points來做示範<br>
|
|||
|
記得Component要掛,不然就會自動幫忙掛
|
|||
|
</div>
|
|||
|
<hr />
|
|||
|
<div>
|
|||
|
要輸出的Node
|
|||
|
<ui-node class="flex-1" type="cc.Node" typename="Node" droppable="node" id="node"></ui-node>
|
|||
|
</div>
|
|||
|
<hr />
|
|||
|
<div>
|
|||
|
FilePath: <span id="label"></span>
|
|||
|
<ui-input value="path" id="inputPath"}></ui-input>
|
|||
|
</div>
|
|||
|
<hr />
|
|||
|
<div>
|
|||
|
<span id="polygonLabel"></span>
|
|||
|
<ui-num-input style="width: 130px;" step=1 min=1 id="changePolygon"></ui-num-input>
|
|||
|
</div>
|
|||
|
<hr />
|
|||
|
<div style="text-align:right">
|
|||
|
<ui-button id="btn" class="green">生成表</ui-button>
|
|||
|
<ui-button id="deleteBtn" class="red">刪除表</ui-button>
|
|||
|
<ui-button id="updateBtn" class="blue">刷新資源</ui-button>
|
|||
|
</div>
|
|||
|
`,
|
|||
|
|
|||
|
$: {
|
|||
|
/** 保存按鈕 */
|
|||
|
btn: "#btn",
|
|||
|
/** 固定路徑前label */
|
|||
|
label: "#label",
|
|||
|
/** 檔案名稱前label */
|
|||
|
polygonLabel:"#polygonLabel",
|
|||
|
/** 固定路徑 */
|
|||
|
inputPath:"#inputPath",
|
|||
|
/** 更改檔案名稱 */
|
|||
|
changePolygon:"#changePolygon",
|
|||
|
/** 刪除按鈕 */
|
|||
|
deleteBtn:"#deleteBtn",
|
|||
|
/** 刷新按鈕 */
|
|||
|
updateBtn:"#updateBtn",
|
|||
|
/** Node */
|
|||
|
node:"#node"
|
|||
|
},
|
|||
|
|
|||
|
ready () {
|
|||
|
Editor.Ipc.sendToMain("output-component:panel-load-finish");
|
|||
|
this.init();
|
|||
|
this.saveBtnClick();
|
|||
|
this.setPolygonConfigurationDefaultPath();
|
|||
|
this.changePolygonEvent();
|
|||
|
this.deleteBtnClick();
|
|||
|
this.updateBtnClick();
|
|||
|
this.resetBtnClick();
|
|||
|
|
|||
|
},
|
|||
|
init() {
|
|||
|
this.$label.innerText = "(默認文件路徑)";
|
|||
|
this.$polygonLabel.innerText = "(檔案名稱): " + polygonNameHeader;
|
|||
|
this.$changePolygon.value = 1;
|
|||
|
polygonName = polygonNameHeader + this.$changePolygon.value;
|
|||
|
},
|
|||
|
/** 更改名稱事件 */
|
|||
|
changePolygonEvent() {
|
|||
|
this.$changePolygon.addEventListener("change",() => {
|
|||
|
polygonName = polygonNameHeader + this.$changePolygon.value;
|
|||
|
})
|
|||
|
},
|
|||
|
/** 重置場景按鈕點擊 */
|
|||
|
resetBtnClick() {
|
|||
|
this.$resetBtn.addEventListener("confirm",() => {
|
|||
|
Editor.Scene.callSceneScript("output-component", "reset-scene", function (err, res) {
|
|||
|
});
|
|||
|
})
|
|||
|
},
|
|||
|
/** 刷新按鈕點擊事件 */
|
|||
|
updateBtnClick() {
|
|||
|
this.$updateBtn.addEventListener("confirm",() => {
|
|||
|
Editor.assetdb.refresh("db://" + defaultPolygonPath, function (err, results) {
|
|||
|
if(err) {
|
|||
|
Editor.log("刷新文件目錄失敗!!!")
|
|||
|
return;
|
|||
|
}
|
|||
|
Editor.log("刷新文件目錄成功!!!")
|
|||
|
});
|
|||
|
})
|
|||
|
},
|
|||
|
/** 刪除按鈕點擊事件 */
|
|||
|
deleteBtnClick() {
|
|||
|
this.$deleteBtn.addEventListener("confirm",() => {
|
|||
|
Editor.Ipc.sendToMain("output-component:delete-click", defaultPolygonPath + polygonName);
|
|||
|
})
|
|||
|
},
|
|||
|
/** 保存按鈕點擊事件 */
|
|||
|
saveBtnClick() {
|
|||
|
this.$btn.addEventListener("confirm", () => {
|
|||
|
Editor.Ipc.sendToMain("output-component:save-click", defaultPolygonPath + polygonName, this.$node);
|
|||
|
});
|
|||
|
},
|
|||
|
/** 設置默認的配置路徑 */
|
|||
|
setPolygonConfigurationDefaultPath() {
|
|||
|
this.$inputPath.addEventListener("confirm",() => {
|
|||
|
defaultPolygonPath = this.$inputPath.value;
|
|||
|
if(defaultPolygonPath === "") {
|
|||
|
defaultPolygonPath = "assets/";
|
|||
|
}
|
|||
|
Editor.Ipc.sendToMain("output-component:set-path", defaultPolygonPath);
|
|||
|
})
|
|||
|
},
|
|||
|
messages : {
|
|||
|
"setDefaultPath":function (event,...agrs) {
|
|||
|
if(agrs[0] && agrs[0] != "") {
|
|||
|
defaultPolygonPath = agrs[0];
|
|||
|
this.$inputPath.value = agrs[0];
|
|||
|
}
|
|||
|
if (event.reply) {
|
|||
|
//if no error, the first argument should be null
|
|||
|
event.reply(null, "Fine, thank you!");
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
});
|