This commit is contained in:
parent
1694788562
commit
7d11e5dd46
BIN
blends/environment.blend (Stored with Git LFS)
BIN
blends/environment.blend (Stored with Git LFS)
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,3 @@
|
|||
source_md5="57b4ff75689821c17e211ac43dec5cc1"
|
||||
dest_md5="e111a930a900111d74daf52169d71079"
|
||||
|
Binary file not shown.
|
@ -0,0 +1,3 @@
|
|||
source_md5="29a467bd0e8026e293d99ad55aa9226b"
|
||||
dest_md5="544be77f19c21ac6731f2a9ffe327c5b"
|
||||
|
Binary file not shown.
|
@ -0,0 +1,3 @@
|
|||
source_md5="117c82671fc7ee51752ef9c55c2f660c"
|
||||
dest_md5="69ffad1aa079b0bb21541ee45b204038"
|
||||
|
Binary file not shown.
|
@ -0,0 +1,3 @@
|
|||
source_md5="012bedbf6531f60be5bea92f0c6e72d3"
|
||||
dest_md5="ef3ab7c849aecdb2333073d93acc14a6"
|
||||
|
Binary file not shown.
|
@ -0,0 +1,3 @@
|
|||
source_md5="6daa2c682f089c1575edb4df6779283b"
|
||||
dest_md5="7ce601b52785ba50f5dbe7e1c86bd594"
|
||||
|
Binary file not shown.
|
@ -1,3 +1,3 @@
|
|||
source_md5="d958ea022de42cf6a043f9a1801ebaed"
|
||||
dest_md5="dfff1dbb1add8c552ef261e8a3b6a094"
|
||||
source_md5="f6f19525174d964bcfbd5e0d10af60f4"
|
||||
dest_md5="b244913244895512a1541ec37a177db9"
|
||||
|
||||
|
|
Binary file not shown.
|
@ -0,0 +1,3 @@
|
|||
source_md5="9b94e0f51de02c4a45185188995cb665"
|
||||
dest_md5="15cc094a05e22cbf495d3b31b9636222"
|
||||
|
Binary file not shown.
|
@ -0,0 +1,3 @@
|
|||
source_md5="50c243f949bb21547a721b61ce9ef4e4"
|
||||
dest_md5="bf69edfb8a6c681488dce5eb4b06afc1"
|
||||
|
Binary file not shown.
|
@ -0,0 +1,3 @@
|
|||
source_md5="d6b3b46b70c9ac15fe713c3512c3e2bb"
|
||||
dest_md5="7e05983fb7806b04a3f81e7015eb5d53"
|
||||
|
Binary file not shown.
|
@ -0,0 +1,3 @@
|
|||
source_md5="cd0239125589bbed7154e4c37d3df269"
|
||||
dest_md5="1343865a40c52a07aee54914c1cfe8ee"
|
||||
|
Binary file not shown.
|
@ -0,0 +1,3 @@
|
|||
source_md5="b2d69ececd65bd1f6b1dd2721557d916"
|
||||
dest_md5="027713fa886127a5b5e6964c4e85675b"
|
||||
|
Binary file not shown.
|
@ -0,0 +1,3 @@
|
|||
source_md5="7cf5bb24903fdee23774f8c9da6e36b2"
|
||||
dest_md5="21d192875f8011d011cb6317a7bc670a"
|
||||
|
Binary file not shown.
|
@ -0,0 +1,3 @@
|
|||
source_md5="f84ae5bbac64d603431a024c47a4a2aa"
|
||||
dest_md5="fa6a07901b875360fa1234eaa1030a25"
|
||||
|
Binary file not shown.
|
@ -0,0 +1,3 @@
|
|||
source_md5="c3ed6de3d121966caf4e61dc885612a6"
|
||||
dest_md5="6cc8935d8cf3c5ce99e5c3f175d20e0e"
|
||||
|
Binary file not shown.
|
@ -0,0 +1,3 @@
|
|||
source_md5="1c7190e4f5911bf2f2cf42fe764473d8"
|
||||
dest_md5="7759500d4105c4cec08be5872341d1b2"
|
||||
|
Binary file not shown.
|
@ -0,0 +1,3 @@
|
|||
source_md5="964c8a1bd4adcf55e4960f4056556b30"
|
||||
dest_md5="23c10cf6850b1e567d45b340f37b8dc1"
|
||||
|
Binary file not shown.
|
@ -0,0 +1,3 @@
|
|||
source_md5="f6dafb3b5cc64081b282ea04b18b2319"
|
||||
dest_md5="153c542c7e4f67638a66f05a4f272837"
|
||||
|
Binary file not shown.
|
@ -0,0 +1,3 @@
|
|||
source_md5="cd581dfa2d4e48db761f0a6a8f5dde53"
|
||||
dest_md5="f8d3ce55de908504c4421f4ed8d66f97"
|
||||
|
Binary file not shown.
|
@ -0,0 +1,3 @@
|
|||
source_md5="0b7e964d3f859345741fa337f39b3ee5"
|
||||
dest_md5="407f16c0e0ee291d6de66272c0abb710"
|
||||
|
Binary file not shown.
|
@ -67,16 +67,46 @@ func input_speed() -> float:
|
|||
speed *= DIST_PER_ACTION
|
||||
return speed
|
||||
|
||||
func sound_beep():
|
||||
if not $Beep.playing:
|
||||
$Beep.play()
|
||||
|
||||
func sound_color():
|
||||
if $Color.playing:
|
||||
return
|
||||
$Color.play()
|
||||
|
||||
func _input(_event):
|
||||
if Input.is_action_just_pressed("cursor_interact"):
|
||||
GlobalCursorState.fire_interact()
|
||||
sound_beep()
|
||||
if Input.is_action_just_released("cursor_interact"):
|
||||
sound_beep()
|
||||
|
||||
if Input.is_action_just_pressed("cursor_right") or Input.is_action_just_pressed("cursor_left"):
|
||||
sound_color()
|
||||
|
||||
func _process(_delta):
|
||||
set_color()
|
||||
|
||||
func bump():
|
||||
if $Bump.playing:
|
||||
return
|
||||
$Bump.play()
|
||||
|
||||
var locked = false
|
||||
func _physics_process(delta):
|
||||
inc_time_buffer(delta)
|
||||
if locked:
|
||||
return
|
||||
var dir = input_direction()
|
||||
var speed = input_speed()
|
||||
var _slide_vel = move_and_slide(Vector3(speed, speed, speed) * dir, Vector3.UP)
|
||||
var velocity = Vector3(speed, speed, speed) * dir
|
||||
var result = move_and_slide(velocity, Vector3.UP)
|
||||
if velocity != result:
|
||||
bump()
|
||||
|
||||
|
||||
|
||||
func _on_AnimationTree_motion_status(value):
|
||||
locked = value
|
||||
|
|
|
@ -1,7 +1,10 @@
|
|||
[gd_scene load_steps=6 format=2]
|
||||
[gd_scene load_steps=9 format=2]
|
||||
|
||||
[ext_resource path="res://3DCursor.gd" type="Script" id=1]
|
||||
[ext_resource path="res://3DCursorLight.tscn" type="PackedScene" id=2]
|
||||
[ext_resource path="res://assets/audio/bassy_bump.ogg" type="AudioStream" id=3]
|
||||
[ext_resource path="res://assets/audio/beep.ogg" type="AudioStream" id=4]
|
||||
[ext_resource path="res://assets/audio/color.ogg" type="AudioStream" id=5]
|
||||
|
||||
[sub_resource type="SpatialMaterial" id=5]
|
||||
params_diffuse_mode = 4
|
||||
|
@ -41,3 +44,13 @@ transform = Transform( 2, 0, 0, 0, 2, 0, 0, 0, 2, -3, 0, 0 )
|
|||
|
||||
[node name="OmniLight7" parent="." instance=ExtResource( 2 )]
|
||||
transform = Transform( 2, 0, 0, 0, 2, 0, 0, 0, 2, 3, 0, 0 )
|
||||
|
||||
[node name="Bump" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource( 3 )
|
||||
|
||||
[node name="Beep" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource( 4 )
|
||||
|
||||
[node name="Color" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource( 5 )
|
||||
volume_db = 10.0
|
||||
|
|
|
@ -1,6 +1,21 @@
|
|||
extends AnimationTree
|
||||
|
||||
export var TARGET_FRAMERATE = 5
|
||||
onready var fsm: AnimationNodeStateMachinePlayback = get("parameters/playback")
|
||||
|
||||
func _ready():
|
||||
var _err = GlobalCursorState.connect("set_camera_zone", self, "move")
|
||||
|
||||
|
||||
signal motion_status(value)
|
||||
|
||||
func move(where: String):
|
||||
if where == fsm.get_current_node():
|
||||
return
|
||||
fsm.travel(where)
|
||||
emit_signal("motion_status", true)
|
||||
yield(get_tree().create_timer(3), "timeout")
|
||||
emit_signal("motion_status", false)
|
||||
|
||||
var time_buffer = 0.0
|
||||
func _process(delta):
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
extends OmniLight
|
||||
|
||||
var active = false
|
||||
|
||||
func _ready():
|
||||
var _err = GlobalCursorState.connect("set_camera_zone", self, "zone")
|
||||
visible = false
|
||||
|
||||
|
||||
func zone(where: String):
|
||||
if where != "camera_attic_inner":
|
||||
$AnimationPlayer.stop()
|
||||
active = false
|
||||
visible = false
|
||||
return
|
||||
active = true
|
||||
|
||||
func _on_AnimationTree_motion_status(value):
|
||||
if not active:
|
||||
return
|
||||
if value:
|
||||
return
|
||||
$AnimationPlayer.play("light_flicker")
|
|
@ -3,26 +3,33 @@ extends Area
|
|||
export var on_interact_func = ""
|
||||
export var on_enter_func = ""
|
||||
export var on_leave_func = ""
|
||||
export var call_string = ""
|
||||
|
||||
var cursor_is_touching = false
|
||||
|
||||
func _ready():
|
||||
var _err = GlobalCursorState.connect("cursor_interact", self, "check_interact")
|
||||
|
||||
func call_with_value(func_name: String):
|
||||
if call_string:
|
||||
GlobalCursorState.call(func_name, call_string)
|
||||
else:
|
||||
GlobalCursorState.call(func_name)
|
||||
|
||||
func check_interact():
|
||||
if cursor_is_touching and on_interact_func:
|
||||
GlobalCursorState.call(on_interact_func)
|
||||
call_with_value(on_interact_func)
|
||||
|
||||
func _on_CursorInteractArea_body_entered(body):
|
||||
if not GlobalCursorState.is_cursor_collision(body):
|
||||
return
|
||||
cursor_is_touching = true
|
||||
if on_enter_func:
|
||||
GlobalCursorState.call(on_enter_func)
|
||||
call_with_value(on_enter_func)
|
||||
|
||||
func _on_CursorInteractArea_body_exited(body):
|
||||
if not GlobalCursorState.is_cursor_collision(body):
|
||||
return
|
||||
cursor_is_touching = false
|
||||
if on_leave_func:
|
||||
GlobalCursorState.call(on_leave_func)
|
||||
call_with_value(on_leave_func)
|
||||
|
|
|
@ -21,3 +21,12 @@ func get_cursor():
|
|||
#########################################
|
||||
func _on_Interact_leave_disclaimer():
|
||||
var _err = get_tree().change_scene("res://world.tscn")
|
||||
|
||||
|
||||
|
||||
# Camera zones
|
||||
|
||||
signal set_camera_zone(zone)
|
||||
|
||||
func _on_Cursor_set_camera(where: String):
|
||||
emit_signal("set_camera_zone", where)
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
extends Node
|
||||
|
||||
onready var drone_fsm: AnimationNodeStateMachinePlayback = $DroneAudioFSM.get("parameters/playback")
|
||||
|
||||
func _ready():
|
||||
$NormalDrone.play()
|
||||
yield(get_tree().create_timer(.1), "timeout")
|
||||
$SicklyDrone.play()
|
||||
|
||||
|
||||
|
||||
func _on_AnimationTree_motion_status(value):
|
||||
if value:
|
||||
drone_fsm.travel("play_sickly_drone")
|
||||
else:
|
||||
drone_fsm.travel("play_normal_drone")
|
|
@ -0,0 +1,128 @@
|
|||
[gd_scene load_steps=13 format=2]
|
||||
|
||||
[ext_resource path="res://assets/audio/sicky_drone.ogg" type="AudioStream" id=1]
|
||||
[ext_resource path="res://assets/audio/vocal_drone.ogg" type="AudioStream" id=2]
|
||||
[ext_resource path="res://assets/audio/AmbientSound.gd" type="Script" id=3]
|
||||
|
||||
[sub_resource type="Animation" id=1]
|
||||
length = 0.001
|
||||
tracks/0/type = "value"
|
||||
tracks/0/path = NodePath("NormalDrone:volume_db")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/keys = {
|
||||
"times": PoolRealArray( 0 ),
|
||||
"transitions": PoolRealArray( 1 ),
|
||||
"update": 0,
|
||||
"values": [ -10.0 ]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/path = NodePath("SicklyDrone:volume_db")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/keys = {
|
||||
"times": PoolRealArray( 0 ),
|
||||
"transitions": PoolRealArray( 1 ),
|
||||
"update": 0,
|
||||
"values": [ -10.0 ]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id=2]
|
||||
resource_name = "play_normal_drone"
|
||||
tracks/0/type = "value"
|
||||
tracks/0/path = NodePath("NormalDrone:volume_db")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/keys = {
|
||||
"times": PoolRealArray( 0 ),
|
||||
"transitions": PoolRealArray( 1 ),
|
||||
"update": 0,
|
||||
"values": [ -10.0 ]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/path = NodePath("SicklyDrone:volume_db")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/keys = {
|
||||
"times": PoolRealArray( 0 ),
|
||||
"transitions": PoolRealArray( 1 ),
|
||||
"update": 0,
|
||||
"values": [ -50.0 ]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id=3]
|
||||
resource_name = "play_sickly_drone"
|
||||
tracks/0/type = "value"
|
||||
tracks/0/path = NodePath("NormalDrone:volume_db")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/keys = {
|
||||
"times": PoolRealArray( 0 ),
|
||||
"transitions": PoolRealArray( 1 ),
|
||||
"update": 0,
|
||||
"values": [ -50.0 ]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/path = NodePath("SicklyDrone:volume_db")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/keys = {
|
||||
"times": PoolRealArray( 0 ),
|
||||
"transitions": PoolRealArray( 1 ),
|
||||
"update": 0,
|
||||
"values": [ -10.0 ]
|
||||
}
|
||||
|
||||
[sub_resource type="AnimationNodeAnimation" id=4]
|
||||
animation = "play_normal_drone"
|
||||
|
||||
[sub_resource type="AnimationNodeAnimation" id=5]
|
||||
animation = "play_sickly_drone"
|
||||
|
||||
[sub_resource type="AnimationNodeStateMachineTransition" id=6]
|
||||
|
||||
[sub_resource type="AnimationNodeStateMachineTransition" id=7]
|
||||
|
||||
[sub_resource type="AnimationNodeStateMachine" id=8]
|
||||
states/play_normal_drone/node = SubResource( 4 )
|
||||
states/play_normal_drone/position = Vector2( 336, 128 )
|
||||
states/play_sickly_drone/node = SubResource( 5 )
|
||||
states/play_sickly_drone/position = Vector2( 683, 227 )
|
||||
transitions = [ "play_normal_drone", "play_sickly_drone", SubResource( 6 ), "play_sickly_drone", "play_normal_drone", SubResource( 7 ) ]
|
||||
start_node = "play_normal_drone"
|
||||
|
||||
[sub_resource type="AnimationNodeStateMachinePlayback" id=9]
|
||||
|
||||
[node name="AmbientSound" type="Node"]
|
||||
script = ExtResource( 3 )
|
||||
|
||||
[node name="NormalDrone" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource( 2 )
|
||||
volume_db = -10.0
|
||||
|
||||
[node name="SicklyDrone" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource( 1 )
|
||||
volume_db = -10.0
|
||||
|
||||
[node name="DroneAudioAnimation" type="AnimationPlayer" parent="."]
|
||||
anims/RESET = SubResource( 1 )
|
||||
anims/play_normal_drone = SubResource( 2 )
|
||||
anims/play_sickly_drone = SubResource( 3 )
|
||||
|
||||
[node name="DroneAudioFSM" type="AnimationTree" parent="."]
|
||||
tree_root = SubResource( 8 )
|
||||
anim_player = NodePath("../DroneAudioAnimation")
|
||||
active = true
|
||||
parameters/playback = SubResource( 9 )
|
Binary file not shown.
|
@ -0,0 +1,15 @@
|
|||
[remap]
|
||||
|
||||
importer="ogg_vorbis"
|
||||
type="AudioStreamOGGVorbis"
|
||||
path="res://.import/bassy_bump.ogg-efb21ed36009cf312899a2d3e22513e6.oggstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/audio/bassy_bump.ogg"
|
||||
dest_files=[ "res://.import/bassy_bump.ogg-efb21ed36009cf312899a2d3e22513e6.oggstr" ]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0.0
|
Binary file not shown.
|
@ -0,0 +1,15 @@
|
|||
[remap]
|
||||
|
||||
importer="ogg_vorbis"
|
||||
type="AudioStreamOGGVorbis"
|
||||
path="res://.import/beep.ogg-dc3ef6a51669bb14c8d3ed05701e4a93.oggstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/audio/beep.ogg"
|
||||
dest_files=[ "res://.import/beep.ogg-dc3ef6a51669bb14c8d3ed05701e4a93.oggstr" ]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
Binary file not shown.
|
@ -0,0 +1,15 @@
|
|||
[remap]
|
||||
|
||||
importer="ogg_vorbis"
|
||||
type="AudioStreamOGGVorbis"
|
||||
path="res://.import/bump.ogg-b6b5b32ea85cee0c0e584b94a3481d65.oggstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/audio/bump.ogg"
|
||||
dest_files=[ "res://.import/bump.ogg-b6b5b32ea85cee0c0e584b94a3481d65.oggstr" ]
|
||||
|
||||
[params]
|
||||
|
||||
loop=true
|
||||
loop_offset=0
|
Binary file not shown.
|
@ -0,0 +1,15 @@
|
|||
[remap]
|
||||
|
||||
importer="ogg_vorbis"
|
||||
type="AudioStreamOGGVorbis"
|
||||
path="res://.import/color.ogg-ea241d625a2857be82c54e5056fbca40.oggstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/audio/color.ogg"
|
||||
dest_files=[ "res://.import/color.ogg-ea241d625a2857be82c54e5056fbca40.oggstr" ]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
Binary file not shown.
|
@ -0,0 +1,15 @@
|
|||
[remap]
|
||||
|
||||
importer="ogg_vorbis"
|
||||
type="AudioStreamOGGVorbis"
|
||||
path="res://.import/sicky_drone.ogg-bf1e0d419cbb74f272e345e086ba6afd.oggstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/audio/sicky_drone.ogg"
|
||||
dest_files=[ "res://.import/sicky_drone.ogg-bf1e0d419cbb74f272e345e086ba6afd.oggstr" ]
|
||||
|
||||
[params]
|
||||
|
||||
loop=true
|
||||
loop_offset=0
|
Binary file not shown.
|
@ -0,0 +1,15 @@
|
|||
[remap]
|
||||
|
||||
importer="ogg_vorbis"
|
||||
type="AudioStreamOGGVorbis"
|
||||
path="res://.import/vocal_drone.ogg-b1bba3338757e53b92922102d8ec6f2d.oggstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/audio/vocal_drone.ogg"
|
||||
dest_files=[ "res://.import/vocal_drone.ogg-b1bba3338757e53b92922102d8ec6f2d.oggstr" ]
|
||||
|
||||
[params]
|
||||
|
||||
loop=true
|
||||
loop_offset=0
|
|
@ -0,0 +1,39 @@
|
|||
extends Node
|
||||
|
||||
var voice_script = [
|
||||
["the_long", "book"],
|
||||
["the_tall", "book"],
|
||||
["the_door"],
|
||||
["the_clock"],
|
||||
["under_the_bed"],
|
||||
["frog"],
|
||||
["squirrel"],
|
||||
["the_attic"],
|
||||
["the_fridge"],
|
||||
["the_tall", "book"],
|
||||
["under_the_bed"],
|
||||
["the_long", "book"],
|
||||
["behind_the_bookshelf"],
|
||||
]
|
||||
|
||||
export var impatience: float = 5.0
|
||||
|
||||
|
||||
func read_line(line):
|
||||
pass
|
||||
|
||||
var loop = null
|
||||
func start():
|
||||
if loop != null:
|
||||
return
|
||||
loop = script_loop()
|
||||
|
||||
func script_loop():
|
||||
for line in voice_script:
|
||||
read_line(line)
|
||||
while not yield():
|
||||
read_line(line)
|
||||
|
||||
|
||||
func _on_ImpatienceTimer_timeout():
|
||||
script_loop().resume(false)
|
|
@ -0,0 +1,58 @@
|
|||
[gd_scene load_steps=14 format=2]
|
||||
|
||||
[ext_resource path="res://assets/audio/voice_lines/LineReader.gd" type="Script" id=1]
|
||||
[ext_resource path="res://assets/audio/voice_lines/behind_the_bookshelf.ogg" type="AudioStream" id=2]
|
||||
[ext_resource path="res://assets/audio/voice_lines/book.ogg" type="AudioStream" id=3]
|
||||
[ext_resource path="res://assets/audio/voice_lines/frog.ogg" type="AudioStream" id=4]
|
||||
[ext_resource path="res://assets/audio/voice_lines/show_me.ogg" type="AudioStream" id=5]
|
||||
[ext_resource path="res://assets/audio/voice_lines/squirrel.ogg" type="AudioStream" id=6]
|
||||
[ext_resource path="res://assets/audio/voice_lines/the_attic.ogg" type="AudioStream" id=7]
|
||||
[ext_resource path="res://assets/audio/voice_lines/the_clock.ogg" type="AudioStream" id=8]
|
||||
[ext_resource path="res://assets/audio/voice_lines/the_door.ogg" type="AudioStream" id=9]
|
||||
[ext_resource path="res://assets/audio/voice_lines/the_fridge.ogg" type="AudioStream" id=10]
|
||||
[ext_resource path="res://assets/audio/voice_lines/the_long.ogg" type="AudioStream" id=11]
|
||||
[ext_resource path="res://assets/audio/voice_lines/the_tall.ogg" type="AudioStream" id=12]
|
||||
[ext_resource path="res://assets/audio/voice_lines/under_the_bed.ogg" type="AudioStream" id=13]
|
||||
|
||||
[node name="LineReader" type="Node"]
|
||||
script = ExtResource( 1 )
|
||||
|
||||
[node name="book" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource( 3 )
|
||||
|
||||
[node name="frog" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource( 4 )
|
||||
|
||||
[node name="show_me" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource( 5 )
|
||||
|
||||
[node name="squirrel" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource( 6 )
|
||||
|
||||
[node name="the_attic" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource( 7 )
|
||||
|
||||
[node name="the_clock" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource( 8 )
|
||||
|
||||
[node name="the_door" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource( 9 )
|
||||
|
||||
[node name="the_fridge" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource( 10 )
|
||||
|
||||
[node name="the_long" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource( 11 )
|
||||
|
||||
[node name="the_tall" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource( 12 )
|
||||
|
||||
[node name="under_the_bed" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource( 13 )
|
||||
|
||||
[node name="behind_the_bookshelf" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource( 2 )
|
||||
|
||||
[node name="ImpatienceTimer" type="Timer" parent="."]
|
||||
|
||||
[connection signal="timeout" from="ImpatienceTimer" to="." method="_on_ImpatienceTimer_timeout"]
|
Binary file not shown.
|
@ -0,0 +1,15 @@
|
|||
[remap]
|
||||
|
||||
importer="ogg_vorbis"
|
||||
type="AudioStreamOGGVorbis"
|
||||
path="res://.import/behind_the_bookshelf.ogg-a21b7805e8182418c46ec087dd18f9dd.oggstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/audio/voice_lines/behind_the_bookshelf.ogg"
|
||||
dest_files=[ "res://.import/behind_the_bookshelf.ogg-a21b7805e8182418c46ec087dd18f9dd.oggstr" ]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
Binary file not shown.
|
@ -0,0 +1,15 @@
|
|||
[remap]
|
||||
|
||||
importer="ogg_vorbis"
|
||||
type="AudioStreamOGGVorbis"
|
||||
path="res://.import/book.ogg-d7f394d64a887bb8fb9279710f22dd71.oggstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/audio/voice_lines/book.ogg"
|
||||
dest_files=[ "res://.import/book.ogg-d7f394d64a887bb8fb9279710f22dd71.oggstr" ]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
Binary file not shown.
|
@ -0,0 +1,15 @@
|
|||
[remap]
|
||||
|
||||
importer="ogg_vorbis"
|
||||
type="AudioStreamOGGVorbis"
|
||||
path="res://.import/frog.ogg-61032dbb065bd111b735592bb25495b5.oggstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/audio/voice_lines/frog.ogg"
|
||||
dest_files=[ "res://.import/frog.ogg-61032dbb065bd111b735592bb25495b5.oggstr" ]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
Binary file not shown.
|
@ -0,0 +1,15 @@
|
|||
[remap]
|
||||
|
||||
importer="ogg_vorbis"
|
||||
type="AudioStreamOGGVorbis"
|
||||
path="res://.import/show_me.ogg-65a0d169ab1ca4f07b4ac301dd46007c.oggstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/audio/voice_lines/show_me.ogg"
|
||||
dest_files=[ "res://.import/show_me.ogg-65a0d169ab1ca4f07b4ac301dd46007c.oggstr" ]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
Binary file not shown.
|
@ -0,0 +1,15 @@
|
|||
[remap]
|
||||
|
||||
importer="ogg_vorbis"
|
||||
type="AudioStreamOGGVorbis"
|
||||
path="res://.import/squirrel.ogg-39d1b09d2874390274470386ae1c4000.oggstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/audio/voice_lines/squirrel.ogg"
|
||||
dest_files=[ "res://.import/squirrel.ogg-39d1b09d2874390274470386ae1c4000.oggstr" ]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
Binary file not shown.
|
@ -0,0 +1,15 @@
|
|||
[remap]
|
||||
|
||||
importer="ogg_vorbis"
|
||||
type="AudioStreamOGGVorbis"
|
||||
path="res://.import/the_attic.ogg-d9e131136e9e7772d4b3fefa98aa36a4.oggstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/audio/voice_lines/the_attic.ogg"
|
||||
dest_files=[ "res://.import/the_attic.ogg-d9e131136e9e7772d4b3fefa98aa36a4.oggstr" ]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
Binary file not shown.
|
@ -0,0 +1,15 @@
|
|||
[remap]
|
||||
|
||||
importer="ogg_vorbis"
|
||||
type="AudioStreamOGGVorbis"
|
||||
path="res://.import/the_clock.ogg-6558710d350bf1d0561bd6d3ed049019.oggstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/audio/voice_lines/the_clock.ogg"
|
||||
dest_files=[ "res://.import/the_clock.ogg-6558710d350bf1d0561bd6d3ed049019.oggstr" ]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
Binary file not shown.
|
@ -0,0 +1,15 @@
|
|||
[remap]
|
||||
|
||||
importer="ogg_vorbis"
|
||||
type="AudioStreamOGGVorbis"
|
||||
path="res://.import/the_door.ogg-86a3a2d31d5218284b99b143d8edad4d.oggstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/audio/voice_lines/the_door.ogg"
|
||||
dest_files=[ "res://.import/the_door.ogg-86a3a2d31d5218284b99b143d8edad4d.oggstr" ]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
Binary file not shown.
|
@ -0,0 +1,15 @@
|
|||
[remap]
|
||||
|
||||
importer="ogg_vorbis"
|
||||
type="AudioStreamOGGVorbis"
|
||||
path="res://.import/the_fridge.ogg-6a1d61f958de3fbdf43653fba19224df.oggstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/audio/voice_lines/the_fridge.ogg"
|
||||
dest_files=[ "res://.import/the_fridge.ogg-6a1d61f958de3fbdf43653fba19224df.oggstr" ]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
Binary file not shown.
|
@ -0,0 +1,15 @@
|
|||
[remap]
|
||||
|
||||
importer="ogg_vorbis"
|
||||
type="AudioStreamOGGVorbis"
|
||||
path="res://.import/the_long.ogg-d68350c0196598d07f220b47a6e8a5bb.oggstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/audio/voice_lines/the_long.ogg"
|
||||
dest_files=[ "res://.import/the_long.ogg-d68350c0196598d07f220b47a6e8a5bb.oggstr" ]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
Binary file not shown.
|
@ -0,0 +1,15 @@
|
|||
[remap]
|
||||
|
||||
importer="ogg_vorbis"
|
||||
type="AudioStreamOGGVorbis"
|
||||
path="res://.import/the_tall.ogg-b8f927fd270ac40c2920a1be4bc930d1.oggstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/audio/voice_lines/the_tall.ogg"
|
||||
dest_files=[ "res://.import/the_tall.ogg-b8f927fd270ac40c2920a1be4bc930d1.oggstr" ]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
Binary file not shown.
|
@ -0,0 +1,15 @@
|
|||
[remap]
|
||||
|
||||
importer="ogg_vorbis"
|
||||
type="AudioStreamOGGVorbis"
|
||||
path="res://.import/under_the_bed.ogg-ecda76c35b0cace769d0022f08f81678.oggstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/audio/voice_lines/under_the_bed.ogg"
|
||||
dest_files=[ "res://.import/under_the_bed.ogg-ecda76c35b0cace769d0022f08f81678.oggstr" ]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
BIN
godot/assets/room/camera_positions.glb (Stored with Git LFS)
BIN
godot/assets/room/camera_positions.glb (Stored with Git LFS)
Binary file not shown.
|
@ -5,6 +5,6 @@
|
|||
[node name="camera_positions" instance=ExtResource( 1 )]
|
||||
|
||||
[node name="Camera" parent="." index="0"]
|
||||
transform = Transform( -0.761628, -0.222546, 0.608602, 3.72529e-08, 0.939179, 0.343427, -0.648015, 0.261564, -0.715305, -7.44886, 18.7831, -13.0498 )
|
||||
transform = Transform( -0.767553, -0.313861, 0.558887, 7.45058e-08, 0.871917, 0.489653, -0.640986, 0.375835, -0.669243, -12.6719, 16.3714, -6.79586 )
|
||||
fov = 87.2
|
||||
far = 100.0
|
||||
|
|
|
@ -16,6 +16,11 @@ config/icon="res://icon.png"
|
|||
[autoload]
|
||||
|
||||
GlobalCursorState="*res://GlobalCursorState.tscn"
|
||||
LineReader="*res://assets/audio/voice_lines/LineReader.gd"
|
||||
|
||||
[display]
|
||||
|
||||
window/size/fullscreen=true
|
||||
|
||||
[gui]
|
||||
|
||||
|
|
|
@ -54,7 +54,7 @@ margin_bottom = -92.0
|
|||
mouse_filter = 1
|
||||
text = "Welcome to Goodnight Jellybean! We're excited to have you join us on this educational adventure.
|
||||
|
||||
We will be interacting with our virutal environment using FunMouse (tm). Simply use the left and right mouse buttons to change the direction of the cursor and use the scroll wheel to move the cursor in its current direction. interact with nearby objects by pressing the middle mouse button.
|
||||
We will be interacting with our virutal environment using FunMouse (tm). Simply use the left and right mouse buttons to change the direction of the cursor and use the scroll wheel to move the cursor in its current direction. Interact with nearby objects by pressing the middle mouse button.
|
||||
|
||||
Don't have a mouse with a scroll wheel? You can also use the arrow keys and space bar to navigate and interact with the game. However, your child will be missing out on learning an important skill.
|
||||
|
||||
|
@ -73,7 +73,7 @@ environment = SubResource( 2 )
|
|||
|
||||
[node name="MeshInstance" type="MeshInstance" parent="."]
|
||||
transform = Transform( 3, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0 )
|
||||
layers = 524288
|
||||
layers = 0
|
||||
material_override = SubResource( 9 )
|
||||
mesh = SubResource( 4 )
|
||||
skeleton = NodePath("../CanvasLayer/Control/Label")
|
||||
|
@ -84,6 +84,7 @@ skeleton = NodePath("../CanvasLayer/Control/Label")
|
|||
shape = SubResource( 5 )
|
||||
|
||||
[node name="3DCursor" parent="." instance=ExtResource( 1 )]
|
||||
transform = Transform( 0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, -0.402443, 2.04589 )
|
||||
KB_ACTIONS_PER_SECOND = 6.0
|
||||
interact_brightness = 100.0
|
||||
|
||||
|
|
|
@ -0,0 +1,77 @@
|
|||
[gd_scene load_steps=7 format=2]
|
||||
|
||||
[ext_resource path="res://3DCursor.tscn" type="PackedScene" id=1]
|
||||
|
||||
[sub_resource type="Theme" id=1]
|
||||
|
||||
[sub_resource type="Environment" id=2]
|
||||
background_mode = 1
|
||||
background_energy = 16.0
|
||||
glow_levels/1 = true
|
||||
glow_levels/2 = true
|
||||
glow_levels/4 = true
|
||||
glow_levels/6 = true
|
||||
glow_levels/7 = true
|
||||
glow_strength = 0.89
|
||||
glow_bloom = 1.0
|
||||
glow_blend_mode = 0
|
||||
glow_high_quality = true
|
||||
|
||||
[sub_resource type="SpatialMaterial" id=9]
|
||||
params_cull_mode = 1
|
||||
|
||||
[sub_resource type="CubeMesh" id=4]
|
||||
|
||||
[sub_resource type="ConcavePolygonShape" id=5]
|
||||
data = PoolVector3Array( -1, 1, 1, 1, 1, 1, -1, -1, 1, 1, 1, 1, 1, -1, 1, -1, -1, 1, 1, 1, -1, -1, 1, -1, 1, -1, -1, -1, 1, -1, -1, -1, -1, 1, -1, -1, 1, 1, 1, 1, 1, -1, 1, -1, 1, 1, 1, -1, 1, -1, -1, 1, -1, 1, -1, 1, -1, -1, 1, 1, -1, -1, -1, -1, 1, 1, -1, -1, 1, -1, -1, -1, 1, 1, 1, -1, 1, 1, 1, 1, -1, -1, 1, 1, -1, 1, -1, 1, 1, -1, -1, -1, 1, 1, -1, 1, -1, -1, -1, 1, -1, 1, 1, -1, -1, -1, -1, -1 )
|
||||
|
||||
[node name="FinishedScreen" type="Spatial"]
|
||||
|
||||
[node name="CanvasLayer" type="CanvasLayer" parent="."]
|
||||
|
||||
[node name="Control" type="Control" parent="CanvasLayer"]
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
mouse_filter = 1
|
||||
theme = SubResource( 1 )
|
||||
|
||||
[node name="Label" type="Label" parent="CanvasLayer/Control"]
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
margin_left = 31.0
|
||||
margin_top = 22.0
|
||||
margin_right = -168.0
|
||||
margin_bottom = -92.0
|
||||
mouse_filter = 1
|
||||
text = "Congratulations on completing Goodnight Jellybean, brought to you by SoftWaves!
|
||||
|
||||
We hope you had fun using FunMouse(tm) and learning about all the different topics in the game. If you are feeling nauseous as a result of playing the game,, remember to take deep breaths and find a quiet place to rest.
|
||||
|
||||
Thank you for playing! If you would like more fun learning, please insert CD 2 for more educational adventures from SoftWaves or order a copy of our catalog for more educational fun! Please write to us at Softwaves HQ, 123 Fun Learning Lane, Funville, USA 12345 and include a $5 bill to request a copy of our games catalog."
|
||||
autowrap = true
|
||||
|
||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
|
||||
environment = SubResource( 2 )
|
||||
|
||||
[node name="MeshInstance" type="MeshInstance" parent="."]
|
||||
transform = Transform( 3, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0 )
|
||||
layers = 0
|
||||
material_override = SubResource( 9 )
|
||||
mesh = SubResource( 4 )
|
||||
skeleton = NodePath("../CanvasLayer/Control/Label")
|
||||
|
||||
[node name="StaticBody" type="StaticBody" parent="MeshInstance"]
|
||||
|
||||
[node name="CollisionShape" type="CollisionShape" parent="MeshInstance/StaticBody"]
|
||||
shape = SubResource( 5 )
|
||||
|
||||
[node name="3DCursor" parent="." instance=ExtResource( 1 )]
|
||||
KB_ACTIONS_PER_SECOND = 6.0
|
||||
interact_brightness = 100.0
|
||||
|
||||
[node name="Camera" type="Camera" parent="."]
|
||||
transform = Transform( 0.710849, -0.253477, 0.656082, 0, 0.932803, 0.360388, -0.703345, -0.256181, 0.663082, 5.46264, 2.36601, 5.69697 )
|
||||
|
||||
[node name="DirectionalLight" type="DirectionalLight" parent="."]
|
||||
transform = Transform( 0.969906, 0, 0.24348, 0, 1, 0, -0.24348, 0, 0.969906, -0.095212, 0.028264, 4.01219 )
|
||||
light_cull_mask = 4294443007
|
106
godot/world.tscn
106
godot/world.tscn
|
@ -1,10 +1,13 @@
|
|||
[gd_scene load_steps=25 format=2]
|
||||
[gd_scene load_steps=34 format=2]
|
||||
|
||||
[ext_resource path="res://assets/effects/dithering/CanvasLayer.tscn" type="PackedScene" id=1]
|
||||
[ext_resource path="res://assets/room/environment.tscn" type="PackedScene" id=2]
|
||||
[ext_resource path="res://3DCursor.tscn" type="PackedScene" id=3]
|
||||
[ext_resource path="res://assets/room/camera_positions.tscn" type="PackedScene" id=4]
|
||||
[ext_resource path="res://AnimationTree.gd" type="Script" id=5]
|
||||
[ext_resource path="res://CursorInteractArea.tscn" type="PackedScene" id=6]
|
||||
[ext_resource path="res://assets/audio/AmbientSound.tscn" type="PackedScene" id=7]
|
||||
[ext_resource path="res://AtticAmberLight.gd" type="Script" id=8]
|
||||
|
||||
[sub_resource type="Environment" id=1]
|
||||
background_mode = 1
|
||||
|
@ -15,6 +18,9 @@ animation = "camera_attic_inner"
|
|||
[sub_resource type="AnimationNodeAnimation" id=4]
|
||||
animation = "camera_bookcase"
|
||||
|
||||
[sub_resource type="AnimationNodeAnimation" id=23]
|
||||
animation = "camera_bookshelf_secret"
|
||||
|
||||
[sub_resource type="AnimationNodeAnimation" id=10]
|
||||
animation = "camera_outer_attic"
|
||||
|
||||
|
@ -57,20 +63,52 @@ xfade_time = 3.0
|
|||
[sub_resource type="AnimationNodeStateMachineTransition" id=22]
|
||||
xfade_time = 3.0
|
||||
|
||||
[sub_resource type="AnimationNodeStateMachineTransition" id=24]
|
||||
xfade_time = 3.0
|
||||
|
||||
[sub_resource type="AnimationNodeStateMachineTransition" id=25]
|
||||
xfade_time = 3.0
|
||||
|
||||
[sub_resource type="AnimationNodeStateMachineTransition" id=26]
|
||||
xfade_time = 3.0
|
||||
|
||||
[sub_resource type="AnimationNodeStateMachineTransition" id=27]
|
||||
xfade_time = 3.0
|
||||
|
||||
[sub_resource type="AnimationNodeStateMachine" id=2]
|
||||
states/camera_attic_inner/node = SubResource( 9 )
|
||||
states/camera_attic_inner/position = Vector2( 788, 309 )
|
||||
states/camera_bookcase/node = SubResource( 4 )
|
||||
states/camera_bookcase/position = Vector2( 706, 78 )
|
||||
states/camera_bookshelf_secret/node = SubResource( 23 )
|
||||
states/camera_bookshelf_secret/position = Vector2( 246, 6 )
|
||||
states/camera_outer_attic/node = SubResource( 10 )
|
||||
states/camera_outer_attic/position = Vector2( 414, 309 )
|
||||
states/camera_outer_attic/position = Vector2( 417, 324 )
|
||||
states/camera_pos_corner/node = SubResource( 8 )
|
||||
states/camera_pos_corner/position = Vector2( 243, 157 )
|
||||
transitions = [ "camera_pos_corner", "camera_bookcase", SubResource( 11 ), "camera_outer_attic", "camera_pos_corner", SubResource( 12 ), "camera_outer_attic", "camera_bookcase", SubResource( 13 ), "camera_outer_attic", "camera_attic_inner", SubResource( 14 ), "camera_pos_corner", "camera_outer_attic", SubResource( 15 ), "camera_pos_corner", "camera_attic_inner", SubResource( 16 ), "camera_bookcase", "camera_pos_corner", SubResource( 17 ), "camera_bookcase", "camera_attic_inner", SubResource( 18 ), "camera_bookcase", "camera_outer_attic", SubResource( 19 ), "camera_attic_inner", "camera_bookcase", SubResource( 20 ), "camera_attic_inner", "camera_outer_attic", SubResource( 21 ), "camera_attic_inner", "camera_pos_corner", SubResource( 22 ) ]
|
||||
states/camera_pos_corner/position = Vector2( 230, 169 )
|
||||
transitions = [ "camera_pos_corner", "camera_bookcase", SubResource( 11 ), "camera_outer_attic", "camera_pos_corner", SubResource( 12 ), "camera_outer_attic", "camera_bookcase", SubResource( 13 ), "camera_outer_attic", "camera_attic_inner", SubResource( 14 ), "camera_pos_corner", "camera_outer_attic", SubResource( 15 ), "camera_pos_corner", "camera_attic_inner", SubResource( 16 ), "camera_bookcase", "camera_pos_corner", SubResource( 17 ), "camera_bookcase", "camera_attic_inner", SubResource( 18 ), "camera_bookcase", "camera_outer_attic", SubResource( 19 ), "camera_attic_inner", "camera_bookcase", SubResource( 20 ), "camera_attic_inner", "camera_outer_attic", SubResource( 21 ), "camera_attic_inner", "camera_pos_corner", SubResource( 22 ), "camera_pos_corner", "camera_bookshelf_secret", SubResource( 24 ), "camera_bookshelf_secret", "camera_pos_corner", SubResource( 25 ), "camera_bookshelf_secret", "camera_bookcase", SubResource( 26 ), "camera_bookcase", "camera_bookshelf_secret", SubResource( 27 ) ]
|
||||
start_node = "camera_pos_corner"
|
||||
graph_offset = Vector2( -64, 18 )
|
||||
|
||||
[sub_resource type="AnimationNodeStateMachinePlayback" id=3]
|
||||
|
||||
[sub_resource type="Animation" id=28]
|
||||
resource_name = "light_flicker"
|
||||
length = 1.263
|
||||
loop = true
|
||||
tracks/0/type = "value"
|
||||
tracks/0/path = NodePath(".:visible")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/keys = {
|
||||
"times": PoolRealArray( 0.1, 0.3, 0.5, 1.5, 1.6, 2.3, 2.5, 3.7, 3.9, 4.6, 5, 5.2, 7.8, 8.2, 11.7 ),
|
||||
"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ),
|
||||
"update": 1,
|
||||
"values": [ true, false, true, false, true, true, true, false, true, false, false, true, false, true, true ]
|
||||
}
|
||||
|
||||
[node name="Spatial" type="Spatial"]
|
||||
|
||||
[node name="CanvasLayer" parent="." instance=ExtResource( 1 )]
|
||||
|
@ -107,12 +145,6 @@ KB_ACTIONS_PER_SECOND = 6.0
|
|||
|
||||
[node name="camera_positions" parent="." instance=ExtResource( 4 )]
|
||||
|
||||
[node name="Camera" parent="camera_positions" index="0"]
|
||||
transform = Transform( -0.996629, -0.00929657, 0.0815153, 0, 0.993559, 0.113312, -0.0820437, 0.11293, -0.99021, 0.178344, 4.60072, 0.331739 )
|
||||
|
||||
[node name="AnimationPlayer" parent="camera_positions" index="1"]
|
||||
autoplay = "camera_pos_corner"
|
||||
|
||||
[node name="AnimationTree" type="AnimationTree" parent="."]
|
||||
tree_root = SubResource( 2 )
|
||||
anim_player = NodePath("../camera_positions/AnimationPlayer")
|
||||
|
@ -121,4 +153,58 @@ process_mode = 2
|
|||
parameters/playback = SubResource( 3 )
|
||||
script = ExtResource( 5 )
|
||||
|
||||
[node name="CameraMoveZones" type="Spatial" parent="."]
|
||||
|
||||
[node name="BookshelfEnter" parent="CameraMoveZones" instance=ExtResource( 6 )]
|
||||
transform = Transform( 1.88241, 0, 0, 0, 1.41215, 0, 0, 0, 1.8099, 0, 4.13633, 3.52765 )
|
||||
on_enter_func = "_on_Cursor_set_camera"
|
||||
call_string = "camera_bookcase"
|
||||
|
||||
[node name="BookshelfLeave" parent="CameraMoveZones/BookshelfEnter" instance=ExtResource( 6 )]
|
||||
transform = Transform( 1.31595, 0, 0, 0, 1.36796, 0, 0, 0, 1.32271, 0, 0, 0 )
|
||||
on_leave_func = "_on_Cursor_set_camera"
|
||||
call_string = "camera_pos_corner"
|
||||
|
||||
[node name="OuterAtticEnter" parent="CameraMoveZones" instance=ExtResource( 6 )]
|
||||
transform = Transform( 1, 0, 0, 0, 1.46013, 0, 0, 0, 1.2653, -2.46345, 9.85499, -3.18314 )
|
||||
on_enter_func = "_on_Cursor_set_camera"
|
||||
call_string = "camera_outer_attic"
|
||||
|
||||
[node name="OuterAtticLeave" parent="CameraMoveZones/OuterAtticEnter" instance=ExtResource( 6 )]
|
||||
transform = Transform( 19.4492, 0, 0, 0, 4.36306, 0, 0, 0, 5.15836, -15.3042, 3.71776, 0 )
|
||||
on_leave_func = "_on_Cursor_set_camera"
|
||||
call_string = "camera_pos_corner"
|
||||
|
||||
[node name="UpperAtticEnter" parent="CameraMoveZones" instance=ExtResource( 6 )]
|
||||
transform = Transform( 6.28323, 0, 0, 0, 4.7198, 0, 0, 0, 7.91118, -23.9917, 13.7811, 0 )
|
||||
on_enter_func = "_on_Cursor_set_camera"
|
||||
call_string = "camera_attic_inner"
|
||||
|
||||
[node name="UpperAtticLeave" parent="CameraMoveZones" instance=ExtResource( 6 )]
|
||||
transform = Transform( 10.8129, 0, 0, 0, 4.7198, 0, 0, 0, 7.91118, -26.7224, 13.7811, 0 )
|
||||
on_leave_func = "_on_Cursor_set_camera"
|
||||
call_string = "camera_outer_attic"
|
||||
|
||||
[node name="AmbientSound" parent="." instance=ExtResource( 7 )]
|
||||
|
||||
[node name="Attic" type="Spatial" parent="."]
|
||||
|
||||
[node name="AtticAmberLight" type="OmniLight" parent="Attic"]
|
||||
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -23.8074, 13.5384, -0.81872 )
|
||||
light_color = Color( 0.796078, 0.627451, 0.25098, 1 )
|
||||
light_energy = 6.0
|
||||
light_indirect_energy = 1.306
|
||||
light_cull_mask = 4294443007
|
||||
shadow_enabled = true
|
||||
omni_range = 4.0
|
||||
omni_attenuation = 2.73208
|
||||
script = ExtResource( 8 )
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="Attic/AtticAmberLight"]
|
||||
anims/light_flicker = SubResource( 28 )
|
||||
|
||||
[connection signal="motion_status" from="AnimationTree" to="3DCursor" method="_on_AnimationTree_motion_status"]
|
||||
[connection signal="motion_status" from="AnimationTree" to="AmbientSound" method="_on_AnimationTree_motion_status"]
|
||||
[connection signal="motion_status" from="AnimationTree" to="Attic/AtticAmberLight" method="_on_AnimationTree_motion_status"]
|
||||
|
||||
[editable path="camera_positions"]
|
||||
|
|
Binary file not shown.
Loading…
Reference in New Issue