proto3 initial commit

This commit is contained in:
Segey Lapin
2020-04-13 12:45:25 +03:00
parent 69410badf6
commit 1084b6d5c3
1588 changed files with 368852 additions and 23 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,237 @@
extends Spatial
var playback = {
"init": {
"slave": [
["travel", "parameters/main/playback", "SmartObject"],
["travel", "parameters/main/SmartObject/playback", "bed"],
["travel", "parameters/main/SmartObject/bed/playback", "bed_facing_up"],
["set", "parameters/free_grabbed/current", 0]
]
},
"engage": {
"master": [
["travel", "parameters/main/playback", "SmartObject"],
["travel", "parameters/main/SmartObject/playback", "bed"],
["travel", "parameters/main/SmartObject/bed/playback", "bed_start_m"],
["set", "parameters/free_grabbed/current", 0]
],
"slave": [
["travel", "parameters/main/playback", "SmartObject"],
["travel", "parameters/main/SmartObject/playback", "bed"],
["travel", "parameters/main/SmartObject/bed/playback", "bed_start"],
["set", "parameters/free_grabbed/current", 0]
]
},
"torture": {
"master": [
["travel", "parameters/main/playback", "SmartObject"],
["travel", "parameters/main/SmartObject/playback", "bed"],
["travel", "parameters/main/SmartObject/bed/playback", "beating_m"],
["set", "parameters/free_grabbed/current", 0]
],
"slave": [
["travel", "parameters/main/playback", "SmartObject"],
["travel", "parameters/main/SmartObject/playback", "bed"],
["travel", "parameters/main/SmartObject/bed/playback", "beating"],
["set", "parameters/free_grabbed/current", 0]
]
},
"force": {
"master": [
["travel", "parameters/main/playback", "SmartObject"],
["travel", "parameters/main/SmartObject/playback", "bed"],
["travel", "parameters/main/SmartObject/bed/playback", "forcing_m"],
["set", "parameters/free_grabbed/current", 0]
],
"slave": [
["travel", "parameters/main/playback", "SmartObject"],
["travel", "parameters/main/SmartObject/playback", "bed"],
["travel", "parameters/main/SmartObject/bed/playback", "forcing"],
["set", "parameters/free_grabbed/current", 0]
]
},
"force_s1": {
"master": [
["travel", "parameters/main/playback", "SmartObject"],
["travel", "parameters/main/SmartObject/playback", "bed"],
["travel", "parameters/main/SmartObject/bed/playback", "forcing_s1_m"],
["set", "parameters/free_grabbed/current", 0]
],
"slave": [
["travel", "parameters/main/playback", "SmartObject"],
["travel", "parameters/main/SmartObject/playback", "bed"],
["travel", "parameters/main/SmartObject/bed/playback", "forcing_s1"],
["set", "parameters/free_grabbed/current", 0]
]
}
}
var state = "init"
var active_state = ""
var bodies = []
func entered(body):
if body.is_in_group("characters"):
if body.get_meta("grabbing"):
bodies.push_back(body)
global.smart_object.push_back(body)
print("entered:", body.name)
elif !body.get_meta("grabbed"):
bodies.push_back(body)
func exited(body):
if body in bodies:
print("exited:", body.name)
bodies.erase(body)
global.smart_object.erase(body)
var move_queue = []
var captured = []
func capture_slave(ch, orig_owner):
ch.add_collision_exception_with(orig_owner)
ch.set_meta("smart_object", true)
ch.set_meta("orig_owner", get_path_to(orig_owner))
for place in get_children():
if place.name.begins_with("place"):
if !place.has_meta("busy"):
move_queue.push_back([ch, place])
place.set_meta("busy", ch)
print("place: ", place.name)
break
captured.push_back(get_path_to(ch))
func free_slave(ch):
var orig_owner = ch.get_meta("orig_owner")
ch.remove_collision_exception_with(get_node(orig_owner))
ch.set_meta("smart_object", false)
ch.remove_meta("orig_owner")
var activate_delay = 0.0
func activate():
if activate_delay > 0.0:
return
if state in ["init", "engage", "torture"]:
activate_state()
activate_delay += 0.5
func activate_state():
# if active_state == state:
# return
print("ACTIVATE ", state)
match(state):
"init":
for k in bodies:
var ch = grabbing.get_grabbed(k)
if !ch:
continue
var s = playback[state]["slave"]
print("ungrab")
print("SMART: ", s)
grabbing.ungrab_character(k, s)
capture_slave(ch, k)
state = "engage"
"engage":
for k in bodies:
if k.get_meta("smart_object"):
continue
for place in get_children():
if place.name.begins_with("place"):
if place.has_meta("busy"):
print("has npc")
if !place.has_meta("master"):
print("has no master")
place.set_meta("master", k)
k.set_meta("smart_object", true)
print(k.name)
place.get_meta("busy").smart_obj(playback[state]["slave"])
place.get_meta("master").smart_obj(playback[state]["master"])
state = "torture"
"torture":
for place in get_children():
if place.name.begins_with("place"):
if place.has_meta("busy"):
if place.has_meta("master"):
place.get_meta("busy").smart_obj(playback[state]["slave"])
place.get_meta("master").smart_obj(playback[state]["master"])
"force":
for place in get_children():
if place.name.begins_with("place"):
if place.has_meta("busy"):
if place.has_meta("master"):
place.get_meta("busy").smart_obj(playback[state]["slave"])
place.get_meta("master").smart_obj(playback[state]["master"])
"force_s1":
for place in get_children():
if place.name.begins_with("place"):
if place.has_meta("busy"):
if place.has_meta("master"):
place.get_meta("busy").smart_obj(playback[state]["slave"])
place.get_meta("master").smart_obj(playback[state]["master"])
"leave":
for place in get_children():
if place.has_meta("busy") && place.has_meta("master"):
var m = place.get_meta("master")
m.set_meta("smart_object", false)
place.remove_meta("master")
m.do_stop()
var s = place.get_meta("busy")
free_slave(s)
place.remove_meta("busy")
s.do_stop()
var sub = rpg.get_submission(s)
sub += 100.0
s.set_meta("submission", sub)
rpg.update_xp(m, 300.0)
active_state = state
func _ready():
var e = $Area.connect("body_entered", self, "entered")
assert(e == OK)
e = $Area.connect("body_exited", self, "exited")
assert(e == OK)
var act = false
func _process(_delta):
if Input.is_action_just_pressed("grab"):
act = true
func _physics_process(delta):
if act:
activate()
act = false
while move_queue.size() > 0:
var item = move_queue.pop_front()
item[0].global_transform = item[1].global_transform
for place in get_children():
if place.has_meta("busy"):
place.get_meta("busy").global_transform = place.global_transform
place.get_meta("busy").orientation.basis = place.global_transform.basis
if place.has_meta("master"):
place.get_meta("master").global_transform = place.global_transform
place.get_meta("master").orientation.basis = place.global_transform.basis
activate_delay -= delta
if active_state == "torture":
for place in get_children():
if place.has_meta("busy") && place.has_meta("master"):
var strength = rpg.get_strength(place.get_meta("master"))
rpg.damage_stamina(place.get_meta("busy"), strength * 0.1 * delta)
print(rpg.get_stamina(place.get_meta("busy")))
if rpg.get_stamina(place.get_meta("busy")) <= 10.0:
state = "force"
activate_state()
rpg.damage_stamina(place.get_meta("master"), 5.0 * delta)
if active_state == "force":
for place in get_children():
if place.has_meta("busy") && place.has_meta("master"):
var strength = rpg.get_strength(place.get_meta("master"))
rpg.damage_stamina(place.get_meta("busy"), strength * 0.01 * delta)
print(rpg.get_stamina(place.get_meta("busy")))
if rpg.get_stamina(place.get_meta("busy")) <= 10.0:
state = "force_s1"
activate_state()
rpg.damage_stamina(place.get_meta("master"), 1.0 * delta)
if active_state == "force_s1":
for place in get_children():
if place.has_meta("busy") && place.has_meta("master"):
var strength = rpg.get_strength(place.get_meta("master"))
rpg.damage_stamina(place.get_meta("busy"), strength * 0.01 * delta)
print(rpg.get_stamina(place.get_meta("busy")))
rpg.damage_stamina(place.get_meta("master"), 1.0 * delta)
if rpg.get_stamina(place.get_meta("busy")) <= 0.0:
state = "leave"
activate_state()
if active_state == "leave":
state = "init"
active_state = ""

View File

@@ -0,0 +1,19 @@
[gd_scene load_steps=4 format=2]
[ext_resource path="res://scenes/furniture/bed.escn" type="PackedScene" id=1]
[ext_resource path="res://scenes/furniture/bed.gd" type="Script" id=2]
[sub_resource type="BoxShape" id=1]
extents = Vector3( 0.741339, 0.577236, 1.07588 )
[node name="bed" instance=ExtResource( 1 )]
script = ExtResource( 2 )
[node name="Area" type="Area" parent="." index="1"]
[node name="CollisionShape" type="CollisionShape" parent="Area" index="0"]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.595083, 0 )
shape = SubResource( 1 )
[node name="place1" type="Spatial" parent="." index="2"]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.133919, 0.464468, 0.90286 )

View File

@@ -0,0 +1,540 @@
[gd_scene load_steps=1 format=2]
[sub_resource id=1 type="Shader"]
resource_name = "Shader Nodetree"
code = "shader_type spatial;
render_mode blend_mix, depth_draw_always, cull_back, diffuse_burley, specular_schlick_ggx;
void node_bsdf_principled(vec4 color, float subsurface, vec4 subsurface_color,
float metallic, float specular, float roughness, float clearcoat,
float clearcoat_roughness, float anisotropy, float transmission,
float IOR, out vec3 albedo, out float sss_strength_out,
out float metallic_out, out float specular_out,
out float roughness_out, out float clearcoat_out,
out float clearcoat_gloss_out, out float anisotropy_out,
out float transmission_out, out float ior) {
metallic = clamp(metallic, 0.0, 1.0);
transmission = clamp(transmission, 0.0, 1.0);
subsurface = subsurface * (1.0 - metallic);
albedo = mix(color.rgb, subsurface_color.rgb, subsurface);
sss_strength_out = subsurface;
metallic_out = metallic;
specular_out = pow((IOR - 1.0)/(IOR + 1.0), 2)/0.08;
roughness_out = roughness;
clearcoat_out = clearcoat * (1.0 - transmission);
clearcoat_gloss_out = 1.0 - clearcoat_roughness;
anisotropy_out = clamp(anisotropy, 0.0, 1.0);
transmission_out = (1.0 - transmission) * (1.0 - metallic);
ior = IOR;
}
void vertex () {
}
void fragment () {
// node: 'Principled BSDF'
// type: 'ShaderNodeBsdfPrincipled'
// input sockets handling
vec4 node0_in0_basecolor = vec4(0.6399999856948853, 0.6399999856948853,
0.6399999856948853, 1.0);
float node0_in1_subsurface = float(0.0);
vec3 node0_in2_subsurfaceradius = vec3(1.0, 0.20000000298023224,
0.10000000149011612);
vec4 node0_in3_subsurfacecolor = vec4(0.800000011920929, 0.800000011920929,
0.800000011920929, 1.0);
float node0_in4_metallic = float(0.0);
float node0_in5_specular = float(0.019999999552965164);
float node0_in6_speculartint = float(0.0);
float node0_in7_roughness = float(1.0);
float node0_in8_anisotropic = float(0.0);
float node0_in9_anisotropicrotation = float(0.0);
float node0_in10_sheen = float(0.0);
float node0_in11_sheentint = float(0.5);
float node0_in12_clearcoat = float(0.0);
float node0_in13_clearcoatroughness = float(0.029999999329447746);
float node0_in14_ior = float(1.0);
float node0_in15_transmission = float(0.0);
float node0_in16_transmissionroughness = float(0.0);
vec4 node0_in17_emission = vec4(0.0, 0.0, 0.0, 1.0);
float node0_in18_alpha = float(1.0);
vec3 node0_in19_normal = NORMAL;
vec3 node0_in20_clearcoatnormal = vec3(0.0, 0.0, 0.0);
vec3 node0_in21_tangent = TANGENT;
// output sockets definitions
vec3 node0_bsdf_out0_albedo;
float node0_bsdf_out1_sss_strength;
float node0_bsdf_out3_specular;
float node0_bsdf_out2_metallic;
float node0_bsdf_out4_roughness;
float node0_bsdf_out5_clearcoat;
float node0_bsdf_out6_clearcoat_gloss;
float node0_bsdf_out7_anisotropy;
float node0_bsdf_out8_transmission;
float node0_bsdf_out9_ior;
node_bsdf_principled(node0_in0_basecolor, node0_in1_subsurface,
node0_in3_subsurfacecolor, node0_in4_metallic, node0_in5_specular,
node0_in7_roughness, node0_in12_clearcoat, node0_in13_clearcoatroughness,
node0_in8_anisotropic, node0_in15_transmission, node0_in14_ior,
node0_bsdf_out0_albedo, node0_bsdf_out1_sss_strength, node0_bsdf_out2_metallic,
node0_bsdf_out3_specular, node0_bsdf_out4_roughness, node0_bsdf_out5_clearcoat,
node0_bsdf_out6_clearcoat_gloss, node0_bsdf_out7_anisotropy,
node0_bsdf_out8_transmission, node0_bsdf_out9_ior);
ALBEDO = node0_bsdf_out0_albedo;
SSS_STRENGTH = node0_bsdf_out1_sss_strength;
SPECULAR = node0_bsdf_out3_specular;
METALLIC = node0_bsdf_out2_metallic;
ROUGHNESS = node0_bsdf_out4_roughness;
CLEARCOAT = node0_bsdf_out5_clearcoat;
CLEARCOAT_GLOSS = node0_bsdf_out6_clearcoat_gloss;
NORMAL = node0_in19_normal;
// uncomment it when you need it
// TRANSMISSION = vec3(1.0, 1.0, 1.0) * node0_bsdf_out8_transmission;
// uncomment it when you are modifing TANGENT
// TANGENT = normalize(cross(cross(node0_in21_tangent, NORMAL), NORMAL));
// BINORMAL = cross(TANGENT, NORMAL);
// uncomment it when you have tangent(UV) set
// ANISOTROPY = node0_bsdf_out7_anisotropy;
}
"
[sub_resource id=2 type="ShaderMaterial"]
resource_name = ""
shader = SubResource(1)
[sub_resource id=3 type="ArrayMesh"]
resource_name = "closet"
surfaces/0 = {
"material":SubResource(2),
"primitive":4,
"arrays":[
Vector3Array(0.518332, 1.89936, 0.670455, 0.518332, 0.0134721, 0.00236547, 0.518332, 1.89936, 0.00236556, 0.518332, 1.89936, 0.00236556, -0.481668, 0.0134721, 0.00236547, -0.481668, 1.89936, 0.00236556, -0.481668, 1.89936, 0.670455, 0.518332, 1.89936, 0.00236556, -0.481668, 1.89936, 0.00236556, 0.446375, 1.8274, 0.670455, 0.518332, 0.0134721, 0.670455, 0.518332, 1.89936, 0.670455, 0.518332, 0.0134721, 0.670455, -0.481668, 0.0134721, 0.00236547, 0.518332, 0.0134721, 0.00236547, -0.481668, 1.89936, 0.00236556, -0.481668, 0.0134721, 0.670455, -0.481668, 1.89936, 0.670455, -0.40971, 0.076086, 0.670455, -0.40971, 1.8274, 0.670455, -0.481668, 0.0134721, 0.670455, -0.00357551, 1.8274, 0.589424, 0.052192, 1.8274, 0.589424, 0.446375, 1.8274, 0.670455, 0.446375, 1.8274, 0.670455, 0.446375, 0.076086, 0.074323, 0.446375, 0.076086, 0.670455, -0.40971, 0.880073, 0.573859, -0.40971, 1.34076, 0.573859, -0.40971, 1.8274, 0.670455, -0.40971, 1.38007, 0.0743235, -0.00357551, 1.8274, 0.0743236, -0.40971, 1.8274, 0.0743236, -0.00357551, 0.840766, 0.573858, -0.00357551, 0.380074, 0.573858, -0.00357551, 0.076086, 0.589423, -0.00357551, 0.076086, 0.589423, 0.052192, 1.8274, 0.589424, -0.00357551, 1.8274, 0.589424, 0.052192, 0.076086, 0.589423, 0.052192, 1.8274, 0.0743231, 0.052192, 1.8274, 0.589424, 0.446375, 0.076086, 0.074323, 0.052192, 1.8274, 0.0743231, 0.052192, 0.076086, 0.074323, -0.40971, 0.076086, 0.670455, 0.446375, 0.076086, 0.670455, -0.00357551, 0.076086, 0.589423, -0.40971, 0.076086, 0.0743235, -0.00357551, 0.340766, 0.0743235, -0.40971, 0.340766, 0.0743235, -0.40971, 0.380074, 0.0743235, -0.00357551, 0.840766, 0.0743235, -0.40971, 0.840766, 0.0743235, -0.40971, 0.840766, 0.573858, -0.00357551, 0.840766, 0.0743235, -0.00357551, 0.840766, 0.573858, -0.40971, 0.880073, 0.573859, -0.00357551, 0.840766, 0.573858, -0.00357551, 0.880073, 0.573859, -0.00357551, 0.880073, 0.573859, -0.40971, 0.880073, 0.0743235, -0.40971, 0.880073, 0.573859, -0.40971, 0.880073, 0.0743235, -0.00357551, 1.34076, 0.0743235, -0.40971, 1.34076, 0.0743235, -0.40971, 1.34076, 0.573859, -0.00357551, 1.34076, 0.0743235, -0.00357551, 1.34076, 0.573859, -0.40971, 1.38007, 0.573859, -0.00357551, 1.34076, 0.573859, -0.00357551, 1.38007, 0.573859, -0.00357551, 1.38007, 0.573859, -0.40971, 1.38007, 0.0743235, -0.40971, 1.38007, 0.573859, -0.40971, 0.380074, 0.573858, -0.00357551, 0.340766, 0.573858, -0.00357551, 0.380074, 0.573858, -0.00357551, 0.380074, 0.573858, -0.40971, 0.380074, 0.0743235, -0.40971, 0.380074, 0.573858, -0.40971, 0.340766, 0.573858, -0.00357551, 0.340766, 0.0743235, -0.00357551, 0.340766, 0.573858, 0.518332, 0.0134721, 0.670455, 0.518332, 0.0134721, 0.00236547, 0.518332, 1.89936, 0.670455, -0.481668, 1.89936, 0.670455, 0.446375, 0.076086, 0.670455, -0.481668, 0.0134721, 0.670455, -0.481668, 0.0134721, 0.00236547, -0.40971, 1.8274, 0.670455, -0.40971, 1.8274, 0.0743236, -0.00357551, 1.8274, 0.0743236, 0.052192, 1.8274, 0.0743231, 0.446375, 1.8274, 0.0743231, 0.446375, 1.8274, 0.0743231, -0.40971, 0.076086, 0.670455, -0.40971, 0.076086, 0.0743235, -0.40971, 0.340766, 0.573858, -0.40971, 0.340766, 0.0743235, -0.40971, 1.38007, 0.0743235, -0.40971, 1.8274, 0.0743236, -0.40971, 1.38007, 0.573859, -0.40971, 0.380074, 0.573858, -0.40971, 0.380074, 0.0743235, -0.40971, 0.840766, 0.0743235, -0.40971, 0.840766, 0.573858, -0.40971, 0.880073, 0.0743235, -0.40971, 1.34076, 0.0743235, -0.00357551, 1.38007, 0.0743235, -0.00357551, 1.8274, 0.589424, -0.00357551, 1.8274, 0.0743236, -0.00357551, 1.38007, 0.573859, -0.00357551, 1.38007, 0.0743235, -0.00357551, 0.340766, 0.0743235, -0.00357551, 0.076086, 0.0743235, -0.00357551, 0.340766, 0.573858, -0.00357551, 0.880073, 0.573859, -0.00357551, 1.34076, 0.573859, -0.00357551, 1.34076, 0.0743235, -0.00357551, 0.880073, 0.0743235, -0.00357551, 0.840766, 0.0743235, -0.00357551, 0.380074, 0.0743235, 0.052192, 0.076086, 0.589423, 0.052192, 0.076086, 0.074323, 0.446375, 1.8274, 0.0743231, 0.446375, 0.076086, 0.074323, 0.052192, 0.076086, 0.589423, 0.052192, 0.076086, 0.074323, -0.00357551, 0.076086, 0.0743235, -0.40971, 0.076086, 0.0743235, -0.00357551, 0.076086, 0.0743235, -0.00357551, 0.380074, 0.0743235, -0.40971, 0.840766, 0.0743235, -0.40971, 0.840766, 0.573858, -0.00357551, 0.880073, 0.0743235, -0.00357551, 0.880073, 0.0743235, -0.40971, 1.34076, 0.0743235, -0.40971, 1.34076, 0.573859, -0.00357551, 1.38007, 0.0743235, -0.40971, 0.340766, 0.573858, -0.00357551, 0.380074, 0.0743235, -0.40971, 0.340766, 0.0743235),
Vector3Array(1.0, 0.0, 5.1487e-09, 1.0, 0.0, 1.8606e-08, 1.0, 0.0, 0.0, 0.0, 4.74084e-08, -1.0, 0.0, 4.74084e-08, -1.0, 0.0, 4.74084e-08, -1.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 2.93786e-07, -1.05504e-06, 1.0, 2.35911e-07, 8.35406e-07, 1.0, 2.90353e-07, -7.90992e-07, 1.0, 0.0, -1.0, -4.32143e-08, 0.0, -1.0, -4.32143e-08, 0.0, -1.0, -4.32143e-08, -1.0, 0.0, 4.78451e-09, -1.0, 0.0, 1.72899e-08, -1.0, 0.0, 0.0, 2.60951e-07, -9.20937e-07, 1.0, 2.24448e-07, 1.51451e-06, 1.0, 2.31943e-07, -8.70686e-07, 1.0, 2.29882e-07, -1.0, 0.0, -9.04573e-08, -1.0, 0.0, -3.31371e-07, -1.0, 0.0, -1.0, 0.0, 1.85264e-08, -1.0, 0.0, 7.01728e-08, -1.0, 0.0, 8.86991e-08, 1.0, 0.0, 5.29904e-08, 1.0, 1.95241e-14, 1.5066e-09, 1.0, 1.49341e-07, -6.89472e-07, 0.0, -6.15151e-08, 1.0, 0.0, -6.15151e-08, 1.0, 0.0, -6.15151e-08, 1.0, -1.0, 0.0, -5.03943e-07, -1.0, 0.0, 2.12941e-08, -1.0, 0.0, 1.01615e-09, 0.0, -7.47399e-08, 1.0, 0.0, -1.5459e-09, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, -1.35101e-08, 1.0, 0.0, -3.0081e-09, 1.0, 0.0, 0.0, 0.0, -5.32026e-08, 1.0, 0.0, -4.93274e-08, 1.0, 0.0, -5.39632e-08, 1.0, 1.68222e-08, 1.0, 5.52527e-08, -2.76142e-08, 1.0, 5.5408e-08, 4.48989e-09, 1.0, 7.52739e-08, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -2.29335e-07, 1.0, 0.0, -3.50434e-06, 1.0, 0.0, -3.73367e-06, 1.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, -7.0483e-08, 1.0, 0.0, -6.88895e-08, 1.0, 0.0, -5.97311e-08, 1.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 1.0, 0.0, 2.37547e-08, 0.0, 4.74084e-08, -1.0, 0.0, 1.0, 0.0, 2.22615e-07, 1.60175e-06, 1.0, 2.72321e-07, 1.14468e-06, 1.0, 0.0, -1.0, -4.32143e-08, -1.0, 0.0, 2.20744e-08, 8.61295e-07, -1.0, 0.0, 4.18568e-07, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, -1.58217e-07, -1.0, 0.0, -1.0, 0.0, 0.0, 1.0, -2.26892e-07, -7.26161e-07, 1.0, -9.05513e-08, -9.92635e-07, 1.0, -8.88019e-08, -1.55459e-06, 1.0, 0.0, -1.01432e-06, 1.0, 1.27191e-13, -9.33583e-07, 1.0, 8.03072e-08, -9.15209e-07, 1.0, 3.86019e-08, 4.53385e-06, 1.0, 0.0, -4.50756e-07, 1.0, 0.0, -1.03601e-06, 1.0, 0.0, -9.74591e-07, 1.0, 0.0, 9.74448e-06, 1.0, 6.49297e-14, -9.67925e-07, 1.0, 1.23502e-13, -9.06508e-07, 0.0, -6.15151e-08, 1.0, -1.0, 0.0, 2.3574e-10, -1.0, 0.0, 0.0, -1.0, 0.0, -3.13612e-08, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 2.64865e-10, -1.0, 0.0, 2.06983e-10, -1.0, 0.0, -3.01341e-09, -1.0, 0.0, 2.11035e-08, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, 0.0, -7.62858e-08, 1.0, 1.0, 0.0, -1.65182e-08, 0.0, -4.85669e-08, 1.0, -1.31847e-08, 1.0, 4.61374e-08, -7.53811e-09, 1.0, 7.52428e-08, 0.0, 1.0, 4.3393e-08, 0.0, 1.0, 4.3393e-08, 8.17515e-09, 1.0, 4.61983e-08, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, -1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, -7.96414e-08, 1.0, 0.0, -1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, -1.0, 0.0),
null, ; No Tangents,
null, ; no Vertex Colors,
null, ; No UV1,
null, ; No UV2,
null, ; No Bones,
null, ; No Weights,
IntArray(0, 2, 1, 3, 5, 4, 6, 8, 7, 9, 11, 10, 12, 14, 13, 15, 17, 16, 18, 20, 19, 21, 23, 22, 24, 26, 25, 27, 29, 28, 30, 32, 31, 33, 35, 34, 36, 38, 37, 39, 41, 40, 42, 44, 43, 45, 47, 46, 48, 50, 49, 51, 53, 52, 54, 56, 55, 57, 59, 58, 60, 62, 61, 63, 65, 64, 66, 68, 67, 69, 71, 70, 72, 74, 73, 75, 77, 76, 78, 80, 79, 81, 83, 82, 0, 1, 84, 3, 4, 85, 6, 7, 86, 87, 11, 19, 19, 11, 9, 9, 10, 88, 12, 13, 89, 15, 16, 90, 19, 20, 87, 20, 18, 10, 10, 18, 88, 91, 21, 92, 92, 21, 93, 94, 22, 95, 95, 22, 23, 91, 23, 21, 24, 25, 96, 97, 99, 98, 98, 99, 100, 101, 103, 102, 102, 103, 29, 29, 27, 97, 97, 104, 99, 104, 106, 105, 97, 107, 104, 27, 107, 97, 28, 29, 103, 108, 28, 109, 27, 28, 108, 104, 107, 106, 30, 31, 110, 111, 113, 112, 112, 113, 114, 115, 117, 116, 116, 117, 35, 35, 118, 111, 111, 119, 113, 119, 118, 120, 120, 118, 121, 111, 118, 119, 34, 35, 117, 122, 34, 123, 33, 34, 122, 118, 35, 33, 36, 37, 124, 39, 40, 125, 42, 43, 126, 46, 128, 127, 127, 128, 129, 130, 47, 131, 131, 47, 45, 46, 47, 128, 48, 49, 132, 51, 52, 133, 54, 55, 134, 57, 58, 135, 60, 61, 136, 63, 64, 137, 66, 67, 138, 69, 70, 139, 72, 73, 140, 75, 76, 141, 78, 79, 142, 81, 82, 143)
],
"morph_arrays":[]
}
[sub_resource id=4 type="Shader"]
resource_name = "Shader Nodetree"
code = "shader_type spatial;
render_mode blend_mix, depth_draw_always, cull_back, diffuse_burley, specular_schlick_ggx;
void node_bsdf_principled(vec4 color, float subsurface, vec4 subsurface_color,
float metallic, float specular, float roughness, float clearcoat,
float clearcoat_roughness, float anisotropy, float transmission,
float IOR, out vec3 albedo, out float sss_strength_out,
out float metallic_out, out float specular_out,
out float roughness_out, out float clearcoat_out,
out float clearcoat_gloss_out, out float anisotropy_out,
out float transmission_out, out float ior) {
metallic = clamp(metallic, 0.0, 1.0);
transmission = clamp(transmission, 0.0, 1.0);
subsurface = subsurface * (1.0 - metallic);
albedo = mix(color.rgb, subsurface_color.rgb, subsurface);
sss_strength_out = subsurface;
metallic_out = metallic;
specular_out = pow((IOR - 1.0)/(IOR + 1.0), 2)/0.08;
roughness_out = roughness;
clearcoat_out = clearcoat * (1.0 - transmission);
clearcoat_gloss_out = 1.0 - clearcoat_roughness;
anisotropy_out = clamp(anisotropy, 0.0, 1.0);
transmission_out = (1.0 - transmission) * (1.0 - metallic);
ior = IOR;
}
void vertex () {
}
void fragment () {
// node: 'Principled BSDF'
// type: 'ShaderNodeBsdfPrincipled'
// input sockets handling
vec4 node0_in0_basecolor = vec4(0.6399999856948853, 0.6399999856948853,
0.6399999856948853, 1.0);
float node0_in1_subsurface = float(0.0);
vec3 node0_in2_subsurfaceradius = vec3(1.0, 0.20000000298023224,
0.10000000149011612);
vec4 node0_in3_subsurfacecolor = vec4(0.800000011920929, 0.800000011920929,
0.800000011920929, 1.0);
float node0_in4_metallic = float(0.0);
float node0_in5_specular = float(0.019999999552965164);
float node0_in6_speculartint = float(0.0);
float node0_in7_roughness = float(1.0);
float node0_in8_anisotropic = float(0.0);
float node0_in9_anisotropicrotation = float(0.0);
float node0_in10_sheen = float(0.0);
float node0_in11_sheentint = float(0.5);
float node0_in12_clearcoat = float(0.0);
float node0_in13_clearcoatroughness = float(0.029999999329447746);
float node0_in14_ior = float(1.0);
float node0_in15_transmission = float(0.0);
float node0_in16_transmissionroughness = float(0.0);
vec4 node0_in17_emission = vec4(0.0, 0.0, 0.0, 1.0);
float node0_in18_alpha = float(1.0);
vec3 node0_in19_normal = NORMAL;
vec3 node0_in20_clearcoatnormal = vec3(0.0, 0.0, 0.0);
vec3 node0_in21_tangent = TANGENT;
// output sockets definitions
vec3 node0_bsdf_out0_albedo;
float node0_bsdf_out1_sss_strength;
float node0_bsdf_out3_specular;
float node0_bsdf_out2_metallic;
float node0_bsdf_out4_roughness;
float node0_bsdf_out5_clearcoat;
float node0_bsdf_out6_clearcoat_gloss;
float node0_bsdf_out7_anisotropy;
float node0_bsdf_out8_transmission;
float node0_bsdf_out9_ior;
node_bsdf_principled(node0_in0_basecolor, node0_in1_subsurface,
node0_in3_subsurfacecolor, node0_in4_metallic, node0_in5_specular,
node0_in7_roughness, node0_in12_clearcoat, node0_in13_clearcoatroughness,
node0_in8_anisotropic, node0_in15_transmission, node0_in14_ior,
node0_bsdf_out0_albedo, node0_bsdf_out1_sss_strength, node0_bsdf_out2_metallic,
node0_bsdf_out3_specular, node0_bsdf_out4_roughness, node0_bsdf_out5_clearcoat,
node0_bsdf_out6_clearcoat_gloss, node0_bsdf_out7_anisotropy,
node0_bsdf_out8_transmission, node0_bsdf_out9_ior);
ALBEDO = node0_bsdf_out0_albedo;
SSS_STRENGTH = node0_bsdf_out1_sss_strength;
SPECULAR = node0_bsdf_out3_specular;
METALLIC = node0_bsdf_out2_metallic;
ROUGHNESS = node0_bsdf_out4_roughness;
CLEARCOAT = node0_bsdf_out5_clearcoat;
CLEARCOAT_GLOSS = node0_bsdf_out6_clearcoat_gloss;
NORMAL = node0_in19_normal;
// uncomment it when you need it
// TRANSMISSION = vec3(1.0, 1.0, 1.0) * node0_bsdf_out8_transmission;
// uncomment it when you are modifing TANGENT
// TANGENT = normalize(cross(cross(node0_in21_tangent, NORMAL), NORMAL));
// BINORMAL = cross(TANGENT, NORMAL);
// uncomment it when you have tangent(UV) set
// ANISOTROPY = node0_bsdf_out7_anisotropy;
}
"
[sub_resource id=5 type="ShaderMaterial"]
resource_name = ""
shader = SubResource(4)
[sub_resource id=6 type="ArrayMesh"]
resource_name = "closet_door_left"
surfaces/0 = {
"material":SubResource(5),
"primitive":4,
"arrays":[
Vector3Array(0.00635256, 1.82395, -0.00049841, 0.366967, 0.817119, -0.00049847, 0.366967, 1.09745, -0.00049847, 0.399134, 0.817119, -0.00049847, 0.42621, 0.0835765, -0.00049847, 0.00635256, 1.82395, -0.00049841, 0.42621, 1.82395, -0.0324249, 0.00635256, 1.82395, -0.0324249, 0.000172034, 1.82395, -0.00049841, 0.00635256, 0.0835765, -0.00049847, 0.00635256, 0.0835765, -0.032425, 0.42621, 0.0835765, -0.00049847, 0.00635256, 0.0835765, -0.00049847, 0.42621, 1.82395, -0.00049841, 0.42621, 0.0835765, -0.032425, 0.42621, 1.82395, -0.0324249, 0.00635256, 1.82395, -0.0324249, 0.42621, 0.0835765, -0.032425, 0.00635256, 0.0835765, -0.032425, 0.000172034, 1.82395, -0.00049841, 0.000172034, 1.82395, -0.0324249, 0.000172034, 1.82395, -0.0324249, 0.000172034, 0.0835765, -0.00049847, 0.000172034, 1.82395, -0.00049841, 0.000172034, 0.0835765, -0.032425, 0.000172034, 0.0835765, -0.032425, 0.000172034, 1.82395, -0.0324249, 0.366967, 0.817119, 0.017358, 0.366967, 1.09745, -0.00049847, 0.366967, 0.817119, -0.00049847, 0.399134, 0.817119, 0.017358, 0.366967, 0.817119, -0.00049847, 0.399134, 0.817119, -0.00049847, 0.366967, 1.09745, 0.017358, 0.399134, 0.817119, 0.017358, 0.399134, 1.09745, 0.017358, 0.366967, 1.09745, 0.017358, 0.399134, 1.09745, -0.00049847, 0.366967, 1.09745, -0.00049847, 0.399134, 1.09745, 0.017358, 0.399134, 0.817119, -0.00049847, 0.399134, 1.09745, -0.00049847, 0.399134, 1.09745, -0.00049847, 0.42621, 1.82395, -0.00049841, 0.42621, 1.82395, -0.00049841, 0.000172034, 0.0835765, -0.00049847, 0.42621, 0.0835765, -0.032425, 0.42621, 0.0835765, -0.00049847, 0.42621, 1.82395, -0.0324249, 0.000172034, 0.0835765, -0.032425, 0.000172034, 0.0835765, -0.00049847, 0.366967, 1.09745, 0.017358, 0.366967, 0.817119, 0.017358, 0.366967, 0.817119, 0.017358, 0.399134, 1.09745, 0.017358, 0.399134, 0.817119, 0.017358),
Vector3Array(1.37725e-08, -4.98629e-08, 1.0, 4.66681e-08, -1.70523e-08, 1.0, 9.40305e-08, -3.53204e-08, 1.0, -6.18584e-07, -2.24412e-08, 1.0, -2.17942e-08, -8.43063e-10, 1.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, -3.42443e-08, 1.0, 1.01322e-08, -2.21122e-08, 1.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 3.41533e-08, -1.0, 0.0, 3.31384e-08, -1.0, 0.0, 3.28035e-08, -1.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0, 3.24748e-08, -1.0, 0.0, 3.51744e-08, -1.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, -1.45022e-06, -2.79417e-08, 1.0, -3.04242e-08, -8.06921e-08, 1.0, 0.0, 1.0, 0.0, 0.0, -3.42443e-08, 1.0, 0.0, -1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 3.31383e-08, -1.0, -1.0, 0.0, 0.0, 0.0, -1.0, 0.0, -1.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0),
null, ; No Tangents,
null, ; no Vertex Colors,
null, ; No UV1,
null, ; No UV2,
null, ; No Bones,
null, ; No Weights,
IntArray(0, 2, 1, 3, 4, 1, 5, 7, 6, 8, 0, 9, 10, 12, 11, 13, 15, 14, 16, 18, 17, 19, 20, 7, 21, 23, 22, 12, 10, 24, 16, 26, 25, 27, 29, 28, 30, 32, 31, 33, 35, 34, 36, 38, 37, 39, 41, 40, 0, 1, 9, 9, 1, 4, 42, 2, 43, 43, 2, 0, 4, 3, 43, 43, 3, 42, 5, 6, 44, 8, 9, 45, 10, 11, 46, 13, 14, 47, 16, 17, 48, 19, 7, 5, 21, 22, 49, 12, 24, 50, 16, 25, 18, 27, 28, 51, 30, 31, 52, 33, 34, 53, 36, 37, 54, 39, 40, 55)
],
"morph_arrays":[]
}
[sub_resource id=7 type="Animation"]
resource_name = "closed"
step = 0.1
length = 0.0416667
loop = false
tracks/0/type = "transform"
tracks/0/path = NodePath(".:")
tracks/0/interp = 1
tracks/0/keys = [0.0, 1.0, -0.408956, 0.0, 0.672461, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0416667, 1.0, -0.408956, 0.0, 0.672461, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0]
[sub_resource id=8 type="Animation"]
resource_name = "default"
step = 0.1
length = 0.0416667
loop = false
tracks/0/type = "transform"
tracks/0/path = NodePath(".:")
tracks/0/interp = 1
tracks/0/keys = [0.0, 1.0, -0.408956, 0.0, 0.672461, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0416667, 1.0, -0.408956, 0.0, 0.672461, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0]
[sub_resource id=9 type="Animation"]
resource_name = "closed"
step = 0.1
length = 0.0416667
loop = false
tracks/0/type = "transform"
tracks/0/path = NodePath(".:")
tracks/0/interp = 1
tracks/0/keys = [0.0, 1.0, -0.408956, 0.0, 0.672461, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0416667, 1.0, -0.408956, 0.0, 0.672461, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0]
[sub_resource id=10 type="Animation"]
resource_name = "open"
step = 0.1
length = 0.0416667
loop = false
tracks/0/type = "transform"
tracks/0/path = NodePath(".:")
tracks/0/interp = 1
tracks/0/keys = [0.0, 1.0, -0.408956, 0.0, 0.672461, 0.0, -0.974314, 0.0, 0.225194, 1.0, 1.0, 1.0, 0.0416667, 1.0, -0.408956, 0.0, 0.672461, 0.0, -0.974314, 0.0, 0.225194, 1.0, 1.0, 1.0]
[sub_resource id=11 type="Animation"]
resource_name = "openning"
step = 0.1
length = 1.20833
loop = false
tracks/0/type = "transform"
tracks/0/path = NodePath(".:")
tracks/0/interp = 1
tracks/0/keys = [0.0, 1.0, -0.408956, 0.0, 0.672461, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0416667, 1.0, -0.408956, 0.0, 0.672461, 0.0, -6.39612e-05, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0833333, 1.0, -0.408956, 0.0, 0.672461, 0.0, -0.00051169, 0.0, 1.0, 1.0, 1.0, 1.0, 0.125, 1.0, -0.408956, 0.0, 0.672461, 0.0, -0.00172695, 0.0, 0.999999, 1.0, 1.0, 1.0, 0.166667, 1.0, -0.408956, 0.0, 0.672461, 0.0, -0.00409351, 0.0, 0.999992, 1.0, 1.0, 1.0, 0.208333, 1.0, -0.408956, 0.0, 0.672461, 0.0, -0.00799507, 0.0, 0.999968, 1.0, 1.0, 1.0, 0.25, 1.0, -0.408956, 0.0, 0.672461, 0.0, -0.0138152, 0.0, 0.999905, 1.0, 1.0, 1.0, 0.291667, 1.0, -0.408956, 0.0, 0.672461, 0.0, -0.0219369, 0.0, 0.999759, 1.0, 1.0, 1.0, 0.333333, 1.0, -0.408956, 0.0, 0.672461, 0.0, -0.0327423, 0.0, 0.999464, 1.0, 1.0, 1.0, 0.375, 1.0, -0.408956, 0.0, 0.672461, 0.0, -0.0466108, 0.0, 0.998913, 1.0, 1.0, 1.0, 0.416667, 1.0, -0.408956, 0.0, 0.672461, 0.0, -0.0639176, 0.0, 0.997955, 1.0, 1.0, 1.0, 0.458333, 1.0, -0.408956, 0.0, 0.672461, 0.0, -0.0850296, 0.0, 0.996378, 1.0, 1.0, 1.0, 0.5, 1.0, -0.408956, 0.0, 0.672461, 0.0, -0.1103, 0.0, 0.993898, 1.0, 1.0, 1.0, 0.541667, 1.0, -0.408956, 0.0, 0.672461, 0.0, -0.140061, 0.0, 0.990143, 1.0, 1.0, 1.0, 0.583333, 1.0, -0.408956, 0.0, 0.672461, 0.0, -0.17461, 0.0, 0.984638, 1.0, 1.0, 1.0, 0.625, 1.0, -0.408956, 0.0, 0.672461, 0.0, -0.214196, 0.0, 0.976791, 1.0, 1.0, 1.0, 0.666667, 1.0, -0.408956, 0.0, 0.672461, 0.0, -0.258999, 0.0, 0.965878, 1.0, 1.0, 1.0, 0.708333, 1.0, -0.408956, 0.0, 0.672461, 0.0, -0.309095, 0.0, 0.951031, 1.0, 1.0, 1.0, 0.75, 1.0, -0.408956, 0.0, 0.672461, 0.0, -0.364431, 0.0, 0.93123, 1.0, 1.0, 1.0, 0.791667, 1.0, -0.408956, 0.0, 0.672461, 0.0, -0.424772, 0.0, 0.9053, 1.0, 1.0, 1.0, 0.833333, 1.0, -0.408956, 0.0, 0.672461, 0.0, -0.489651, 0.0, 0.871918, 1.0, 1.0, 1.0, 0.875, 1.0, -0.408956, 0.0, 0.672461, 0.0, -0.558308, 0.0, 0.829634, 1.0, 1.0, 1.0, 0.916667, 1.0, -0.408956, 0.0, 0.672461, 0.0, -0.629616, 0.0, 0.776906, 1.0, 1.0, 1.0, 0.958333, 1.0, -0.408956, 0.0, 0.672461, 0.0, -0.70201, 0.0, 0.712167, 1.0, 1.0, 1.0, 1.0, 1.0, -0.408956, 0.0, 0.672461, 0.0, -0.779959, 0.0, 0.625831, 1.0, 1.0, 1.0, 1.04167, 1.0, -0.408956, 0.0, 0.672461, 0.0, -0.856819, 0.0, 0.515617, 1.0, 1.0, 1.0, 1.08333, 1.0, -0.408956, 0.0, 0.672461, 0.0, -0.918442, 0.0, 0.395557, 1.0, 1.0, 1.0, 1.125, 1.0, -0.408956, 0.0, 0.672461, 0.0, -0.958661, 0.0, 0.284551, 1.0, 1.0, 1.0, 1.16667, 1.0, -0.408956, 0.0, 0.672461, 0.0, -0.979097, 0.0, 0.203393, 1.0, 1.0, 1.0, 1.20833, 1.0, -0.408956, 0.0, 0.672461, 0.0, -0.985068, 0.0, 0.172165, 1.0, 1.0, 1.0]
[sub_resource id=12 type="Shader"]
resource_name = "Shader Nodetree"
code = "shader_type spatial;
render_mode blend_mix, depth_draw_always, cull_back, diffuse_burley, specular_schlick_ggx;
void node_bsdf_principled(vec4 color, float subsurface, vec4 subsurface_color,
float metallic, float specular, float roughness, float clearcoat,
float clearcoat_roughness, float anisotropy, float transmission,
float IOR, out vec3 albedo, out float sss_strength_out,
out float metallic_out, out float specular_out,
out float roughness_out, out float clearcoat_out,
out float clearcoat_gloss_out, out float anisotropy_out,
out float transmission_out, out float ior) {
metallic = clamp(metallic, 0.0, 1.0);
transmission = clamp(transmission, 0.0, 1.0);
subsurface = subsurface * (1.0 - metallic);
albedo = mix(color.rgb, subsurface_color.rgb, subsurface);
sss_strength_out = subsurface;
metallic_out = metallic;
specular_out = pow((IOR - 1.0)/(IOR + 1.0), 2)/0.08;
roughness_out = roughness;
clearcoat_out = clearcoat * (1.0 - transmission);
clearcoat_gloss_out = 1.0 - clearcoat_roughness;
anisotropy_out = clamp(anisotropy, 0.0, 1.0);
transmission_out = (1.0 - transmission) * (1.0 - metallic);
ior = IOR;
}
void vertex () {
}
void fragment () {
// node: 'Principled BSDF'
// type: 'ShaderNodeBsdfPrincipled'
// input sockets handling
vec4 node0_in0_basecolor = vec4(0.6399999856948853, 0.6399999856948853,
0.6399999856948853, 1.0);
float node0_in1_subsurface = float(0.0);
vec3 node0_in2_subsurfaceradius = vec3(1.0, 0.20000000298023224,
0.10000000149011612);
vec4 node0_in3_subsurfacecolor = vec4(0.800000011920929, 0.800000011920929,
0.800000011920929, 1.0);
float node0_in4_metallic = float(0.0);
float node0_in5_specular = float(0.019999999552965164);
float node0_in6_speculartint = float(0.0);
float node0_in7_roughness = float(1.0);
float node0_in8_anisotropic = float(0.0);
float node0_in9_anisotropicrotation = float(0.0);
float node0_in10_sheen = float(0.0);
float node0_in11_sheentint = float(0.5);
float node0_in12_clearcoat = float(0.0);
float node0_in13_clearcoatroughness = float(0.029999999329447746);
float node0_in14_ior = float(1.0);
float node0_in15_transmission = float(0.0);
float node0_in16_transmissionroughness = float(0.0);
vec4 node0_in17_emission = vec4(0.0, 0.0, 0.0, 1.0);
float node0_in18_alpha = float(1.0);
vec3 node0_in19_normal = NORMAL;
vec3 node0_in20_clearcoatnormal = vec3(0.0, 0.0, 0.0);
vec3 node0_in21_tangent = TANGENT;
// output sockets definitions
vec3 node0_bsdf_out0_albedo;
float node0_bsdf_out1_sss_strength;
float node0_bsdf_out3_specular;
float node0_bsdf_out2_metallic;
float node0_bsdf_out4_roughness;
float node0_bsdf_out5_clearcoat;
float node0_bsdf_out6_clearcoat_gloss;
float node0_bsdf_out7_anisotropy;
float node0_bsdf_out8_transmission;
float node0_bsdf_out9_ior;
node_bsdf_principled(node0_in0_basecolor, node0_in1_subsurface,
node0_in3_subsurfacecolor, node0_in4_metallic, node0_in5_specular,
node0_in7_roughness, node0_in12_clearcoat, node0_in13_clearcoatroughness,
node0_in8_anisotropic, node0_in15_transmission, node0_in14_ior,
node0_bsdf_out0_albedo, node0_bsdf_out1_sss_strength, node0_bsdf_out2_metallic,
node0_bsdf_out3_specular, node0_bsdf_out4_roughness, node0_bsdf_out5_clearcoat,
node0_bsdf_out6_clearcoat_gloss, node0_bsdf_out7_anisotropy,
node0_bsdf_out8_transmission, node0_bsdf_out9_ior);
ALBEDO = node0_bsdf_out0_albedo;
SSS_STRENGTH = node0_bsdf_out1_sss_strength;
SPECULAR = node0_bsdf_out3_specular;
METALLIC = node0_bsdf_out2_metallic;
ROUGHNESS = node0_bsdf_out4_roughness;
CLEARCOAT = node0_bsdf_out5_clearcoat;
CLEARCOAT_GLOSS = node0_bsdf_out6_clearcoat_gloss;
NORMAL = node0_in19_normal;
// uncomment it when you need it
// TRANSMISSION = vec3(1.0, 1.0, 1.0) * node0_bsdf_out8_transmission;
// uncomment it when you are modifing TANGENT
// TANGENT = normalize(cross(cross(node0_in21_tangent, NORMAL), NORMAL));
// BINORMAL = cross(TANGENT, NORMAL);
// uncomment it when you have tangent(UV) set
// ANISOTROPY = node0_bsdf_out7_anisotropy;
}
"
[sub_resource id=13 type="ShaderMaterial"]
resource_name = ""
shader = SubResource(12)
[sub_resource id=14 type="ArrayMesh"]
resource_name = "closet_door_right"
surfaces/0 = {
"material":SubResource(13),
"primitive":4,
"arrays":[
Vector3Array(-0.417257, 1.82395, 0.000198439, -0.39682, 1.09745, 0.00019838, -0.364652, 1.09745, 0.00019838, -0.00103214, 0.0835765, 0.00019838, -0.364652, 0.817119, 0.00019838, -0.417257, 1.82395, 0.000198439, -0.00103214, 1.82395, -0.0317281, -0.417257, 1.82395, -0.0317281, -0.423438, 1.82395, 0.000198439, -0.417257, 0.0835765, 0.00019838, -0.417257, 0.0835765, -0.0317281, -0.00103214, 0.0835765, 0.00019838, -0.417257, 0.0835765, 0.00019838, -0.00103214, 1.82395, 0.000198439, -0.00103214, 0.0835765, -0.0317281, -0.00103214, 1.82395, -0.0317281, -0.417257, 1.82395, -0.0317281, -0.00103214, 0.0835765, -0.0317281, -0.417257, 0.0835765, -0.0317281, -0.423438, 1.82395, 0.000198439, -0.423438, 1.82395, -0.0317281, -0.423438, 1.82395, -0.0317281, -0.423438, 0.0835765, 0.00019838, -0.423438, 1.82395, 0.000198439, -0.423438, 0.0835765, -0.0317281, -0.423438, 0.0835765, -0.0317281, -0.423438, 1.82395, -0.0317281, -0.39682, 0.817119, 0.0180549, -0.39682, 1.09745, 0.00019838, -0.39682, 0.817119, 0.00019838, -0.364652, 0.817119, 0.0180549, -0.39682, 0.817119, 0.00019838, -0.364652, 0.817119, 0.00019838, -0.39682, 1.09745, 0.0180549, -0.364652, 0.817119, 0.0180549, -0.364652, 1.09745, 0.0180549, -0.39682, 1.09745, 0.0180549, -0.364652, 1.09745, 0.00019838, -0.39682, 1.09745, 0.00019838, -0.364652, 1.09745, 0.0180549, -0.364652, 0.817119, 0.00019838, -0.364652, 1.09745, 0.00019838, -0.39682, 0.817119, 0.00019838, -0.00103214, 1.82395, 0.000198439, -0.00103214, 1.82395, 0.000198439, -0.423438, 0.0835765, 0.00019838, -0.00103214, 0.0835765, -0.0317281, -0.00103214, 0.0835765, 0.00019838, -0.00103214, 1.82395, -0.0317281, -0.423438, 0.0835765, -0.0317281, -0.423438, 0.0835765, 0.00019838, -0.39682, 1.09745, 0.0180549, -0.39682, 0.817119, 0.0180549, -0.39682, 0.817119, 0.0180549, -0.364652, 1.09745, 0.0180549, -0.364652, 0.817119, 0.0180549),
Vector3Array(1.52159e-08, -5.76213e-08, 1.0, 1.9269e-06, -2.78361e-08, 1.0, -4.72805e-08, -5.23765e-08, 1.0, -2.09344e-08, -7.50606e-09, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, -3.42418e-08, 1.0, 1.08996e-08, -1.7435e-08, 1.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 3.44918e-08, -1.0, 0.0, 3.56146e-08, -1.0, 0.0, 3.55853e-08, -1.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0, 3.51717e-08, -1.0, 0.0, 3.51717e-08, -1.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 8.19491e-07, -2.24756e-08, 1.0, -2.82116e-08, -6.79092e-08, 1.0, 0.0, 1.0, 0.0, 0.0, -3.42629e-08, 1.0, 0.0, -1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 3.34275e-08, -1.0, -1.0, 0.0, 0.0, 0.0, -1.0, 0.0, -1.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0),
null, ; No Tangents,
null, ; no Vertex Colors,
null, ; No UV1,
null, ; No UV2,
null, ; No Bones,
null, ; No Weights,
IntArray(0, 2, 1, 3, 4, 2, 5, 7, 6, 8, 0, 9, 10, 12, 11, 13, 15, 14, 16, 18, 17, 19, 20, 7, 21, 23, 22, 12, 10, 24, 16, 26, 25, 27, 29, 28, 30, 32, 31, 33, 35, 34, 36, 38, 37, 39, 41, 40, 0, 42, 9, 0, 1, 42, 3, 2, 43, 43, 2, 0, 42, 4, 9, 9, 4, 3, 5, 6, 44, 8, 9, 45, 10, 11, 46, 13, 14, 47, 16, 17, 48, 19, 7, 5, 21, 22, 49, 12, 24, 50, 16, 25, 18, 27, 28, 51, 30, 31, 52, 33, 34, 53, 36, 37, 54, 39, 40, 55)
],
"morph_arrays":[]
}
[sub_resource id=15 type="Animation"]
resource_name = "closed"
step = 0.1
length = 0.0416667
loop = false
tracks/0/type = "transform"
tracks/0/path = NodePath(".:")
tracks/0/interp = 1
tracks/0/keys = [0.0, 1.0, 0.445465, 0.0, 0.672461, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0416667, 1.0, 0.445465, 0.0, 0.672461, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0]
[sub_resource id=16 type="Animation"]
resource_name = "default"
step = 0.1
length = 0.0416667
loop = false
tracks/0/type = "transform"
tracks/0/path = NodePath(".:")
tracks/0/interp = 1
tracks/0/keys = [0.0, 1.0, 0.445465, 0.0, 0.672461, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0416667, 1.0, 0.445465, 0.0, 0.672461, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0]
[sub_resource id=17 type="Animation"]
resource_name = "closed"
step = 0.1
length = 0.0416667
loop = false
tracks/0/type = "transform"
tracks/0/path = NodePath(".:")
tracks/0/interp = 1
tracks/0/keys = [0.0, 1.0, 0.445465, 0.0, 0.672461, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0416667, 1.0, 0.445465, 0.0, 0.672461, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0]
[sub_resource id=18 type="Animation"]
resource_name = "open_r"
step = 0.1
length = 0.0416667
loop = false
tracks/0/type = "transform"
tracks/0/path = NodePath(".:")
tracks/0/interp = 1
tracks/0/keys = [0.0, 1.0, 0.445465, 0.0, 0.672461, 0.0, 0.986832, 0.0, 0.161751, 1.0, 1.0, 1.0, 0.0416667, 1.0, 0.445465, 0.0, 0.672461, 0.0, 0.986832, 0.0, 0.161751, 1.0, 1.0, 1.0]
[sub_resource id=19 type="Animation"]
resource_name = "openning_r"
step = 0.1
length = 1.20833
loop = false
tracks/0/type = "transform"
tracks/0/path = NodePath(".:")
tracks/0/interp = 1
tracks/0/keys = [0.0, 1.0, 0.445465, 0.0, 0.672461, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0416667, 1.0, 0.445465, 0.0, 0.672461, 0.0, 5.71012e-05, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0833333, 1.0, 0.445465, 0.0, 0.672461, 0.0, 0.000456809, 0.0, 1.0, 1.0, 1.0, 1.0, 0.125, 1.0, 0.445465, 0.0, 0.672461, 0.0, 0.00154173, 0.0, 0.999999, 1.0, 1.0, 1.0, 0.166667, 1.0, 0.445465, 0.0, 0.672461, 0.0, 0.00365447, 0.0, 0.999993, 1.0, 1.0, 1.0, 0.208333, 1.0, 0.445465, 0.0, 0.672461, 0.0, 0.00713759, 0.0, 0.999975, 1.0, 1.0, 1.0, 0.25, 1.0, 0.445465, 0.0, 0.672461, 0.0, 0.0123335, 0.0, 0.999924, 1.0, 1.0, 1.0, 0.291667, 1.0, 0.445465, 0.0, 0.672461, 0.0, 0.0195844, 0.0, 0.999808, 1.0, 1.0, 1.0, 0.333333, 1.0, 0.445465, 0.0, 0.672461, 0.0, 0.0292316, 0.0, 0.999573, 1.0, 1.0, 1.0, 0.375, 1.0, 0.445465, 0.0, 0.672461, 0.0, 0.0416147, 0.0, 0.999134, 1.0, 1.0, 1.0, 0.416667, 1.0, 0.445465, 0.0, 0.672461, 0.0, 0.0570701, 0.0, 0.99837, 1.0, 1.0, 1.0, 0.458333, 1.0, 0.445465, 0.0, 0.672461, 0.0, 0.0759285, 0.0, 0.997113, 1.0, 1.0, 1.0, 0.5, 1.0, 0.445465, 0.0, 0.672461, 0.0, 0.0985108, 0.0, 0.995136, 1.0, 1.0, 1.0, 0.541667, 1.0, 0.445465, 0.0, 0.672461, 0.0, 0.125122, 0.0, 0.992141, 1.0, 1.0, 1.0, 0.583333, 1.0, 0.445465, 0.0, 0.672461, 0.0, 0.156045, 0.0, 0.98775, 1.0, 1.0, 1.0, 0.625, 1.0, 0.445465, 0.0, 0.672461, 0.0, 0.191526, 0.0, 0.981488, 1.0, 1.0, 1.0, 0.666667, 1.0, 0.445465, 0.0, 0.672461, 0.0, 0.23176, 0.0, 0.972773, 1.0, 1.0, 1.0, 0.708333, 1.0, 0.445465, 0.0, 0.672461, 0.0, 0.276873, 0.0, 0.960907, 1.0, 1.0, 1.0, 0.75, 1.0, 0.445465, 0.0, 0.672461, 0.0, 0.326893, 0.0, 0.945061, 1.0, 1.0, 1.0, 0.791667, 1.0, 0.445465, 0.0, 0.672461, 0.0, 0.38172, 0.0, 0.924278, 1.0, 1.0, 1.0, 0.833333, 1.0, 0.445465, 0.0, 0.672461, 0.0, 0.441087, 0.0, 0.897465, 1.0, 1.0, 1.0, 0.875, 1.0, 0.445465, 0.0, 0.672461, 0.0, 0.50451, 0.0, 0.863406, 1.0, 1.0, 1.0, 0.916667, 1.0, 0.445465, 0.0, 0.672461, 0.0, 0.571238, 0.0, 0.820785, 1.0, 1.0, 1.0, 0.958333, 1.0, 0.445465, 0.0, 0.672461, 0.0, 0.640193, 0.0, 0.768214, 1.0, 1.0, 1.0, 1.0, 1.0, 0.445465, 0.0, 0.672461, 0.0, 0.709907, 0.0, 0.704295, 1.0, 1.0, 1.0, 1.04167, 1.0, 0.445465, 0.0, 0.672461, 0.0, 0.793713, 0.0, 0.608293, 1.0, 1.0, 1.0, 1.08333, 1.0, 0.445465, 0.0, 0.672461, 0.0, 0.881148, 0.0, 0.47284, 1.0, 1.0, 1.0, 1.125, 1.0, 0.445465, 0.0, 0.672461, 0.0, 0.945073, 0.0, 0.326859, 1.0, 1.0, 1.0, 1.16667, 1.0, 0.445465, 0.0, 0.672461, 0.0, 0.977812, 0.0, 0.209486, 1.0, 1.0, 1.0, 1.20833, 1.0, 0.445465, 0.0, 0.672461, 0.0, 0.986832, 0.0, 0.161751, 1.0, 1.0, 1.0]
[node type="Spatial" name="Scene"]
[node name="closet-col" type="MeshInstance" parent="."]
mesh = SubResource(3)
visible = true
transform = Transform(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0)
[node name="closet_door_left-col" type="MeshInstance" parent="closet-col"]
mesh = SubResource(6)
visible = true
transform = Transform(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, -0.408956, 0.0, 0.672461)
[node name="AnimationPlayer" type="AnimationPlayer" parent="closet-col/closet_door_left-col"]
root_node = NodePath("..:")
anims/closed = SubResource(9)
anims/default = SubResource(8)
anims/open = SubResource(10)
anims/openning = SubResource(11)
[node name="closet_door_right-col" type="MeshInstance" parent="closet-col"]
mesh = SubResource(14)
visible = true
transform = Transform(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.445465, 0.0, 0.672461)
[node name="AnimationPlayer" type="AnimationPlayer" parent="closet-col/closet_door_right-col"]
root_node = NodePath("..:")
anims/closed = SubResource(17)
anims/default = SubResource(16)
anims/open_r = SubResource(18)
anims/openning_r = SubResource(19)

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,131 @@
extends Spatial
# Declare member variables here. Examples:
# var a = 2
# var b = "text"
# Called when the node enters the scene tree for the first time.
enum {DOOR_OPEN, DOOR_CLOSED}
var door_l_state = DOOR_CLOSED
var door_r_state = DOOR_CLOSED
var act_l_delay = 0.0
var act_r_delay = 0.0
var l_act = false
var r_act = false
var hide_delay = 4.0
var hidden = false
func activate_l_door(def):
if def && door_l_state == DOOR_CLOSED:
$closet/closet_door_left/AnimationPlayer.play("openning")
door_l_state = DOOR_OPEN
if !def && door_l_state == DOOR_OPEN:
$closet/closet_door_left/AnimationPlayer.play_backwards("openning")
door_l_state = DOOR_CLOSED
func activate_r_door(def):
if def && door_r_state == DOOR_CLOSED:
$closet/closet_door_right/AnimationPlayer.play("openning_r")
door_r_state = DOOR_OPEN
if !def && door_r_state == DOOR_OPEN:
$closet/closet_door_right/AnimationPlayer.play_backwards("openning_r")
door_r_state = DOOR_CLOSED
func _ready():
add_to_group("closet")
add_to_group("hide_spot")
var ret = $left.connect("body_entered", self, "body_enter")
assert(ret == OK)
ret = $left.connect("body_exited", self, "body_exit")
assert(ret == OK)
ret = $right.connect("body_entered", self, "body_enter")
assert(ret == OK)
ret = $right.connect("body_exited", self, "body_exit")
assert(ret == OK)
ret = $Timer.connect("timeout", self, "free_character")
assert(ret == OK)
func _process(delta):
if l_act:
act_l_delay += delta
if act_l_delay >= 1.5:
if door_l_state == DOOR_CLOSED:
door_l_state = DOOR_OPEN
l_act = false
if r_act:
act_l_delay += delta
if act_l_delay >= 1.5:
if door_l_state == DOOR_CLOSED:
door_l_state = DOOR_OPEN
r_act = false
func free_character():
var c = get_meta("hidden_character")
c.remove_collision_exception_with($closet/closet_door_left/static_collision)
c.remove_collision_exception_with($closet/closet_door_right/static_collision)
c.remove_collision_exception_with($closet/static_collision)
c.global_transform = $exit_spot.global_transform
yield(get_tree().create_timer(0.1), "timeout")
c.global_transform = $exit_spot.global_transform
c.set_meta("smart_object", false)
c.do_walk()
hidden = false
set_meta("hidden_character", null)
func body_enter(body):
if !body.is_in_group("characters"):
return
if body.get_meta("grabbing"):
return
# TODO
if body.get_meta("grabbed"):
return
if !hidden:
if body == global.player:
print("CLOSET")
activate_l_door(true)
activate_r_door(true)
elif body.has_meta("action"):
var action = body.get_meta("action")
if action == "hide":
activate_l_door(true)
activate_r_door(true)
body.set_meta("smart_object", true)
body.do_stop()
set_meta("hidden_character", body)
hidden = true
yield(get_tree().create_timer(hide_delay), "timeout")
body.add_collision_exception_with($closet/closet_door_left/static_collision)
body.add_collision_exception_with($closet/closet_door_right/static_collision)
body.add_collision_exception_with($closet/static_collision)
body.global_transform = $hide_spot.global_transform
yield(get_tree().create_timer(0.1), "timeout")
body.global_transform = $hide_spot.global_transform
yield(get_tree().create_timer(hide_delay), "timeout")
activate_l_door(false)
activate_r_door(false)
else:
return
else:
activate_l_door(true)
activate_r_door(true)
else:
if body == get_meta("hidden_character"):
return
if body == global.player:
activate_l_door(true)
activate_r_door(true)
$Timer.start(4.0)
elif body.has_meta("action"):
var action = body.get_meta("action")
if action == "hide":
return
if action == "patrol":
# var c = get_meta("hidden_character")
activate_l_door(true)
activate_r_door(true)
$Timer.start(4.0)
func body_exit(_body):
pass
# Called every frame. 'delta' is the elapsed time since the previous frame.
#func _process(delta):
# pass

View File

@@ -0,0 +1,40 @@
[gd_scene load_steps=5 format=2]
[ext_resource path="res://scenes/furniture/closet.escn" type="PackedScene" id=1]
[ext_resource path="res://scenes/furniture/closet.gd" type="Script" id=2]
[sub_resource type="BoxShape" id=1]
extents = Vector3( 0.307138, 1, 0.229338 )
[sub_resource type="BoxShape" id=2]
extents = Vector3( 0.30995, 1, 0.227319 )
[node name="closet" instance=ExtResource( 1 )]
script = ExtResource( 2 )
[node name="AnimationPlayer" parent="closet/closet_door_left" index="0"]
playback_process_mode = 0
[node name="AnimationPlayer" parent="closet/closet_door_right" index="0"]
playback_process_mode = 0
[node name="left" type="Area" parent="." index="1"]
[node name="CollisionShape" type="CollisionShape" parent="left" index="0"]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.332212, 0, 0.920621 )
shape = SubResource( 1 )
[node name="right" type="Area" parent="." index="2"]
[node name="CollisionShape" type="CollisionShape" parent="right" index="0"]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.314295, 0, 0.923483 )
shape = SubResource( 2 )
[node name="hide_spot" type="Spatial" parent="." index="3"]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.257012, 0.0920849, 0.345239 )
[node name="exit_spot" type="Spatial" parent="." index="4"]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.257012, 0.0920849, 0.653263 )
[node name="Timer" type="Timer" parent="." index="5"]
one_shot = true

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,250 @@
extends Spatial
var playback = {
"init": {
"slave": [
["travel", "parameters/main/playback", "SmartObject"],
["travel", "parameters/main/SmartObject/playback", "bed"],
["travel", "parameters/main/SmartObject/bed/playback", "bed_facing_up"],
["set", "parameters/free_grabbed/current", 0]
]
},
"engage": {
"master": [
["travel", "parameters/main/playback", "SmartObject"],
["travel", "parameters/main/SmartObject/playback", "bed"],
["travel", "parameters/main/SmartObject/bed/playback", "bed_start_m"],
["set", "parameters/free_grabbed/current", 0]
],
"slave": [
["travel", "parameters/main/playback", "SmartObject"],
["travel", "parameters/main/SmartObject/playback", "bed"],
["travel", "parameters/main/SmartObject/bed/playback", "bed_start"],
["set", "parameters/free_grabbed/current", 0]
]
},
"torture": {
"master": [
["travel", "parameters/main/playback", "SmartObject"],
["travel", "parameters/main/SmartObject/playback", "bed"],
["travel", "parameters/main/SmartObject/bed/playback", "beating_m"],
["set", "parameters/free_grabbed/current", 0]
],
"slave": [
["travel", "parameters/main/playback", "SmartObject"],
["travel", "parameters/main/SmartObject/playback", "bed"],
["travel", "parameters/main/SmartObject/bed/playback", "beating"],
["set", "parameters/free_grabbed/current", 0]
]
},
"force": {
"master": [
["travel", "parameters/main/playback", "SmartObject"],
["travel", "parameters/main/SmartObject/playback", "bed"],
["travel", "parameters/main/SmartObject/bed/playback", "forcing_m"],
["set", "parameters/free_grabbed/current", 0]
],
"slave": [
["travel", "parameters/main/playback", "SmartObject"],
["travel", "parameters/main/SmartObject/playback", "bed"],
["travel", "parameters/main/SmartObject/bed/playback", "forcing"],
["set", "parameters/free_grabbed/current", 0]
]
},
"force_s1": {
"master": [
["travel", "parameters/main/playback", "SmartObject"],
["travel", "parameters/main/SmartObject/playback", "bed"],
["travel", "parameters/main/SmartObject/bed/playback", "forcing_s1_m"],
["set", "parameters/free_grabbed/current", 0]
],
"slave": [
["travel", "parameters/main/playback", "SmartObject"],
["travel", "parameters/main/SmartObject/playback", "bed"],
["travel", "parameters/main/SmartObject/bed/playback", "forcing_s1"],
["set", "parameters/free_grabbed/current", 0]
]
}
}
var state = "init"
var active_state = ""
var bodies = []
func entered(body):
if body.is_in_group("characters"):
if body.get_meta("grabbing"):
bodies.push_back(body)
global.smart_object.push_back(body)
# print("entered:", body.name)
elif !body.get_meta("grabbed"):
bodies.push_back(body)
# for k in get_children():
# if k.name.begins_with("chair"):
# var t: RigidBody = k
# t.contact_monitor = false
# t.contacts_reported = 0
# if t.mode != t.MODE_RIGID:
# t.mode = t.MODE_RIGID
func exited(body):
if body in bodies:
print("exited:", body.name)
bodies.erase(body)
global.smart_object.erase(body)
var move_queue = []
var captured = []
func capture_slave(ch, orig_owner):
ch.add_collision_exception_with(orig_owner)
ch.set_meta("smart_object", true)
ch.set_meta("orig_owner", get_path_to(orig_owner))
for place in get_children():
if place.name.begins_with("place"):
if !place.has_meta("busy"):
move_queue.push_back([ch, place])
place.set_meta("busy", ch)
# print("place: ", place.name)
break
captured.push_back(get_path_to(ch))
func free_slave(ch):
var orig_owner = ch.get_meta("orig_owner")
ch.remove_collision_exception_with(get_node(orig_owner))
ch.set_meta("smart_object", false)
ch.remove_meta("orig_owner")
var activate_delay = 0.0
func activate():
if activate_delay > 0.0:
return
if state in ["init", "engage", "torture"]:
activate_state()
activate_delay += 0.5
func activate_state():
# if active_state == state:
# return
print("ACTIVATE ", state)
match(state):
"init":
for k in bodies:
var ch = grabbing.get_grabbed(k)
if !ch:
continue
var s = playback[state]["slave"]
print("ungrab")
print("SMART: ", s)
grabbing.ungrab_character(k, s)
capture_slave(ch, k)
state = "engage"
"engage":
for k in bodies:
if k.get_meta("smart_object"):
continue
for place in get_children():
if place.name.begins_with("place"):
if place.has_meta("busy"):
# print("has npc")
if !place.has_meta("master"):
print("has no master")
place.set_meta("master", k)
k.set_meta("smart_object", true)
print(k.name)
place.get_meta("busy").smart_obj(playback[state]["slave"])
place.get_meta("master").smart_obj(playback[state]["master"])
state = "torture"
"torture":
for place in get_children():
if place.name.begins_with("place"):
if place.has_meta("busy"):
if place.has_meta("master"):
place.get_meta("busy").smart_obj(playback[state]["slave"])
place.get_meta("master").smart_obj(playback[state]["master"])
"force":
for place in get_children():
if place.name.begins_with("place"):
if place.has_meta("busy"):
if place.has_meta("master"):
place.get_meta("busy").smart_obj(playback[state]["slave"])
place.get_meta("master").smart_obj(playback[state]["master"])
"force_s1":
for place in get_children():
if place.name.begins_with("place"):
if place.has_meta("busy"):
if place.has_meta("master"):
place.get_meta("busy").smart_obj(playback[state]["slave"])
place.get_meta("master").smart_obj(playback[state]["master"])
"leave":
for place in get_children():
if place.has_meta("busy") && place.has_meta("master"):
var m = place.get_meta("master")
m.set_meta("smart_object", false)
place.remove_meta("master")
m.do_stop()
var s = place.get_meta("busy")
free_slave(s)
place.remove_meta("busy")
s.do_stop()
var sub = rpg.get_submission(s)
sub += 100.0
s.set_meta("submission", sub)
rpg.update_xp(m, 300.0)
active_state = state
func _ready():
var e = $Area.connect("body_entered", self, "entered")
assert(e == OK)
e = $Area.connect("body_exited", self, "exited")
assert(e == OK)
var act = false
func _process(_delta):
if Input.is_action_just_pressed("grab"):
act = true
func _physics_process(delta):
if act:
activate()
act = false
while move_queue.size() > 0:
var item = move_queue.pop_front()
item[0].global_transform = item[1].global_transform
for place in get_children():
if place.has_meta("busy"):
place.get_meta("busy").global_transform = place.global_transform
place.get_meta("busy").orientation.basis = place.global_transform.basis
if place.has_meta("master"):
place.get_meta("master").global_transform = place.global_transform
place.get_meta("master").orientation.basis = place.global_transform.basis
activate_delay -= delta
if active_state == "torture":
for place in get_children():
if place.has_meta("busy") && place.has_meta("master"):
var strength = rpg.get_strength(place.get_meta("master"))
rpg.damage_stamina(place.get_meta("busy"), strength * 0.1 * delta)
print(rpg.get_stamina(place.get_meta("busy")))
if rpg.get_stamina(place.get_meta("busy")) <= 10.0:
state = "force"
activate_state()
rpg.damage_stamina(place.get_meta("master"), 5.0 * delta)
if active_state == "force":
for place in get_children():
if place.has_meta("busy") && place.has_meta("master"):
var strength = rpg.get_strength(place.get_meta("master"))
rpg.damage_stamina(place.get_meta("busy"), strength * 0.01 * delta)
print(rpg.get_stamina(place.get_meta("busy")))
if rpg.get_stamina(place.get_meta("busy")) <= 10.0:
state = "force_s1"
activate_state()
rpg.damage_stamina(place.get_meta("master"), 1.0 * delta)
if active_state == "force_s1":
for place in get_children():
if place.has_meta("busy") && place.has_meta("master"):
var strength = rpg.get_strength(place.get_meta("master"))
rpg.damage_stamina(place.get_meta("busy"), strength * 0.01 * delta)
print(rpg.get_stamina(place.get_meta("busy")))
rpg.damage_stamina(place.get_meta("master"), 1.0 * delta)
if rpg.get_stamina(place.get_meta("busy")) <= 0.0:
state = "leave"
activate_state()
if active_state == "leave":
state = "init"
active_state = ""
# if bodies.size() == 0:
# for k in get_children():
# if k.name.begins_with("chair"):
# var t: RigidBody = k
# if t.mode != t.MODE_STATIC:
# t.mode = t.MODE_STATIC

View File

@@ -0,0 +1,19 @@
[gd_scene load_steps=4 format=2]
[ext_resource path="res://scenes/furniture/table_chairs.escn" type="PackedScene" id=1]
[ext_resource path="res://scenes/furniture/table_chairs.gd" type="Script" id=2]
[sub_resource type="BoxShape" id=1]
extents = Vector3( 0.727809, 0.43685, 0.887136 )
[node name="table_chairs" instance=ExtResource( 1 )]
script = ExtResource( 2 )
[node name="Area" type="Area" parent="." index="7"]
[node name="CollisionShape" type="CollisionShape" parent="Area" index="0"]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.459258, 0 )
shape = SubResource( 1 )
[node name="place1" type="Spatial" parent="." index="8"]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.443603, 0.615902 )