mirror of
https://github.com/Winded/RagdollMover.git
synced 2025-03-04 03:13:36 -05:00
Radial bone options menu now has colored options, things of similar functionality are colored in the same color. Any physics related locks will now make bones appear as locks in adv bone select mode, so it should be easier to find them. Corrected localization
This commit is contained in:
parent
5ec7072d56
commit
874edb41a6
@ -1048,6 +1048,9 @@ local RGM_CIRCLE = {
|
|||||||
{ x = -4, y = 0 }
|
{ x = -4, y = 0 }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
local LockGo = Material("icon16/lock_go.png", "alphatest")
|
||||||
|
local Lock = Material("icon16/lock.png", "alphatest")
|
||||||
|
|
||||||
local midw, midh = ScrW()/2, ScrH()/2
|
local midw, midh = ScrW()/2, ScrH()/2
|
||||||
local divide540 = RGM_Constants.FLOAT_1DIVIDE540 -- aggressive microoptimizations
|
local divide540 = RGM_Constants.FLOAT_1DIVIDE540 -- aggressive microoptimizations
|
||||||
|
|
||||||
@ -1114,13 +1117,14 @@ function AdvBoneSelectRender(ent, bonenodes)
|
|||||||
if nodesExist and (not bonenodes[ent][i]) or false then continue end
|
if nodesExist and (not bonenodes[ent][i]) or false then continue end
|
||||||
local pos = ent:GetBonePosition(i)
|
local pos = ent:GetBonePosition(i)
|
||||||
pos = pos:ToScreen()
|
pos = pos:ToScreen()
|
||||||
|
local x, y = pos.x, pos.y
|
||||||
|
|
||||||
local dist = math.abs((mx - pos.x)^2 + (my - pos.y)^2)
|
local dist = math.abs((mx - x)^2 + (my - y)^2)
|
||||||
|
|
||||||
local circ = table.Copy(RGM_CIRCLE)
|
local circ = table.Copy(RGM_CIRCLE)
|
||||||
for k, v in ipairs(circ) do
|
for k, v in ipairs(circ) do
|
||||||
v.x = v.x + pos.x
|
v.x = v.x + x
|
||||||
v.y = v.y + pos.y
|
v.y = v.y + y
|
||||||
end
|
end
|
||||||
|
|
||||||
if dist < 576 then -- 24 pixels
|
if dist < 576 then -- 24 pixels
|
||||||
@ -1136,6 +1140,16 @@ function AdvBoneSelectRender(ent, bonenodes)
|
|||||||
|
|
||||||
draw.NoTexture()
|
draw.NoTexture()
|
||||||
surface.DrawPoly(circ)
|
surface.DrawPoly(circ)
|
||||||
|
|
||||||
|
if bonenodes[ent][i].bonelock then
|
||||||
|
surface.SetMaterial(LockGo)
|
||||||
|
surface.SetDrawColor(COLOR_WHITE:Unpack())
|
||||||
|
surface.DrawTexturedRect(x - 12, y - 12, 24, 24)
|
||||||
|
elseif bonenodes[ent][i].poslock or bonenodes[ent][i].anglock then
|
||||||
|
surface.SetMaterial(Lock)
|
||||||
|
surface.SetDrawColor(COLOR_WHITE:Unpack())
|
||||||
|
surface.DrawTexturedRect(x - 12, y - 12, 24, 24)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- We use the average length of all bone names to ensure some names don't overlap each other
|
-- We use the average length of all bone names to ensure some names don't overlap each other
|
||||||
@ -1198,36 +1212,44 @@ function AdvBoneSelectPick(ent, bonenodes)
|
|||||||
end
|
end
|
||||||
|
|
||||||
local SelectedBone = nil
|
local SelectedBone = nil
|
||||||
|
|
||||||
|
local Colors = {
|
||||||
|
Color(255, 140, 105), -- Orange, for Resets
|
||||||
|
Color(100, 255, 255), -- Cyan (Blue is too dark), for Zeroing scale
|
||||||
|
Color(100, 255, 0), -- Green, for Locks
|
||||||
|
Color(255, 255, 255) -- White, for whatever
|
||||||
|
}
|
||||||
|
|
||||||
local FeaturesNPhys = {
|
local FeaturesNPhys = {
|
||||||
{ 1, (language.GetPhrase("tool.ragdollmover.resetmenu") .. " " .. language.GetPhrase("tool.ragdollmover.reset")) }, -- 1
|
{ 1, (language.GetPhrase("tool.ragdollmover.resetmenu") .. " " .. language.GetPhrase("tool.ragdollmover.reset")), 1 }, -- 1
|
||||||
{ 5, (language.GetPhrase("tool.ragdollmover.resetmenu") .. " " .. language.GetPhrase("tool.ragdollmover.resetchildren")) }, -- 5
|
{ 5, (language.GetPhrase("tool.ragdollmover.resetmenu") .. " " .. language.GetPhrase("tool.ragdollmover.resetchildren")), 1 }, -- 5
|
||||||
{ 2, (language.GetPhrase("tool.ragdollmover.resetmenu") .. " " .. language.GetPhrase("tool.ragdollmover.resetpos")) }, -- 2
|
{ 2, (language.GetPhrase("tool.ragdollmover.resetmenu") .. " " .. language.GetPhrase("tool.ragdollmover.resetpos")), 1 }, -- 2
|
||||||
{ 6, (language.GetPhrase("tool.ragdollmover.resetmenu") .. " " .. language.GetPhrase("tool.ragdollmover.resetposchildren")) }, -- 6
|
{ 6, (language.GetPhrase("tool.ragdollmover.resetmenu") .. " " .. language.GetPhrase("tool.ragdollmover.resetposchildren")), 1 }, -- 6
|
||||||
{ 3, (language.GetPhrase("tool.ragdollmover.resetmenu") .. " " .. language.GetPhrase("tool.ragdollmover.resetrot")) }, -- 3
|
{ 3, (language.GetPhrase("tool.ragdollmover.resetmenu") .. " " .. language.GetPhrase("tool.ragdollmover.resetrot")), 1 }, -- 3
|
||||||
{ 7, (language.GetPhrase("tool.ragdollmover.resetmenu") .. " " .. language.GetPhrase("tool.ragdollmover.resetrotchildren")) }, -- 7
|
{ 7, (language.GetPhrase("tool.ragdollmover.resetmenu") .. " " .. language.GetPhrase("tool.ragdollmover.resetrotchildren")), 1 }, -- 7
|
||||||
{ 4, (language.GetPhrase("tool.ragdollmover.resetmenu") .. " " .. language.GetPhrase("tool.ragdollmover.resetscale")) }, -- 4
|
{ 4, (language.GetPhrase("tool.ragdollmover.resetmenu") .. " " .. language.GetPhrase("tool.ragdollmover.resetscale")), 1 }, -- 4
|
||||||
{ 8, (language.GetPhrase("tool.ragdollmover.resetmenu") .. " " .. language.GetPhrase("tool.ragdollmover.resetscalechildren")) }, -- 8
|
{ 8, (language.GetPhrase("tool.ragdollmover.resetmenu") .. " " .. language.GetPhrase("tool.ragdollmover.resetscalechildren")), 1 }, -- 8
|
||||||
{ 9, (language.GetPhrase("tool.ragdollmover.scalezero") .. " " .. language.GetPhrase("tool.ragdollmover.bone")) }, -- 9
|
{ 9, (language.GetPhrase("tool.ragdollmover.scalezero") .. " " .. language.GetPhrase("tool.ragdollmover.bone")), 2 }, -- 9
|
||||||
{ 10, (language.GetPhrase("tool.ragdollmover.scalezero") .. " " .. language.GetPhrase("tool.ragdollmover.bonechildren")) }, -- 10
|
{ 10, (language.GetPhrase("tool.ragdollmover.scalezero") .. " " .. language.GetPhrase("tool.ragdollmover.bonechildren")), 2 }, -- 10
|
||||||
{ 15, { "#tool.ragdollmover.unlockscale", "#tool.ragdollmover.lockscale" } }, --15
|
{ 15, { "#tool.ragdollmover.unlockscale", "#tool.ragdollmover.lockscale" }, 3 }, --15
|
||||||
{ 17, "#tool.ragdollmover.putgizmopos" } -- 17
|
{ 17, "#tool.ragdollmover.putgizmopos", 4 } -- 17
|
||||||
}
|
}
|
||||||
|
|
||||||
local FeaturesPhys = {
|
local FeaturesPhys = {
|
||||||
{ 1, (language.GetPhrase("tool.ragdollmover.resetmenu") .. " " .. language.GetPhrase("tool.ragdollmover.reset")) }, -- 1
|
{ 1, (language.GetPhrase("tool.ragdollmover.resetmenu") .. " " .. language.GetPhrase("tool.ragdollmover.reset")), 1 }, -- 1
|
||||||
{ 5, (language.GetPhrase("tool.ragdollmover.resetmenu") .. " " .. language.GetPhrase("tool.ragdollmover.resetchildren")) }, -- 5
|
{ 5, (language.GetPhrase("tool.ragdollmover.resetmenu") .. " " .. language.GetPhrase("tool.ragdollmover.resetchildren")), 1 }, -- 5
|
||||||
{ 6, (language.GetPhrase("tool.ragdollmover.resetmenu") .. " " .. language.GetPhrase("tool.ragdollmover.resetposchildren")) }, -- 6
|
{ 6, (language.GetPhrase("tool.ragdollmover.resetmenu") .. " " .. language.GetPhrase("tool.ragdollmover.resetposchildren")), 1 }, -- 6
|
||||||
{ 7, (language.GetPhrase("tool.ragdollmover.resetmenu") .. " " .. language.GetPhrase("tool.ragdollmover.resetrotchildren")) }, -- 7
|
{ 7, (language.GetPhrase("tool.ragdollmover.resetmenu") .. " " .. language.GetPhrase("tool.ragdollmover.resetrotchildren")), 1 }, -- 7
|
||||||
{ 8, (language.GetPhrase("tool.ragdollmover.resetmenu") .. " " .. language.GetPhrase("tool.ragdollmover.resetscalechildren")) }, -- 8
|
{ 8, (language.GetPhrase("tool.ragdollmover.resetmenu") .. " " .. language.GetPhrase("tool.ragdollmover.resetscalechildren")), 1 }, -- 8
|
||||||
{ 9, (language.GetPhrase("tool.ragdollmover.scalezero") .. " " .. language.GetPhrase("tool.ragdollmover.bone")) }, -- 9
|
{ 9, (language.GetPhrase("tool.ragdollmover.scalezero") .. " " .. language.GetPhrase("tool.ragdollmover.bone")), 2 }, -- 9
|
||||||
{ 10, (language.GetPhrase("tool.ragdollmover.scalezero") .. " " .. language.GetPhrase("tool.ragdollmover.bonechildren")) }, -- 10
|
{ 10, (language.GetPhrase("tool.ragdollmover.scalezero") .. " " .. language.GetPhrase("tool.ragdollmover.bonechildren")), 2 }, -- 10
|
||||||
{ 12, { "#tool.ragdollmover.unlockpos", "#tool.ragdollmover.lockpos" } }, -- 12
|
{ 12, { "#tool.ragdollmover.unlockpos", "#tool.ragdollmover.lockpos" }, 3 }, -- 12
|
||||||
{ 13, { "#tool.ragdollmover.unlockang", "#tool.ragdollmover.lockang" } }, -- 13
|
{ 13, { "#tool.ragdollmover.unlockang", "#tool.ragdollmover.lockang" }, 3}, -- 13
|
||||||
{ 15, { "#tool.ragdollmover.unlockscale", "#tool.ragdollmover.lockscale" } }, --15
|
{ 15, { "#tool.ragdollmover.unlockscale", "#tool.ragdollmover.lockscale" }, 3 }, --15
|
||||||
{ 14, "#tool.ragdollmover.lockbone" }, -- 14
|
{ 14, "#tool.ragdollmover.lockbone", 3 }, -- 14
|
||||||
{ 11, "#tool.ragdollmover.unlockbone" }, -- 11
|
{ 11, "#tool.ragdollmover.unlockbone", 3 }, -- 11
|
||||||
{ 16, "#tool.ragdollmover.freezebone" }, -- 16
|
{ 16, "#tool.ragdollmover.freezebone", 4 }, -- 16
|
||||||
{ 17, "#tool.ragdollmover.putgizmopos" } -- 17
|
{ 17, "#tool.ragdollmover.putgizmopos", 4 } -- 17
|
||||||
}
|
}
|
||||||
|
|
||||||
function AdvBoneSelectRadialRender(ent, bones, bonenodes, isresetmode)
|
function AdvBoneSelectRadialRender(ent, bones, bonenodes, isresetmode)
|
||||||
@ -1301,6 +1323,20 @@ function AdvBoneSelectRadialRender(ent, bones, bonenodes, isresetmode)
|
|||||||
btype = bonenodes[ent][bone].Type
|
btype = bonenodes[ent][bone].Type
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local pos = ent:GetBonePosition(bone)
|
||||||
|
pos = pos:ToScreen()
|
||||||
|
|
||||||
|
local circ = table.Copy(RGM_CIRCLE)
|
||||||
|
for k, v in ipairs(circ) do
|
||||||
|
v.x = v.x + pos.x
|
||||||
|
v.y = v.y + pos.y
|
||||||
|
end
|
||||||
|
|
||||||
|
surface.SetDrawColor(COLOR_WHITE:Unpack())
|
||||||
|
|
||||||
|
draw.NoTexture()
|
||||||
|
surface.DrawPoly(circ)
|
||||||
|
|
||||||
local boneoptions = btype == 1 and FeaturesPhys or FeaturesNPhys
|
local boneoptions = btype == 1 and FeaturesPhys or FeaturesNPhys
|
||||||
local count = btype == 1 and 14 or 12
|
local count = btype == 1 and 14 or 12
|
||||||
local angborder = (360 / count) / 2
|
local angborder = (360 / count) / 2
|
||||||
@ -1324,7 +1360,7 @@ function AdvBoneSelectRadialRender(ent, bones, bonenodes, isresetmode)
|
|||||||
local thisang = (360 / count * (k - 1))
|
local thisang = (360 / count * (k - 1))
|
||||||
local thisrad = thisang / 180 * math.pi
|
local thisrad = thisang / 180 * math.pi
|
||||||
local uix, uiy = (math.sin(thisrad) * 250 * modifier), (math.cos(thisrad) * -250 * modifier)
|
local uix, uiy = (math.sin(thisrad) * 250 * modifier), (math.cos(thisrad) * -250 * modifier)
|
||||||
local color = COLOR_WHITE
|
local color = Colors[option[3]]
|
||||||
|
|
||||||
uix, uiy = uix + midw, uiy + midh
|
uix, uiy = uix + midw, uiy + midh
|
||||||
|
|
||||||
@ -1333,26 +1369,11 @@ function AdvBoneSelectRadialRender(ent, bones, bonenodes, isresetmode)
|
|||||||
local diff = math.abs((thisang - selangle + 180) % 360 - 180)
|
local diff = math.abs((thisang - selangle + 180) % 360 - 180)
|
||||||
local isselected = diff < angborder and true or false
|
local isselected = diff < angborder and true or false
|
||||||
|
|
||||||
local pos = ent:GetBonePosition(bone)
|
|
||||||
pos = pos:ToScreen()
|
|
||||||
|
|
||||||
local circ = table.Copy(RGM_CIRCLE)
|
|
||||||
for k, v in ipairs(circ) do
|
|
||||||
v.x = v.x + pos.x
|
|
||||||
v.y = v.y + pos.y
|
|
||||||
end
|
|
||||||
|
|
||||||
if isselected then
|
if isselected then
|
||||||
surface.SetDrawColor(COLOR_BRIGHT_YELLOW:Unpack())
|
|
||||||
color = COLOR_BRIGHT_YELLOW
|
color = COLOR_BRIGHT_YELLOW
|
||||||
SelectedBone = id
|
SelectedBone = id
|
||||||
else
|
|
||||||
surface.SetDrawColor(color:Unpack())
|
|
||||||
end
|
end
|
||||||
|
|
||||||
draw.NoTexture()
|
|
||||||
surface.DrawPoly(circ)
|
|
||||||
|
|
||||||
local ytextoffset = -14
|
local ytextoffset = -14
|
||||||
if uiy > (midh + 30) then ytextoffset = RGMFontSize + 14 end
|
if uiy > (midh + 30) then ytextoffset = RGMFontSize + 14 end
|
||||||
|
|
||||||
|
@ -96,7 +96,7 @@ tool.ragdollmover.lockang=Lock Rotation
|
|||||||
tool.ragdollmover.unlockang=Unlock Rotation
|
tool.ragdollmover.unlockang=Unlock Rotation
|
||||||
tool.ragdollmover.lockscale=Lock Scale
|
tool.ragdollmover.lockscale=Lock Scale
|
||||||
tool.ragdollmover.unlockscale=Unlock Scale
|
tool.ragdollmover.unlockscale=Unlock Scale
|
||||||
tool.ragdollmover.lockbone=Lock to this Bone
|
tool.ragdollmover.lockbone=Lock Other Bone to this Bone
|
||||||
tool.ragdollmover.unlockbone=Unlock this Bone
|
tool.ragdollmover.unlockbone=Unlock this Bone
|
||||||
tool.ragdollmover.freezebone=Freeze/Unfreeze this Bone
|
tool.ragdollmover.freezebone=Freeze/Unfreeze this Bone
|
||||||
|
|
||||||
|
@ -78,17 +78,17 @@ tool.ragdollmover.physmovetip=Манипулирование нефизичес
|
|||||||
tool.ragdollmover.scalerelativemove=Относительное масштабирование дочерних костей
|
tool.ragdollmover.scalerelativemove=Относительное масштабирование дочерних костей
|
||||||
|
|
||||||
tool.ragdollmover.resetmenu=Сброс
|
tool.ragdollmover.resetmenu=Сброс
|
||||||
tool.ragdollmover.resetpos=Сброс позиции
|
tool.ragdollmover.resetpos=Позиции
|
||||||
tool.ragdollmover.resetrot=Сброс вращения
|
tool.ragdollmover.resetrot=Вращения
|
||||||
tool.ragdollmover.resetscale=Сброс масштабирования
|
tool.ragdollmover.resetscale=Масштабирования
|
||||||
tool.ragdollmover.reset=Сброс всего
|
tool.ragdollmover.reset=Всего
|
||||||
tool.ragdollmover.resetposchildren=+Сброс позиции потомка
|
tool.ragdollmover.resetposchildren=+Позиций потомков
|
||||||
tool.ragdollmover.resetrotchildren=+Сброс вращения потомка
|
tool.ragdollmover.resetrotchildren=+Вращения потомков
|
||||||
tool.ragdollmover.resetscalechildren=+Сброс масштабирования потомка
|
tool.ragdollmover.resetscalechildren=+Масштабирования потомков
|
||||||
tool.ragdollmover.resetchildren=+Сброс потомка
|
tool.ragdollmover.resetchildren=+Потомков
|
||||||
tool.ragdollmover.scalezero=Установить нулевой размер
|
tool.ragdollmover.scalezero=Установить нулевой размер
|
||||||
tool.ragdollmover.bone=Кость
|
tool.ragdollmover.bone=Кости
|
||||||
tool.ragdollmover.bonechildren=Кость + Потомок
|
tool.ragdollmover.bonechildren=Кости + Потомков
|
||||||
|
|
||||||
tool.ragdollmover.lockpos=Заблокировать позицию
|
tool.ragdollmover.lockpos=Заблокировать позицию
|
||||||
tool.ragdollmover.unlockpos=Разблокировать позицию
|
tool.ragdollmover.unlockpos=Разблокировать позицию
|
||||||
@ -96,7 +96,7 @@ tool.ragdollmover.lockang=Заблокировать поворот
|
|||||||
tool.ragdollmover.unlockang=Разблокировать поворот
|
tool.ragdollmover.unlockang=Разблокировать поворот
|
||||||
tool.ragdollmover.lockscale=Заблокировать масштабирование
|
tool.ragdollmover.lockscale=Заблокировать масштабирование
|
||||||
tool.ragdollmover.unlockscale=Разблокировать масштабирование
|
tool.ragdollmover.unlockscale=Разблокировать масштабирование
|
||||||
tool.ragdollmover.lockbone=Привязать к этой кости
|
tool.ragdollmover.lockbone=Привязать другую кость к этой кости
|
||||||
tool.ragdollmover.unlockbone=Разблокировать кость
|
tool.ragdollmover.unlockbone=Разблокировать кость
|
||||||
tool.ragdollmover.freezebone=Заморозить/разморозить кость
|
tool.ragdollmover.freezebone=Заморозить/разморозить кость
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user