95 lines
2.2 KiB
Lua
95 lines
2.2 KiB
Lua
|
|
AddCSLuaFile( "cl_init.lua" )
|
|
AddCSLuaFile( "shared.lua" )
|
|
|
|
include('shared.lua')
|
|
|
|
ENT.WireDebugName = "Trail"
|
|
|
|
function ENT:Initialize()
|
|
self.Entity:PhysicsInit( SOLID_VPHYSICS )
|
|
self.Entity:SetMoveType( MOVETYPE_VPHYSICS )
|
|
self.Entity:SetSolid( SOLID_VPHYSICS )
|
|
self.Inputs = Wire_CreateInputs(self.Entity, {"Set", "Length","StartSize","EndSize","R","G","B","A"})
|
|
self.Outputs = Wire_CreateOutputs(self.Entity, {})
|
|
self.R = 0
|
|
self.G = 0
|
|
self.B = 0
|
|
self.A = 0
|
|
self.Length = 0
|
|
self.StartSize = 0
|
|
self.EndSize = 0
|
|
self.Material = ""
|
|
end
|
|
|
|
function ENT:OnRemove()
|
|
Wire_Remove(self.Entity)
|
|
end
|
|
|
|
function ENT:Setup(Material)
|
|
self.Material = Material
|
|
end
|
|
|
|
function ENT:SetTrails( Player, Entity, Data )
|
|
|
|
if ( Entity.SToolTrail ) then
|
|
|
|
Entity.SToolTrail:Remove()
|
|
Entity.SToolTrail = nil
|
|
|
|
end
|
|
|
|
if ( Data.StartSize == 0 ) then
|
|
|
|
Data.StartSize = 0.0001;
|
|
|
|
end
|
|
|
|
local trail_entity = util.SpriteTrail( Entity, //Entity
|
|
0, //iAttachmentID
|
|
Data.Color, //Color
|
|
false, // bAdditive
|
|
Data.StartSize, //fStartWidth
|
|
Data.EndSize, //fEndWidth
|
|
Data.Length, //fLifetime
|
|
1 / ((Data.StartSize+Data.EndSize) * 0.5), //fTextureRes
|
|
Data.Material .. ".vmt" ) //strTexture
|
|
|
|
Entity.SToolTrail = trail_entity
|
|
end
|
|
|
|
function ENT:TriggerInput(iname, value)
|
|
if (iname == "Set") then
|
|
if (value ~= 0) then
|
|
self:SetTrails( self:GetOwner(), self.Entity, { Color = Color( self.R, self.G, self.B, self.A ),
|
|
Length = self.Length,
|
|
StartSize = self.StartSize,
|
|
EndSize = self.EndSize,
|
|
Material = self.Material } )
|
|
end
|
|
elseif(iname == "Length")then
|
|
self.Length = value
|
|
elseif(iname == "StartSize")then
|
|
self.StartSize = value
|
|
elseif(iname == "EndSize")then
|
|
self.EndSize = value
|
|
elseif(iname == "R")then
|
|
self.R = value
|
|
elseif(iname == "G")then
|
|
self.G = value
|
|
elseif(iname == "B")then
|
|
self.B = value
|
|
elseif(iname == "A")then
|
|
self.A = value
|
|
end
|
|
end
|
|
|
|
function ENT:ShowOutput()
|
|
local text = "Trail"
|
|
self:SetOverlayText( text )
|
|
end
|
|
|
|
function ENT:OnRestore()
|
|
Wire_Restored(self.Entity)
|
|
end
|
|
|