Fixes all the rotation bugs. (#3365)
This commit is contained in:
committed by
GitHub
parent
6d48154617
commit
63947a6d35
@@ -64,7 +64,8 @@ namespace Content.Server.Actions
|
||||
var audio = EntitySystem.Get<AudioSystem>();
|
||||
var system = EntitySystem.Get<MeleeWeaponSystem>();
|
||||
|
||||
var angle = new Angle(args.Target.Transform.MapPosition.Position - args.Performer.Transform.MapPosition.Position);
|
||||
var diff = args.Target.Transform.MapPosition.Position - args.Performer.Transform.MapPosition.Position;
|
||||
var angle = Angle.FromWorldVec(diff);
|
||||
|
||||
actions.Cooldown(ActionType.Disarm, Cooldowns.SecondsFromNow(_cooldown));
|
||||
|
||||
|
||||
@@ -86,7 +86,7 @@ namespace Content.Server.GameObjects.Components.Chemistry
|
||||
{
|
||||
target.PopupMessage(Loc.GetString("You feel a tiny prick!"));
|
||||
var meleeSys = EntitySystem.Get<MeleeWeaponSystem>();
|
||||
var angle = new Angle(target.Transform.WorldPosition - user.Transform.WorldPosition);
|
||||
var angle = Angle.FromWorldVec(target.Transform.WorldPosition - user.Transform.WorldPosition);
|
||||
meleeSys.SendLunge(angle, user);
|
||||
}
|
||||
|
||||
|
||||
@@ -189,7 +189,7 @@ namespace Content.Server.GameObjects.Components.Mobs
|
||||
var diff = targetWorldPos - player.Transform.WorldPosition;
|
||||
if (diff.LengthSquared > 0.01f)
|
||||
{
|
||||
player.Transform.LocalRotation = new Angle(diff);
|
||||
player.Transform.LocalRotation = Angle.FromWorldVec(diff);
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
@@ -86,7 +86,8 @@ namespace Content.Server.GameObjects.Components.Weapon.Melee
|
||||
return true;
|
||||
|
||||
var location = eventArgs.User.Transform.Coordinates;
|
||||
var angle = new Angle(eventArgs.ClickLocation.ToMapPos(Owner.EntityManager) - location.ToMapPos(Owner.EntityManager));
|
||||
var diff = eventArgs.ClickLocation.ToMapPos(Owner.EntityManager) - location.ToMapPos(Owner.EntityManager);
|
||||
var angle = Angle.FromWorldVec(diff);
|
||||
|
||||
// This should really be improved. GetEntitiesInArc uses pos instead of bounding boxes.
|
||||
var entities = ArcRayCast(eventArgs.User.Transform.WorldPosition, angle, eventArgs.User);
|
||||
@@ -143,7 +144,8 @@ namespace Content.Server.GameObjects.Components.Weapon.Melee
|
||||
var target = eventArgs.TargetEntity;
|
||||
|
||||
var location = eventArgs.User.Transform.Coordinates;
|
||||
var angle = new Angle(eventArgs.ClickLocation.ToMapPos(Owner.EntityManager) - location.ToMapPos(Owner.EntityManager));
|
||||
var diff = eventArgs.ClickLocation.ToMapPos(Owner.EntityManager) - location.ToMapPos(Owner.EntityManager);
|
||||
var angle = Angle.FromWorldVec(diff);
|
||||
|
||||
var audioSystem = EntitySystem.Get<AudioSystem>();
|
||||
if (target != null)
|
||||
@@ -194,7 +196,7 @@ namespace Content.Server.GameObjects.Components.Weapon.Melee
|
||||
for (var i = 0; i < increments; i++)
|
||||
{
|
||||
var castAngle = new Angle(baseAngle + increment * i);
|
||||
var res = _physicsManager.IntersectRay(mapId, new CollisionRay(position, castAngle.ToVec(), (int) (CollisionGroup.Impassable|CollisionGroup.MobImpassable)), Range, ignore).FirstOrDefault();
|
||||
var res = _physicsManager.IntersectRay(mapId, new CollisionRay(position, castAngle.ToWorldVec(), (int) (CollisionGroup.Impassable|CollisionGroup.MobImpassable)), Range, ignore).FirstOrDefault();
|
||||
if (res.HitEntity != null)
|
||||
{
|
||||
resSet.Add(res.HitEntity);
|
||||
|
||||
@@ -394,7 +394,7 @@ namespace Content.Server.GameObjects.Components.Weapon.Ranged.Barrels
|
||||
.EnsureController<BulletController>()
|
||||
.LinearVelocity = projectileAngle.ToVec() * velocity;
|
||||
|
||||
projectile.Transform.LocalRotation = projectileAngle.Theta;
|
||||
projectile.Transform.LocalRotation = projectileAngle + MathHelper.PiOver2;
|
||||
}
|
||||
ammo.SendMessage(this, new BarrelFiredMessage(firedProjectiles));
|
||||
}
|
||||
|
||||
@@ -395,7 +395,7 @@ namespace Content.Server.GameObjects.EntitySystems.Click
|
||||
var diff = coordinates.ToMapPos(EntityManager) - player.Transform.MapPosition.Position;
|
||||
if (diff.LengthSquared > 0.01f)
|
||||
{
|
||||
player.Transform.LocalRotation = new Angle(diff);
|
||||
player.Transform.LocalRotation = Angle.FromWorldVec(diff);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
47
Content.Server/HardRotateVerbs.cs
Normal file
47
Content.Server/HardRotateVerbs.cs
Normal file
@@ -0,0 +1,47 @@
|
||||
using System;
|
||||
using Content.Shared.GameObjects.Verbs;
|
||||
using Robust.Shared.GameObjects;
|
||||
using Robust.Shared.Maths;
|
||||
|
||||
namespace Content.Server
|
||||
{
|
||||
// Mapping tools
|
||||
// Uncomment if you need them, I guess.
|
||||
|
||||
/*
|
||||
[GlobalVerb]
|
||||
public sealed class HardRotateCcwVerb : GlobalVerb
|
||||
{
|
||||
public override bool RequireInteractionRange => false;
|
||||
|
||||
public override void GetData(IEntity user, IEntity target, VerbData data)
|
||||
{
|
||||
data.Visibility = VerbVisibility.Visible;
|
||||
data.Text = "Rotate CCW";
|
||||
data.IconTexture = "/Textures/Interface/VerbIcons/rotate_ccw.svg.96dpi.png";
|
||||
}
|
||||
|
||||
public override void Activate(IEntity user, IEntity target)
|
||||
{
|
||||
target.Transform.LocalRotation += Math.PI / 2;
|
||||
}
|
||||
}
|
||||
|
||||
[GlobalVerb]
|
||||
public sealed class HardRotateCwVerb : GlobalVerb
|
||||
{
|
||||
public override bool RequireInteractionRange => false;
|
||||
|
||||
public override void GetData(IEntity user, IEntity target, VerbData data)
|
||||
{
|
||||
data.Visibility = VerbVisibility.Visible;
|
||||
data.Text = "Rotate CW";
|
||||
data.IconTexture = "/Textures/Interface/VerbIcons/rotate_cw.svg.96dpi.png";
|
||||
}
|
||||
|
||||
public override void Activate(IEntity user, IEntity target)
|
||||
{
|
||||
target.Transform.LocalRotation -= Math.PI / 2;
|
||||
}
|
||||
}*/
|
||||
}
|
||||
@@ -83,7 +83,7 @@ namespace Content.Server.Throw
|
||||
|
||||
if (ActionBlockerSystem.CanChangeDirection(throwSourceEnt))
|
||||
{
|
||||
throwSourceEnt.Transform.LocalRotation = angle.GetCardinalDir().ToAngle();
|
||||
throwSourceEnt.Transform.LocalRotation = (angle + MathHelper.PiOver2).GetCardinalDir().ToAngle();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -112,7 +112,7 @@ namespace Content.Server.Throw
|
||||
/// <summary>
|
||||
/// Throw an entity at the position of <paramref name="targetLoc"/> from <paramref name="sourceLoc"/>,
|
||||
/// without overshooting.
|
||||
/// </summary>
|
||||
/// </summary>cl
|
||||
/// <param name="thrownEnt">The entity to throw.</param>
|
||||
/// <param name="throwForceMax">
|
||||
/// The MAXIMUM force to throw the entity with.
|
||||
|
||||
Reference in New Issue
Block a user