implement picker/getNameForEntity

This commit is contained in:
Nick Fisher
2023-10-11 11:10:47 +08:00
parent 79292914d2
commit 98bcf5d7ad
25 changed files with 704 additions and 393 deletions

View File

@@ -38,9 +38,10 @@ using namespace filament;
using namespace filament::gltfio;
AssetManager::AssetManager(const ResourceLoaderWrapper* const resourceLoaderWrapper,
NameComponentManager *ncm,
Engine *engine,
Scene *scene)
NameComponentManager* ncm,
Engine* engine,
Scene* scene,
const char* uberArchivePath)
: _resourceLoaderWrapper(resourceLoaderWrapper),
_ncm(ncm),
_engine(engine),
@@ -52,15 +53,17 @@ _scene(scene) {
_gltfResourceLoader = new ResourceLoader({.engine = _engine,
.normalizeSkinningWeights = true });
// TODO - allow passing uberz archive
// e.g. auto uberArchivePath = "packages/polyvox_filament/assets/default.uberz"
// auto uberdata = resourceLoaderWrapper->load(uberArchivePath);
// if (!uberdata.data) {
// Log("Failed to load ubershader material. This is fatal.");
// }
// _ubershaderProvider = gltfio::createUbershaderProvider(_engine, uberdata.data, uberdata.size);
_ubershaderProvider = gltfio::createUbershaderProvider(
if(uberArchivePath) {
auto uberdata = resourceLoaderWrapper->load(uberArchivePath);
if (!uberdata.data) {
Log("Failed to load ubershader material. This is fatal.");
}
_ubershaderProvider = gltfio::createUbershaderProvider(_engine, uberdata.data, uberdata.size);
resourceLoaderWrapper->free(uberdata);
} else {
_ubershaderProvider = gltfio::createUbershaderProvider(
_engine, UBERARCHIVE_DEFAULT_DATA, UBERARCHIVE_DEFAULT_SIZE);
}
Log("Created ubershader provider.");
EntityManager &em = EntityManager::get();
@@ -943,6 +946,16 @@ size_t AssetManager::getLightEntityCount(EntityId entity) const noexcept {
return asset.mAsset->getLightEntityCount();
}
const char* AssetManager::getNameForEntity(EntityId entityId) {
const auto& entity = Entity::import(entityId);
auto nameInstance = _ncm->getInstance(entity);
if(!nameInstance.isValid()) {
Log("Failed to find name instance for entity ID %d", entityId);
return nullptr;
}
return _ncm->getName(nameInstance);
}
} // namespace polyvox