Added scripts and models for DataCompressionTest 1 and 2
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
local module = {}
|
||||
|
||||
local function new(name,tab)
|
||||
local instance = Instance.new(name)
|
||||
for index,item in pairs(tab) do
|
||||
instance[index] = item
|
||||
end
|
||||
return instance
|
||||
end
|
||||
|
||||
local function block(cframe,size)
|
||||
return new("Part",{
|
||||
Material = Enum.Material.WoodPlanks,
|
||||
Color = Color3.new(0.301961, 0.14902, 0.0588235),
|
||||
Anchored = true,
|
||||
CFrame = cframe + Vector3.new(0,size.Y/2,0),
|
||||
Size = size,
|
||||
Transparency = 0.5,
|
||||
Parent = workspace
|
||||
})
|
||||
end
|
||||
|
||||
local function mark(position)
|
||||
return block(CFrame.new(position),Vector3.one * 128)
|
||||
end
|
||||
|
||||
local function r(v)
|
||||
return math.noise(v.X*0.379,v.Y*0.379,v.Z*0.379) + 1
|
||||
end
|
||||
|
||||
local px = Vector3.xAxis
|
||||
local py = Vector3.xAxis
|
||||
local pz = Vector3.xAxis
|
||||
|
||||
module.main = function(ox,oy,oz,noise)
|
||||
local n = function(v) return noise(v.X,v.Y,v.Z) end
|
||||
local o = Vector3.new(ox,oy,oz)
|
||||
|
||||
--[[
|
||||
origin: where the wall starts
|
||||
direction: where the wall faces
|
||||
magnitude: the size of the wall
|
||||
depth: the current depth of the wall
|
||||
]]
|
||||
local walls = {}
|
||||
local function hit(origin,direction,magnitude,depth)
|
||||
|
||||
end
|
||||
local function wall(origin,direction,magnitude)
|
||||
|
||||
end
|
||||
local function project(origin,direction,magnitude)
|
||||
local depth = 0
|
||||
for i = 1,4 do
|
||||
depth += magnitude * 0.5
|
||||
local probe = origin + direction * depth
|
||||
if n(probe) > 0.05 then continue end
|
||||
if hit(origin,direction,magnitude,depth) then continue end
|
||||
mark(origin + direction * depth)
|
||||
end
|
||||
if depth == 0 then return nil
|
||||
else return depth end
|
||||
end
|
||||
|
||||
local function extrude(origin,look,width,height)
|
||||
local depth = project(origin,look,width)
|
||||
if not depth then return end
|
||||
return block(CFrame.lookAlong(origin - look * depth * 0.5,look),Vector3.new(width,height,depth))
|
||||
end
|
||||
|
||||
local no = n(o)
|
||||
local norm = Vector3.new(no - n(o + Vector3.xAxis),no - n(o + Vector3.yAxis),no - n(o + Vector3.zAxis)).Unit
|
||||
local flat = Vector3.new(norm.X,0,norm.Z).Unit;
|
||||
mark(o).CFrame = CFrame.lookAlong(o,norm)
|
||||
o = o + project(o,-norm,64) * -norm or o
|
||||
extrude(o,flat,r(o+px)*256,r(o+py)*256)
|
||||
end
|
||||
|
||||
return module
|
||||
Reference in New Issue
Block a user