Fix pickup animation incorrect coordinate usage.

Animation finalPosition was world position, while initialPosition was local position.
This commit is contained in:
Vera Aguilera Puerto
2021-08-06 18:11:39 +02:00
parent 9927584d86
commit 0501ae4b89
5 changed files with 11 additions and 7 deletions

View File

@@ -11,7 +11,7 @@ namespace Content.Client.Animations
{
public static class ReusableAnimations
{
public static void AnimateEntityPickup(IEntity entity, EntityCoordinates initialPosition, Vector2 finalPosition)
public static void AnimateEntityPickup(IEntity entity, MapCoordinates initialPosition, Vector2 finalPosition)
{
var animatableClone = entity.EntityManager.SpawnEntity("clientsideclone", initialPosition);
animatableClone.Name = entity.Name;

View File

@@ -116,7 +116,7 @@ namespace Content.Client.Storage
for (var i = 0; msg.StoredEntities.Count > i; i++)
{
var entityId = msg.StoredEntities[i];
var initialPosition = msg.EntityPositions[i];
var initialPosition = msg.EntityPositions[i].ToMap(Owner.EntityManager);
if (Owner.EntityManager.TryGetEntity(entityId, out var entity))
{

View File

@@ -86,15 +86,15 @@ namespace Content.Server.Hands.Components
protected override void HandlePickupAnimation(IEntity entity)
{
var pickupDirection = Owner.Transform.WorldPosition;
var pickupDirection = Owner.Transform.MapPosition.Position;
var outermostEntity = entity;
while (outermostEntity.TryGetContainer(out var container)) //TODO: Use WorldPosition instead of this loop
outermostEntity = container.Owner;
var initialPosition = outermostEntity.Transform.Coordinates;
var initialPosition = outermostEntity.Transform.MapPosition;
if (pickupDirection == initialPosition.ToMapPos(Owner.EntityManager))
if (pickupDirection == initialPosition.Position)
return;
Owner.EntityManager.EntityNetManager!.SendSystemNetworkMessage(

View File

@@ -923,10 +923,10 @@ namespace Content.Shared.Hands.Components
public class PickupAnimationMessage : EntityEventArgs
{
public EntityUid EntityUid { get; }
public EntityCoordinates InitialPosition { get; }
public MapCoordinates InitialPosition { get; }
public Vector2 PickupDirection { get; }
public PickupAnimationMessage(EntityUid entityUid, Vector2 pickupDirection, EntityCoordinates initialPosition)
public PickupAnimationMessage(EntityUid entityUid, Vector2 pickupDirection, MapCoordinates initialPosition)
{
EntityUid = entityUid;
PickupDirection = pickupDirection;

View File

@@ -0,0 +1,4 @@
author: Your_Name_Here
changes:
- type: Fix # One of the following: Add, Remove, Tweak, Fix
message: Fixes pickup animation not showing under certain conditions.