mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-01-27 12:35:46 +00:00
f031a191b8
Since actors can be active in 3x3 grid around the player, we need to first load all statics in a 5x5 grid around the player. Split load and unloading in 2 phases. Add an mInactiveCells set into the scene, which contains all cells inside the aforementioned 5x5 grid. These cells contains only heightfields and physics objects of static class.
41 lines
730 B
C++
41 lines
730 B
C++
#ifndef GAME_MWWORLD_CELLVISITORS_H
|
|
#define GAME_MWWORLD_CELLVISITORS_H
|
|
|
|
#include <vector>
|
|
#include <string>
|
|
|
|
#include "ptr.hpp"
|
|
|
|
|
|
namespace MWWorld
|
|
{
|
|
struct ListAndResetObjectsVisitor
|
|
{
|
|
std::vector<MWWorld::Ptr> mObjects;
|
|
|
|
bool operator() (MWWorld::Ptr ptr)
|
|
{
|
|
if (ptr.getRefData().getBaseNode())
|
|
{
|
|
ptr.getRefData().setBaseNode(nullptr);
|
|
}
|
|
mObjects.push_back (ptr);
|
|
|
|
return true;
|
|
}
|
|
};
|
|
|
|
struct ListObjectsVisitor
|
|
{
|
|
std::vector<MWWorld::Ptr> mObjects;
|
|
|
|
bool operator() (MWWorld::Ptr ptr)
|
|
{
|
|
mObjects.push_back (ptr);
|
|
return true;
|
|
}
|
|
};
|
|
}
|
|
|
|
#endif
|