forked from mirror/openmw-tes3mp
[Client] Read ActorPosition packets sent from Lua script cell loads
This commit is contained in:
parent
4c35c328a9
commit
a77bd6652f
3 changed files with 22 additions and 2 deletions
|
@ -99,6 +99,18 @@ void Cell::readPositions(ActorList& actorList)
|
||||||
DedicatedActor *actor = dedicatedActors[mapIndex];
|
DedicatedActor *actor = dedicatedActors[mapIndex];
|
||||||
actor->position = baseActor.position;
|
actor->position = baseActor.position;
|
||||||
actor->direction = baseActor.direction;
|
actor->direction = baseActor.direction;
|
||||||
|
|
||||||
|
if (!actor->hasPositionData)
|
||||||
|
{
|
||||||
|
actor->hasPositionData = true;
|
||||||
|
|
||||||
|
// If this is our first packet about this actor's position, force an update
|
||||||
|
// now instead of waiting for its frame
|
||||||
|
//
|
||||||
|
// That way, if this actor is about to become a LocalActor, initial data about it
|
||||||
|
// received from the server still gets set
|
||||||
|
actor->setPosition();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,6 +29,7 @@ DedicatedActor::DedicatedActor()
|
||||||
animation.groupname = "";
|
animation.groupname = "";
|
||||||
sound = "";
|
sound = "";
|
||||||
|
|
||||||
|
hasPositionData = false;
|
||||||
hasStatsDynamicData = false;
|
hasStatsDynamicData = false;
|
||||||
hasChangedCell = true;
|
hasChangedCell = true;
|
||||||
|
|
||||||
|
@ -77,7 +78,7 @@ void DedicatedActor::move(float dt)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
world->moveObject(ptr, position.pos[0], position.pos[1], position.pos[2]);
|
setPosition();
|
||||||
hasChangedCell = false;
|
hasChangedCell = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -89,6 +90,12 @@ void DedicatedActor::move(float dt)
|
||||||
world->rotateObject(ptr, position.rot[0], position.rot[1], position.rot[2]);
|
world->rotateObject(ptr, position.rot[0], position.rot[1], position.rot[2]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DedicatedActor::setPosition()
|
||||||
|
{
|
||||||
|
MWBase::World *world = MWBase::Environment::get().getWorld();
|
||||||
|
world->moveObject(ptr, position.pos[0], position.pos[1], position.pos[2]);
|
||||||
|
}
|
||||||
|
|
||||||
void DedicatedActor::setAnimFlags()
|
void DedicatedActor::setAnimFlags()
|
||||||
{
|
{
|
||||||
using namespace MWMechanics;
|
using namespace MWMechanics;
|
||||||
|
|
|
@ -15,8 +15,9 @@ namespace mwmp
|
||||||
virtual ~DedicatedActor();
|
virtual ~DedicatedActor();
|
||||||
|
|
||||||
void update(float dt);
|
void update(float dt);
|
||||||
void setCell(MWWorld::CellStore *cellStore);
|
|
||||||
void move(float dt);
|
void move(float dt);
|
||||||
|
void setCell(MWWorld::CellStore *cellStore);
|
||||||
|
void setPosition();
|
||||||
void setAnimFlags();
|
void setAnimFlags();
|
||||||
void playAnimation();
|
void playAnimation();
|
||||||
void playSound();
|
void playSound();
|
||||||
|
|
Loading…
Reference in a new issue