146 lines
4.0 KiB
GDScript3
146 lines
4.0 KiB
GDScript3
extends Node
|
|
|
|
|
|
# Declare member variables here. Examples:
|
|
# var a = 2
|
|
# var b = "text"
|
|
|
|
|
|
# Called when the node enters the scene tree for the first time.
|
|
var root
|
|
var skel
|
|
var hair_skel
|
|
|
|
var garments_female_lingerie = ["female-panties1", "female-bra1"]
|
|
var garments_head_female = []
|
|
var garments_male_lingerie = ["male-panties1"]
|
|
var garments_head_male = []
|
|
var garments_female_main = ["female-shirt_skirt1", "female-skirt1"]
|
|
var garments_male_main = ["male-pants1", "male-shirt1", "male-shoes1"]
|
|
var basedir = "res://scenes/clothes/"
|
|
var material_female = preload("res://scenes/clothes/nun-clothes.material")
|
|
var material_male = preload("res://scenes/clothes/clothes-male.material")
|
|
#var tween: Tween
|
|
#enum {
|
|
# IDLE,
|
|
# WALKING,
|
|
# SLEEPING
|
|
#}
|
|
#var state = SLEEPING
|
|
func _ready():
|
|
name = "student_ai"
|
|
root = get_parent()
|
|
root.add_to_group("students")
|
|
root.add_to_group("student")
|
|
# tween = Tween.new()
|
|
# tween.playback_process_mode = Tween.TWEEN_PROCESS_PHYSICS
|
|
# tween.process_priority = 30
|
|
# add_child(tween)
|
|
# call_deferred("setup_markers")
|
|
var character_data = root.get_meta("character_data")
|
|
if character_data.sex == "female":
|
|
var g = garments_female_lingerie
|
|
var h = []
|
|
g += garments_female_main
|
|
h += garments_head_female
|
|
characters.call_deferred("setup_garments", root, g, h, material_female)
|
|
else:
|
|
var g = garments_male_lingerie
|
|
var h = []
|
|
g += garments_male_main
|
|
h += garments_head_male
|
|
characters.call_deferred("setup_garments", root, g, h, material_male)
|
|
|
|
#func setup_markers():
|
|
# var cmdq = []
|
|
# if root.has_meta("cmdqueue"):
|
|
# cmdq = root.get_meta("cmdqueue")
|
|
# if root.has_meta("saved_anim_state"):
|
|
# var st = root.get_meta("saved_anim_state")
|
|
# cmdq.push_back(["anim_state", st])
|
|
# root.set_meta("cmdqueue", cmdq)
|
|
# root.remove_meta("saved_anim_state")
|
|
# if st == "sleeping":
|
|
# state = SLEEPING
|
|
# else:
|
|
# state = IDLE
|
|
# elif scenario.period > scenario.EARLY_MORNING:
|
|
# cmdq.push_back(["anim_state", "locomotion"])
|
|
# root.set_meta("cmdqueue", cmdq)
|
|
# else:
|
|
# cmdq.push_back(["anim_state", "sleeping"])
|
|
# root.set_meta("cmdqueue", cmdq)
|
|
# state = SLEEPING
|
|
#var state_changed = 0.0
|
|
#func set_basis_dir(dir: Vector3):
|
|
# var xdir: Vector3 = dir
|
|
# xdir.y = 0
|
|
# var d0 = xdir.cross(Vector3.UP)
|
|
# var d1 = Vector3.UP
|
|
# var d2 = xdir
|
|
# var basis = Basis(d0, d1, -d2)
|
|
# var orientation = root.get_meta("orientation")
|
|
# orientation.basis = basis
|
|
# root.set_meta("orientation", orientation)
|
|
#func _process(delta):
|
|
# if !skel:
|
|
# skel = root.get_meta("skeleton")
|
|
# var space: PhysicsDirectSpaceState = root.get_world().get_direct_space_state()
|
|
# var p = get_viewport().get_camera().get_meta("player").global_transform
|
|
# var d = p.origin.distance_to(root.global_transform.origin)
|
|
# var px = p.origin
|
|
# px.y = root.global_transform.origin.y
|
|
# var pdir = px - root.global_transform.origin
|
|
# var fdir = -root.global_transform.basis[2]
|
|
# fdir.y = 0
|
|
# pdir.y = 0
|
|
# pdir = pdir.normalized()
|
|
# fdir = fdir.normalized()
|
|
# var cmdq = []
|
|
# if root.has_meta("cmdqueue"):
|
|
# cmdq = root.get_meta("cmdqueue")
|
|
# state_changed -= delta
|
|
# state_changed = clamp(state_changed, 0.0, 10.0)
|
|
# match state:
|
|
# SLEEPING:
|
|
# if scenario.period > scenario.EARLY_MORNING:
|
|
# state = WALKING
|
|
# cmdq.push_back(["anim_state", "locomotion"])
|
|
# else:
|
|
# cmdq.push_back(["anim_state", "sleeping"])
|
|
# root.set_meta("cmdqueue", cmdq)
|
|
# WALKING:
|
|
# pass
|
|
# IDLE:
|
|
# pass
|
|
## cmdq.push_back(["anim_state", "locomotion"])
|
|
## root.set_meta("cmdqueue", cmdq)
|
|
#func switch_state(root, st):
|
|
# print("seitch state: ", state, " ", st)
|
|
# var cmdq = []
|
|
# if state == st:
|
|
# return
|
|
# if root.has_meta("cmdqueue"):
|
|
# cmdq = root.get_meta("cmdqueue")
|
|
# match state:
|
|
# IDLE:
|
|
# pass
|
|
# SLEEPING:
|
|
# pass
|
|
# WALKING:
|
|
# pass
|
|
# match st:
|
|
# IDLE:
|
|
# cmdq.push_back(["anim_state", "locomotion"])
|
|
# SLEEPING:
|
|
# cmdq.push_back(["anim_state", "sleeping"])
|
|
# WALKING:
|
|
# cmdq.push_back(["anim_state", "locomotion"])
|
|
# root.set_meta("cmdqueue", cmdq)
|
|
# state = st
|
|
#func command(cmd):
|
|
# print(name, " command: ", cmd)
|
|
# match cmd[0]:
|
|
# "wakeup":
|
|
# switch_state(get_parent(), WALKING)
|