diff --git a/3D Input/Bein_Mensch2.blend b/3D Input/Bein_Mensch2.blend new file mode 100644 index 0000000..633127d Binary files /dev/null and b/3D Input/Bein_Mensch2.blend differ diff --git a/3D Input/Bein_Mensch2.blend1 b/3D Input/Bein_Mensch2.blend1 new file mode 100644 index 0000000..dd943f1 Binary files /dev/null and b/3D Input/Bein_Mensch2.blend1 differ diff --git a/3D Input/Bein_Pferd.blend b/3D Input/Bein_Pferd.blend new file mode 100644 index 0000000..1944215 Binary files /dev/null and b/3D Input/Bein_Pferd.blend differ diff --git a/3D Input/Bein_Pferd.blend1 b/3D Input/Bein_Pferd.blend1 new file mode 100644 index 0000000..7385850 Binary files /dev/null and b/3D Input/Bein_Pferd.blend1 differ diff --git a/3D Input/Kopf_Stier.blend b/3D Input/Kopf_Stier.blend new file mode 100644 index 0000000..3684032 Binary files /dev/null and b/3D Input/Kopf_Stier.blend differ diff --git a/3D Input/Kopf_Stier.blend1 b/3D Input/Kopf_Stier.blend1 new file mode 100644 index 0000000..c498059 Binary files /dev/null and b/3D Input/Kopf_Stier.blend1 differ diff --git a/3D Input/Kopf_Vogel.blend b/3D Input/Kopf_Vogel.blend new file mode 100644 index 0000000..9ffee64 Binary files /dev/null and b/3D Input/Kopf_Vogel.blend differ diff --git a/3D Input/Kopf_Vogel.blend1 b/3D Input/Kopf_Vogel.blend1 new file mode 100644 index 0000000..6a1acc3 Binary files /dev/null and b/3D Input/Kopf_Vogel.blend1 differ diff --git a/3D Input/Mensch_vogelarm_img.jpg b/3D Input/Mensch_vogelarm_img.jpg new file mode 100644 index 0000000..e432867 Binary files /dev/null and b/3D Input/Mensch_vogelarm_img.jpg differ diff --git a/3D Input/Stierbg.jpg b/3D Input/Stierbg.jpg new file mode 100644 index 0000000..275ddae Binary files /dev/null and b/3D Input/Stierbg.jpg differ diff --git a/3D Input/Stierbg.jpg.import b/3D Input/Stierbg.jpg.import new file mode 100644 index 0000000..32194f2 --- /dev/null +++ b/3D Input/Stierbg.jpg.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Stierbg.jpg-b439c056e778b8fb16ae62aa15547147.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://3D Input/Stierbg.jpg" +dest_files=[ "res://.import/Stierbg.jpg-b439c056e778b8fb16ae62aa15547147.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/3D Input/horselegimg.jpg b/3D Input/horselegimg.jpg new file mode 100644 index 0000000..080d3b3 Binary files /dev/null and b/3D Input/horselegimg.jpg differ diff --git a/3D Input/horselegimg.jpg.import b/3D Input/horselegimg.jpg.import new file mode 100644 index 0000000..a0556e9 --- /dev/null +++ b/3D Input/horselegimg.jpg.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/horselegimg.jpg-8935d9a9effef767d66fb9866f38d2c4.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://3D Input/horselegimg.jpg" +dest_files=[ "res://.import/horselegimg.jpg-8935d9a9effef767d66fb9866f38d2c4.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/3D Input/untitled.glb.import b/3D Input/untitled.glb.import new file mode 100644 index 0000000..23e076d --- /dev/null +++ b/3D Input/untitled.glb.import @@ -0,0 +1,1062 @@ +[remap] + +importer="scene" +type="PackedScene" +path="res://.import/untitled.glb-32b9e6a74b62566153c547ecdbbbc858.scn" + +[deps] + +source_file="res://3D Input/untitled.glb" +dest_files=[ "res://.import/untitled.glb-32b9e6a74b62566153c547ecdbbbc858.scn" ] + +[params] + +nodes/root_type="Spatial" +nodes/root_name="Scene Root" +nodes/root_scale=1.0 +nodes/custom_script="" +nodes/storage=0 +materials/location=1 +materials/storage=1 +materials/keep_on_reimport=true +meshes/compress=true +meshes/ensure_tangents=true +meshes/storage=0 +meshes/light_baking=0 +meshes/lightmap_texel_size=0.1 +external_files/store_in_subdir=false +animation/import=true +animation/fps=15 +animation/filter_script="" +animation/storage=false +animation/keep_custom_tracks=false +animation/optimizer/enabled=true +animation/optimizer/max_linear_error=0.05 +animation/optimizer/max_angular_error=0.01 +animation/optimizer/max_angle=22 +animation/optimizer/remove_unused_tracks=true +animation/clips/amount=0 +animation/clip_1/name="" +animation/clip_1/start_frame=0 +animation/clip_1/end_frame=0 +animation/clip_1/loops=false +animation/clip_2/name="" +animation/clip_2/start_frame=0 +animation/clip_2/end_frame=0 +animation/clip_2/loops=false +animation/clip_3/name="" +animation/clip_3/start_frame=0 +animation/clip_3/end_frame=0 +animation/clip_3/loops=false +animation/clip_4/name="" +animation/clip_4/start_frame=0 +animation/clip_4/end_frame=0 +animation/clip_4/loops=false +animation/clip_5/name="" +animation/clip_5/start_frame=0 +animation/clip_5/end_frame=0 +animation/clip_5/loops=false +animation/clip_6/name="" +animation/clip_6/start_frame=0 +animation/clip_6/end_frame=0 +animation/clip_6/loops=false +animation/clip_7/name="" +animation/clip_7/start_frame=0 +animation/clip_7/end_frame=0 +animation/clip_7/loops=false +animation/clip_8/name="" +animation/clip_8/start_frame=0 +animation/clip_8/end_frame=0 +animation/clip_8/loops=false +animation/clip_9/name="" +animation/clip_9/start_frame=0 +animation/clip_9/end_frame=0 +animation/clip_9/loops=false +animation/clip_10/name="" +animation/clip_10/start_frame=0 +animation/clip_10/end_frame=0 +animation/clip_10/loops=false +animation/clip_11/name="" +animation/clip_11/start_frame=0 +animation/clip_11/end_frame=0 +animation/clip_11/loops=false +animation/clip_12/name="" +animation/clip_12/start_frame=0 +animation/clip_12/end_frame=0 +animation/clip_12/loops=false +animation/clip_13/name="" +animation/clip_13/start_frame=0 +animation/clip_13/end_frame=0 +animation/clip_13/loops=false +animation/clip_14/name="" +animation/clip_14/start_frame=0 +animation/clip_14/end_frame=0 +animation/clip_14/loops=false +animation/clip_15/name="" +animation/clip_15/start_frame=0 +animation/clip_15/end_frame=0 +animation/clip_15/loops=false +animation/clip_16/name="" +animation/clip_16/start_frame=0 +animation/clip_16/end_frame=0 +animation/clip_16/loops=false +animation/clip_17/name="" +animation/clip_17/start_frame=0 +animation/clip_17/end_frame=0 +animation/clip_17/loops=false +animation/clip_18/name="" +animation/clip_18/start_frame=0 +animation/clip_18/end_frame=0 +animation/clip_18/loops=false +animation/clip_19/name="" +animation/clip_19/start_frame=0 +animation/clip_19/end_frame=0 +animation/clip_19/loops=false +animation/clip_20/name="" +animation/clip_20/start_frame=0 +animation/clip_20/end_frame=0 +animation/clip_20/loops=false +animation/clip_21/name="" +animation/clip_21/start_frame=0 +animation/clip_21/end_frame=0 +animation/clip_21/loops=false +animation/clip_22/name="" +animation/clip_22/start_frame=0 +animation/clip_22/end_frame=0 +animation/clip_22/loops=false +animation/clip_23/name="" +animation/clip_23/start_frame=0 +animation/clip_23/end_frame=0 +animation/clip_23/loops=false +animation/clip_24/name="" +animation/clip_24/start_frame=0 +animation/clip_24/end_frame=0 +animation/clip_24/loops=false +animation/clip_25/name="" +animation/clip_25/start_frame=0 +animation/clip_25/end_frame=0 +animation/clip_25/loops=false +animation/clip_26/name="" +animation/clip_26/start_frame=0 +animation/clip_26/end_frame=0 +animation/clip_26/loops=false +animation/clip_27/name="" +animation/clip_27/start_frame=0 +animation/clip_27/end_frame=0 +animation/clip_27/loops=false +animation/clip_28/name="" +animation/clip_28/start_frame=0 +animation/clip_28/end_frame=0 +animation/clip_28/loops=false +animation/clip_29/name="" +animation/clip_29/start_frame=0 +animation/clip_29/end_frame=0 +animation/clip_29/loops=false +animation/clip_30/name="" +animation/clip_30/start_frame=0 +animation/clip_30/end_frame=0 +animation/clip_30/loops=false +animation/clip_31/name="" +animation/clip_31/start_frame=0 +animation/clip_31/end_frame=0 +animation/clip_31/loops=false +animation/clip_32/name="" +animation/clip_32/start_frame=0 +animation/clip_32/end_frame=0 +animation/clip_32/loops=false +animation/clip_33/name="" +animation/clip_33/start_frame=0 +animation/clip_33/end_frame=0 +animation/clip_33/loops=false +animation/clip_34/name="" +animation/clip_34/start_frame=0 +animation/clip_34/end_frame=0 +animation/clip_34/loops=false +animation/clip_35/name="" +animation/clip_35/start_frame=0 +animation/clip_35/end_frame=0 +animation/clip_35/loops=false +animation/clip_36/name="" +animation/clip_36/start_frame=0 +animation/clip_36/end_frame=0 +animation/clip_36/loops=false +animation/clip_37/name="" +animation/clip_37/start_frame=0 +animation/clip_37/end_frame=0 +animation/clip_37/loops=false +animation/clip_38/name="" +animation/clip_38/start_frame=0 +animation/clip_38/end_frame=0 +animation/clip_38/loops=false +animation/clip_39/name="" +animation/clip_39/start_frame=0 +animation/clip_39/end_frame=0 +animation/clip_39/loops=false +animation/clip_40/name="" +animation/clip_40/start_frame=0 +animation/clip_40/end_frame=0 +animation/clip_40/loops=false +animation/clip_41/name="" +animation/clip_41/start_frame=0 +animation/clip_41/end_frame=0 +animation/clip_41/loops=false +animation/clip_42/name="" +animation/clip_42/start_frame=0 +animation/clip_42/end_frame=0 +animation/clip_42/loops=false +animation/clip_43/name="" +animation/clip_43/start_frame=0 +animation/clip_43/end_frame=0 +animation/clip_43/loops=false +animation/clip_44/name="" +animation/clip_44/start_frame=0 +animation/clip_44/end_frame=0 +animation/clip_44/loops=false +animation/clip_45/name="" +animation/clip_45/start_frame=0 +animation/clip_45/end_frame=0 +animation/clip_45/loops=false +animation/clip_46/name="" +animation/clip_46/start_frame=0 +animation/clip_46/end_frame=0 +animation/clip_46/loops=false +animation/clip_47/name="" +animation/clip_47/start_frame=0 +animation/clip_47/end_frame=0 +animation/clip_47/loops=false +animation/clip_48/name="" +animation/clip_48/start_frame=0 +animation/clip_48/end_frame=0 +animation/clip_48/loops=false +animation/clip_49/name="" +animation/clip_49/start_frame=0 +animation/clip_49/end_frame=0 +animation/clip_49/loops=false +animation/clip_50/name="" +animation/clip_50/start_frame=0 +animation/clip_50/end_frame=0 +animation/clip_50/loops=false +animation/clip_51/name="" +animation/clip_51/start_frame=0 +animation/clip_51/end_frame=0 +animation/clip_51/loops=false +animation/clip_52/name="" +animation/clip_52/start_frame=0 +animation/clip_52/end_frame=0 +animation/clip_52/loops=false +animation/clip_53/name="" +animation/clip_53/start_frame=0 +animation/clip_53/end_frame=0 +animation/clip_53/loops=false +animation/clip_54/name="" +animation/clip_54/start_frame=0 +animation/clip_54/end_frame=0 +animation/clip_54/loops=false +animation/clip_55/name="" +animation/clip_55/start_frame=0 +animation/clip_55/end_frame=0 +animation/clip_55/loops=false +animation/clip_56/name="" +animation/clip_56/start_frame=0 +animation/clip_56/end_frame=0 +animation/clip_56/loops=false +animation/clip_57/name="" +animation/clip_57/start_frame=0 +animation/clip_57/end_frame=0 +animation/clip_57/loops=false +animation/clip_58/name="" +animation/clip_58/start_frame=0 +animation/clip_58/end_frame=0 +animation/clip_58/loops=false +animation/clip_59/name="" +animation/clip_59/start_frame=0 +animation/clip_59/end_frame=0 +animation/clip_59/loops=false +animation/clip_60/name="" +animation/clip_60/start_frame=0 +animation/clip_60/end_frame=0 +animation/clip_60/loops=false +animation/clip_61/name="" +animation/clip_61/start_frame=0 +animation/clip_61/end_frame=0 +animation/clip_61/loops=false +animation/clip_62/name="" +animation/clip_62/start_frame=0 +animation/clip_62/end_frame=0 +animation/clip_62/loops=false +animation/clip_63/name="" +animation/clip_63/start_frame=0 +animation/clip_63/end_frame=0 +animation/clip_63/loops=false +animation/clip_64/name="" +animation/clip_64/start_frame=0 +animation/clip_64/end_frame=0 +animation/clip_64/loops=false +animation/clip_65/name="" +animation/clip_65/start_frame=0 +animation/clip_65/end_frame=0 +animation/clip_65/loops=false +animation/clip_66/name="" +animation/clip_66/start_frame=0 +animation/clip_66/end_frame=0 +animation/clip_66/loops=false +animation/clip_67/name="" +animation/clip_67/start_frame=0 +animation/clip_67/end_frame=0 +animation/clip_67/loops=false +animation/clip_68/name="" +animation/clip_68/start_frame=0 +animation/clip_68/end_frame=0 +animation/clip_68/loops=false +animation/clip_69/name="" +animation/clip_69/start_frame=0 +animation/clip_69/end_frame=0 +animation/clip_69/loops=false +animation/clip_70/name="" +animation/clip_70/start_frame=0 +animation/clip_70/end_frame=0 +animation/clip_70/loops=false +animation/clip_71/name="" +animation/clip_71/start_frame=0 +animation/clip_71/end_frame=0 +animation/clip_71/loops=false +animation/clip_72/name="" +animation/clip_72/start_frame=0 +animation/clip_72/end_frame=0 +animation/clip_72/loops=false +animation/clip_73/name="" +animation/clip_73/start_frame=0 +animation/clip_73/end_frame=0 +animation/clip_73/loops=false +animation/clip_74/name="" +animation/clip_74/start_frame=0 +animation/clip_74/end_frame=0 +animation/clip_74/loops=false +animation/clip_75/name="" +animation/clip_75/start_frame=0 +animation/clip_75/end_frame=0 +animation/clip_75/loops=false +animation/clip_76/name="" +animation/clip_76/start_frame=0 +animation/clip_76/end_frame=0 +animation/clip_76/loops=false +animation/clip_77/name="" +animation/clip_77/start_frame=0 +animation/clip_77/end_frame=0 +animation/clip_77/loops=false +animation/clip_78/name="" +animation/clip_78/start_frame=0 +animation/clip_78/end_frame=0 +animation/clip_78/loops=false +animation/clip_79/name="" +animation/clip_79/start_frame=0 +animation/clip_79/end_frame=0 +animation/clip_79/loops=false +animation/clip_80/name="" +animation/clip_80/start_frame=0 +animation/clip_80/end_frame=0 +animation/clip_80/loops=false +animation/clip_81/name="" +animation/clip_81/start_frame=0 +animation/clip_81/end_frame=0 +animation/clip_81/loops=false +animation/clip_82/name="" +animation/clip_82/start_frame=0 +animation/clip_82/end_frame=0 +animation/clip_82/loops=false +animation/clip_83/name="" +animation/clip_83/start_frame=0 +animation/clip_83/end_frame=0 +animation/clip_83/loops=false +animation/clip_84/name="" +animation/clip_84/start_frame=0 +animation/clip_84/end_frame=0 +animation/clip_84/loops=false +animation/clip_85/name="" +animation/clip_85/start_frame=0 +animation/clip_85/end_frame=0 +animation/clip_85/loops=false +animation/clip_86/name="" +animation/clip_86/start_frame=0 +animation/clip_86/end_frame=0 +animation/clip_86/loops=false +animation/clip_87/name="" +animation/clip_87/start_frame=0 +animation/clip_87/end_frame=0 +animation/clip_87/loops=false +animation/clip_88/name="" +animation/clip_88/start_frame=0 +animation/clip_88/end_frame=0 +animation/clip_88/loops=false +animation/clip_89/name="" +animation/clip_89/start_frame=0 +animation/clip_89/end_frame=0 +animation/clip_89/loops=false +animation/clip_90/name="" +animation/clip_90/start_frame=0 +animation/clip_90/end_frame=0 +animation/clip_90/loops=false +animation/clip_91/name="" +animation/clip_91/start_frame=0 +animation/clip_91/end_frame=0 +animation/clip_91/loops=false +animation/clip_92/name="" +animation/clip_92/start_frame=0 +animation/clip_92/end_frame=0 +animation/clip_92/loops=false +animation/clip_93/name="" +animation/clip_93/start_frame=0 +animation/clip_93/end_frame=0 +animation/clip_93/loops=false +animation/clip_94/name="" +animation/clip_94/start_frame=0 +animation/clip_94/end_frame=0 +animation/clip_94/loops=false +animation/clip_95/name="" +animation/clip_95/start_frame=0 +animation/clip_95/end_frame=0 +animation/clip_95/loops=false +animation/clip_96/name="" +animation/clip_96/start_frame=0 +animation/clip_96/end_frame=0 +animation/clip_96/loops=false +animation/clip_97/name="" +animation/clip_97/start_frame=0 +animation/clip_97/end_frame=0 +animation/clip_97/loops=false +animation/clip_98/name="" +animation/clip_98/start_frame=0 +animation/clip_98/end_frame=0 +animation/clip_98/loops=false +animation/clip_99/name="" +animation/clip_99/start_frame=0 +animation/clip_99/end_frame=0 +animation/clip_99/loops=false +animation/clip_100/name="" +animation/clip_100/start_frame=0 +animation/clip_100/end_frame=0 +animation/clip_100/loops=false +animation/clip_101/name="" +animation/clip_101/start_frame=0 +animation/clip_101/end_frame=0 +animation/clip_101/loops=false +animation/clip_102/name="" +animation/clip_102/start_frame=0 +animation/clip_102/end_frame=0 +animation/clip_102/loops=false +animation/clip_103/name="" +animation/clip_103/start_frame=0 +animation/clip_103/end_frame=0 +animation/clip_103/loops=false +animation/clip_104/name="" +animation/clip_104/start_frame=0 +animation/clip_104/end_frame=0 +animation/clip_104/loops=false +animation/clip_105/name="" +animation/clip_105/start_frame=0 +animation/clip_105/end_frame=0 +animation/clip_105/loops=false +animation/clip_106/name="" +animation/clip_106/start_frame=0 +animation/clip_106/end_frame=0 +animation/clip_106/loops=false +animation/clip_107/name="" +animation/clip_107/start_frame=0 +animation/clip_107/end_frame=0 +animation/clip_107/loops=false +animation/clip_108/name="" +animation/clip_108/start_frame=0 +animation/clip_108/end_frame=0 +animation/clip_108/loops=false +animation/clip_109/name="" +animation/clip_109/start_frame=0 +animation/clip_109/end_frame=0 +animation/clip_109/loops=false +animation/clip_110/name="" +animation/clip_110/start_frame=0 +animation/clip_110/end_frame=0 +animation/clip_110/loops=false +animation/clip_111/name="" +animation/clip_111/start_frame=0 +animation/clip_111/end_frame=0 +animation/clip_111/loops=false +animation/clip_112/name="" +animation/clip_112/start_frame=0 +animation/clip_112/end_frame=0 +animation/clip_112/loops=false +animation/clip_113/name="" +animation/clip_113/start_frame=0 +animation/clip_113/end_frame=0 +animation/clip_113/loops=false +animation/clip_114/name="" +animation/clip_114/start_frame=0 +animation/clip_114/end_frame=0 +animation/clip_114/loops=false +animation/clip_115/name="" +animation/clip_115/start_frame=0 +animation/clip_115/end_frame=0 +animation/clip_115/loops=false +animation/clip_116/name="" +animation/clip_116/start_frame=0 +animation/clip_116/end_frame=0 +animation/clip_116/loops=false +animation/clip_117/name="" +animation/clip_117/start_frame=0 +animation/clip_117/end_frame=0 +animation/clip_117/loops=false +animation/clip_118/name="" +animation/clip_118/start_frame=0 +animation/clip_118/end_frame=0 +animation/clip_118/loops=false +animation/clip_119/name="" +animation/clip_119/start_frame=0 +animation/clip_119/end_frame=0 +animation/clip_119/loops=false +animation/clip_120/name="" +animation/clip_120/start_frame=0 +animation/clip_120/end_frame=0 +animation/clip_120/loops=false +animation/clip_121/name="" +animation/clip_121/start_frame=0 +animation/clip_121/end_frame=0 +animation/clip_121/loops=false +animation/clip_122/name="" +animation/clip_122/start_frame=0 +animation/clip_122/end_frame=0 +animation/clip_122/loops=false +animation/clip_123/name="" +animation/clip_123/start_frame=0 +animation/clip_123/end_frame=0 +animation/clip_123/loops=false +animation/clip_124/name="" +animation/clip_124/start_frame=0 +animation/clip_124/end_frame=0 +animation/clip_124/loops=false +animation/clip_125/name="" +animation/clip_125/start_frame=0 +animation/clip_125/end_frame=0 +animation/clip_125/loops=false +animation/clip_126/name="" +animation/clip_126/start_frame=0 +animation/clip_126/end_frame=0 +animation/clip_126/loops=false +animation/clip_127/name="" +animation/clip_127/start_frame=0 +animation/clip_127/end_frame=0 +animation/clip_127/loops=false +animation/clip_128/name="" +animation/clip_128/start_frame=0 +animation/clip_128/end_frame=0 +animation/clip_128/loops=false +animation/clip_129/name="" +animation/clip_129/start_frame=0 +animation/clip_129/end_frame=0 +animation/clip_129/loops=false +animation/clip_130/name="" +animation/clip_130/start_frame=0 +animation/clip_130/end_frame=0 +animation/clip_130/loops=false +animation/clip_131/name="" +animation/clip_131/start_frame=0 +animation/clip_131/end_frame=0 +animation/clip_131/loops=false +animation/clip_132/name="" +animation/clip_132/start_frame=0 +animation/clip_132/end_frame=0 +animation/clip_132/loops=false +animation/clip_133/name="" +animation/clip_133/start_frame=0 +animation/clip_133/end_frame=0 +animation/clip_133/loops=false +animation/clip_134/name="" +animation/clip_134/start_frame=0 +animation/clip_134/end_frame=0 +animation/clip_134/loops=false +animation/clip_135/name="" +animation/clip_135/start_frame=0 +animation/clip_135/end_frame=0 +animation/clip_135/loops=false +animation/clip_136/name="" +animation/clip_136/start_frame=0 +animation/clip_136/end_frame=0 +animation/clip_136/loops=false +animation/clip_137/name="" +animation/clip_137/start_frame=0 +animation/clip_137/end_frame=0 +animation/clip_137/loops=false +animation/clip_138/name="" +animation/clip_138/start_frame=0 +animation/clip_138/end_frame=0 +animation/clip_138/loops=false +animation/clip_139/name="" +animation/clip_139/start_frame=0 +animation/clip_139/end_frame=0 +animation/clip_139/loops=false +animation/clip_140/name="" +animation/clip_140/start_frame=0 +animation/clip_140/end_frame=0 +animation/clip_140/loops=false +animation/clip_141/name="" +animation/clip_141/start_frame=0 +animation/clip_141/end_frame=0 +animation/clip_141/loops=false +animation/clip_142/name="" +animation/clip_142/start_frame=0 +animation/clip_142/end_frame=0 +animation/clip_142/loops=false +animation/clip_143/name="" +animation/clip_143/start_frame=0 +animation/clip_143/end_frame=0 +animation/clip_143/loops=false +animation/clip_144/name="" +animation/clip_144/start_frame=0 +animation/clip_144/end_frame=0 +animation/clip_144/loops=false +animation/clip_145/name="" +animation/clip_145/start_frame=0 +animation/clip_145/end_frame=0 +animation/clip_145/loops=false +animation/clip_146/name="" +animation/clip_146/start_frame=0 +animation/clip_146/end_frame=0 +animation/clip_146/loops=false +animation/clip_147/name="" +animation/clip_147/start_frame=0 +animation/clip_147/end_frame=0 +animation/clip_147/loops=false +animation/clip_148/name="" +animation/clip_148/start_frame=0 +animation/clip_148/end_frame=0 +animation/clip_148/loops=false +animation/clip_149/name="" +animation/clip_149/start_frame=0 +animation/clip_149/end_frame=0 +animation/clip_149/loops=false +animation/clip_150/name="" +animation/clip_150/start_frame=0 +animation/clip_150/end_frame=0 +animation/clip_150/loops=false +animation/clip_151/name="" +animation/clip_151/start_frame=0 +animation/clip_151/end_frame=0 +animation/clip_151/loops=false +animation/clip_152/name="" +animation/clip_152/start_frame=0 +animation/clip_152/end_frame=0 +animation/clip_152/loops=false +animation/clip_153/name="" +animation/clip_153/start_frame=0 +animation/clip_153/end_frame=0 +animation/clip_153/loops=false +animation/clip_154/name="" +animation/clip_154/start_frame=0 +animation/clip_154/end_frame=0 +animation/clip_154/loops=false +animation/clip_155/name="" +animation/clip_155/start_frame=0 +animation/clip_155/end_frame=0 +animation/clip_155/loops=false +animation/clip_156/name="" +animation/clip_156/start_frame=0 +animation/clip_156/end_frame=0 +animation/clip_156/loops=false +animation/clip_157/name="" +animation/clip_157/start_frame=0 +animation/clip_157/end_frame=0 +animation/clip_157/loops=false +animation/clip_158/name="" +animation/clip_158/start_frame=0 +animation/clip_158/end_frame=0 +animation/clip_158/loops=false +animation/clip_159/name="" +animation/clip_159/start_frame=0 +animation/clip_159/end_frame=0 +animation/clip_159/loops=false +animation/clip_160/name="" +animation/clip_160/start_frame=0 +animation/clip_160/end_frame=0 +animation/clip_160/loops=false +animation/clip_161/name="" +animation/clip_161/start_frame=0 +animation/clip_161/end_frame=0 +animation/clip_161/loops=false +animation/clip_162/name="" +animation/clip_162/start_frame=0 +animation/clip_162/end_frame=0 +animation/clip_162/loops=false +animation/clip_163/name="" +animation/clip_163/start_frame=0 +animation/clip_163/end_frame=0 +animation/clip_163/loops=false +animation/clip_164/name="" +animation/clip_164/start_frame=0 +animation/clip_164/end_frame=0 +animation/clip_164/loops=false +animation/clip_165/name="" +animation/clip_165/start_frame=0 +animation/clip_165/end_frame=0 +animation/clip_165/loops=false +animation/clip_166/name="" +animation/clip_166/start_frame=0 +animation/clip_166/end_frame=0 +animation/clip_166/loops=false +animation/clip_167/name="" +animation/clip_167/start_frame=0 +animation/clip_167/end_frame=0 +animation/clip_167/loops=false +animation/clip_168/name="" +animation/clip_168/start_frame=0 +animation/clip_168/end_frame=0 +animation/clip_168/loops=false +animation/clip_169/name="" +animation/clip_169/start_frame=0 +animation/clip_169/end_frame=0 +animation/clip_169/loops=false +animation/clip_170/name="" +animation/clip_170/start_frame=0 +animation/clip_170/end_frame=0 +animation/clip_170/loops=false +animation/clip_171/name="" +animation/clip_171/start_frame=0 +animation/clip_171/end_frame=0 +animation/clip_171/loops=false +animation/clip_172/name="" +animation/clip_172/start_frame=0 +animation/clip_172/end_frame=0 +animation/clip_172/loops=false +animation/clip_173/name="" +animation/clip_173/start_frame=0 +animation/clip_173/end_frame=0 +animation/clip_173/loops=false +animation/clip_174/name="" +animation/clip_174/start_frame=0 +animation/clip_174/end_frame=0 +animation/clip_174/loops=false +animation/clip_175/name="" +animation/clip_175/start_frame=0 +animation/clip_175/end_frame=0 +animation/clip_175/loops=false +animation/clip_176/name="" +animation/clip_176/start_frame=0 +animation/clip_176/end_frame=0 +animation/clip_176/loops=false +animation/clip_177/name="" +animation/clip_177/start_frame=0 +animation/clip_177/end_frame=0 +animation/clip_177/loops=false +animation/clip_178/name="" +animation/clip_178/start_frame=0 +animation/clip_178/end_frame=0 +animation/clip_178/loops=false +animation/clip_179/name="" +animation/clip_179/start_frame=0 +animation/clip_179/end_frame=0 +animation/clip_179/loops=false +animation/clip_180/name="" +animation/clip_180/start_frame=0 +animation/clip_180/end_frame=0 +animation/clip_180/loops=false +animation/clip_181/name="" +animation/clip_181/start_frame=0 +animation/clip_181/end_frame=0 +animation/clip_181/loops=false +animation/clip_182/name="" +animation/clip_182/start_frame=0 +animation/clip_182/end_frame=0 +animation/clip_182/loops=false +animation/clip_183/name="" +animation/clip_183/start_frame=0 +animation/clip_183/end_frame=0 +animation/clip_183/loops=false +animation/clip_184/name="" +animation/clip_184/start_frame=0 +animation/clip_184/end_frame=0 +animation/clip_184/loops=false +animation/clip_185/name="" +animation/clip_185/start_frame=0 +animation/clip_185/end_frame=0 +animation/clip_185/loops=false +animation/clip_186/name="" +animation/clip_186/start_frame=0 +animation/clip_186/end_frame=0 +animation/clip_186/loops=false +animation/clip_187/name="" +animation/clip_187/start_frame=0 +animation/clip_187/end_frame=0 +animation/clip_187/loops=false +animation/clip_188/name="" +animation/clip_188/start_frame=0 +animation/clip_188/end_frame=0 +animation/clip_188/loops=false +animation/clip_189/name="" +animation/clip_189/start_frame=0 +animation/clip_189/end_frame=0 +animation/clip_189/loops=false +animation/clip_190/name="" +animation/clip_190/start_frame=0 +animation/clip_190/end_frame=0 +animation/clip_190/loops=false +animation/clip_191/name="" +animation/clip_191/start_frame=0 +animation/clip_191/end_frame=0 +animation/clip_191/loops=false +animation/clip_192/name="" +animation/clip_192/start_frame=0 +animation/clip_192/end_frame=0 +animation/clip_192/loops=false +animation/clip_193/name="" +animation/clip_193/start_frame=0 +animation/clip_193/end_frame=0 +animation/clip_193/loops=false +animation/clip_194/name="" +animation/clip_194/start_frame=0 +animation/clip_194/end_frame=0 +animation/clip_194/loops=false +animation/clip_195/name="" +animation/clip_195/start_frame=0 +animation/clip_195/end_frame=0 +animation/clip_195/loops=false +animation/clip_196/name="" +animation/clip_196/start_frame=0 +animation/clip_196/end_frame=0 +animation/clip_196/loops=false +animation/clip_197/name="" +animation/clip_197/start_frame=0 +animation/clip_197/end_frame=0 +animation/clip_197/loops=false +animation/clip_198/name="" +animation/clip_198/start_frame=0 +animation/clip_198/end_frame=0 +animation/clip_198/loops=false +animation/clip_199/name="" +animation/clip_199/start_frame=0 +animation/clip_199/end_frame=0 +animation/clip_199/loops=false +animation/clip_200/name="" +animation/clip_200/start_frame=0 +animation/clip_200/end_frame=0 +animation/clip_200/loops=false +animation/clip_201/name="" +animation/clip_201/start_frame=0 +animation/clip_201/end_frame=0 +animation/clip_201/loops=false +animation/clip_202/name="" +animation/clip_202/start_frame=0 +animation/clip_202/end_frame=0 +animation/clip_202/loops=false +animation/clip_203/name="" +animation/clip_203/start_frame=0 +animation/clip_203/end_frame=0 +animation/clip_203/loops=false +animation/clip_204/name="" +animation/clip_204/start_frame=0 +animation/clip_204/end_frame=0 +animation/clip_204/loops=false +animation/clip_205/name="" +animation/clip_205/start_frame=0 +animation/clip_205/end_frame=0 +animation/clip_205/loops=false +animation/clip_206/name="" +animation/clip_206/start_frame=0 +animation/clip_206/end_frame=0 +animation/clip_206/loops=false +animation/clip_207/name="" +animation/clip_207/start_frame=0 +animation/clip_207/end_frame=0 +animation/clip_207/loops=false +animation/clip_208/name="" +animation/clip_208/start_frame=0 +animation/clip_208/end_frame=0 +animation/clip_208/loops=false +animation/clip_209/name="" +animation/clip_209/start_frame=0 +animation/clip_209/end_frame=0 +animation/clip_209/loops=false +animation/clip_210/name="" +animation/clip_210/start_frame=0 +animation/clip_210/end_frame=0 +animation/clip_210/loops=false +animation/clip_211/name="" +animation/clip_211/start_frame=0 +animation/clip_211/end_frame=0 +animation/clip_211/loops=false +animation/clip_212/name="" +animation/clip_212/start_frame=0 +animation/clip_212/end_frame=0 +animation/clip_212/loops=false +animation/clip_213/name="" +animation/clip_213/start_frame=0 +animation/clip_213/end_frame=0 +animation/clip_213/loops=false +animation/clip_214/name="" +animation/clip_214/start_frame=0 +animation/clip_214/end_frame=0 +animation/clip_214/loops=false +animation/clip_215/name="" +animation/clip_215/start_frame=0 +animation/clip_215/end_frame=0 +animation/clip_215/loops=false +animation/clip_216/name="" +animation/clip_216/start_frame=0 +animation/clip_216/end_frame=0 +animation/clip_216/loops=false +animation/clip_217/name="" +animation/clip_217/start_frame=0 +animation/clip_217/end_frame=0 +animation/clip_217/loops=false +animation/clip_218/name="" +animation/clip_218/start_frame=0 +animation/clip_218/end_frame=0 +animation/clip_218/loops=false +animation/clip_219/name="" +animation/clip_219/start_frame=0 +animation/clip_219/end_frame=0 +animation/clip_219/loops=false +animation/clip_220/name="" +animation/clip_220/start_frame=0 +animation/clip_220/end_frame=0 +animation/clip_220/loops=false +animation/clip_221/name="" +animation/clip_221/start_frame=0 +animation/clip_221/end_frame=0 +animation/clip_221/loops=false +animation/clip_222/name="" +animation/clip_222/start_frame=0 +animation/clip_222/end_frame=0 +animation/clip_222/loops=false +animation/clip_223/name="" +animation/clip_223/start_frame=0 +animation/clip_223/end_frame=0 +animation/clip_223/loops=false +animation/clip_224/name="" +animation/clip_224/start_frame=0 +animation/clip_224/end_frame=0 +animation/clip_224/loops=false +animation/clip_225/name="" +animation/clip_225/start_frame=0 +animation/clip_225/end_frame=0 +animation/clip_225/loops=false +animation/clip_226/name="" +animation/clip_226/start_frame=0 +animation/clip_226/end_frame=0 +animation/clip_226/loops=false +animation/clip_227/name="" +animation/clip_227/start_frame=0 +animation/clip_227/end_frame=0 +animation/clip_227/loops=false +animation/clip_228/name="" +animation/clip_228/start_frame=0 +animation/clip_228/end_frame=0 +animation/clip_228/loops=false +animation/clip_229/name="" +animation/clip_229/start_frame=0 +animation/clip_229/end_frame=0 +animation/clip_229/loops=false +animation/clip_230/name="" +animation/clip_230/start_frame=0 +animation/clip_230/end_frame=0 +animation/clip_230/loops=false +animation/clip_231/name="" +animation/clip_231/start_frame=0 +animation/clip_231/end_frame=0 +animation/clip_231/loops=false +animation/clip_232/name="" +animation/clip_232/start_frame=0 +animation/clip_232/end_frame=0 +animation/clip_232/loops=false +animation/clip_233/name="" +animation/clip_233/start_frame=0 +animation/clip_233/end_frame=0 +animation/clip_233/loops=false +animation/clip_234/name="" +animation/clip_234/start_frame=0 +animation/clip_234/end_frame=0 +animation/clip_234/loops=false +animation/clip_235/name="" +animation/clip_235/start_frame=0 +animation/clip_235/end_frame=0 +animation/clip_235/loops=false +animation/clip_236/name="" +animation/clip_236/start_frame=0 +animation/clip_236/end_frame=0 +animation/clip_236/loops=false +animation/clip_237/name="" +animation/clip_237/start_frame=0 +animation/clip_237/end_frame=0 +animation/clip_237/loops=false +animation/clip_238/name="" +animation/clip_238/start_frame=0 +animation/clip_238/end_frame=0 +animation/clip_238/loops=false +animation/clip_239/name="" +animation/clip_239/start_frame=0 +animation/clip_239/end_frame=0 +animation/clip_239/loops=false +animation/clip_240/name="" +animation/clip_240/start_frame=0 +animation/clip_240/end_frame=0 +animation/clip_240/loops=false +animation/clip_241/name="" +animation/clip_241/start_frame=0 +animation/clip_241/end_frame=0 +animation/clip_241/loops=false +animation/clip_242/name="" +animation/clip_242/start_frame=0 +animation/clip_242/end_frame=0 +animation/clip_242/loops=false +animation/clip_243/name="" +animation/clip_243/start_frame=0 +animation/clip_243/end_frame=0 +animation/clip_243/loops=false +animation/clip_244/name="" +animation/clip_244/start_frame=0 +animation/clip_244/end_frame=0 +animation/clip_244/loops=false +animation/clip_245/name="" +animation/clip_245/start_frame=0 +animation/clip_245/end_frame=0 +animation/clip_245/loops=false +animation/clip_246/name="" +animation/clip_246/start_frame=0 +animation/clip_246/end_frame=0 +animation/clip_246/loops=false +animation/clip_247/name="" +animation/clip_247/start_frame=0 +animation/clip_247/end_frame=0 +animation/clip_247/loops=false +animation/clip_248/name="" +animation/clip_248/start_frame=0 +animation/clip_248/end_frame=0 +animation/clip_248/loops=false +animation/clip_249/name="" +animation/clip_249/start_frame=0 +animation/clip_249/end_frame=0 +animation/clip_249/loops=false +animation/clip_250/name="" +animation/clip_250/start_frame=0 +animation/clip_250/end_frame=0 +animation/clip_250/loops=false +animation/clip_251/name="" +animation/clip_251/start_frame=0 +animation/clip_251/end_frame=0 +animation/clip_251/loops=false +animation/clip_252/name="" +animation/clip_252/start_frame=0 +animation/clip_252/end_frame=0 +animation/clip_252/loops=false +animation/clip_253/name="" +animation/clip_253/start_frame=0 +animation/clip_253/end_frame=0 +animation/clip_253/loops=false +animation/clip_254/name="" +animation/clip_254/start_frame=0 +animation/clip_254/end_frame=0 +animation/clip_254/loops=false +animation/clip_255/name="" +animation/clip_255/start_frame=0 +animation/clip_255/end_frame=0 +animation/clip_255/loops=false +animation/clip_256/name="" +animation/clip_256/start_frame=0 +animation/clip_256/end_frame=0 +animation/clip_256/loops=false diff --git a/BodyConfig/LoadBodyParts.gd b/BodyConfig/LoadBodyParts.gd new file mode 100644 index 0000000..125aab2 --- /dev/null +++ b/BodyConfig/LoadBodyParts.gd @@ -0,0 +1,14 @@ +extends VBoxContainer + + +# Called when the node enters the scene tree for the first time. +func _ready(): + for entry in BodyPartLoader.bodyparts: + #var button = Button.new() + #button.text = entry.key + pass + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +#func _process(delta): +# pass diff --git a/BodyConfig/bodyBuilderMenu.tscn b/BodyConfig/bodyBuilderMenu.tscn new file mode 100644 index 0000000..bb409dc --- /dev/null +++ b/BodyConfig/bodyBuilderMenu.tscn @@ -0,0 +1,57 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://BodyParts/BodyBase/BodyBase.tscn" type="PackedScene" id=1] +[ext_resource path="res://BodyConfig/bodyBuildingScript.gd" type="Script" id=2] +[ext_resource path="res://BodyConfig/LoadBodyParts.gd" type="Script" id=3] + +[node name="Body Builder Menu" type="Spatial"] +script = ExtResource( 2 ) +torsoPath = NodePath("Torso") +cameraPath = NodePath("GUI/HBoxC/ViewportContainer/Viewport/Camera") +rayCastPath = NodePath("GUI/HBoxC/ViewportContainer/Viewport/MouseLook") +viewPortPath = NodePath("GUI/HBoxC/ViewportContainer/Viewport") + +[node name="GUI" type="MarginContainer" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="HBoxC" type="HBoxContainer" parent="GUI"] +margin_right = 1024.0 +margin_bottom = 600.0 +rect_min_size = Vector2( 550, 500 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="VBoxC" type="VBoxContainer" parent="GUI/HBoxC"] +margin_right = 300.0 +margin_bottom = 600.0 +rect_min_size = Vector2( 300, 500 ) +script = ExtResource( 3 ) + +[node name="ViewportContainer" type="ViewportContainer" parent="GUI/HBoxC"] +margin_left = 304.0 +margin_right = 1024.0 +margin_bottom = 600.0 +rect_min_size = Vector2( 500, 500 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +stretch = true + +[node name="Viewport" type="Viewport" parent="GUI/HBoxC/ViewportContainer"] +size = Vector2( 720, 600 ) +handle_input_locally = false +render_target_update_mode = 3 + +[node name="Camera" type="Camera" parent="GUI/HBoxC/ViewportContainer/Viewport"] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 3 ) + +[node name="MouseLook" type="RayCast" parent="GUI/HBoxC/ViewportContainer/Viewport"] +enabled = true +collide_with_areas = true +collide_with_bodies = false + +[node name="Torso" parent="." instance=ExtResource( 1 )] diff --git a/BodyConfig/bodyBuildingScript.gd b/BodyConfig/bodyBuildingScript.gd new file mode 100644 index 0000000..3060f0f --- /dev/null +++ b/BodyConfig/bodyBuildingScript.gd @@ -0,0 +1,80 @@ +extends Spatial + +export(NodePath) var torsoPath +export(NodePath) var cameraPath +export(NodePath) var rayCastPath +export(NodePath) var viewPortPath + +const ROT_MOD = 500 +const ROT_DECLINE = 0.1 + +var _viewRot = false +var _prev_mouse_pos +var _camera : Camera +var _rayCast : RayCast +var _torso : RigidBody +var _viewport : Viewport + +var _velx = 0 +var _vely = 0 + + + +# Called when the node enters the scene tree for the first time. +func _ready(): + PhysicsServer.area_set_param(get_viewport().find_world().get_space(), PhysicsServer.AREA_PARAM_GRAVITY, 0) + _torso = get_node(torsoPath) as RigidBody + _camera = get_node(cameraPath) as Camera + _rayCast = get_node(rayCastPath) as RayCast + _viewport = get_node(viewPortPath) as Viewport + + +func _process(delta): + if _viewRot: + var mouse_pos = get_viewport().get_mouse_position() + + _velx = (mouse_pos.x - _prev_mouse_pos.x) * delta + _vely = (mouse_pos.y - _prev_mouse_pos.y) * delta + + _prev_mouse_pos = mouse_pos + + if not(_velx < 0.001 and _velx > -0.001) or not(_vely < 0.001 and _vely > -0.001) or _viewRot: + _torso.rotate_x(_vely * ROT_MOD * delta * PI/180 - global_transform.basis.get_euler().x) + _torso.rotate_y(_velx * ROT_MOD * delta * PI/180 - global_transform.basis.get_euler().y) + + var decline = (1 - ROT_DECLINE * (delta*100)) + + if decline > 1: + decline = 1 + elif decline < 0: + decline = 0 + + _velx *= decline + _vely *= decline + + +func _physics_process(delta): + if _viewRot: + var mouse_pos = _viewport.get_viewport().get_mouse_position() + + #set origin of rayCast + var orig = _camera.project_ray_origin(mouse_pos) + + #set cast_to of rayCast + _rayCast.translation = orig + _rayCast.cast_to = orig + _camera.project_ray_normal(mouse_pos) * 1000.0 + + if _rayCast.is_colliding(): + # collider will be the node hit + print(_rayCast.get_collider()) + + +func _input(event): + if event is InputEventMouseButton: + if event.pressed and _viewport.get_viewport().get_mouse_position().x >= 0: + print("Mouse Click at: ", event.position) + _prev_mouse_pos = event.position + _viewRot = true + else: + print("mouse unpressed at: ", event.position) + _viewRot = false diff --git a/BodyParts/Arm.gd b/BodyParts/Arm.gd new file mode 100644 index 0000000..9b7ed44 --- /dev/null +++ b/BodyParts/Arm.gd @@ -0,0 +1,22 @@ +extends PushingBodyPart + + +onready var anim = get_node("Mesh/AnimationPlayer") + + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + pass # Replace with function body. + + +func action(): + anim.play("ArmatureAction001") + + +func push(body): + # We multiply by 0.1 because we only want it to spin slightly, it should mostly go up + base.apply_impulse(transform.basis.xform(touch_area.global_transform.origin) * 0.1, base.transform.basis.y * 5.0) + +# Called every frame. 'delta' is the elapsed time since the previous frame. +#func _process(delta: float) -> void: +# pass diff --git a/BodyParts/Arm.tscn b/BodyParts/Arm.tscn new file mode 100644 index 0000000..200c275 --- /dev/null +++ b/BodyParts/Arm.tscn @@ -0,0 +1,40 @@ +[gd_scene load_steps=6 format=2] + +[ext_resource path="res://BodyParts/PushingBodyPart.tscn" type="PackedScene" id=1] +[ext_resource path="res://3D Input/untitled.glb" type="PackedScene" id=2] +[ext_resource path="res://BodyParts/Arm.gd" type="Script" id=3] + +[sub_resource type="CapsuleShape" id=3] +radius = 0.724339 +height = 5.27855 + +[sub_resource type="SphereShape" id=2] +radius = 0.591769 + +[node name="Arm" instance=ExtResource( 1 )] +script = ExtResource( 3 ) + +[node name="PartCollider" parent="." index="0"] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -5.34203 ) +shape = SubResource( 3 ) + +[node name="Mesh" parent="." index="1" instance=ExtResource( 2 )] + +[node name="Sphere" parent="Mesh" index="0"] +visible = false + +[node name="BoneAttachment" type="BoneAttachment" parent="Mesh/Armature/Skeleton" index="1"] +transform = Transform( 1, -1.98247e-23, -2.98292e-24, 6.50669e-24, -9.49949e-08, 1, -2.07684e-23, -1, -9.49949e-08, -2.23781e-16, -0.0078205, -5.05441 ) +bone_name = "bone_2" + +[node name="RemoteTransform" type="RemoteTransform" parent="Mesh/Armature/Skeleton/BoneAttachment" index="0"] +remote_path = NodePath("../../../../../TouchArea") + +[node name="TouchArea" parent="." index="2"] +transform = Transform( 1, -1.98247e-23, -2.98292e-24, 6.50669e-24, -9.49949e-08, 1, -2.07684e-23, -1, -9.49949e-08, -2.23781e-16, -0.0078205, -7.60024 ) + +[node name="CollisionShape" type="CollisionShape" parent="TouchArea" index="0"] +transform = Transform( 1, 2.98291e-24, -1.98247e-23, -2.07684e-23, -9.49949e-08, -1, -6.50669e-24, 1, -9.49949e-08, 2.23781e-16, 0.399765, 0.00782054 ) +shape = SubResource( 2 ) + +[editable path="Mesh"] diff --git a/BodyParts/BodyBase/BodyBase.gd b/BodyParts/BodyBase/BodyBase.gd new file mode 100644 index 0000000..f48b502 --- /dev/null +++ b/BodyParts/BodyBase/BodyBase.gd @@ -0,0 +1,14 @@ +extends Spatial +class_name BodyBase + + +export(int) var player_id + + +# Called when the node enters the scene tree for the first time. +func _ready(): + pass # Replace with function body. + +# Called every frame. 'delta' is the elapsed time since the previous frame. +#func _process(delta): +# pass diff --git a/BodyParts/BodyBase/BodyBase.tscn b/BodyParts/BodyBase/BodyBase.tscn new file mode 100644 index 0000000..e52a13e --- /dev/null +++ b/BodyParts/BodyBase/BodyBase.tscn @@ -0,0 +1,53 @@ +[gd_scene load_steps=7 format=2] + +[ext_resource path="res://BodyParts/BodyBase/BodyBase.gd" type="Script" id=1] + +[sub_resource type="CapsuleMesh" id=1] + +[sub_resource type="CapsuleShape" id=2] + +[sub_resource type="SphereMesh" id=3] + +[sub_resource type="SphereShape" id=4] + +[sub_resource type="SphereShape" id=5] + +[node name="Torso" type="RigidBody" groups=[ +"Player", +]] +script = ExtResource( 1 ) + +[node name="TorsoMesh" type="MeshInstance" parent="."] +mesh = SubResource( 1 ) +material/0 = null + +[node name="TorsoCollider" type="CollisionShape" parent="."] +shape = SubResource( 2 ) + +[node name="FrontLeft" type="Spatial" parent="."] +transform = Transform( 0.5, -1.62921e-07, -0.866025, -3.25841e-07, -1, 0, -0.866025, 2.82187e-07, -0.5, 0.6, 0, 1 ) + +[node name="FrontLeftAttachMent" type="MeshInstance" parent="FrontLeft"] +transform = Transform( 0.3, 0, 0, 0, 0.3, 0, 0, 0, 0.3, 0, 0, 0 ) +mesh = SubResource( 3 ) +material/0 = null + +[node name="Area" type="Area" parent="FrontLeft"] + +[node name="CollisionShape" type="CollisionShape" parent="FrontLeft/Area"] +transform = Transform( 0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0 ) +shape = SubResource( 4 ) + +[node name="FrontRight" type="Spatial" parent="."] +transform = Transform( 0.5, -1.62921e-07, 0.866025, -3.25841e-07, -1, 0, 0.866025, -2.82187e-07, -0.5, -0.6, 0, 1 ) + +[node name="FrontRightAttachMent" type="MeshInstance" parent="FrontRight"] +transform = Transform( 0.3, 0, 0, 0, 0.3, 0, 0, 5.0822e-21, 0.3, 0, 0, 0 ) +mesh = SubResource( 3 ) +material/0 = null + +[node name="Area" type="Area" parent="FrontRight"] + +[node name="CollisionShape" type="CollisionShape" parent="FrontRight/Area"] +transform = Transform( 0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0 ) +shape = SubResource( 5 ) diff --git a/BodyParts/BodyPart.gd b/BodyParts/BodyPart.gd new file mode 100644 index 0000000..18f6034 --- /dev/null +++ b/BodyParts/BodyPart.gd @@ -0,0 +1,44 @@ +extends Spatial +class_name BodyPart + +# Must be the direct child of an AttachmentPoint of the BodyBase + + +onready var base = get_parent().get_parent() +onready var physics_shape = get_node("PartCollider") + +export(int) var key + +var setup_done = false + + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + assert(base is BodyBase) + + + + +func _process(delta: float) -> void: + # We do this here because we want the whole tree to really be done instancing + if not setup_done: + var translation = physics_shape.global_transform + print(translation) + + remove_child(physics_shape) + base.add_child(physics_shape) + + physics_shape.global_transform = translation + + setup_done = true + + +func _unhandled_input(event): + if event is InputEventKey: + if event.pressed and event.scancode == key: + action() + + +# Do something with the base +func action(): + pass diff --git a/BodyParts/BodyPart.tscn b/BodyParts/BodyPart.tscn new file mode 100644 index 0000000..8581c4b --- /dev/null +++ b/BodyParts/BodyPart.tscn @@ -0,0 +1,9 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://BodyParts/BodyPart.gd" type="Script" id=1] + + +[node name="BodyPart" type="Spatial"] +script = ExtResource( 1 ) + +[node name="PartCollider" type="CollisionShape" parent="."] diff --git a/BodyParts/PushingBodyPart.gd b/BodyParts/PushingBodyPart.gd new file mode 100644 index 0000000..11e5615 --- /dev/null +++ b/BodyParts/PushingBodyPart.gd @@ -0,0 +1,23 @@ +extends BodyPart +class_name PushingBodyPart + +onready var touch_area = get_node("TouchArea") + +export(float) var damage = 10.0 + + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + touch_area.connect("body_entered", self, "_on_touch_area_entered") + + +func _on_touch_area_entered(body): + if body.name != base.name: + if body.is_in_group("Terrain"): + push(body) + elif body.is_in_group("Player"): + InGameState.subtract_player_health(body.player_id, damage) + + +func push(body): + pass diff --git a/BodyParts/PushingBodyPart.tscn b/BodyParts/PushingBodyPart.tscn new file mode 100644 index 0000000..9812a88 --- /dev/null +++ b/BodyParts/PushingBodyPart.tscn @@ -0,0 +1,10 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://BodyParts/BodyPart.tscn" type="PackedScene" id=1] +[ext_resource path="res://BodyParts/PushingBodyPart.gd" type="Script" id=2] + + +[node name="PushingBodyPart" index="0" instance=ExtResource( 1 )] +script = ExtResource( 2 ) + +[node name="TouchArea" type="Area" parent="." index="1"] diff --git a/BodyParts/Tesso.tscn b/BodyParts/Tesso.tscn new file mode 100644 index 0000000..43225cc --- /dev/null +++ b/BodyParts/Tesso.tscn @@ -0,0 +1,14 @@ +[gd_scene load_steps=3 format=2] + +[sub_resource type="CubeMesh" id=1] + +[sub_resource type="BoxShape" id=2] + +[node name="Torso" type="RigidBody"] + +[node name="MeshInstance" type="MeshInstance" parent="."] +mesh = SubResource( 1 ) +material/0 = null + +[node name="CollisionShape" type="CollisionShape" parent="."] +shape = SubResource( 2 ) diff --git a/Global/BodyPartLoader.gd b/Global/BodyPartLoader.gd new file mode 100644 index 0000000..9e968b2 --- /dev/null +++ b/Global/BodyPartLoader.gd @@ -0,0 +1,7 @@ +extends Node + +var bodyparts : Dictionary + +# Called when the node enters the scene tree for the first time. +func _ready(): + bodyparts["Arm"] = load("res://BodyParts/Arm.tscn") diff --git a/Global/InGameState.gd b/Global/InGameState.gd new file mode 100644 index 0000000..4dbceeb --- /dev/null +++ b/Global/InGameState.gd @@ -0,0 +1,39 @@ +extends Node + + +var max_health = 100.0 +var player_healths = [] +var player_count: int + +signal player_win(player_id) +signal player_count_updated(new_player_count) +signal player_health_updated(player_id, new_player_health) + + +func set_player_count(new_player_count: int): + assert(new_player_count <= 4) + + player_count = new_player_count + player_healths = [] + + for i in range(0, player_count): + player_healths.append(0.0) + set_player_health(i, max_health) + + emit_signal("player_count_updated", new_player_count) + + +func subtract_player_health(player_id, subtractor): + set_player_health(player_id, player_healths[player_id] - subtractor) + + +func set_player_health(player_id, new_value): + assert(player_id < player_count) + assert(player_id >= 0) + + player_healths[player_id] = new_value + + if player_healths[player_id] < 0.0: + emit_signal("player_win", player_id) + else: + emit_signal("player_health_updated", player_id, player_healths[player_id]) diff --git a/Ingame/Ingame.gd b/Ingame/Ingame.gd new file mode 100644 index 0000000..2983361 --- /dev/null +++ b/Ingame/Ingame.gd @@ -0,0 +1,16 @@ +extends Spatial + + +# Declare member variables here. Examples: +# var a: int = 2 +# var b: String = "text" + + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + InGameState.set_player_count(2) + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +#func _process(delta: float) -> void: +# pass diff --git a/Ingame/Testing.tscn b/Ingame/Testing.tscn new file mode 100644 index 0000000..6b3c697 --- /dev/null +++ b/Ingame/Testing.tscn @@ -0,0 +1,60 @@ +[gd_scene load_steps=7 format=2] + +[ext_resource path="res://BodyParts/Arm.tscn" type="PackedScene" id=1] +[ext_resource path="res://UI/UI.tscn" type="PackedScene" id=2] +[ext_resource path="res://BodyParts/BodyBase/BodyBase.tscn" type="PackedScene" id=3] +[ext_resource path="res://Ingame/Ingame.gd" type="Script" id=4] + +[sub_resource type="PlaneMesh" id=1] +size = Vector2( 10, 10 ) + +[sub_resource type="BoxShape" id=2] +extents = Vector3( 5, 1, 5 ) + +[node name="InGame" type="Spatial"] +script = ExtResource( 4 ) + +[node name="MeshInstance" type="MeshInstance" parent="."] +transform = Transform( 10, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0 ) +mesh = SubResource( 1 ) +material/0 = null + +[node name="StaticBody" type="StaticBody" parent="MeshInstance" groups=[ +"Terrain", +]] + +[node name="CollisionShape" type="CollisionShape" parent="MeshInstance/StaticBody"] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0 ) +shape = SubResource( 2 ) + +[node name="Camera" type="Camera" parent="."] +transform = Transform( -4.37114e-08, -0.5, 0.866025, 0, 0.866025, 0.5, -1, 2.18557e-08, -3.78552e-08, 17, 9, -2 ) + +[node name="DirectionalLight" type="DirectionalLight" parent="."] +transform = Transform( 0.999532, 0.0126075, 0.027872, -0.0305909, 0.411942, 0.910697, 0, -0.911123, 0.412135, 0, 0, 0 ) +shadow_enabled = true + +[node name="Torso" parent="." instance=ExtResource( 3 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.02111, 0 ) + +[node name="Arm" parent="Torso/FrontLeft" index="1" instance=ExtResource( 1 )] +key = 83 + +[node name="Arm" parent="Torso/FrontRight" index="1" instance=ExtResource( 1 )] +key = 65 + +[node name="Torso2" parent="." instance=ExtResource( 3 )] +transform = Transform( -0.866025, -0.353553, -0.353553, -6.18172e-08, -0.707107, 0.707107, -0.5, 0.612372, 0.612372, 0, 3.02111, -9 ) +player_id = 1 + +[node name="Arm" parent="Torso2/FrontLeft" index="1" instance=ExtResource( 1 )] +key = 81 + +[node name="Arm" parent="Torso2/FrontRight" index="1" instance=ExtResource( 1 )] +key = 87 + +[node name="UI" parent="." instance=ExtResource( 2 )] + +[editable path="Torso"] + +[editable path="Torso2"] diff --git a/UI/PlayerHealth.gd b/UI/PlayerHealth.gd new file mode 100644 index 0000000..bc42463 --- /dev/null +++ b/UI/PlayerHealth.gd @@ -0,0 +1,21 @@ +extends ProgressBar + + +export(int) var player_id + + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + InGameState.connect("player_health_updated", self, "_on_player_health_updated") + + max_value = InGameState.max_health + + +func _on_player_health_updated(updated_id, updated_health): + if player_id == updated_id: + value = updated_health + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +#func _process(delta: float) -> void: +# pass diff --git a/UI/UI.tscn b/UI/UI.tscn new file mode 100644 index 0000000..13854aa --- /dev/null +++ b/UI/UI.tscn @@ -0,0 +1,81 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://UI/PlayerHealth.gd" type="Script" id=1] + +[node name="UI" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="MarginContainer" type="MarginContainer" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = 20.0 +margin_top = 20.0 +margin_right = -20.0 +margin_bottom = -20.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="PlayerHealthController" type="Control" parent="MarginContainer"] +margin_right = 984.0 +margin_bottom = 560.0 + +[node name="VSplitContainer" type="VSplitContainer" parent="MarginContainer/PlayerHealthController"] +margin_right = 984.0 +margin_bottom = 560.0 +split_offset = 902 +dragger_visibility = 2 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="HSplitContainer" type="HSplitContainer" parent="MarginContainer/PlayerHealthController/VSplitContainer"] +margin_right = 984.0 +margin_bottom = 560.0 +split_offset = 492 +dragger_visibility = 1 + +[node name="Player1Health" type="ProgressBar" parent="MarginContainer/PlayerHealthController/VSplitContainer/HSplitContainer"] +margin_right = 496.0 +margin_bottom = 14.0 +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Player2Health" type="ProgressBar" parent="MarginContainer/PlayerHealthController/VSplitContainer/HSplitContainer"] +margin_left = 508.0 +margin_right = 984.0 +margin_bottom = 14.0 +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} +player_id = 1 + +[node name="HSplitContainer2" type="HSplitContainer" parent="MarginContainer/PlayerHealthController/VSplitContainer"] +visible = false +margin_top = 546.0 +margin_right = 984.0 +margin_bottom = 560.0 +split_offset = 492 +dragger_visibility = 1 + +[node name="Player3Health" type="ProgressBar" parent="MarginContainer/PlayerHealthController/VSplitContainer/HSplitContainer2"] +margin_right = 496.0 +margin_bottom = 14.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Player4Health" type="ProgressBar" parent="MarginContainer/PlayerHealthController/VSplitContainer/HSplitContainer2"] +margin_left = 508.0 +margin_right = 984.0 +margin_bottom = 14.0 +__meta__ = { +"_edit_use_anchors_": false +} diff --git a/UI/WinScreen.tscn b/UI/WinScreen.tscn new file mode 100644 index 0000000..77fb92c --- /dev/null +++ b/UI/WinScreen.tscn @@ -0,0 +1,37 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://UI/WinScreenScript.gd" type="Script" id=1] + +[node name="Spatial" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} +labelPath = NodePath("MarginContainer/VBoxContainer/PlayerWon") + +[node name="MarginContainer" type="MarginContainer" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer"] +margin_right = 1024.0 +margin_bottom = 600.0 + +[node name="Congratz" type="Label" parent="MarginContainer/VBoxContainer"] +margin_top = -1.0 +margin_right = 1024.0 +margin_bottom = 249.0 +rect_min_size = Vector2( 0, 250 ) +text = "CONGRATULATIONS!" +align = 1 +valign = 2 + +[node name="PlayerWon" type="Label" parent="MarginContainer/VBoxContainer"] +margin_top = 254.0 +margin_right = 1024.0 +margin_bottom = 404.0 +rect_min_size = Vector2( 0, 150 ) +align = 1 +valign = 1 diff --git a/UI/WinScreenScript.gd b/UI/WinScreenScript.gd new file mode 100644 index 0000000..0e8dae2 --- /dev/null +++ b/UI/WinScreenScript.gd @@ -0,0 +1,22 @@ +extends Control + +export(NodePath) var labelPath + +#signal player_win(player_id) + +var _playerWonLabel + +# Called when the node enters the scene tree for the first time. +func _ready(): + _playerWonLabel = get_node(labelPath) as Label + + #connect("player_win", self, "_win_message") + + #emit_signal("player_win", 1) + + +func _win_message(player_id): + _playerWonLabel.text = "test" + + #print("game won!") + #print(player_id) diff --git a/default_env.tres b/default_env.tres index 98f26a7..20207a4 100644 --- a/default_env.tres +++ b/default_env.tres @@ -1,5 +1,7 @@ [gd_resource type="Environment" load_steps=2 format=2] + [sub_resource type="ProceduralSky" id=1] + [resource] background_mode = 2 background_sky = SubResource( 1 ) diff --git a/project.godot b/project.godot index 94f7a3b..0337e80 100644 --- a/project.godot +++ b/project.godot @@ -8,16 +8,39 @@ config_version=4 -_global_script_classes=[ ] +_global_script_classes=[ { +"base": "Spatial", +"class": "BodyBase", +"language": "GDScript", +"path": "res://BodyParts/BodyBase/BodyBase.gd" +}, { +"base": "Spatial", +"class": "BodyPart", +"language": "GDScript", +"path": "res://BodyParts/BodyPart.gd" +}, { +"base": "BodyPart", +"class": "PushingBodyPart", +"language": "GDScript", +"path": "res://BodyParts/PushingBodyPart.gd" +} ] _global_script_class_icons={ - +"BodyBase": "", +"BodyPart": "", +"PushingBodyPart": "" } [application] -config/name="New Game Project" +config/name="BodyPartFighter" +run/main_scene="res://Ingame/Testing.tscn" config/icon="res://icon.png" +[autoload] + +InGameState="*res://Global/InGameState.gd" +BodyPartLoader="*res://Global/BodyPartLoader.gd" + [rendering] environment/default_environment="res://default_env.tres"