This commit is contained in:
2026-06-02 22:29:48 +01:00
commit 5e0f4c3914
549 changed files with 10639 additions and 0 deletions

68
koboldspawner.gd Normal file
View File

@@ -0,0 +1,68 @@
extends Spatial
#export var textureset = ["9","13","16","21","22","23","28"]
var kobcount = 200
var kobolds = []
var skip = 1 # physics skip
var lskip = 4 # lighting skip
var sc = 0
var lsc = 0
var lights
var texsize = 128
func _ready():
#for i in len(textureset):
# textureset[i] = load("res://textures/kobolds/%s.png" % textureset[i])
var ktex = load("res://textures/kobolds/atlas.png")
for i in kobcount:
var kobold = Sprite3D.new()
kobold.texture = ktex
kobold.pixel_size = 0.768/texsize #0.0015
kobold.billboard = 2
kobold.region_enabled = true
var texid = randi()%7
kobold.region_rect = Rect2(texid%4*texsize,floor(texid/4)*texsize,texsize,texsize)
add_child(kobold)
kobolds.append([Vector3(rand_range(-2,2),2,rand_range(-3,3)),Vector3.ZERO,kobold])
lights = get_parent().lights
const bouncemin = 1
const bouncemax = 2
const hdeviation = 0.5
var bounceboost = 2
# real physics simulation was too expensive, so approximation will have to do :3
var velocity = Vector3.ZERO
func _physics_process(delta):
for i in range(sc,kobcount,skip):
var kobold = kobolds[i]
kobold[1].y -= 9.81*delta*skip
if kobold[0].y < 0:
kobold[1].y = 0
kobold[0].y = 0
kobold[1] += Vector3(rand_range(-hdeviation,hdeviation),rand_range(bouncemin,bouncemax),rand_range(-hdeviation,hdeviation))*bounceboost
if kobold[0].x < -2:
kobold[0].x = -2
kobold[1].x = 0
if kobold[0].x > 2:
kobold[0].x = 2
kobold[1].x = 0
if kobold[0].z < -3:
kobold[0].z = -3
kobold[1].z = 0
if kobold[0].z > 3:
kobold[0].z = 3
kobold[1].z = 0
kobold[0] += kobold[1] * delta*skip
kobold[2].position = kobold[0]+Vector3(0,0.25,0)
for i in range(lsc,kobcount,lskip):
var kobold = kobolds[i]
var lum = Vector3.ZERO
for light in lights:
lum += light[1]/max(light[0].distance_squared_to(to_global(kobold[0]))/2,1)
kobold[2].modulate = Color(lum.x,lum.y,lum.z)
sc = (sc + 1) % skip
lsc = (lsc + 1) % lskip