mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 07:19:05 +02:00
YEp it s working
This commit is contained in:
parent
d33c75865e
commit
f097d66721
3 changed files with 18 additions and 3 deletions
|
@ -57,6 +57,7 @@ void CauterizedModel::createVisibleRenderItemSet() {
|
||||||
Q_ASSERT(_modelMeshRenderItems.isEmpty());
|
Q_ASSERT(_modelMeshRenderItems.isEmpty());
|
||||||
|
|
||||||
_modelMeshRenderItems.clear();
|
_modelMeshRenderItems.clear();
|
||||||
|
_modelMeshRenderItemShapes.clear();
|
||||||
|
|
||||||
Transform transform;
|
Transform transform;
|
||||||
transform.setTranslation(_translation);
|
transform.setTranslation(_translation);
|
||||||
|
@ -80,6 +81,7 @@ void CauterizedModel::createVisibleRenderItemSet() {
|
||||||
for (int partIndex = 0; partIndex < numParts; partIndex++) {
|
for (int partIndex = 0; partIndex < numParts; partIndex++) {
|
||||||
auto ptr = std::make_shared<CauterizedMeshPartPayload>(shared_from_this(), i, partIndex, shapeID, transform, offset);
|
auto ptr = std::make_shared<CauterizedMeshPartPayload>(shared_from_this(), i, partIndex, shapeID, transform, offset);
|
||||||
_modelMeshRenderItems << std::static_pointer_cast<ModelMeshPartPayload>(ptr);
|
_modelMeshRenderItems << std::static_pointer_cast<ModelMeshPartPayload>(ptr);
|
||||||
|
_modelMeshRenderItemShapes.emplace_back(ShapeInfo{ (int)i });
|
||||||
shapeID++;
|
shapeID++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -212,7 +214,11 @@ void CauterizedModel::updateRenderItems() {
|
||||||
QList<render::ItemID> keys = self->getRenderItems().keys();
|
QList<render::ItemID> keys = self->getRenderItems().keys();
|
||||||
int meshIndex{ 0 };
|
int meshIndex{ 0 };
|
||||||
//foreach (auto itemID, keys) {
|
//foreach (auto itemID, keys) {
|
||||||
for (auto itemID : self->_modelMeshRenderItemIDs) {
|
// for (auto itemID : self->_modelMeshRenderItemIDs) {
|
||||||
|
for (int i = 0; i < self->_modelMeshRenderItemIDs.size(); i++) {
|
||||||
|
auto itemID = self->_modelMeshRenderItemIDs[i];
|
||||||
|
auto meshIndex = self->_modelMeshRenderItemShapes[i].meshIndex;
|
||||||
|
|
||||||
const Model::MeshState& state = self->getMeshState(meshIndex);
|
const Model::MeshState& state = self->getMeshState(meshIndex);
|
||||||
auto clusterMatrices(state.clusterMatrices);
|
auto clusterMatrices(state.clusterMatrices);
|
||||||
const Model::MeshState& cState = self->getCauterizeMeshState(meshIndex);
|
const Model::MeshState& cState = self->getCauterizeMeshState(meshIndex);
|
||||||
|
|
|
@ -241,10 +241,14 @@ void Model::updateRenderItems() {
|
||||||
uint32_t deleteGeometryCounter = self->_deleteGeometryCounter;
|
uint32_t deleteGeometryCounter = self->_deleteGeometryCounter;
|
||||||
|
|
||||||
render::Transaction transaction;
|
render::Transaction transaction;
|
||||||
foreach (auto itemID, self->_modelMeshRenderItemsMap.keys()) {
|
// foreach (auto itemID, self->_modelMeshRenderItemsMap.keys()) {
|
||||||
// for (auto itemID : self->_modelMeshRenderItemIDs) {
|
// for (auto itemID : self->_modelMeshRenderItemIDs) {
|
||||||
|
for (int i = 0; i < self->_modelMeshRenderItemIDs.size(); i++) {
|
||||||
|
auto itemID = self->_modelMeshRenderItemIDs[i];
|
||||||
|
auto meshIndex = self->_modelMeshRenderItemShapes[i].meshIndex;
|
||||||
if (self && self->isLoaded()) {
|
if (self && self->isLoaded()) {
|
||||||
int meshIndex = std::dynamic_pointer_cast<ModelMeshPartPayload>(self->_modelMeshRenderItemsMap[itemID])->_meshIndex;
|
//int meshIndex = std::dynamic_pointer_cast<ModelMeshPartPayload>(self->_modelMeshRenderItemsMap[itemID])->_meshIndex;
|
||||||
|
// int meshIndex = std::dynamic_pointer_cast<ModelMeshPartPayload>(self->_modelMeshRenderItemsMap[itemID])->_meshIndex;
|
||||||
const Model::MeshState& state = self->getMeshState(meshIndex);
|
const Model::MeshState& state = self->getMeshState(meshIndex);
|
||||||
auto clusterMatrices(state.clusterMatrices);
|
auto clusterMatrices(state.clusterMatrices);
|
||||||
|
|
||||||
|
@ -704,6 +708,7 @@ void Model::removeFromScene(const render::ScenePointer& scene, render::Transacti
|
||||||
_modelMeshRenderItemIDs.clear();
|
_modelMeshRenderItemIDs.clear();
|
||||||
_modelMeshRenderItemsMap.clear();
|
_modelMeshRenderItemsMap.clear();
|
||||||
_modelMeshRenderItems.clear();
|
_modelMeshRenderItems.clear();
|
||||||
|
_modelMeshRenderItemShapes.clear();
|
||||||
|
|
||||||
foreach(auto item, _collisionRenderItemsMap.keys()) {
|
foreach(auto item, _collisionRenderItemsMap.keys()) {
|
||||||
transaction.removeItem(item);
|
transaction.removeItem(item);
|
||||||
|
@ -1282,6 +1287,7 @@ void Model::createVisibleRenderItemSet() {
|
||||||
Q_ASSERT(_modelMeshRenderItems.isEmpty());
|
Q_ASSERT(_modelMeshRenderItems.isEmpty());
|
||||||
|
|
||||||
_modelMeshRenderItems.clear();
|
_modelMeshRenderItems.clear();
|
||||||
|
_modelMeshRenderItemShapes.clear();
|
||||||
|
|
||||||
Transform transform;
|
Transform transform;
|
||||||
transform.setTranslation(_translation);
|
transform.setTranslation(_translation);
|
||||||
|
@ -1304,6 +1310,7 @@ void Model::createVisibleRenderItemSet() {
|
||||||
int numParts = (int)mesh->getNumParts();
|
int numParts = (int)mesh->getNumParts();
|
||||||
for (int partIndex = 0; partIndex < numParts; partIndex++) {
|
for (int partIndex = 0; partIndex < numParts; partIndex++) {
|
||||||
_modelMeshRenderItems << std::make_shared<ModelMeshPartPayload>(shared_from_this(), i, partIndex, shapeID, transform, offset);
|
_modelMeshRenderItems << std::make_shared<ModelMeshPartPayload>(shared_from_this(), i, partIndex, shapeID, transform, offset);
|
||||||
|
_modelMeshRenderItemShapes.emplace_back(ShapeInfo{ (int)i });
|
||||||
shapeID++;
|
shapeID++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -388,6 +388,8 @@ protected:
|
||||||
QVector<std::shared_ptr<ModelMeshPartPayload>> _modelMeshRenderItems;
|
QVector<std::shared_ptr<ModelMeshPartPayload>> _modelMeshRenderItems;
|
||||||
QMap<render::ItemID, render::PayloadPointer> _modelMeshRenderItemsMap;
|
QMap<render::ItemID, render::PayloadPointer> _modelMeshRenderItemsMap;
|
||||||
render::ItemIDs _modelMeshRenderItemIDs;
|
render::ItemIDs _modelMeshRenderItemIDs;
|
||||||
|
using ShapeInfo = struct { int meshIndex; };
|
||||||
|
std::vector<ShapeInfo> _modelMeshRenderItemShapes;
|
||||||
|
|
||||||
bool _addedToScene { false }; // has been added to scene
|
bool _addedToScene { false }; // has been added to scene
|
||||||
bool _needsFixupInScene { true }; // needs to be removed/re-added to scene
|
bool _needsFixupInScene { true }; // needs to be removed/re-added to scene
|
||||||
|
|
Loading…
Reference in a new issue