Compare commits

...

12 Commits

Author SHA1 Message Date
18c8b741dd can plant weapon in targetables, dash towards it, jump in the air.
Some checks failed
Create tag and build when new code gets to main / BumpTag (push) Successful in 28s
Create tag and build when new code gets to main / Export (push) Failing after 1m47s
2026-01-24 15:22:16 +01:00
b84b7e4dd5 aim dashing through targetable entities now possible 2026-01-24 13:49:16 +01:00
4d419b9010 basic healthbars for enemies 2026-01-23 13:31:11 +01:00
8b2bf3e32e fixed a going through wall issue 2026-01-21 17:31:24 +01:00
db49703326 added fixed dash targets and can dash towards enemies to hit them, get a knockback or dash through if killed
Some checks failed
Create tag and build when new code gets to main / BumpTag (push) Successful in 22s
Create tag and build when new code gets to main / Export (push) Failing after 1m51s
2026-01-21 16:46:20 +01:00
fb78add739 export target variables and made a targetable interface 2026-01-21 14:21:47 +01:00
04121f18a4 basic targeting system 2026-01-21 12:32:58 +01:00
fa029b9e53 fixed resources constructors
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 24s
Create tag and build when new code gets to main / Export (push) Successful in 15m37s
2026-01-21 10:13:00 +01:00
494f0cb9ca some SFX
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 21s
Create tag and build when new code gets to main / Export (push) Successful in 15m19s
2026-01-20 17:39:14 +01:00
c1ca0bf27b some shake 2026-01-20 15:27:59 +01:00
8d1e7ebb4f some jumping animations
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 18s
Create tag and build when new code gets to main / Export (push) Successful in 10m30s
2026-01-20 13:23:42 +01:00
a257306999 reorganizing stuff
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 19s
Create tag and build when new code gets to main / Export (push) Successful in 10m45s
2026-01-20 12:23:26 +01:00
1282 changed files with 18937 additions and 386 deletions

View File

@@ -1,5 +1,9 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AAction_00601_002Ecs_002Fl_003AC_0021_003FUsers_003FMinimata_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F7c0f83388bfc4d2c9d09befcec9dd79bc90908_003Fb8_003F4d300c4d_003FAction_00601_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AAction_00602_002Ecs_002Fl_003AC_0021_003FUsers_003FMinimata_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F7c0f83388bfc4d2c9d09befcec9dd79bc90908_003F87_003Fded27e2d_003FAction_00602_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACharacterBody3D_002Ecs_002Fl_003AC_0021_003FUsers_003FMinimata_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003Fe56b84c3fa498fb86fc1eba376f62f482127e3fe80415c5fb2acde2bf6d89793_003FCharacterBody3D_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AEnemy_005FScriptMethods_002Egenerated_002Ecs_002Fl_003AC_0021_003FUsers_003FMinimata_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F8e71dc81611862c01a2cb998a1f327de14747655_003FEnemy_005FScriptMethods_002Egenerated_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ANode_002Ecs_002Fl_003AC_0021_003FUsers_003FMinimata_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F716d154fef5cbe863cd637bd32beda6e3cec5f12e8fed2dc5b2d8149a0d558ab_003FNode_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ANode_002Ecs_002Fl_003AC_0021_003FUsers_003FMinimata_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003Fdf73a4db74df89d59655c5fb6326406f47fbfa9af1fa81518fe0a07c49d34133_003FNode_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ASceneTree_002Ecs_002Fl_003AC_0021_003FUsers_003FMinimata_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F8d6960554e939a669841b1ece03d27df4ab42f92bb80be3767eaec8cdaccf84b_003FSceneTree_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:Boolean x:Key="/Default/UserDictionary/Words/=floorplane/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_2" data-name="Layer 2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
<defs>
<style>
.cls-1 {
fill: #f4b144;
stroke-width: 0px;
}
</style>
</defs>
<rect class="cls-1" x="40.5" y="4" width="15" height="56" rx="7.5" ry="7.5"/>
<rect class="cls-1" x="8.5" y="4" width="15" height="56" rx="7.5" ry="7.5"/>
</svg>

After

Width:  |  Height:  |  Size: 415 B

View File

@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://gdl502i1v8r0"
path="res://.godot/imported/Pause.svg-bf8a05fc34af72ad423e24582ebdfe77.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/shaker/assets/Pause.svg"
dest_files=["res://.godot/imported/Pause.svg-bf8a05fc34af72ad423e24582ebdfe77.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Play" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
<defs>
<style>
.cls-1 {
fill: #39b54a;
stroke-width: 0px;
}
</style>
</defs>
<path class="cls-1" d="m54.72,36.38L14.34,59.7c-3.37,1.95-7.59-.49-7.59-4.38V8.69c0-3.9,4.22-6.33,7.59-4.38l40.38,23.31c3.37,1.95,3.37,6.82,0,8.77Z"/>
</svg>

After

Width:  |  Height:  |  Size: 386 B

View File

@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bkiomqdsxl5am"
path="res://.godot/imported/Play.svg-7dc254fbb0920cfd077cd3ee6c205a32.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/shaker/assets/Play.svg"
dest_files=["res://.godot/imported/Play.svg-7dc254fbb0920cfd077cd3ee6c205a32.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

View File

@@ -0,0 +1,37 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dhcslgdhamqy2"
path="res://.godot/imported/ShaderPreset.svg-baad8a708c9f1500bbd83c441bef7504.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/shaker/assets/ShaderPreset.svg"
dest_files=["res://.godot/imported/ShaderPreset.svg-baad8a708c9f1500bbd83c441bef7504.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
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=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

View File

@@ -0,0 +1,37 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ds3kdjxwpmo1g"
path="res://.godot/imported/ShakeTypeBase.svg-a9a71023b460c004e6d4f7703e2899c5.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/shaker/assets/ShakeTypeBase.svg"
dest_files=["res://.godot/imported/ShakeTypeBase.svg-a9a71023b460c004e6d4f7703e2899c5.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
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=1
svg/scale=0.12
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_2" data-name="Layer 2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 15.98 14.45">
<defs>
<style>
.cls-1 {
fill: #efefef;
stroke-width: 0px;
}
</style>
</defs>
<g id="Layer_1-2" data-name="Layer 1-2">
<path class="cls-1" d="m7.99.01C4,.01.76,3.25.76,7.23c0,.64.08,1.25.24,1.83.75-1.14,1.53-2.34,1.86-2.84.12-.18.3-.3.51-.34.58-2.01,2.43-3.47,4.63-3.47,1.95,0,3.63,1.16,4.38,2.83l1.18-2.64c-1.33-1.59-3.33-2.6-5.56-2.6h-.01Zm7.15,6.15l-2.63,4.97c-.14.26-.41.42-.7.42-.2,0-.41-.08-.55-.24l-.29-.3c-.82.65-1.86,1.04-2.98,1.04-.11,0-.2,0-.31-.01-.18.28-.33.52-.42.67-.14.24-.39.37-.66.37-.25,0-.48-.12-.63-.33-.28-.39-.87-1.19-1.48-2.02l-1.02-1.41-1.54,1.81c1.28,2,3.52,3.32,6.07,3.32,3.99,0,7.23-3.24,7.23-7.22,0-.36-.02-.72-.08-1.07h-.01Z"/>
<path class="cls-1" d="m15.92,3.34l-.88,1.69-2.97,5.61c-.04.06-.1.1-.17.1-.05,0-.08-.02-.12-.06l-.27-.28-2.04-2.05s-.08-.06-.13-.06-.11.02-.14.08c-.64,1.02-1.55,2.5-2.09,3.36-.11.18-.2.33-.28.45-.04.06-.1.08-.16.08-.05,0-.11-.02-.14-.07-.14-.19-.37-.52-.65-.89-.65-.9-1.57-2.16-2.17-2.97-.04-.05-.08-.07-.14-.07-.05,0-.1.02-.13.06l-1.77,2.06-1.3,1.52-.37-.28c.12-.18.67-1.05,1.33-2.03.72-1.08,1.53-2.32,1.96-3,.07-.1.12-.18.17-.25.04-.05.1-.08.16-.08.05,0,.11.02.14.08.46.65,1.8,2.52,2.64,3.71.04.05.08.07.13.07.07,0,.13-.04.17-.1l2.18-4.42c.04-.07.1-.11.16-.11.05,0,.1.02.13.06.48.58,1.48,1.77,2.25,2.67.04.05.08.06.13.06.07,0,.13-.04.17-.11l1.04-2.31,1.29-2.91.19-.42c.08-.19.28-.31.47-.31.07,0,.16.02.23.06l.75.37c.27.12.37.45.23.7h0Z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dbffv1avjrgvs"
path="res://.godot/imported/Shaker.svg-c2d9686bdc2ea03ed737291e31637bc9.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/shaker/assets/Shaker.svg"
dest_files=["res://.godot/imported/Shaker.svg-c2d9686bdc2ea03ed737291e31637bc9.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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=1
svg/scale=4.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_2" data-name="Layer 2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 15.98 14.45">
<defs>
<style>
.cls-1 {
fill: #6393ff;
stroke-width: 0px;
}
</style>
</defs>
<g id="Layer_1-2" data-name="Layer 1-2">
<path class="cls-1" d="m7.99.01C4,.01.76,3.25.76,7.23c0,.64.08,1.25.24,1.83.75-1.14,1.53-2.34,1.86-2.84.12-.18.3-.3.51-.34.58-2.01,2.43-3.47,4.63-3.47,1.95,0,3.63,1.16,4.38,2.83l1.18-2.64c-1.33-1.59-3.33-2.6-5.56-2.6h-.01Zm7.15,6.15l-2.63,4.97c-.14.26-.41.42-.7.42-.2,0-.41-.08-.55-.24l-.29-.3c-.82.65-1.86,1.04-2.98,1.04-.11,0-.2,0-.31-.01-.18.28-.33.52-.42.67-.14.24-.39.37-.66.37-.25,0-.48-.12-.63-.33-.28-.39-.87-1.19-1.48-2.02l-1.02-1.41-1.54,1.81c1.28,2,3.52,3.32,6.07,3.32,3.99,0,7.23-3.24,7.23-7.22,0-.36-.02-.72-.08-1.07h-.01Z"/>
<path class="cls-1" d="m15.92,3.34l-.88,1.69-2.97,5.61c-.04.06-.1.1-.17.1-.05,0-.08-.02-.12-.06l-.27-.28-2.04-2.05s-.08-.06-.13-.06-.11.02-.14.08c-.64,1.02-1.55,2.5-2.09,3.36-.11.18-.2.33-.28.45-.04.06-.1.08-.16.08-.05,0-.11-.02-.14-.07-.14-.19-.37-.52-.65-.89-.65-.9-1.57-2.16-2.17-2.97-.04-.05-.08-.07-.14-.07-.05,0-.1.02-.13.06l-1.77,2.06-1.3,1.52-.37-.28c.12-.18.67-1.05,1.33-2.03.72-1.08,1.53-2.32,1.96-3,.07-.1.12-.18.17-.25.04-.05.1-.08.16-.08.05,0,.11.02.14.08.46.65,1.8,2.52,2.64,3.71.04.05.08.07.13.07.07,0,.13-.04.17-.1l2.18-4.42c.04-.07.1-.11.16-.11.05,0,.1.02.13.06.48.58,1.48,1.77,2.25,2.67.04.05.08.06.13.06.07,0,.13-.04.17-.11l1.04-2.31,1.29-2.91.19-.42c.08-.19.28-.31.47-.31.07,0,.16.02.23.06l.75.37c.27.12.37.45.23.7h0Z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dn8xxp7r67as3"
path="res://.godot/imported/Shaker2D.svg-a5c6b73315dff06dec7bf743af8bf0a9.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/shaker/assets/Shaker2D.svg"
dest_files=["res://.godot/imported/Shaker2D.svg-a5c6b73315dff06dec7bf743af8bf0a9.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_2" data-name="Layer 2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 15.99 14.45">
<defs>
<style>
.cls-1 {
fill: #fc7f7f;
stroke-width: 0px;
}
</style>
</defs>
<g id="Layer_1-2" data-name="Layer 1">
<path class="cls-1" d="m7.99,0C4,0,.76,3.24.76,7.22c0,.64.08,1.25.24,1.83.75-1.14,1.53-2.34,1.86-2.84.12-.18.3-.3.51-.34.58-2.01,2.43-3.47,4.63-3.47,1.95,0,3.63,1.16,4.38,2.83l1.18-2.64c-1.33-1.59-3.33-2.6-5.56-2.6Zm7.15,6.15l-2.63,4.97c-.14.26-.41.42-.7.42-.2,0-.41-.08-.55-.24l-.29-.3c-.82.65-1.86,1.04-2.98,1.04-.11,0-.2,0-.31-.01-.18.28-.33.52-.42.67-.14.24-.39.37-.66.37-.25,0-.48-.12-.63-.33-.28-.39-.87-1.19-1.48-2.02l-1.02-1.41-1.54,1.81c1.28,2,3.52,3.32,6.07,3.32,3.99,0,7.23-3.24,7.23-7.22,0-.36-.02-.72-.08-1.07Z"/>
<path class="cls-1" d="m15.92,3.33l-.88,1.69-2.97,5.61c-.04.06-.1.1-.17.1-.05,0-.08-.02-.12-.06l-.27-.28-2.04-2.05s-.08-.06-.13-.06-.11.02-.14.08c-.64,1.02-1.55,2.5-2.09,3.36-.11.18-.2.33-.28.45-.04.06-.1.08-.16.08-.05,0-.11-.02-.14-.07-.14-.19-.37-.52-.65-.89-.65-.9-1.57-2.16-2.17-2.97-.04-.05-.08-.07-.14-.07-.05,0-.1.02-.13.06l-1.77,2.06-1.3,1.52-.37-.28c.12-.18.67-1.05,1.33-2.03.72-1.08,1.53-2.32,1.96-3,.07-.1.12-.18.17-.25.04-.05.1-.08.16-.08.05,0,.11.02.14.08.46.65,1.8,2.52,2.64,3.71.04.05.08.07.13.07.07,0,.13-.04.17-.1l2.18-4.42c.04-.07.1-.11.16-.11.05,0,.1.02.13.06.48.58,1.48,1.77,2.25,2.67.04.05.08.06.13.06.07,0,.13-.04.17-.11l1.04-2.31,1.29-2.91.19-.42c.08-.19.28-.31.47-.31.07,0,.16.02.23.06l.75.37c.27.12.37.45.23.7Z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dm4yc7w77q1u8"
path="res://.godot/imported/Shaker3D.svg-ed425183c69b0c043ce3ce5088c6ff49.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/shaker/assets/Shaker3D.svg"
dest_files=["res://.godot/imported/Shaker3D.svg-ed425183c69b0c043ce3ce5088c6ff49.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

View File

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_2" data-name="Layer 2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 15.98 14.45">
<defs>
<style>
.cls-1 {
fill: url(#linear-gradient);
}
.cls-1, .cls-2 {
stroke-width: 0px;
}
.cls-2 {
fill: url(#linear-gradient-2);
}
</style>
<linearGradient id="linear-gradient" x1="2.19" y1="15.22" x2="13.97" y2="2.21" gradientTransform="translate(0 16.02) scale(1 -1)" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#fff"/>
<stop offset="1" stop-color="#999b9e"/>
</linearGradient>
<linearGradient id="linear-gradient-2" x1=".56" y1="3.27" x2="16.55" y2="12.71" gradientTransform="translate(0 16.02) scale(1 -1)" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#fff"/>
<stop offset="1" stop-color="#cf519d"/>
</linearGradient>
</defs>
<path class="cls-1" d="m7.99,0C4,0,.76,3.25.76,7.23c0,.64.08,1.25.24,1.83.75-1.14,1.53-2.34,1.86-2.84.12-.18.3-.3.51-.34.58-2.01,2.43-3.47,4.63-3.47,1.95,0,3.63,1.16,4.38,2.83l1.18-2.64c-1.33-1.59-3.33-2.6-5.56-2.6h-.01Zm7.15,6.15l-2.63,4.97c-.14.26-.41.42-.7.42-.2,0-.41-.08-.55-.24l-.29-.3c-.82.65-1.86,1.04-2.98,1.04-.11,0-.2,0-.31-.01-.18.28-.33.52-.42.67-.14.24-.39.37-.66.37-.25,0-.48-.12-.63-.33-.28-.39-.87-1.19-1.48-2.02l-1.02-1.41-1.54,1.81c1.28,2,3.52,3.32,6.07,3.32,3.99,0,7.23-3.24,7.23-7.22,0-.36-.02-.72-.08-1.07,0,0-.01,0-.01,0Z"/>
<path class="cls-2" d="m15.92,3.34l-.88,1.69-2.97,5.61c-.04.06-.1.1-.17.1-.05,0-.08-.02-.12-.06l-.27-.28-2.04-2.05s-.08-.06-.13-.06-.11.02-.14.08c-.64,1.02-1.55,2.5-2.09,3.36-.11.18-.2.33-.28.45-.04.06-.1.08-.16.08-.05,0-.11-.02-.14-.07-.14-.19-.37-.52-.65-.89-.65-.9-1.57-2.16-2.17-2.97-.04-.05-.08-.07-.14-.07-.05,0-.1.02-.13.06l-1.77,2.06-1.3,1.52-.37-.28c.12-.18.67-1.05,1.33-2.03.72-1.08,1.53-2.32,1.96-3,.07-.1.12-.18.17-.25.04-.05.1-.08.16-.08.05,0,.11.02.14.08.46.65,1.8,2.52,2.64,3.71.04.05.08.07.13.07.07,0,.13-.04.17-.1l2.18-4.42c.04-.07.1-.11.16-.11.05,0,.1.02.13.06.48.58,1.48,1.77,2.25,2.67.04.05.08.06.13.06.07,0,.13-.04.17-.11l1.04-2.31,1.29-2.91.19-.42c.08-.19.28-.31.47-.31.07,0,.16.02.23.06l.75.37c.27.12.37.45.23.7h0Z"/>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://do6o8aob6hi6v"
path="res://.godot/imported/ShakerEmitter.svg-99409f1c9ef4b7c7de1c60cac5619af4.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/shaker/assets/ShakerEmitter.svg"
dest_files=["res://.godot/imported/ShakerEmitter.svg-99409f1c9ef4b7c7de1c60cac5619af4.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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=1
svg/scale=4.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

View File

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_2" data-name="Layer 2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 15.98 14.45">
<defs>
<style>
.cls-1 {
fill: url(#linear-gradient);
}
.cls-1, .cls-2 {
stroke-width: 0px;
}
.cls-2 {
fill: url(#linear-gradient-2);
}
</style>
<linearGradient id="linear-gradient" x1="2.19" y1="15.22" x2="13.97" y2="2.21" gradientTransform="translate(0 16.02) scale(1 -1)" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#6393ff"/>
<stop offset="1" stop-color="#3a56a6"/>
</linearGradient>
<linearGradient id="linear-gradient-2" x1=".56" y1="3.27" x2="16.55" y2="12.71" gradientTransform="translate(0 16.02) scale(1 -1)" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#44577e"/>
<stop offset="1" stop-color="#cf519d"/>
</linearGradient>
</defs>
<path class="cls-1" d="m7.99,0C4,0,.76,3.25.76,7.23c0,.64.08,1.25.24,1.83.75-1.14,1.53-2.34,1.86-2.84.12-.18.3-.3.51-.34.58-2.01,2.43-3.47,4.63-3.47,1.95,0,3.63,1.16,4.38,2.83l1.18-2.64c-1.33-1.59-3.33-2.6-5.56-2.6h-.01Zm7.15,6.15l-2.63,4.97c-.14.26-.41.42-.7.42-.2,0-.41-.08-.55-.24l-.29-.3c-.82.65-1.86,1.04-2.98,1.04-.11,0-.2,0-.31-.01-.18.28-.33.52-.42.67-.14.24-.39.37-.66.37-.25,0-.48-.12-.63-.33-.28-.39-.87-1.19-1.48-2.02l-1.02-1.41-1.54,1.81c1.28,2,3.52,3.32,6.07,3.32,3.99,0,7.23-3.24,7.23-7.22,0-.36-.02-.72-.08-1.07,0,0-.01,0-.01,0Z"/>
<path class="cls-2" d="m15.92,3.34l-.88,1.69-2.97,5.61c-.04.06-.1.1-.17.1-.05,0-.08-.02-.12-.06l-.27-.28-2.04-2.05s-.08-.06-.13-.06-.11.02-.14.08c-.64,1.02-1.55,2.5-2.09,3.36-.11.18-.2.33-.28.45-.04.06-.1.08-.16.08-.05,0-.11-.02-.14-.07-.14-.19-.37-.52-.65-.89-.65-.9-1.57-2.16-2.17-2.97-.04-.05-.08-.07-.14-.07-.05,0-.1.02-.13.06l-1.77,2.06-1.3,1.52-.37-.28c.12-.18.67-1.05,1.33-2.03.72-1.08,1.53-2.32,1.96-3,.07-.1.12-.18.17-.25.04-.05.1-.08.16-.08.05,0,.11.02.14.08.46.65,1.8,2.52,2.64,3.71.04.05.08.07.13.07.07,0,.13-.04.17-.1l2.18-4.42c.04-.07.1-.11.16-.11.05,0,.1.02.13.06.48.58,1.48,1.77,2.25,2.67.04.05.08.06.13.06.07,0,.13-.04.17-.11l1.04-2.31,1.29-2.91.19-.42c.08-.19.28-.31.47-.31.07,0,.16.02.23.06l.75.37c.27.12.37.45.23.7h0Z"/>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://blvoltt74gide"
path="res://.godot/imported/ShakerEmitter2D.svg-8c956d5aa03f14ce38dd1438d858114a.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/shaker/assets/ShakerEmitter2D.svg"
dest_files=["res://.godot/imported/ShakerEmitter2D.svg-8c956d5aa03f14ce38dd1438d858114a.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

View File

@@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_2" data-name="Layer 2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 15.99 14.45">
<defs>
<style>
.cls-1 {
fill: url(#linear-gradient);
}
.cls-1, .cls-2 {
stroke-width: 0px;
}
.cls-2 {
fill: url(#linear-gradient-2);
}
</style>
<linearGradient id="linear-gradient" x1="2.19" y1=".79" x2="13.97" y2="13.8" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#fc7f7f"/>
<stop offset=".1" stop-color="#f37d80"/>
<stop offset=".27" stop-color="#dd7885"/>
<stop offset=".47" stop-color="#b8708c"/>
<stop offset=".7" stop-color="#856596"/>
<stop offset=".96" stop-color="#4558a3"/>
<stop offset="1" stop-color="#3a56a6"/>
</linearGradient>
<linearGradient id="linear-gradient-2" x1=".56" y1="12.74" x2="16.55" y2="3.3" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#fc7f7f"/>
<stop offset=".29" stop-color="#f37684"/>
<stop offset=".75" stop-color="#de6092"/>
<stop offset="1" stop-color="#cf519d"/>
</linearGradient>
</defs>
<path class="cls-1" d="m7.99,0C4,0,.76,3.24.76,7.22c0,.64.08,1.25.24,1.83.75-1.14,1.53-2.34,1.86-2.84.12-.18.3-.3.51-.34.58-2.01,2.43-3.47,4.63-3.47,1.95,0,3.63,1.16,4.38,2.83l1.18-2.64C12.23,1,10.23-.01,8-.01h-.01Zm7.15,6.15l-2.63,4.97c-.14.26-.41.42-.7.42-.2,0-.41-.08-.55-.24l-.29-.3c-.82.65-1.86,1.04-2.98,1.04-.11,0-.2,0-.31-.01-.18.28-.33.52-.42.67-.14.24-.39.37-.66.37-.25,0-.48-.12-.63-.33-.28-.39-.87-1.19-1.48-2.02l-1.02-1.41-1.54,1.81c1.28,2,3.52,3.32,6.07,3.32,3.99,0,7.23-3.24,7.23-7.22,0-.36-.02-.72-.08-1.07h-.01Z"/>
<path class="cls-2" d="m15.92,3.33l-.88,1.69-2.97,5.61c-.04.06-.1.1-.17.1-.05,0-.08-.02-.12-.06l-.27-.28-2.04-2.05s-.08-.06-.13-.06-.11.02-.14.08c-.64,1.02-1.55,2.5-2.09,3.36-.11.18-.2.33-.28.45-.04.06-.1.08-.16.08-.05,0-.11-.02-.14-.07-.14-.19-.37-.52-.65-.89-.65-.9-1.57-2.16-2.17-2.97-.04-.05-.08-.07-.14-.07-.05,0-.1.02-.13.06l-1.77,2.06-1.3,1.52L0,11.61c.12-.18.67-1.05,1.33-2.03.72-1.08,1.53-2.32,1.96-3,.07-.1.12-.18.17-.25.04-.05.1-.08.16-.08.05,0,.11.02.14.08.46.65,1.8,2.52,2.64,3.71.04.05.08.07.13.07.07,0,.13-.04.17-.1l2.18-4.42c.04-.07.1-.11.16-.11.05,0,.1.02.13.06.48.58,1.48,1.77,2.25,2.67.04.05.08.06.13.06.07,0,.13-.04.17-.11l1.04-2.31,1.29-2.91.19-.42c.08-.19.28-.31.47-.31.07,0,.16.02.23.06l.75.37c.27.12.37.45.23.7h0Z"/>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dbu31ogcp75bh"
path="res://.godot/imported/ShakerEmitter3D.svg-b7aef419023b93692d18599c57d2046e.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/shaker/assets/ShakerEmitter3D.svg"
dest_files=["res://.godot/imported/ShakerEmitter3D.svg-b7aef419023b93692d18599c57d2046e.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

View File

@@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 55 56">
<defs>
<style>
.cls-1 {
fill: url(#linear-gradient);
}
.cls-1, .cls-2, .cls-3, .cls-4, .cls-5, .cls-6, .cls-7, .cls-8, .cls-9, .cls-10 {
stroke-width: 0px;
}
.cls-2 {
fill: url(#linear-gradient-6);
}
.cls-3 {
fill: #e5e5e5;
}
.cls-4 {
fill: url(#linear-gradient-5);
}
.cls-5 {
fill: url(#linear-gradient-2);
}
.cls-6 {
fill: #d3d3d3;
}
.cls-7 {
fill: url(#linear-gradient-7);
}
.cls-8 {
fill: url(#linear-gradient-3);
}
.cls-9 {
fill: url(#linear-gradient-8);
}
.cls-10 {
fill: url(#linear-gradient-4);
}
</style>
<linearGradient id="linear-gradient" x1="8.13" y1="38.53" x2="15.57" y2="41.07" gradientTransform="translate(0 56) scale(1 -1)" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#fff"/>
<stop offset="1" stop-color="#a1a3a6"/>
</linearGradient>
<linearGradient id="linear-gradient-2" x1="13.79" y1="40.27" x2="19.8" y2="42.32" xlink:href="#linear-gradient"/>
<linearGradient id="linear-gradient-3" x1="18.72" y1="39.75" x2="25.01" y2="41.9" xlink:href="#linear-gradient"/>
<linearGradient id="linear-gradient-4" x1="23.89" y1="41.29" x2="29.39" y2="43.16" xlink:href="#linear-gradient"/>
<linearGradient id="linear-gradient-5" x1="28.85" y1="40.78" x2="34.59" y2="42.74" xlink:href="#linear-gradient"/>
<linearGradient id="linear-gradient-6" x1="33.79" y1="40.27" x2="39.8" y2="42.32" xlink:href="#linear-gradient"/>
<linearGradient id="linear-gradient-7" x1="38.9" y1="41.77" x2="44.2" y2="43.58" xlink:href="#linear-gradient"/>
<linearGradient id="linear-gradient-8" x1="43.32" y1="39.58" x2="50.14" y2="41.91" xlink:href="#linear-gradient"/>
</defs>
<path class="cls-3" d="m8.8,5h46.2V0H3.8C1.7,0,0,1.7,0,3.8v48.4c0,2.1,1.7,3.8,3.8,3.8h47.4c2.1,0,3.8-1.7,3.8-3.8v-29.2h-5v24.2c0,2.1-1.7,3.8-3.8,3.8H8.8c-2.1,0-3.8-1.7-3.8-3.8V8.8c0-2.1,1.7-3.8,3.8-3.8Z"/>
<g>
<path class="cls-6" d="m49,38v2.4c-.52.06-4.04.49-5.35.65-.26.03-.49-.14-.54-.39l-.88-4.4c-.1-.51-.82-.54-.96-.04-.97,3.39-2.1,7.33-2.69,9.39-.13.44-.73.49-.92.07-.99-2.19-2.94-6.47-4.27-9.41-.17-.38-.7-.39-.89-.02-1.05,2.11-2.39,4.79-3.21,6.43-.21.41-.81.35-.92-.1-.38-1.51-1.02-4.02-1.65-6.53-.13-.51-.87-.49-.97.03l-1.77,9.1-.96,5.01c-.39-1.94-1.19-5.92-1.9-9.46-.1-.5-.79-.54-.95-.06-.99,2.96-2.12,6.36-2.88,8.62-.16.49-.88.43-.96-.08-.48-3.08-1.38-8.73-2.13-13.46-.09-.54-.85-.56-.97-.03l-1.27,5.51-.2.9c-.44-.06-5.2-.85-5.77-.94v-2.18h4c.2-.03-.04.2,0,0,.78-3.43,2.64-9.57,3.61-13.77.12-.53.88-.5.97.03.61,3.82,1.66,10.47,2.45,15.51.08.51.79.57.96.08,1.29-3.85,2.76-8.27,3.25-9.74l.74,3.69.91,4.54c.8-5.04,1.85-11.63,2.52-15.81.09-.54.86-.56.97-.02.77,3.68,1.87,8.99,2.72,13.08.1.46.71.54.92.12.93-1.85,1.94-3.89,2.55-5.1.19-.37.72-.36.89.02.8,1.75,2.47,5.44,3.77,8.28.19.42.8.38.92-.07,1.08-3.78,2.58-9.05,3.45-12.11.14-.5.86-.47.96.04.63,3.17,1.87,7.48,2.43,10.23.04.21-.21-.03,0,0h4.02Z"/>
<path class="cls-6" d="m49,37.6v.8c-.52.06-4.04.49-5.35.65-.26.03-.49-.14-.54-.39l-.88-4.4c-.1-.51-.82-.54-.96-.04-.97,3.39-2.1,7.33-2.69,9.39-.13.44-.73.49-.92.07-.99-2.19-2.94-6.47-4.27-9.41-.17-.38-.7-.39-.89-.02-1.05,2.11-2.39,4.79-3.21,6.43-.21.41-.81.35-.92-.1-.38-1.51-1.02-4.02-1.65-6.53-.13-.51-.87-.49-.97.03l-1.77,9.1-.96,5.01c-.39-1.94-1.19-5.92-1.9-9.46-.1-.5-.79-.54-.95-.06-.99,2.96-2.12,6.36-2.88,8.62-.16.49-.88.43-.96-.08-.48-3.08-1.38-8.73-2.13-13.46-.09-.54-.85-.56-.97-.03l-1.27,5.51-.2.9c-.44-.06-5.2-.85-5.77-.94v-.36l3.85-.63c.2-.03.36-.17.4-.37.78-3.43,2.39-10.39,3.36-14.6.12-.53.88-.5.97.03.61,3.82,1.66,10.47,2.45,15.51.08.51.79.57.96.08,1.29-3.85,2.76-8.27,3.25-9.74l.74,3.69.91,4.54c.8-5.04,1.85-11.63,2.52-15.81.09-.54.86-.56.97-.02.77,3.68,1.87,8.99,2.72,13.08.1.46.71.54.92.12.93-1.85,1.94-3.89,2.55-5.1.19-.37.72-.36.89.02.8,1.75,2.47,5.44,3.77,8.28.19.42.8.38.92-.07,1.08-3.78,2.58-9.05,3.45-12.11.14-.5.86-.47.96.04.63,3.17,1.64,8.24,2.2,10.99.04.21.21.36.42.39l3.8.46h.03Z"/>
</g>
<path class="cls-1" d="m13,13c0-1.1-.9-2-2-2s-2,.9-2,2-1,9,2,9,2-7.9,2-9Z"/>
<path class="cls-5" d="m18,13c0-1.1-.9-2-2-2s-2,.9-2,2,0,6,2,6,2-4.9,2-6Z"/>
<path class="cls-8" d="m23,13c0-1.1-.9-2-2-2s-2,.9-2,2,0,7,2,7,2-5.9,2-7Z"/>
<path class="cls-10" d="m28,13c0-1.1-.9-2-2-2s-2,.9-2,2,0,4,2,4,2-2.9,2-4Z"/>
<path class="cls-4" d="m33,13c0-1.1-.9-2-2-2s-2,.9-2,2,0,5,2,5,2-3.9,2-5Z"/>
<path class="cls-2" d="m38,13c0-1.1-.9-2-2-2s-2,.9-2,2,0,6,2,6,2-4.9,2-6Z"/>
<path class="cls-7" d="m43,13c0-1.1-.9-2-2-2s-2,.9-2,2,0,3,2,3,2-1.9,2-3Z"/>
<path class="cls-9" d="m48,13c0-1.1-.9-2-2-2s-2,.9-2,2-1,7,2,7,2-5.9,2-7Z"/>
</svg>

After

Width:  |  Height:  |  Size: 4.8 KiB

View File

@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://24qdtwt14uiu"
path="res://.godot/imported/ShakerPreset.svg-e4c67cf03c32289efa8dece68a179055.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/shaker/assets/ShakerPreset.svg"
dest_files=["res://.godot/imported/ShakerPreset.svg-e4c67cf03c32289efa8dece68a179055.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

View File

@@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 55 56">
<defs>
<style>
.cls-1 {
fill: url(#linear-gradient);
}
.cls-1, .cls-2, .cls-3, .cls-4, .cls-5, .cls-6, .cls-7, .cls-8, .cls-9, .cls-10 {
stroke-width: 0px;
}
.cls-2 {
fill: #6393ff;
}
.cls-3 {
fill: url(#linear-gradient-6);
}
.cls-4 {
fill: url(#linear-gradient-5);
}
.cls-5 {
fill: url(#linear-gradient-2);
}
.cls-6 {
fill: url(#linear-gradient-7);
}
.cls-7 {
fill: url(#linear-gradient-3);
}
.cls-8 {
fill: #4180af;
}
.cls-9 {
fill: url(#linear-gradient-8);
}
.cls-10 {
fill: url(#linear-gradient-4);
}
</style>
<linearGradient id="linear-gradient" x1="8.13" y1="38.53" x2="15.57" y2="41.07" gradientTransform="translate(0 56) scale(1 -1)" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#6393ff"/>
<stop offset="1" stop-color="#f7941d"/>
</linearGradient>
<linearGradient id="linear-gradient-2" x1="13.79" y1="40.27" x2="19.8" y2="42.32" xlink:href="#linear-gradient"/>
<linearGradient id="linear-gradient-3" x1="18.72" y1="39.75" x2="25.01" y2="41.9" xlink:href="#linear-gradient"/>
<linearGradient id="linear-gradient-4" x1="23.89" y1="41.29" x2="29.39" y2="43.16" xlink:href="#linear-gradient"/>
<linearGradient id="linear-gradient-5" x1="28.85" y1="40.78" x2="34.59" y2="42.74" xlink:href="#linear-gradient"/>
<linearGradient id="linear-gradient-6" x1="33.79" y1="40.27" x2="39.8" y2="42.32" xlink:href="#linear-gradient"/>
<linearGradient id="linear-gradient-7" x1="38.9" y1="41.77" x2="44.2" y2="43.58" xlink:href="#linear-gradient"/>
<linearGradient id="linear-gradient-8" x1="43.32" y1="39.58" x2="50.14" y2="41.91" xlink:href="#linear-gradient"/>
</defs>
<path class="cls-8" d="m8.8,5h46.2V0H3.8C1.7,0,0,1.7,0,3.8v48.4c0,2.1,1.7,3.8,3.8,3.8h47.4c2.1,0,3.8-1.7,3.8-3.8v-29.2h-5v24.2c0,2.1-1.7,3.8-3.8,3.8H8.8c-2.1,0-3.8-1.7-3.8-3.8V8.8c0-2.1,1.7-3.8,3.8-3.8Z"/>
<g>
<path class="cls-2" d="m49,38v2.4c-.52.06-4.04.49-5.35.65-.26.03-.49-.14-.54-.39l-.88-4.4c-.1-.51-.82-.54-.96-.04-.97,3.39-2.1,7.33-2.69,9.39-.13.44-.73.49-.92.07-.99-2.19-2.94-6.47-4.27-9.41-.17-.38-.7-.39-.89-.02-1.05,2.11-2.39,4.79-3.21,6.43-.21.41-.81.35-.92-.1-.38-1.51-1.02-4.02-1.65-6.53-.13-.51-.87-.49-.97.03l-1.77,9.1-.96,5.01c-.39-1.94-1.19-5.92-1.9-9.46-.1-.5-.79-.54-.95-.06-.99,2.96-2.12,6.36-2.88,8.62-.16.49-.88.43-.96-.08-.48-3.08-1.38-8.73-2.13-13.46-.09-.54-.85-.56-.97-.03l-1.27,5.51-.2.9c-.44-.06-5.2-.85-5.77-.94v-2.18h4c.2-.03-.04.2,0,0,.78-3.43,2.64-9.57,3.61-13.77.12-.53.88-.5.97.03.61,3.82,1.66,10.47,2.45,15.51.08.51.79.57.96.08,1.29-3.85,2.76-8.27,3.25-9.74l.74,3.69.91,4.54c.8-5.04,1.85-11.63,2.52-15.81.09-.54.86-.56.97-.02.77,3.68,1.87,8.99,2.72,13.08.1.46.71.54.92.12.93-1.85,1.94-3.89,2.55-5.1.19-.37.72-.36.89.02.8,1.75,2.47,5.44,3.77,8.28.19.42.8.38.92-.07,1.08-3.78,2.58-9.05,3.45-12.11.14-.5.86-.47.96.04.63,3.17,1.87,7.48,2.43,10.23.04.21-.21-.03,0,0h4.02Z"/>
<path class="cls-2" d="m49,37.6v.8c-.52.06-4.04.49-5.35.65-.26.03-.49-.14-.54-.39l-.88-4.4c-.1-.51-.82-.54-.96-.04-.97,3.39-2.1,7.33-2.69,9.39-.13.44-.73.49-.92.07-.99-2.19-2.94-6.47-4.27-9.41-.17-.38-.7-.39-.89-.02-1.05,2.11-2.39,4.79-3.21,6.43-.21.41-.81.35-.92-.1-.38-1.51-1.02-4.02-1.65-6.53-.13-.51-.87-.49-.97.03l-1.77,9.1-.96,5.01c-.39-1.94-1.19-5.92-1.9-9.46-.1-.5-.79-.54-.95-.06-.99,2.96-2.12,6.36-2.88,8.62-.16.49-.88.43-.96-.08-.48-3.08-1.38-8.73-2.13-13.46-.09-.54-.85-.56-.97-.03l-1.27,5.51-.2.9c-.44-.06-5.2-.85-5.77-.94v-.36l3.85-.63c.2-.03.36-.17.4-.37.78-3.43,2.39-10.39,3.36-14.6.12-.53.88-.5.97.03.61,3.82,1.66,10.47,2.45,15.51.08.51.79.57.96.08,1.29-3.85,2.76-8.27,3.25-9.74l.74,3.69.91,4.54c.8-5.04,1.85-11.63,2.52-15.81.09-.54.86-.56.97-.02.77,3.68,1.87,8.99,2.72,13.08.1.46.71.54.92.12.93-1.85,1.94-3.89,2.55-5.1.19-.37.72-.36.89.02.8,1.75,2.47,5.44,3.77,8.28.19.42.8.38.92-.07,1.08-3.78,2.58-9.05,3.45-12.11.14-.5.86-.47.96.04.63,3.17,1.64,8.24,2.2,10.99.04.21.21.36.42.39l3.8.46h.03Z"/>
</g>
<path class="cls-1" d="m13,13c0-1.1-.9-2-2-2s-2,.9-2,2-1,9,2,9,2-7.9,2-9Z"/>
<path class="cls-5" d="m18,13c0-1.1-.9-2-2-2s-2,.9-2,2,0,6,2,6,2-4.9,2-6Z"/>
<path class="cls-7" d="m23,13c0-1.1-.9-2-2-2s-2,.9-2,2,0,7,2,7,2-5.9,2-7Z"/>
<path class="cls-10" d="m28,13c0-1.1-.9-2-2-2s-2,.9-2,2,0,4,2,4,2-2.9,2-4Z"/>
<path class="cls-4" d="m33,13c0-1.1-.9-2-2-2s-2,.9-2,2,0,5,2,5,2-3.9,2-5Z"/>
<path class="cls-3" d="m38,13c0-1.1-.9-2-2-2s-2,.9-2,2,0,6,2,6,2-4.9,2-6Z"/>
<path class="cls-6" d="m43,13c0-1.1-.9-2-2-2s-2,.9-2,2,0,3,2,3,2-1.9,2-3Z"/>
<path class="cls-9" d="m48,13c0-1.1-.9-2-2-2s-2,.9-2,2-1,7,2,7,2-5.9,2-7Z"/>
</svg>

After

Width:  |  Height:  |  Size: 4.8 KiB

View File

@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dkyto2qkh0a2h"
path="res://.godot/imported/ShakerPreset2D.svg-dda8f976490b38216c486a3c325a6e1c.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/shaker/assets/ShakerPreset2D.svg"
dest_files=["res://.godot/imported/ShakerPreset2D.svg-dda8f976490b38216c486a3c325a6e1c.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

View File

@@ -0,0 +1,87 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 64 64">
<defs>
<style>
.cls-1 {
fill: url(#linear-gradient);
}
.cls-1, .cls-2, .cls-3, .cls-4, .cls-5, .cls-6, .cls-7, .cls-8, .cls-9, .cls-10, .cls-11 {
stroke-width: 0px;
}
.cls-2 {
fill: #bd3c3c;
}
.cls-3 {
fill: url(#linear-gradient-6);
}
.cls-4 {
fill: url(#linear-gradient-5);
}
.cls-5 {
fill: url(#linear-gradient-2);
}
.cls-6 {
fill: url(#linear-gradient-7);
}
.cls-7 {
fill: url(#linear-gradient-3);
}
.cls-8 {
fill: url(#linear-gradient-9);
}
.cls-9 {
fill: url(#linear-gradient-8);
}
.cls-10 {
fill: url(#linear-gradient-4);
}
.cls-11 {
fill: #f15758;
filter: url(#drop-shadow-1);
}
</style>
<filter id="drop-shadow-1" filterUnits="userSpaceOnUse">
<feOffset dx="0" dy="3"/>
<feGaussianBlur result="blur" stdDeviation="0"/>
<feFlood flood-color="#bd3c3c" flood-opacity="1"/>
<feComposite in2="blur" operator="in"/>
<feComposite in="SourceGraphic"/>
</filter>
<linearGradient id="linear-gradient" x1="10.38" y1="44.47" x2="61.38" y2="27.06" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#ec008c"/>
<stop offset="1" stop-color="#f7941d"/>
</linearGradient>
<linearGradient id="linear-gradient-2" x1="13.13" y1="21.47" x2="20.57" y2="18.93" xlink:href="#linear-gradient"/>
<linearGradient id="linear-gradient-3" x1="18.79" y1="19.73" x2="24.8" y2="17.68" xlink:href="#linear-gradient"/>
<linearGradient id="linear-gradient-4" x1="23.72" y1="20.25" x2="30.01" y2="18.1" xlink:href="#linear-gradient"/>
<linearGradient id="linear-gradient-5" x1="28.89" y1="18.71" x2="34.39" y2="16.84" xlink:href="#linear-gradient"/>
<linearGradient id="linear-gradient-6" x1="33.85" y1="19.22" x2="39.59" y2="17.26" xlink:href="#linear-gradient"/>
<linearGradient id="linear-gradient-7" x1="38.79" y1="19.73" x2="44.8" y2="17.68" xlink:href="#linear-gradient"/>
<linearGradient id="linear-gradient-8" x1="43.9" y1="18.23" x2="49.2" y2="16.42" xlink:href="#linear-gradient"/>
<linearGradient id="linear-gradient-9" x1="48.32" y1="20.42" x2="55.14" y2="18.09" xlink:href="#linear-gradient"/>
</defs>
<path class="cls-11" d="m13.8,9h46.2v-5H8.8c-2.1,0-3.8,1.7-3.8,3.8v48.4c0,2.1,1.7,3.8,3.8,3.8h47.4c2.1,0,3.8-1.7,3.8-3.8v-29.2h-5v24.2c0,2.1-1.7,3.8-3.8,3.8H13.8c-2.1,0-3.8-1.7-3.8-3.8V12.8c0-2.1,1.7-3.8,3.8-3.8Z"/>
<g>
<path class="cls-2" d="m54,42v2.4c-.52.06-4.04.49-5.35.65-.26.03-.49-.14-.54-.39l-.88-4.4c-.1-.51-.82-.54-.96-.04-.97,3.39-2.1,7.33-2.69,9.39-.13.44-.73.49-.92.07-.99-2.19-2.94-6.47-4.27-9.41-.17-.38-.7-.39-.89-.02-1.05,2.11-2.39,4.79-3.21,6.43-.21.41-.81.35-.92-.1-.38-1.51-1.02-4.02-1.65-6.53-.13-.51-.87-.49-.97.03l-1.77,9.1-.96,5.01c-.39-1.94-1.19-5.92-1.9-9.46-.1-.5-.79-.54-.95-.06-.99,2.96-2.12,6.36-2.88,8.62-.16.49-.88.43-.96-.08-.48-3.08-1.38-8.73-2.13-13.46-.09-.54-.85-.56-.97-.03l-1.27,5.51-.2.9c-.44-.06-5.2-.85-5.77-.94v-2.18h4c.2-.03-.04.2,0,0,.78-3.43,2.64-9.57,3.61-13.77.12-.53.88-.5.97.03.61,3.82,1.66,10.47,2.45,15.51.08.51.79.57.96.08,1.29-3.85,2.76-8.27,3.25-9.74l.74,3.69.91,4.54c.8-5.04,1.85-11.63,2.52-15.81.09-.54.86-.56.97-.02.77,3.68,1.87,8.99,2.72,13.08.1.46.71.54.92.12.93-1.85,1.94-3.89,2.55-5.1.19-.37.72-.36.89.02.8,1.75,2.47,5.44,3.77,8.28.19.42.8.38.92-.07,1.08-3.78,2.58-9.05,3.45-12.11.14-.5.86-.47.96.04.63,3.17,1.87,7.48,2.43,10.23.04.21-.21-.03,0,0h4Z"/>
<path class="cls-1" d="m54,41.6v.8c-.52.06-4.04.49-5.35.65-.26.03-.49-.14-.54-.39l-.88-4.4c-.1-.51-.82-.54-.96-.04-.97,3.39-2.1,7.33-2.69,9.39-.13.44-.73.49-.92.07-.99-2.19-2.94-6.47-4.27-9.41-.17-.38-.7-.39-.89-.02-1.05,2.11-2.39,4.79-3.21,6.43-.21.41-.81.35-.92-.1-.38-1.51-1.02-4.02-1.65-6.53-.13-.51-.87-.49-.97.03l-1.77,9.1-.96,5.01c-.39-1.94-1.19-5.92-1.9-9.46-.1-.5-.79-.54-.95-.06-.99,2.96-2.12,6.36-2.88,8.62-.16.49-.88.43-.96-.08-.48-3.08-1.38-8.73-2.13-13.46-.09-.54-.85-.56-.97-.03l-1.27,5.51-.2.9c-.44-.06-5.2-.85-5.77-.94v-.36l3.85-.63c.2-.03.36-.17.4-.37.78-3.43,2.39-10.39,3.36-14.6.12-.53.88-.5.97.03.61,3.82,1.66,10.47,2.45,15.51.08.51.79.57.96.08,1.29-3.85,2.76-8.27,3.25-9.74l.74,3.69.91,4.54c.8-5.04,1.85-11.63,2.52-15.81.09-.54.86-.56.97-.02.77,3.68,1.87,8.99,2.72,13.08.1.46.71.54.92.12.93-1.85,1.94-3.89,2.55-5.1.19-.37.72-.36.89.02.8,1.75,2.47,5.44,3.77,8.28.19.42.8.38.92-.07,1.08-3.78,2.58-9.05,3.45-12.11.14-.5.86-.47.96.04.63,3.17,1.64,8.24,2.2,10.99.04.21.21.36.42.39l3.8.46Z"/>
</g>
<path class="cls-5" d="m18,17c0-1.1-.9-2-2-2s-2,.9-2,2-1,9,2,9,2-7.9,2-9Z"/>
<path class="cls-7" d="m23,17c0-1.1-.9-2-2-2s-2,.9-2,2,0,6,2,6,2-4.9,2-6Z"/>
<path class="cls-10" d="m28,17c0-1.1-.9-2-2-2s-2,.9-2,2,0,7,2,7,2-5.9,2-7Z"/>
<path class="cls-4" d="m33,17c0-1.1-.9-2-2-2s-2,.9-2,2,0,4,2,4,2-2.9,2-4Z"/>
<path class="cls-3" d="m38,17c0-1.1-.9-2-2-2s-2,.9-2,2,0,5,2,5,2-3.9,2-5Z"/>
<path class="cls-6" d="m43,17c0-1.1-.9-2-2-2s-2,.9-2,2,0,6,2,6,2-4.9,2-6Z"/>
<path class="cls-9" d="m48,17c0-1.1-.9-2-2-2s-2,.9-2,2,0,3,2,3,2-1.9,2-3Z"/>
<path class="cls-8" d="m53,17c0-1.1-.9-2-2-2s-2,.9-2,2-1,7,2,7,2-5.9,2-7Z"/>
</svg>

After

Width:  |  Height:  |  Size: 5.3 KiB

View File

@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://3461bedpoktj"
path="res://.godot/imported/ShakerPreset3D.svg-ac15877b6c78545ef46f5ca5bf99cede.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/shaker/assets/ShakerPreset3D.svg"
dest_files=["res://.godot/imported/ShakerPreset3D.svg-ac15877b6c78545ef46f5ca5bf99cede.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

View File

@@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_2" data-name="Layer 2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 15.98 14.45">
<defs>
<style>
.cls-1 {
fill: url(#linear-gradient);
}
.cls-1, .cls-2, .cls-3, .cls-4, .cls-5 {
stroke-width: 0px;
}
.cls-2 {
fill: url(#linear-gradient-5);
}
.cls-3 {
fill: url(#linear-gradient-2);
}
.cls-4 {
fill: url(#linear-gradient-3);
}
.cls-5 {
fill: url(#linear-gradient-4);
}
</style>
<linearGradient id="linear-gradient" x1="2.19" y1="15.22" x2="13.97" y2="2.21" gradientTransform="translate(0 16.02) scale(1 -1)" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#fff"/>
<stop offset="1" stop-color="#949494"/>
</linearGradient>
<linearGradient id="linear-gradient-2" x1="7.39" y1="8.1" x2="9.93" y2="9.6" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#fc7f7f"/>
<stop offset=".29" stop-color="#f37684"/>
<stop offset=".75" stop-color="#de6092"/>
<stop offset="1" stop-color="#cf519d"/>
</linearGradient>
<linearGradient id="linear-gradient-3" x1="0" y1="9.26" x2="7" y2="9.26" gradientTransform="matrix(1,0,0,1,0,0)" xlink:href="#linear-gradient"/>
<linearGradient id="linear-gradient-4" x1="9.41" y1="6.48" x2="15.98" y2="6.48" gradientTransform="matrix(1,0,0,1,0,0)" xlink:href="#linear-gradient"/>
<linearGradient id="linear-gradient-5" x1="5.7" y1="2.25" x2="12.01" y2="11.44" gradientTransform="matrix(1,0,0,1,0,0)" xlink:href="#linear-gradient"/>
</defs>
<path class="cls-1" d="m.76,7.23c0,.64.08,1.25.24,1.83.75-1.14,1.53-2.34,1.86-2.84.12-.18.3-.3.51-.34.46-1.6,1.72-2.85,3.33-3.29V.14C3.32.74.76,3.69.76,7.23ZM8,0h-.01c-.27.01-.53.02-.79.06v2.42c.26-.05.53-.07.8-.07.31,0,.61.03.91.09V.06c-.3-.04-.6-.06-.91-.06Zm1.41.14v2.48c1.33.41,2.41,1.37,2.97,2.62l1.18-2.64C12.52,1.35,11.06.46,9.41.14Zm5.74,6.02h-.01l-2.63,4.97c-.14.26-.41.42-.7.42-.2,0-.41-.08-.55-.24l-.29-.3c-.54.43-1.18.74-1.87.91-.25.32-.63.5-1.05.5-.19,0-.37-.04-.54-.11-.11.16-.19.3-.25.4-.14.24-.39.37-.66.37-.25,0-.48-.12-.63-.33-.28-.39-.87-1.19-1.48-2.02l-1.02-1.41-1.54,1.81c1.28,2,3.52,3.32,6.07,3.32,3.99,0,7.23-3.24,7.23-7.22,0-.36-.02-.72-.08-1.07Z"/>
<path class="cls-3" d="m10.33,8.83l-.14.24-.72-.72s-.08-.06-.13-.06-.11.02-.14.08c-.58.92-1.38,2.22-1.92,3.09l-.78-1.35s.02,0,.03,0c.07,0,.13-.04.17-.1l2.18-4.42s.01-.02.03-.03v1.97h.67c.67,0,1.08.72.75,1.29Z"/>
<g>
<path class="cls-4" d="m5.33,9.08c-.15-.25-.21-.53-.18-.8-.58-.81-1.13-1.57-1.39-1.94-.03-.06-.09-.08-.14-.08-.06,0-.12.03-.16.08-.05.07-.1.15-.17.25-.43.68-1.24,1.92-1.96,3-.66.98-1.21,1.85-1.33,2.03l.37.28,1.3-1.52,1.77-2.06s.08-.06.13-.06c.06,0,.1.02.14.07.6.81,1.52,2.07,2.17,2.97.28.37.51.7.65.89.03.05.09.07.14.07.06,0,.12-.02.16-.08.05-.07.1-.16.17-.26-.05-.05-.09-.11-.13-.18l-1.54-2.66Z"/>
<path class="cls-5" d="m15.69,2.65l-.75-.37c-.07-.04-.16-.06-.23-.06-.19,0-.39.12-.47.31l-.19.42-1.29,2.91-1.04,2.31c-.04.07-.1.11-.17.11-.05,0-.09-.01-.13-.06-.66-.77-1.48-1.75-2.01-2.38v1.2h.17c.5,0,.94.25,1.18.68.25.42.25.93,0,1.36l-.21.36.96.96.27.28s.07.06.12.06c.07,0,.13-.04.17-.1l2.97-5.61.88-1.69c.14-.25.04-.57-.23-.69Z"/>
</g>
<path class="cls-2" d="m10.33,8.83l-.14.24-1.4,2.42c-.17.29-.45.43-.74.43s-.58-.14-.75-.43l-.02-.03-.78-1.35-.74-1.28c-.33-.57.09-1.29.75-1.29h.69V0h1.71v7.54h.67c.67,0,1.08.72.75,1.29Z"/>
</svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://5ubwmsna8qv3"
path="res://.godot/imported/ShakerReceiver.svg-8fa75e085c3c726d592ed5236376746f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/shaker/assets/ShakerReceiver.svg"
dest_files=["res://.godot/imported/ShakerReceiver.svg-8fa75e085c3c726d592ed5236376746f.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

View File

@@ -0,0 +1,53 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_2" data-name="Layer 2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 15.98 14.45">
<defs>
<style>
.cls-1 {
fill: url(#linear-gradient);
}
.cls-1, .cls-2, .cls-3, .cls-4, .cls-5 {
stroke-width: 0px;
}
.cls-2 {
fill: url(#linear-gradient-5);
}
.cls-3 {
fill: url(#linear-gradient-2);
}
.cls-4 {
fill: url(#linear-gradient-3);
}
.cls-5 {
fill: url(#linear-gradient-4);
}
</style>
<linearGradient id="linear-gradient" x1="2.19" y1="15.22" x2="13.97" y2="2.21" gradientTransform="translate(0 16.02) scale(1 -1)" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#5d8cf3"/>
<stop offset="1" stop-color="#3a56a6"/>
</linearGradient>
<linearGradient id="linear-gradient-2" x1="7.39" y1="8.1" x2="9.93" y2="9.6" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#fc7f7f"/>
<stop offset=".29" stop-color="#f37684"/>
<stop offset=".75" stop-color="#de6092"/>
<stop offset="1" stop-color="#cf519d"/>
</linearGradient>
<linearGradient id="linear-gradient-3" x1="0" y1="9.26" x2="7" y2="9.26" gradientTransform="matrix(1,0,0,1,0,0)" xlink:href="#linear-gradient"/>
<linearGradient id="linear-gradient-4" x1="9.41" y1="6.48" x2="15.98" y2="6.48" gradientTransform="matrix(1,0,0,1,0,0)" xlink:href="#linear-gradient"/>
<linearGradient id="linear-gradient-5" x1="5.7" y1="2.25" x2="12.01" y2="11.44" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#9061cb"/>
<stop offset="1" stop-color="#08ffff"/>
</linearGradient>
</defs>
<path class="cls-1" d="m.76,7.23c0,.64.08,1.25.24,1.83.75-1.14,1.53-2.34,1.86-2.84.12-.18.3-.3.51-.34.46-1.6,1.72-2.85,3.33-3.29V.14C3.32.74.76,3.69.76,7.23ZM8,0h-.01c-.27.01-.53.02-.79.06v2.42c.26-.05.53-.07.8-.07.31,0,.61.03.91.09V.06c-.3-.04-.6-.06-.91-.06Zm1.41.14v2.48c1.33.41,2.41,1.37,2.97,2.62l1.18-2.64C12.52,1.35,11.06.46,9.41.14Zm5.74,6.02h-.01l-2.63,4.97c-.14.26-.41.42-.7.42-.2,0-.41-.08-.55-.24l-.29-.3c-.54.43-1.18.74-1.87.91-.25.32-.63.5-1.05.5-.19,0-.37-.04-.54-.11-.11.16-.19.3-.25.4-.14.24-.39.37-.66.37-.25,0-.48-.12-.63-.33-.28-.39-.87-1.19-1.48-2.02l-1.02-1.41-1.54,1.81c1.28,2,3.52,3.32,6.07,3.32,3.99,0,7.23-3.24,7.23-7.22,0-.36-.02-.72-.08-1.07Z"/>
<path class="cls-3" d="m10.33,8.83l-.14.24-.72-.72s-.08-.06-.13-.06-.11.02-.14.08c-.58.92-1.38,2.22-1.92,3.09l-.78-1.35s.02,0,.03,0c.07,0,.13-.04.17-.1l2.18-4.42s.01-.02.03-.03v1.97h.67c.67,0,1.08.72.75,1.29Z"/>
<g>
<path class="cls-4" d="m5.33,9.08c-.15-.25-.21-.53-.18-.8-.58-.81-1.13-1.57-1.39-1.94-.03-.06-.09-.08-.14-.08-.06,0-.12.03-.16.08-.05.07-.1.15-.17.25-.43.68-1.24,1.92-1.96,3-.66.98-1.21,1.85-1.33,2.03l.37.28,1.3-1.52,1.77-2.06s.08-.06.13-.06c.06,0,.1.02.14.07.6.81,1.52,2.07,2.17,2.97.28.37.51.7.65.89.03.05.09.07.14.07.06,0,.12-.02.16-.08.05-.07.1-.16.17-.26-.05-.05-.09-.11-.13-.18l-1.54-2.66Z"/>
<path class="cls-5" d="m15.69,2.65l-.75-.37c-.07-.04-.16-.06-.23-.06-.19,0-.39.12-.47.31l-.19.42-1.29,2.91-1.04,2.31c-.04.07-.1.11-.17.11-.05,0-.09-.01-.13-.06-.66-.77-1.48-1.75-2.01-2.38v1.2h.17c.5,0,.94.25,1.18.68.25.42.25.93,0,1.36l-.21.36.96.96.27.28s.07.06.12.06c.07,0,.13-.04.17-.1l2.97-5.61.88-1.69c.14-.25.04-.57-.23-.69Z"/>
</g>
<path class="cls-2" d="m10.33,8.83l-.14.24-1.4,2.42c-.17.29-.45.43-.74.43s-.58-.14-.75-.43l-.02-.03-.78-1.35-.74-1.28c-.33-.57.09-1.29.75-1.29h.69V0h1.71v7.54h.67c.67,0,1.08.72.75,1.29Z"/>
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bu1om2nm428ec"
path="res://.godot/imported/ShakerReceiver2D.svg-99072f9033b4ac51b75a8e8f089f2f8c.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/shaker/assets/ShakerReceiver2D.svg"
dest_files=["res://.godot/imported/ShakerReceiver2D.svg-99072f9033b4ac51b75a8e8f089f2f8c.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

View File

@@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_2" data-name="Layer 2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 15.98 14.45">
<defs>
<style>
.cls-1 {
fill: url(#linear-gradient);
}
.cls-1, .cls-2, .cls-3, .cls-4, .cls-5 {
stroke-width: 0px;
}
.cls-2 {
fill: url(#linear-gradient-5);
}
.cls-3 {
fill: url(#linear-gradient-2);
}
.cls-4 {
fill: url(#linear-gradient-3);
}
.cls-5 {
fill: url(#linear-gradient-4);
}
</style>
<linearGradient id="linear-gradient" x1="2.19" y1="15.22" x2="13.97" y2="2.21" gradientTransform="translate(0 16.02) scale(1 -1)" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#fc7f7f"/>
<stop offset=".1" stop-color="#f37d80"/>
<stop offset=".27" stop-color="#dd7885"/>
<stop offset=".47" stop-color="#b8708c"/>
<stop offset=".7" stop-color="#856596"/>
<stop offset=".96" stop-color="#4558a3"/>
<stop offset="1" stop-color="#3a56a6"/>
</linearGradient>
<linearGradient id="linear-gradient-2" x1="1.61" y1="8.84" x2="7.05" y2="12.05" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#fc7f7f"/>
<stop offset=".29" stop-color="#f37684"/>
<stop offset=".75" stop-color="#de6092"/>
<stop offset="1" stop-color="#cf519d"/>
</linearGradient>
<linearGradient id="linear-gradient-3" x1="7.39" y1="8.1" x2="9.93" y2="9.6" xlink:href="#linear-gradient-2"/>
<linearGradient id="linear-gradient-4" x1="10.14" y1="4.55" x2="14.31" y2="7.01" xlink:href="#linear-gradient-2"/>
<linearGradient id="linear-gradient-5" x1="5.7" y1="2.25" x2="12.01" y2="11.44" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#fc7f39"/>
<stop offset="1" stop-color="#3abaff"/>
</linearGradient>
</defs>
<path class="cls-1" d="m.76,7.23c0,.64.08,1.25.24,1.83.75-1.14,1.53-2.34,1.86-2.84.12-.18.3-.3.51-.34.46-1.6,1.72-2.85,3.33-3.29V.14C3.32.74.76,3.69.76,7.23ZM8,0h-.01c-.27.01-.53.02-.79.06v2.42c.26-.05.53-.07.8-.07.31,0,.61.03.91.09V.06c-.3-.04-.6-.06-.91-.06Zm1.41.14v2.48c1.33.41,2.41,1.37,2.97,2.62l1.18-2.64C12.52,1.35,11.06.46,9.41.14Zm5.74,6.02h-.01l-2.63,4.97c-.14.26-.41.42-.7.42-.2,0-.41-.08-.55-.24l-.29-.3c-.54.43-1.18.74-1.87.91-.25.32-.63.5-1.05.5-.19,0-.37-.04-.54-.11-.11.16-.19.3-.25.4-.14.24-.39.37-.66.37-.25,0-.48-.12-.63-.33-.28-.39-.87-1.19-1.48-2.02l-1.02-1.41-1.54,1.81c1.28,2,3.52,3.32,6.07,3.32,3.99,0,7.23-3.24,7.23-7.22,0-.36-.02-.72-.08-1.07Z"/>
<path class="cls-3" d="m6.87,11.74c.04.07.08.13.13.18-.07.1-.12.19-.17.26-.04.06-.1.08-.16.08-.05,0-.11-.02-.14-.07-.14-.19-.37-.52-.65-.89-.65-.9-1.57-2.16-2.17-2.97-.04-.05-.08-.07-.14-.07-.05,0-.1.02-.13.06l-1.77,2.06-1.3,1.52-.37-.28c.12-.18.67-1.05,1.33-2.03.72-1.08,1.53-2.32,1.96-3,.07-.1.12-.18.17-.25.04-.05.1-.08.16-.08.05,0,.11.02.14.08.26.37.81,1.13,1.39,1.94-.03.27.03.55.18.8l1.54,2.66Z"/>
<path class="cls-4" d="m10.33,8.83l-.14.24-.72-.72s-.08-.06-.13-.06-.11.02-.14.08c-.58.92-1.38,2.22-1.92,3.09l-.78-1.35s.02,0,.03,0c.07,0,.13-.04.17-.1l2.18-4.42s.01-.02.03-.03v1.97h.67c.67,0,1.08.72.75,1.29Z"/>
<path class="cls-5" d="m15.92,3.34l-.88,1.69-2.97,5.61c-.04.06-.1.1-.17.1-.05,0-.08-.02-.12-.06l-.27-.28-.96-.96.21-.36c.25-.43.25-.94,0-1.36-.24-.43-.68-.68-1.18-.68h-.17v-1.2c.53.63,1.35,1.61,2.01,2.38.04.05.08.06.13.06.07,0,.13-.04.17-.11l1.04-2.31,1.29-2.91.19-.42c.08-.19.28-.31.47-.31.07,0,.16.02.23.06l.75.37c.27.12.37.44.23.69Z"/>
<path class="cls-2" d="m10.33,8.83l-.14.24-1.4,2.42c-.17.29-.45.43-.74.43s-.58-.14-.75-.43l-.02-.03-.78-1.35-.74-1.28c-.33-.57.09-1.29.75-1.29h.69V0h1.71v7.54h.67c.67,0,1.08.72.75,1.29Z"/>
</svg>

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bfwyj7gf187kd"
path="res://.godot/imported/ShakerReceiver3D.svg-1cf90100ef9bf3dbbc6653627fdab7fc.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/shaker/assets/ShakerReceiver3D.svg"
dest_files=["res://.godot/imported/ShakerReceiver3D.svg-1cf90100ef9bf3dbbc6653627fdab7fc.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 512.01 461.61">
<defs>
<style>
.cls-1 {
fill: url(#linear-gradient);
stroke-width: 0px;
}
</style>
<linearGradient id="linear-gradient" x1="21.82" y1="71.06" x2="504.54" y2="392.27" gradientTransform="translate(0 449.52) scale(1 -1)" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#fff"/>
<stop offset=".99" stop-color="#a5a2b9"/>
</linearGradient>
</defs>
<path class="cls-1" d="m512.01,231.05v4.86c0,2.78-2.07,5.11-4.83,5.44-15.23,1.8-57.92,6.87-71.99,8.53-2.52.3-4.91-1.18-5.78-3.56l-2.53-6.94-21.05-57.78c-1.94-5.33-9.71-4.56-10.56,1.04-11.66,76.65-28.37,186.59-37.3,245.29-.86,5.66-8.72,6.37-10.59.96-16.91-48.96-44.35-128.42-63.77-184.67-1.72-4.99-8.81-4.89-10.4.14-10.97,34.8-24.71,78.36-33.95,107.66-1.69,5.35-9.37,5-10.57-.48l-8.18-37.16-26.06-118.54c-1.34-6.1-10.21-5.57-10.8.65-8.78,92.45-19.42,204.5-24.71,260.16-.55,5.76-8.48,6.84-10.56,1.45-21.89-56.74-59.41-154.05-79.41-205.9-.72-1.86-2.39-3.18-4.36-3.45l-59.88-8.23c-2.71-.37-4.73-2.69-4.73-5.43h0c0-2.74,2.02-5.05,4.73-5.43,16.03-2.2,65.17-8.96,79.71-10.96,2.36-.32,4.66.92,5.69,3.07l3.39,7.13,30.48,64.02c2.34,4.92,9.64,3.78,10.37-1.62,12.43-92.05,29.95-221.59,38.72-286.56.82-6.06,9.45-6.42,10.77-.45,13.12,59.21,36.96,166.79,53.28,240.4,1.15,5.17,8.22,5.86,10.36,1.02,9.56-21.68,19.33-43.84,24.89-56.46,1.83-4.14,7.59-4.41,9.79-.46,9.57,17.21,30.27,54.36,48.88,87.78,2.4,4.31,8.82,3.5,10.08-1.27,15.94-60.64,37.47-142.6,46.27-176.04,1.31-4.99,8.17-5.55,10.29-.85,13.26,29.48,40.49,89.85,53.09,117.84.79,1.75,2.44,2.96,4.35,3.18l52.02,6.15c2.76.33,4.83,2.66,4.83,5.44l.02.03Z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ch5mp344tqj3w"
path="res://.godot/imported/ShakerType.svg-0e40c87944ca8f10dcb4da67f37ccfdf.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/shaker/assets/ShakerType.svg"
dest_files=["res://.godot/imported/ShakerType.svg-0e40c87944ca8f10dcb4da67f37ccfdf.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 512.01 461.61">
<defs>
<style>
.cls-1 {
fill: url(#linear-gradient);
stroke-width: 0px;
}
</style>
<linearGradient id="linear-gradient" x1="21.82" y1="71.06" x2="504.54" y2="392.27" gradientTransform="translate(0 449.52) scale(1 -1)" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#6393ff"/>
<stop offset="1" stop-color="#6a7d8c"/>
</linearGradient>
</defs>
<path class="cls-1" d="m512.01,231.05v4.86c0,2.78-2.07,5.11-4.83,5.44-15.23,1.8-57.92,6.87-71.99,8.53-2.52.3-4.91-1.18-5.78-3.56l-2.53-6.94-21.05-57.78c-1.94-5.33-9.71-4.56-10.56,1.04-11.66,76.65-28.37,186.59-37.3,245.29-.86,5.66-8.72,6.37-10.59.96-16.91-48.96-44.35-128.42-63.77-184.67-1.72-4.99-8.81-4.89-10.4.14-10.97,34.8-24.71,78.36-33.95,107.66-1.69,5.35-9.37,5-10.57-.48l-8.18-37.16-26.06-118.54c-1.34-6.1-10.21-5.57-10.8.65-8.78,92.45-19.42,204.5-24.71,260.16-.55,5.76-8.48,6.84-10.56,1.45-21.89-56.74-59.41-154.05-79.41-205.9-.72-1.86-2.39-3.18-4.36-3.45l-59.88-8.23c-2.71-.37-4.73-2.69-4.73-5.43h0c0-2.74,2.02-5.05,4.73-5.43,16.03-2.2,65.17-8.96,79.71-10.96,2.36-.32,4.66.92,5.69,3.07l3.39,7.13,30.48,64.02c2.34,4.92,9.64,3.78,10.37-1.62,12.43-92.05,29.95-221.59,38.72-286.56.82-6.06,9.45-6.42,10.77-.45,13.12,59.21,36.96,166.79,53.28,240.4,1.15,5.17,8.22,5.86,10.36,1.02,9.56-21.68,19.33-43.84,24.89-56.46,1.83-4.14,7.59-4.41,9.79-.46,9.57,17.21,30.27,54.36,48.88,87.78,2.4,4.31,8.82,3.5,10.08-1.27,15.94-60.64,37.47-142.6,46.27-176.04,1.31-4.99,8.17-5.55,10.29-.85,13.26,29.48,40.49,89.85,53.09,117.84.79,1.75,2.44,2.96,4.35,3.18l52.02,6.15c2.76.33,4.83,2.66,4.83,5.44l.02.03Z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://caqg2nfs1y64r"
path="res://.godot/imported/ShakerType2D.svg-a5c5aa77a1e3263e925140c95a5a30c3.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/shaker/assets/ShakerType2D.svg"
dest_files=["res://.godot/imported/ShakerType2D.svg-a5c5aa77a1e3263e925140c95a5a30c3.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 512 512">
<defs>
<style>
.cls-1 {
fill: url(#linear-gradient);
stroke-width: 0px;
}
</style>
<linearGradient id="linear-gradient" x1="21.82" y1="409.71" x2="504.54" y2="88.5" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#f15758"/>
<stop offset="1" stop-color="#f0577c"/>
</linearGradient>
</defs>
<path class="cls-1" d="m512,262.29v4.86c0,2.78-2.07,5.11-4.83,5.44-15.23,1.8-57.92,6.87-71.99,8.53-2.52.3-4.91-1.18-5.78-3.56l-2.53-6.94-21.05-57.78c-1.94-5.33-9.71-4.56-10.56,1.04-11.66,76.65-28.37,186.59-37.3,245.29-.86,5.66-8.72,6.37-10.59.96-16.91-48.96-44.35-128.42-63.77-184.67-1.72-4.99-8.81-4.89-10.4.14-10.97,34.8-24.71,78.36-33.95,107.66-1.69,5.35-9.37,5-10.57-.48l-8.18-37.16-26.06-118.54c-1.34-6.1-10.21-5.57-10.8.65-8.78,92.45-19.42,204.5-24.71,260.16-.55,5.76-8.48,6.84-10.56,1.45-21.89-56.74-59.41-154.05-79.41-205.9-.72-1.86-2.39-3.18-4.36-3.45l-59.88-8.23c-2.71-.37-4.73-2.69-4.73-5.43h0c0-2.74,2.02-5.05,4.73-5.43,16.03-2.2,65.17-8.96,79.71-10.96,2.36-.32,4.66.92,5.69,3.07l3.39,7.13,30.48,64.02c2.34,4.92,9.64,3.78,10.37-1.62,12.43-92.05,29.95-221.59,38.72-286.56.82-6.06,9.45-6.42,10.77-.45,13.12,59.21,36.96,166.79,53.28,240.4,1.15,5.17,8.22,5.86,10.36,1.02,9.56-21.68,19.33-43.84,24.89-56.46,1.83-4.14,7.59-4.41,9.79-.46,9.57,17.21,30.27,54.36,48.88,87.78,2.4,4.31,8.82,3.5,10.08-1.27,15.94-60.64,37.47-142.6,46.27-176.04,1.31-4.99,8.17-5.55,10.29-.85,13.26,29.48,40.49,89.85,53.09,117.84.79,1.75,2.44,2.96,4.35,3.18l52.02,6.15c2.76.33,4.83,2.66,4.83,5.44Z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dd7q87w4eoudf"
path="res://.godot/imported/ShakerType3D.svg-1bc2b24943aa01bcdaa956f9b08b254c.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/shaker/assets/ShakerType3D.svg"
dest_files=["res://.godot/imported/ShakerType3D.svg-1bc2b24943aa01bcdaa956f9b08b254c.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_3" data-name="Layer 3" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
<defs>
<style>
.cls-1 {
fill: #ef4747;
stroke-width: 0px;
}
</style>
</defs>
<rect class="cls-1" x="8" y="8" width="48" height="48" rx="11.48" ry="11.48"/>
</svg>

After

Width:  |  Height:  |  Size: 337 B

View File

@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://m45uspfna0ol"
path="res://.godot/imported/Stop.svg-ae1c54e343f70b570e088fac0e2ac232.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/shaker/assets/Stop.svg"
dest_files=["res://.godot/imported/Stop.svg-ae1c54e343f70b570e088fac0e2ac232.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

BIN
addons/shaker/assets/icon.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://8m3nobyk16wm"
path="res://.godot/imported/icon.png-0661645ebcd1f259541e43f0afd1f280.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/shaker/assets/icon.png"
dest_files=["res://.godot/imported/icon.png-0661645ebcd1f259541e43f0afd1f280.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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=1

View File

@@ -0,0 +1,112 @@
@icon("res://addons/shaker/assets/ShakerType.svg")
@tool
class_name ShakerTypeBase
extends Resource
# Enumerations for blending modes and graph axes
enum BlendingModes {
Add,
Override,
Multiply,
Subtract,
Average,
Max,
Min
}
# Shake Properties
@export_group("Shake Properties")
@export var BlendingMode: BlendingModes = BlendingModes.Add:
set = set_blending_mode,
get = get_blending_mode
@export_exp_easing var fade_in: float = 0.0:
set = set_fade_in,
get = get_fade_in
@export_exp_easing("attenuation") var fade_out: float = 0.0:
set = set_fade_out,
get = get_fade_out
@export_range(0.0, 1.0) var start_percent: float = 0.0:
set = set_start_percent,
get = get_start_percent
@export_range(0.0, 1.0) var end_percent: float = 1.0:
set = set_end_percent,
get = get_end_percent
# Live Shake Graph
@export_group("Live Shake Graph")
@export var _temp_graph: bool = false
@export_range(16, 96) var bake_internal: int = 64:
set = set_bake_internal,
get = get_bake_internal
var duration = 0.0:
set = set_duration,
get = get_duration
func _init(blending_mode:BlendingModes=BlendingModes.Add, fade_in:float=self.fade_in, fade_out:float=self.fade_out, start_percent:float=self.start_percent, end_percent:float=self.end_percent) -> void:
self.BlendingMode = blending_mode
self.fade_in = fade_in
self.fade_out = fade_out
self.start_percent = start_percent
self.end_percent = end_percent
# Signals
signal property_changed(name: StringName)
# Custom setter and getter functions
func set_blending_mode(value: BlendingModes) -> void:
BlendingMode = value
_on_property_changed("BlendingMode")
func get_blending_mode() -> BlendingModes:
return BlendingMode
func set_fade_in(value: float) -> void:
fade_in = value
_on_property_changed("fade_in")
func get_fade_in() -> float:
return fade_in
func set_fade_out(value: float) -> void:
fade_out = value
_on_property_changed("fade_out")
func get_fade_out() -> float:
return fade_out
func set_start_percent(value: float) -> void:
start_percent = min(value, end_percent)
_on_property_changed("start_percent")
func get_start_percent() -> float:
return start_percent
func set_end_percent(value: float) -> void:
end_percent = max(value, start_percent)
_on_property_changed("end_percent")
func get_end_percent() -> float:
return end_percent
func set_bake_internal(value: int) -> void:
bake_internal = clamp(value, 16, 96)
_on_property_changed("bake_internal")
func get_bake_internal() -> int:
return bake_internal
func set_duration(value: float = 0.0) -> void:
duration = value
func get_duration() -> float:
return duration
# Handle property changes
func _on_property_changed(property_name: StringName) -> void:
property_changed.emit(property_name)

View File

@@ -0,0 +1 @@
uid://d2i321te0ny64

View File

@@ -0,0 +1,53 @@
@tool
@icon("res://addons/shaker/assets/ShakerPreset.svg")
class_name ShakerPresetBase
extends Resource
# Enum for shake categories
enum Categories {
POSITION,
ROTATION,
SCALE
}
# Graph panel reference
var Graph: Panel
# Bake internal setting
@export_range(16, 96) var bake_internal: int = 64:
set = set_bake_internal,
get = get_bake_internal
# Follow timeline flag
@export var __follow_timeline: bool = false:
set = set_follow_timeline,
get = get_follow_timeline
# Component duration and parent node
var component_duration: float = 0.0
var parent: Node
# Signal for property changes
signal property_changed(name: StringName)
func set_bake_internal(value: int) -> void:
bake_internal = clamp(value, 16, 96)
_on_property_changed("bake_internal")
func get_bake_internal() -> int:
return bake_internal
func set_follow_timeline(value: bool) -> void:
__follow_timeline = value
_on_property_changed("__follow_timeline")
func get_follow_timeline() -> bool:
return __follow_timeline
# Handle property changes
func _on_property_changed(property_name: StringName) -> void:
property_changed.emit(property_name)
# Calculate the difference between two arrays
func _array_difference(a: Array, b: Array) -> Array:
return b.filter(func(item): return not a.has(item))

View File

@@ -0,0 +1 @@
uid://cveqkhn5t8vng

View File

@@ -0,0 +1,24 @@
@tool
@icon("res://addons/shaker/assets/ShakerPreset.svg")
class_name ShakerProperty
extends Resource
@export var property_name:String
# Properties
@export var shake_type:ShakerTypeBase
# Signal for property changes
signal property_changed(name: StringName)
func _init(property_name:String="", shake_type:ShakerTypeBase=null) -> void:
self.property_name = property_name
self.shake_type = shake_type
# Handle property changes
func _on_property_changed(property_name: StringName) -> void:
property_changed.emit(property_name)
func get_value(_t:float) -> Variant:
if shake_type:
return shake_type.get_value(_t)
return 0.0

View File

@@ -0,0 +1 @@
uid://bd8eceas8jvyl

View File

@@ -0,0 +1,46 @@
@icon("res://addons/shaker/assets/ShakerType.svg")
@tool
class_name ShakerTypeBase1D
extends ShakerTypeBase
enum GraphAxis {
X,
}
@export var amplitude:float = 1.0:
set = set_amplitude,
get = get_amplitude
@export var offset:float = 0.0:
set = set_offset,
get = get_offset
func set_amplitude(value: float) -> void:
amplitude = value
_on_property_changed("amplitude")
func get_amplitude() -> float:
return amplitude
func set_offset(value: float) -> void:
offset = value
_on_property_changed("offset")
func get_offset() -> float:
return offset
# Get the shake value at a given time
func get_value(t: float) -> float:
var result:float = 0.0;
return _calc_value(fmod(t, 1.0), result)
# Calculate the shake value
func _calc_value(t: float, result: float) -> float:
if duration > 0:
t /= duration
if (start_percent != 0 && start_percent > t) || (end_percent != 1 && end_percent < t):
result = 0.0;
else:
result = result * amplitude + offset
result *= (ease(t, fade_in) if fade_in > 0.0001 else 1.0) * (ease(1.0 - t, fade_out) if fade_out > 0.0001 else 1.0)
return result;

View File

@@ -0,0 +1 @@
uid://bhqlklbhcxfgf

View File

@@ -0,0 +1,43 @@
@tool
class_name ShakerTypeAudioBus1D
extends ShakerTypeBase1D
@export var bus_name:String = "Master":
set = set_bus_name,
get = get_bus_name
@export_range(20, 20000) var min_frequence:float = 20
@export_range(20, 20000) var max_frequence:float = 20000
var bus_index:int = 0
var effect:AudioEffectSpectrumAnalyzerInstance
## Calculates the value of the square wave at time t.
func get_value(t: float) -> float:
var result:float = 0.0
if effect:
var mag:Vector2 = effect.get_magnitude_for_frequency_range(min_frequence, max_frequence, AudioEffectSpectrumAnalyzerInstance.MAGNITUDE_MAX)
result = mag.length()
return _calc_value(t, result)
func set_bus_name(value: String) -> void:
bus_name = value
_update_bus_index()
_on_property_changed("bus_name")
func get_bus_name() -> String:
return bus_name
func _update_bus_index() -> void:
bus_index = AudioServer.get_bus_index(bus_name)
if bus_index > -1:
for e in AudioServer.get_bus_effect_count(bus_index):
var _effect:AudioEffect = AudioServer.get_bus_effect(bus_index, e)
if _effect is AudioEffectSpectrumAnalyzer:
effect = AudioServer.get_bus_effect_instance(bus_index, e, 0)
break;
if effect == null:
AudioServer.add_bus_effect(bus_index, AudioEffectSpectrumAnalyzer.new(), 0)
effect = AudioServer.get_bus_effect_instance(bus_index, 0)
else:
push_error("Error: Bus '" + bus_name + "' not found!")
effect = null

View File

@@ -0,0 +1 @@
uid://dshti5xd41w07

View File

@@ -0,0 +1,42 @@
@tool
class_name ShakerTypeBrownianShake1D
extends ShakerTypeBase1D
@export var roughness:float = 1.0:
set = set_roughness,
get = get_roughness
@export var persistence:float = 0.5:
set = set_persistence,
get = get_persistence
var _generator: RandomNumberGenerator = RandomNumberGenerator.new()
var _last_pos:float = 0.0
func _init() -> void:
property_changed.connect(_property_changed)
func get_value(t: float) -> float:
var result:float = 0.0
result = (_last_pos + _generator.randf_range(-roughness, roughness))
result = _calc_value(t, result)
_last_pos = lerpf(_last_pos, result, 1.0 - persistence)
return _last_pos
func _property_changed(name: StringName) -> void:
_last_pos = 0.0
func set_roughness(value: float) -> void:
roughness = value
_on_property_changed("roughness")
func get_roughness() -> float:
return roughness
func set_persistence(value: float) -> void:
persistence = clamp(persistence,0, 1)
_on_property_changed("persistence")
func get_persistence() -> float:
return persistence

View File

@@ -0,0 +1 @@
uid://62yumjskyeow

View File

@@ -0,0 +1,41 @@
@tool
class_name ShakerTypeCurve1D
extends ShakerTypeBase1D
@export var curve: Curve:
set = set_curve,
get = get_curve
@export var loop: bool = true:
set = set_loop,
get = get_loop
func _curve_changed() -> void:
_on_property_changed("curve")
func get_value(t: float) -> float:
var result: float = 0.0
if loop && t > 1.0:
t = fmod(t, 1.0)
if curve:
result = curve.sample(t)
return _calc_value(t, result)
func set_curve(value: Curve) -> void:
if curve:
curve.changed.disconnect(_curve_changed)
curve = value
if curve:
curve.changed.connect(_curve_changed)
else:
_curve_changed()
func get_curve() -> Curve:
return curve
func set_loop(value: bool) -> void:
loop = value
_on_property_changed("loop")
func get_loop() -> bool:
return loop

View File

@@ -0,0 +1 @@
uid://dadkdm3tvmuqq

View File

@@ -0,0 +1,32 @@
@tool
class_name ShakerTypeNoiseShake1D
extends ShakerTypeBase1D
@export var noise_texture: NoiseTexture2D = NoiseTexture2D.new():
set = set_noise_texture,
get = get_noise_texture
func _init() -> void:
noise_texture.changed.connect(_on_noise_changed)
func get_value(t: float) -> float:
var result:float = 0.0
if noise_texture && noise_texture.noise:
var noise_size:Vector2 = Vector2(noise_texture.width, noise_texture.height)
var noise_offset:float = t * noise_size.x
result = noise_texture.noise.get_noise_1d(noise_offset)
result *= 2.0
return _calc_value(t, result)
func _on_noise_changed() -> void:
_on_property_changed("noise_texture")
func set_noise_texture(value: NoiseTexture2D) -> void:
if noise_texture:
noise_texture.changed.disconnect(_on_noise_changed)
noise_texture = value
if noise_texture:
noise_texture.changed.connect(_on_noise_changed)
func get_noise_texture() -> NoiseTexture2D:
return noise_texture

View File

@@ -0,0 +1 @@
uid://bdrk4rkut1y3l

View File

@@ -0,0 +1,30 @@
@tool
class_name ShakerTypeRandom1D
extends ShakerTypeBase1D
## The seed for the random number generator.
@export var seed: int = 0:
set = set_seed
## The random number generator instance.
var _generator: RandomNumberGenerator = RandomNumberGenerator.new()
## Initializes the shake type with the given seed.
func _init() -> void:
set_seed(seed)
## Calculates a random value for each axis at time t.
func get_value(t: float) -> float:
var result:float = 0.0
result = _generator.randf_range(-1.0, 1.0)
return _calc_value(t, result)
## Sets the seed for the random number generator.
func set_seed(value: int) -> void:
seed = value
_generator.seed = seed
_on_property_changed("seed")
## Gets the current seed of the random number generator.
func get_seed() -> int:
return seed

View File

@@ -0,0 +1 @@
uid://buor2ix0dmwk2

View File

@@ -0,0 +1,41 @@
@tool
class_name ShakerTypeSawtoothWave1D
extends ShakerTypeBase1D
## The frequency of the sawtooth wave for each axis.
@export var frequency:float = 5.0:
set = set_frequency
## The asymmetry of the sawtooth wave for each axis (0 to 1).
@export var asymmetry:float = 0.5:
set = set_asymmetry
## Sets the frequency of the sawtooth wave.
func set_frequency(value: float) -> void:
frequency = value
_on_property_changed("frequency")
## Gets the frequency of the sawtooth wave.
func get_frequency() -> float:
return frequency
## Sets the asymmetry of the sawtooth wave.
func set_asymmetry(value: float) -> void:
asymmetry = clamp(value, 0.0, 0.0)
_on_property_changed("asymmetry")
## Gets the asymmetry of the sawtooth wave.
func get_asymmetry() -> float:
return asymmetry
## Calculates the value of the sawtooth wave at time t.
func get_value(t: float) -> float:
var result:float = 0.0
var _real_time:float = fmod(t, 1.0) if t > 1.0 else t
var wave:float = fmod(_real_time * frequency, 1.0)
wave = wave / asymmetry if wave < asymmetry else (1.0 - wave) / (1.0 - asymmetry)
result = wave
result = _calc_value(t, result)
result = (result - amplitude * 0.5) * 2.0
return result

View File

@@ -0,0 +1 @@
uid://tftoajmajyfg

View File

@@ -0,0 +1,32 @@
@tool
class_name ShakerTypeSineWave1D
extends ShakerTypeBase1D
@export_group("Sinewave Properties")
@export var frequency:float = 1.0:
set = set_frequency,
get = get_frequency
@export var phase:float = 0.0:
set = set_phase,
get = get_phase
func get_value(t: float) -> float:
var result:float = 0.0
var _real_time: float = fmod(t, 1.0) if t > 1.0 else t
result = sin(t * frequency * TAU + phase)
return _calc_value(_real_time, result)
func set_frequency(value: float) -> void:
frequency = value
_on_property_changed("frequency")
func get_frequency() -> float:
return frequency
func set_phase(value: float) -> void:
phase = value
_on_property_changed("phase")
func get_phase() -> float:
return phase

View File

@@ -0,0 +1 @@
uid://vvwsdrpmw7w4

View File

@@ -0,0 +1,35 @@
@tool
class_name ShakerTypeSquareWave1D
extends ShakerTypeBase1D
## The frequency of the square wave for each axis.
@export var frequency:float = 5.0:
set = set_frequency
## The duty cycle of the square wave for each axis (0 to 1).
@export var duty_cycle:float = 0.5:
set = set_duty_cycle
## Sets the frequency of the square wave.
func set_frequency(value:float) -> void:
frequency = value
_on_property_changed("frequency")
## Gets the frequency of the square wave.
func get_frequency() -> float:
return frequency
## Sets the duty cycle of the square wave.
func set_duty_cycle(value:float) -> void:
duty_cycle = clamp(value, 0.0, 0.0)
_on_property_changed("duty_cycle")
## Gets the duty cycle of the square wave.
func get_duty_cycle() -> float:
return duty_cycle
## Calculates the value of the square wave at time t.
func get_value(t: float) -> float:
var result:float = 0.0
result = 1.0 if fmod(t * frequency, 1.0) < duty_cycle else -1.0
return _calc_value(t, result)

View File

@@ -0,0 +1 @@
uid://bwuxn8yt7jiwy

View File

@@ -0,0 +1,47 @@
@icon("res://addons/shaker/assets/ShakerType2D.svg")
@tool
class_name ShakerTypeBase2D
extends ShakerTypeBase
enum GraphAxis {
X,
Y,
}
@export var amplitude: Vector2 = Vector2.ONE:
set = set_amplitude,
get = get_amplitude
@export var offset: Vector2 = Vector2.ZERO:
set = set_offset,
get = get_offset
func set_amplitude(value: Vector2) -> void:
amplitude = value
_on_property_changed("amplitude")
func get_amplitude() -> Vector2:
return amplitude
func set_offset(value: Vector2) -> void:
offset = value
_on_property_changed("offset")
func get_offset() -> Vector2:
return offset
# Get the shake value at a given time
func get_value(t: float) -> Vector2:
var result: Vector2 = Vector2.ZERO
return _calc_value(fmod(t, 1.0), result)
# Calculate the shake value
func _calc_value(t: float, result: Vector2) -> Vector2:
if duration > 0:
t /= duration
if (start_percent != 0 && start_percent > t) || (end_percent != 1 && end_percent < t):
result = Vector2.ZERO
else:
result = result * amplitude + offset
result *= (ease(t, fade_in) if fade_in > 0.0001 else 1.0) * (ease(1.0 - t, fade_out) if fade_out > 0.0001 else 1.0)
return result

View File

@@ -0,0 +1 @@
uid://chp1jfq2fdtbm

View File

@@ -0,0 +1,94 @@
@tool
@icon("res://addons/shaker/assets/ShakerPreset2D.svg")
class_name ShakerPreset2D
extends ShakerPresetBase
# Shake type arrays for each category
@export var PositionShake: Array[ShakerTypeBase2D]:
set = set_position_shake,
get = get_position_shake
@export var RotationShake: Array[ShakerTypeBase1D]:
set = set_rotation_shake,
get = get_rotation_shake
@export var ScaleShake: Array[ShakerTypeBase2D]:
set = set_scale_shake,
get = get_scale_shake
# Custom setter and getter functions
func set_position_shake(value: Array[ShakerTypeBase2D]) -> void:
for _shake_type in _array_difference(PositionShake, value):
if _shake_type != null:
_shake_type.property_changed.connect(_on_property_changed)
PositionShake = value
_on_property_changed("PositionShake")
if Graph != null:
Graph._on_fit_button_clicked()
func get_position_shake() -> Array[ShakerTypeBase2D]:
return PositionShake
func set_rotation_shake(value: Array[ShakerTypeBase1D]) -> void:
for _shake_type in _array_difference(RotationShake, value):
if _shake_type != null:
_shake_type.property_changed.connect(_on_property_changed)
RotationShake = value
_on_property_changed("RotationShake")
if Graph != null:
Graph._on_fit_button_clicked()
func get_rotation_shake() -> Array[ShakerTypeBase1D]:
return RotationShake
func get_shakes_by_category(category:Categories) -> Array:
if category == Categories.POSITION:
return PositionShake
elif category == Categories.ROTATION:
return RotationShake
elif category == Categories.SCALE:
return ScaleShake
return [null]
func set_scale_shake(value: Array[ShakerTypeBase2D]) -> void:
for _shake_type in _array_difference(ScaleShake, value):
if _shake_type != null:
_shake_type.property_changed.connect(_on_property_changed)
ScaleShake = value
_on_property_changed("ScaleShake")
if Graph != null:
Graph._on_fit_button_clicked()
func get_scale_shake() -> Array[ShakerTypeBase2D]:
return ScaleShake
# Get the shake value for a given time and category
func get_value(t: float, _category: Categories = Categories.POSITION):
var result
if _category == Categories.ROTATION:
result = 0.0
else:
result = Vector2.ZERO
for shake_type in [PositionShake, RotationShake, ScaleShake][_category]:
if shake_type != null:
shake_type.duration = component_duration
var _shake_result = shake_type.get_value(t)
match shake_type.BlendingMode:
shake_type.BlendingModes.Add:
result += _shake_result
shake_type.BlendingModes.Multiply:
result *= _shake_result
shake_type.BlendingModes.Subtract:
result -= _shake_result
shake_type.BlendingModes.Max:
result.x = max(result.x, _shake_result.x)
result.y = max(result.y, _shake_result.y)
shake_type.BlendingModes.Min:
result.x = min(result.x, _shake_result.x)
result.y = min(result.y, _shake_result.y)
shake_type.BlendingModes.Average:
result = (result + _shake_result) * 0.5
shake_type.BlendingModes.Override:
result = _shake_result
return result

View File

@@ -0,0 +1 @@
uid://ieocwh32dyx1

View File

@@ -0,0 +1,45 @@
@tool
class_name ShakerTypeAudioBus2D
extends ShakerTypeBase2D
@export var bus_name:String = "Master":
set = set_bus_name,
get = get_bus_name
@export var min_frequence:Vector2 = Vector2(20, 20)
@export var max_frequence:Vector2 = Vector2(20000, 20000)
var bus_index:int = 0
var effect:AudioEffectSpectrumAnalyzerInstance
## Calculates the value of the square wave at time t.
func get_value(t: float) -> Vector2:
var result:Vector2 = Vector2.ZERO
if effect:
var mag_x:Vector2 = effect.get_magnitude_for_frequency_range(min_frequence.x, max_frequence.x, AudioEffectSpectrumAnalyzerInstance.MAGNITUDE_MAX)
var mag_y:Vector2 = effect.get_magnitude_for_frequency_range(min_frequence.y, max_frequence.y, AudioEffectSpectrumAnalyzerInstance.MAGNITUDE_MAX)
result.x = mag_x.length()
result.y = mag_y.length()
return _calc_value(t, result)
func set_bus_name(value: String) -> void:
bus_name = value
_update_bus_index()
_on_property_changed("bus_name")
func get_bus_name() -> String:
return bus_name
func _update_bus_index() -> void:
bus_index = AudioServer.get_bus_index(bus_name)
if bus_index > -1:
for e in AudioServer.get_bus_effect_count(bus_index):
var _effect:AudioEffect = AudioServer.get_bus_effect(bus_index, e)
if _effect is AudioEffectSpectrumAnalyzer:
effect = AudioServer.get_bus_effect_instance(bus_index, e, 0)
break;
if effect == null:
AudioServer.add_bus_effect(bus_index, AudioEffectSpectrumAnalyzer.new(), 0)
effect = AudioServer.get_bus_effect_instance(bus_index, 0)
else:
push_error("Error: Bus '" + bus_name + "' not found!")
effect = null

View File

@@ -0,0 +1 @@
uid://4msbbvpnv85g

View File

@@ -0,0 +1,44 @@
@tool
class_name ShakerTypeBrownianShake2D
extends ShakerTypeBase2D
@export var roughness: Vector2 = Vector2.ONE * 1.0:
set = set_roughness,
get = get_roughness
@export var persistence: Vector2 = Vector2.ONE * 0.5:
set = set_persistence,
get = get_persistence
var _generator: RandomNumberGenerator = RandomNumberGenerator.new()
var _last_pos: Vector2 = Vector2.ZERO
func _init() -> void:
property_changed.connect(_property_changed)
func get_value(t: float) -> Vector2:
var result: Vector2 = Vector2.ZERO
result.x = (_last_pos.x + _generator.randf_range(-roughness.x, roughness.x))
result.y = (_last_pos.y + _generator.randf_range(-roughness.y, roughness.y))
result = _calc_value(t, result)
_last_pos.x = lerpf(_last_pos.x, result.x, 1.0 - persistence.x)
_last_pos.y = lerpf(_last_pos.y, result.y, 1.0 - persistence.y)
return _last_pos
func _property_changed(name: StringName) -> void:
_last_pos = Vector2.ZERO
func set_roughness(value: Vector2) -> void:
roughness = value
_on_property_changed("roughness")
func get_roughness() -> Vector2:
return roughness
func set_persistence(value: Vector2) -> void:
persistence = value.clamp(Vector2(0,0),Vector2(1,1))
_on_property_changed("persistence")
func get_persistence() -> Vector2:
return persistence

View File

@@ -0,0 +1 @@
uid://c2p5nhqgceojd

View File

@@ -0,0 +1,60 @@
@tool
class_name ShakerTypeCurve2D
extends ShakerTypeBase2D
@export var curve_x: Curve:
set = set_curve_x,
get = get_curve_x
@export var curve_y: Curve:
set = set_curve_y,
get = get_curve_y
@export var loop: bool = true:
set = set_loop,
get = get_loop
func _curve_changed() -> void:
_on_property_changed("curve_")
func get_value(t: float) -> Vector2:
var result: Vector2 = Vector2.ZERO
if loop && t > 1.0:
t = fmod(t, 1.0)
if curve_x:
result.x = curve_x.sample(t)
if curve_y:
result.y = curve_y.sample(t)
return _calc_value(t, result)
func set_curve_x(value: Curve) -> void:
if curve_x:
curve_x.changed.disconnect(_curve_changed)
curve_x = value
if curve_x:
curve_x.changed.connect(_curve_changed)
else:
_curve_changed()
func get_curve_x() -> Curve:
return curve_x
func set_curve_y(value: Curve) -> void:
if curve_y:
curve_y.changed.disconnect(_curve_changed)
curve_y = value
if curve_y:
curve_y.changed.connect(_curve_changed)
else:
_curve_changed()
func get_curve_y() -> Curve:
return curve_y
func set_loop(value: bool) -> void:
loop = value
_on_property_changed("loop")
func get_loop() -> bool:
return loop

View File

@@ -0,0 +1 @@
uid://dd6hr5hjnra0i

View File

@@ -0,0 +1,33 @@
@tool
class_name ShakerTypeNoiseShake2D
extends ShakerTypeBase2D
@export var noise_texture: NoiseTexture2D = NoiseTexture2D.new():
set = set_noise_texture,
get = get_noise_texture
func _init() -> void:
noise_texture.changed.connect(_on_noise_changed)
func get_value(t: float) -> Vector2:
var result: Vector2 = Vector2.ZERO
if noise_texture && noise_texture.noise:
var noise_size: Vector2 = Vector2(noise_texture.width, noise_texture.height)
var noise_offset: Vector2 = t * noise_size
result.x = noise_texture.noise.get_noise_2d(noise_offset.x, 0.0)
result.y = noise_texture.noise.get_noise_2d(0.0, noise_offset.y)
result *= 2.0
return _calc_value(t, result)
func _on_noise_changed() -> void:
_on_property_changed("noise_texture")
func set_noise_texture(value: NoiseTexture2D) -> void:
if noise_texture:
noise_texture.changed.disconnect(_on_noise_changed)
noise_texture = value
if noise_texture:
noise_texture.changed.connect(_on_noise_changed)
func get_noise_texture() -> NoiseTexture2D:
return noise_texture

View File

@@ -0,0 +1 @@
uid://rytryaspugdk

View File

@@ -0,0 +1,31 @@
@tool
class_name ShakerTypeRandom2D
extends ShakerTypeBase2D
## The seed for the random number generator.
@export var seed: int = 0:
set = set_seed
## The random number generator instance.
var _generator: RandomNumberGenerator = RandomNumberGenerator.new()
## Initializes the shake type with the given seed.
func _init() -> void:
set_seed(seed)
## Calculates a random value for each axis at time t.
func get_value(t: float) -> Vector2:
var result: Vector2 = Vector2.ZERO
result.x = _generator.randf_range(-1.0, 1.0)
result.y = _generator.randf_range(-1.0, 1.0)
return _calc_value(t, result)
## Sets the seed for the random number generator.
func set_seed(value: int) -> void:
seed = value
_generator.seed = seed
_on_property_changed("seed")
## Gets the current seed of the random number generator.
func get_seed() -> int:
return seed

View File

@@ -0,0 +1 @@
uid://c7jr8ltct1k17

View File

@@ -0,0 +1,42 @@
@tool
class_name ShakerTypeSawtoothWave2D
extends ShakerTypeBase2D
## The frequency of the sawtooth wave for each axis.
@export var frequency: Vector2 = Vector2.ONE * 5.0:
set = set_frequency
## The asymmetry of the sawtooth wave for each axis (0 to 1).
@export var asymmetry: Vector2 = Vector2.ONE * 0.5:
set = set_asymmetry
## Sets the frequency of the sawtooth wave.
func set_frequency(value: Vector2) -> void:
frequency = value
_on_property_changed("frequency")
## Gets the frequency of the sawtooth wave.
func get_frequency() -> Vector2:
return frequency
## Sets the asymmetry of the sawtooth wave.
func set_asymmetry(value: Vector2) -> void:
asymmetry = value.clamp(Vector2.ZERO, Vector2.ONE)
_on_property_changed("asymmetry")
## Gets the asymmetry of the sawtooth wave.
func get_asymmetry() -> Vector2:
return asymmetry
## Calculates the value of the sawtooth wave at time t.
func get_value(t: float) -> Vector2:
var result: Vector2 = Vector2.ZERO
var _real_time: float = fmod(t, 1.0) if t > 1.0 else t
var wave: Vector2 = (_real_time * frequency).posmod(1.0)
wave.x = wave.x / asymmetry.x if wave.x < asymmetry.x else (1.0 - wave.x) / (1.0 - asymmetry.x)
wave.y = wave.y / asymmetry.y if wave.y < asymmetry.y else (1.0 - wave.y) / (1.0 - asymmetry.y)
result = wave
result = _calc_value(t, result)
result = (result - amplitude * 0.5) * 2.0
return result

View File

@@ -0,0 +1 @@
uid://x16d6et41iut

View File

@@ -0,0 +1,33 @@
@tool
class_name ShakerTypeSineWave2D
extends ShakerTypeBase2D
@export_group("Sinewave Properties")
@export var frequency: Vector2 = Vector2.ONE:
set = set_frequency,
get = get_frequency
@export var phase: Vector2 = Vector2.ONE:
set = set_phase,
get = get_phase
func get_value(t: float) -> Vector2:
var result: Vector2 = Vector2.ZERO
var _real_time: float = fmod(t, 1.0) if t > 1.0 else t
result.x = sin(t * frequency.x * TAU + phase.x)
result.y = sin(t * frequency.y * TAU + phase.y + PI/2)
return _calc_value(_real_time, result)
func set_frequency(value: Vector2) -> void:
frequency = value
_on_property_changed("frequency")
func get_frequency() -> Vector2:
return frequency
func set_phase(value: Vector2) -> void:
phase = value
_on_property_changed("phase")
func get_phase() -> Vector2:
return phase

View File

@@ -0,0 +1 @@
uid://drm7drd6f4t4x

View File

@@ -0,0 +1,36 @@
@tool
class_name ShakerTypeSquareWave2D
extends ShakerTypeBase2D
## The frequency of the square wave for each axis.
@export var frequency: Vector2 = Vector2.ONE * 5.0:
set = set_frequency
## The duty cycle of the square wave for each axis (0 to 1).
@export var duty_cycle: Vector2 = Vector2.ONE * 0.5:
set = set_duty_cycle
## Sets the frequency of the square wave.
func set_frequency(value: Vector2) -> void:
frequency = value
_on_property_changed("frequency")
## Gets the frequency of the square wave.
func get_frequency() -> Vector2:
return frequency
## Sets the duty cycle of the square wave.
func set_duty_cycle(value: Vector2) -> void:
duty_cycle = value.clamp(Vector2.ZERO, Vector2.ONE)
_on_property_changed("duty_cycle")
## Gets the duty cycle of the square wave.
func get_duty_cycle() -> Vector2:
return duty_cycle
## Calculates the value of the square wave at time t.
func get_value(t: float) -> Vector2:
var result: Vector2 = Vector2.ZERO
result.x = 1.0 if fmod(t * frequency.x, 1.0) < duty_cycle.x else -1.0
result.y = 1.0 if fmod(t * frequency.y, 1.0) < duty_cycle.y else -1.0
return _calc_value(t, result)

View File

@@ -0,0 +1 @@
uid://btxrpjbvdcl1f

View File

@@ -0,0 +1,48 @@
@icon("res://addons/shaker/assets/ShakerType3D.svg")
@tool
class_name ShakerTypeBase3D
extends ShakerTypeBase
enum GraphAxis {
X,
Y,
Z
}
@export var amplitude: Vector3 = Vector3.ONE:
set = set_amplitude,
get = get_amplitude
@export var offset: Vector3 = Vector3.ZERO:
set = set_offset,
get = get_offset
func set_amplitude(value: Vector3) -> void:
amplitude = value
_on_property_changed("amplitude")
func get_amplitude() -> Vector3:
return amplitude
func set_offset(value: Vector3) -> void:
offset = value
_on_property_changed("offset")
func get_offset() -> Vector3:
return offset
# Get the shake value at a given time
func get_value(t: float) -> Vector3:
var result: Vector3 = Vector3.ZERO
return _calc_value(fmod(t, 1.0), result)
# Calculate the shake value
func _calc_value(t: float, result: Vector3) -> Vector3:
if duration > 0:
t /= duration
if (start_percent != 0 && start_percent > t) || (end_percent != 1 && end_percent < t):
result = Vector3.ZERO
else:
result = result * amplitude + offset
result *= (ease(t, fade_in) if abs(fade_in) > 0.0001 else 1.0) * (ease(1.0 - t, fade_out) if abs(fade_out) > 0.0001 else 1.0)
return result

View File

@@ -0,0 +1 @@
uid://0tu2q57qqu4s

View File

@@ -0,0 +1,103 @@
@tool
@icon("res://addons/shaker/assets/ShakerPreset3D.svg")
class_name ShakerPreset3D
extends ShakerPresetBase
# Shake type arrays for each category
@export var PositionShake: Array[ShakerTypeBase3D]:
set = set_position_shake,
get = get_position_shake
@export var RotationShake: Array[ShakerTypeBase3D]:
set = set_rotation_shake,
get = get_rotation_shake
@export var ScaleShake: Array[ShakerTypeBase3D]:
set = set_scale_shake,
get = get_scale_shake
# Custom setter and getter functions
func set_position_shake(value: Array[ShakerTypeBase3D]) -> void:
for _shake_type in _array_difference(PositionShake, value):
if _shake_type != null:
_shake_type.property_changed.connect(_on_property_changed)
_shake_type.property_changed.connect(_change_graph_category.bind(0))
PositionShake = value
if Graph != null:
Graph.select_category(0)
Graph._on_fit_button_clicked()
_on_property_changed("PositionShake")
func get_position_shake() -> Array[ShakerTypeBase3D]:
return PositionShake
func set_rotation_shake(value: Array[ShakerTypeBase3D]) -> void:
for _shake_type in _array_difference(RotationShake, value):
if _shake_type != null:
_shake_type.property_changed.connect(_on_property_changed)
_shake_type.property_changed.connect(_change_graph_category.bind(1))
RotationShake = value
if Graph != null:
Graph.select_category(1)
Graph._on_fit_button_clicked()
_on_property_changed("RotationShake")
func get_rotation_shake() -> Array[ShakerTypeBase3D]:
return RotationShake
func set_scale_shake(value: Array[ShakerTypeBase3D]) -> void:
for _shake_type in _array_difference(ScaleShake, value):
if _shake_type != null:
_shake_type.property_changed.connect(_on_property_changed)
_shake_type.property_changed.connect(_change_graph_category.bind(2))
ScaleShake = value
if Graph != null:
Graph.select_category(2)
Graph._on_fit_button_clicked()
_on_property_changed("ScaleShake")
func get_scale_shake() -> Array[ShakerTypeBase3D]:
return ScaleShake
# Get the shake value for a given time and category
func get_value(t: float, _category: Categories = Categories.POSITION) -> Vector3:
var result: Vector3 = Vector3.ZERO
var selected_category: Array[ShakerTypeBase3D] = [PositionShake, RotationShake, ScaleShake][_category]
for shake_type in selected_category:
if shake_type != null:
shake_type.duration = component_duration
var _shake_result: Vector3 = shake_type.get_value(t)
match shake_type.BlendingMode:
shake_type.BlendingModes.Add:
result += _shake_result
shake_type.BlendingModes.Multiply:
result *= _shake_result
shake_type.BlendingModes.Subtract:
result -= _shake_result
shake_type.BlendingModes.Max:
result.x = max(result.x, _shake_result.x)
result.y = max(result.y, _shake_result.y)
result.z = max(result.z, _shake_result.z)
shake_type.BlendingModes.Min:
result.x = min(result.x, _shake_result.x)
result.y = min(result.y, _shake_result.y)
result.z = min(result.z, _shake_result.z)
shake_type.BlendingModes.Average:
result = (result + _shake_result) * 0.5
shake_type.BlendingModes.Override:
result = _shake_result
return result
func _change_graph_category(_name:String, _category_index:int) -> void:
if Graph:
Graph.category_button.select(_category_index)
Graph.category_button.item_selected.emit(_category_index)
func get_shakes_by_category(category:Categories) -> Array:
if category == Categories.POSITION:
return PositionShake
elif category == Categories.ROTATION:
return RotationShake
elif category == Categories.SCALE:
return ScaleShake
return [null]

View File

@@ -0,0 +1 @@
uid://mlwdmecg12xd

View File

@@ -0,0 +1,49 @@
@tool
class_name ShakerTypeAudioBus3D
extends ShakerTypeBase3D
@export var bus_name:String = "Master":
set = set_bus_name,
get = get_bus_name
@export var min_frequence:Vector3 = Vector3(20, 20, 20)
@export var max_frequence:Vector3 = Vector3(20000, 20000, 20000)
var bus_index:int = 0
var effect:AudioEffectSpectrumAnalyzerInstance
func _init():
_update_bus_index()
## Calculates the value of the square wave at time t.
func get_value(t: float) -> Vector3:
var result:Vector3 = Vector3.ZERO
if effect:
var mag_x:Vector2 = effect.get_magnitude_for_frequency_range(min_frequence.x, max_frequence.x, AudioEffectSpectrumAnalyzerInstance.MAGNITUDE_MAX)
var mag_y:Vector2 = effect.get_magnitude_for_frequency_range(min_frequence.y, max_frequence.y, AudioEffectSpectrumAnalyzerInstance.MAGNITUDE_MAX)
var mag_z:Vector2 = effect.get_magnitude_for_frequency_range(min_frequence.z, max_frequence.z, AudioEffectSpectrumAnalyzerInstance.MAGNITUDE_MAX)
result.x = mag_x.length()
result.y = mag_y.length()
result.z = mag_y.length()
return _calc_value(t, result)
func set_bus_name(value: String) -> void:
bus_name = value
_update_bus_index()
_on_property_changed("bus_name")
func get_bus_name() -> String:
return bus_name
func _update_bus_index() -> void:
bus_index = AudioServer.get_bus_index(bus_name)
if bus_index > -1:
for e in AudioServer.get_bus_effect_count(bus_index):
var _effect:AudioEffect = AudioServer.get_bus_effect(bus_index, e)
if _effect is AudioEffectSpectrumAnalyzer:
effect = AudioServer.get_bus_effect_instance(bus_index, e, 0)
break;
if effect == null:
AudioServer.add_bus_effect(bus_index, AudioEffectSpectrumAnalyzer.new(), 0)
effect = AudioServer.get_bus_effect_instance(bus_index, 0)
else:
push_error("Error: Bus '" + bus_name + "' not found!")
effect = null

View File

@@ -0,0 +1 @@
uid://cdne0sspxhssj

View File

@@ -0,0 +1,46 @@
@tool
class_name ShakerTypeBrownianShake3D
extends ShakerTypeBase3D
@export var roughness: Vector3 = Vector3.ONE * 1.0:
set = set_roughness,
get = get_roughness
@export var persistence: Vector3 = Vector3.ONE * 0.5:
set = set_persistence,
get = get_persistence
var _generator: RandomNumberGenerator = RandomNumberGenerator.new()
var _last_pos: Vector3 = Vector3.ZERO
func _init() -> void:
property_changed.connect(_property_changed)
func get_value(t: float) -> Vector3:
var result: Vector3 = Vector3.ZERO
result.x = (_last_pos.x + _generator.randf_range(-roughness.x, roughness.x))
result.y = (_last_pos.y + _generator.randf_range(-roughness.y, roughness.y))
result.z = (_last_pos.z + _generator.randf_range(-roughness.z, roughness.z))
result = _calc_value(t, result)
_last_pos.x = lerpf(_last_pos.x, result.x, 1.0 - persistence.x)
_last_pos.y = lerpf(_last_pos.y, result.y, 1.0 - persistence.y)
_last_pos.z = lerpf(_last_pos.z, result.z, 1.0 - persistence.z)
return _last_pos
func _property_changed(name: StringName) -> void:
_last_pos = Vector3.ZERO
func set_roughness(value: Vector3) -> void:
roughness = value
_on_property_changed("roughness")
func get_roughness() -> Vector3:
return roughness
func set_persistence(value: Vector3) -> void:
persistence = value.clamp(Vector3.ZERO, Vector3.ONE)
_on_property_changed("persistence")
func get_persistence() -> Vector3:
return persistence

View File

@@ -0,0 +1 @@
uid://ddk408cg8156q

View File

@@ -0,0 +1,78 @@
@tool
class_name ShakerTypeCurve3D
extends ShakerTypeBase3D
@export var curve_x: Curve:
set = set_curve_x,
get = get_curve_x
@export var curve_y: Curve:
set = set_curve_y,
get = get_curve_y
@export var curve_z: Curve:
set = set_curve_z,
get = get_curve_z
@export var loop: bool = true:
set = set_loop,
get = get_loop
func _curve_changed() -> void:
_on_property_changed("curve_")
func get_value(t: float) -> Vector3:
var result: Vector3 = Vector3.ZERO
if loop && t > 1.0:
t = fmod(t, 1.0)
if curve_x:
result.x = curve_x.sample(t)
if curve_y:
result.y = curve_y.sample(t)
if curve_z:
result.z = curve_z.sample(t)
return _calc_value(t, result)
func set_curve_x(value: Curve) -> void:
if curve_x:
curve_x.changed.disconnect(_curve_changed)
curve_x = value
if curve_x:
curve_x.changed.connect(_curve_changed)
else:
_curve_changed()
func get_curve_x() -> Curve:
return curve_x
func set_curve_y(value: Curve) -> void:
if curve_y:
curve_y.changed.disconnect(_curve_changed)
curve_y = value
if curve_y:
curve_y.changed.connect(_curve_changed)
else:
_curve_changed()
func get_curve_y() -> Curve:
return curve_y
func set_curve_z(value: Curve) -> void:
if curve_z:
curve_z.changed.disconnect(_curve_changed)
curve_z = value
if curve_z:
curve_z.changed.connect(_curve_changed)
else:
_curve_changed()
func get_curve_z() -> Curve:
return curve_z
func set_loop(value: bool) -> void:
loop = value
_on_property_changed("loop")
func get_loop() -> bool:
return loop

View File

@@ -0,0 +1 @@
uid://biqfuixncau4j

View File

@@ -0,0 +1,34 @@
@tool
class_name ShakerTypeNoiseShake3D
extends ShakerTypeBase3D
@export var noise_texture: NoiseTexture3D = NoiseTexture3D.new():
set = set_noise_texture,
get = get_noise_texture
func _init() -> void:
noise_texture.changed.connect(_on_noise_changed)
func get_value(t: float) -> Vector3:
var result: Vector3 = Vector3.ZERO
if noise_texture && noise_texture.noise:
var noise_size: Vector3 = Vector3(noise_texture.width, noise_texture.height, noise_texture.depth)
var noise_offset: Vector3 = t * noise_size
result.x = noise_texture.noise.get_noise_3d(noise_offset.x, 0.0, 0.0)
result.y = noise_texture.noise.get_noise_3d(0.0, noise_offset.y, 0.0)
result.z = noise_texture.noise.get_noise_3d(0.0, 0.0, noise_offset.z)
result *= 2.0
return _calc_value(t, result)
func _on_noise_changed() -> void:
_on_property_changed("noise_texture")
func set_noise_texture(value: NoiseTexture3D) -> void:
if noise_texture:
noise_texture.changed.disconnect(_on_noise_changed)
noise_texture = value
if noise_texture:
noise_texture.changed.connect(_on_noise_changed)
func get_noise_texture() -> NoiseTexture3D:
return noise_texture

View File

@@ -0,0 +1 @@
uid://ptaespkh1sk2

View File

@@ -0,0 +1,32 @@
@tool
class_name ShakerTypeRandom3D
extends ShakerTypeBase3D
## The seed for the random number generator.
@export var seed: int = 0:
set = set_seed
## The random number generator instance.
var _generator: RandomNumberGenerator = RandomNumberGenerator.new()
## Initializes the shake type with the given seed.
func _init() -> void:
set_seed(seed)
## Calculates a random value for each axis at time t.
func get_value(t: float) -> Vector3:
var result: Vector3 = Vector3.ZERO
result.x = _generator.randf_range(-1.0, 1.0)
result.y = _generator.randf_range(-1.0, 1.0)
result.z = _generator.randf_range(-1.0, 1.0)
return _calc_value(t, result)
## Sets the seed for the random number generator.
func set_seed(value: int) -> void:
seed = value
_generator.seed = seed
_on_property_changed("seed")
## Gets the current seed of the random number generator.
func get_seed() -> int:
return seed

View File

@@ -0,0 +1 @@
uid://jyrxhux22cdm

View File

@@ -0,0 +1,43 @@
@tool
class_name ShakerTypeSawtoothWave3D
extends ShakerTypeBase3D
## The frequency of the sawtooth wave for each axis.
@export var frequency: Vector3 = Vector3.ONE * 5.0:
set = set_frequency
## The asymmetry of the sawtooth wave for each axis (0 to 1).
@export var asymmetry: Vector3 = Vector3.ONE * 0.5:
set = set_asymmetry
## Sets the frequency of the sawtooth wave.
func set_frequency(value: Vector3) -> void:
frequency = value
_on_property_changed("frequency")
## Gets the frequency of the sawtooth wave.
func get_frequency() -> Vector3:
return frequency
## Sets the asymmetry of the sawtooth wave.
func set_asymmetry(value: Vector3) -> void:
asymmetry = value.clamp(Vector3.ZERO, Vector3.ONE)
_on_property_changed("asymmetry")
## Gets the asymmetry of the sawtooth wave.
func get_asymmetry() -> Vector3:
return asymmetry
## Calculates the value of the sawtooth wave at time t.
func get_value(t: float) -> Vector3:
var result: Vector3 = Vector3.ZERO
var _real_time: float = fmod(t, 1.0) if t > 1.0 else t
var wave: Vector3 = (_real_time * frequency).posmod(1.0)
wave.x = wave.x / asymmetry.x if wave.x < asymmetry.x else (1.0 - wave.x) / (1.0 - asymmetry.x)
wave.y = wave.y / asymmetry.y if wave.y < asymmetry.y else (1.0 - wave.y) / (1.0 - asymmetry.y)
wave.z = wave.z / asymmetry.z if wave.z < asymmetry.z else (1.0 - wave.z) / (1.0 - asymmetry.z)
result = wave
result = _calc_value(t, result)
result = (result - amplitude * 0.5) * 2.0
return result

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