Compare commits

..

85 Commits

Author SHA1 Message Date
Spencer Killen f1c66dcb92
a 2023-11-12 16:59:56 -07:00
alex-kumpula fb7054c66f Changed the scene the play button points to 2023-11-12 16:50:48 -07:00
Spencer Killen 8e7b3882db
a 2023-11-12 16:50:16 -07:00
Spencer Killen 095801439d
Merge branch 'master' of https://git.sjkillen.ca/sjkillen/hurrmmm 2023-11-12 16:48:17 -07:00
Spencer Killen 0ef8c353c2
a 2023-11-12 16:47:53 -07:00
alex-kumpula adfdc67544 Added collision sound effect 2023-11-12 16:42:00 -07:00
alex-kumpula 63f3bdec03 Merge branch 'master' of https://git.sjkillen.ca/sjkillen/hurrmmm 2023-11-12 16:31:47 -07:00
alex-kumpula ee33ad74b1 Changed main scene 2023-11-12 16:31:44 -07:00
Spencer Killen 5689b713ca
Merge branch 'master' of https://git.sjkillen.ca/sjkillen/hurrmmm 2023-11-12 16:25:54 -07:00
Spencer Killen 44f0abbedf
a 2023-11-12 16:25:53 -07:00
alex-kumpula dfed18b62c added domino chain 2023-11-12 16:18:51 -07:00
Spencer Killen d7655bb1e5
a 2023-11-12 16:11:17 -07:00
Spencer Killen 892a3609b6
a 2023-11-12 16:02:29 -07:00
Spencer Killen 3978e1160c
Remove backfaces 2023-11-12 15:59:32 -07:00
alex-kumpula e47157b3a0 Started main scene 2023-11-12 15:49:39 -07:00
Spencer Killen e811a84538
Merge branch 'master' of https://git.sjkillen.ca/sjkillen/hurrmmm 2023-11-12 15:48:55 -07:00
Spencer Killen e2c9d9cd1a
a 2023-11-12 15:48:54 -07:00
alex-kumpula e7e85088e2 Added present 2023-11-12 15:33:03 -07:00
alex-kumpula db83354c6a Added button sound 2023-11-12 15:07:40 -07:00
Spencer Killen 13e856791b
Merge branch 'master' of https://git.sjkillen.ca/sjkillen/hurrmmm 2023-11-12 14:56:30 -07:00
Spencer Killen da70c0ebb4
balloon 2023-11-12 14:56:29 -07:00
alex-kumpula 473858c5eb Merge branch 'master' of https://git.sjkillen.ca/sjkillen/hurrmmm 2023-11-12 14:41:08 -07:00
Spencer Killen 8490650ffe
a 2023-11-12 14:40:51 -07:00
alex-kumpula 0856765e9c changed scene 2023-11-12 14:40:49 -07:00
Spencer Killen 0c1439c4f3
a 2023-11-12 14:38:27 -07:00
Spencer Killen 03ec6a2651
Merge branch 'master' of https://git.sjkillen.ca/sjkillen/hurrmmm 2023-11-12 14:29:58 -07:00
Spencer Killen cb2e0b6c5e
menu 2023-11-12 14:29:55 -07:00
alex-kumpula 4e2465aeff domino 2023-11-12 14:27:00 -07:00
alex-kumpula b2ad226825 Added new music 2023-11-12 14:13:29 -07:00
Spencer Killen 6f18e82a5d
Add domino 2023-11-12 14:11:15 -07:00
alex-kumpula 04def51693 Added Domino 2023-11-12 14:04:14 -07:00
Spencer Killen 412b2f4e51
a 2023-11-12 13:56:17 -07:00
Spencer Killen 6d491f60c7
a 2023-11-12 13:53:03 -07:00
Spencer Killen 3fbdf2ded0
a 2023-11-12 13:52:55 -07:00
alex-kumpula 5e81e61e64 Updated Balloon Material 2023-11-12 13:43:57 -07:00
alex-kumpula 51f67fafab Added Balloon 2023-11-12 13:30:55 -07:00
alex-kumpula 6693fed2bf Added music from Jawdat 2023-11-12 12:35:41 -07:00
Spencer Killen 5e213f3dba
time warp effect 2023-11-12 11:45:10 -07:00
Spencer Killen b4d6b40cb0
a 2023-11-12 03:17:46 -07:00
Spencer Killen cbf47648a4
a 2023-11-12 03:16:34 -07:00
Spencer Killen e827cbad8f
Merge branch 'master' of https://git.sjkillen.ca/sjkillen/hurrmmm 2023-11-12 03:06:35 -07:00
Spencer Killen 1bd93c1161
Merge branch 'master' of https://git.sjkillen.ca/sjkillen/hurrmmm 2023-11-12 03:02:13 -07:00
alex-kumpula d9002b2171 Added igloo to schene 2023-11-12 03:01:33 -07:00
Spencer Killen 978703caa3
child child 2023-11-12 02:59:43 -07:00
alex-kumpula dfb805e218 Merge branch 'master' of https://git.sjkillen.ca/sjkillen/hurrmmm 2023-11-12 02:53:20 -07:00
alex-kumpula 67a6dc7ff4 Added Igloo 2023-11-12 02:53:06 -07:00
Spencer Killen 7ffaa30f6d
a 2023-11-12 02:01:54 -07:00
Spencer Killen c7c3cd4d97
Merge branch 'master' of https://git.sjkillen.ca/sjkillen/hurrmmm 2023-11-12 01:43:08 -07:00
Spencer Killen a65dc1276b
cake 2023-11-12 01:42:51 -07:00
alex-kumpula 5862623196 Added child 2023-11-12 01:23:21 -07:00
Spencer Killen 6693cd26b4
hit history 2023-11-11 22:38:31 -07:00
Spencer Killen ff8c3ef752
Merge branch 'master' of https://git.sjkillen.ca/sjkillen/hurrmmm 2023-11-11 22:20:14 -07:00
Spencer Killen a7c1092f50
a 2023-11-11 22:20:13 -07:00
alex-kumpula 5438bc9ffd Added signal guards 2023-11-11 21:36:00 -07:00
Spencer Killen cf12a96a75
a 2023-11-11 21:32:30 -07:00
Spencer Killen d221962270
Merge branch 'master' of https://git.sjkillen.ca/sjkillen/hurrmmm into sjkillen 2023-11-11 21:25:26 -07:00
Spencer Killen 972c374f4e
a 2023-11-11 21:25:18 -07:00
alex-kumpula 33333714e2 Can hold down Advance and Regress now 2023-11-11 21:23:21 -07:00
alex-kumpula eb668bfd63 Have TASable auto fetch parent if it is null 2023-11-11 21:05:57 -07:00
Spencer Killen 8906d69760
disable camera tweening 2023-11-11 20:56:47 -07:00
Spencer Killen 05cd717984
a 2023-11-11 20:49:19 -07:00
Spencer Killen 3fa504f25a
Merge branch 'master' of https://git.sjkillen.ca/sjkillen/hurrmmm into sjkillen 2023-11-11 20:46:29 -07:00
alex-kumpula 86b29ec476 Save rotations and shorter frame length 2023-11-11 20:46:11 -07:00
Spencer Killen 726de6e49b
Merge branch 'master' of https://git.sjkillen.ca/sjkillen/hurrmmm into sjkillen 2023-11-11 20:46:05 -07:00
Spencer Killen 36a1cdc806
. 2023-11-11 20:45:57 -07:00
alex-kumpula 35f9476c3d Added Timescale System 2023-11-11 19:58:56 -07:00
Spencer Killen 015660c7bd
Merge branch 'master' of https://git.sjkillen.ca/sjkillen/hurrmmm 2023-11-11 18:58:31 -07:00
Spencer Killen dc2c3d94b7
Add signal 2023-11-11 18:58:30 -07:00
alex-kumpula d3324ad81f TASable now saves linear and angular velocities 2023-11-11 18:50:16 -07:00
Spencer Killen 0bac49d257
aaaaaaaaaa 2023-11-11 18:48:23 -07:00
alex-kumpula 7417ff9a11 forgot this 2023-11-11 17:47:53 -07:00
alex-kumpula 9fb9b92aec Fixed weird issue with grape tscn and TASable 2023-11-11 17:47:26 -07:00
Spencer Killen 8c1b431f84
Merge branch 'master' of https://git.sjkillen.ca/sjkillen/hurrmmm into sjkillen 2023-11-11 17:25:24 -07:00
Spencer Killen 3d4c75ddab
progress2 2023-11-11 17:24:52 -07:00
alex-kumpula 5f6e7a3e8e Added regression and advancement to TASable 2023-11-11 17:23:00 -07:00
alex-kumpula b3259e9585 Merge branch 'TAS_UI' 2023-11-11 16:14:24 -07:00
Spencer Killen db7474043b
progress 2023-11-11 16:12:46 -07:00
alex-kumpula 84aa101636 Made the Advance Button disable when it should 2023-11-11 16:08:10 -07:00
alex-kumpula 27a98286ef UI is working 2023-11-11 15:47:37 -07:00
alex-kumpula a7f5ea6fd5 Added TAS UI 2023-11-11 15:08:59 -07:00
Spencer Killen 13d6939103
Merge branch 'master' of https://git.sjkillen.ca/sjkillen/hurrmmm into sjkillen 2023-11-11 14:57:07 -07:00
Spencer Killen 8891190a31
Add radial charger 2023-11-11 14:56:43 -07:00
alex-kumpula 1ce9c11a02 Added TASable 2023-11-11 14:47:07 -07:00
alex-kumpula 9f7780f176 Merge branch 'TAS_system' 2023-11-11 13:16:20 -07:00
Spencer Killen 1744e6a727
occlusion 2023-11-11 13:08:24 -07:00
147 changed files with 5417 additions and 96 deletions

View File

@ -6,3 +6,13 @@ Shaders:
Watercolor: https://c-chen99.github.io/watercolorShader/final.html Watercolor: https://c-chen99.github.io/watercolorShader/final.html
CMKY: https://www.shadertoy.com/view/MltBW4 CMKY: https://www.shadertoy.com/view/MltBW4
Fresnel: https://godotshaders.com/snippet/fresnel/ Fresnel: https://godotshaders.com/snippet/fresnel/
Code:
occlussion shader: https://www.reddit.com/r/godot/comments/rww6e9/comment/hrfa51g/?utm_source=share&utm_medium=web2x&context=3
Sound:
billiard-clack: https://freesound.org/people/Za-Games/sounds/539854/
https://freesound.org/people/original_sound/sounds/372197/

6
blends/.gitignore vendored Normal file
View File

@ -0,0 +1,6 @@
*.blend1
*.blend2
*.blend3
*.blend4
*.blend5

BIN
blends/Child_Colour.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
blends/Child_Normal.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
blends/Domino.blend (Stored with Git LFS) Normal file

Binary file not shown.

BIN
blends/Domino_Colour.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
blends/Igloo_Colour.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
blends/Igloo_Normal.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
blends/Present_Colour.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
blends/balloon.blend (Stored with Git LFS) Normal file

Binary file not shown.

BIN
blends/cake.blend (Stored with Git LFS) Normal file

Binary file not shown.

BIN
blends/cake_albedo.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
blends/cake_normals.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
blends/child.blend (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -23,8 +23,8 @@ def export(path: str):
use_selection=True, use_selection=True,
export_colors=False, export_colors=False,
export_apply=True, export_apply=True,
export_animation_mode="NLA_TRACKS", #export_animation_mode="NLA_TRACKS",
export_anim_slide_to_zero=True, #export_anim_slide_to_zero=True,
) )
try: try:

BIN
blends/grape.blend (Stored with Git LFS) Normal file

Binary file not shown.

BIN
blends/igloo.blend (Stored with Git LFS) Normal file

Binary file not shown.

BIN
blends/present.blend (Stored with Git LFS) Normal file

Binary file not shown.

BIN
blends/small_room.blend (Stored with Git LFS)

Binary file not shown.

Binary file not shown.

BIN
blends/string.blend (Stored with Git LFS) Normal file

Binary file not shown.

8
godot/Button.gd Normal file
View File

@ -0,0 +1,8 @@
extends Button
func _on_pressed():
get_tree().change_scene_to_file("res://main.tscn")
func _input(event):
if event.is_action("charge"):
_on_pressed()

30
godot/CollisionSound.cs Normal file
View File

@ -0,0 +1,30 @@
using Godot;
using System;
public partial class CollisionSound : AudioStreamPlayer
{
Node controller;
bool firstPlayed = false;
public override void _Ready()
{
controller = GetNode<Node>("/root/ControllerEventBus");
Callable callable = new Callable(this, MethodName.OnControllerContact);
controller.Connect("new_target", callable);
this.OnControllerContact(this);
}
public void OnControllerContact(Node node)
{
if (firstPlayed) this.Play();
firstPlayed = true;
}
}

BIN
godot/Domino.glb (Stored with Git LFS) Normal file

Binary file not shown.

41
godot/Domino.glb.import Normal file
View File

@ -0,0 +1,41 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://dmttoc025f26x"
path="res://.godot/imported/Domino.glb-425929d56fd611b3f418978da5619fbf.scn"
[deps]
source_file="res://Domino.glb"
dest_files=["res://.godot/imported/Domino.glb-425929d56fd611b3f418978da5619fbf.scn"]
[params]
nodes/root_type="Node3D"
nodes/root_name="Scene Root"
nodes/apply_root_scale=true
nodes/root_scale=1.0
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
import_script/path="res://physics/import_billiard.gd"
_subresources={
"nodes": {
"PATH:Domino2": {
"generate/physics": true,
"physics/body_type": 1,
"physics/shape_type": 3,
"primitive/size": Vector3(0.01, 0.01, 0.01)
}
}
}
gltf/embedded_image_handling=1

BIN
godot/Domino_Domino_Colour.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ds1wgysoytgp3"
path.s3tc="res://.godot/imported/Domino_Domino_Colour.png-07a86699fb9aab3fc9c77e79728398fd.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://Domino_Domino_Colour.png"
dest_files=["res://.godot/imported/Domino_Domino_Colour.png-07a86699fb9aab3fc9c77e79728398fd.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

6
godot/Hurrmmm.csproj.old Normal file
View File

@ -0,0 +1,6 @@
<Project Sdk="Godot.NET.Sdk/4.1.3">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<EnableDynamicLoading>true</EnableDynamicLoading>
</PropertyGroup>
</Project>

View File

@ -0,0 +1,6 @@
<Project Sdk="Godot.NET.Sdk/4.1.1">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<EnableDynamicLoading>true</EnableDynamicLoading>
</PropertyGroup>
</Project>

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,25 @@
[gd_scene load_steps=4 format=3 uid="uid://db3h7pscfif84"]
[ext_resource type="PackedScene" uid="uid://dl005e2rvn86b" path="res://balloon.glb" id="1_sa42c"]
[sub_resource type="PhysicsMaterial" id="PhysicsMaterial_wfeli"]
friction = 0.0
bounce = 12.8
[sub_resource type="SphereShape3D" id="SphereShape3D_pjfh4"]
radius = 0.258256
[node name="balloon" instance=ExtResource("1_sa42c")]
mass = 0.1
physics_material_override = SubResource("PhysicsMaterial_wfeli")
gravity_scale = 0.0
[node name="Balloon_String" parent="." index="2"]
transform = Transform3D(-0.002, 0, -1.74846e-10, 0, 0.286, 0, 1.74846e-10, 0, -0.002, 0, -0.378486, 0)
[node name="Balloon" parent="." index="3"]
transform = Transform3D(0.3, 0, 0, 0, 0.3, 0, 0, 0, 0.3, 0, 0, 0)
[node name="CollisionShape3D" parent="." index="4"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.239173, 0)
shape = SubResource("SphereShape3D_pjfh4")

View File

@ -0,0 +1,7 @@
[gd_resource type="ShaderMaterial" load_steps=2 format=3 uid="uid://bnn6mfpgaqxvb"]
[ext_resource type="Shader" path="res://Objects/balloon/balloon_shader.gdshader" id="1_i5nh0"]
[resource]
render_priority = 0
shader = ExtResource("1_i5nh0")

View File

@ -0,0 +1,8 @@
[gd_resource type="StandardMaterial3D" format=3 uid="uid://cqhehgwersrkl"]
[resource]
albedo_color = Color(1, 0, 0, 1)
metallic = 0.26
roughness = 0.0
clearcoat_enabled = true
clearcoat_roughness = 0.83

View File

@ -0,0 +1,9 @@
shader_type spatial;
render_mode specular_schlick_ggx;
void fragment() {
ALBEDO = vec3(255.0, 0.0, 0.0);
METALLIC = 0.9;
ROUGHNESS = 0.2;
ALPHA = 0.98;
}

View File

@ -0,0 +1,8 @@
[gd_resource type="StandardMaterial3D" format=3 uid="uid://3r1biqr3c4l7"]
[resource]
resource_name = "string"
cull_mode = 2
vertex_color_use_as_albedo = true
albedo_color = Color(0.906332, 0.906332, 0.906332, 1)
roughness = 0.5

View File

@ -0,0 +1,8 @@
[gd_scene load_steps=2 format=3 uid="uid://dkoiku0t4b0o7"]
[ext_resource type="PackedScene" uid="uid://4imncqpi4gw5" path="res://string.glb" id="1_otewq"]
[node name="string" instance=ExtResource("1_otewq")]
[node name="Balloon_String" parent="." index="0"]
transform = Transform3D(-0.00735031, 1.59288e-05, -5.56369e-06, 1.21871e-07, 1, -6.21002e-06, 5.56359e-06, -0.000844878, -0.00735031, 0, -1.5621, 0)

View File

@ -0,0 +1,19 @@
extends Node3D
var delta := 1.0 / float(Engine.physics_ticks_per_second)
func _ready():
Engine.get_physics_frames()
TAS_System.FrameIncremented.connect(frame_inc)
TAS_System.FramesAdvanced.connect(frames_change)
TAS_System.FramesRegressed.connect(frames_change)
func frame_inc(frame: int):
%AnimationTree.advance(delta)
func frames_change(start: int, end: int):
%AnimationTree.advance((end - start)*delta)
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta):
pass

View File

@ -0,0 +1,57 @@
[gd_scene load_steps=9 format=3 uid="uid://cfpiau12q3fut"]
[ext_resource type="PackedScene" uid="uid://c2kmady6gqslx" path="res://child.glb" id="1_rqu88"]
[ext_resource type="Script" path="res://animation_tree.gd" id="2_tcc3g"]
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_uc42e"]
animation = &"JumpingJacksNLA"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_ijpln"]
animation = &"JumpingJacksNLA"
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_57k3o"]
switch_mode = 2
advance_mode = 2
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_3idly"]
switch_mode = 2
advance_mode = 2
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_h2mkw"]
switch_mode = 2
advance_mode = 2
[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_u0o4a"]
states/JumpingJacksNLA/node = SubResource("AnimationNodeAnimation_ijpln")
states/JumpingJacksNLA/position = Vector2(559, 54)
"states/JumpingJacksNLA 2/node" = SubResource("AnimationNodeAnimation_uc42e")
"states/JumpingJacksNLA 2/position" = Vector2(633, 131)
transitions = ["JumpingJacksNLA", "JumpingJacksNLA 2", SubResource("AnimationNodeStateMachineTransition_57k3o"), "JumpingJacksNLA 2", "JumpingJacksNLA", SubResource("AnimationNodeStateMachineTransition_3idly"), "Start", "JumpingJacksNLA", SubResource("AnimationNodeStateMachineTransition_h2mkw")]
[node name="child" instance=ExtResource("1_rqu88")]
[node name="Skeleton3D" parent="Armature" index="0"]
bones/0/position = Vector3(0, 2.32035, 0)
bones/3/rotation = Quaternion(0.0514876, -5.4438e-17, -2.71031e-16, 0.998674)
bones/5/rotation = Quaternion(0.0965706, 0.063607, -0.119505, 0.986077)
bones/6/rotation = Quaternion(0.0206859, -0.0873376, 0.0694537, 0.993539)
bones/7/rotation = Quaternion(0.00777981, 0.0423361, -0.0822345, 0.995683)
bones/9/rotation = Quaternion(0.0965705, -0.063607, 0.119505, 0.986077)
bones/10/rotation = Quaternion(0.0206859, 0.0873376, -0.0694538, 0.993539)
bones/11/rotation = Quaternion(0.00777978, -0.0423361, 0.0822345, 0.995683)
bones/12/rotation = Quaternion(0.626251, 0.334163, 0.616519, -0.340661)
bones/13/rotation = Quaternion(-0.27126, -0.0288476, 0.0393126, 0.96127)
bones/14/rotation = Quaternion(-0.0251956, -0.00324478, 0.00115795, 0.999677)
bones/15/rotation = Quaternion(0.0339653, 0.0223564, -0.693306, 0.719495)
bones/16/rotation = Quaternion(0.626251, -0.334163, -0.616519, -0.340661)
bones/17/rotation = Quaternion(-0.27126, 0.0288476, -0.0393126, 0.96127)
bones/18/rotation = Quaternion(-0.0251956, 0.00324479, -0.00115795, 0.999677)
bones/19/rotation = Quaternion(0.0339653, -0.0223564, 0.693306, 0.719495)
[node name="AnimationTree" type="AnimationTree" parent="." index="2"]
unique_name_in_owner = true
tree_root = SubResource("AnimationNodeStateMachine_u0o4a")
anim_player = NodePath("../AnimationPlayer")
active = true
process_callback = 2
script = ExtResource("2_tcc3g")

BIN
godot/Objects/child/child_Child_Colour.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,36 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://75axeu8xnj41"
path.bptc="res://.godot/imported/child_Child_Colour.png-c4c784e55c596fd0d230ba7bb48dd996.bptc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
generator_parameters={}
[deps]
source_file="res://Objects/child/child_Child_Colour.png"
dest_files=["res://.godot/imported/child_Child_Colour.png-c4c784e55c596fd0d230ba7bb48dd996.bptc.ctex"]
[params]
compress/mode=2
compress/high_quality=true
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

BIN
godot/Objects/child/child_Child_Normal.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,36 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b5s7geaamdsd1"
path.bptc="res://.godot/imported/child_Child_Normal.png-e0c80530ce3d1ba886433b18216a7e2c.bptc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
generator_parameters={}
[deps]
source_file="res://Objects/child/child_Child_Normal.png"
dest_files=["res://.godot/imported/child_Child_Normal.png-e0c80530ce3d1ba886433b18216a7e2c.bptc.ctex"]
[params]
compress/mode=2
compress/high_quality=true
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=1
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=1
roughness/src_normal="res://child_Child_Normal.png"
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

BIN
godot/Objects/domino/Domino_Domino_Colour.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,36 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bvkvdhygvvxae"
path.s3tc="res://.godot/imported/Domino_Domino_Colour.png-067d515b08069aa1e54b6d66cb76bf8b.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
generator_parameters={}
[deps]
source_file="res://Objects/domino/Domino_Domino_Colour.png"
dest_files=["res://.godot/imported/Domino_Domino_Colour.png-067d515b08069aa1e54b6d66cb76bf8b.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,16 @@
[gd_scene load_steps=3 format=3 uid="uid://b7qky0n2ea40e"]
[ext_resource type="PackedScene" uid="uid://dmttoc025f26x" path="res://Domino.glb" id="1_n2u88"]
[sub_resource type="BoxShape3D" id="BoxShape3D_ndu5u"]
size = Vector3(0.153, 0.279, 0.066)
[node name="Domino" instance=ExtResource("1_n2u88")]
mass = 20.0
[node name="Domino2" parent="." index="2"]
transform = Transform3D(0.3, 0, 0, 0, 0.3, 0, 0, 0, 0.3, 0, 0, 0)
[node name="CollisionShape3D" parent="." index="3"]
transform = Transform3D(0.999984, 0, 0, 0, 0.999984, 0, 0, 0, 0.999984, 0, 0, 0)
shape = SubResource("BoxShape3D_ndu5u")

File diff suppressed because one or more lines are too long

BIN
godot/Objects/igloo/igloo_Igloo_Colour.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,36 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cbqufebenynym"
path.bptc="res://.godot/imported/igloo_Igloo_Colour.png-3593c486967c2287e44aad91030db888.bptc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
generator_parameters={}
[deps]
source_file="res://Objects/igloo/igloo_Igloo_Colour.png"
dest_files=["res://.godot/imported/igloo_Igloo_Colour.png-3593c486967c2287e44aad91030db888.bptc.ctex"]
[params]
compress/mode=2
compress/high_quality=true
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

BIN
godot/Objects/igloo/igloo_Igloo_Normal.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,36 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://7w2x04tm1opn"
path.bptc="res://.godot/imported/igloo_Igloo_Normal.png-ca22887363a6b45a9fd447d212cdb2df.bptc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
generator_parameters={}
[deps]
source_file="res://Objects/igloo/igloo_Igloo_Normal.png"
dest_files=["res://.godot/imported/igloo_Igloo_Normal.png-ca22887363a6b45a9fd447d212cdb2df.bptc.ctex"]
[params]
compress/mode=2
compress/high_quality=true
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=1
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=1
roughness/src_normal="res://igloo_Igloo_Normal.png"
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

View File

@ -0,0 +1,15 @@
[gd_scene load_steps=3 format=3 uid="uid://y0mo5gxmd08q"]
[ext_resource type="PackedScene" uid="uid://b7kpas3rxox0u" path="res://present.glb" id="1_420vr"]
[sub_resource type="BoxShape3D" id="BoxShape3D_v5kqf"]
size = Vector3(2.18126, 1.97943, 2.07727)
[node name="present" instance=ExtResource("1_420vr")]
[node name="Present" parent="." index="2"]
transform = Transform3D(0.2, 0, 0, 0, 0.2, 0, 0, 0, 0.2, 0, 0, 0)
[node name="CollisionShape3D" parent="." index="3"]
transform = Transform3D(0.2, 0, 0, 0, 0.2, 0, 0, 0, 0.2, 0, 0, 0)
shape = SubResource("BoxShape3D_v5kqf")

View File

@ -4,27 +4,36 @@ using System;
public partial class TAS_System : Node public partial class TAS_System : Node
{ {
private double _frameLength = 0.1; private double _frameLength = 0.1;
private bool _isCountingFrames = false; private bool _isIncrementingFrames = false;
private Timer _frameTimer; private double _timeSinceLastFrame;
private int _currentFrame = 0; private int _currentFrame = 0;
private int _lastAdvancedFrame = 0; private int _lastAdvancedFrame = 0;
[Export]
public double min_speed = 1.0;
[Export]
public double max_speed = 10.0;
// Number of ms passed while speeding up
[Export]
public double speed = 0.0;
[Export]
public double exp_speed_base = 1.05;
public double FrameLength public double FrameLength
{ {
get { return this._frameLength; } get { return this._frameLength; }
private set { this._frameLength = value; } set { this._frameLength = value; }
} }
public bool IsCountingFrames public bool IsIncrementingFrames
{ {
get { return this._isCountingFrames; } get { return this._isIncrementingFrames; }
private set { this._isCountingFrames = value; } private set { this._isIncrementingFrames = value; }
} }
private Timer FrameTimer private double TimeSinceLastFrame
{ {
get { return this._frameTimer; } get { return this._timeSinceLastFrame; }
set { this._frameTimer = value; } set { this._timeSinceLastFrame = value; }
} }
public int CurrentFrame public int CurrentFrame
@ -33,6 +42,11 @@ public partial class TAS_System : Node
private set { this._currentFrame = value; } private set { this._currentFrame = value; }
} }
public int AdvancedFramesRemaining
{
get { return this.LastAdvancedFrame - this.CurrentFrame; }
}
/// <summary> /// <summary>
/// The last frame that can be advanced to. This will /// The last frame that can be advanced to. This will
/// only be greater than CurrentFrame after the player /// only be greater than CurrentFrame after the player
@ -46,31 +60,55 @@ public partial class TAS_System : Node
private set { this._lastAdvancedFrame = value; } private set { this._lastAdvancedFrame = value; }
} }
/// <summary>
/// Signal is emitted whenever the current frame is incremented.
/// </summary>
/// <param name="newFrame"></param>
[Signal]
public delegate void FrameIncrementedEventHandler(int newFrame);
[Signal] [Signal]
public delegate void FrameAdvancedEventHandler(int currentFrame); public delegate void FramesAdvancedEventHandler(int startFrame, int endFrame);
[Signal] [Signal]
public delegate void FramesAdvancedEventHandler(int numFrames); public delegate void FramesRegressedEventHandler(int startFrame, int endFrame);
[Signal] [Signal]
public delegate void FramesRegressedEventHandler(int numFrames); public delegate void StartedIncrementingEventHandler();
[Signal]
public delegate void StoppedIncrementingEventHandler();
[Signal]
public delegate void FramesResetEventHandler();
[Signal]
public delegate void SpeedChangeEventHandler(float speed);
public void StartCountingFrames() public void StartIncrementingFrames()
{ {
if (this.IsIncrementingFrames == false)
{
this.IsIncrementingFrames = true;
EmitSignal(SignalName.StartedIncrementing);
}
} }
public void StopCountingFrames() public void StopIncrementingFrames()
{ {
if (this.IsIncrementingFrames == true)
{
this.IsIncrementingFrames = false;
EmitSignal(SignalName.StoppedIncrementing);
}
} }
public void ResetFrameCount() public void ResetFrameCount()
{ {
this.CurrentFrame = 0; this.CurrentFrame = 0;
this.LastAdvancedFrame = 0; this.LastAdvancedFrame = 0;
EmitSignal(SignalName.FramesReset);
} }
// Returns how many frames it could successfully advance // Returns how many frames it could successfully advance
@ -78,16 +116,37 @@ public partial class TAS_System : Node
{ {
int newFrame = Math.Min(this.CurrentFrame + numFrames, this.LastAdvancedFrame); int newFrame = Math.Min(this.CurrentFrame + numFrames, this.LastAdvancedFrame);
int framesAdvanced = newFrame - this.CurrentFrame; int framesAdvanced = newFrame - this.CurrentFrame;
EmitSignal(SignalName.FramesAdvanced, framesAdvanced); EmitSignal(SignalName.FramesAdvanced, this.CurrentFrame, newFrame);
this.CurrentFrame = newFrame;
return framesAdvanced; return framesAdvanced;
} }
public int AdvanceWithSpeedup(double time_delta) {
speed += time_delta;
speed = Math.Clamp(speed, min_speed, max_speed);
EmitSignal(SignalName.SpeedChange, speed);
return Advance((int)Math.Pow(exp_speed_base, speed));
}
public int RegressWithSpeedup(double time_delta) {
speed += time_delta;
speed = Math.Clamp(speed, min_speed, max_speed);
EmitSignal(SignalName.SpeedChange, speed);
return Regress((int)Math.Pow(exp_speed_base, speed));
}
public void ResetSpeedup() {
speed = 0.0;
EmitSignal(SignalName.SpeedChange, speed);
}
// Returns how many frames it could successfully regress // Returns how many frames it could successfully regress
public int Regress(int numFrames) public int Regress(int numFrames)
{ {
int newFrame = Math.Max(this.CurrentFrame - numFrames, 0); int newFrame = Math.Max(this.CurrentFrame - numFrames, 0);
int framesRegressed = newFrame - this.CurrentFrame; int framesRegressed = newFrame - this.CurrentFrame;
EmitSignal(SignalName.FramesRegressed, framesRegressed); EmitSignal(SignalName.FramesRegressed, this.CurrentFrame, newFrame);
this.CurrentFrame = newFrame;
return framesRegressed; return framesRegressed;
} }
@ -99,12 +158,28 @@ public partial class TAS_System : Node
this.LastAdvancedFrame = this.CurrentFrame; this.LastAdvancedFrame = this.CurrentFrame;
} }
public override void _PhysicsProcess(double delta)
{
if (this.IsIncrementingFrames)
{
this.TimeSinceLastFrame += delta;
if (this.TimeSinceLastFrame >= this.FrameLength)
{
this.CurrentFrame++;
this.LastAdvancedFrame = this.CurrentFrame;
EmitSignal(SignalName.FrameIncremented, this.CurrentFrame);
this.TimeSinceLastFrame = 0 + (this.TimeSinceLastFrame - this.FrameLength);
}
}
}
// public void Test()
// {
// GD.Print("test123");
// // EmitSignal(SignalName.TestSignal, "test456");
// } public override void _Ready()
{
this.FrameLength = 1/60;
this.StartIncrementingFrames();
}
} }

View File

@ -2,5 +2,5 @@
[ext_resource type="Script" path="res://TAS_system/TAS_System.cs" id="1_4s6ry"] [ext_resource type="Script" path="res://TAS_system/TAS_System.cs" id="1_4s6ry"]
[node name="System" type="Node"] [node name="TAS_System" type="Node"]
script = ExtResource("1_4s6ry") script = ExtResource("1_4s6ry")

View File

@ -0,0 +1,93 @@
using Godot;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Threading;
public partial class TASable : Node
{
[Export] RigidBody3D _assignedRigidBody3D;
public RigidBody3D AssignedRigidBody3D
{
get { return this._assignedRigidBody3D; }
}
// Frame data
public Dictionary<int, Vector3> framePositions = new Dictionary<int, Vector3>();
public Dictionary<int, Vector3> frameRotations = new Dictionary<int, Vector3>();
public Dictionary<int, Vector3> frameLinearVelocities = new Dictionary<int, Vector3>();
public Dictionary<int, Vector3> frameAngularVelocities = new Dictionary<int, Vector3>();
public virtual void SaveState(int frame)
{
this.framePositions[frame] = this.AssignedRigidBody3D.Position;
this.frameRotations[frame] = this.AssignedRigidBody3D.Rotation;
this.frameLinearVelocities[frame] = this.AssignedRigidBody3D.LinearVelocity;
this.frameAngularVelocities[frame] = this.AssignedRigidBody3D.AngularVelocity;
}
public virtual void LoadState(int frame)
{
this.AssignedRigidBody3D.Position = this.framePositions[frame];
this.AssignedRigidBody3D.Rotation = this.frameRotations[frame];
this.AssignedRigidBody3D.LinearVelocity = this.frameLinearVelocities[frame];
this.AssignedRigidBody3D.AngularVelocity = this.frameAngularVelocities[frame];
}
public override void _Ready()
{
if (this._assignedRigidBody3D is null)
{
this._assignedRigidBody3D = this.GetParent<RigidBody3D>();
}
TAS_System TAS = GetNode<TAS_System>("/root/TAS_System");
TAS.FrameIncremented += this.OnFrameIncremented;
TAS.FramesAdvanced += this.OnFramesAdvanced;
TAS.FramesRegressed += this.OnFramesRegressed;
TAS.StartedIncrementing += this.OnStartedIncrementing;
TAS.StoppedIncrementing += this.OnStoppedIncrementing;
TAS.FramesReset += this.OnFramesReset;
this.SaveState(0);
}
public virtual void OnFrameIncremented(int newFrame)
{
this.SaveState(newFrame);
// GD.Print($"Frame advanced to {newFrame}, called from node {this.AssignedRigidBody3D.Name}");
}
public virtual void OnFramesAdvanced(int startFrame, int endFrame)
{
this.LoadState(endFrame);
// GD.Print($"Frames advanced from {startFrame} to {endFrame}, called from node {this.AssignedRigidBody3D.Name}");
}
public virtual void OnFramesRegressed(int startFrame, int endFrame)
{
this.LoadState(endFrame);
// GD.Print($"Frames regressed from {startFrame} to {endFrame}, called from node {this.AssignedRigidBody3D.Name}");
}
public virtual void OnStartedIncrementing()
{
this.AssignedRigidBody3D.Freeze = false;
this.AssignedRigidBody3D.LockRotation = false;
}
public virtual void OnStoppedIncrementing()
{
this.AssignedRigidBody3D.Freeze = true;
this.AssignedRigidBody3D.LockRotation = true;
}
public virtual void OnFramesReset()
{
this.SaveState(0);
}
}

View File

@ -0,0 +1,6 @@
[gd_scene load_steps=2 format=3 uid="uid://bjhii55pagkb5"]
[ext_resource type="Script" path="res://TAS_system/TASable.cs" id="1_uqel0"]
[node name="is_TASable" type="Node"]
script = ExtResource("1_uqel0")

View File

@ -0,0 +1,52 @@
using Godot;
using System;
public partial class TimescaleSystem : Node
{
[Export] public double SlowLength = 1.0;
[Export] public double SlowMagnitude = 0.2;
Node controller;
public override void _Ready()
{
controller = GetNode<Node>("/root/ControllerEventBus");
Callable callable = new Callable(this, MethodName.OnControllerContact);
controller.Connect("new_target", callable);
this.OnControllerContact(this);
}
public void OnControllerContact(Node node)
{
GD.Print("toUCHED!");
Engine.TimeScale = this.SlowMagnitude;
Timer timer = new Timer();
timer.Name = "SlowTimer";
this.AddChild(timer);
timer.WaitTime = this.SlowLength * this.SlowMagnitude;
timer.OneShot = true;
timer.Timeout += () => {
GD.Print("TimE!");
Engine.TimeScale = 1.0;
timer.QueueFree();
};
timer.Start();
}
}

View File

@ -0,0 +1,6 @@
[gd_scene load_steps=2 format=3 uid="uid://bs3yqnctxfwaa"]
[ext_resource type="Script" path="res://Timescale_System/TimescaleSystem.cs" id="1_6tt5j"]
[node name="TimescaleSystem" type="Node"]
script = ExtResource("1_6tt5j")

View File

@ -0,0 +1,48 @@
using Godot;
using System;
public partial class AdvanceButton : Button
{
TAS_System TAS;
bool isButtonPressed = false;
// Called when the node enters the scene tree for the first time.
public override void _Ready()
{
TAS = GetNode<TAS_System>("/root/TAS_System");
AudioStreamPlayer buttonSound = this.GetNode<AudioStreamPlayer>("../../ButtonSound");
bool playSound = true;
this.Pressed += () => {
TAS.Advance(1);
if (playSound) buttonSound.Play();
playSound = false;
};
this.ButtonDown += () => { this.isButtonPressed = true; };
this.ButtonUp += () => { this.isButtonPressed = false; TAS.ResetSpeedup(); playSound = true; };
}
// Called every frame. 'delta' is the elapsed time since the previous frame.
public override void _Process(double delta)
{
if (TAS.AdvancedFramesRemaining == 0)
{
this.Disabled = true;
TAS.ResetSpeedup();
this.isButtonPressed = false;
}
else
{
this.Disabled = false;
if (this.isButtonPressed)
{
TAS.AdvanceWithSpeedup(delta);
}
}
}
}

View File

@ -0,0 +1,24 @@
using Godot;
using System;
public partial class CurrentFrameLabel : Label
{
TAS_System TAS;
// Called when the node enters the scene tree for the first time.
public override void _Ready()
{
TAS = GetNode<TAS_System>("/root/TAS_System");
// TAS.FrameIncremented += OnFrameIncremented;
}
// Called every frame. 'delta' is the elapsed time since the previous frame.
public override void _Process(double delta)
{
this.Text = $"Current frame: {TAS.CurrentFrame}";
}
public virtual void OnFrameIncremented(int newFrame)
{
this.Text = $"Current frame: {newFrame}";
}
}

View File

@ -0,0 +1,4 @@
extends Label
func _process(delta):
text = "Speed: " + str(TAS_System.speed)

View File

@ -0,0 +1,51 @@
using Godot;
using System;
public partial class RegressButton : Button
{
TAS_System TAS;
bool isButtonPressed = false;
// Called when the node enters the scene tree for the first time.
public override void _Ready()
{
TAS = GetNode<TAS_System>("/root/TAS_System");
AudioStreamPlayer buttonSound = this.GetNode<AudioStreamPlayer>("../../ButtonSound");
bool playSound = true;
this.Pressed += () => {
TAS.Regress(1);
if (playSound) buttonSound.Play();
playSound = false;
};
this.ButtonDown += () => { this.isButtonPressed = true; TAS.StopIncrementingFrames(); };
this.ButtonUp += () => { this.isButtonPressed = false; TAS.ResetSpeedup(); playSound = true; };
}
public virtual void OnFrameIncremented(int newFrame)
{
this.Text = $"Current frame: {newFrame}";
}
// Called every frame. 'delta' is the elapsed time since the previous frame.
public override void _Process(double delta)
{
if (TAS.CurrentFrame == 0)
{
this.Disabled = true;
TAS.ResetSpeedup();
this.isButtonPressed = false;
}
else
{
this.Disabled = false;
if (this.isButtonPressed)
{
TAS.RegressWithSpeedup(delta);
}
}
}
}

View File

@ -0,0 +1,18 @@
using Godot;
using System;
public partial class ResetFramesButton : Button
{
// Called when the node enters the scene tree for the first time.
public override void _Ready()
{
TAS_System TAS = GetNode<TAS_System>("/root/TAS_System");
this.Pressed += () => { TAS.ResetFrameCount(); };
}
// Called every frame. 'delta' is the elapsed time since the previous frame.
public override void _Process(double delta)
{
}
}

View File

@ -0,0 +1,17 @@
using Godot;
using System;
public partial class StartIncrementButton : Button
{
// Called when the node enters the scene tree for the first time.
public override void _Ready()
{
TAS_System TAS = GetNode<TAS_System>("/root/TAS_System");
this.Pressed += () => { TAS.StartIncrementingFrames(); };
}
// Called every frame. 'delta' is the elapsed time since the previous frame.
public override void _Process(double delta)
{
}
}

View File

@ -0,0 +1,17 @@
using Godot;
using System;
public partial class StopIncrementButton : Button
{
// Called when the node enters the scene tree for the first time.
public override void _Ready()
{
TAS_System TAS = GetNode<TAS_System>("/root/TAS_System");
this.Pressed += () => { TAS.StopIncrementingFrames(); };
}
// Called every frame. 'delta' is the elapsed time since the previous frame.
public override void _Process(double delta)
{
}
}

28
godot/UI/TAS UI/TAS UI.gd Normal file
View File

@ -0,0 +1,28 @@
extends Control
func _input(event):
var f: Callable
if event.is_pressed():
f = press
else:
f = release
if event.is_action("regress"):
f.call($FrameButtons/RegressButton)
elif event.is_action("advance"):
f.call($FrameButtons/AdvanceButton)
elif event.is_action("increment"):
if TAS_System.IsIncrementingFrames:
f.call($TASButtons/StopIncrementButton)
else:
f.call($TASButtons/StartIncrementButton)
func press(btn: Button):
btn.button_pressed = true
btn.pressed.emit()
btn.button_down.emit()
func release(btn: Button):
btn.button_pressed = false
btn.button_up.emit()

146
godot/UI/TAS UI/TAS UI.tscn Normal file
View File

@ -0,0 +1,146 @@
[gd_scene load_steps=11 format=3 uid="uid://b1uf31ed6h0ir"]
[ext_resource type="Script" path="res://UI/TAS UI/CurrentFrameLabel.cs" id="1_27u4w"]
[ext_resource type="Script" path="res://UI/TAS UI/TAS UI.gd" id="1_ytl0x"]
[ext_resource type="Script" path="res://UI/TAS UI/RegressButton.cs" id="2_fhmsa"]
[ext_resource type="AudioStream" uid="uid://cio6yfcnyf2lx" path="res://audio/note.wav" id="2_nsxig"]
[ext_resource type="Script" path="res://UI/TAS UI/Label2.gd" id="2_otida"]
[ext_resource type="Script" path="res://UI/TAS UI/AdvanceButton.cs" id="3_0ti6q"]
[ext_resource type="Script" path="res://UI/TAS UI/UIAudioPlayer.cs" id="3_251uv"]
[ext_resource type="Script" path="res://UI/TAS UI/StopIncrementButton.cs" id="4_4gd4c"]
[ext_resource type="Script" path="res://UI/TAS UI/StartIncrementButton.cs" id="5_5af83"]
[ext_resource type="Script" path="res://UI/TAS UI/ResetFramesButton.cs" id="6_nwwkv"]
[node name="TAS UI" type="Control"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
script = ExtResource("1_ytl0x")
[node name="ButtonSound" type="AudioStreamPlayer" parent="."]
stream = ExtResource("2_nsxig")
script = ExtResource("3_251uv")
[node name="DEBUG" type="Control" parent="."]
visible = false
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
[node name="Label" type="Label" parent="DEBUG"]
layout_mode = 1
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -26.0
offset_right = 199.0
grow_vertical = 0
text = "Current Frame: 0"
script = ExtResource("1_27u4w")
[node name="Label2" type="Label" parent="DEBUG"]
layout_mode = 1
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_left = 2.0
offset_top = -55.0
offset_right = 201.0
offset_bottom = -29.0
grow_vertical = 0
text = "Current Frame: 0"
script = ExtResource("2_otida")
[node name="FrameButtons" type="Control" parent="."]
visible = false
layout_mode = 1
anchors_preset = 7
anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
offset_left = -131.5
offset_top = -52.0
offset_right = 131.5
grow_horizontal = 2
grow_vertical = 0
[node name="RegressButton" type="Button" parent="FrameButtons"]
layout_mode = 1
anchors_preset = -1
anchor_right = 0.5
anchor_bottom = 1.0
grow_vertical = 2
focus_mode = 0
text = "Regress"
script = ExtResource("2_fhmsa")
[node name="AdvanceButton" type="Button" parent="FrameButtons"]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.5
anchor_right = 1.0
anchor_bottom = 1.0
grow_vertical = 2
focus_mode = 0
disabled = true
text = "Advance"
script = ExtResource("3_0ti6q")
[node name="TASButtons" type="Control" parent="."]
visible = false
layout_mode = 1
anchors_preset = 3
anchor_left = 1.0
anchor_top = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = -205.0
offset_top = -103.0
grow_horizontal = 0
grow_vertical = 0
[node name="StopIncrementButton" type="Button" parent="TASButtons"]
layout_mode = 1
anchors_preset = 10
anchor_right = 1.0
offset_bottom = 31.0
grow_horizontal = 2
focus_mode = 0
text = "Stop Increment"
script = ExtResource("4_4gd4c")
[node name="StartIncrementButton" type="Button" parent="TASButtons"]
layout_mode = 1
anchors_preset = 14
anchor_top = 0.5
anchor_right = 1.0
anchor_bottom = 0.5
offset_top = -15.5
offset_bottom = 15.5
grow_horizontal = 2
grow_vertical = 2
focus_mode = 0
text = "Start Increment"
script = ExtResource("5_5af83")
[node name="ResetFramesButton" type="Button" parent="TASButtons"]
layout_mode = 1
anchors_preset = 12
anchor_top = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_top = -31.0
grow_horizontal = 2
grow_vertical = 0
focus_mode = 0
text = "Reset Frames"
script = ExtResource("6_nwwkv")

View File

@ -0,0 +1,15 @@
using Godot;
using System;
public partial class UIAudioPlayer : AudioStreamPlayer
{
// Called when the node enters the scene tree for the first time.
public override void _Ready()
{
}
// Called every frame. 'delta' is the elapsed time since the previous frame.
public override void _Process(double delta)
{
}
}

14
godot/animation_tree.gd Normal file
View File

@ -0,0 +1,14 @@
extends AnimationTree
var delta := 1.0 / float(Engine.physics_ticks_per_second)
func _ready():
TAS_System.FrameIncremented.connect(frame_inc)
TAS_System.FramesAdvanced.connect(frames_change)
TAS_System.FramesRegressed.connect(frames_change)
func frame_inc(_frame: int):
advance(delta)
func frames_change(start: int, end: int):
advance((end - start)*delta)

BIN
godot/audio/TricksterGhost.mp3 (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,19 @@
[remap]
importer="mp3"
type="AudioStreamMP3"
uid="uid://b88pn0htpxvo3"
path="res://.godot/imported/TricksterGhost.mp3-9e9257851e7178f1dea40efb12b41b62.mp3str"
[deps]
source_file="res://audio/TricksterGhost.mp3"
dest_files=["res://.godot/imported/TricksterGhost.mp3-9e9257851e7178f1dea40efb12b41b62.mp3str"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

BIN
godot/audio/TricksterGhostNew.mp3 (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,19 @@
[remap]
importer="mp3"
type="AudioStreamMP3"
uid="uid://dw06bektw4j8m"
path="res://.godot/imported/TricksterGhostNew.mp3-04c37f493148cbf09dc4a34a27263367.mp3str"
[deps]
source_file="res://audio/TricksterGhostNew.mp3"
dest_files=["res://.godot/imported/TricksterGhostNew.mp3-04c37f493148cbf09dc4a34a27263367.mp3str"]
[params]
loop=true
loop_offset=0.0
bpm=0.0
beat_count=0
bar_beats=4

Binary file not shown.

View File

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://c5v6c6x05lqg3"
path="res://.godot/imported/billiard-clack.wav-3f99ec74be11d1cb465d3dc06a94b10f.sample"
[deps]
source_file="res://audio/billiard-clack.wav"
dest_files=["res://.godot/imported/billiard-clack.wav-3f99ec74be11d1cb465d3dc06a94b10f.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=0

BIN
godot/audio/charge.wav Normal file

Binary file not shown.

View File

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://ckhf7ksthi053"
path="res://.godot/imported/charge.wav-9ea0e7ab134da578b6f69151780ec24f.sample"
[deps]
source_file="res://audio/charge.wav"
dest_files=["res://.godot/imported/charge.wav-9ea0e7ab134da578b6f69151780ec24f.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=0

BIN
godot/audio/error.mp3 (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,19 @@
[remap]
importer="mp3"
type="AudioStreamMP3"
uid="uid://bg07vavc0duo5"
path="res://.godot/imported/error.mp3-e904d198a343e1da5de4876587f3ccef.mp3str"
[deps]
source_file="res://audio/error.mp3"
dest_files=["res://.godot/imported/error.mp3-e904d198a343e1da5de4876587f3ccef.mp3str"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

BIN
godot/audio/impact.wav Normal file

Binary file not shown.

View File

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://d2ncd2qoklbbe"
path="res://.godot/imported/impact.wav-606f8b40b78eec03bfd2693747f9e1cb.sample"
[deps]
source_file="res://audio/impact.wav"
dest_files=["res://.godot/imported/impact.wav-606f8b40b78eec03bfd2693747f9e1cb.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=0

BIN
godot/audio/note.wav Normal file

Binary file not shown.

View File

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://cio6yfcnyf2lx"
path="res://.godot/imported/note.wav-f74766d8f2fafbaa9729bf4b58d8f300.sample"
[deps]
source_file="res://audio/note.wav"
dest_files=["res://.godot/imported/note.wav-f74766d8f2fafbaa9729bf4b58d8f300.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=0

BIN
godot/balloon.glb (Stored with Git LFS) Normal file

Binary file not shown.

50
godot/balloon.glb.import Normal file
View File

@ -0,0 +1,50 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://dl005e2rvn86b"
path="res://.godot/imported/balloon.glb-1dbd4246a6d2ad23da187ebfe5c7e652.scn"
[deps]
source_file="res://balloon.glb"
dest_files=["res://.godot/imported/balloon.glb-1dbd4246a6d2ad23da187ebfe5c7e652.scn"]
[params]
nodes/root_type="Node3D"
nodes/root_name="Scene Root"
nodes/apply_root_scale=true
nodes/root_scale=1.0
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
import_script/path="res://physics/import_billiard.gd"
_subresources={
"materials": {
"balloon": {
"use_external/enabled": true,
"use_external/path": "res://Objects/balloon/balloon_material_standard.tres"
},
"string": {
"use_external/enabled": true,
"use_external/path": "res://Objects/balloon/string.tres"
}
},
"nodes": {
"PATH:Balloon": {
"generate/physics": true,
"physics/body_type": 1,
"physics/shape_type": 3
}
}
}
gltf/embedded_image_handling=1

BIN
godot/cake.glb (Stored with Git LFS) Normal file

Binary file not shown.

53
godot/cake.glb.import Normal file
View File

@ -0,0 +1,53 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://djj412h1ien4o"
path="res://.godot/imported/cake.glb-e60e073e8642f273d1a78ec90c85894b.scn"
[deps]
source_file="res://cake.glb"
dest_files=["res://.godot/imported/cake.glb-e60e073e8642f273d1a78ec90c85894b.scn"]
[params]
nodes/root_type="Node3D"
nodes/root_name="Scene Root"
nodes/apply_root_scale=true
nodes/root_scale=1.0
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
import_script/path="res://physics/import_billiard.gd"
_subresources={
"materials": {
"cake": {
"use_external/enabled": true,
"use_external/path": "res://cake.tres"
},
"candles": {
"use_external/enabled": true,
"use_external/path": "res://candles.tres"
}
},
"nodes": {
"PATH:cake2": {
"generate/physics": true,
"physics/body_type": 1,
"physics/shape_type": 5,
"primitive/height": 0.244,
"primitive/position": Vector3(0, 0.042, 0),
"primitive/radius": 0.219
}
}
}
gltf/embedded_image_handling=1

12
godot/cake.tres Normal file
View File

@ -0,0 +1,12 @@
[gd_resource type="StandardMaterial3D" load_steps=3 format=3 uid="uid://b8htfw5f1a4wf"]
[ext_resource type="Texture2D" uid="uid://dhyh1g25bmhtf" path="res://cake_cake_albedo.png" id="1_jefwg"]
[ext_resource type="Texture2D" uid="uid://cer3pk0fspi1c" path="res://cake_cake_normals.png" id="2_55xkl"]
[resource]
resource_name = "cake"
vertex_color_use_as_albedo = true
albedo_texture = ExtResource("1_jefwg")
roughness = 0.5
normal_enabled = true
normal_texture = ExtResource("2_55xkl")

8
godot/cake.tscn Normal file
View File

@ -0,0 +1,8 @@
[gd_scene load_steps=2 format=3 uid="uid://cx4ohbn84hmc3"]
[ext_resource type="PackedScene" uid="uid://djj412h1ien4o" path="res://cake.glb" id="1_q3mni"]
[node name="cake" instance=ExtResource("1_q3mni")]
[node name="CollisionShape3D" parent="." index="4"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.0367587, 0)

BIN
godot/cake_cake_albedo.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,36 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dhyh1g25bmhtf"
path.bptc="res://.godot/imported/cake_cake_albedo.png-8e7e933b04d67a69b2a262d9cdfe2bb0.bptc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
generator_parameters={}
[deps]
source_file="res://cake_cake_albedo.png"
dest_files=["res://.godot/imported/cake_cake_albedo.png-8e7e933b04d67a69b2a262d9cdfe2bb0.bptc.ctex"]
[params]
compress/mode=2
compress/high_quality=true
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

BIN
godot/cake_cake_normals.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,36 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cer3pk0fspi1c"
path.bptc="res://.godot/imported/cake_cake_normals.png-85023f0c4cf5997d4101eb078e7a1400.bptc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
generator_parameters={}
[deps]
source_file="res://cake_cake_normals.png"
dest_files=["res://.godot/imported/cake_cake_normals.png-85023f0c4cf5997d4101eb078e7a1400.bptc.ctex"]
[params]
compress/mode=2
compress/high_quality=true
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=1
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=1
roughness/src_normal="res://cake_cake_normals.png"
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

8
godot/candles.tres Normal file
View File

@ -0,0 +1,8 @@
[gd_resource type="StandardMaterial3D" format=3 uid="uid://li4gdaji6poj"]
[resource]
resource_name = "candles"
cull_mode = 2
vertex_color_use_as_albedo = true
albedo_color = Color(0.453326, 0, 0.0696221, 1)
roughness = 0.5

BIN
godot/child.glb (Stored with Git LFS) Normal file

Binary file not shown.

1834
godot/child.glb.import Normal file

File diff suppressed because it is too large Load Diff

BIN
godot/child_Child_Colour.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ykvmuu6gxuom"
path.s3tc="res://.godot/imported/child_Child_Colour.png-f361e4e6aa172920dd7d8097cc2e5595.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://child_Child_Colour.png"
dest_files=["res://.godot/imported/child_Child_Colour.png-f361e4e6aa172920dd7d8097cc2e5595.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

BIN
godot/child_Child_Normal.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cgwi7p5178xwg"
path.s3tc="res://.godot/imported/child_Child_Normal.png-2c56fd0195c1c8de3aa3abb3c7b11f2f.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://child_Child_Normal.png"
dest_files=["res://.godot/imported/child_Child_Normal.png-2c56fd0195c1c8de3aa3abb3c7b11f2f.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=1
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=1
roughness/src_normal="res://child_Child_Normal.png"
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Some files were not shown because too many files have changed in this diff Show More