@minecraft/creator-tools
Version:
Minecraft Creator Tools command line and libraries.
85 lines (84 loc) • 4.73 kB
JavaScript
;
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.TextureReferenceInfoGeneratorTest = void 0;
const ProjectInfoItem_1 = __importDefault(require("./ProjectInfoItem"));
const IProjectItemData_1 = require("../app/IProjectItemData");
const IInfoItemData_1 = require("./IInfoItemData");
const BlocksCatalogDefinition_1 = __importDefault(require("../minecraft/BlocksCatalogDefinition"));
const TerrainTextureCatalogDefinition_1 = __importDefault(require("../minecraft/TerrainTextureCatalogDefinition"));
const ItemTextureCatalogDefinition_1 = __importDefault(require("../minecraft/ItemTextureCatalogDefinition"));
const ContentIndex_1 = require("../core/ContentIndex");
var TextureReferenceInfoGeneratorTest;
(function (TextureReferenceInfoGeneratorTest) {
TextureReferenceInfoGeneratorTest[TextureReferenceInfoGeneratorTest["textureReferences"] = 101] = "textureReferences";
})(TextureReferenceInfoGeneratorTest || (exports.TextureReferenceInfoGeneratorTest = TextureReferenceInfoGeneratorTest = {}));
/**
* Aggregates texture reference information from various catalog definitions.
*
* @see {@link ../../public/data/forms/mctoolsval/textureref.form.json} for topic definitions
*/
class TextureReferenceInfoGenerator {
id = "TEXTUREREF";
title = "Texture References";
performAddOnValidations = false;
summarize(info, infoSet) {
info.textureCount = infoSet.getSummedDataValue(this.id, TextureReferenceInfoGeneratorTest.textureReferences);
}
async generate(project, contentIndex) {
const items = [];
const textureRefCountPi = new ProjectInfoItem_1.default(IInfoItemData_1.InfoItemType.featureAggregate, this.id, TextureReferenceInfoGeneratorTest.textureReferences, "Texture References");
items.push(textureRefCountPi);
const itemsCopy = project.getItemsCopy();
for (const projectItem of itemsCopy) {
if (projectItem.itemType === IProjectItemData_1.ProjectItemType.blocksCatalogResourceJson) {
if (!projectItem.isContentLoaded) {
await projectItem.loadContent();
}
if (projectItem.primaryFile) {
const blockCat = await BlocksCatalogDefinition_1.default.ensureOnFile(projectItem.primaryFile);
if (blockCat && blockCat.blocksCatalog && projectItem.projectPath) {
const textureRefs = blockCat.getTextureReferences();
for (const textureRef of textureRefs) {
contentIndex.insert(textureRef, projectItem.projectPath, ContentIndex_1.AnnotationCategory.blockTextureReferenceDependent);
}
}
}
}
else if (projectItem.itemType === IProjectItemData_1.ProjectItemType.terrainTextureCatalogResourceJson) {
if (!projectItem.isContentLoaded) {
await projectItem.loadContent();
}
if (projectItem.primaryFile) {
const blockCat = await TerrainTextureCatalogDefinition_1.default.ensureOnFile(projectItem.primaryFile);
if (blockCat && projectItem.projectPath) {
const textureRefs = blockCat.getTextureReferences();
for (const textureRef of textureRefs) {
contentIndex.insert(textureRef, projectItem.projectPath, ContentIndex_1.AnnotationCategory.blockTextureReferenceSource);
}
}
}
}
else if (projectItem.itemType === IProjectItemData_1.ProjectItemType.itemTextureJson) {
if (!projectItem.isContentLoaded) {
await projectItem.loadContent();
}
if (projectItem.primaryFile) {
const itemCat = await ItemTextureCatalogDefinition_1.default.ensureOnFile(projectItem.primaryFile);
if (itemCat && projectItem.projectPath) {
const textureRefs = itemCat.getTextureReferences();
for (const textureRef of textureRefs) {
contentIndex.insert(textureRef, projectItem.projectPath, ContentIndex_1.AnnotationCategory.itemTextureReferenceSource);
}
}
}
}
}
return items;
}
}
exports.default = TextureReferenceInfoGenerator;