mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 05:43:46 +03:00
Upload
This commit is contained in:
88
lua/effect/trail.bone_set.lua
Normal file
88
lua/effect/trail.bone_set.lua
Normal file
@@ -0,0 +1,88 @@
|
||||
--[[
|
||||
| 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/
|
||||
--]]
|
||||
|
||||
WeaponTrail.BoneSet = {}
|
||||
|
||||
function WeaponTrail:AddBone(data)
|
||||
WeaponTrail.BoneSet[data.Number] = data
|
||||
end
|
||||
|
||||
local bone = {
|
||||
Number = 0,
|
||||
BoneName = "ValveBiped.Bip01_R_Hand",
|
||||
AddAngle = Angle(0,0,0),
|
||||
AngleType = 0, -- 0 = GetUp(), 1 = GetRight(), 2 = GetForward()
|
||||
Trail_Time = 0.1 -- Default 0.1 Longer this time, longer is the trajectory.
|
||||
}
|
||||
WeaponTrail:AddBone(bone)
|
||||
local bone = {
|
||||
Number = 1,
|
||||
BoneName = "R_Weapon",
|
||||
AddAngle = Angle(0,0,0),
|
||||
AngleType = 0, -- 0 = GetUp(), 1 = GetRight(), 2 = GetForward()
|
||||
Trail_Time = 0.2 -- Default 0.1 Longer this time, longer is the trajectory.
|
||||
}
|
||||
WeaponTrail:AddBone(bone)
|
||||
local bone = {
|
||||
Number = 2,
|
||||
BoneName = "R_Weapon001",
|
||||
AddAngle = Angle(0,0,0),
|
||||
AngleType = 0, -- 0 = GetUp(), 1 = GetRight(), 2 = GetForward()
|
||||
Trail_Time = 0.5 -- Default 0.1 Longer this time, longer is the trajectory.
|
||||
}
|
||||
WeaponTrail:AddBone(bone)
|
||||
local bone = {
|
||||
Number = 3,
|
||||
BoneName = "R_Weapon",
|
||||
AddAngle = Angle(0,0,0),
|
||||
AngleType = 1, -- 0 = GetUp(), 1 = GetRight(), 2 = GetForward()
|
||||
Trail_Time = 0.2 -- Default 0.1 Longer this time, longer is the trajectory.
|
||||
}
|
||||
WeaponTrail:AddBone(bone)
|
||||
local bone = {
|
||||
Number = 4,
|
||||
BoneName = "L_Weapon001",
|
||||
AddAngle = Angle(0,0,180),
|
||||
AngleType = 0, -- 0 = GetUp(), 1 = GetRight(), 2 = GetForward()
|
||||
Trail_Time = 0.5 -- Default 0.1 Longer this time, longer is the trajectory.
|
||||
}
|
||||
WeaponTrail:AddBone(bone)
|
||||
local bone = {
|
||||
Number = 5,
|
||||
BoneName = "R_Weapon",
|
||||
AddAngle = Angle(180,0,0),
|
||||
AngleType = 2, -- 0 = GetUp(), 1 = GetRight(), 2 = GetForward()
|
||||
Trail_Time = 0.2 -- Default 0.1 Longer this time, longer is the trajectory.
|
||||
}
|
||||
WeaponTrail:AddBone(bone)
|
||||
local bone = {
|
||||
Number = 6,
|
||||
BoneName = "R_Weapon",
|
||||
AddAngle = Angle(0,0,180),
|
||||
AngleType = 0, -- 0 = GetUp(), 1 = GetRight(), 2 = GetForward()
|
||||
Trail_Time = 0.2 -- Default 0.1 Longer this time, longer is the trajectory.
|
||||
}
|
||||
WeaponTrail:AddBone(bone)
|
||||
local bone = {
|
||||
Number = 7,
|
||||
BoneName = "Weapon_00",
|
||||
AddAngle = Angle(180,0,0),
|
||||
AngleType = 2, -- 0 = GetUp(), 1 = GetRight(), 2 = GetForward()
|
||||
Trail_Time = 0.2 -- Default 0.1 Longer this time, longer is the trajectory.
|
||||
}
|
||||
WeaponTrail:AddBone(bone)
|
||||
local bone = {
|
||||
Number = 8,
|
||||
BoneName = "Weapon_02",
|
||||
AddAngle = Angle(180,0,0),
|
||||
AngleType = 2, -- 0 = GetUp(), 1 = GetRight(), 2 = GetForward()
|
||||
Trail_Time = 0.1 -- Default 0.1 Longer this time, longer is the trajectory.
|
||||
}
|
||||
WeaponTrail:AddBone(bone)
|
||||
158
lua/effect/trail.lua
Normal file
158
lua/effect/trail.lua
Normal file
@@ -0,0 +1,158 @@
|
||||
--[[
|
||||
| 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/
|
||||
--]]
|
||||
|
||||
WeaponTrail.Eff = {}
|
||||
local iSteps = 10
|
||||
local Eff = {}
|
||||
local mat = Material( "down/vs/trail")
|
||||
Eff.Time = 10
|
||||
function Eff:InitEffect()
|
||||
self.DieTime = CurTime() + (self.CustomTime or 5)
|
||||
self.Flag = self.Flag or 0
|
||||
self.Size = self.Size or 100
|
||||
|
||||
local lastseq = self.Owner:GetSequenceName(self.Owner:GetSequence())//self.Owner:GetNW2Int("Anim_Name")
|
||||
if self.Seq != "none" then
|
||||
self.Seq = lastseq or "none"
|
||||
end
|
||||
self.Mat = Material(self.Mat or "")
|
||||
|
||||
self.TrailData = {}
|
||||
|
||||
self.Mesh = Mesh()
|
||||
|
||||
|
||||
local BoneData = WeaponTrail.BoneSet[self.Flag]
|
||||
local ply = self.Owner
|
||||
local pos, ang = ply:GetBonePosition(ply:LookupBone(BoneData.BoneName or "" ) or 0)
|
||||
ang = ang + BoneData.AddAngle or Angle()
|
||||
|
||||
|
||||
local basePos = pos
|
||||
local curPos = pos + ang:Up() * self.Size
|
||||
|
||||
if BoneData.AngleType == 0 then
|
||||
curPos = pos + ang:Up() * self.Size
|
||||
end
|
||||
if BoneData.AngleType == 1 then
|
||||
curPos = pos + ang:Right() * self.Size
|
||||
end
|
||||
if BoneData.AngleType == 2 then
|
||||
curPos = pos + ang:Forward() * self.Size
|
||||
end
|
||||
if self.DieTime - CurTime() >= 0 then
|
||||
|
||||
self.TrailData[#self.TrailData+1] = {
|
||||
basePos = basePos,
|
||||
curPos = curPos,
|
||||
_Time = BoneData.Trail_Time + CurTime(),
|
||||
}
|
||||
end
|
||||
|
||||
end
|
||||
function Eff:Think()
|
||||
|
||||
end
|
||||
function Eff:EndEffect()
|
||||
end
|
||||
|
||||
function Eff:Draw(_call)
|
||||
if !self.Owner:IsValid() then
|
||||
return
|
||||
|
||||
end
|
||||
local ply = self.Owner
|
||||
local BoneData = WeaponTrail.BoneSet[self.Flag]
|
||||
|
||||
local pos, ang = ply:GetBonePosition(ply:LookupBone(BoneData.BoneName or "" ) or 0)
|
||||
ang = ang + BoneData.AddAngle or ""
|
||||
|
||||
|
||||
local basePos = pos
|
||||
local curPos = pos + ang:Up() * self.Size
|
||||
|
||||
if BoneData.AngleType == 0 then
|
||||
curPos = pos + ang:Up() * self.Size
|
||||
end
|
||||
if BoneData.AngleType == 1 then
|
||||
curPos = pos + ang:Right() * self.Size
|
||||
end
|
||||
if BoneData.AngleType == 2 then
|
||||
curPos = pos + ang:Forward() * self.Size
|
||||
end
|
||||
if self.DieTime - CurTime() >= 0 then
|
||||
|
||||
self.TrailData[#self.TrailData+1] = {
|
||||
basePos = basePos,
|
||||
curPos = curPos,
|
||||
_Time = BoneData.Trail_Time + CurTime(),
|
||||
}
|
||||
end
|
||||
|
||||
local vMesh = {}
|
||||
local icount = iSteps
|
||||
for v, k in pairs(self.TrailData) do
|
||||
if self.TrailData[v-1] and self.TrailData[v-2] and v % 2 == 0 then
|
||||
local p = self.TrailData[v-1]
|
||||
local p2 = self.TrailData[v-2]
|
||||
|
||||
local ppos = k.curPos
|
||||
local ppos2 = k.basePos
|
||||
for i = 1, icount do
|
||||
local t = (i/icount)
|
||||
local count_1 = (1/#self.TrailData) * t
|
||||
local pos = math.Beizer(k.curPos, p.curPos, p2.curPos, t)
|
||||
local pos2 = math.Beizer(k.basePos, p.basePos, p2.basePos, t)
|
||||
local fUvRatio = (v / (#self.TrailData))
|
||||
local U = fUvRatio - count_1
|
||||
local a = #vMesh
|
||||
|
||||
|
||||
vMesh[a+1] = {pos = pos2, u = U, v = 1}
|
||||
vMesh[a+2] = {pos = pos, u = U, v = 0}
|
||||
vMesh[a+3] = {pos = ppos, u = U, v = 0}
|
||||
|
||||
vMesh[a+4] = {pos = pos2, u = U, v = 1}
|
||||
vMesh[a+5] = {pos = ppos, u = U, v = 0}
|
||||
vMesh[a+6] = {pos = ppos2, u = U, v = 1}
|
||||
|
||||
ppos = pos
|
||||
ppos2 = pos2
|
||||
end
|
||||
end
|
||||
if k._Time - CurTime() <= 0 then
|
||||
table.remove(self.TrailData, v)
|
||||
end
|
||||
end
|
||||
self.vMesh = vMesh
|
||||
if #self.TrailData <= 0 and self.DieTime - CurTime() <= 0 then
|
||||
return false
|
||||
end
|
||||
local lastseq = self.Owner:GetSequenceName(self.Owner:GetSequence())//self.Owner:GetNW2Int("Anim_Name")
|
||||
if self.Seq != "none" and self.Seq != lastseq then
|
||||
self.Seq = "none"
|
||||
return false
|
||||
end
|
||||
|
||||
render.SetMaterial(self.Mat)
|
||||
local imesh = Mesh()
|
||||
if #self.TrailData > 1 and self.vMesh then
|
||||
imesh:BuildFromTriangles(self.vMesh)
|
||||
end
|
||||
imesh:Draw()
|
||||
imesh:Destroy()
|
||||
return true
|
||||
end
|
||||
|
||||
WeaponTrail.Eff = Eff
|
||||
|
||||
function math.Beizer(p0, p1, p2, t)
|
||||
return LerpVector(t, LerpVector(t, p0, p1), LerpVector(t, p1, p2))
|
||||
end
|
||||
Reference in New Issue
Block a user