protected override void AfterPhysics(float delta)
{
base.AfterPhysics(delta);
var ents = EntityManager.GetEntities(Aspect.One(typeof(NetPhysicsObject)));
foreach (var ent in ents)
{
var pComp = ent.GetComponent<Physics2dComponent>();
var dObj = ent.GetComponent<NetPhysicsObject>();
if (pComp == null || dObj == null || pComp.Body == null)
continue;
if (dObj.IsUpdated)
{
if (!dObj.PlayerControlled)
{
dObj.position_error = (pComp.Body.Position + dObj.position_error) - dObj.Position;
dObj.rotation_error = pComp.Body.Rotation;
if (dObj.position_error.LengthSquared() > 5f)
{
dObj.position_error = Farseer.Framework.Vector2.Zero;
}
pComp.Body.Position = dObj.Position;
pComp.Body.LinearVelocity = dObj.LinearVelocity;
pComp.Body.Rotation = dObj.Rotation;
}
dObj.IsUpdated = false;
}
}
}