Merge pull request #34 from penolakushari/fixes2

Fixed issue with position gizmo moving ragdoll root in unpredictable …
This commit is contained in:
penolakushari 2024-02-11 10:43:58 +03:00 committed by GitHub
commit 930502686b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 16 additions and 16 deletions

View File

@ -57,6 +57,7 @@ function ENT:Setup()
self.ArrowX:SetColor(Color(255, 0, 0, 255))
self.ArrowX:SetLocalPos(Vector(0, 0, 0))
self.ArrowX:SetLocalAngles(Vector(1, 0, 0):Angle())
self.ArrowX.DefAngle = Vector(1, 0, 0):Angle()
self.ArrowX.axistype = 1
self.ArrowY = ents.Create("rgm_axis_arrow")
@ -65,6 +66,7 @@ function ENT:Setup()
self.ArrowY:SetColor(Color(0, 255, 0, 255))
self.ArrowY:SetLocalPos(Vector(0, 0, 0))
self.ArrowY:SetLocalAngles(Vector(0, 1, 0):Angle())
self.ArrowY.DefAngle = Vector(0, 1, 0):Angle()
self.ArrowY.axistype = 2
self.ArrowZ = ents.Create("rgm_axis_arrow")
@ -73,6 +75,7 @@ function ENT:Setup()
self.ArrowZ:SetColor(Color(0, 0, 255, 255))
self.ArrowZ:SetLocalPos(Vector(0, 0, 0))
self.ArrowZ:SetLocalAngles(Vector(0, 0, 1):Angle())
self.ArrowZ.DefAngle = Vector(0, 0, 1):Angle()
self.ArrowZ.axistype = 3
--Arrow sides
@ -408,20 +411,16 @@ function ENT:Think()
disc:SetLocalAngles(ang)
self.ArrowOmni:SetLocalAngles(ang)
pos, poseye = self:WorldToLocal(pos), self:WorldToLocal(poseye)
local xangle, yangle = (Vector(pos.y, pos.z, 0) - Vector(poseye.y, poseye.z, 0)):Angle(), (Vector(pos.x, pos.z, 0) - Vector(poseye.x, poseye.z, 0)):Angle()
local XAng, YAng, ZAng = Angle(0, 0, xangle.y + 90) + VECTOR_FRONT:Angle(), ANGLE_ARROW_OFFSET - Angle(0, 0, yangle.y), Angle(0, ang.y, 0) + vector_up:Angle()
self.ArrowX:SetLocalAngles(XAng)
self.ScaleX:SetLocalAngles(XAng)
self.ArrowY:SetLocalAngles(YAng)
self.ScaleY:SetLocalAngles(YAng)
self.ArrowZ:SetLocalAngles(ZAng)
self.ScaleZ:SetLocalAngles(ZAng)
if not pl.rgm.Moving then
self.ArrowX.GizmoAngle = self.ArrowX:GetAngles()
self.ArrowY.GizmoAngle = self.ArrowY:GetAngles()
self.ArrowZ.GizmoAngle = self.ArrowZ:GetAngles()
pos, poseye = self:WorldToLocal(pos), self:WorldToLocal(poseye)
local xangle, yangle = (Vector(pos.y, pos.z, 0) - Vector(poseye.y, poseye.z, 0)):Angle(), (Vector(pos.x, pos.z, 0) - Vector(poseye.x, poseye.z, 0)):Angle()
local XAng, YAng, ZAng = Angle(0, 0, xangle.y + 90) + VECTOR_FRONT:Angle(), ANGLE_ARROW_OFFSET - Angle(0, 0, yangle.y), Angle(0, ang.y, 0) + vector_up:Angle()
self.ArrowX:SetLocalAngles(XAng)
self.ScaleX:SetLocalAngles(XAng)
self.ArrowY:SetLocalAngles(YAng)
self.ScaleY:SetLocalAngles(YAng)
self.ArrowZ:SetLocalAngles(ZAng)
self.ScaleZ:SetLocalAngles(ZAng)
end
self:NextThink(CurTime() + 0.001)

View File

@ -19,7 +19,7 @@ function ENT:ProcessMovement(offpos, _, eyepos, eyeang, ent, bone, ppos, _, move
offset = offset + entoffset
end
local pos, ang
local selfangle = self.GizmoAngle and self.GizmoAngle or self:GetAngles()
local _, selfangle = LocalToWorld(vector_origin, self.DefAngle, vector_origin, axis:GetAngles()) --self:GetAngles()
if movetype == 1 then
local obj = ent:GetPhysicsObjectNum(bone)

View File

@ -1336,6 +1336,7 @@ function TOOL:Deploy()
local axis = pl.rgm.Axis
if not IsValid(axis) then
axis = ents.Create("rgm_axis")
axis:SetPos(pl:EyePos())
axis:Spawn()
axis.Owner = pl
axis.localpos = self:GetClientNumber("localpos", 0) ~= 0
@ -1402,8 +1403,8 @@ function TOOL:LeftClick(tr)
local axis = pl.rgm.Axis
if not IsValid(axis) then
pl:ChatPrint("Axis entity isn't found. Spawning new one, try selecting the entity again.")
axis = ents.Create("rgm_axis")
axis:SetPos(pl:EyePos())
axis:Spawn()
axis.Owner = pl
pl.rgm.Axis = axis
@ -1493,7 +1494,7 @@ function TOOL:LeftClick(tr)
pl.rgm.Ignore = ignore
local dirnorm = (collision.hitpos-axis:GetPos())
local dirnorm = (collision.hitpos - axis:GetPos())
dirnorm:Normalize()
pl.rgm.DirNorm = dirnorm
pl.rgm.MoveAxis = apart