wle-aligner
Version:
Align two Wonderland Engine projects so that they can share, as much as possible, the same resources and structure
74 lines • 3.22 kB
JavaScript
import { JSONAST, ObjectToken } from "@playkostudios/jsonc-ast";
export class Project {
_myJSONAST = null;
myPath = null;
myRoot = null;
myObjects = null;
myMeshes = null;
myTextures = null;
myImages = null;
myMaterials = null;
myShaders = null;
mySettings = null;
myAnimations = null;
mySkins = null;
myPipelines = null;
myFiles = null;
myFonts = null;
myLanguages = null;
constructor() {
}
getProjectName() {
let projectName = null;
if (this._myJSONAST != null) {
const projectSettingsToCheck = this.mySettings.maybeGetValueTokenOfKey("project");
if (projectSettingsToCheck != null) {
const projectSettings = ObjectToken.assert(projectSettingsToCheck);
projectName = (projectSettings.maybeGetValueOfKey("name") ?? null);
}
}
return projectName;
}
getAllObjectTokens() {
const objectTokens = [];
if (this._myJSONAST != null) {
objectTokens.push(this.myObjects);
objectTokens.push(this.myMeshes);
objectTokens.push(this.myTextures);
objectTokens.push(this.myImages);
objectTokens.push(this.myMaterials);
objectTokens.push(this.myShaders);
objectTokens.push(this.myAnimations);
objectTokens.push(this.mySkins);
objectTokens.push(this.myPipelines);
objectTokens.push(this.myFiles);
objectTokens.push(this.myFonts);
objectTokens.push(this.myLanguages);
}
return objectTokens;
}
async load(projectPath) {
this.myPath = projectPath;
this._myJSONAST = new JSONAST();
this.myRoot = ObjectToken.assert((await this._myJSONAST.parse(this.myPath)).getValueToken());
this.myObjects = ObjectToken.assert(this.myRoot.getValueTokenOfKey("objects"));
this.myMeshes = ObjectToken.assert(this.myRoot.getValueTokenOfKey("meshes"));
this.myTextures = ObjectToken.assert(this.myRoot.getValueTokenOfKey("textures"));
this.myImages = ObjectToken.assert(this.myRoot.getValueTokenOfKey("images"));
this.myMaterials = ObjectToken.assert(this.myRoot.getValueTokenOfKey("materials"));
this.myShaders = ObjectToken.assert(this.myRoot.getValueTokenOfKey("shaders"));
this.mySettings = ObjectToken.assert(this.myRoot.getValueTokenOfKey("settings"));
this.myAnimations = ObjectToken.assert(this.myRoot.getValueTokenOfKey("animations"));
this.mySkins = ObjectToken.assert(this.myRoot.getValueTokenOfKey("skins"));
this.myPipelines = ObjectToken.assert(this.myRoot.getValueTokenOfKey("pipelines"));
this.myFiles = ObjectToken.assert(this.myRoot.getValueTokenOfKey("files"));
this.myFonts = ObjectToken.assert(this.myRoot.getValueTokenOfKey("fonts"));
this.myLanguages = ObjectToken.assert(this.myRoot.getValueTokenOfKey("languages"));
}
async save(newPath = "") {
if (this._myJSONAST != null) {
await this._myJSONAST.writeToFile(newPath.length > 0 ? newPath : this.myPath);
}
}
}
//# sourceMappingURL=project.js.map