This commit is contained in:
Nikita Kruglickiy
2021-03-17 18:21:42 +06:00
parent 19ab152f5f
commit f1eaecd79e
11 changed files with 46 additions and 98 deletions

View File

@@ -1,20 +1,16 @@
local MODEL_PLACEHOLDER = "models/holograms/cube.mdl"
local BUNDLE_SIZE = 2
local SEND_DELAY = 0.5
MeshBuilder = class("MeshBuilder")
function MeshBuilder:initialize()
function MeshBuilder:initialize(modelPlaceholder, bundleSize, sendDelay)
self.modelPlaceholder = modelPlaceholder or "models/holograms/cube.mdl"
self.bundleSize = bundleSize or 10
self.sendDelay = sendDelay or 0.5
self._objects = {}
self._setups = {}
if CLIENT then
self._setups = {}
self._meshData = {}
--[[
self._shouldBuild = false
self._shouldRevision = true
]]
net.receive("holograms", function(len)
local hasNext = net.readBit()
@@ -38,46 +34,7 @@ function MeshBuilder:initialize()
hasNext = net.readBit()
end
end)
--[[
net.receive("revision", function()
local hasNext = net.readBit()
while hasNext == 1 do
local key = net.readString()
net.readEntity(function(ent)
local holo = ent:toHologram()
self._objects[key] = holo
end)
hasNext = net.readBit()
end
self._shouldRevision = false
if self._shouldBuild then
self:build()
self._shouldBuild = false
end
end)
]]
else
--[[
net.receive("revision", function(len, ply)
net.start("revision")
for k, v in pairs(self._objects) do
net.writeBit(1)
net.writeString(k)
net.writeEntity(v)
end
net.writeBit(0)
net.send()
end)
]]
net.receive("setups", function(len, ply)
local hasNext = net.readBit()
@@ -97,7 +54,7 @@ function MeshBuilder:initialize()
ang = relativeTo:localToWorldAngles(ang)
end
local holo = holograms.create(pos, ang, MODEL_PLACEHOLDER, scale)
local holo = holograms.create(pos, ang, self.modelPlaceholder, scale)
holo:setColor(color)
holo:setMaterial(mat)
holo:setParent(parent)
@@ -152,17 +109,6 @@ if CLIENT then
end
function MeshBuilder:build()
--[[
if self._shouldRevision then
net.start("revision")
net.send()
self._shouldBuild = true
return
end
]]
local function sendSetups(setups)
net.start("setups")
for k, v in pairs(setups) do
@@ -181,20 +127,20 @@ if CLIENT then
end
local bundleKeys = table.getKeys(self._setups)
if #bundleKeys > BUNDLE_SIZE then
if #bundleKeys > self.bundleSize then
local i = 1
timer.create("sendSetups", SEND_DELAY, math.ceil(#bundleKeys / BUNDLE_SIZE), function()
local from = (i - 1) * BUNDLE_SIZE + 1
timer.create("sendSetups", self.sendDelay, math.ceil(#bundleKeys / self.bundleSize), function()
local from = (i - 1) * self.bundleSize + 1
local setups = {}
for _, v in pairs({ unpack(bundleKeys, from, from + BUNDLE_SIZE - 1) }) do
for _, v in pairs({ unpack(bundleKeys, from, from + self.bundleSize - 1) }) do
setups[v] = self._setups[v]
end
sendSetups(setups)
if i < math.ceil(#bundleKeys / BUNDLE_SIZE) then
if i < math.ceil(#bundleKeys / self.bundleSize) then
i = i + 1
else
table.empty(self._setups)