This commit is contained in:
Segey Lapin
2021-12-24 23:56:10 +03:00
parent d401cf1090
commit f62e7fa720
113 changed files with 198252 additions and 412103 deletions

View File

@@ -1,16 +1,5 @@
extends Characters_
# Declare member variables here. Examples:
# var a = 2
# var b = "text"
# Called when the node enters the scene tree for the first time.
# Called every frame. 'delta' is the elapsed time since the previous frame.
#func _process(delta):
onready var female = preload("res://characters/vroid1-female.tscn")
onready var male = preload("res://characters/vroid1-man.tscn")
onready var face_ctrl = preload("res://scenes/face/head_comtrol.tscn")
@@ -20,10 +9,12 @@ onready var modules = {
"marker": preload("res://scripts/modules/npc_marker.gd"),
"sacrifice": preload("res://scripts/modules/npc_sacrifice.gd"),
"nun": preload("res://scripts/modules/npc_nun.gd"),
"mystress": preload("res://scripts/modules/npc_mystress.gd"),
"player": preload("res://scripts/modules/player_controls.gd"),
"player_clothes": preload("res://scripts/modules/player_clothes.gd"),
"hurtboxes": preload("res://scripts/modules/character_hurtboxes.gd"),
"student": preload("res://scripts/modules/npc_student.gd")
"student": preload("res://scripts/modules/npc_student.gd"),
"bandit": preload("res://scripts/modules/npc_bandit.gd")
}
var face_data_path = "res://scenes/face/"
@@ -47,6 +38,21 @@ var roommates = {}
#var _crowd: DetourCrowdManager
func _ready():
var capsule_male = CapsuleShape.new()
capsule_male.radius = 0.3
capsule_male.height = 1.2
capsule_male.margin = 0.05
var capsule_female = CapsuleShape.new()
capsule_female.radius = 0.2
capsule_female.height = 1.1
capsule_female.margin = 0.05
CharacterSystemWorld.add_character_scene(female, {}, "female")
CharacterSystemWorld.add_character_scene(male, {}, "male")
for k in modules.keys():
CharacterSystemWorld.add_module(k, modules[k])
CharacterSystemWorld.set_face_ctrl_scene(face_ctrl)
CharacterSystemWorld.add_character_shape(capsule_female, Transform(Basis().rotated(Vector3(1, 0, 0), -PI/2.0), Vector3(0, 0.751, 0)), "female")
CharacterSystemWorld.add_character_shape(capsule_male, Transform(Basis().rotated(Vector3(1, 0, 0), -PI/2.0), Vector3(0, 0.899, 0)), "male")
set_root_motion_mod(Transform())
var fd = File.new()
fd.open("res://data/names.json", File.READ)
@@ -62,10 +68,12 @@ func _ready():
"female":
female_faces.push_back(fp)
mesh_female_faces[fp] = load(fp)
CharacterSystemWorld.add_face_scene(mesh_female_faces[fp], "female")
"male":
male_faces.push_back(fp)
mesh_male_faces[fp] = load(fp)
CharacterSystemWorld.add_face_scene(mesh_male_faces[fp], "male")
for id in range(10000):
var fp_m = face_data_path + "male-face" + str(id) + ".tscn"
var fp_f = face_data_path + "female-face" + str(id) + ".tscn"
@@ -75,18 +83,24 @@ func _ready():
if data_fd.file_exists(fp_m):
male_faces.push_back(fp_m)
mesh_male_faces[fp_m] = load(fp_m)
CharacterSystemWorld.add_face_scene(mesh_male_faces[fp_m], "male")
if data_fd.file_exists(fp_f):
female_faces.push_back(fp_f)
mesh_female_faces[fp_f] = load(fp_f)
CharacterSystemWorld.add_face_scene(mesh_female_faces[fp_f], "female")
if data_fd.file_exists(hp_m):
male_hairs.push_back(hp_m)
mesh_male_hairs[hp_m] = load(hp_m)
CharacterSystemWorld.add_hair_scene(mesh_male_hairs[hp_m], "male")
if data_fd.file_exists(hp_f):
female_hairs.push_back(hp_f)
mesh_female_hairs[hp_f] = load(hp_f)
CharacterSystemWorld.add_hair_scene(mesh_female_hairs[hp_f], "female")
if data_fd.file_exists(mat):
hair_materials.push_back(mat)
data_hair_materials[mat] = load(mat)
CharacterSystemWorld.add_hair_material(data_hair_materials[mat], "male")
CharacterSystemWorld.add_hair_material(data_hair_materials[mat], "female")
assert(male_faces.size() > 0)
assert(female_faces.size() > 0)
assert(male_hairs.size() > 0)
@@ -146,6 +160,7 @@ func get_hair_node(sc: Node) -> Node:
assert(0)
return null
func compose_kinematic_character(g, enable_modules = [], face = -1, hair = -1, hair_mat = -1):
return CharacterSystemWorld.create_character(g, enable_modules, face, hair, hair_mat)
var body = KinematicBody.new()
var cshape = CollisionShape.new()
body.add_child(cshape)
@@ -245,7 +260,8 @@ func replace_character(obj, g, enable_modules = [], face = -1, hair = -1, hair_m
var xform = obj.global_transform
var p = obj.get_parent()
obj.queue_free()
var body = compose_kinematic_character(g, enable_modules, face, hair, hair_mat)
# var body = compose_kinematic_character(g, enable_modules, face, hair, hair_mat)
var body = CharacterSystemWorld.create_character(g, enable_modules, face, hair, hair_mat)
p.add_child(body)
body.global_transform = xform
var orientation = Transform()
@@ -253,15 +269,15 @@ func replace_character(obj, g, enable_modules = [], face = -1, hair = -1, hair_m
body.set_meta("orientation", orientation)
return body
const basedir = "res://scenes/clothes/"
func prepare_extra_skeleton(obj, g):
var queue = [obj]
while queue.size() > 0:
var item = queue.pop_front()
if item is Skeleton:
item.add_to_group(g)
break
for g in item.get_children():
queue.push_back(g)
#func prepare_extra_skeleton(obj, g):
# var queue = [obj]
# while queue.size() > 0:
# var item = queue.pop_front()
# if item is Skeleton:
# item.add_to_group(g)
# break
# for g in item.get_children():
# queue.push_back(g)
func set_hair_material(hair, mat: Material):
assert(mat)
var queue = [hair]
@@ -274,7 +290,9 @@ func set_hair_material(hair, mat: Material):
queue.push_back(g)
func setup_garments(obj, garments, garments_head, material):
var skel = obj.get_meta("skeleton")
assert(skel)
var hair_skel = obj.get_meta("hair_skeleton")
assert(hair_skel)
if obj.has_meta("garments"):
print("Can remove garments")
@@ -611,7 +629,5 @@ func _physics_process(delta):
if !player:
return
if player.has_meta("animation_tree") && !player.has_meta("vehicle"):
character_physics(player)
# for e in get_tree().get_nodes_in_group("character") + [player]:
# if e && e.has_meta("animation_tree"):
# character_physics(e)
if streaming.can_spawn:
character_physics(player)