#ifndef OPENMW_PROCESSORACTORCELLCHANGE_HPP #define OPENMW_PROCESSORACTORCELLCHANGE_HPP #include "../ActorProcessor.hpp" namespace mwmp { class ProcessorActorCellChange : public ActorProcessor { public: ProcessorActorCellChange() { BPP_INIT(ID_ACTOR_CELL_CHANGE) } void Do(ActorPacket &packet, std::shared_ptr player, BaseActorList &actorList) override { Cell *serverCell = CellController::get()->getCell(&actorList.cell); if (serverCell != nullptr && *serverCell->getAuthority() == actorList.guid) { serverCell->removeActors(&actorList); std::vector> actors; for (auto &baseActor : actorList.baseActors) { Actor *actor = new Actor; actor->actor = baseActor; actors.emplace_back(actor); } Networking::get().getState().getEventCtrl().Call(player, actors); Networking::get().getState().getActorCtrl().sendActors(player, actors, true); // Send this to everyone packet.Send(true); } } }; } #endif //OPENMW_PROCESSORACTORCELLCHANGE_HPP