diff options
| author | Alexander Pickering <alexandermpickering@gmail.com> | 2017-08-08 17:42:45 -0400 |
|---|---|---|
| committer | Alexander Pickering <alexandermpickering@gmail.com> | 2017-08-08 17:42:45 -0400 |
| commit | ebb3ac7ef4ac1e69fcfc576dc7a06b269d42ca53 (patch) | |
| tree | a8344265ccaa8422f517e633faa4f34cf9e52db9 /lua/entities | |
| parent | daa59a7835c350a09dcb207c714acf57828137f3 (diff) | |
| download | artery_editor-ebb3ac7ef4ac1e69fcfc576dc7a06b269d42ca53.tar.gz artery_editor-ebb3ac7ef4ac1e69fcfc576dc7a06b269d42ca53.tar.bz2 artery_editor-ebb3ac7ef4ac1e69fcfc576dc7a06b269d42ca53.zip | |
Integrated zones into artery editor
Diffstat (limited to 'lua/entities')
| -rw-r--r-- | lua/entities/ent_zone_point.lua | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/lua/entities/ent_zone_point.lua b/lua/entities/ent_zone_point.lua new file mode 100644 index 0000000..986221a --- /dev/null +++ b/lua/entities/ent_zone_point.lua @@ -0,0 +1,132 @@ + +AddCSLuaFile() + +DEFINE_BASECLASS( "base_anim" ) + +ENT.PrintName = "Zone Point" +ENT.Author = "Bobblehead" +ENT.Information = "A point in the zone designator." +ENT.Category = "Other" + +ENT.Editable = false +ENT.Spawnable = false +ENT.AdminOnly = false +ENT.RenderGroup = RENDERGROUP_TRANSLUCENT + + +function ENT:Initialize() + self:SetModel("models/hunter/blocks/cube025x025x025.mdl") + self:SetCollisionGroup(COLLISION_GROUP_WORLD) + self:DrawShadow(false) + + if SERVER then + self:SetUseType(SIMPLE_USE) + self:PhysicsInit(SOLID_BBOX) + self:GetPhysicsObject():EnableMotion(false) + + self:GetPhysicsObject():SetMass(1) + + else + self:SetRenderBoundsWS(self:GetPos(),self:GetPos()+Vector(0,0,self:GetTall())) + end +end + +function ENT:SetupDataTables() + self:NetworkVar("Entity",0,"Next") + self:NetworkVar("Float",0,"Tall") + self:NetworkVar("Int",0,"ZoneID") + self:NetworkVar("String",0,"ZoneClass") + self:NetworkVar("Int",1,"AreaNumber") +end + +function ENT:DrawTranslucent() + local wep = LocalPlayer():GetActiveWeapon() + if wep:IsValid() and wep:GetClass() == "weapon_zone_designator" then + + if wep:GetZoneClass() == self:GetZoneClass() or GetConVarNumber("zone_filter") == 0 then + self:DrawModel() + + local p = self:GetPos() + p.z = p.z + self:GetTall() + render.Model({model=self:GetModel(),pos=p,ang=angle_zero}) + + render.SetMaterial(Material("cable/cable2")) + render.DrawBeam( self:GetPos(), p, 1, 1, 0, color_white ) + + local next = self:GetNext() + if IsValid(next) then + local class = self:GetZoneClass() + + render.DrawBeam( self:GetPos(), next:GetPos(), 1, 1, 0, color_white ) + + local n = next:GetPos() + n.z = n.z + next:GetTall() + render.DrawBeam( p, n, 1, 1, 0, color_white ) + + render.SetColorMaterial() + local col1 = table.Copy(zones.Classes[class]) + col1.a = 80 + local col2 = {a=80} + col2.r = col1.r * .5 + col2.g = col1.g * .5 + col2.b = col1.b * .5 + + render.DrawQuad(p,self:GetPos(),next:GetPos(),n,col1) + render.DrawQuad(n,next:GetPos(),self:GetPos(),p,col2) + + local id = self:GetZoneID() + local classtxt = id != -1 and class .. " (# "..id..")" or class + + local ang = (p-self:GetPos()):Cross(n-self:GetPos()):Angle() + ang:RotateAroundAxis(ang:Right(), 90) + ang:RotateAroundAxis(ang:Up(),-90) + cam.Start3D2D((n+self:GetPos())/2,ang,.2) + draw.SimpleText(classtxt,"DermaLarge",0,0,color_white,TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) + cam.End3D2D() + + ang:RotateAroundAxis(Vector(0,0,1), 180) + cam.Start3D2D((n+self:GetPos())/2,ang,.2) + draw.SimpleText(classtxt,"DermaLarge",0,0,color_white,TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) + cam.End3D2D() + + end + end + end +end + +function ENT:Think() + if CLIENT then + local next = self:GetNext() + if IsValid(next) and next != self.resizedto then + self:SetRenderBoundsWS(self:GetPos(),next:GetPos()+Vector(0,0,next:GetTall())) + self.resizedto = next + end + + local wep = LocalPlayer():GetActiveWeapon() + if wep:IsValid() and wep:GetClass() == "weapon_zone_designator" then + if LocalPlayer():GetEyeTrace().Entity == self then + self:SetColor(Color(255,0,0)) + elseif wep:GetCurrentPoint() == self then + self:SetColor(Color(0,0,255)) + else + self:SetColor(color_white) + end + end + else + + if IsValid(self.Resizing) then + + self:SetTall((self.Resizing:GetEyeTrace().HitPos - self:GetPos()).z) + + end + + end +end + +function ENT:OnRemove() + if SERVER then + if IsValid(self:GetNext()) then + self:GetNext():Remove() + end + end +end |
