update
This commit is contained in:
@@ -139,14 +139,11 @@ static func room(parent: Node, center: Vector3, size: Vector3, wall_c: Color,
|
||||
|
||||
static func _meshes_von(b: Dictionary) -> Array:
|
||||
var out: Array = []
|
||||
for n in b["etagen"]:
|
||||
for n in b["teile"]:
|
||||
_sammle(n, out)
|
||||
for n in b["dach"]:
|
||||
_sammle(n, out)
|
||||
for liste in b["waende"]:
|
||||
for w in liste:
|
||||
if not out.has(w):
|
||||
out.append(w)
|
||||
for w in b["waende"]:
|
||||
if not out.has(w):
|
||||
out.append(w)
|
||||
return out
|
||||
|
||||
|
||||
@@ -162,12 +159,10 @@ static func _wand(mi: MeshInstance3D, normale: Vector3) -> MeshInstance3D:
|
||||
return mi
|
||||
|
||||
|
||||
## Etagenschnitt wie bei den Sims: steht der Spieler in einem Bau, verschwinden
|
||||
## das Dach, die Etagen über ihm und die beiden Wände, die zur Kamera zeigen.
|
||||
## Ein Bau: {c, size, hoch, etagen, dach, waende, voll}. "voll" heißt: ein
|
||||
## geschlossener Klotz, der ganz verschwindet.
|
||||
## Ein Bau zwischen Kamera und Spieler wird durchsichtig, sonst verschwände
|
||||
## der Spieler hinter jedem Nachbarhaus.
|
||||
## Schnitt wie bei den Sims: steht der Spieler in einem Bau, verschwinden Dach
|
||||
## (bei Klötzen der ganze Klotz) und die beiden Wände, die zur Kamera zeigen.
|
||||
## Ein Bau: {c, size, hoch, teile, waende}. Ein Bau zwischen Kamera und
|
||||
## Spieler wird durchsichtig, sonst verschwände der Spieler hinter jedem Nachbarhaus.
|
||||
static func schnitt(bauten: Array, spieler: Vector3, kamera: Vector3) -> void:
|
||||
for b in bauten:
|
||||
var c: Vector3 = b["c"]
|
||||
@@ -188,17 +183,11 @@ static func schnitt(bauten: Array, spieler: Vector3, kamera: Vector3) -> void:
|
||||
(mi as GeometryInstance3D).cast_shadow = \
|
||||
GeometryInstance3D.SHADOW_CASTING_SETTING_OFF if im_weg \
|
||||
else GeometryInstance3D.SHADOW_CASTING_SETTING_ON
|
||||
var etagen: Array = b["etagen"]
|
||||
var pf := clampi(int(floor((spieler.y - c.y + 0.6) / Orte.ETAGE)), 0, maxi(0, etagen.size() - 1))
|
||||
for f in range(etagen.size()):
|
||||
(etagen[f] as Node3D).visible = not drin or (f <= pf and not bool(b.get("voll", false)))
|
||||
for d in b["dach"]:
|
||||
(d as Node3D).visible = not drin
|
||||
var waende: Array = b["waende"]
|
||||
for f in range(waende.size()):
|
||||
for w in waende[f]:
|
||||
var n: Vector3 = w.get_meta("normal")
|
||||
(w as Node3D).visible = not (drin and f == pf and n.dot(kamera - c) > 0.0)
|
||||
for t in b["teile"]:
|
||||
(t as Node3D).visible = not drin
|
||||
for w in b["waende"]:
|
||||
var n: Vector3 = w.get_meta("normal")
|
||||
(w as Node3D).visible = not (drin and n.dot(kamera - c) > 0.0)
|
||||
|
||||
|
||||
## Ein Satteldach: ein geschlossenes Prisma über den Wänden. Der First läuft
|
||||
|
||||
Reference in New Issue
Block a user