mirror of
https://github.com/JulianGro/overte.git
synced 2025-04-07 07:02:46 +02:00
Change semantic for removing transitions
This commit is contained in:
parent
833946ceb3
commit
faf5db5476
2 changed files with 25 additions and 10 deletions
|
@ -36,7 +36,7 @@ void Transaction::resetTransitionOnItem(ItemID id, Transition::Type transition,
|
|||
}
|
||||
|
||||
void Transaction::removeTransitionFromItem(ItemID id) {
|
||||
_resetTransitions.emplace_back(id, Transition::NONE, render::Item::INVALID_ITEM_ID);
|
||||
_removeTransitions.emplace_back(id);
|
||||
}
|
||||
|
||||
void Transaction::queryTransitionOnItem(ItemID id, TransitionQueryFunc func) {
|
||||
|
@ -73,6 +73,7 @@ void Transaction::reserve(const std::vector<Transaction>& transactionContainer)
|
|||
size_t updatedItemsCount = 0;
|
||||
size_t resetSelectionsCount = 0;
|
||||
size_t resetTransitionsCount = 0;
|
||||
size_t removeTransitionsCount = 0;
|
||||
size_t queriedTransitionsCount = 0;
|
||||
size_t transitionFinishedOperatorsCount = 0;
|
||||
size_t highlightResetsCount = 0;
|
||||
|
@ -85,6 +86,7 @@ void Transaction::reserve(const std::vector<Transaction>& transactionContainer)
|
|||
updatedItemsCount += transaction._updatedItems.size();
|
||||
resetSelectionsCount += transaction._resetSelections.size();
|
||||
resetTransitionsCount += transaction._resetTransitions.size();
|
||||
removeTransitionsCount += transaction._removeTransitions.size();
|
||||
queriedTransitionsCount += transaction._queriedTransitions.size();
|
||||
transitionFinishedOperatorsCount += transaction._transitionFinishedOperators.size();
|
||||
highlightResetsCount += transaction._highlightResets.size();
|
||||
|
@ -97,6 +99,7 @@ void Transaction::reserve(const std::vector<Transaction>& transactionContainer)
|
|||
_updatedItems.reserve(updatedItemsCount);
|
||||
_resetSelections.reserve(resetSelectionsCount);
|
||||
_resetTransitions.reserve(resetTransitionsCount);
|
||||
_removeTransitions.reserve(removeTransitionsCount);
|
||||
_queriedTransitions.reserve(queriedTransitionsCount);
|
||||
_transitionFinishedOperators.reserve(transitionFinishedOperatorsCount);
|
||||
_highlightResets.reserve(highlightResetsCount);
|
||||
|
@ -141,6 +144,7 @@ void Transaction::merge(Transaction&& transaction) {
|
|||
moveElements(_updatedItems, transaction._updatedItems);
|
||||
moveElements(_resetSelections, transaction._resetSelections);
|
||||
moveElements(_resetTransitions, transaction._resetTransitions);
|
||||
moveElements(_removeTransitions, transaction._removeTransitions);
|
||||
moveElements(_queriedTransitions, transaction._queriedTransitions);
|
||||
moveElements(_transitionFinishedOperators, transaction._transitionFinishedOperators);
|
||||
moveElements(_highlightResets, transaction._highlightResets);
|
||||
|
@ -154,6 +158,7 @@ void Transaction::merge(const Transaction& transaction) {
|
|||
copyElements(_updatedItems, transaction._updatedItems);
|
||||
copyElements(_resetSelections, transaction._resetSelections);
|
||||
copyElements(_resetTransitions, transaction._resetTransitions);
|
||||
copyElements(_removeTransitions, transaction._removeTransitions);
|
||||
copyElements(_queriedTransitions, transaction._queriedTransitions);
|
||||
copyElements(_transitionFinishedOperators, transaction._transitionFinishedOperators);
|
||||
copyElements(_highlightResets, transaction._highlightResets);
|
||||
|
@ -167,6 +172,7 @@ void Transaction::clear() {
|
|||
_updatedItems.clear();
|
||||
_resetSelections.clear();
|
||||
_resetTransitions.clear();
|
||||
_removeTransitions.clear();
|
||||
_queriedTransitions.clear();
|
||||
_transitionFinishedOperators.clear();
|
||||
_highlightResets.clear();
|
||||
|
@ -269,6 +275,7 @@ void Scene::processTransactionFrame(const Transaction& transaction) {
|
|||
|
||||
// add transitions
|
||||
resetTransitionItems(transaction._resetTransitions);
|
||||
removeTransitionItems(transaction._removeTransitions);
|
||||
queryTransitionItems(transaction._queriedTransitions);
|
||||
resetTransitionFinishedOperator(transaction._transitionFinishedOperators);
|
||||
|
||||
|
@ -321,7 +328,7 @@ void Scene::removeItems(const Transaction::Removes& transactions) {
|
|||
}
|
||||
|
||||
// Remove the transition to prevent updating it for nothing
|
||||
resetItemTransition(removedID);
|
||||
removeItemTransition(removedID);
|
||||
|
||||
// Kill it
|
||||
item.kill();
|
||||
|
@ -390,12 +397,7 @@ void Scene::resetTransitionItems(const Transaction::TransitionResets& transactio
|
|||
|
||||
// Remove pre-existing transition, if need be
|
||||
if (!TransitionStage::isIndexInvalid(transitionId)) {
|
||||
// Only remove if:
|
||||
// transitioning to something other than none or we're transitioning to none from ELEMENT_LEAVE_DOMAIN or USER_LEAVE_DOMAIN
|
||||
const auto& oldTransitionType = transitionStage->getTransition(transitionId).eventType;
|
||||
if (transitionType != oldTransitionType) {
|
||||
resetItemTransition(itemId);
|
||||
}
|
||||
removeItemTransition(itemId);
|
||||
}
|
||||
|
||||
// Add a new one.
|
||||
|
@ -409,6 +411,18 @@ void Scene::resetTransitionItems(const Transaction::TransitionResets& transactio
|
|||
}
|
||||
}
|
||||
|
||||
void Scene::removeTransitionItems(const Transaction::TransitionRemoves& transactions) {
|
||||
for (auto& itemId : transactions) {
|
||||
// Access the true item
|
||||
const auto& item = _items[itemId];
|
||||
auto transitionId = item.getTransitionId();
|
||||
|
||||
if (!TransitionStage::isIndexInvalid(transitionId)) {
|
||||
removeItemTransition(itemId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Scene::queryTransitionItems(const Transaction::TransitionQueries& transactions) {
|
||||
auto transitionStage = getStage<TransitionStage>(TransitionStage::getName());
|
||||
|
||||
|
@ -535,7 +549,7 @@ void Scene::setItemTransition(ItemID itemId, Index transitionId) {
|
|||
}
|
||||
}
|
||||
|
||||
void Scene::resetItemTransition(ItemID itemId) {
|
||||
void Scene::removeItemTransition(ItemID itemId) {
|
||||
auto transitionStage = getStage<TransitionStage>(TransitionStage::getName());
|
||||
if (!transitionStage) {
|
||||
return;
|
||||
|
|
|
@ -192,7 +192,7 @@ public:
|
|||
void resetStage(const Stage::Name& name, const StagePointer& stage);
|
||||
|
||||
void setItemTransition(ItemID id, Index transitionId);
|
||||
void resetItemTransition(ItemID id);
|
||||
void removeItemTransition(ItemID id);
|
||||
|
||||
protected:
|
||||
|
||||
|
@ -224,6 +224,7 @@ protected:
|
|||
void updateItems(const Transaction::Updates& transactions);
|
||||
|
||||
void resetTransitionItems(const Transaction::TransitionResets& transactions);
|
||||
void removeTransitionItems(const Transaction::TransitionRemoves& transactions);
|
||||
void queryTransitionItems(const Transaction::TransitionQueries& transactions);
|
||||
|
||||
void resetHighlights(const Transaction::HighlightResets& transactions);
|
||||
|
|
Loading…
Reference in a new issue