1
0
Fork 1
mirror of https://github.com/TES3MP/openmw-tes3mp.git synced 2025-01-15 22:19:54 +00:00
openmw-tes3mp/apps/openmw/mwmp/Cell.hpp
David Cernat 5bd2244898 [Client] Uninitialize DedicatedActors instantly in some situations
When LocalActors briefly become DedicatedActors as the result of a server script, the DedicatedActors are immediately uninitialized to avoid bugs like them jumping in place or rotating slightly.

Additionally, the playing of animations and sounds received in packets for DedicatedActors is no longer done during their next update, but is instead done instantly when the packets are received.
2018-08-16 03:50:41 +03:00

63 lines
1.8 KiB
C++

#ifndef OPENMW_MPCELL_HPP
#define OPENMW_MPCELL_HPP
#include "ActorList.hpp"
#include "LocalActor.hpp"
#include "DedicatedActor.hpp"
#include "../mwworld/cellstore.hpp"
namespace mwmp
{
class Cell
{
public:
Cell(MWWorld::CellStore* cellStore);
virtual ~Cell();
void updateLocal(bool forceUpdate);
void updateDedicated(float dt);
void readPositions(ActorList& actorList);
void readAnimFlags(ActorList& actorList);
void readAnimPlay(ActorList& actorList);
void readStatsDynamic(ActorList& actorList);
void readEquipment(ActorList& actorList);
void readSpeech(ActorList& actorList);
void readAi(ActorList& actorList);
void readAttack(ActorList& actorList);
void readCellChange(ActorList& actorList);
void initializeLocalActor(const MWWorld::Ptr& ptr);
void initializeLocalActors();
void initializeDedicatedActor(const MWWorld::Ptr& ptr);
void initializeDedicatedActors(ActorList& actorList);
void uninitializeLocalActors();
void uninitializeDedicatedActors(ActorList& actorList);
void uninitializeDedicatedActors();
virtual LocalActor *getLocalActor(std::string actorIndex);
virtual DedicatedActor *getDedicatedActor(std::string actorIndex);
bool hasLocalAuthority();
void setAuthority(const RakNet::RakNetGUID& guid);
MWWorld::CellStore* getCellStore();
std::string getDescription();
bool shouldInitializeActors;
private:
MWWorld::CellStore* store;
RakNet::RakNetGUID authorityGuid;
std::map<std::string, LocalActor *> localActors;
std::map<std::string, DedicatedActor *> dedicatedActors;
float updateTimer;
};
}
#endif //OPENMW_MPCELL_HPP