system update: some old stuff removed + general updates

This commit is contained in:
turanszkij
2018-05-30 17:37:26 +01:00
parent 5978f4cd98
commit 1fb2f50301
29 changed files with 386 additions and 313 deletions
+12 -14
View File
@@ -54,20 +54,18 @@ dungeon={
end
if place then
LoadModel(modelpath .. "dungeon/end/end",tag,exitTransforms[i])
LoadModel(modelpath .. "dungeon/end/end",exitTransforms[i])
end
end
end
-- Place the start piece of the dungeon
LoadModel(modelpath .. "dungeon/start/start","segment",scalingMat)
LoadModel(modelpath .. "dungeon/start/start",scalingMat)
LoadWorldInfo("dungeon/start/","start.wiw")
CheckSegmentCanBePlaced(AABB(Vector(-1,0,-2),Vector(1,2,0)))
-- Create physical dungeon segments recursively
local function GenerateDungeon(i, count, pos, rotY)
-- tag is a unique identifier for each segment
local tag = "segment"..math.floor(pos.GetX())..math.floor(pos.GetY())..math.floor(pos.GetZ())
local rotMat = matrix.RotationY(rotY)
local transformMat = matrix.Multiply( rotMat, matrix.Multiply( matrix.Translation(pos), scalingMat ) )
@@ -83,21 +81,21 @@ dungeon={
local select2 = math.random(0, 6)
if(select2 < 1) then --left turn
if CheckSegmentCanBePlaced(AABB(Vector(-1,0,0),Vector(1,2,2)).Transform(transformMat)) then
LoadModel(modelpath .. "dungeon/turnleft/turnleft",tag,transformMat)
LoadModel(modelpath .. "dungeon/turnleft/turnleft",transformMat)
GenerateDungeon(i+1,count,pos:Add(Vector(-1,0,1).Transform(rotMat)),rotY-0.5*math.pi)
else
GenerateDungeon(i+1,count,pos,rotY)
end
elseif(select2 < 2) then --right turn
if CheckSegmentCanBePlaced(AABB(Vector(-1,0,0),Vector(1,2,2)).Transform(transformMat)) then
LoadModel(modelpath .. "dungeon/turnright/turnright",tag,transformMat)
LoadModel(modelpath .. "dungeon/turnright/turnright",transformMat)
GenerateDungeon(i+1,count,pos:Add(Vector(1,0,1).Transform(rotMat)),rotY+0.5*math.pi)
else
GenerateDungeon(i+1,count,pos,rotY)
end
elseif(select2 < 3) then --t-junction
if CheckSegmentCanBePlaced(AABB(Vector(-1,0,0),Vector(1,2,2)).Transform(transformMat)) then
LoadModel(modelpath .. "dungeon/tjunction/tjunction",tag,transformMat)
LoadModel(modelpath .. "dungeon/tjunction/tjunction",transformMat)
-- right
GenerateDungeon(i+1,count,pos:Add(Vector(1,0,1).Transform(rotMat)),rotY+0.5*math.pi)
-- left
@@ -107,7 +105,7 @@ dungeon={
end
elseif(select2 < 4) then --cross-junction
if CheckSegmentCanBePlaced(AABB(Vector(-1,0,0),Vector(1,2,2)).Transform(transformMat)) then
LoadModel(modelpath .. "dungeon/crossjunction/crossjunction",tag,transformMat)
LoadModel(modelpath .. "dungeon/crossjunction/crossjunction",transformMat)
-- right
GenerateDungeon(i+1,count,pos:Add(Vector(1,0,1).Transform(rotMat)),rotY+0.5*math.pi)
-- left
@@ -119,7 +117,7 @@ dungeon={
end
else --straight block
if CheckSegmentCanBePlaced(AABB(Vector(-1,0,0),Vector(1,2,2)).Transform(transformMat)) then
LoadModel(modelpath .. "dungeon/block/block",tag,transformMat)
LoadModel(modelpath .. "dungeon/block/block",transformMat)
GenerateDungeon(i+1,count,pos:Add(Vector(0,0,2).Transform(rotMat)),rotY)
else
GenerateDungeon(i+1,count,pos,rotY)
@@ -129,28 +127,28 @@ dungeon={
local select2 = math.random(0, 100)
if( select2 < 20 ) then --small room left
if CheckSegmentCanBePlaced(AABB(Vector(-5,0,0),Vector(1,2,6)).Transform(transformMat)) then
LoadModel(modelpath .. "dungeon/smallroomleft/smallroomleft",tag,transformMat )
LoadModel(modelpath .. "dungeon/smallroomleft/smallroomleft",transformMat )
GenerateDungeon(i+1,count,pos:Add(Vector(-5,0,5).Transform(rotMat)),rotY-0.5*math.pi)
else
GenerateDungeon(i+1,count,pos,rotY)
end
elseif( select2 < 30 ) then --odd corridor
if CheckSegmentCanBePlaced(AABB(Vector(-1,0,0),Vector(3,2,8)).Transform(transformMat)) then
LoadModel(modelpath .. "dungeon/oddcorridor/oddcorridor",tag,transformMat )
LoadModel(modelpath .. "dungeon/oddcorridor/oddcorridor",transformMat )
GenerateDungeon(i+1,count,pos:Add(Vector(2,0,8).Transform(rotMat)),rotY)
else
GenerateDungeon(i+1,count,pos,rotY)
end
elseif( select2 < 60 ) then --up corridor
if CheckSegmentCanBePlaced(AABB(Vector(-1,0,0),Vector(1,4,6)).Transform(transformMat)) then
LoadModel(modelpath .. "dungeon/upcorridor/upcorridor",tag,transformMat )
LoadModel(modelpath .. "dungeon/upcorridor/upcorridor",transformMat )
GenerateDungeon(i+1,count,pos:Add(Vector(0,2,6).Transform(rotMat)),rotY)
else
GenerateDungeon(i+1,count,pos,rotY)
end
else --corridor
if CheckSegmentCanBePlaced(AABB(Vector(-1,0,0),Vector(1,2,6)).Transform(transformMat)) then
LoadModel(modelpath .. "dungeon/corridor/corridor",tag,transformMat )
LoadModel(modelpath .. "dungeon/corridor/corridor",transformMat )
GenerateDungeon(i+1,count,pos:Add(Vector(0,0,6).Transform(rotMat)),rotY)
else
GenerateDungeon(i+1,count,pos,rotY)
@@ -158,7 +156,7 @@ dungeon={
end
else -- rare pieces
if CheckSegmentCanBePlaced(AABB(Vector(-4,0,0),Vector(4,8,8)).Transform(transformMat)) then
LoadModel(modelpath .. "dungeon/room/room",tag,transformMat )
LoadModel(modelpath .. "dungeon/room/room",transformMat )
-- right
GenerateDungeon(i+1,count,pos:Add(Vector(4,0,4).Transform(rotMat)),rotY + 0.5*math.pi)
-- left