empty
This commit is contained in:
parent
edb10387e0
commit
46e1de9791
232 changed files with 0 additions and 8637 deletions
|
@ -1,93 +0,0 @@
|
|||
extends Node3D
|
||||
|
||||
var animation_player : AnimationPlayer
|
||||
var animation_tree : AnimationTree
|
||||
var blend_tree : AnimationNodeBlendTree
|
||||
|
||||
var movement_states : Dictionary
|
||||
|
||||
func _ready():
|
||||
animation_player = $AnimationPlayer
|
||||
|
||||
animation_tree = AnimationTree.new()
|
||||
animation_tree.anim_player = animation_player.get_path()
|
||||
add_child(animation_tree)
|
||||
|
||||
animation_tree.tree_root = AnimationNodeBlendTree.new()
|
||||
animation_tree.active = true
|
||||
blend_tree = animation_tree.tree_root as AnimationNodeBlendTree
|
||||
|
||||
animation_player.speed_scale = 0
|
||||
|
||||
var animations = animation_player.get_animation_list()
|
||||
|
||||
for animation in animations:
|
||||
movement_states[animation] = [false, 0.0, 0.0, 0.0]
|
||||
|
||||
var prev_name = "Anim_" + animations[0]
|
||||
var old_time_name = "Time_" + animations[0]
|
||||
var old_seek_name = "Seek_" + animations[0]
|
||||
|
||||
var prev_anim_node := AnimationNodeAnimation.new()
|
||||
prev_anim_node.animation = animations[0]
|
||||
blend_tree.add_node(prev_name, prev_anim_node)
|
||||
|
||||
var old_time_node := AnimationNodeTimeScale.new()
|
||||
blend_tree.add_node(old_time_name,old_time_node)
|
||||
|
||||
var _old_seek_node := AnimationNodeTimeSeek.new()
|
||||
blend_tree.add_node(old_seek_name,_old_seek_node)
|
||||
|
||||
blend_tree.connect_node(old_time_name,0,prev_name)
|
||||
blend_tree.connect_node(old_seek_name,0,old_time_name)
|
||||
prev_name = old_seek_name
|
||||
|
||||
for i in range(1, animations.size()):
|
||||
var anim_name = "Anim_" + animations[i]
|
||||
var add_name = "Add_" + animations[i]
|
||||
var time_name = "Time_" + animations[i]
|
||||
var seek_name = "Seek_" + animations[i]
|
||||
|
||||
var new_anim_node := AnimationNodeAnimation.new()
|
||||
new_anim_node.animation = animations[i]
|
||||
blend_tree.add_node(anim_name, new_anim_node)
|
||||
|
||||
var time_node := AnimationNodeTimeScale.new()
|
||||
blend_tree.add_node(time_name,time_node)
|
||||
|
||||
var seek_node := AnimationNodeTimeSeek.new()
|
||||
blend_tree.add_node(seek_name,seek_node)
|
||||
|
||||
var add_node := AnimationNodeAdd2.new()
|
||||
blend_tree.add_node(add_name, add_node)
|
||||
|
||||
blend_tree.connect_node(time_name, 0, anim_name)
|
||||
blend_tree.connect_node(seek_name, 0, time_name)
|
||||
blend_tree.connect_node(add_name, 0, prev_name)
|
||||
blend_tree.connect_node(add_name, 1, seek_name)
|
||||
prev_name = add_name
|
||||
|
||||
blend_tree.connect_node("output", 0, prev_name)
|
||||
|
||||
for i in range(0, animations.size()):
|
||||
animation_tree.set("parameters/Add_" + str(animations[i]) + "/add_amount", 1.0)
|
||||
animation_tree.set("parameters/Seek_" + str(animations[i]) + "/seek_request", 0)
|
||||
animation_tree.set("parameters/Time_" + str(animations[i]) + "/scale", 0)
|
||||
|
||||
func _physics_process(delta: float) -> void:
|
||||
for key in movement_states:
|
||||
var anim_path = "parameters/Seek_" + key + "/seek_request"
|
||||
var state = movement_states[key]
|
||||
if (state[0]):
|
||||
state[1] = clamp(float(state[1]) + (delta * state[2]), 0, 1)
|
||||
else:
|
||||
state[1] = clamp(float(state[1]) - (delta * state[3]), 0, 1)
|
||||
animation_tree.set(anim_path, state[1])
|
||||
|
||||
func _movement_in(movement, rate):
|
||||
movement_states[movement][0] = true
|
||||
movement_states[movement][2] = rate
|
||||
|
||||
func _movement_out(movement, rate):
|
||||
movement_states[movement][0] = false
|
||||
movement_states[movement][3] = rate
|
|
@ -1 +0,0 @@
|
|||
uid://bu68w4jnh0n2b
|
|
@ -1,10 +0,0 @@
|
|||
extends Control
|
||||
|
||||
@export var camera : String
|
||||
@export var base_scene_path : String
|
||||
|
||||
func _ready() -> void:
|
||||
$Button.text = camera
|
||||
|
||||
func _on_button_pressed() -> void:
|
||||
get_node(base_scene_path + camera).current = true;
|
|
@ -1 +0,0 @@
|
|||
uid://dfoog0y2bh7tk
|
|
@ -1,666 +0,0 @@
|
|||
extends Node
|
||||
|
||||
var CyberChuck = {
|
||||
"Chuck E. Hat":
|
||||
{
|
||||
"Derby":
|
||||
{
|
||||
"Chuck/Chuck/Skeleton3D/Avenger Hat": false,
|
||||
"Chuck/Chuck/Skeleton3D/Cool Chuck Hat": false,
|
||||
"Chuck/Chuck/Skeleton3D/Derby": true,
|
||||
"Chuck/Chuck/Skeleton3D/Tux Derby": false,
|
||||
"Chuck/Chuck/Skeleton3D/Blue Cool Chuck Hat": false,
|
||||
},
|
||||
"Tux Derby":
|
||||
{
|
||||
"Chuck/Chuck/Skeleton3D/Avenger Hat": false,
|
||||
"Chuck/Chuck/Skeleton3D/Cool Chuck Hat": false,
|
||||
"Chuck/Chuck/Skeleton3D/Derby": false,
|
||||
"Chuck/Chuck/Skeleton3D/Tux Derby": true,
|
||||
"Chuck/Chuck/Skeleton3D/Blue Cool Chuck Hat": false,
|
||||
},
|
||||
"Cool Chuck":
|
||||
{
|
||||
"Chuck/Chuck/Skeleton3D/Avenger Hat": false,
|
||||
"Chuck/Chuck/Skeleton3D/Cool Chuck Hat": true,
|
||||
"Chuck/Chuck/Skeleton3D/Derby": false,
|
||||
"Chuck/Chuck/Skeleton3D/Tux Derby": false,
|
||||
"Chuck/Chuck/Skeleton3D/Blue Cool Chuck Hat": false,
|
||||
},
|
||||
"Cool Chuck (Blue)":
|
||||
{
|
||||
"Chuck/Chuck/Skeleton3D/Avenger Hat": false,
|
||||
"Chuck/Chuck/Skeleton3D/Cool Chuck Hat": false,
|
||||
"Chuck/Chuck/Skeleton3D/Derby": false,
|
||||
"Chuck/Chuck/Skeleton3D/Tux Derby": false,
|
||||
"Chuck/Chuck/Skeleton3D/Blue Cool Chuck Hat": true,
|
||||
},
|
||||
"Avenger":
|
||||
{
|
||||
"Chuck/Chuck/Skeleton3D/Avenger Hat": true,
|
||||
"Chuck/Chuck/Skeleton3D/Cool Chuck Hat": false,
|
||||
"Chuck/Chuck/Skeleton3D/Derby": false,
|
||||
"Chuck/Chuck/Skeleton3D/Tux Derby": false,
|
||||
"Chuck/Chuck/Skeleton3D/Blue Cool Chuck Hat": false,
|
||||
},
|
||||
"None":
|
||||
{
|
||||
"Chuck/Chuck/Skeleton3D/Avenger Hat": false,
|
||||
"Chuck/Chuck/Skeleton3D/Cool Chuck Hat": false,
|
||||
"Chuck/Chuck/Skeleton3D/Derby": false,
|
||||
"Chuck/Chuck/Skeleton3D/Tux Derby": false,
|
||||
"Chuck/Chuck/Skeleton3D/Blue Cool Chuck Hat": false,
|
||||
}
|
||||
},
|
||||
|
||||
"Chuck E. Shirt":
|
||||
{
|
||||
"Yellow Checker Vest":
|
||||
{
|
||||
"Chuck/Chuck/Skeleton3D/Rockstar Shirt": false,
|
||||
"Chuck/Chuck/Skeleton3D/Avenger Shirt": false,
|
||||
"Chuck/Chuck/Skeleton3D/Cool Chuck Shirt": false,
|
||||
"Chuck/Chuck/Skeleton3D/Black Bowtie": true,
|
||||
"Chuck/Chuck/Skeleton3D/Buttons": true,
|
||||
"Chuck/Chuck/Skeleton3D/Vest Trim": true,
|
||||
"Chuck/Chuck/Skeleton3D/Yellow Checker Vest": true,
|
||||
"Chuck/Chuck/Skeleton3D/Rocker Vest": false,
|
||||
"Chuck/Chuck/Skeleton3D/Red Bowtie": false,
|
||||
"Chuck/Chuck/Skeleton3D/Tux Button": false,
|
||||
"Chuck/Chuck/Skeleton3D/Lapel": false,
|
||||
"Chuck/Chuck/Skeleton3D/Tux Base": false,
|
||||
},
|
||||
"Red Vest":
|
||||
{
|
||||
"Chuck/Chuck/Skeleton3D/Rockstar Shirt": false,
|
||||
"Chuck/Chuck/Skeleton3D/Avenger Shirt": false,
|
||||
"Chuck/Chuck/Skeleton3D/Cool Chuck Shirt": false,
|
||||
"Chuck/Chuck/Skeleton3D/Black Bowtie": true,
|
||||
"Chuck/Chuck/Skeleton3D/Buttons": true,
|
||||
"Chuck/Chuck/Skeleton3D/Vest Trim": true,
|
||||
"Chuck/Chuck/Skeleton3D/Yellow Checker Vest": false,
|
||||
"Chuck/Chuck/Skeleton3D/Rocker Vest": true,
|
||||
"Chuck/Chuck/Skeleton3D/Red Bowtie": false,
|
||||
"Chuck/Chuck/Skeleton3D/Tux Button": false,
|
||||
"Chuck/Chuck/Skeleton3D/Lapel": false,
|
||||
"Chuck/Chuck/Skeleton3D/Tux Base": false,
|
||||
},
|
||||
"Tux":
|
||||
{
|
||||
"Chuck/Chuck/Skeleton3D/Rockstar Shirt": false,
|
||||
"Chuck/Chuck/Skeleton3D/Avenger Shirt": false,
|
||||
"Chuck/Chuck/Skeleton3D/Cool Chuck Shirt": false,
|
||||
"Chuck/Chuck/Skeleton3D/Black Bowtie": false,
|
||||
"Chuck/Chuck/Skeleton3D/Buttons": false,
|
||||
"Chuck/Chuck/Skeleton3D/Vest Trim": false,
|
||||
"Chuck/Chuck/Skeleton3D/Yellow Checker Vest": false,
|
||||
"Chuck/Chuck/Skeleton3D/Rocker Vest": false,
|
||||
"Chuck/Chuck/Skeleton3D/Red Bowtie": true,
|
||||
"Chuck/Chuck/Skeleton3D/Tux Button": true,
|
||||
"Chuck/Chuck/Skeleton3D/Lapel": true,
|
||||
"Chuck/Chuck/Skeleton3D/Tux Base": true,
|
||||
},
|
||||
"Cool Chuck Shirt":
|
||||
{
|
||||
"Chuck/Chuck/Skeleton3D/Rockstar Shirt": false,
|
||||
"Chuck/Chuck/Skeleton3D/Avenger Shirt": false,
|
||||
"Chuck/Chuck/Skeleton3D/Cool Chuck Shirt": true,
|
||||
"Chuck/Chuck/Skeleton3D/Black Bowtie": false,
|
||||
"Chuck/Chuck/Skeleton3D/Buttons": false,
|
||||
"Chuck/Chuck/Skeleton3D/Vest Trim": false,
|
||||
"Chuck/Chuck/Skeleton3D/Yellow Checker Vest": false,
|
||||
"Chuck/Chuck/Skeleton3D/Rocker Vest": false,
|
||||
"Chuck/Chuck/Skeleton3D/Red Bowtie": false,
|
||||
"Chuck/Chuck/Skeleton3D/Tux Button": false,
|
||||
"Chuck/Chuck/Skeleton3D/Lapel": false,
|
||||
"Chuck/Chuck/Skeleton3D/Tux Base": false,
|
||||
},
|
||||
"Avenger Shirt":
|
||||
{
|
||||
"Chuck/Chuck/Skeleton3D/Rockstar Shirt": false,
|
||||
"Chuck/Chuck/Skeleton3D/Avenger Shirt": true,
|
||||
"Chuck/Chuck/Skeleton3D/Cool Chuck Shirt": false,
|
||||
"Chuck/Chuck/Skeleton3D/Black Bowtie": false,
|
||||
"Chuck/Chuck/Skeleton3D/Buttons": false,
|
||||
"Chuck/Chuck/Skeleton3D/Vest Trim": false,
|
||||
"Chuck/Chuck/Skeleton3D/Yellow Checker Vest": false,
|
||||
"Chuck/Chuck/Skeleton3D/Rocker Vest": false,
|
||||
"Chuck/Chuck/Skeleton3D/Red Bowtie": false,
|
||||
"Chuck/Chuck/Skeleton3D/Tux Button": false,
|
||||
"Chuck/Chuck/Skeleton3D/Lapel": false,
|
||||
"Chuck/Chuck/Skeleton3D/Tux Base": false,
|
||||
},
|
||||
"Rockstar Shirt":
|
||||
{
|
||||
"Chuck/Chuck/Skeleton3D/Rockstar Shirt": true,
|
||||
"Chuck/Chuck/Skeleton3D/Avenger Shirt": false,
|
||||
"Chuck/Chuck/Skeleton3D/Cool Chuck Shirt": false,
|
||||
"Chuck/Chuck/Skeleton3D/Black Bowtie": false,
|
||||
"Chuck/Chuck/Skeleton3D/Buttons": false,
|
||||
"Chuck/Chuck/Skeleton3D/Vest Trim": false,
|
||||
"Chuck/Chuck/Skeleton3D/Yellow Checker Vest": false,
|
||||
"Chuck/Chuck/Skeleton3D/Rocker Vest": false,
|
||||
"Chuck/Chuck/Skeleton3D/Red Bowtie": false,
|
||||
"Chuck/Chuck/Skeleton3D/Tux Button": false,
|
||||
"Chuck/Chuck/Skeleton3D/Lapel": false,
|
||||
"Chuck/Chuck/Skeleton3D/Tux Base": false,
|
||||
}
|
||||
},
|
||||
|
||||
"Chuck E. Mask":
|
||||
{
|
||||
"PTT":
|
||||
{
|
||||
"Chuck/Chuck/Skeleton3D/PTT Ears": true,
|
||||
"Chuck/Chuck/Skeleton3D/PTT Jaw": true,
|
||||
"Chuck/Chuck/Skeleton3D/PTT Muzzle": true,
|
||||
"Chuck/Chuck/Skeleton3D/Modern Ears": false,
|
||||
"Chuck/Chuck/Skeleton3D/Modern Jaw": false,
|
||||
"Chuck/Chuck/Skeleton3D/Modern Muzzle": false,
|
||||
"Chuck/Chuck/Skeleton3D/Northridge Ears": false,
|
||||
},
|
||||
"Modern":
|
||||
{
|
||||
"Chuck/Chuck/Skeleton3D/PTT Ears": false,
|
||||
"Chuck/Chuck/Skeleton3D/PTT Jaw": false,
|
||||
"Chuck/Chuck/Skeleton3D/PTT Muzzle": false,
|
||||
"Chuck/Chuck/Skeleton3D/Modern Ears": true,
|
||||
"Chuck/Chuck/Skeleton3D/Modern Jaw": true,
|
||||
"Chuck/Chuck/Skeleton3D/Modern Muzzle": true,
|
||||
"Chuck/Chuck/Skeleton3D/Northridge Ears": false,
|
||||
},
|
||||
"Northridge":
|
||||
{
|
||||
"Chuck/Chuck/Skeleton3D/PTT Ears": false,
|
||||
"Chuck/Chuck/Skeleton3D/PTT Jaw": false,
|
||||
"Chuck/Chuck/Skeleton3D/PTT Muzzle": false,
|
||||
"Chuck/Chuck/Skeleton3D/Modern Ears": false,
|
||||
"Chuck/Chuck/Skeleton3D/Modern Jaw": true,
|
||||
"Chuck/Chuck/Skeleton3D/Modern Muzzle": true,
|
||||
"Chuck/Chuck/Skeleton3D/Northridge Ears": true,
|
||||
},
|
||||
},
|
||||
|
||||
"Chuck E. Eyelids":
|
||||
{
|
||||
"Blue":
|
||||
{
|
||||
"Chuck/Chuck/Skeleton3D/Blue Eyelids": true,
|
||||
"Chuck/Chuck/Skeleton3D/Grey Eyelids": false,
|
||||
},
|
||||
"Grey":
|
||||
{
|
||||
"Chuck/Chuck/Skeleton3D/Blue Eyelids": false,
|
||||
"Chuck/Chuck/Skeleton3D/Grey Eyelids": true,
|
||||
},
|
||||
},
|
||||
|
||||
"Chuck E. Legs":
|
||||
{
|
||||
"None":
|
||||
{
|
||||
"Chuck/Chuck/Skeleton3D/Stand": true,
|
||||
"Chuck/Chuck/Skeleton3D/Legs": false,
|
||||
"Chuck/Chuck/Skeleton3D/Feet": false,
|
||||
},
|
||||
"Normal":
|
||||
{
|
||||
"Chuck/Chuck/Skeleton3D/Stand": false,
|
||||
"Chuck/Chuck/Skeleton3D/Legs": true,
|
||||
"Chuck/Chuck/Skeleton3D/Feet": true,
|
||||
}
|
||||
},
|
||||
|
||||
"Chuck E. Pants":
|
||||
{
|
||||
"None":
|
||||
{
|
||||
"Chuck/Chuck/Skeleton3D/Avenger Shorts": false,
|
||||
"Chuck/Chuck/Skeleton3D/Cool Chuck Shorts": false,
|
||||
"Chuck/Chuck/Skeleton3D/Rockstar Jeans": false,
|
||||
},
|
||||
"Cool Chuck Shorts":
|
||||
{
|
||||
"Chuck/Chuck/Skeleton3D/Avenger Shorts": false,
|
||||
"Chuck/Chuck/Skeleton3D/Cool Chuck Shorts": true,
|
||||
"Chuck/Chuck/Skeleton3D/Rockstar Jeans": false,
|
||||
},
|
||||
"Avenger Shorts":
|
||||
{
|
||||
"Chuck/Chuck/Skeleton3D/Avenger Shorts": true,
|
||||
"Chuck/Chuck/Skeleton3D/Cool Chuck Shorts": false,
|
||||
"Chuck/Chuck/Skeleton3D/Rockstar Jeans": false,
|
||||
},
|
||||
"Rockstar Jeans":
|
||||
{
|
||||
"Chuck/Chuck/Skeleton3D/Avenger Shorts": false,
|
||||
"Chuck/Chuck/Skeleton3D/Cool Chuck Shorts": false,
|
||||
"Chuck/Chuck/Skeleton3D/Rockstar Jeans": true,
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
var CyberHelen = {
|
||||
"Helen Eyelids":
|
||||
{
|
||||
"Blue":
|
||||
{
|
||||
"Helen/Helen/Skeleton3D/Blue Eyelids": true,
|
||||
"Helen/Helen/Skeleton3D/Pink Eyelids": false,
|
||||
},
|
||||
"Pink":
|
||||
{
|
||||
"Helen/Helen/Skeleton3D/Blue Eyelids": false,
|
||||
"Helen/Helen/Skeleton3D/Pink Eyelids": true,
|
||||
},
|
||||
},
|
||||
|
||||
"Helen Dress":
|
||||
{
|
||||
"PTT":
|
||||
{
|
||||
"Helen/Helen/Skeleton3D/PTT Shirt": true,
|
||||
"Helen/Helen/Skeleton3D/Half Body Skirt": false,
|
||||
"Helen/Helen/Skeleton3D/Skirt": false,
|
||||
"Helen/Helen/Skeleton3D/Black Shirt": false,
|
||||
"Helen/Helen/Skeleton3D/Collar": false,
|
||||
},
|
||||
"Road Stage":
|
||||
{
|
||||
"Helen/Helen/Skeleton3D/PTT Shirt": false,
|
||||
"Helen/Helen/Skeleton3D/Half Body Skirt": true,
|
||||
"Helen/Helen/Skeleton3D/Skirt": false,
|
||||
"Helen/Helen/Skeleton3D/Black Shirt": true,
|
||||
"Helen/Helen/Skeleton3D/Collar": true,
|
||||
},
|
||||
"Modern":
|
||||
{
|
||||
"Helen/Helen/Skeleton3D/PTT Shirt": false,
|
||||
"Helen/Helen/Skeleton3D/Half Body Skirt": false,
|
||||
"Helen/Helen/Skeleton3D/Skirt": true,
|
||||
"Helen/Helen/Skeleton3D/Black Shirt": true,
|
||||
"Helen/Helen/Skeleton3D/Collar": true,
|
||||
},
|
||||
},
|
||||
|
||||
"Helen Hair":
|
||||
{
|
||||
"PTT":
|
||||
{
|
||||
"Helen/Helen/Skeleton3D/Modern Hair": false,
|
||||
"Helen/Helen/Skeleton3D/Modern Hair Yellow": false,
|
||||
"Helen/Helen/Skeleton3D/Road Stage Hair": false,
|
||||
"Helen/Helen/Skeleton3D/PTT Hair": true,
|
||||
},
|
||||
"Road Stage":
|
||||
{
|
||||
"Helen/Helen/Skeleton3D/Modern Hair": false,
|
||||
"Helen/Helen/Skeleton3D/Modern Hair Yellow": false,
|
||||
"Helen/Helen/Skeleton3D/Road Stage Hair": true,
|
||||
"Helen/Helen/Skeleton3D/PTT Hair": false,
|
||||
},
|
||||
"Modern":
|
||||
{
|
||||
"Helen/Helen/Skeleton3D/Modern Hair": true,
|
||||
"Helen/Helen/Skeleton3D/Modern Hair Yellow": false,
|
||||
"Helen/Helen/Skeleton3D/Road Stage Hair": false,
|
||||
"Helen/Helen/Skeleton3D/PTT Hair": false,
|
||||
},
|
||||
"Modern Yellow":
|
||||
{
|
||||
"Helen/Helen/Skeleton3D/Modern Hair": false,
|
||||
"Helen/Helen/Skeleton3D/Modern Hair Yellow": true,
|
||||
"Helen/Helen/Skeleton3D/Road Stage Hair": false,
|
||||
"Helen/Helen/Skeleton3D/PTT Hair": false,
|
||||
},
|
||||
},
|
||||
|
||||
"Helen Mask":
|
||||
{
|
||||
"PTT":
|
||||
{
|
||||
"Helen/Helen/Skeleton3D/PTT Mask": true,
|
||||
"Helen/Helen/Skeleton3D/PTT Jaw": true,
|
||||
"Helen/Helen/Skeleton3D/PTT Beak": true,
|
||||
"Helen/Helen/Skeleton3D/PTT Mask Crest": true,
|
||||
"Helen/Helen/Skeleton3D/PTT Red Mouth Parts": true,
|
||||
"Helen/Helen/Skeleton3D/PTT Eyeshadow": true,
|
||||
"Helen/Helen/Skeleton3D/Modern Head": false,
|
||||
"Helen/Helen/Skeleton3D/Modern Mask": false,
|
||||
"Helen/Helen/Skeleton3D/Road Stage Jaw": false,
|
||||
"Helen/Helen/Skeleton3D/Road Stage Beak": false,
|
||||
"Helen/Helen/Skeleton3D/Modern Jaw": false,
|
||||
"Helen/Helen/Skeleton3D/Modern Beak": false,
|
||||
},
|
||||
"Road Stage":
|
||||
{
|
||||
"Helen/Helen/Skeleton3D/PTT Mask": false,
|
||||
"Helen/Helen/Skeleton3D/PTT Jaw": false,
|
||||
"Helen/Helen/Skeleton3D/PTT Beak": false,
|
||||
"Helen/Helen/Skeleton3D/PTT Mask Crest": false,
|
||||
"Helen/Helen/Skeleton3D/PTT Red Mouth Parts": false,
|
||||
"Helen/Helen/Skeleton3D/PTT Eyeshadow": false,
|
||||
"Helen/Helen/Skeleton3D/Modern Head": true,
|
||||
"Helen/Helen/Skeleton3D/Modern Mask": true,
|
||||
"Helen/Helen/Skeleton3D/Road Stage Jaw": true,
|
||||
"Helen/Helen/Skeleton3D/Road Stage Beak": true,
|
||||
"Helen/Helen/Skeleton3D/Modern Jaw": false,
|
||||
"Helen/Helen/Skeleton3D/Modern Beak": false,
|
||||
},
|
||||
"Modern":
|
||||
{
|
||||
"Helen/Helen/Skeleton3D/PTT Mask": false,
|
||||
"Helen/Helen/Skeleton3D/PTT Jaw": false,
|
||||
"Helen/Helen/Skeleton3D/PTT Beak": false,
|
||||
"Helen/Helen/Skeleton3D/PTT Mask Crest": false,
|
||||
"Helen/Helen/Skeleton3D/PTT Red Mouth Parts": false,
|
||||
"Helen/Helen/Skeleton3D/PTT Eyeshadow": false,
|
||||
"Helen/Helen/Skeleton3D/Modern Head": true,
|
||||
"Helen/Helen/Skeleton3D/Modern Mask": true,
|
||||
"Helen/Helen/Skeleton3D/Road Stage Jaw": false,
|
||||
"Helen/Helen/Skeleton3D/Road Stage Beak": false,
|
||||
"Helen/Helen/Skeleton3D/Modern Jaw": true,
|
||||
"Helen/Helen/Skeleton3D/Modern Beak": true,
|
||||
},
|
||||
},
|
||||
|
||||
"Helen Legs":
|
||||
{
|
||||
"None":
|
||||
{
|
||||
"Helen/Helen/Skeleton3D/Stand": true,
|
||||
"Helen/Helen/Skeleton3D/Legs": false,
|
||||
"Helen/Helen/Skeleton3D/Shoes": false,
|
||||
},
|
||||
"Modern Standing":
|
||||
{
|
||||
"Helen/Helen/Skeleton3D/Stand": false,
|
||||
"Helen/Helen/Skeleton3D/Legs": true,
|
||||
"Helen/Helen/Skeleton3D/Shoes": true,
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
var CyberMunch = {
|
||||
"Munch Hat":
|
||||
{
|
||||
"None":
|
||||
{
|
||||
"Munch/Munch/Skeleton3D/Road Stage Hat": false,
|
||||
"Munch/Munch/Skeleton3D/Modern Hat": false,
|
||||
},
|
||||
"Road Stage":
|
||||
{
|
||||
"Munch/Munch/Skeleton3D/Road Stage Hat": true,
|
||||
"Munch/Munch/Skeleton3D/Modern Hat": false,
|
||||
},
|
||||
"Modern":
|
||||
{
|
||||
"Munch/Munch/Skeleton3D/Road Stage Hat": false,
|
||||
"Munch/Munch/Skeleton3D/Modern Hat": true,
|
||||
},
|
||||
},
|
||||
|
||||
"Munch Mask":
|
||||
{
|
||||
"PTT":
|
||||
{
|
||||
"Munch/Munch/Skeleton3D/PTT Nostrils": true,
|
||||
"Munch/Munch/Skeleton3D/Modern Nostrils": false,
|
||||
},
|
||||
"Modern":
|
||||
{
|
||||
"Munch/Munch/Skeleton3D/PTT Nostrils": false,
|
||||
"Munch/Munch/Skeleton3D/Modern Nostrils": true,
|
||||
},
|
||||
},
|
||||
|
||||
"Munch Body":
|
||||
{
|
||||
"PTT":
|
||||
{
|
||||
"Munch/Munch/Skeleton3D/PTT Torso": true,
|
||||
"Munch/Munch/Skeleton3D/PTT Arms": true,
|
||||
"Munch/Munch/Skeleton3D/PTT Left Hand": true,
|
||||
"Munch/Munch/Skeleton3D/PTT Right Hand": true,
|
||||
"Munch/Munch/Skeleton3D/Modern Torso": false,
|
||||
"Munch/Munch/Skeleton3D/Modern Arms": false,
|
||||
"Munch/Munch/Skeleton3D/Modern Left Hand": false,
|
||||
"Munch/Munch/Skeleton3D/Modern Right Hand": false,
|
||||
},
|
||||
"Modern":
|
||||
{
|
||||
"Munch/Munch/Skeleton3D/PTT Torso": false,
|
||||
"Munch/Munch/Skeleton3D/PTT Arms": false,
|
||||
"Munch/Munch/Skeleton3D/PTT Left Hand": false,
|
||||
"Munch/Munch/Skeleton3D/PTT Right Hand": false,
|
||||
"Munch/Munch/Skeleton3D/Modern Torso": true,
|
||||
"Munch/Munch/Skeleton3D/Modern Arms": true,
|
||||
"Munch/Munch/Skeleton3D/Modern Left Hand": true,
|
||||
"Munch/Munch/Skeleton3D/Modern Right Hand": true,
|
||||
},
|
||||
},
|
||||
|
||||
"Munch Legs":
|
||||
{
|
||||
"None":
|
||||
{
|
||||
"Munch/Munch/Skeleton3D/Legs": false,
|
||||
"Munch/Munch/Skeleton3D/Shoes": false,
|
||||
},
|
||||
"Modern":
|
||||
{
|
||||
"Munch/Munch/Skeleton3D/Legs": true,
|
||||
"Munch/Munch/Skeleton3D/Shoes": true,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
var CyberJasper = {
|
||||
"Jasper Hat":
|
||||
{
|
||||
"PTT":
|
||||
{
|
||||
"Jasper/Jasper/Skeleton3D/Straw Hat Small": true,
|
||||
"Jasper/Jasper/Skeleton3D/Straw Hat Large": false,
|
||||
"Jasper/Jasper/Skeleton3D/Cowboy Hat": false,
|
||||
},
|
||||
"Rocker":
|
||||
{
|
||||
"Jasper/Jasper/Skeleton3D/Straw Hat Small": false,
|
||||
"Jasper/Jasper/Skeleton3D/Straw Hat Large": true,
|
||||
"Jasper/Jasper/Skeleton3D/Cowboy Hat": false,
|
||||
},
|
||||
"Modern":
|
||||
{
|
||||
"Jasper/Jasper/Skeleton3D/Straw Hat Small": false,
|
||||
"Jasper/Jasper/Skeleton3D/Straw Hat Large": false,
|
||||
"Jasper/Jasper/Skeleton3D/Cowboy Hat": true,
|
||||
},
|
||||
"None":
|
||||
{
|
||||
"Jasper/Jasper/Skeleton3D/Straw Hat Small": false,
|
||||
"Jasper/Jasper/Skeleton3D/Straw Hat Large": false,
|
||||
"Jasper/Jasper/Skeleton3D/Cowboy Hat": false,
|
||||
},
|
||||
},
|
||||
|
||||
"Jasper Shirt":
|
||||
{
|
||||
"PTT":
|
||||
{
|
||||
"Jasper/Jasper/Skeleton3D/Red Shirt": true,
|
||||
"Jasper/Jasper/Skeleton3D/Rocker Shirt": false,
|
||||
"Jasper/Jasper/Skeleton3D/Cow Print Shirt": false,
|
||||
},
|
||||
"Rocker":
|
||||
{
|
||||
"Jasper/Jasper/Skeleton3D/Red Shirt": false,
|
||||
"Jasper/Jasper/Skeleton3D/Rocker Shirt": true,
|
||||
"Jasper/Jasper/Skeleton3D/Cow Print Shirt": false,
|
||||
},
|
||||
"Modern":
|
||||
{
|
||||
"Jasper/Jasper/Skeleton3D/Red Shirt": false,
|
||||
"Jasper/Jasper/Skeleton3D/Rocker Shirt": false,
|
||||
"Jasper/Jasper/Skeleton3D/Cow Print Shirt": true,
|
||||
},
|
||||
},
|
||||
|
||||
"Jasper Guitar":
|
||||
{
|
||||
"Banjo":
|
||||
{
|
||||
"Jasper/Jasper/Skeleton3D/Banjo": true,
|
||||
"Jasper/Jasper/Skeleton3D/Cheese Guitar": false,
|
||||
},
|
||||
"Cheese Guitar":
|
||||
{
|
||||
"Jasper/Jasper/Skeleton3D/Banjo": false,
|
||||
"Jasper/Jasper/Skeleton3D/Cheese Guitar": true,
|
||||
},
|
||||
},
|
||||
|
||||
"Jasper Bandana":
|
||||
{
|
||||
"Blue":
|
||||
{
|
||||
"Jasper/Jasper/Skeleton3D/Blue Bandana": true,
|
||||
"Jasper/Jasper/Skeleton3D/Red Bandana": false,
|
||||
},
|
||||
"Red":
|
||||
{
|
||||
"Jasper/Jasper/Skeleton3D/Blue Bandana": false,
|
||||
"Jasper/Jasper/Skeleton3D/Red Bandana": true,
|
||||
},
|
||||
},
|
||||
|
||||
"Jasper Overalls":
|
||||
{
|
||||
"Normal":
|
||||
{
|
||||
"Jasper/Jasper/Skeleton3D/Overalls": true,
|
||||
},
|
||||
"None":
|
||||
{
|
||||
"Jasper/Jasper/Skeleton3D/Overalls": false,
|
||||
},
|
||||
},
|
||||
|
||||
"Jasper Legs":
|
||||
{
|
||||
"None":
|
||||
{
|
||||
"Jasper/Jasper/Skeleton3D/Pants": false,
|
||||
"Jasper/Jasper/Skeleton3D/Shoes": false,
|
||||
},
|
||||
"Normal":
|
||||
{
|
||||
"Jasper/Jasper/Skeleton3D/Pants": true,
|
||||
"Jasper/Jasper/Skeleton3D/Shoes": true,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
var CyberPasqually = {
|
||||
"Pasqually Body":
|
||||
{
|
||||
"PTT":
|
||||
{
|
||||
"Pasqually/Pasqually/Skeleton3D/PTT Torso": true,
|
||||
"Pasqually/Pasqually/Skeleton3D/PTT Arms": true,
|
||||
"Pasqually/Pasqually/Skeleton3D/PTT Left Hand": true,
|
||||
"Pasqually/Pasqually/Skeleton3D/PTT Right Hand": true,
|
||||
"Pasqually/Pasqually/Skeleton3D/Modern Torso": false,
|
||||
"Pasqually/Pasqually/Skeleton3D/Modern Arms": false,
|
||||
"Pasqually/Pasqually/Skeleton3D/Modern Left Hand": false,
|
||||
"Pasqually/Pasqually/Skeleton3D/Modern Right Hand": false,
|
||||
},
|
||||
"Modern":
|
||||
{
|
||||
"Pasqually/Pasqually/Skeleton3D/PTT Torso": false,
|
||||
"Pasqually/Pasqually/Skeleton3D/PTT Arms": false,
|
||||
"Pasqually/Pasqually/Skeleton3D/PTT Left Hand": false,
|
||||
"Pasqually/Pasqually/Skeleton3D/PTT Right Hand": false,
|
||||
"Pasqually/Pasqually/Skeleton3D/Modern Torso": true,
|
||||
"Pasqually/Pasqually/Skeleton3D/Modern Arms": true,
|
||||
"Pasqually/Pasqually/Skeleton3D/Modern Left Hand": true,
|
||||
"Pasqually/Pasqually/Skeleton3D/Modern Right Hand": true,
|
||||
},
|
||||
},
|
||||
|
||||
"Pasqually Legs":
|
||||
{
|
||||
"None":
|
||||
{
|
||||
"Pasqually/Pasqually/Skeleton3D/Legs": false,
|
||||
"Pasqually/Pasqually/Skeleton3D/Shoes": false,
|
||||
},
|
||||
"Normal":
|
||||
{
|
||||
"Pasqually/Pasqually/Skeleton3D/Legs": true,
|
||||
"Pasqually/Pasqually/Skeleton3D/Shoes": true,
|
||||
},
|
||||
},
|
||||
|
||||
"Pasqually Held Item":
|
||||
{
|
||||
"Accordion":
|
||||
{
|
||||
"Pasqually/Pasqually/Skeleton3D/Spoons": false,
|
||||
"Pasqually/Pasqually/Skeleton3D/Drumsticks": false,
|
||||
"Pasqually/Pasqually/Skeleton3D/Accordion": true,
|
||||
},
|
||||
"None":
|
||||
{
|
||||
"Pasqually/Pasqually/Skeleton3D/Spoons": false,
|
||||
"Pasqually/Pasqually/Skeleton3D/Drumsticks": false,
|
||||
"Pasqually/Pasqually/Skeleton3D/Accordion": false,
|
||||
},
|
||||
"Spoons":
|
||||
{
|
||||
"Pasqually/Pasqually/Skeleton3D/Spoons": true,
|
||||
"Pasqually/Pasqually/Skeleton3D/Drumsticks": false,
|
||||
"Pasqually/Pasqually/Skeleton3D/Accordion": false,
|
||||
},
|
||||
"Drumsticks":
|
||||
{
|
||||
"Pasqually/Pasqually/Skeleton3D/Spoons": false,
|
||||
"Pasqually/Pasqually/Skeleton3D/Drumsticks": true,
|
||||
"Pasqually/Pasqually/Skeleton3D/Accordion": false,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
var HelenHouseHelen = {
|
||||
"Helen Hair":
|
||||
{
|
||||
"Black and White":
|
||||
{
|
||||
"Helen/Helen/Skeleton3D/BWHair": true,
|
||||
"Helen/Helen/Skeleton3D/YellowHair": false,
|
||||
},
|
||||
"Yellow":
|
||||
{
|
||||
"Helen/Helen/Skeleton3D/BWHair": false,
|
||||
"Helen/Helen/Skeleton3D/YellowHair": true,
|
||||
},
|
||||
},
|
||||
"Helen Dress":
|
||||
{
|
||||
"Tux":
|
||||
{
|
||||
"Helen/Helen/Skeleton3D/Collar": true,
|
||||
"Helen/Helen/Skeleton3D/Torso": true,
|
||||
"Helen/Helen/Skeleton3D/Skirt": true,
|
||||
"Helen/Helen/Skeleton3D/CheerDress": false,
|
||||
},
|
||||
"Cheerleader":
|
||||
{
|
||||
"Helen/Helen/Skeleton3D/Collar": false,
|
||||
"Helen/Helen/Skeleton3D/Torso": false,
|
||||
"Helen/Helen/Skeleton3D/Skirt": false,
|
||||
"Helen/Helen/Skeleton3D/CheerDress": true,
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
uid://bnddq01t7dtqc
|
|
@ -1,376 +0,0 @@
|
|||
extends Node
|
||||
|
||||
var HelenHouse = {
|
||||
"bits": 20,
|
||||
"scene": "res://Scenes/Stages/HelenHouse.tscn",
|
||||
"scene_ref_base": "SubViewport/HelenHouse/",
|
||||
"camera_count": 2,
|
||||
|
||||
"ust_type": "Rockafire Explosion/3-Stage",
|
||||
|
||||
"bit_mapping":
|
||||
{
|
||||
23: { "bot": "Helen", "movement": "Mouth", "flow_in": 3.0, "flow_out": 2.0 },
|
||||
24: { "bot": "Helen", "movement": "Left Ear", "flow_in": 3.5, "flow_out": 1.5 },
|
||||
25: { "bot": "Helen", "movement": "Right Ear", "flow_in": 3.5, "flow_out": 1.5 },
|
||||
26: { "bot": "Helen", "movement": "Left Eyelid", "flow_in": 1.5, "flow_out": 2.0 },
|
||||
27: { "bot": "Helen", "movement": "Right Eyelid", "flow_in": 1.5, "flow_out": 2.0 },
|
||||
28: { "bot": "Helen", "movement": "Eyes Left", "flow_in": 3.5, "flow_out": 1.5 },
|
||||
29: { "bot": "Helen", "movement": "Eyes Right", "flow_in": 3.5, "flow_out": 1.5 },
|
||||
30: { "bot": "Helen", "movement": "Head Left", "flow_in": 1.5, "flow_out": 1.5 },
|
||||
31: { "bot": "Helen", "movement": "Head Right", "flow_in": 1.5, "flow_out": 1.5 },
|
||||
32: { "bot": "Helen", "movement": "Head Up", "flow_in": 1.0, "flow_out": 1.0 },
|
||||
33: { "bot": "Helen", "movement": "Left Arm Up", "flow_in": 0.8, "flow_out": 0.6 },
|
||||
34: { "bot": "Helen", "movement": "Left Arm Twist", "flow_in": 0.8, "flow_out": 0.8 },
|
||||
35: { "bot": "Helen", "movement": "Left Elbow", "flow_in": 1.0, "flow_out": 1.0 },
|
||||
36: { "bot": "Helen", "movement": "Right Arm Up", "flow_in": 0.8, "flow_out": 0.6 },
|
||||
37: { "bot": "Helen", "movement": "Right Arm Twist", "flow_in": 0.8, "flow_out": 0.8 },
|
||||
38: { "bot": "Helen", "movement": "Right Elbow", "flow_in": 1.0, "flow_out": 1.0 },
|
||||
39: { "bot": "Helen", "movement": "Body Left", "flow_in": 0.7, "flow_out": 0.7 },
|
||||
40: { "bot": "Helen", "movement": "Body Right", "flow_in": 0.7, "flow_out": 0.7 },
|
||||
41: { "bot": "Helen", "movement": "Body Lean", "flow_in": 1.0, "flow_out": 0.8 },
|
||||
125: { "bot": "Spots", "movement": "Helen", "flow_in": "None", "flow_out": "None" },
|
||||
},
|
||||
|
||||
"cosmetics": [ Cosmetics.HelenHouseHelen ],
|
||||
"cosmetic_defaults": [ 0, 0 ]
|
||||
}
|
||||
|
||||
var ChuckEsCorner = {
|
||||
"bits": 16,
|
||||
"scene": "res://Scenes/Stages/ChuckEsCorner.tscn",
|
||||
"scene_ref_base": "SubViewport/ChuckEsCorner/",
|
||||
"camera_count": 3,
|
||||
|
||||
"ust_type": "Cyberamics",
|
||||
|
||||
"bit_mapping":
|
||||
{
|
||||
1: { "bot": "Chuck", "movement": "Mouth", "flow_in": 7.5, "flow_out": 6.0 },
|
||||
2: { "bot": "Chuck", "movement": "Head Left", "flow_in": 1.5, "flow_out": 1.5 },
|
||||
3: { "bot": "Chuck", "movement": "Head Right", "flow_in": 1.5, "flow_out": 1.5 },
|
||||
4: { "bot": "Chuck", "movement": "Head Up", "flow_in": 2.0, "flow_out": 1.0 },
|
||||
5: { "bot": "Chuck", "movement": "Eyes Left", "flow_in": 4.0, "flow_out": 3.0 },
|
||||
6: { "bot": "Chuck", "movement": "Eyes Right", "flow_in": 4.0, "flow_out": 3.0 },
|
||||
7: { "bot": "Chuck", "movement": "Eyelids", "flow_in": 7.5, "flow_out": 5.0 },
|
||||
8: { "bot": "Chuck", "movement": "Right Arm", "flow_in": 2.0, "flow_out": 1.0 },
|
||||
41: { "bot": "Warblettes", "movement": "Mouth", "flow_in": 4.0, "flow_out": 3.0 },
|
||||
44: { "bot": "Warblettes", "movement": "Body Rock", "flow_in": 1.0, "flow_out": 1.0 },
|
||||
50: { "bot": "Spots", "movement": "Chuck", "flow_in": "None", "flow_out": "None" },
|
||||
55: { "bot": "Floods", "movement": "Blue", "flow_in": "None", "flow_out": "None" },
|
||||
78: { "bot": "Spots", "movement": "Warblettes", "flow_in": "None", "flow_out": "None" },
|
||||
79: { "bot": "Color Spots", "movement": "Chuck", "flow_in": "None", "flow_out": "None" },
|
||||
82: { "bot": "Floods", "movement": "Red", "flow_in": "None", "flow_out": "None" },
|
||||
86: { "bot": "Floods", "movement": "Green", "flow_in": "None", "flow_out": "None" },
|
||||
},
|
||||
|
||||
"cosmetics": [ Cosmetics.CyberChuck ],
|
||||
"cosmetic_defaults": [ 0, 1, 0, 0, 0, 0 ]
|
||||
}
|
||||
|
||||
var BalconyStage = {
|
||||
"bits": 69,
|
||||
"scene": "res://Scenes/Stages/Balcony.tscn",
|
||||
"scene_ref_base": "SubViewport/Balcony/",
|
||||
"camera_count": 6,
|
||||
|
||||
"ust_type": "Cyberamics",
|
||||
|
||||
"bit_mapping":
|
||||
{
|
||||
1: { "bot": "Chuck", "movement": "Mouth", "flow_in": 7.5, "flow_out": 6.0 },
|
||||
2: { "bot": "Chuck", "movement": "Head Left", "flow_in": 1.5, "flow_out": 1.5 },
|
||||
3: { "bot": "Chuck", "movement": "Head Right", "flow_in": 1.5, "flow_out": 1.5 },
|
||||
4: { "bot": "Chuck", "movement": "Head Up", "flow_in": 2.0, "flow_out": 1.0 },
|
||||
5: { "bot": "Chuck", "movement": "Eyes Left", "flow_in": 4.0, "flow_out": 3.0 },
|
||||
6: { "bot": "Chuck", "movement": "Eyes Right", "flow_in": 4.0, "flow_out": 3.0 },
|
||||
7: { "bot": "Chuck", "movement": "Eyelids", "flow_in": 7.5, "flow_out": 5.0 },
|
||||
8: { "bot": "Chuck", "movement": "Right Arm", "flow_in": 2.0, "flow_out": 1.0 },
|
||||
9: { "bot": "Helen", "movement": "Mouth", "flow_in": 7.5, "flow_out": 6.0 },
|
||||
10: { "bot": "Helen", "movement": "Head Left", "flow_in": 1.5, "flow_out": 1.5 },
|
||||
11: { "bot": "Helen", "movement": "Head Right", "flow_in": 1.5, "flow_out": 1.5 },
|
||||
12: { "bot": "Helen", "movement": "Head Up", "flow_in": 2.0, "flow_out": 1.0 },
|
||||
13: { "bot": "Helen", "movement": "Eyes Left", "flow_in": 4.0, "flow_out": 3.0 },
|
||||
14: { "bot": "Helen", "movement": "Eyes Right", "flow_in": 4.0, "flow_out": 3.0 },
|
||||
15: { "bot": "Helen", "movement": "Eyelids", "flow_in": 7.5, "flow_out": 5.0 },
|
||||
16: { "bot": "Helen", "movement": "Right Arm", "flow_in": 2.0, "flow_out": 1.0 },
|
||||
17: { "bot": "Munch", "movement": "Mouth", "flow_in": 7.5, "flow_out": 6.0 },
|
||||
18: { "bot": "Munch", "movement": "Head Left", "flow_in": 1.5, "flow_out": 1.5 },
|
||||
19: { "bot": "Munch", "movement": "Head Right", "flow_in": 1.5, "flow_out": 1.5 },
|
||||
20: { "bot": "Munch", "movement": "Eyes Left", "flow_in": 4.0, "flow_out": 3.0 },
|
||||
21: { "bot": "Munch", "movement": "Eyes Right", "flow_in": 4.0, "flow_out": 3.0 },
|
||||
22: { "bot": "Munch", "movement": "Eyelids", "flow_in": 7.5, "flow_out": 5.0 },
|
||||
23: { "bot": "Munch", "movement": "Right Arm", "flow_in": 2.0, "flow_out": 1.0 },
|
||||
24: { "bot": "Munch", "movement": "Left Arm", "flow_in": 2.0, "flow_out": 1.0 },
|
||||
25: { "bot": "Jasper", "movement": "Mouth", "flow_in": 7.5, "flow_out": 6.0 },
|
||||
26: { "bot": "Jasper", "movement": "Head Left", "flow_in": 1.5, "flow_out": 1.5 },
|
||||
27: { "bot": "Jasper", "movement": "Head Right", "flow_in": 1.5, "flow_out": 1.5 },
|
||||
28: { "bot": "Jasper", "movement": "Head Up", "flow_in": 2.0, "flow_out": 1.0 },
|
||||
29: { "bot": "Jasper", "movement": "Eyes Left", "flow_in": 4.0, "flow_out": 3.0 },
|
||||
30: { "bot": "Jasper", "movement": "Eyes Right", "flow_in": 4.0, "flow_out": 3.0 },
|
||||
31: { "bot": "Jasper", "movement": "Eyelids", "flow_in": 7.5, "flow_out": 5.0 },
|
||||
32: { "bot": "Jasper", "movement": "Strum", "flow_in": 2.0, "flow_out": 1.0 },
|
||||
33: { "bot": "Pasqually", "movement": "Mouth", "flow_in": 7.5, "flow_out": 6.0 },
|
||||
34: { "bot": "Pasqually", "movement": "Head Left", "flow_in": 1.5, "flow_out": 1.5 },
|
||||
35: { "bot": "Pasqually", "movement": "Head Right", "flow_in": 1.5, "flow_out": 1.5 },
|
||||
36: { "bot": "Pasqually", "movement": "Eyes Left", "flow_in": 4.0, "flow_out": 3.0 },
|
||||
37: { "bot": "Pasqually", "movement": "Eyes Right", "flow_in": 4.0, "flow_out": 3.0 },
|
||||
38: { "bot": "Pasqually", "movement": "Eyelids", "flow_in": 7.5, "flow_out": 5.0 },
|
||||
39: { "bot": "Pasqually", "movement": "Right Arm", "flow_in": 2.0, "flow_out": 1.0 },
|
||||
40: { "bot": "Pasqually", "movement": "Left Arm", "flow_in": 2.0, "flow_out": 1.0 },
|
||||
41: { "bot": "Warblettes", "movement": "Mouth", "flow_in": 4.0, "flow_out": 3.0 },
|
||||
44: { "bot": "Warblettes", "movement": "Body Rock", "flow_in": 1.0, "flow_out": 1.0 },
|
||||
50: { "bot": "Spots", "movement": "Chuck", "flow_in": "None", "flow_out": "None" },
|
||||
51: { "bot": "Spots", "movement": "Helen", "flow_in": "None", "flow_out": "None" },
|
||||
52: { "bot": "Spots", "movement": "Munch", "flow_in": "None", "flow_out": "None" },
|
||||
53: { "bot": "Spots", "movement": "Jasper", "flow_in": "None", "flow_out": "None" },
|
||||
54: { "bot": "Spots", "movement": "Pasqually", "flow_in": "None", "flow_out": "None" },
|
||||
55: { "bot": "Backdrop", "movement": "C Blue", "flow_in": "None", "flow_out": "None" },
|
||||
65: { "bot": "Backdrop", "movement": "L Blue", "flow_in": "None", "flow_out": "None" },
|
||||
66: { "bot": "Valence", "movement": "R Center", "flow_in": "None", "flow_out": "None" },
|
||||
68: { "bot": "Backdrop", "movement": "L Red", "flow_in": "None", "flow_out": "None" },
|
||||
69: { "bot": "Valence", "movement": "R", "flow_in": "None", "flow_out": "None" },
|
||||
70: { "bot": "Backdrop", "movement": "L Amber", "flow_in": "None", "flow_out": "None" },
|
||||
71: { "bot": "Valence", "movement": "L Center", "flow_in": "None", "flow_out": "None" },
|
||||
72: { "bot": "Valence", "movement": "L", "flow_in": "None", "flow_out": "None" },
|
||||
73: { "bot": "Valence", "movement": "Center", "flow_in": "None", "flow_out": "None" },
|
||||
74: { "bot": "Color Spots", "movement": "Warblettes", "flow_in": "None", "flow_out": "None" },
|
||||
75: { "bot": "Color Spots", "movement": "Munch", "flow_in": "None", "flow_out": "None" },
|
||||
76: { "bot": "Color Spots", "movement": "Helen", "flow_in": "None", "flow_out": "None" },
|
||||
77: { "bot": "Color Spots", "movement": "Jasper", "flow_in": "None", "flow_out": "None" },
|
||||
78: { "bot": "Spots", "movement": "Warblettes", "flow_in": "None", "flow_out": "None" },
|
||||
79: { "bot": "Color Spots", "movement": "Chuck", "flow_in": "None", "flow_out": "None" },
|
||||
80: { "bot": "Color Spots", "movement": "Chuck 2", "flow_in": "None", "flow_out": "None" },
|
||||
81: { "bot": "Backdrop", "movement": "R Amber", "flow_in": "None", "flow_out": "None" },
|
||||
82: { "bot": "Backdrop", "movement": "C Red", "flow_in": "None", "flow_out": "None" },
|
||||
83: { "bot": "Backdrop", "movement": "R Blue", "flow_in": "None", "flow_out": "None" },
|
||||
84: { "bot": "Color Spots", "movement": "Pasqually", "flow_in": "None", "flow_out": "None" },
|
||||
85: { "bot": "Backdrop", "movement": "R Red", "flow_in": "None", "flow_out": "None" },
|
||||
86: { "bot": "Backdrop", "movement": "C Amber", "flow_in": "None", "flow_out": "None" },
|
||||
},
|
||||
|
||||
"cosmetics":
|
||||
[
|
||||
Cosmetics.CyberChuck,
|
||||
Cosmetics.CyberHelen,
|
||||
Cosmetics.CyberMunch,
|
||||
Cosmetics.CyberJasper,
|
||||
Cosmetics.CyberPasqually
|
||||
],
|
||||
"cosmetic_defaults": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
|
||||
}
|
||||
|
||||
var CStage = {
|
||||
"bits": 65,
|
||||
"scene": "res://Scenes/Stages/CStage.tscn",
|
||||
"scene_ref_base": "SubViewport/CStage/",
|
||||
"camera_count": 5,
|
||||
|
||||
"ust_type": "Cyberamics",
|
||||
|
||||
"bit_mapping":
|
||||
{
|
||||
1: { "bot": "Chuck", "movement": "Mouth", "flow_in": 7.5, "flow_out": 6.0 },
|
||||
2: { "bot": "Chuck", "movement": "Head Left", "flow_in": 1.5, "flow_out": 1.5 },
|
||||
3: { "bot": "Chuck", "movement": "Head Right", "flow_in": 1.5, "flow_out": 1.5 },
|
||||
4: { "bot": "Chuck", "movement": "Head Up", "flow_in": 2.0, "flow_out": 1.0 },
|
||||
5: { "bot": "Chuck", "movement": "Eyes Left", "flow_in": 4.0, "flow_out": 3.0 },
|
||||
6: { "bot": "Chuck", "movement": "Eyes Right", "flow_in": 4.0, "flow_out": 3.0 },
|
||||
7: { "bot": "Chuck", "movement": "Eyelids", "flow_in": 7.5, "flow_out": 5.0 },
|
||||
8: { "bot": "Chuck", "movement": "Right Arm", "flow_in": 2.0, "flow_out": 1.0 },
|
||||
9: { "bot": "Helen", "movement": "Mouth", "flow_in": 7.5, "flow_out": 6.0 },
|
||||
10: { "bot": "Helen", "movement": "Head Left", "flow_in": 1.5, "flow_out": 1.5 },
|
||||
11: { "bot": "Helen", "movement": "Head Right", "flow_in": 1.5, "flow_out": 1.5 },
|
||||
12: { "bot": "Helen", "movement": "Head Up", "flow_in": 2.0, "flow_out": 1.0 },
|
||||
13: { "bot": "Helen", "movement": "Eyes Left", "flow_in": 4.0, "flow_out": 3.0 },
|
||||
14: { "bot": "Helen", "movement": "Eyes Right", "flow_in": 4.0, "flow_out": 3.0 },
|
||||
15: { "bot": "Helen", "movement": "Eyelids", "flow_in": 7.5, "flow_out": 5.0 },
|
||||
16: { "bot": "Helen", "movement": "Right Arm", "flow_in": 2.0, "flow_out": 1.0 },
|
||||
17: { "bot": "Munch", "movement": "Mouth", "flow_in": 7.5, "flow_out": 6.0 },
|
||||
18: { "bot": "Munch", "movement": "Head Left", "flow_in": 1.5, "flow_out": 1.5 },
|
||||
19: { "bot": "Munch", "movement": "Head Right", "flow_in": 1.5, "flow_out": 1.5 },
|
||||
20: { "bot": "Munch", "movement": "Eyes Left", "flow_in": 4.0, "flow_out": 3.0 },
|
||||
21: { "bot": "Munch", "movement": "Eyes Right", "flow_in": 4.0, "flow_out": 3.0 },
|
||||
22: { "bot": "Munch", "movement": "Eyelids", "flow_in": 7.5, "flow_out": 5.0 },
|
||||
23: { "bot": "Munch", "movement": "Right Arm", "flow_in": 2.0, "flow_out": 1.0 },
|
||||
24: { "bot": "Munch", "movement": "Left Arm", "flow_in": 2.0, "flow_out": 1.0 },
|
||||
25: { "bot": "Jasper", "movement": "Mouth", "flow_in": 7.5, "flow_out": 6.0 },
|
||||
26: { "bot": "Jasper", "movement": "Head Left", "flow_in": 1.5, "flow_out": 1.5 },
|
||||
27: { "bot": "Jasper", "movement": "Head Right", "flow_in": 1.5, "flow_out": 1.5 },
|
||||
28: { "bot": "Jasper", "movement": "Head Up", "flow_in": 2.0, "flow_out": 1.0 },
|
||||
29: { "bot": "Jasper", "movement": "Eyes Left", "flow_in": 4.0, "flow_out": 3.0 },
|
||||
30: { "bot": "Jasper", "movement": "Eyes Right", "flow_in": 4.0, "flow_out": 3.0 },
|
||||
31: { "bot": "Jasper", "movement": "Eyelids", "flow_in": 7.5, "flow_out": 5.0 },
|
||||
32: { "bot": "Jasper", "movement": "Strum", "flow_in": 2.0, "flow_out": 1.0 },
|
||||
33: { "bot": "Pasqually", "movement": "Mouth", "flow_in": 7.5, "flow_out": 6.0 },
|
||||
34: { "bot": "Pasqually", "movement": "Head Left", "flow_in": 1.5, "flow_out": 1.5 },
|
||||
35: { "bot": "Pasqually", "movement": "Head Right", "flow_in": 1.5, "flow_out": 1.5 },
|
||||
36: { "bot": "Pasqually", "movement": "Eyes Left", "flow_in": 4.0, "flow_out": 3.0 },
|
||||
37: { "bot": "Pasqually", "movement": "Eyes Right", "flow_in": 4.0, "flow_out": 3.0 },
|
||||
38: { "bot": "Pasqually", "movement": "Eyelids", "flow_in": 7.5, "flow_out": 5.0 },
|
||||
39: { "bot": "Pasqually", "movement": "Right Arm", "flow_in": 2.0, "flow_out": 1.0 },
|
||||
40: { "bot": "Pasqually", "movement": "Left Arm", "flow_in": 2.0, "flow_out": 1.0 },
|
||||
50: { "bot": "Spots", "movement": "Chuck", "flow_in": "None", "flow_out": "None" },
|
||||
51: { "bot": "Spots", "movement": "Helen", "flow_in": "None", "flow_out": "None" },
|
||||
52: { "bot": "Spots", "movement": "Munch", "flow_in": "None", "flow_out": "None" },
|
||||
53: { "bot": "Spots", "movement": "Jasper", "flow_in": "None", "flow_out": "None" },
|
||||
54: { "bot": "Spots", "movement": "Pasqually", "flow_in": "None", "flow_out": "None" },
|
||||
55: { "bot": "Backdrop", "movement": "C Blue", "flow_in": "None", "flow_out": "None" },
|
||||
65: { "bot": "Backdrop", "movement": "L Blue", "flow_in": "None", "flow_out": "None" },
|
||||
66: { "bot": "Valence", "movement": "R Center", "flow_in": "None", "flow_out": "None" },
|
||||
68: { "bot": "Backdrop", "movement": "L Red", "flow_in": "None", "flow_out": "None" },
|
||||
69: { "bot": "Valence", "movement": "R", "flow_in": "None", "flow_out": "None" },
|
||||
70: { "bot": "Backdrop", "movement": "L Amber", "flow_in": "None", "flow_out": "None" },
|
||||
71: { "bot": "Valence", "movement": "L Center", "flow_in": "None", "flow_out": "None" },
|
||||
72: { "bot": "Valence", "movement": "L", "flow_in": "None", "flow_out": "None" },
|
||||
73: { "bot": "Valence", "movement": "Center", "flow_in": "None", "flow_out": "None" },
|
||||
75: { "bot": "Color Spots", "movement": "Munch", "flow_in": "None", "flow_out": "None" },
|
||||
76: { "bot": "Color Spots", "movement": "Helen", "flow_in": "None", "flow_out": "None" },
|
||||
77: { "bot": "Color Spots", "movement": "Jasper", "flow_in": "None", "flow_out": "None" },
|
||||
79: { "bot": "Color Spots", "movement": "Chuck", "flow_in": "None", "flow_out": "None" },
|
||||
80: { "bot": "Color Spots", "movement": "Chuck 2", "flow_in": "None", "flow_out": "None" },
|
||||
81: { "bot": "Backdrop", "movement": "R Amber", "flow_in": "None", "flow_out": "None" },
|
||||
82: { "bot": "Backdrop", "movement": "C Red", "flow_in": "None", "flow_out": "None" },
|
||||
83: { "bot": "Backdrop", "movement": "R Blue", "flow_in": "None", "flow_out": "None" },
|
||||
84: { "bot": "Color Spots", "movement": "Pasqually", "flow_in": "None", "flow_out": "None" },
|
||||
85: { "bot": "Backdrop", "movement": "R Red", "flow_in": "None", "flow_out": "None" },
|
||||
86: { "bot": "Backdrop", "movement": "C Amber", "flow_in": "None", "flow_out": "None" },
|
||||
},
|
||||
|
||||
"cosmetics":
|
||||
[
|
||||
Cosmetics.CyberChuck,
|
||||
Cosmetics.CyberHelen,
|
||||
Cosmetics.CyberMunch,
|
||||
Cosmetics.CyberJasper,
|
||||
Cosmetics.CyberPasqually
|
||||
],
|
||||
"cosmetic_defaults": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
|
||||
}
|
||||
|
||||
var ProtoRoadStage = {
|
||||
"bits": 41,
|
||||
"scene": "res://Scenes/Stages/ProtoRoadStage.tscn",
|
||||
"scene_ref_base": "SubViewport/ProtoRoadStage/",
|
||||
"camera_count": 6,
|
||||
|
||||
"ust_type": "Cyberamics",
|
||||
|
||||
"bit_mapping":
|
||||
{
|
||||
1: { "bot": "Chuck", "movement": "Mouth", "flow_in": 7.5, "flow_out": 6.0 },
|
||||
2: { "bot": "Chuck", "movement": "Head Left", "flow_in": 1.5, "flow_out": 1.5 },
|
||||
3: { "bot": "Chuck", "movement": "Head Right", "flow_in": 1.5, "flow_out": 1.5 },
|
||||
4: { "bot": "Chuck", "movement": "Head Up", "flow_in": 2.0, "flow_out": 1.0 },
|
||||
5: { "bot": "Chuck", "movement": "Eyes Left", "flow_in": 4.0, "flow_out": 3.0 },
|
||||
6: { "bot": "Chuck", "movement": "Eyes Right", "flow_in": 4.0, "flow_out": 3.0 },
|
||||
7: { "bot": "Chuck", "movement": "Eyelids", "flow_in": 7.5, "flow_out": 5.0 },
|
||||
8: { "bot": "Chuck", "movement": "Right Arm", "flow_in": 2.0, "flow_out": 1.0 },
|
||||
9: { "bot": "Helen", "movement": "Mouth", "flow_in": 7.5, "flow_out": 6.0 },
|
||||
10: { "bot": "Helen", "movement": "Head Left", "flow_in": 1.5, "flow_out": 1.5 },
|
||||
11: { "bot": "Helen", "movement": "Head Right", "flow_in": 1.5, "flow_out": 1.5 },
|
||||
12: { "bot": "Helen", "movement": "Head Up", "flow_in": 2.0, "flow_out": 1.0 },
|
||||
13: { "bot": "Helen", "movement": "Eyes Left", "flow_in": 4.0, "flow_out": 3.0 },
|
||||
14: { "bot": "Helen", "movement": "Eyes Right", "flow_in": 4.0, "flow_out": 3.0 },
|
||||
15: { "bot": "Helen", "movement": "Eyelids", "flow_in": 7.5, "flow_out": 5.0 },
|
||||
16: { "bot": "Helen", "movement": "Right Arm", "flow_in": 2.0, "flow_out": 1.0 },
|
||||
17: { "bot": "Munch", "movement": "Mouth", "flow_in": 7.5, "flow_out": 6.0 },
|
||||
18: { "bot": "Munch", "movement": "Head Left", "flow_in": 1.5, "flow_out": 1.5 },
|
||||
19: { "bot": "Munch", "movement": "Head Right", "flow_in": 1.5, "flow_out": 1.5 },
|
||||
20: { "bot": "Munch", "movement": "Eyes Left", "flow_in": 4.0, "flow_out": 3.0 },
|
||||
21: { "bot": "Munch", "movement": "Eyes Right", "flow_in": 4.0, "flow_out": 3.0 },
|
||||
22: { "bot": "Munch", "movement": "Eyelids", "flow_in": 7.5, "flow_out": 5.0 },
|
||||
23: { "bot": "Munch", "movement": "Right Arm", "flow_in": 2.0, "flow_out": 1.0 },
|
||||
24: { "bot": "Munch", "movement": "Left Arm", "flow_in": 2.0, "flow_out": 1.0 },
|
||||
25: { "bot": "Jasper", "movement": "Mouth", "flow_in": 7.5, "flow_out": 6.0 },
|
||||
26: { "bot": "Jasper", "movement": "Head Left", "flow_in": 1.5, "flow_out": 1.5 },
|
||||
27: { "bot": "Jasper", "movement": "Head Right", "flow_in": 1.5, "flow_out": 1.5 },
|
||||
28: { "bot": "Jasper", "movement": "Head Up", "flow_in": 2.0, "flow_out": 1.0 },
|
||||
29: { "bot": "Jasper", "movement": "Eyes Left", "flow_in": 4.0, "flow_out": 3.0 },
|
||||
30: { "bot": "Jasper", "movement": "Eyes Right", "flow_in": 4.0, "flow_out": 3.0 },
|
||||
31: { "bot": "Jasper", "movement": "Eyelids", "flow_in": 7.5, "flow_out": 5.0 },
|
||||
32: { "bot": "Jasper", "movement": "Strum", "flow_in": 2.0, "flow_out": 1.0 },
|
||||
33: { "bot": "Pasqually", "movement": "Mouth", "flow_in": 7.5, "flow_out": 6.0 },
|
||||
34: { "bot": "Pasqually", "movement": "Head Left", "flow_in": 1.5, "flow_out": 1.5 },
|
||||
35: { "bot": "Pasqually", "movement": "Head Right", "flow_in": 1.5, "flow_out": 1.5 },
|
||||
36: { "bot": "Pasqually", "movement": "Eyes Left", "flow_in": 4.0, "flow_out": 3.0 },
|
||||
37: { "bot": "Pasqually", "movement": "Eyes Right", "flow_in": 4.0, "flow_out": 3.0 },
|
||||
38: { "bot": "Pasqually", "movement": "Eyelids", "flow_in": 7.5, "flow_out": 5.0 },
|
||||
39: { "bot": "Pasqually", "movement": "Right Arm", "flow_in": 2.0, "flow_out": 1.0 },
|
||||
40: { "bot": "Pasqually", "movement": "Left Arm", "flow_in": 2.0, "flow_out": 1.0 },
|
||||
80: { "bot": "Special", "movement": "Neon Sign", "flow_in": "None", "flow_out": "None" },
|
||||
},
|
||||
|
||||
"cosmetics":
|
||||
[
|
||||
Cosmetics.CyberChuck,
|
||||
Cosmetics.CyberHelen,
|
||||
Cosmetics.CyberMunch,
|
||||
Cosmetics.CyberJasper,
|
||||
Cosmetics.CyberPasqually
|
||||
],
|
||||
"cosmetic_defaults": [ 1, 2, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 3, 2, 0, 1, 0, 0, 0, 0, 2 ]
|
||||
}
|
||||
|
||||
var Cyber3Stage = {
|
||||
"bits": 40,
|
||||
"scene": "res://Scenes/Stages/Cyber3Stage.tscn",
|
||||
"scene_ref_base": "SubViewport/Cyber3Stage/",
|
||||
"camera_count": 4,
|
||||
|
||||
"ust_type": "Cyberamics",
|
||||
|
||||
"bit_mapping":
|
||||
{
|
||||
1: { "bot": "Chuck", "movement": "Mouth", "flow_in": 7.5, "flow_out": 6.0 },
|
||||
2: { "bot": "Chuck", "movement": "Head Left", "flow_in": 1.5, "flow_out": 1.5 },
|
||||
3: { "bot": "Chuck", "movement": "Head Right", "flow_in": 1.5, "flow_out": 1.5 },
|
||||
4: { "bot": "Chuck", "movement": "Head Up", "flow_in": 2.0, "flow_out": 1.0 },
|
||||
5: { "bot": "Chuck", "movement": "Eyes Left", "flow_in": 4.0, "flow_out": 3.0 },
|
||||
6: { "bot": "Chuck", "movement": "Eyes Right", "flow_in": 4.0, "flow_out": 3.0 },
|
||||
7: { "bot": "Chuck", "movement": "Eyelids", "flow_in": 7.5, "flow_out": 5.0 },
|
||||
8: { "bot": "Chuck", "movement": "Right Arm", "flow_in": 2.0, "flow_out": 1.0 },
|
||||
9: { "bot": "Helen", "movement": "Mouth", "flow_in": 7.5, "flow_out": 6.0 },
|
||||
10: { "bot": "Helen", "movement": "Head Left", "flow_in": 1.5, "flow_out": 1.5 },
|
||||
11: { "bot": "Helen", "movement": "Head Right", "flow_in": 1.5, "flow_out": 1.5 },
|
||||
12: { "bot": "Helen", "movement": "Head Up", "flow_in": 2.0, "flow_out": 1.0 },
|
||||
13: { "bot": "Helen", "movement": "Eyes Left", "flow_in": 4.0, "flow_out": 3.0 },
|
||||
14: { "bot": "Helen", "movement": "Eyes Right", "flow_in": 4.0, "flow_out": 3.0 },
|
||||
15: { "bot": "Helen", "movement": "Eyelids", "flow_in": 7.5, "flow_out": 5.0 },
|
||||
16: { "bot": "Helen", "movement": "Right Arm", "flow_in": 2.0, "flow_out": 1.0 },
|
||||
17: { "bot": "Munch", "movement": "Mouth", "flow_in": 7.5, "flow_out": 6.0 },
|
||||
18: { "bot": "Munch", "movement": "Head Left", "flow_in": 1.5, "flow_out": 1.5 },
|
||||
19: { "bot": "Munch", "movement": "Head Right", "flow_in": 1.5, "flow_out": 1.5 },
|
||||
20: { "bot": "Munch", "movement": "Eyes Left", "flow_in": 4.0, "flow_out": 3.0 },
|
||||
21: { "bot": "Munch", "movement": "Eyes Right", "flow_in": 4.0, "flow_out": 3.0 },
|
||||
22: { "bot": "Munch", "movement": "Eyelids", "flow_in": 7.5, "flow_out": 5.0 },
|
||||
23: { "bot": "Munch", "movement": "Right Arm", "flow_in": 2.0, "flow_out": 1.0 },
|
||||
24: { "bot": "Munch", "movement": "Left Arm", "flow_in": 2.0, "flow_out": 1.0 },
|
||||
25: { "bot": "Jasper", "movement": "Mouth", "flow_in": 7.5, "flow_out": 6.0 },
|
||||
26: { "bot": "Jasper", "movement": "Head Left", "flow_in": 1.5, "flow_out": 1.5 },
|
||||
27: { "bot": "Jasper", "movement": "Head Right", "flow_in": 1.5, "flow_out": 1.5 },
|
||||
28: { "bot": "Jasper", "movement": "Head Up", "flow_in": 2.0, "flow_out": 1.0 },
|
||||
29: { "bot": "Jasper", "movement": "Eyes Left", "flow_in": 4.0, "flow_out": 3.0 },
|
||||
30: { "bot": "Jasper", "movement": "Eyes Right", "flow_in": 4.0, "flow_out": 3.0 },
|
||||
31: { "bot": "Jasper", "movement": "Eyelids", "flow_in": 7.5, "flow_out": 5.0 },
|
||||
32: { "bot": "Jasper", "movement": "Strum", "flow_in": 2.0, "flow_out": 1.0 },
|
||||
33: { "bot": "Pasqually", "movement": "Mouth", "flow_in": 7.5, "flow_out": 6.0 },
|
||||
34: { "bot": "Pasqually", "movement": "Head Left", "flow_in": 1.5, "flow_out": 1.5 },
|
||||
35: { "bot": "Pasqually", "movement": "Head Right", "flow_in": 1.5, "flow_out": 1.5 },
|
||||
36: { "bot": "Pasqually", "movement": "Eyes Left", "flow_in": 4.0, "flow_out": 3.0 },
|
||||
37: { "bot": "Pasqually", "movement": "Eyes Right", "flow_in": 4.0, "flow_out": 3.0 },
|
||||
38: { "bot": "Pasqually", "movement": "Eyelids", "flow_in": 7.5, "flow_out": 5.0 },
|
||||
39: { "bot": "Pasqually", "movement": "Right Arm", "flow_in": 2.0, "flow_out": 1.0 },
|
||||
40: { "bot": "Pasqually", "movement": "Left Arm", "flow_in": 2.0, "flow_out": 1.0 },
|
||||
},
|
||||
|
||||
"cosmetics":
|
||||
[
|
||||
Cosmetics.CyberChuck,
|
||||
Cosmetics.CyberHelen,
|
||||
Cosmetics.CyberMunch,
|
||||
Cosmetics.CyberJasper,
|
||||
Cosmetics.CyberPasqually
|
||||
],
|
||||
"cosmetic_defaults": [ 4, 4, 1, 1, 1, 2, 1, 2, 2, 2, 1, 2, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 3 ]
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
uid://cyrgqg7cf187y
|
|
@ -1,19 +0,0 @@
|
|||
extends Control
|
||||
|
||||
@export var vis_name: String
|
||||
@export var scene_handle: String
|
||||
@export var options: Dictionary
|
||||
@export var drop_index: int = 0
|
||||
|
||||
func _ready() -> void:
|
||||
$Panel/Label.text = vis_name
|
||||
for option in options:
|
||||
$Panel/OptionButton.add_item(option)
|
||||
$Panel/OptionButton.select(drop_index)
|
||||
for adjusted in options[$Panel/OptionButton.get_item_text(drop_index)]:
|
||||
get_node(scene_handle+adjusted).visible = options[$Panel/OptionButton.get_item_text(drop_index)][adjusted]
|
||||
|
||||
|
||||
func _on_option_button_item_selected(index: int) -> void:
|
||||
for adjusted in options[$Panel/OptionButton.get_item_text(index)]:
|
||||
get_node(scene_handle+adjusted).visible = options[$Panel/OptionButton.get_item_text(index)][adjusted]
|
|
@ -1 +0,0 @@
|
|||
uid://1f7v3ohsgx0g
|
|
@ -1,117 +0,0 @@
|
|||
extends Node3D
|
||||
|
||||
var animation_player : AnimationPlayer
|
||||
var animation_tree : AnimationTree
|
||||
var blend_tree : AnimationNodeBlendTree
|
||||
|
||||
var movement_states : Dictionary
|
||||
|
||||
func _ready():
|
||||
animation_player = $AnimationPlayer
|
||||
|
||||
animation_tree = AnimationTree.new()
|
||||
animation_tree.anim_player = animation_player.get_path()
|
||||
add_child(animation_tree)
|
||||
|
||||
animation_tree.tree_root = AnimationNodeBlendTree.new()
|
||||
animation_tree.active = true
|
||||
blend_tree = animation_tree.tree_root as AnimationNodeBlendTree
|
||||
|
||||
animation_player.speed_scale = 0
|
||||
|
||||
var animations = animation_player.get_animation_list()
|
||||
|
||||
for animation in animations:
|
||||
movement_states[animation] = [false, 0.0, 0.0, 0.0]
|
||||
|
||||
var prev_name = "Anim_" + animations[0]
|
||||
var old_time_name = "Time_" + animations[0]
|
||||
var old_seek_name = "Seek_" + animations[0]
|
||||
|
||||
var prev_anim_node := AnimationNodeAnimation.new()
|
||||
prev_anim_node.animation = animations[0]
|
||||
blend_tree.add_node(prev_name, prev_anim_node)
|
||||
|
||||
var old_time_node := AnimationNodeTimeScale.new()
|
||||
blend_tree.add_node(old_time_name,old_time_node)
|
||||
|
||||
var _old_seek_node := AnimationNodeTimeSeek.new()
|
||||
blend_tree.add_node(old_seek_name,_old_seek_node)
|
||||
|
||||
blend_tree.connect_node(old_time_name,0,prev_name)
|
||||
blend_tree.connect_node(old_seek_name,0,old_time_name)
|
||||
prev_name = old_seek_name
|
||||
|
||||
for i in range(1, animations.size()):
|
||||
var anim_name = "Anim_" + animations[i]
|
||||
var add_name = "Add_" + animations[i]
|
||||
var time_name = "Time_" + animations[i]
|
||||
var seek_name = "Seek_" + animations[i]
|
||||
|
||||
var new_anim_node := AnimationNodeAnimation.new()
|
||||
new_anim_node.animation = animations[i]
|
||||
blend_tree.add_node(anim_name, new_anim_node)
|
||||
|
||||
var time_node := AnimationNodeTimeScale.new()
|
||||
blend_tree.add_node(time_name,time_node)
|
||||
|
||||
var seek_node := AnimationNodeTimeSeek.new()
|
||||
blend_tree.add_node(seek_name,seek_node)
|
||||
|
||||
var add_node := AnimationNodeAdd2.new()
|
||||
blend_tree.add_node(add_name, add_node)
|
||||
|
||||
blend_tree.connect_node(time_name, 0, anim_name)
|
||||
blend_tree.connect_node(seek_name, 0, time_name)
|
||||
blend_tree.connect_node(add_name, 0, prev_name)
|
||||
blend_tree.connect_node(add_name, 1, seek_name)
|
||||
prev_name = add_name
|
||||
|
||||
blend_tree.connect_node("output", 0, prev_name)
|
||||
|
||||
for i in range(0, animations.size()):
|
||||
animation_tree.set("parameters/Add_" + str(animations[i]) + "/add_amount", 1.0)
|
||||
animation_tree.set("parameters/Seek_" + str(animations[i]) + "/seek_request", 0)
|
||||
animation_tree.set("parameters/Time_" + str(animations[i]) + "/scale", 0)
|
||||
|
||||
func _physics_process(delta: float) -> void:
|
||||
for key in movement_states:
|
||||
var anim_path = "parameters/Seek_" + key + "/seek_request"
|
||||
var state = movement_states[key]
|
||||
if (state[0]):
|
||||
state[1] = clamp(float(state[1]) + (delta * state[2]), 0, 1)
|
||||
else:
|
||||
state[1] = clamp(float(state[1]) - (delta * state[3]), 0, 1)
|
||||
animation_tree.set(anim_path, state[1])
|
||||
|
||||
func _movement_in(movement, rate):
|
||||
var adjusted_rate = rate
|
||||
if (movement == "Head Left"):
|
||||
if (movement_states["Head Right"][0]): adjusted_rate = rate*0.5
|
||||
movement_states["Head Right"][0] = false
|
||||
movement_states["Head Right"][3] = rate
|
||||
movement_states["Body Left"][0] = true
|
||||
movement_states["Body Left"][2] = rate*0.4
|
||||
movement_states["Body Right"][0] = false
|
||||
movement_states["Body Right"][3] = rate*0.4
|
||||
elif (movement == "Head Right"):
|
||||
if (movement_states["Head Left"][0]): adjusted_rate = rate*0.5
|
||||
movement_states["Head Left"][0] = false
|
||||
movement_states["Head Left"][3] = rate
|
||||
movement_states["Body Right"][0] = true
|
||||
movement_states["Body Right"][2] = rate*0.4
|
||||
movement_states["Body Left"][0] = false
|
||||
movement_states["Body Left"][3] = rate*0.4
|
||||
movement_states[movement][0] = true
|
||||
movement_states[movement][2] = adjusted_rate
|
||||
|
||||
func _movement_out(movement, rate):
|
||||
if (movement == "Head Left"):
|
||||
movement_states["Body Right"][0] = false
|
||||
movement_states["Body Right"][3] = 0
|
||||
elif (movement == "Head Right"):
|
||||
movement_states["Body Left"][0] = false
|
||||
movement_states["Body Left"][3] = 0
|
||||
else:
|
||||
movement_states[movement][0] = false
|
||||
movement_states[movement][3] = rate
|
|
@ -1 +0,0 @@
|
|||
uid://du3pqtf3jixvl
|
|
@ -1,498 +0,0 @@
|
|||
extends Control
|
||||
|
||||
var playing : bool = false
|
||||
var recording : bool = false
|
||||
var index : int = 0
|
||||
var playback_rate : int = 1
|
||||
var transport_enabled : bool = false
|
||||
var erase_validated : bool = false
|
||||
var cam_index : int = 0
|
||||
var fullscreen : bool = false
|
||||
|
||||
var showtape_loaded : bool = false
|
||||
var show_name : String
|
||||
|
||||
var current_stage : String
|
||||
|
||||
var stages_info = {
|
||||
"Helen House": Stages.HelenHouse,
|
||||
"Chuck E's Corner": Stages.ChuckEsCorner,
|
||||
"Balcony Stage": Stages.BalconyStage,
|
||||
"C-Stage": Stages.CStage,
|
||||
"Prototype Road Stage": Stages.ProtoRoadStage,
|
||||
"Cyber 3-Stage": Stages.Cyber3Stage
|
||||
}
|
||||
|
||||
signal step(amount: int)
|
||||
signal start_recording()
|
||||
signal end_recording()
|
||||
signal return_to_zero()
|
||||
signal erase_all()
|
||||
|
||||
func reload_stage() -> void:
|
||||
$SequencerPanel/TimelinePanel/VScrollBar.value = 0
|
||||
$FlyoutPanel/Movements/VScrollBar.value = 0
|
||||
$FlyoutPanel/FlowControls/VScrollBar.value = 0
|
||||
$CameraPreview.visible = false
|
||||
for row in $SequencerPanel/TimelinePanel/InvisibleMask/MovementRowsContainer.get_children():
|
||||
row.queue_free()
|
||||
for flow in $FlyoutPanel/FlowControls/InvisibleMask/FlowHandle.get_children():
|
||||
flow.queue_free()
|
||||
for movement in $FlyoutPanel/Movements/InvisibleMask/MovementHandle.get_children():
|
||||
movement.queue_free()
|
||||
for camera in $FlyoutPanel/Camera.get_children():
|
||||
camera.queue_free()
|
||||
for cosmetic_adjustment in $FlyoutPanel/Cosmetics/InvisibleMask/CosmeticsHandle.get_children():
|
||||
cosmetic_adjustment.queue_free()
|
||||
if ($SubViewport.get_child_count() > 0):
|
||||
$SubViewport.get_child(0).queue_free()
|
||||
cam_index = 0
|
||||
var stage = load(stages_info[current_stage]["scene"]).instantiate()
|
||||
$SubViewport.add_child(stage)
|
||||
|
||||
var cam_offset = 4
|
||||
for i in range(1, stages_info[current_stage]["camera_count"]+1):
|
||||
var camera_button = load("res://Scenes/GUI/Controls/CameraButton.tscn").instantiate()
|
||||
camera_button.camera = "Angle " + str(i)
|
||||
camera_button.base_scene_path = "../../../" + stages_info[current_stage]["scene_ref_base"]
|
||||
camera_button.position.y = cam_offset
|
||||
cam_offset += 36
|
||||
$FlyoutPanel/Camera.add_child(camera_button)
|
||||
$FlyoutPanel/Camera.size.y = cam_offset
|
||||
|
||||
var cosmetics_offset = 0
|
||||
var cosmetics_count = 0
|
||||
for cosmetic_subtable in stages_info[current_stage]["cosmetics"]:
|
||||
for cosmetic in cosmetic_subtable:
|
||||
var cosmetic_adjustment = load("res://Scenes/GUI/Controls/CosmeticAdjustment.tscn").instantiate()
|
||||
cosmetic_adjustment.vis_name = cosmetic
|
||||
cosmetic_adjustment.options = cosmetic_subtable[cosmetic]
|
||||
cosmetic_adjustment.scene_handle = "../../../../../" + stages_info[current_stage]["scene_ref_base"]
|
||||
cosmetic_adjustment.drop_index = stages_info[current_stage]["cosmetic_defaults"][cosmetics_count]
|
||||
cosmetic_adjustment.position.y = cosmetics_offset
|
||||
cosmetics_offset += 44
|
||||
cosmetics_count += 1
|
||||
$FlyoutPanel/Cosmetics/InvisibleMask/CosmeticsHandle.add_child(cosmetic_adjustment)
|
||||
$FlyoutPanel/Cosmetics/VScrollBar.max_value = cosmetics_count - 1
|
||||
|
||||
var rows_offset = 0
|
||||
var flows_offset = 0
|
||||
var flow_count = 0
|
||||
for bit_number in stages_info[current_stage]["bit_mapping"]:
|
||||
var bot = stages_info[current_stage]["bit_mapping"][bit_number]["bot"]
|
||||
var movement = stages_info[current_stage]["bit_mapping"][bit_number]["movement"]
|
||||
|
||||
var in_flow = stages_info[current_stage]["bit_mapping"][bit_number]["flow_in"]
|
||||
var out_flow = stages_info[current_stage]["bit_mapping"][bit_number]["flow_out"]
|
||||
if (in_flow is not String):
|
||||
var flow_control = load("res://Scenes/GUI/Controls/FlowControl.tscn").instantiate()
|
||||
flow_control.position.y = flows_offset
|
||||
flow_control.name = str(bit_number) + bot + movement + current_stage
|
||||
flow_control.vis_name = bot + " " + movement
|
||||
flow_control.in_value = in_flow
|
||||
flow_control.out_value = out_flow
|
||||
$FlyoutPanel/FlowControls/InvisibleMask/FlowHandle.add_child(flow_control)
|
||||
flows_offset += 44
|
||||
flow_count += 1
|
||||
|
||||
var row = load("res://Scenes/GUI/Controls/MovementRow.tscn").instantiate()
|
||||
row.name = str(bit_number) + " Bit"
|
||||
row.position.y = rows_offset
|
||||
row.base_scene_path = "../../../../../" + stages_info[current_stage]["scene_ref_base"]
|
||||
row.animatronic = bot
|
||||
row.current_stage = current_stage
|
||||
if (in_flow is String): row.flow_path = "None"
|
||||
row.movement_bit = bit_number
|
||||
row.movement_name = movement
|
||||
$SequencerPanel/TimelinePanel/InvisibleMask/MovementRowsContainer.add_child(row, true)
|
||||
|
||||
var movement_button = load("res://Scenes/GUI/Controls/MovementButton.tscn").instantiate()
|
||||
movement_button.position.y = rows_offset
|
||||
movement_button.base_scene_path = "../../../../../" + stages_info[current_stage]["scene_ref_base"]
|
||||
movement_button.animatronic = bot
|
||||
movement_button.movement_bit = bit_number
|
||||
movement_button.current_stage = current_stage
|
||||
if (in_flow is String): movement_button.flow_path = "None"
|
||||
movement_button.movement_name = movement
|
||||
$FlyoutPanel/Movements/InvisibleMask/MovementHandle.add_child(movement_button)
|
||||
rows_offset += 44
|
||||
$SequencerPanel/TimelinePanel/VScrollBar.max_value = stages_info[current_stage]["bits"] - 1
|
||||
$FlyoutPanel/Movements/VScrollBar.max_value = stages_info[current_stage]["bits"] - 1
|
||||
$FlyoutPanel/FlowControls/VScrollBar.max_value = flow_count - 1
|
||||
$CameraPreview.visible = true
|
||||
|
||||
func _on_stage_change_overwrite_confirmation_dialog_confirmed() -> void:
|
||||
erase_all.emit()
|
||||
current_stage = $MenuBar/StageSelector.get_item_text($MenuBar/StageSelector.selected)
|
||||
reload_stage()
|
||||
|
||||
func update_time_label() -> void:
|
||||
var frames = index % 60
|
||||
var seconds = floori(index/60.0) % 60
|
||||
var minutes = floori(index/3600.0) % 60
|
||||
var hours = floori(index/216000.0)
|
||||
$SequencerPanel/TransportControls/TimeLabel.text = "%d:%02d:%02d:%02d" % [hours, minutes, seconds, frames]
|
||||
|
||||
func set_transport_enabled(enabled: bool):
|
||||
$SequencerPanel/TransportControls/Centered/StepBackwardsButton.disabled = !enabled
|
||||
$SequencerPanel/TransportControls/Centered/FastBackwardsButton.disabled = !enabled
|
||||
$SequencerPanel/TransportControls/Centered/PlayBackwardsButton.disabled = !enabled
|
||||
$SequencerPanel/TransportControls/Centered/PauseButton.disabled = !enabled
|
||||
$SequencerPanel/TransportControls/Centered/StopButton.disabled = !enabled
|
||||
$SequencerPanel/TransportControls/Centered/PlayButton.disabled = !enabled
|
||||
$SequencerPanel/TransportControls/Centered/FastForwardButton.disabled = !enabled
|
||||
$SequencerPanel/TransportControls/Centered/StepForwardButton.disabled = !enabled
|
||||
$SequencerPanel/TransportControls/RecordButton.disabled = !enabled
|
||||
transport_enabled = enabled
|
||||
|
||||
func _ready() -> void:
|
||||
get_tree().get_root().size_changed.connect(_on_size_changed)
|
||||
erase_all.connect(_erase_all)
|
||||
$MenuBar/MenuButton.get_popup().id_pressed.connect(_showtape_menu_button_pressed)
|
||||
OS.request_permissions()
|
||||
current_stage = $MenuBar/StageSelector.get_item_text($MenuBar/StageSelector.selected)
|
||||
reload_stage()
|
||||
|
||||
func _on_stage_selector_item_selected(_index: int) -> void:
|
||||
if (showtape_loaded): $StageChangeOverwriteConfirmationDialog.show()
|
||||
else:
|
||||
current_stage = $MenuBar/StageSelector.get_item_text($MenuBar/StageSelector.selected)
|
||||
reload_stage()
|
||||
|
||||
func _showtape_menu_button_pressed(id: int) -> void:
|
||||
match (id):
|
||||
0: #new
|
||||
if (showtape_loaded): $NewOverwriteConfirmationDialog.show()
|
||||
else: $ShowtapeNewScreen.visible = true
|
||||
1: #load
|
||||
if (showtape_loaded): $LoadOverwriteConfirmationDialog.show()
|
||||
else: $ShowtapeLoadScreen.visible = true
|
||||
2: #save
|
||||
if (showtape_loaded): $ShowtapeSaveScreen.visible = true
|
||||
else: $NoShowtapeLoadedDialog.show()
|
||||
|
||||
|
||||
func _on_showtape_new_audio_browse_button_pressed() -> void:
|
||||
$OpenAudioFileDialog.show()
|
||||
|
||||
func _on_open_audio_file_dialog_file_selected(path: String) -> void:
|
||||
$ShowtapeNewScreen/DialogPanel/AudioFilePath.text = path
|
||||
|
||||
func _on_showtape_new_cancel_button_pressed() -> void:
|
||||
$ShowtapeNewScreen/DialogPanel/AudioFilePath.text = ""
|
||||
$ShowtapeNewScreen/DialogPanel/ShowNameTextBox.text = ""
|
||||
$ShowtapeNewScreen.visible = false
|
||||
|
||||
func _on_showtape_new_create_button_pressed() -> void:
|
||||
if (!FileAccess.file_exists($ShowtapeNewScreen/DialogPanel/AudioFilePath.text.strip_edges())):
|
||||
$FileDoesntExistDialog.show()
|
||||
return
|
||||
if ($ShowtapeNewScreen/DialogPanel/ShowNameTextBox.text.strip_edges() == ""):
|
||||
$EmptyStringDialog.show()
|
||||
return
|
||||
show_name = $ShowtapeNewScreen/DialogPanel/ShowNameTextBox.text.strip_edges()
|
||||
$AudioStreamPlayer.stream = load_audio($ShowtapeNewScreen/DialogPanel/AudioFilePath.text.strip_edges())
|
||||
set_transport_enabled(true)
|
||||
showtape_loaded = true
|
||||
$MenuBar/EditingLabel.text = "Editing: " + show_name
|
||||
$ShowtapeNewScreen/DialogPanel/AudioFilePath.text = ""
|
||||
$ShowtapeNewScreen/DialogPanel/ShowNameTextBox.text = ""
|
||||
$ShowtapeNewScreen.visible = false
|
||||
|
||||
func _on_new_overwrite_confirmation_dialog_confirmed() -> void:
|
||||
erase_all.emit()
|
||||
$ShowtapeNewScreen.visible = true
|
||||
|
||||
func _on_open_showtape_file_dialog_file_selected(path: String) -> void:
|
||||
$ShowtapeLoadScreen/DialogPanel/InFilePath.text = path
|
||||
|
||||
func _on_showtape_load_in_browse_button_pressed() -> void:
|
||||
$OpenShowtapeFileDialog.show()
|
||||
|
||||
func _on_showtape_load_cancel_button_pressed() -> void:
|
||||
$ShowtapeLoadScreen/DialogPanel/InFilePath.text = ""
|
||||
$ShowtapeLoadScreen.visible = false
|
||||
|
||||
func _on_showtape_load_open_button_pressed() -> void:
|
||||
if (!FileAccess.file_exists($ShowtapeLoadScreen/DialogPanel/InFilePath.text.strip_edges())):
|
||||
$FileDoesntExistDialog.show()
|
||||
return
|
||||
var file = FileAccess.open($ShowtapeLoadScreen/DialogPanel/InFilePath.text.strip_edges(), FileAccess.READ)
|
||||
var content = file.get_as_text()
|
||||
var header = content.split(";")[0].split(",")
|
||||
if (header[1] != "2"):
|
||||
$IncorrectShowtapeDialog.dialog_text = "This showtape is not the correct version!"
|
||||
$IncorrectShowtapeDialog.show()
|
||||
return
|
||||
if (header[3] != stages_info[current_stage]["ust_type"]):
|
||||
$IncorrectShowtapeDialog.dialog_text = "This showtape is not compatible with the currently selected stage.\nShowtape stage type: %s\n Current stage type: %s" % [ header[3], stages_info[current_stage]["ust_type"] ]
|
||||
$IncorrectShowtapeDialog.show()
|
||||
return
|
||||
show_name = header[2]
|
||||
plot_data(content.split(";")[1])
|
||||
$AudioStreamPlayer.stream = load_audio_from_buffer(Marshalls.base64_to_raw(content.split(";")[2]))
|
||||
set_transport_enabled(true)
|
||||
showtape_loaded = true
|
||||
$MenuBar/EditingLabel.text = "Editing: " + show_name
|
||||
$ShowtapeLoadScreen/DialogPanel/InFilePath.text = ""
|
||||
$ShowtapeLoadScreen.visible = false
|
||||
|
||||
func _on_load_overwrite_confirmation_dialog_confirmed() -> void:
|
||||
erase_all.emit()
|
||||
$ShowtapeLoadScreen.visible = true
|
||||
|
||||
|
||||
func _on_showtape_save_out_browse_button_pressed() -> void:
|
||||
$SaveShowtapeFileDialog.show()
|
||||
|
||||
func _on_showtape_save_create_button_pressed() -> void:
|
||||
if ($ShowtapeSaveScreen/DialogPanel/OutFilePath.text == ""):
|
||||
$NoFileSpecified.show()
|
||||
return
|
||||
var header = "UST,2,"+show_name.replace(",", "_").replace(";", "_")+","+stages_info[current_stage]["ust_type"]+";"
|
||||
var data_out_string = save_data()
|
||||
var file = FileAccess.open($ShowtapeSaveScreen/DialogPanel/OutFilePath.text, FileAccess.WRITE)
|
||||
file.store_string(header+data_out_string+";"+Marshalls.raw_to_base64($AudioStreamPlayer.stream.data))
|
||||
file.close()
|
||||
$ShowtapeSaveScreen/DialogPanel/OutFilePath.text = ""
|
||||
$ShowtapeSaveScreen.visible = false
|
||||
|
||||
func _on_showtape_save_cancel_button_pressed() -> void:
|
||||
$ShowtapeSaveScreen/DialogPanel/OutFilePath.text = ""
|
||||
$ShowtapeSaveScreen.visible = false
|
||||
|
||||
func _on_save_showtape_file_dialog_file_selected(path: String) -> void:
|
||||
$ShowtapeSaveScreen/DialogPanel/OutFilePath.text = path
|
||||
|
||||
func _input(event: InputEvent) -> void:
|
||||
if event.is_action_pressed("toggle_editor_screen"):
|
||||
$CameraPreview.visible = !$CameraPreview.visible;
|
||||
$CameraFullScreen.visible = !$CameraFullScreen.visible;
|
||||
if event.is_action_pressed("fullscreen"):
|
||||
if (!fullscreen):
|
||||
fullscreen = true
|
||||
DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_FULLSCREEN)
|
||||
else:
|
||||
fullscreen = false
|
||||
DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_WINDOWED)
|
||||
if (event.is_action_pressed("cycle_camera_angle")):
|
||||
cam_index += 1
|
||||
get_node(stages_info[current_stage]["scene_ref_base"] + "Angle " + str((cam_index % stages_info[current_stage]["camera_count"])+1)).current = true
|
||||
if (transport_enabled):
|
||||
if event.is_action_pressed("sequencer_play_pause"):
|
||||
if (playing): _on_pause_button_pressed()
|
||||
else: _on_play_button_pressed()
|
||||
elif event.is_action_pressed("sequencer_play_reverse"):
|
||||
_on_play_backwards_button_pressed()
|
||||
elif event.is_action_pressed("sequencer_fast_reverse"):
|
||||
_on_fast_backwards_button_pressed()
|
||||
elif event.is_action_pressed("sequencer_fast_forward"):
|
||||
_on_fast_forward_button_pressed()
|
||||
elif event.is_action_pressed("sequencer_step_backward"):
|
||||
_on_step_backwards_button_pressed()
|
||||
elif event.is_action_pressed("sequencer_step_forward"):
|
||||
_on_step_forward_button_pressed()
|
||||
elif event.is_action_pressed("sequencer_home"):
|
||||
_on_stop_button_pressed()
|
||||
|
||||
func _physics_process(_delta: float) -> void:
|
||||
if (playing):
|
||||
step.emit(playback_rate)
|
||||
index += playback_rate
|
||||
if (index <= 0): _on_stop_button_pressed()
|
||||
update_time_label()
|
||||
|
||||
func load_audio(path: String) -> AudioStream:
|
||||
var sound
|
||||
match (path.split(".")[-1]):
|
||||
"mp3":
|
||||
sound = AudioStreamMP3.load_from_file(path)
|
||||
"wav":
|
||||
sound = AudioStreamWAV.load_from_file(path)
|
||||
"ogg":
|
||||
sound = AudioStreamOggVorbis.load_from_file(path)
|
||||
return sound
|
||||
|
||||
func load_audio_from_buffer(data: PackedByteArray) -> AudioStream:
|
||||
var sound
|
||||
match (data[0]):
|
||||
73:
|
||||
sound = AudioStreamMP3.load_from_buffer(data)
|
||||
82:
|
||||
sound = AudioStreamWAV.load_from_buffer(data)
|
||||
79:
|
||||
sound = AudioStreamOggVorbis.load_from_buffer(data)
|
||||
return sound
|
||||
|
||||
func _on_size_changed() -> void:
|
||||
$SubViewport.size = $ColorRect.size
|
||||
|
||||
func _on_controls_button_pressed() -> void:
|
||||
$ControlsScreen.visible = true
|
||||
|
||||
func _on_credits_button_pressed() -> void:
|
||||
$CreditsScreen.visible = true
|
||||
|
||||
func _on_input_eater_pressed() -> void:
|
||||
$ControlsScreen.visible = false
|
||||
$CreditsScreen.visible = false
|
||||
$ShowtapeNewScreen.visible = false
|
||||
$ShowtapeLoadScreen.visible = false
|
||||
$ShowtapeSaveScreen.visible = false
|
||||
|
||||
func _on_v_scroll_bar_value_changed(value: float) -> void:
|
||||
$SequencerPanel/TimelinePanel/InvisibleMask/MovementRowsContainer.position.y = value * -44
|
||||
|
||||
func _on_flow_v_scroll_bar_value_changed(value: float) -> void:
|
||||
$FlyoutPanel/FlowControls/InvisibleMask/FlowHandle.position.y = value * -44
|
||||
|
||||
func _on_movement_v_scroll_bar_value_changed(value: float) -> void:
|
||||
$FlyoutPanel/Movements/InvisibleMask/MovementHandle.position.y = value * -44
|
||||
|
||||
func _on_cosmetics_v_scroll_bar_value_changed(value: float) -> void:
|
||||
$FlyoutPanel/Cosmetics/InvisibleMask/CosmeticsHandle.position.y = value * -44
|
||||
|
||||
func _erase_all() -> void:
|
||||
playing = false
|
||||
$AudioStreamPlayer.stop()
|
||||
$AudioStreamPlayer.seek(0)
|
||||
$SequencerPanel/TransportControls/RecordButton.button_pressed = false
|
||||
index = 0
|
||||
update_time_label()
|
||||
show_name = ""
|
||||
$AudioStreamPlayer.stream = null
|
||||
set_transport_enabled(false)
|
||||
showtape_loaded = false
|
||||
$MenuBar/EditingLabel.text = "No showtape loaded."
|
||||
|
||||
func _on_movements_flyout_button_toggled(toggled_on: bool) -> void:
|
||||
$FlyoutPanel/Movements.visible = toggled_on
|
||||
|
||||
func _on_flows_flyout_button_toggled(toggled_on: bool) -> void:
|
||||
$FlyoutPanel/FlowControls.visible = toggled_on
|
||||
|
||||
func _on_camera_flyout_button_toggled(toggled_on: bool) -> void:
|
||||
$FlyoutPanel/Camera.visible = toggled_on
|
||||
|
||||
func _on_cosmetics_flyout_button_toggled(toggled_on: bool) -> void:
|
||||
$FlyoutPanel/Cosmetics.visible = toggled_on
|
||||
|
||||
|
||||
func _on_play_button_pressed() -> void:
|
||||
playback_rate = 1
|
||||
$AudioStreamPlayer.pitch_scale = 1
|
||||
$AudioStreamPlayer.play(float(index)/60.0)
|
||||
playing = true
|
||||
|
||||
func _on_pause_button_pressed() -> void:
|
||||
$AudioStreamPlayer.stop()
|
||||
playing = false
|
||||
|
||||
func _on_play_backwards_button_pressed() -> void:
|
||||
playback_rate = -1
|
||||
$AudioStreamPlayer.stop() # cant play backwards :(
|
||||
playing = true
|
||||
$SequencerPanel/TransportControls/RecordButton.button_pressed = false
|
||||
|
||||
func _on_fast_backwards_button_pressed() -> void:
|
||||
playback_rate = -2
|
||||
$AudioStreamPlayer.stop() # cant play backwards :(
|
||||
playing = true
|
||||
$SequencerPanel/TransportControls/RecordButton.button_pressed = false
|
||||
|
||||
func _on_step_backwards_button_pressed() -> void:
|
||||
playing = false
|
||||
$AudioStreamPlayer.stop()
|
||||
$SequencerPanel/TransportControls/RecordButton.button_pressed = false
|
||||
if (index != 0):
|
||||
step.emit(-1)
|
||||
index -= 1
|
||||
update_time_label()
|
||||
|
||||
func _on_fast_forward_button_pressed() -> void:
|
||||
playback_rate = 2
|
||||
$AudioStreamPlayer.pitch_scale = 2
|
||||
$AudioStreamPlayer.play(float(index)/60.0)
|
||||
playing = true
|
||||
$SequencerPanel/TransportControls/RecordButton.button_pressed = false
|
||||
|
||||
func _on_step_forward_button_pressed() -> void:
|
||||
playing = false
|
||||
$AudioStreamPlayer.stop()
|
||||
$SequencerPanel/TransportControls/RecordButton.button_pressed = false
|
||||
step.emit(1)
|
||||
index += 1
|
||||
update_time_label()
|
||||
|
||||
func _on_record_button_toggled(toggled_on: bool) -> void:
|
||||
if (playing):
|
||||
# starting recording while playing causes issues
|
||||
_on_stop_button_pressed()
|
||||
recording = toggled_on
|
||||
if (toggled_on): start_recording.emit()
|
||||
else: end_recording.emit()
|
||||
|
||||
func _on_stop_button_pressed() -> void:
|
||||
playing = false
|
||||
$AudioStreamPlayer.stop()
|
||||
$AudioStreamPlayer.seek(0)
|
||||
$SequencerPanel/TransportControls/RecordButton.button_pressed = false
|
||||
index = 0
|
||||
return_to_zero.emit()
|
||||
update_time_label()
|
||||
|
||||
func save_data() -> String:
|
||||
var write_out : String = ""
|
||||
var temp_data = {}
|
||||
var longest_channel = 0
|
||||
for movement_row in $SequencerPanel/TimelinePanel/InvisibleMask/MovementRowsContainer.get_children():
|
||||
temp_data[movement_row.movement_bit] = movement_row.movements
|
||||
if (movement_row.movements.size() > longest_channel): longest_channel = movement_row.movements.size()
|
||||
for i in range(longest_channel+1):
|
||||
var total_frame_index = 1
|
||||
var fstring = ""
|
||||
for j in range(64):
|
||||
var f_quartet = 0
|
||||
for k in range(4):
|
||||
if (index_get_safe(i, index_s_get_safe(total_frame_index, temp_data))):
|
||||
f_quartet += int(pow(2, k))
|
||||
total_frame_index += 1
|
||||
fstring = ("%01X" % f_quartet) + fstring
|
||||
write_out += fstring + ","
|
||||
return write_out
|
||||
|
||||
func plot_data(data: String):
|
||||
start_recording.emit()
|
||||
var evil_glass = []
|
||||
for movement_row in $SequencerPanel/TimelinePanel/InvisibleMask/MovementRowsContainer.get_children():
|
||||
evil_glass.append(movement_row.movement_bit)
|
||||
for frame_string in data.split(","):
|
||||
if (frame_string == ""): continue
|
||||
var check_frame_split = frame_string.split()
|
||||
check_frame_split.reverse()
|
||||
for i in stages_info[current_stage]["bit_mapping"]:
|
||||
var er = false
|
||||
if ((check_frame_split[(i - 1) / 4].hex_to_int() & int(pow(2, ((i - 1) % 4)))) == int(pow(2, ((i - 1) % 4)))):
|
||||
er = true
|
||||
$SequencerPanel/TimelinePanel/InvisibleMask/MovementRowsContainer.get_child(evil_glass.find(i)).forced_etchable = true
|
||||
$SequencerPanel/TimelinePanel/InvisibleMask/MovementRowsContainer.get_child(evil_glass.find(i)).etching = er
|
||||
step.emit(1)
|
||||
for movement_row in $SequencerPanel/TimelinePanel/InvisibleMask/MovementRowsContainer.get_children():
|
||||
movement_row.forced_etchable = false
|
||||
movement_row.etching = false
|
||||
end_recording.emit()
|
||||
return_to_zero.emit()
|
||||
|
||||
func index_get_safe(cindex: int, data: Array[bool]) -> bool:
|
||||
if (cindex > data.size()-1): return false
|
||||
if (cindex < 0): return false
|
||||
var out = data.get(cindex)
|
||||
if (out == null): return false
|
||||
return out
|
||||
|
||||
func index_s_get_safe(cindex: int, data: Dictionary) -> Array[bool]:
|
||||
if (cindex > data.size()-1): return [ false ]
|
||||
if (cindex < 0): return [ false ]
|
||||
var out = data.get(cindex)
|
||||
if (out == null): return [ false ]
|
||||
return out
|
|
@ -1 +0,0 @@
|
|||
uid://dfiwoln8mdwm8
|
|
@ -1,21 +0,0 @@
|
|||
extends Control
|
||||
|
||||
@export var in_value : float = 1.0
|
||||
@export var out_value : float = 1.0
|
||||
@export var vis_name : String = ""
|
||||
|
||||
signal in_value_updated(new_value: float)
|
||||
signal out_value_updated(new_value: float)
|
||||
|
||||
func _ready() -> void:
|
||||
$Panel/Label.text = self.vis_name
|
||||
$Panel/InStepper.value = self.in_value
|
||||
$Panel/OutStepper.value = self.out_value
|
||||
|
||||
func _on_in_stepper_value_changed(value: float) -> void:
|
||||
self.in_value = value
|
||||
in_value_updated.emit(value)
|
||||
|
||||
func _on_out_stepper_value_changed(value: float) -> void:
|
||||
self.out_value = value
|
||||
out_value_updated.emit(value)
|
|
@ -1 +0,0 @@
|
|||
uid://blhv0kms1sleu
|
|
@ -1,7 +0,0 @@
|
|||
extends Node3D
|
||||
|
||||
func _movement_in(movement, _rate):
|
||||
get_node(movement).visible = true
|
||||
|
||||
func _movement_out(movement, _rate):
|
||||
get_node(movement).visible = false
|
|
@ -1 +0,0 @@
|
|||
uid://d1p4ite8ts2wi
|
|
@ -1,41 +0,0 @@
|
|||
extends Control
|
||||
|
||||
signal movement_in(movement, rate)
|
||||
signal movement_out(movement, rate)
|
||||
|
||||
@export var animatronic : String
|
||||
@export var movement_bit : int
|
||||
@export var current_stage : String
|
||||
@export var base_scene_path : String
|
||||
@export var flow_path : String = "../../../../../FlyoutPanel/FlowControls/InvisibleMask/FlowHandle/"
|
||||
@export var movement_name : String
|
||||
|
||||
var in_flow : float = 1.0
|
||||
var out_flow : float = 1.0
|
||||
|
||||
func _ready() -> void:
|
||||
$Panel/Button.text = animatronic + " " + movement_name
|
||||
if (animatronic != "None"):
|
||||
var animatronic_node = get_node(base_scene_path + animatronic)
|
||||
movement_in.connect(animatronic_node._movement_in)
|
||||
movement_out.connect(animatronic_node._movement_out)
|
||||
if (flow_path != "None"):
|
||||
var flow_control = get_node(flow_path + str(movement_bit) + animatronic + movement_name + current_stage)
|
||||
flow_control.in_value_updated.connect(self._update_in_flow)
|
||||
flow_control.out_value_updated.connect(self._update_out_flow)
|
||||
in_flow = flow_control.in_value
|
||||
out_flow = flow_control.out_value
|
||||
|
||||
func _update_in_flow(new_value: float) -> void:
|
||||
in_flow = new_value
|
||||
|
||||
func _update_out_flow(new_value: float) -> void:
|
||||
out_flow = new_value
|
||||
|
||||
func _on_button_button_down() -> void:
|
||||
movement_in.emit(movement_name, in_flow)
|
||||
$Panel/IndicatorPanel/Green.visible = true
|
||||
|
||||
func _on_button_button_up() -> void:
|
||||
movement_out.emit(movement_name, out_flow)
|
||||
$Panel/IndicatorPanel/Green.visible = false
|
|
@ -1 +0,0 @@
|
|||
uid://cg157l4uo7ki8
|
|
@ -1,6 +0,0 @@
|
|||
extends Control
|
||||
|
||||
@export var x_offset : int = 0
|
||||
|
||||
func _ready() -> void:
|
||||
self.size.x += x_offset
|
|
@ -1 +0,0 @@
|
|||
uid://b4qincechbf63
|
|
@ -1,176 +0,0 @@
|
|||
extends Panel
|
||||
|
||||
@export var movement_bit : int = 0
|
||||
@export var movement_name : String = "Name"
|
||||
@export var flow_path : String = "../../../../../FlyoutPanel/FlowControls/InvisibleMask/FlowHandle/"
|
||||
@export var base_scene_path : String
|
||||
@export var current_stage : String
|
||||
@export var animatronic : String
|
||||
@export var movements : Array[bool]
|
||||
@export var etching: bool = false
|
||||
@export var forced_etchable: bool = false
|
||||
|
||||
var in_flow : float = 1.0
|
||||
var out_flow : float = 1.0
|
||||
|
||||
var key_binding : InputEventKey = InputEventKey.new()
|
||||
var current_index : int = 0
|
||||
var binding : bool = false
|
||||
var held_on_previous_frame : bool = false
|
||||
var playback_held_on_previous_frame : bool = false
|
||||
var recording : bool = false
|
||||
var playing : bool = true
|
||||
var current_block_indicator
|
||||
|
||||
signal movement_in(movement, rate)
|
||||
signal movement_out(movement, rate)
|
||||
|
||||
func set_at_current() -> void:
|
||||
if (current_index > self.movements.size()-1): self.movements.append(true)
|
||||
else: self.movements.set(current_index, true)
|
||||
if (check_at_index(current_index-1)): current_block_indicator.get_node("ColorRect").size.x += 2
|
||||
else:
|
||||
current_block_indicator = load("res://Scenes/GUI/Controls/MovementFrameIndicatorOn.tscn").instantiate()
|
||||
current_block_indicator.position.x = current_index * 2
|
||||
$MovementsBG/InvisibleMask/MovementsHandle.add_child(current_block_indicator)
|
||||
|
||||
func unset_at_current() -> void:
|
||||
if (current_index > self.movements.size()-1): self.movements.append(false)
|
||||
else: self.movements.set(current_index, false)
|
||||
if (!check_at_index(current_index-1)): current_block_indicator.get_node("ColorRect").size.x += 2
|
||||
else:
|
||||
current_block_indicator = load("res://Scenes/GUI/Controls/MovementFrameIndicatorOff.tscn").instantiate()
|
||||
current_block_indicator.position.x = current_index * 2
|
||||
$MovementsBG/InvisibleMask/MovementsHandle.add_child(current_block_indicator)
|
||||
|
||||
func check_at_current() -> bool:
|
||||
if (current_index > self.movements.size()-1): return false
|
||||
var out = self.movements.get(current_index)
|
||||
if (out == null): return false
|
||||
return out
|
||||
|
||||
func check_at_index(cindex: int) -> bool:
|
||||
if (cindex > self.movements.size()-1): return false
|
||||
if (cindex < 0): return false
|
||||
var out = self.movements.get(cindex)
|
||||
if (out == null): return false
|
||||
return out
|
||||
|
||||
func check_if_erasing() -> bool:
|
||||
if (forced_etchable): return true
|
||||
return (!$LockButton.button_pressed) && key_binding.keycode != 0
|
||||
|
||||
func _step(amount: int):
|
||||
if (recording && check_if_erasing()):
|
||||
if (etching): set_at_current()
|
||||
else: unset_at_current()
|
||||
if (playing):
|
||||
if (check_at_current()):
|
||||
if (!playback_held_on_previous_frame):
|
||||
movement_in.emit(movement_name, in_flow)
|
||||
playback_held_on_previous_frame = true;
|
||||
else:
|
||||
if (playback_held_on_previous_frame):
|
||||
movement_out.emit(movement_name, out_flow)
|
||||
playback_held_on_previous_frame = false;
|
||||
current_index += amount
|
||||
$MovementsBG/InvisibleMask/MovementsHandle.position.x += -2*amount
|
||||
|
||||
func _return_to_zero():
|
||||
current_index = 0
|
||||
$MovementsBG/InvisibleMask/MovementsHandle.position.x = 120
|
||||
movement_out.emit(movement_name, out_flow)
|
||||
|
||||
func _erase_all() -> void:
|
||||
_return_to_zero()
|
||||
_on_clear_button_pressed()
|
||||
|
||||
func _start_recording():
|
||||
recording = true
|
||||
|
||||
func _end_recording():
|
||||
recording = false
|
||||
|
||||
func _start_playback():
|
||||
playing = true
|
||||
|
||||
func _end_playback():
|
||||
playing = false
|
||||
|
||||
func update_text() -> void:
|
||||
if (animatronic == "None"): $Button.text = "%d - Unused (%s)" % [movement_bit, key_binding.as_text() if key_binding.keycode != 0 else "Unbound"]
|
||||
else: $Button.text = "%d - %s %s (%s)" % [movement_bit, animatronic, movement_name, key_binding.as_text() if key_binding.keycode != 0 else "Unbound"]
|
||||
|
||||
func _update_in_flow(new_value: float) -> void:
|
||||
in_flow = new_value
|
||||
|
||||
func _update_out_flow(new_value: float) -> void:
|
||||
out_flow = new_value
|
||||
|
||||
func _ready() -> void:
|
||||
if (flow_path != "None"):
|
||||
var flow_control = get_node(flow_path + str(movement_bit) + animatronic + movement_name + current_stage)
|
||||
flow_control.in_value_updated.connect(self._update_in_flow)
|
||||
flow_control.out_value_updated.connect(self._update_out_flow)
|
||||
in_flow = flow_control.in_value
|
||||
out_flow = flow_control.out_value
|
||||
if (animatronic != "None"):
|
||||
var animatronic_node = get_node(base_scene_path + animatronic)
|
||||
movement_in.connect(animatronic_node._movement_in)
|
||||
movement_out.connect(animatronic_node._movement_out)
|
||||
movement_in.connect(self._movement_in)
|
||||
movement_out.connect(self._movement_out)
|
||||
var editor = get_node("../../../../../")
|
||||
editor.step.connect(_step)
|
||||
editor.start_recording.connect(_start_recording)
|
||||
editor.end_recording.connect(_end_recording)
|
||||
editor.return_to_zero.connect(_return_to_zero)
|
||||
editor.erase_all.connect(_erase_all)
|
||||
current_block_indicator = load("res://Scenes/GUI/Controls/MovementFrameIndicatorOff.tscn").instantiate()
|
||||
update_text()
|
||||
|
||||
func _process(_delta: float) -> void:
|
||||
if (binding || key_binding.keycode == 0): return
|
||||
if (Input.is_key_pressed(key_binding.keycode)):
|
||||
if (!held_on_previous_frame):
|
||||
movement_in.emit(movement_name, in_flow)
|
||||
held_on_previous_frame = true;
|
||||
else:
|
||||
if (held_on_previous_frame):
|
||||
movement_out.emit(movement_name, out_flow)
|
||||
held_on_previous_frame = false;
|
||||
|
||||
func _movement_in(_movement, _rate):
|
||||
$ActiveBG.visible = true
|
||||
if (recording): etching = true
|
||||
|
||||
func _movement_out(_movement, _rate):
|
||||
$ActiveBG.visible = false
|
||||
etching = false
|
||||
|
||||
func _on_button_pressed() -> void:
|
||||
if (binding):
|
||||
update_text()
|
||||
binding = false
|
||||
return
|
||||
if (key_binding.keycode == 0):
|
||||
$Button.text = "Press a key to bind."
|
||||
binding = true
|
||||
else:
|
||||
key_binding.keycode = KEY_NONE
|
||||
update_text()
|
||||
|
||||
func _input(event: InputEvent) -> void:
|
||||
if (event is InputEventKey && binding):
|
||||
if (event.keycode != KEY_ESCAPE):
|
||||
key_binding = event
|
||||
binding = false
|
||||
update_text()
|
||||
return
|
||||
|
||||
func _on_clear_button_pressed() -> void:
|
||||
if ($LockButton.button_pressed): return
|
||||
movements = []
|
||||
for indicator in $MovementsBG/InvisibleMask/MovementsHandle.get_children():
|
||||
indicator.queue_free()
|
||||
current_block_indicator = load("res://Scenes/GUI/Controls/MovementFrameIndicatorOff.tscn").instantiate()
|
|
@ -1 +0,0 @@
|
|||
uid://tn3aaldu7mm2
|
Loading…
Add table
Add a link
Reference in a new issue