P1 iron: nuggets, ore, clay, kiln, smelter, forge, iron tools and arrows, lantern, tool wear and repair
This commit is contained in:
@@ -76,6 +76,20 @@ static func build(key: String) -> ArrayMesh:
|
||||
"grilled_perch": m = _fish(PERCH, 0.16, true)
|
||||
"grilled_trout": m = _fish(TROUT, 0.24, true)
|
||||
"fiber_plant": m = _fiber_plant()
|
||||
"iron_nugget": m = _pebble(61, RUST, Vector3(0.07, 0.05, 0.06), 0.6)
|
||||
"iron_ore": m = _ore()
|
||||
"clay": m = _pebble(67, CLAY, Vector3(0.12, 0.07, 0.1), 0.12)
|
||||
"charcoal": m = _charcoal()
|
||||
"iron_bar": m = _iron_bar()
|
||||
"nails": m = _nails()
|
||||
"iron_axe": m = _iron_axe()
|
||||
"iron_pickaxe": m = _iron_pickaxe()
|
||||
"iron_spear": m = _iron_spear()
|
||||
"iron_arrow": m = _arrow(IRON_BRIGHT)
|
||||
"lantern": m = _lantern()
|
||||
"charcoal_kiln": m = _kiln()
|
||||
"smelter": m = _smelter()
|
||||
"forge": m = _forge()
|
||||
"berry_bush": m = _berry_bush(true)
|
||||
"berry_bush_bare": m = _berry_bush(false)
|
||||
_:
|
||||
@@ -474,11 +488,11 @@ static func _bow() -> ArrayMesh:
|
||||
return P._commit(st)
|
||||
|
||||
## Arrow along -Z (its flight direction), tip at the front.
|
||||
static func _arrow() -> ArrayMesh:
|
||||
static func _arrow(tip: Color = FLINT) -> ArrayMesh:
|
||||
var st := P._begin()
|
||||
var r := _rng(137)
|
||||
P._cylinder(st, Vector3(0, 0, 0.35), Vector3(0, 0, -0.33), 0.008, 0.008, 4, HANDLE, r, 0.0)
|
||||
P._cylinder(st, Vector3(0, 0, -0.32), Vector3(0, 0, -0.4), 0.018, 0.002, 4, FLINT, r, 0.0)
|
||||
P._cylinder(st, Vector3(0, 0, -0.32), Vector3(0, 0, -0.4), 0.018, 0.002, 4, tip, r, 0.0)
|
||||
for a in [0.0, TAU / 3.0, TAU * 2.0 / 3.0]:
|
||||
var d := Vector3(cos(a), sin(a), 0) * 0.03
|
||||
P._tri(st, Vector3(0, 0, 0.33), Vector3(0, 0, 0.2), d + Vector3(0, 0, 0.3), Vector3(-d.y, d.x, 0), FLETCH)
|
||||
@@ -487,6 +501,133 @@ static func _arrow() -> ArrayMesh:
|
||||
|
||||
const WOLF_FUR := Color(0.5, 0.5, 0.52)
|
||||
|
||||
# --- iron (P1) ------------------------------------------------------------------
|
||||
|
||||
const RUST := Color(0.5, 0.26, 0.14)
|
||||
const CLAY := Color(0.62, 0.6, 0.55)
|
||||
const CLAY_FIRED := Color(0.66, 0.42, 0.3)
|
||||
const CHARCOAL := Color(0.1, 0.09, 0.09)
|
||||
const IRON_BRIGHT := Color(0.55, 0.56, 0.6)
|
||||
|
||||
static func _ore() -> ArrayMesh:
|
||||
var st := P._begin()
|
||||
var r := _rng(71)
|
||||
var n := FastNoiseLite.new()
|
||||
n.seed = 71
|
||||
n.frequency = 1.4
|
||||
P._blob(st, Vector3(0, 0.07, 0), Vector3(0.13, 0.09, 0.11), n, 0.35, STONE, r, 1)
|
||||
for i in range(4):
|
||||
var a := TAU * i / 4.0 + 0.4
|
||||
P._blob(st, Vector3(cos(a) * 0.08, 0.1, sin(a) * 0.07), Vector3(0.05, 0.035, 0.04), n, 0.4, RUST, r, 0)
|
||||
return P._commit(st)
|
||||
|
||||
static func _charcoal() -> ArrayMesh:
|
||||
var st := P._begin()
|
||||
var r := _rng(73)
|
||||
for i in range(4):
|
||||
var c := Vector3(r.randf_range(-0.07, 0.07), 0.03, r.randf_range(-0.06, 0.06))
|
||||
_box(st, c, Vector3(0.1, 0.05, 0.06) * r.randf_range(0.8, 1.2), P._mul(CHARCOAL, r.randf_range(0.8, 1.6)), Basis(Vector3.UP, r.randf() * TAU))
|
||||
return P._commit(st)
|
||||
|
||||
static func _iron_bar() -> ArrayMesh:
|
||||
var st := P._begin()
|
||||
_box(st, Vector3(0, 0.04, 0), Vector3(0.3, 0.07, 0.1), IRON_BRIGHT)
|
||||
_box(st, Vector3(0, 0.085, 0), Vector3(0.26, 0.02, 0.07), P._mul(IRON_BRIGHT, 1.15))
|
||||
return P._commit(st)
|
||||
|
||||
static func _nails() -> ArrayMesh:
|
||||
var st := P._begin()
|
||||
var r := _rng(79)
|
||||
for i in range(6):
|
||||
var a := r.randf() * TAU
|
||||
var c := Vector3(r.randf_range(-0.06, 0.06), 0.012, r.randf_range(-0.06, 0.06))
|
||||
var d := Vector3(cos(a), 0, sin(a)) * 0.07
|
||||
P._cylinder(st, c - d, c + d, 0.006, 0.002, 4, IRON, r)
|
||||
P._cylinder(st, c - d, c - d * 0.85, 0.013, 0.013, 5, IRON, r)
|
||||
return P._commit(st)
|
||||
|
||||
static func _iron_axe() -> ArrayMesh:
|
||||
var st := P._begin()
|
||||
var r := _rng(83)
|
||||
_handle(st, 0.58, r)
|
||||
_box(st, Vector3(0.03, 0.5, 0), Vector3(0.1, 0.08, 0.04), IRON)
|
||||
_box(st, Vector3(0.11, 0.5, 0), Vector3(0.07, 0.15, 0.025), IRON_BRIGHT)
|
||||
return P._commit(st)
|
||||
|
||||
static func _iron_pickaxe() -> ArrayMesh:
|
||||
var st := P._begin()
|
||||
var r := _rng(89)
|
||||
_handle(st, 0.62, r)
|
||||
_box(st, Vector3(0, 0.57, 0), Vector3(0.06, 0.07, 0.06), IRON)
|
||||
P._cylinder(st, Vector3(-0.02, 0.58, 0), Vector3(0.25, 0.51, 0), 0.03, 0.004, 4, IRON_BRIGHT, r, -1.0, IRON)
|
||||
P._cylinder(st, Vector3(0.02, 0.58, 0), Vector3(-0.22, 0.52, 0), 0.03, 0.004, 4, IRON_BRIGHT, r, -1.0, IRON)
|
||||
return P._commit(st)
|
||||
|
||||
static func _iron_spear() -> ArrayMesh:
|
||||
var st := P._begin()
|
||||
var r := _rng(97)
|
||||
P._cylinder(st, Vector3(0, -0.55, 0), Vector3(0, 0.75, 0), 0.022, 0.02, 6, HANDLE, r, -1.0, HANDLE)
|
||||
_box(st, Vector3(0, 0.77, 0), Vector3(0.04, 0.05, 0.04), IRON)
|
||||
P._cylinder(st, Vector3(0, 0.79, 0), Vector3(0, 1.02, 0), 0.03, 0.002, 4, IRON_BRIGHT, r)
|
||||
return P._commit(st)
|
||||
|
||||
static func _lantern() -> ArrayMesh:
|
||||
var st := P._begin()
|
||||
var r := _rng(101)
|
||||
# Held by the ring at the top, the light hanging below the hand.
|
||||
_box(st, Vector3(0, 0.05, 0), Vector3(0.14, 0.02, 0.14), IRON)
|
||||
_box(st, Vector3(0, 0.3, 0), Vector3(0.16, 0.03, 0.16), IRON)
|
||||
for sx in [-0.065, 0.065]:
|
||||
for sz in [-0.065, 0.065]:
|
||||
_box(st, Vector3(sx, 0.175, sz), Vector3(0.015, 0.24, 0.015), IRON)
|
||||
_box(st, Vector3(0, 0.17, 0), Vector3(0.11, 0.2, 0.11), Color(1.0, 0.85, 0.5))
|
||||
P._cylinder(st, Vector3(0, 0.315, 0), Vector3(0, 0.4, 0), 0.04, 0.01, 5, IRON, r)
|
||||
return P._commit(st)
|
||||
|
||||
## A low clay dome with a dark mouth at the front (+Z), and a smoke hole.
|
||||
static func _kiln() -> ArrayMesh:
|
||||
var st := P._begin()
|
||||
var r := _rng(103)
|
||||
var n := FastNoiseLite.new()
|
||||
n.seed = 103
|
||||
n.frequency = 1.2
|
||||
P._blob(st, Vector3(0, 0.45, 0), Vector3(0.75, 0.55, 0.75), n, 0.08, CLAY_FIRED, r, 1)
|
||||
_box(st, Vector3(0, 0.25, 0.68), Vector3(0.42, 0.34, 0.12), ASH)
|
||||
P._cylinder(st, Vector3(0, 0.95, 0), Vector3(0, 1.12, 0), 0.12, 0.1, 6, P._mul(CLAY_FIRED, 0.85), r, -1.0, ASH)
|
||||
for i in range(8):
|
||||
var a := TAU * i / 8.0
|
||||
P._blob(st, Vector3(cos(a) * 0.78, 0.08, sin(a) * 0.78), Vector3(0.13, 0.1, 0.12), n, 0.3, STONE, r, 1)
|
||||
return P._commit(st)
|
||||
|
||||
## A stone base with a tall clay shaft, the hot mouth low at the front (+Z).
|
||||
static func _smelter() -> ArrayMesh:
|
||||
var st := P._begin()
|
||||
var r := _rng(107)
|
||||
var n := FastNoiseLite.new()
|
||||
n.seed = 107
|
||||
n.frequency = 1.5
|
||||
for i in range(10):
|
||||
var a := TAU * i / 10.0
|
||||
P._blob(st, Vector3(cos(a) * 0.5, 0.12, sin(a) * 0.5), Vector3(0.16, 0.14, 0.15), n, 0.3, P._mul(STONE, r.randf_range(0.8, 1.05)), r, 1)
|
||||
P._cylinder(st, Vector3(0, 0.1, 0), Vector3(0, 1.7, 0), 0.5, 0.26, 8, CLAY_FIRED, r, -1.0, ASH)
|
||||
_box(st, Vector3(0, 0.3, 0.46), Vector3(0.36, 0.28, 0.14), ASH)
|
||||
_box(st, Vector3(0.38, 0.12, 0.42), Vector3(0.28, 0.06, 0.14), STONE, Basis(Vector3.UP, 0.5))
|
||||
return P._commit(st)
|
||||
|
||||
## A stone hearth (left) and an anvil on a stump (right).
|
||||
static func _forge() -> ArrayMesh:
|
||||
var st := P._begin()
|
||||
var r := _rng(109)
|
||||
_box(st, Vector3(-0.55, 0.38, 0), Vector3(0.95, 0.76, 0.95), P._mul(STONE, 0.9))
|
||||
_box(st, Vector3(-0.55, 0.8, 0), Vector3(0.75, 0.08, 0.75), ASH)
|
||||
_box(st, Vector3(-0.55, 0.86, 0.05), Vector3(0.4, 0.06, 0.4), Color(0.9, 0.35, 0.1))
|
||||
P._cylinder(st, Vector3(0.55, 0.0, 0), Vector3(0.55, 0.55, 0), 0.24, 0.22, 7, P.BARK, r, -1.0, PLANK)
|
||||
_box(st, Vector3(0.55, 0.62, 0), Vector3(0.5, 0.14, 0.2), IRON)
|
||||
_box(st, Vector3(0.55, 0.72, 0), Vector3(0.62, 0.06, 0.24), IRON_BRIGHT)
|
||||
P._cylinder(st, Vector3(0.84, 0.72, 0), Vector3(1.0, 0.71, 0), 0.07, 0.01, 5, IRON_BRIGHT, r)
|
||||
_box(st, Vector3(0.45, 0.8, 0.0), Vector3(0.24, 0.04, 0.05), HANDLE, Basis(Vector3.UP, 0.6))
|
||||
return P._commit(st)
|
||||
|
||||
static func _pelt(col: Color) -> ArrayMesh:
|
||||
var st := P._begin()
|
||||
var r := _rng(149)
|
||||
|
||||
Reference in New Issue
Block a user