Barriers are working corretly, but are way too slow
This commit is contained in:
@@ -23,6 +23,8 @@
|
||||
|
||||
#include "lua_utilities.hpp"
|
||||
|
||||
#include "barrier_defines.hpp"
|
||||
|
||||
BarrierManager::BarrierManager() {
|
||||
//EMPTY
|
||||
}
|
||||
@@ -41,7 +43,12 @@ void BarrierManager::Update(
|
||||
//for each given creature, if a collision was detected, make a new barrier
|
||||
for (auto& it : *creatureList) {
|
||||
if (std::get<2>(it) & 2) {
|
||||
Create(-1); //instance from creature index?
|
||||
int index = Create(-1); //instance from creature index?
|
||||
BarrierData* barrierData = Find(index);
|
||||
barrierData->SetOrigin({
|
||||
(CREATURE_BOUNDS_WIDTH - BARRIER_BOUNDS_WIDTH) / 2 + std::get<1>(it)->GetOrigin().x,
|
||||
(CREATURE_BOUNDS_HEIGHT - BARRIER_BOUNDS_HEIGHT) / 2 + std::get<1>(it)->GetOrigin().y
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -76,7 +83,7 @@ void BarrierManager::Update(
|
||||
void BarrierManager::Cleanup(std::list<std::tuple<const int, BarrierData*, int>>* barrierList) {
|
||||
//unload the given barrier objects
|
||||
for (auto& it : *barrierList) {
|
||||
if (std::get<2>(it) & 2) {
|
||||
if (std::get<2>(it) & 4) {
|
||||
Unload(std::get<0>(it));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -64,7 +64,15 @@ void RoomData::RunFrame() {
|
||||
for (auto& it : creatureList) {
|
||||
CreaturePacket packet;
|
||||
copyCreatureToPacket(&packet, std::get<1>(it), std::get<0>(it));
|
||||
packet.type = std::get<2>(it) != 0 ? SerialPacketType::CREATURE_UPDATE : SerialPacketType::CREATURE_UNLOAD;
|
||||
|
||||
//interpret the event
|
||||
if (std::get<2>(it) & 1) {
|
||||
packet.type = SerialPacketType::CREATURE_UPDATE;
|
||||
}
|
||||
if (std::get<2>(it) & 2) {
|
||||
packet.type = SerialPacketType::CREATURE_UNLOAD;
|
||||
}
|
||||
|
||||
packet.roomIndex = roomIndex;
|
||||
pumpPacketProximity(reinterpret_cast<SerialPacket*>(&packet), roomIndex, std::get<1>(it)->GetOrigin(), INFLUENCE_RADIUS);
|
||||
}
|
||||
@@ -73,7 +81,12 @@ void RoomData::RunFrame() {
|
||||
for (auto& it : barrierList) {
|
||||
BarrierPacket packet;
|
||||
copyBarrierToPacket(&packet, std::get<1>(it), std::get<0>(it));
|
||||
packet.type = std::get<2>(it) != 0 ? SerialPacketType::BARRIER_UPDATE : SerialPacketType::BARRIER_UNLOAD;
|
||||
|
||||
//interpret the event
|
||||
if (std::get<2>(it) & 1 || std::get<2>(it) & 2) {
|
||||
packet.type = SerialPacketType::BARRIER_UPDATE;
|
||||
}
|
||||
|
||||
packet.roomIndex = roomIndex;
|
||||
pumpPacketProximity(reinterpret_cast<SerialPacket*>(&packet), roomIndex, std::get<1>(it)->GetOrigin(), INFLUENCE_RADIUS);
|
||||
}
|
||||
|
||||
@@ -79,7 +79,7 @@ private:
|
||||
int roomIndex = 0;
|
||||
BarrierManager barrierMgr;
|
||||
std::list<CharacterData*> characterList;
|
||||
CombatInstanceManager CombatInstanceMgr;
|
||||
CombatInstanceManager combatInstanceMgr;
|
||||
CreatureManager creatureMgr;
|
||||
RegionPagerLua pager;
|
||||
TriggerManager triggerMgr;
|
||||
|
||||
Reference in New Issue
Block a user