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)