Barriers are working corretly, but are way too slow

This commit is contained in:
2016-04-14 12:43:00 +10:00
parent 1267b30806
commit ab6207d4f3
4 changed files with 28 additions and 5 deletions
+9 -2
View File
@@ -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));
}
}
+15 -2
View File
@@ -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);
}
+1 -1
View File
@@ -79,7 +79,7 @@ private:
int roomIndex = 0;
BarrierManager barrierMgr;
std::list<CharacterData*> characterList;
CombatInstanceManager CombatInstanceMgr;
CombatInstanceManager combatInstanceMgr;
CreatureManager creatureMgr;
RegionPagerLua pager;
TriggerManager triggerMgr;