Large update with mostly rewritten character subsystem
This commit is contained in:
Vendored
+8
-1
@@ -23,7 +23,8 @@ node('docker && ubuntu-16.04') {
|
|||||||
if (params.DOWNLOAD_TEMPLATES) {
|
if (params.DOWNLOAD_TEMPLATES) {
|
||||||
sh '''#!/bin/sh
|
sh '''#!/bin/sh
|
||||||
rm -f godot-templates.tar.gz
|
rm -f godot-templates.tar.gz
|
||||||
wget -c https://github.com/slapin/godot-templates-build/releases/download/2019_31_0802_1959/godot-templates.tar.gz
|
curl -s https://api.github.com/repos/slapin/godot-templates-build/releases/latest|grep browser_download_url|cut -d : -f2-|cut -d '"' -f 2|wget -i -
|
||||||
|
# wget -c https://github.com/slapin/godot-templates-build/releases/download/2019_31_0802_1959/godot-templates.tar.gz
|
||||||
'''
|
'''
|
||||||
}
|
}
|
||||||
sh '''#!/bin/sh
|
sh '''#!/bin/sh
|
||||||
@@ -97,10 +98,16 @@ node('docker && ubuntu-16.04') {
|
|||||||
ls -l
|
ls -l
|
||||||
'''
|
'''
|
||||||
}
|
}
|
||||||
|
stage("artifacts") {
|
||||||
|
archiveArtifacts artifacts: "proto2-html5.zip", onlyIfSuccessful: true
|
||||||
|
archiveArtifacts artifacts: "BallKickers-windows.zip", onlyIfSuccessful: true
|
||||||
|
archiveArtifacts artifacts: "BallKickers-linux.zip", onlyIfSuccessful: true
|
||||||
|
}
|
||||||
stage("itch.io") {
|
stage("itch.io") {
|
||||||
withCredentials([string(credentialsId: 'itchio_token', variable: 'itchio_token')]) {
|
withCredentials([string(credentialsId: 'itchio_token', variable: 'itchio_token')]) {
|
||||||
withEnv(["BUTLER_API_KEY=$itchio_token"]) {
|
withEnv(["BUTLER_API_KEY=$itchio_token"]) {
|
||||||
sh '''#!/bin/sh
|
sh '''#!/bin/sh
|
||||||
|
exit 0
|
||||||
export PATH=$PATH:$(pwd)/butler
|
export PATH=$PATH:$(pwd)/butler
|
||||||
butler push proto2-html5.zip slapin/ball-kickers:html
|
butler push proto2-html5.zip slapin/ball-kickers:html
|
||||||
H=$?
|
H=$?
|
||||||
|
|||||||
@@ -27,14 +27,14 @@ func add_player(team: int, pl: Dictionary):
|
|||||||
_teams[team] = [pl]
|
_teams[team] = [pl]
|
||||||
else:
|
else:
|
||||||
_teams[team].push_back(pl)
|
_teams[team].push_back(pl)
|
||||||
assert pl != null
|
assert(pl != null)
|
||||||
ch2team[pl.scene] = team
|
ch2team[pl.scene] = team
|
||||||
func add_cheer(team: int, ch: Dictionary):
|
func add_cheer(team: int, ch: Dictionary):
|
||||||
if !_cheers.has(team):
|
if !_cheers.has(team):
|
||||||
_cheers[team] = [ch]
|
_cheers[team] = [ch]
|
||||||
else:
|
else:
|
||||||
_cheers[team].push_back(ch)
|
_cheers[team].push_back(ch)
|
||||||
assert ch != null
|
assert(ch != null)
|
||||||
ch2team[ch.scene] = team
|
ch2team[ch.scene] = team
|
||||||
func add_cheer_game_location(team: int, loc: Vector2):
|
func add_cheer_game_location(team: int, loc: Vector2):
|
||||||
if !_cheer_locations.has(team):
|
if !_cheer_locations.has(team):
|
||||||
@@ -130,7 +130,7 @@ func catch_ball(pl):
|
|||||||
_ball_carrier = pl
|
_ball_carrier = pl
|
||||||
var max_imp = 500.0
|
var max_imp = 500.0
|
||||||
func drop_ball(pl):
|
func drop_ball(pl):
|
||||||
assert _main != null
|
assert(_main != null)
|
||||||
_ball_instance.kinematic = false
|
_ball_instance.kinematic = false
|
||||||
_ball_instance.new_parent = _main
|
_ball_instance.new_parent = _main
|
||||||
_ball_instance.update = true
|
_ball_instance.update = true
|
||||||
@@ -226,7 +226,7 @@ func _process(delta):
|
|||||||
STATE_RUNNING:
|
STATE_RUNNING:
|
||||||
for c in _teams.keys():
|
for c in _teams.keys():
|
||||||
for pl in _teams[c]:
|
for pl in _teams[c]:
|
||||||
assert pl.scene != null
|
assert(pl.scene != null)
|
||||||
if !_ball_carrier || (pl != _ball_carrier && _ball_team != c):
|
if !_ball_carrier || (pl != _ball_carrier && _ball_team != c):
|
||||||
var velocity = striker(pl, delta)
|
var velocity = striker(pl, delta)
|
||||||
velocity = pl.scene.velocity.linear_interpolate(velocity, 0.3 * delta)
|
velocity = pl.scene.velocity.linear_interpolate(velocity, 0.3 * delta)
|
||||||
|
|||||||
@@ -35,14 +35,14 @@ func add_player(team: int, pl: Dictionary):
|
|||||||
_teams[team] = [pl]
|
_teams[team] = [pl]
|
||||||
else:
|
else:
|
||||||
_teams[team].push_back(pl)
|
_teams[team].push_back(pl)
|
||||||
assert pl != null
|
assert(pl != null)
|
||||||
ch2team[pl.scene] = team
|
ch2team[pl.scene] = team
|
||||||
func add_cheer(team: int, ch: Dictionary):
|
func add_cheer(team: int, ch: Dictionary):
|
||||||
if !_cheers.has(team):
|
if !_cheers.has(team):
|
||||||
_cheers[team] = [ch]
|
_cheers[team] = [ch]
|
||||||
else:
|
else:
|
||||||
_cheers[team].push_back(ch)
|
_cheers[team].push_back(ch)
|
||||||
assert ch != null
|
assert(ch != null)
|
||||||
ch2team[ch.scene] = team
|
ch2team[ch.scene] = team
|
||||||
func add_cheer_game_location(team: int, loc: Vector3):
|
func add_cheer_game_location(team: int, loc: Vector3):
|
||||||
if !_cheer_locations.has(team):
|
if !_cheer_locations.has(team):
|
||||||
@@ -95,18 +95,18 @@ func start_game():
|
|||||||
_state = STATE_START
|
_state = STATE_START
|
||||||
for t in _teams.keys():
|
for t in _teams.keys():
|
||||||
for ch in _teams[t]:
|
for ch in _teams[t]:
|
||||||
assert ch != null
|
assert(ch != null)
|
||||||
print(ch)
|
print(ch)
|
||||||
assert ch.scene != null
|
assert(ch.scene != null)
|
||||||
print("start: ", _team_start[t])
|
print("start: ", _team_start[t])
|
||||||
ch.scene.walkto(_team_start[t] + Vector3(randf() * 2.0 - 1.0, 0.0, randf() * 2.0 - 1.0), 1.0 + ch.speed + randf() * ch.speed * 0.5)
|
ch.scene.walkto(_team_start[t] + Vector3(randf() * 2.0 - 1.0, 0.0, randf() * 2.0 - 1.0), 1.0 + ch.speed + randf() * ch.speed * 0.5)
|
||||||
start_timeout = 10.0
|
start_timeout = 10.0
|
||||||
var loc = 0
|
var loc = 0
|
||||||
for t in _cheers.keys():
|
for t in _cheers.keys():
|
||||||
for ch in _cheers[t]:
|
for ch in _cheers[t]:
|
||||||
assert ch != null
|
assert(ch != null)
|
||||||
print(ch)
|
print(ch)
|
||||||
assert ch.scene != null
|
assert(ch.scene != null)
|
||||||
ch.scene.walkto(_cheer_locations[t][loc % _cheer_locations[t].size()], 1.0 + ch.speed + randf() * ch.speed * 0.5)
|
ch.scene.walkto(_cheer_locations[t][loc % _cheer_locations[t].size()], 1.0 + ch.speed + randf() * ch.speed * 0.5)
|
||||||
loc += 1
|
loc += 1
|
||||||
for t in _teams.keys():
|
for t in _teams.keys():
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 747 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"outpath": "characters/hair",
|
||||||
|
"generate_external_material": true
|
||||||
|
}
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 1.9 MiB |
Binary file not shown.
|
After Width: | Height: | Size: 2.0 MiB |
Binary file not shown.
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"outpath": "characters/hair",
|
||||||
|
"generate_external_material": true
|
||||||
|
}
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 206 KiB |
+193
-12
@@ -1,17 +1,198 @@
|
|||||||
extends Node
|
extends Node
|
||||||
|
|
||||||
# Declare member variables here. Examples:
|
#var accessory_data = {}
|
||||||
# var a = 2
|
|
||||||
# var b = "text"
|
#var slots = ["body", "top", "panties", "shirt", "pants"]
|
||||||
|
#var slots_female = ["body", "top", "panties"]
|
||||||
|
#var slots_male = ["body"]
|
||||||
|
#var helpers = {
|
||||||
|
# "body": "base",
|
||||||
|
# "top": "base",
|
||||||
|
# "panties": "base",
|
||||||
|
# "shirt": "tights",
|
||||||
|
# "pants": "tights"
|
||||||
|
# }
|
||||||
|
|
||||||
|
#var data_male = {}
|
||||||
|
#var data_female = {}
|
||||||
|
|
||||||
|
#var characters = [load("res://characters/male_2018.tscn"), load("res://characters/female_2018.tscn")]
|
||||||
|
#var character_data = []
|
||||||
|
|
||||||
|
#func load_accessory_data():
|
||||||
|
# var fd = File.new()
|
||||||
|
# fd.open("res://characters/accessory.json", File.READ)
|
||||||
|
# var confs = fd.get_as_text()
|
||||||
|
# var json = JSON.parse(confs)
|
||||||
|
# accessory_data = json.result
|
||||||
|
|
||||||
# Called when the node enters the scene tree for the first time.
|
|
||||||
var characters = [load("res://characters/male_2018.tscn"), load("res://characters/female_2018.tscn")]
|
|
||||||
func _ready():
|
func _ready():
|
||||||
pass # Replace with function body.
|
# var cha_male: CharacterModifierSet
|
||||||
|
# var cha_female: CharacterModifierSet
|
||||||
|
# var base_male = characters[0].instance()
|
||||||
|
# var base_female = characters[1].instance()
|
||||||
|
# var fd = File.new()
|
||||||
|
## fd.open("characters/blendmaps.bin", File.READ);
|
||||||
|
# cha_male = CharacterModifierSet.new()
|
||||||
|
# character_data.push_back(cha_male)
|
||||||
|
# cha_female = CharacterModifierSet.new()
|
||||||
|
# character_data.push_back(cha_female)
|
||||||
|
# cha_female.set_base_name("body")
|
||||||
|
# cha_male.set_base_name("body")
|
||||||
|
# for e in slots:
|
||||||
|
# print(e)
|
||||||
|
# cha_female.add_slot(e, helpers[e], 1)
|
||||||
|
# cha_male.add_slot(e, helpers[e], 1)
|
||||||
|
# cha_female.add_mesh_scene(characters[1])
|
||||||
|
# cha_male.add_mesh_scene(characters[0])
|
||||||
|
# cha_female.process()
|
||||||
|
# cha_male.process()
|
||||||
|
|
||||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
### cha_male.add_bone_modifier("head_scale", base_male, "head", Transform().scaled(Vector3(1.3, 1.3, 1.3)))
|
||||||
#func _process(delta):
|
### cha_female.add_bone_modifier("head_scale", base_female, "head", Transform().scaled(Vector3(1.3, 1.3, 1.3)))
|
||||||
# pass
|
### cha_male.add_bone_modifier("head_up", base_male, "head", Transform().translated(Vector3(0.0, 0.1, 0.0)))
|
||||||
#func _physics_process(delta):
|
### cha_female.add_bone_modifier("head_up", base_female, "head", Transform().translated(Vector3(0.0, 0.1, 0.0)))
|
||||||
# for obj in get_tree().get_nodes_in_group("characters"):
|
### # cha_male.add_bone_modifier("shoulder_l_rot", base_male, "shoulder01_L", Transform().rotated(Vector3(1, 0, 0), 95 * PI / 360.0))
|
||||||
# pass
|
### # cha_female.add_bone_modifier("shoulder_l_rot", base_female, "shoulder01_L", Transform().rotated(Vector3(1, 0, 0), 95 * PI / 360.0))
|
||||||
|
### cha_male.add_bone_modifier("height", base_male, "pelvis", Transform().scaled(Vector3(1.2, 1.2, 1.2)))
|
||||||
|
### cha_female.add_bone_modifier("height", base_female, "pelvis", Transform().scaled(Vector3(1.2, 1.2, 1.2)))
|
||||||
|
### # cha_male.add_bone_modifier_pair("shoulder", base_male,
|
||||||
|
### # ["shoulder01_L", Transform().rotated(Vector3(1, 0, 0), 95 * PI / 360.0)],
|
||||||
|
### # ["shoulder01_R", Transform().rotated(Vector3(1, 0, 0), 95 * PI / 360.0)])
|
||||||
|
### # cha_female.add_bone_modifier_pair("shoulder", base_female,
|
||||||
|
### # ["shoulder01_L", Transform().rotated(Vector3(1, 0, 0), 95 * PI / 360.0)],
|
||||||
|
### # ["shoulder01_R", Transform().rotated(Vector3(1, 0, 0), 95 * PI / 360.0)])
|
||||||
|
### cha_male.add_bone_modifier_group("mouth_up", base_male,
|
||||||
|
### PoolStringArray(["special01", "special04", "levator04_L", "levator04_R"]),
|
||||||
|
### [Transform().translated(Vector3(0.0, -0.004, 0.0)),
|
||||||
|
### Transform().translated(Vector3(0.0, 0.008, 0.0)),
|
||||||
|
### Transform().translated(Vector3(0.016, -0.019, 0.0)),
|
||||||
|
### Transform().translated(Vector3(-0.016, -0.019, 0.0))
|
||||||
|
### ])
|
||||||
|
### cha_female.add_bone_modifier_group("mouth_up", base_female,
|
||||||
|
### PoolStringArray(["special01", "special04", "levator04_L", "levator04_R"]),
|
||||||
|
### [Transform().translated(Vector3(0.0, -0.004, 0.0)),
|
||||||
|
### Transform().translated(Vector3(0.0, 0.008, 0.0)),
|
||||||
|
### Transform().translated(Vector3(0.016, -0.019, 0.0)),
|
||||||
|
### Transform().translated(Vector3(-0.016, -0.019, 0.0))
|
||||||
|
### ])
|
||||||
|
### cha_male.add_bone_modifier_group("eyes_up", base_male,
|
||||||
|
### PoolStringArray(["orbicularis03_L", "orbicularis04_L", "eye_L", "eye_tracker.L",
|
||||||
|
### "orbicularis03_R", "orbicularis04_R", "eye_R", "eye_tracker.R"]),
|
||||||
|
### [Transform().translated(Vector3(0.0, 0.002, 0.004)),
|
||||||
|
### Transform().translated(Vector3(0.0, 0.002, 0.004)),
|
||||||
|
### Transform().translated(Vector3(0.0, 0.002, 0.004)),
|
||||||
|
### Transform().translated(Vector3(0.0, 0.002, 0.004)),
|
||||||
|
### Transform().translated(Vector3(0.0, 0.002, 0.004)),
|
||||||
|
### Transform().translated(Vector3(0.0, 0.002, 0.004)),
|
||||||
|
### Transform().translated(Vector3(0.0, 0.002, 0.004)),
|
||||||
|
### Transform().translated(Vector3(0.0, 0.002, 0.004))])
|
||||||
|
### cha_female.add_bone_modifier_group("eyes_up", base_female,
|
||||||
|
### PoolStringArray(["orbicularis03_L", "orbicularis04_L", "eye_L",
|
||||||
|
### "orbicularis03_R", "orbicularis04_R", "eye_R"]),
|
||||||
|
### [Transform().translated(Vector3(0.0, 0.002, 0.004)),
|
||||||
|
### Transform().translated(Vector3(0.0, 0.002, 0.004)),
|
||||||
|
### Transform().translated(Vector3(0.0, 0.002, 0.004)),
|
||||||
|
### Transform().translated(Vector3(0.0, 0.002, 0.004)),
|
||||||
|
### Transform().translated(Vector3(0.0, 0.002, 0.004)),
|
||||||
|
### Transform().translated(Vector3(0.0, 0.002, 0.004))])
|
||||||
|
### cha_male.add_bone_modifier_group("eyebrows_up", base_male,
|
||||||
|
### PoolStringArray(["temporalis01_L", "temporalis01_R"]),
|
||||||
|
### [Transform().translated(Vector3(0.0, 0.015, 0.0)),
|
||||||
|
### Transform().translated(Vector3(0.0, 0.015, 0.0))])
|
||||||
|
### cha_female.add_bone_modifier_group("eyebrows_up", base_female,
|
||||||
|
### PoolStringArray(["temporalis01_L", "temporalis01_R"]),
|
||||||
|
### [Transform().translated(Vector3(0.0, 0.015, 0.0)),
|
||||||
|
### Transform().translated(Vector3(0.0, 0.015, 0.0))])
|
||||||
|
### cha_male.add_bone_modifier_group("eyebrows_rotate1", base_male,
|
||||||
|
### PoolStringArray(["oculi02_L", "oculi02_R"]),
|
||||||
|
### [Transform().rotated(Vector3(0, 1, 0), -PI/14.0),
|
||||||
|
### Transform().rotated(Vector3(0, 1, 0), PI/14.0)])
|
||||||
|
### cha_female.add_bone_modifier_group("eyebrows_rotate1", base_female,
|
||||||
|
### PoolStringArray(["oculi02_L", "oculi02_R"]),
|
||||||
|
### [Transform().rotated(Vector3(0, 1, 0), -PI/14.0),
|
||||||
|
### Transform().rotated(Vector3(0, 1, 0), PI/14.0)])
|
||||||
|
### cha_male.add_bone_modifier_group("eyebrows_rotate2", base_male,
|
||||||
|
### PoolStringArray(["oculi01_L", "oculi01_R"]),
|
||||||
|
### [Transform().rotated(Vector3(0, 1, 0), -PI/4.0),
|
||||||
|
### Transform().rotated(Vector3(0, 1, 0), PI/4.0)])
|
||||||
|
### cha_female.add_bone_modifier_group("eyebrows_rotate2", base_female,
|
||||||
|
### PoolStringArray(["oculi01_L", "oculi01_R"]),
|
||||||
|
### [Transform().rotated(Vector3(0, 1, 0), -PI/4.0),
|
||||||
|
### Transform().rotated(Vector3(0, 1, 0), PI/4.0)])
|
||||||
|
# base_male.queue_free()
|
||||||
|
# base_female.queue_free()
|
||||||
|
# load_accessory_data()
|
||||||
|
CharacterGenderList.config()
|
||||||
|
#var root_scene: Node
|
||||||
|
|
||||||
|
#func set_root_scene(sc: Node):
|
||||||
|
# root_scene = sc
|
||||||
|
|
||||||
|
var genders = ["male", "female"]
|
||||||
|
|
||||||
|
#func select_front_hair(ch: Node, value: float):
|
||||||
|
# var cha = ch.get_meta("mod")
|
||||||
|
# var id = ch.get_meta("data_id")
|
||||||
|
# var front_list = cha.get_accessory_list(genders[id], "hair", "front_hair")
|
||||||
|
# var num = int(front_list.size() * value)
|
||||||
|
# num = clamp(num, 0, front_list.size() - 1)
|
||||||
|
# character_data[id].set_accessory(ch, "front_hair", genders[id], "hair", front_list[num])
|
||||||
|
# ch.set_meta("front_hair", front_list[num])
|
||||||
|
#
|
||||||
|
#func select_back_hair(ch: Node, value: float):
|
||||||
|
# var cha = ch.get_meta("mod")
|
||||||
|
# var id = ch.get_meta("data_id")
|
||||||
|
# var back_list = cha.get_accessory_list(genders[id], "hair", "back_hair")
|
||||||
|
# var num = int(front_list.size() * value)
|
||||||
|
# num = clamp(num, 0, front_list.size() - 1)
|
||||||
|
# character_data[id].set_accessory(ch, "front_hair", genders[id], "hair", front_list[num])
|
||||||
|
# ch.set_meta("back_hair", "back_hair1")
|
||||||
|
|
||||||
|
func spawn_character(id, xform):
|
||||||
|
# var ch = character_data[id].spawn()
|
||||||
|
var ch = CharacterInstanceList.create(genders[id], xform, {})
|
||||||
|
# root_scene.add_child(ch)
|
||||||
|
# ch.transform = xform
|
||||||
|
ch.set_meta("data_id", id)
|
||||||
|
# character_data[id].hide_slot(ch, "hair")
|
||||||
|
# character_data[id].set_accessory(ch, "front_hair", genders[id], "hair", "front_hair1")
|
||||||
|
# character_data[id].set_accessory(ch, "back_hair", genders[id], "hair", "back_hair1")
|
||||||
|
# ch.set_meta("front_hair", "front_hair1")
|
||||||
|
# ch.set_meta("back_hair", "back_hair1")
|
||||||
|
return ch
|
||||||
|
|
||||||
|
func get_modifier_list(ch: Node):
|
||||||
|
# var cha = ch.get_meta("mod")
|
||||||
|
# return cha.get_modifier_list()
|
||||||
|
return CharacterInstanceList.get_base_modifier_list()
|
||||||
|
|
||||||
|
func get_modifier_value(ch: Node, mod_id):
|
||||||
|
# var cha = ch.get_meta("mod")
|
||||||
|
# var mesh_id = ch.get_meta("mesh_id")
|
||||||
|
# return cha.get_modifier_value(mesh_id, mod_id)
|
||||||
|
return CharacterInstanceList.get_mod_value(ch, mod_id)
|
||||||
|
|
||||||
|
func set_modifier_value(ch: Node, mod_id, value):
|
||||||
|
# var cha = ch.get_meta("mod")
|
||||||
|
# var mesh_id = ch.get_meta("mesh_id")
|
||||||
|
# cha.set_modifier_value(mesh_id, mod_id, value)
|
||||||
|
CharacterInstanceList.set_mod_value(ch, mod_id, value)
|
||||||
|
|
||||||
|
#func modify(ch: Node):
|
||||||
|
# var cha = ch.get_meta("mod")
|
||||||
|
# cha.modify(ch)
|
||||||
|
func update():
|
||||||
|
CharacterInstanceList.update()
|
||||||
|
|
||||||
|
func remove(ch):
|
||||||
|
# var cha = ch.get_meta("mod")
|
||||||
|
# cha.remove(ch)
|
||||||
|
CharacterInstanceList.remove(ch)
|
||||||
|
|
||||||
|
#func spawn_accessory(slot: MeshInstance, gender: String, atype: String, aname: String):
|
||||||
|
# var mesh: ArrayMesh = load(accessory_data[gender][atype][aname].path)
|
||||||
|
# for c in range(mesh.get_surface_count()):
|
||||||
|
# var mat: SpatialMaterial = load(accessory_data[gender][atype][aname].materials[c].path)
|
||||||
|
# mesh.surface_set_material(c, mat)
|
||||||
|
# slot.mesh = mesh
|
||||||
|
|||||||
@@ -101,10 +101,10 @@ func _unhandled_input(event):
|
|||||||
if event.button_mask & BUTTON_MASK_LEFT:
|
if event.button_mask & BUTTON_MASK_LEFT:
|
||||||
click2d = event.position
|
click2d = event.position
|
||||||
click2d_update = true
|
click2d_update = true
|
||||||
print("click!")
|
# print("click!")
|
||||||
func _physics_process(delta):
|
func _physics_process(delta):
|
||||||
if click2d_update:
|
if click2d_update:
|
||||||
print("click! 2")
|
# print("click! 2")
|
||||||
if camera:
|
if camera:
|
||||||
var world : = camera.get_world()
|
var world : = camera.get_world()
|
||||||
var space := world.direct_space_state
|
var space := world.direct_space_state
|
||||||
@@ -115,7 +115,7 @@ func _physics_process(delta):
|
|||||||
if result.has("position"):
|
if result.has("position"):
|
||||||
click3d = result.position
|
click3d = result.position
|
||||||
click3d_update = true
|
click3d_update = true
|
||||||
print("click! 3")
|
# print("click! 3")
|
||||||
emit_signal("user_click", click3d)
|
emit_signal("user_click", click3d)
|
||||||
click2d_update = false
|
click2d_update = false
|
||||||
|
|
||||||
|
|||||||
@@ -511,7 +511,7 @@ func convert_vertices():
|
|||||||
for e in range(vertices.size()):
|
for e in range(vertices.size()):
|
||||||
vertices[e]._neighbors = []
|
vertices[e]._neighbors = []
|
||||||
for h in vertices[e].neighbors:
|
for h in vertices[e].neighbors:
|
||||||
assert h
|
assert(h)
|
||||||
# print(pos2vertex[h.pos])
|
# print(pos2vertex[h.pos])
|
||||||
vertices[e]._neighbors.push_back(pos2vertex[h.pos]._index)
|
vertices[e]._neighbors.push_back(pos2vertex[h.pos]._index)
|
||||||
func has_neighbor(v, n):
|
func has_neighbor(v, n):
|
||||||
@@ -581,7 +581,7 @@ func remove_neighbor(v, n):
|
|||||||
# var triangle = [e1, e2, e3]
|
# var triangle = [e1, e2, e3]
|
||||||
# triangles.push_back(triangle)
|
# triangles.push_back(triangle)
|
||||||
func sort_edges(edge_data: PoolIntArray) -> PoolIntArray:
|
func sort_edges(edge_data: PoolIntArray) -> PoolIntArray:
|
||||||
assert edge_data.size() > 0
|
assert(edge_data.size() > 0)
|
||||||
var inb = Array(edge_data)
|
var inb = Array(edge_data)
|
||||||
var cur = -1
|
var cur = -1
|
||||||
var cur_p = -1
|
var cur_p = -1
|
||||||
@@ -613,7 +613,7 @@ func sort_edges(edge_data: PoolIntArray) -> PoolIntArray:
|
|||||||
# for p in edge_data:
|
# for p in edge_data:
|
||||||
# print(p, ": ", edges[p].p1, " - ", edges[p].p2)
|
# print(p, ": ", edges[p].p1, " - ", edges[p].p2)
|
||||||
# print(ret.size(), " ", edge_data.size(), " ", edge_data, " -> ", ret)
|
# print(ret.size(), " ", edge_data.size(), " ", edge_data, " -> ", ret)
|
||||||
assert ret.size() > 0 && ret.size() == edge_data.size()
|
assert(ret.size() > 0 && ret.size() == edge_data.size())
|
||||||
return ret
|
return ret
|
||||||
func edges2points(edge_data):
|
func edges2points(edge_data):
|
||||||
var ret = {}
|
var ret = {}
|
||||||
@@ -631,7 +631,7 @@ func edges2points(edge_data):
|
|||||||
"road": edges[e].road
|
"road": edges[e].road
|
||||||
})
|
})
|
||||||
idx += 1
|
idx += 1
|
||||||
assert ret.points.size() > 0 && ret.points.size() == edge_data.size()
|
assert(ret.points.size() > 0 && ret.points.size() == edge_data.size())
|
||||||
return ret
|
return ret
|
||||||
#func build_polygons():
|
#func build_polygons():
|
||||||
# print("triangulation: ", triangulation.size())
|
# print("triangulation: ", triangulation.size())
|
||||||
@@ -1060,8 +1060,8 @@ class VertexData:
|
|||||||
data = v
|
data = v
|
||||||
_road_width = road_width
|
_road_width = road_width
|
||||||
_sidewalk_width = sidewalk_width
|
_sidewalk_width = sidewalk_width
|
||||||
assert v.has("_index")
|
assert(v.has("_index"))
|
||||||
assert v.has("_neighbors")
|
assert(v.has("_neighbors"))
|
||||||
func angle_sort_helper(a, b):
|
func angle_sort_helper(a, b):
|
||||||
var v1: Vector2 = a[1] - a[0]
|
var v1: Vector2 = a[1] - a[0]
|
||||||
var v2: Vector2 = b[1] - b[0]
|
var v2: Vector2 = b[1] - b[0]
|
||||||
@@ -1069,7 +1069,7 @@ class VertexData:
|
|||||||
return true
|
return true
|
||||||
return false
|
return false
|
||||||
func get_wedges(vertices: Array) -> Array:
|
func get_wedges(vertices: Array) -> Array:
|
||||||
assert data
|
assert(data)
|
||||||
var edges = []
|
var edges = []
|
||||||
for id in data._neighbors:
|
for id in data._neighbors:
|
||||||
edges.push_back([data.pos, vertices[id].pos, data._index, id])
|
edges.push_back([data.pos, vertices[id].pos, data._index, id])
|
||||||
|
|||||||
@@ -20,6 +20,11 @@ var quests : = []
|
|||||||
var team_train_count : = 0
|
var team_train_count : = 0
|
||||||
# warning-ignore:unused_class_variable
|
# warning-ignore:unused_class_variable
|
||||||
var arrow: Spatial
|
var arrow: Spatial
|
||||||
|
# warning-ignore:unused_class_variable
|
||||||
|
var next_scene: String
|
||||||
|
var player_visual = {
|
||||||
|
"gender": "male"
|
||||||
|
}
|
||||||
|
|
||||||
func room_event(ev: String):
|
func room_event(ev: String):
|
||||||
if current_room:
|
if current_room:
|
||||||
|
|||||||
@@ -0,0 +1,332 @@
|
|||||||
|
{
|
||||||
|
"female": {
|
||||||
|
"body": {
|
||||||
|
"body_default": {
|
||||||
|
"materials": [
|
||||||
|
{
|
||||||
|
"name": "Material",
|
||||||
|
"path": "res://characters/accessory/female/body/Material.tres"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"path": "res://characters/accessory/female/body/body_default.mesh"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"eyebrows": {
|
||||||
|
"eyebrows_default": {
|
||||||
|
"materials": [
|
||||||
|
{
|
||||||
|
"name": "Material",
|
||||||
|
"path": "res://characters/accessory/female/eyebrows/Material.tres"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"path": "res://characters/accessory/female/eyebrows/eyebrows_default.mesh"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"eyelashes": {
|
||||||
|
"eyelashes_default": {
|
||||||
|
"materials": [
|
||||||
|
{
|
||||||
|
"name": "Material",
|
||||||
|
"path": "res://characters/accessory/female/eyelashes/Material.tres"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"path": "res://characters/accessory/female/eyelashes/eyelashes_default.mesh"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"eyes": {
|
||||||
|
"eyes_default": {
|
||||||
|
"materials": [
|
||||||
|
{
|
||||||
|
"name": "Material",
|
||||||
|
"path": "res://characters/accessory/female/eyes/Material.tres"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"path": "res://characters/accessory/female/eyes/eyes_default.mesh"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"fingernails": {
|
||||||
|
"fingernails_default": {
|
||||||
|
"materials": [
|
||||||
|
{
|
||||||
|
"name": "Material",
|
||||||
|
"path": "res://characters/accessory/female/fingernails/Material.tres"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"path": "res://characters/accessory/female/fingernails/fingernails_default.mesh"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hair": {
|
||||||
|
"back_hair1": {
|
||||||
|
"materials": [
|
||||||
|
{
|
||||||
|
"name": "haircard1",
|
||||||
|
"path": "res://characters/accessory/female/hair/haircard1.tres"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"path": "res://characters/accessory/female/hair/back_hair1.mesh"
|
||||||
|
},
|
||||||
|
"back_hair2": {
|
||||||
|
"materials": [
|
||||||
|
{
|
||||||
|
"name": "haircard1",
|
||||||
|
"path": "res://characters/accessory/female/hair/haircard1.tres"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"path": "res://characters/accessory/female/hair/back_hair2.mesh"
|
||||||
|
},
|
||||||
|
"back_hair3": {
|
||||||
|
"materials": [
|
||||||
|
{
|
||||||
|
"name": "haircard1",
|
||||||
|
"path": "res://characters/accessory/female/hair/haircard1.tres"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"path": "res://characters/accessory/female/hair/back_hair3.mesh"
|
||||||
|
},
|
||||||
|
"front_hair1": {
|
||||||
|
"materials": [
|
||||||
|
{
|
||||||
|
"name": "haircard1",
|
||||||
|
"path": "res://characters/accessory/female/hair/haircard1.tres"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"path": "res://characters/accessory/female/hair/front_hair1.mesh"
|
||||||
|
},
|
||||||
|
"front_hair2": {
|
||||||
|
"materials": [
|
||||||
|
{
|
||||||
|
"name": "haircard1",
|
||||||
|
"path": "res://characters/accessory/female/hair/haircard1.tres"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"path": "res://characters/accessory/female/hair/front_hair2.mesh"
|
||||||
|
},
|
||||||
|
"front_hair3": {
|
||||||
|
"materials": [
|
||||||
|
{
|
||||||
|
"name": "haircard1",
|
||||||
|
"path": "res://characters/accessory/female/hair/haircard1.tres"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"path": "res://characters/accessory/female/hair/front_hair3.mesh"
|
||||||
|
},
|
||||||
|
"front_hair4": {
|
||||||
|
"materials": [
|
||||||
|
{
|
||||||
|
"name": "haircard1",
|
||||||
|
"path": "res://characters/accessory/female/hair/haircard1.tres"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"path": "res://characters/accessory/female/hair/front_hair4.mesh"
|
||||||
|
},
|
||||||
|
"hair_default": {
|
||||||
|
"materials": [
|
||||||
|
{
|
||||||
|
"name": "Material",
|
||||||
|
"path": "res://characters/accessory/female/hair/Material.tres"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"path": "res://characters/accessory/female/hair/hair_default.mesh"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"panties": {
|
||||||
|
"panties_default": {
|
||||||
|
"materials": [
|
||||||
|
{
|
||||||
|
"name": "Material",
|
||||||
|
"path": "res://characters/accessory/female/panties/Material.tres"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"path": "res://characters/accessory/female/panties/panties_default.mesh"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tears": {
|
||||||
|
"tears_default": {
|
||||||
|
"materials": [
|
||||||
|
{
|
||||||
|
"name": "Material",
|
||||||
|
"path": "res://characters/accessory/female/tears/Material.tres"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"path": "res://characters/accessory/female/tears/tears_default.mesh"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"teeth": {
|
||||||
|
"teeth_default": {
|
||||||
|
"materials": [
|
||||||
|
{
|
||||||
|
"name": "Material",
|
||||||
|
"path": "res://characters/accessory/female/teeth/Material.tres"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"path": "res://characters/accessory/female/teeth/teeth_default.mesh"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"toenail": {
|
||||||
|
"toenail_default": {
|
||||||
|
"materials": [
|
||||||
|
{
|
||||||
|
"name": "Material",
|
||||||
|
"path": "res://characters/accessory/female/toenail/Material.tres"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"path": "res://characters/accessory/female/toenail/toenail_default.mesh"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tongue": {
|
||||||
|
"tongue_default": {
|
||||||
|
"materials": [
|
||||||
|
{
|
||||||
|
"name": "Material",
|
||||||
|
"path": "res://characters/accessory/female/tongue/Material.tres"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"path": "res://characters/accessory/female/tongue/tongue_default.mesh"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"top": {
|
||||||
|
"top_default": {
|
||||||
|
"materials": [
|
||||||
|
{
|
||||||
|
"name": "Material",
|
||||||
|
"path": "res://characters/accessory/female/top/Material.tres"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"path": "res://characters/accessory/female/top/top_default.mesh"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"male": {
|
||||||
|
"body": {
|
||||||
|
"body_default": {
|
||||||
|
"materials": [
|
||||||
|
{
|
||||||
|
"name": "Material",
|
||||||
|
"path": "res://characters/accessory/male/body/Material.tres"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"path": "res://characters/accessory/male/body/body_default.mesh"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"eyebrows": {
|
||||||
|
"eyebrows_default": {
|
||||||
|
"materials": [
|
||||||
|
{
|
||||||
|
"name": "Material",
|
||||||
|
"path": "res://characters/accessory/male/eyebrows/Material.tres"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"path": "res://characters/accessory/male/eyebrows/eyebrows_default.mesh"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"eyelashes": {
|
||||||
|
"eyelashes_default": {
|
||||||
|
"materials": [
|
||||||
|
{
|
||||||
|
"name": "Material",
|
||||||
|
"path": "res://characters/accessory/male/eyelashes/Material.tres"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"path": "res://characters/accessory/male/eyelashes/eyelashes_default.mesh"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"eyes": {
|
||||||
|
"eyes_default": {
|
||||||
|
"materials": [
|
||||||
|
{
|
||||||
|
"name": "Material",
|
||||||
|
"path": "res://characters/accessory/male/eyes/Material.tres"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"path": "res://characters/accessory/male/eyes/eyes_default.mesh"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hair": {
|
||||||
|
"back_hair1": {
|
||||||
|
"materials": [
|
||||||
|
{
|
||||||
|
"name": "haircard1",
|
||||||
|
"path": "res://characters/accessory/male/hair/haircard1.tres"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"path": "res://characters/accessory/male/hair/back_hair1.mesh"
|
||||||
|
},
|
||||||
|
"back_hair2": {
|
||||||
|
"materials": [
|
||||||
|
{
|
||||||
|
"name": "haircard1",
|
||||||
|
"path": "res://characters/accessory/male/hair/haircard1.tres"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"path": "res://characters/accessory/male/hair/back_hair2.mesh"
|
||||||
|
},
|
||||||
|
"back_hair3": {
|
||||||
|
"materials": [
|
||||||
|
{
|
||||||
|
"name": "haircard1",
|
||||||
|
"path": "res://characters/accessory/male/hair/haircard1.tres"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"path": "res://characters/accessory/male/hair/back_hair3.mesh"
|
||||||
|
},
|
||||||
|
"front_hair1": {
|
||||||
|
"materials": [
|
||||||
|
{
|
||||||
|
"name": "haircard1",
|
||||||
|
"path": "res://characters/accessory/male/hair/haircard1.tres"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"path": "res://characters/accessory/male/hair/front_hair1.mesh"
|
||||||
|
},
|
||||||
|
"front_hair2": {
|
||||||
|
"materials": [
|
||||||
|
{
|
||||||
|
"name": "haircard1",
|
||||||
|
"path": "res://characters/accessory/male/hair/haircard1.tres"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"path": "res://characters/accessory/male/hair/front_hair2.mesh"
|
||||||
|
},
|
||||||
|
"front_hair3": {
|
||||||
|
"materials": [
|
||||||
|
{
|
||||||
|
"name": "haircard1",
|
||||||
|
"path": "res://characters/accessory/male/hair/haircard1.tres"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"path": "res://characters/accessory/male/hair/front_hair3.mesh"
|
||||||
|
},
|
||||||
|
"hair_default": {
|
||||||
|
"materials": [
|
||||||
|
{
|
||||||
|
"name": "Material",
|
||||||
|
"path": "res://characters/accessory/male/hair/Material.tres"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"path": "res://characters/accessory/male/hair/hair_default.mesh"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"teeth": {
|
||||||
|
"teeth_default": {
|
||||||
|
"materials": [
|
||||||
|
{
|
||||||
|
"name": "Material",
|
||||||
|
"path": "res://characters/accessory/male/teeth/Material.tres"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"path": "res://characters/accessory/male/teeth/teeth_default.mesh"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tongue": {
|
||||||
|
"tongue_default": {
|
||||||
|
"materials": [
|
||||||
|
{
|
||||||
|
"name": "Material",
|
||||||
|
"path": "res://characters/accessory/male/tongue/Material.tres"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"path": "res://characters/accessory/male/tongue/tongue_default.mesh"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
[gd_resource type="SpatialMaterial" format=2]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
albedo_color = Color( 0.996869, 0.877956, 0.794742, 1 )
|
||||||
Binary file not shown.
@@ -0,0 +1,4 @@
|
|||||||
|
[gd_resource type="SpatialMaterial" format=2]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
albedo_color = Color( 0.903545, 0.903545, 0.903545, 1 )
|
||||||
Binary file not shown.
@@ -0,0 +1,4 @@
|
|||||||
|
[gd_resource type="SpatialMaterial" format=2]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
albedo_color = Color( 0.903545, 0.903545, 0.903545, 1 )
|
||||||
Binary file not shown.
@@ -0,0 +1,4 @@
|
|||||||
|
[gd_resource type="SpatialMaterial" format=2]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
albedo_color = Color( 0.903545, 0.903545, 0.903545, 1 )
|
||||||
Binary file not shown.
@@ -0,0 +1,4 @@
|
|||||||
|
[gd_resource type="SpatialMaterial" format=2]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
albedo_color = Color( 0.903545, 0.903545, 0.903545, 1 )
|
||||||
Binary file not shown.
@@ -0,0 +1,4 @@
|
|||||||
|
[gd_resource type="SpatialMaterial" format=2]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
albedo_color = Color( 0.903545, 0.903545, 0.903545, 1 )
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,10 @@
|
|||||||
|
[gd_resource type="SpatialMaterial" load_steps=2 format=2]
|
||||||
|
|
||||||
|
[ext_resource path="res://characters/hair/haircard2.png" type="Texture" id=1]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
resource_name = "haircard1"
|
||||||
|
params_use_alpha_scissor = true
|
||||||
|
params_alpha_scissor_threshold = 0.5
|
||||||
|
albedo_color = Color( 0.0599718, 0.903545, 0.0758442, 1 )
|
||||||
|
albedo_texture = ExtResource( 1 )
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
[gd_resource type="SpatialMaterial" format=2]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
albedo_color = Color( 0.903545, 0.903545, 0.903545, 1 )
|
||||||
Binary file not shown.
@@ -0,0 +1,4 @@
|
|||||||
|
[gd_resource type="SpatialMaterial" format=2]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
albedo_color = Color( 0.807385, 0.807385, 0.807385, 1 )
|
||||||
Binary file not shown.
@@ -0,0 +1,4 @@
|
|||||||
|
[gd_resource type="SpatialMaterial" format=2]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
albedo_color = Color( 0.903545, 0.903545, 0.903545, 1 )
|
||||||
Binary file not shown.
@@ -0,0 +1,4 @@
|
|||||||
|
[gd_resource type="SpatialMaterial" format=2]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
albedo_color = Color( 0.903545, 0.903545, 0.903545, 1 )
|
||||||
Binary file not shown.
@@ -0,0 +1,4 @@
|
|||||||
|
[gd_resource type="SpatialMaterial" format=2]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
albedo_color = Color( 0.903545, 0.903545, 0.903545, 1 )
|
||||||
Binary file not shown.
@@ -0,0 +1,4 @@
|
|||||||
|
[gd_resource type="SpatialMaterial" format=2]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
albedo_color = Color( 0.903545, 0.903545, 0.903545, 1 )
|
||||||
Binary file not shown.
@@ -0,0 +1,4 @@
|
|||||||
|
[gd_resource type="SpatialMaterial" format=2]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
albedo_color = Color( 0.97209, 0.855219, 0.77166, 1 )
|
||||||
Binary file not shown.
@@ -0,0 +1,4 @@
|
|||||||
|
[gd_resource type="SpatialMaterial" format=2]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
albedo_color = Color( 0.903545, 0.903545, 0.903545, 1 )
|
||||||
Binary file not shown.
@@ -0,0 +1,4 @@
|
|||||||
|
[gd_resource type="SpatialMaterial" format=2]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
albedo_color = Color( 0.903545, 0.903545, 0.903545, 1 )
|
||||||
Binary file not shown.
@@ -0,0 +1,4 @@
|
|||||||
|
[gd_resource type="SpatialMaterial" format=2]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
albedo_color = Color( 0.903545, 0.903545, 0.903545, 1 )
|
||||||
Binary file not shown.
@@ -0,0 +1,4 @@
|
|||||||
|
[gd_resource type="SpatialMaterial" format=2]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
albedo_color = Color( 0.903545, 0.903545, 0.903545, 1 )
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,10 @@
|
|||||||
|
[gd_resource type="SpatialMaterial" load_steps=2 format=2]
|
||||||
|
|
||||||
|
[ext_resource path="res://characters/hair/haircard2.png" type="Texture" id=1]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
resource_name = "haircard1"
|
||||||
|
params_use_alpha_scissor = true
|
||||||
|
params_alpha_scissor_threshold = 0.5
|
||||||
|
albedo_color = Color( 0.0599718, 0.903545, 0.0758442, 1 )
|
||||||
|
albedo_texture = ExtResource( 1 )
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
[gd_resource type="SpatialMaterial" format=2]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
albedo_color = Color( 0.903545, 0.903545, 0.903545, 1 )
|
||||||
Binary file not shown.
@@ -0,0 +1,4 @@
|
|||||||
|
[gd_resource type="SpatialMaterial" format=2]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
albedo_color = Color( 0.903545, 0.903545, 0.903545, 1 )
|
||||||
Binary file not shown.
@@ -0,0 +1,4 @@
|
|||||||
|
[gd_resource type="SpatialMaterial" format=2]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
albedo_color = Color( 0.996869, 0.877956, 0.794742, 1 )
|
||||||
Binary file not shown.
@@ -0,0 +1,4 @@
|
|||||||
|
[gd_resource type="SpatialMaterial" format=2]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
albedo_color = Color( 0.903545, 0.903545, 0.903545, 1 )
|
||||||
Binary file not shown.
@@ -0,0 +1,4 @@
|
|||||||
|
[gd_resource type="SpatialMaterial" format=2]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
albedo_color = Color( 0.903545, 0.903545, 0.903545, 1 )
|
||||||
Binary file not shown.
@@ -0,0 +1,4 @@
|
|||||||
|
[gd_resource type="SpatialMaterial" format=2]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
albedo_color = Color( 0.903545, 0.903545, 0.903545, 1 )
|
||||||
Binary file not shown.
@@ -0,0 +1,4 @@
|
|||||||
|
[gd_resource type="SpatialMaterial" format=2]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
albedo_color = Color( 0.903545, 0.903545, 0.903545, 1 )
|
||||||
Binary file not shown.
@@ -0,0 +1,4 @@
|
|||||||
|
[gd_resource type="SpatialMaterial" format=2]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
albedo_color = Color( 0.903545, 0.903545, 0.903545, 1 )
|
||||||
Binary file not shown.
@@ -0,0 +1,4 @@
|
|||||||
|
[gd_resource type="SpatialMaterial" format=2]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
albedo_color = Color( 0.903545, 0.903545, 0.903545, 1 )
|
||||||
Binary file not shown.
@@ -0,0 +1,4 @@
|
|||||||
|
[gd_resource type="SpatialMaterial" format=2]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
albedo_color = Color( 0.807385, 0.807385, 0.807385, 1 )
|
||||||
Binary file not shown.
@@ -0,0 +1,4 @@
|
|||||||
|
[gd_resource type="SpatialMaterial" format=2]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
albedo_color = Color( 0.903545, 0.903545, 0.903545, 1 )
|
||||||
Binary file not shown.
@@ -0,0 +1,4 @@
|
|||||||
|
[gd_resource type="SpatialMaterial" format=2]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
albedo_color = Color( 0.903545, 0.903545, 0.903545, 1 )
|
||||||
Binary file not shown.
@@ -0,0 +1,4 @@
|
|||||||
|
[gd_resource type="SpatialMaterial" format=2]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
albedo_color = Color( 0.903545, 0.903545, 0.903545, 1 )
|
||||||
Binary file not shown.
@@ -0,0 +1,4 @@
|
|||||||
|
[gd_resource type="SpatialMaterial" format=2]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
albedo_color = Color( 0.903545, 0.903545, 0.903545, 1 )
|
||||||
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user