mirror of
https://github.com/wiremod/wire.git
synced 2025-03-04 03:03:04 -05:00

Now nobody's commit should be flagged by Travis unless it actually introduces whitespace errors (which we do want to check for). This doesn't fully sort out indentation everywhere, but does fix all whitespace that Git doesn't like. You can check the whitespace across the entire codebase with: git diff-tree --check "$(git hash-object -t tree /dev/null)" HEAD
100 lines
3.1 KiB
Lua
100 lines
3.1 KiB
Lua
-- Wire Trigger created by mitterdoo
|
|
AddCSLuaFile()
|
|
DEFINE_BASECLASS( "base_wire_entity" )
|
|
ENT.PrintName = "Wire Trigger"
|
|
ENT.RenderGroup = RENDERGROUP_BOTH
|
|
ENT.WireDebugName = "Trigger"
|
|
|
|
function ENT:SetupDataTables()
|
|
self:NetworkVar( "Vector", 0, "TriggerSize" )
|
|
self:NetworkVar( "Vector", 1, "TriggerOffset" )
|
|
self:NetworkVar( "Entity", 0, "TriggerEntity" )
|
|
self:NetworkVar( "Int", 0, "Filter" )
|
|
self:NetworkVar( "Bool", 0, "OwnerOnly" )
|
|
end
|
|
|
|
if CLIENT then
|
|
function ENT:GetOverlayData()
|
|
local size = self:GetTriggerSize()
|
|
local offset = self:GetTriggerOffset()
|
|
|
|
local txt = "Size: " .. string.format( "(%.2f,%.2f,%.2f)", size.x, size.y, size.z ) .. "\n"
|
|
txt = txt .. "Offset: " .. string.format( "(%.2f,%.2f,%.2f)", offset.x, offset.y, offset.z ) .. "\n"
|
|
txt = txt .. "Triggered by: " .. (
|
|
self:GetFilter() == 0 and "All Entities" or
|
|
self:GetFilter() == 1 and "Only Players" or
|
|
self:GetFilter() == 2 and "Only Props"
|
|
)
|
|
|
|
return {txt=txt}
|
|
end
|
|
|
|
return -- No more client
|
|
end
|
|
|
|
function ENT:Initialize()
|
|
self:PhysicsInit( SOLID_VPHYSICS )
|
|
self:SetMoveType( MOVETYPE_VPHYSICS )
|
|
self:SetSolid( SOLID_VPHYSICS )
|
|
local phys = self:GetPhysicsObject() if (phys:IsValid()) then phys:Wake() end
|
|
|
|
self.Outputs = WireLib.CreateOutputs(self, { "EntCount", "Entities [ARRAY]" })
|
|
end
|
|
|
|
function ENT:Setup( model, filter, owneronly, sizex, sizey, sizez, offsetx, offsety, offsetz )
|
|
|
|
filter = math.Clamp( filter, 0, 2 )
|
|
sizex = math.Clamp( sizex, -1000, 1000 )
|
|
sizey = math.Clamp( sizey, -1000, 1000 )
|
|
sizez = math.Clamp( sizez, -1000, 1000 )
|
|
offsetx = math.Clamp( offsetx, -1000, 1000 )
|
|
offsety = math.Clamp( offsety, -1000, 1000 )
|
|
offsetz = math.Clamp( offsetz, -1000, 1000 )
|
|
self.model = model
|
|
self.filter = filter
|
|
self.owneronly = owneronly
|
|
self.sizex = sizex
|
|
self.sizey = sizey
|
|
self.sizez = sizez
|
|
self.offsetx = offsetx
|
|
self.offsety = offsety
|
|
self.offsetz = offsetz
|
|
|
|
self:SetOwnerOnly( tobool( owneronly ) )
|
|
self:SetModel( model )
|
|
self:SetFilter( filter )
|
|
self:SetTriggerSize( Vector( sizex, sizey, sizez ) )
|
|
self:SetTriggerOffset( Vector( offsetx, offsety, offsetz ) )
|
|
|
|
|
|
local mins = self:GetTriggerSize() / -2
|
|
local maxs = self:GetTriggerSize() / 2
|
|
|
|
local oldtrig = self:GetTriggerEntity()
|
|
if IsValid( oldtrig ) then
|
|
oldtrig:SetCollisionBounds( mins, maxs )
|
|
oldtrig:SetPos( self:LocalToWorld( self:GetTriggerOffset() ) )
|
|
oldtrig:Reset()
|
|
else
|
|
local trig = ents.Create( "gmod_wire_trigger_entity" )
|
|
trig:SetPos( self:LocalToWorld( self:GetTriggerOffset() ) )
|
|
trig:SetAngles( self:GetAngles() )
|
|
trig:PhysicsInit( SOLID_BBOX )
|
|
trig:SetMoveType( MOVETYPE_VPHYSICS )
|
|
trig:SetSolid( SOLID_BBOX )
|
|
trig:SetModel( "models/hunter/blocks/cube025x025x025.mdl" )
|
|
trig:SetParent( self )
|
|
trig:Spawn()
|
|
|
|
trig:SetCollisionBounds( mins, maxs )
|
|
trig:SetCollisionGroup( COLLISION_GROUP_IN_VEHICLE )
|
|
trig:SetNoDraw( true )
|
|
trig:SetTrigger( true )
|
|
self:SetTriggerEntity( trig )
|
|
trig:SetTriggerEntity( self )
|
|
self:DeleteOnRemove( trig )
|
|
end
|
|
end
|
|
|
|
duplicator.RegisterEntityClass("gmod_wire_trigger", WireLib.MakeWireEnt, "Data", "model", "filter", "owneronly", "sizex", "sizey", "sizez", "offsetx", "offsety", "offsetz" )
|