mirror of
https://github.com/MihailRis/voxelcore.git
synced 2026-10-05 02:51:49 +00:00
fix dead skeleton model references
This commit is contained in:
parent
b2b889bd7c
commit
9d3a60328f
3 changed files with 12 additions and 10 deletions
|
|
@ -13,7 +13,7 @@ using namespace rigging;
|
|||
|
||||
void ModelReference::refresh(const Assets& assets) {
|
||||
if (updateFlag) {
|
||||
model = assets.get<model::Model>(name);
|
||||
model = assets.getShared<model::Model>(name);
|
||||
updateFlag = false;
|
||||
}
|
||||
}
|
||||
|
|
@ -29,14 +29,14 @@ Bone::Bone(
|
|||
name(std::move(name)),
|
||||
bones(std::move(bones)),
|
||||
offset(offset),
|
||||
model({model, nullptr, true}) {
|
||||
model({model, {}, true}) {
|
||||
}
|
||||
|
||||
void Bone::setModel(const std::string& name) {
|
||||
if (model.name == name) {
|
||||
return;
|
||||
}
|
||||
model = {name, nullptr, true};
|
||||
model = {name, {}, true};
|
||||
}
|
||||
|
||||
Skeleton::Skeleton(std::shared_ptr<const SkeletonConfig> config)
|
||||
|
|
@ -184,12 +184,14 @@ void SkeletonConfig::render(
|
|||
continue;
|
||||
}
|
||||
node->model.refresh(assets);
|
||||
auto model = node->model.model;
|
||||
auto model = node->model.model.lock().get(); // TODO: cache model pointer during frame
|
||||
auto& modelOverride = skeleton.modelOverrides.at(i);
|
||||
if (modelOverride.updateFlag) {
|
||||
modelOverride.refresh(assets);
|
||||
}
|
||||
model = modelOverride.model ? modelOverride.model : model;
|
||||
if (auto foundOverride = modelOverride.model.lock()) {
|
||||
model = foundOverride.get();
|
||||
}
|
||||
if (model) {
|
||||
batch.draw(
|
||||
skeleton.calculated.matrices[i],
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue