Files
sdk4.0/src/DZ/XJ/BatchLoadObjModel/index.js
2025-07-03 13:54:01 +08:00

89 lines
2.3 KiB
JavaScript

import { getHost, getToken } from "../../../on";
import BaseLoadObjModel from '../../../Obj/Base/LoadObjModel'
import LoadObjModel from '../LoadObjModel'
export default class BatchLoadObjModel {
constructor(sdk, options = {}) {
this.sdk = sdk
this.options = { ...options }
this.options.show = (options.show || options.show === false) ? options.show : true
this.options.host = this.options.host || getHost()
this.objModelObject = []
this._loaded = false
this._loadEvent = void 0
this.on()
}
get show() {
return this.options.show
}
set show(v) {
if (typeof v === "boolean") {
this.options.show = v
for (let i = 0; i < this.objModelObject.length; i++) {
this.objModelObject[i].load(() => {
this.objModelObject[i].show = v
})
}
} else {
console.error("参数必须为boolean")
}
}
async on() {
let url = ""
if (this.options.host.endsWith("yjearth4.0"))
url = this.options.host + '/api/v1/source/obj'
else
url = this.options.host + '/yjearth4.0/api/v1/source/obj'
if (this.options.code) {
url = url + '?code=' + this.options.code
}
const res = await fetch(url, {
method: 'get',
headers: {
'Content-Type': 'application/json',
"token": getToken(),
"Authorization": "Bearer " + getToken(),
}
});
if (res.ok) {
this.objModelObject = []
this.list = (await res.json()).data;
if (this.options.count) {
this.list = this.list.splice(0, this.options.count)
}
for (let i = 0; i < this.list.length; i++) {
let options = JSON.parse(this.list[i].detail)
options.host = this.options.host
if (this.options.show || this.options.show === false) {
options.show = this.options.show
}
let object = new LoadObjModel(this.sdk, options);
this.objModelObject.push(object)
}
this._loaded = true
if (this._loadEvent) {
this._loadEvent()
}
}
}
remove() {
for (let i = 0; i < this.objModelObject.length; i++) {
this.objModelObject[i].load(() => {
this.objModelObject[i].remove()
})
}
}
load(callback) {
if (this._loaded) {
callback();
}
else {
this._loadEvent = callback
}
}
}