mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 21:53:46 +03:00
67 lines
1.5 KiB
Lua
67 lines
1.5 KiB
Lua
--[[
|
|
| This file was obtained through the combined efforts
|
|
| of Madbluntz & Plymouth Antiquarian Society.
|
|
|
|
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
|
| Maloy, DrPepper10 @ RIP, Atle!
|
|
|
|
|
| Visit for more: https://plymouth.thetwilightzone.ru/
|
|
--]]
|
|
|
|
local BUILDER, PART = pac.PartTemplate("base")
|
|
|
|
PART.ClassName = "flex"
|
|
|
|
PART.Icon = 'icon16/emoticon_smile.png'
|
|
PART.Group = 'entity'
|
|
|
|
BUILDER:StartStorableVars()
|
|
BUILDER:GetSet("Flex", "", {
|
|
enums = function(part)
|
|
local tbl = {}
|
|
|
|
for _, v in pairs(pac.GetFlexMap(part:GetOwner())) do
|
|
tbl[v.name] = v.name
|
|
end
|
|
|
|
return tbl
|
|
end
|
|
})
|
|
|
|
BUILDER:GetSet("Weight", 0)
|
|
BUILDER:GetSet("Additive", false)
|
|
BUILDER:GetSet("RootOwner", false, { hide_in_editor = true })
|
|
BUILDER:EndStorableVars()
|
|
|
|
function PART:SetRootOwner(b)
|
|
self:SetRootOwnerDeprecated(b)
|
|
end
|
|
|
|
function PART:GetNiceName()
|
|
return self:GetFlex() ~= "" and self:GetFlex() or "no flex"
|
|
end
|
|
|
|
function PART:GetFlexID()
|
|
local ent = self:GetOwner()
|
|
if not ent:IsValid() or not ent.GetFlexNum or ent:GetFlexNum() == 0 then return end
|
|
|
|
local flex_map = pac.GetFlexMap(ent)
|
|
local flex = flex_map[self.Flex:lower()]
|
|
|
|
return flex and flex.i, ent
|
|
end
|
|
|
|
function PART:OnBuildBonePositions()
|
|
local id, ent = self:GetFlexID()
|
|
if not id then return end
|
|
local weight = self.Weight
|
|
if self.Additive then
|
|
weight = weight + ent:GetFlexWeight(id)
|
|
end
|
|
ent:SetFlexWeight(id, weight)
|
|
ent.pac_touching_flexes = ent.pac_touching_flexes or {}
|
|
ent.pac_touching_flexes[id] = pac.RealTime + 0.1
|
|
end
|
|
|
|
BUILDER:Register()
|