Files
wnsrc/gamemodes/sandbox/gamemode/prop_tools.lua
lifestorm 6a58f406b1 Upload
2024-08-04 23:54:45 +03:00

56 lines
1.4 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/
--]]
--[[---------------------------------------------------------
If the entity is colliding with something this function
will make it non solid and call a timer to itself.
If it isn't colliding with anything it will make it solid
and the timer will end.
-----------------------------------------------------------]]
function CheckPropSolid( e, solidtype, nonsolidtype, SolidCallback )
if ( !IsValid( e ) ) then return end
-- Trace our entity to check for collisions
local trace = { start = e:GetPos(), endpos = e:GetPos(), filter = e }
local tr = util.TraceEntity( trace, e )
-- If it collides mark it non solid and test again in 0.5 seconds
if ( tr.Hit ) then
e:SetCollisionGroup( nonsolidtype )
-- Check later and later every time.
--timerlast = timerlast + 0.1
timer.Simple( 0.5, function() CheckPropSolid( e, solidtype, nonsolidtype, SolidCallback ) end )
else
e:SetCollisionGroup( solidtype )
-- If we have a solid callback function call it
if ( SolidCallback ) then
SolidCallback( e )
end
end
end
function DoPropSpawnedEffect( e )
if ( DisablePropCreateEffect ) then return end
e:SetSpawnEffect( true );
end