mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-18 22:23:46 +03:00
Upload
This commit is contained in:
66
lua/pac3/core/client/parts/flex.lua
Normal file
66
lua/pac3/core/client/parts/flex.lua
Normal file
@@ -0,0 +1,66 @@
|
||||
--[[
|
||||
| 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()
|
||||
Reference in New Issue
Block a user