Compare commits
118 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| cf7591b413 | |||
| 92cc4f0264 | |||
| 18c8b741dd | |||
| b84b7e4dd5 | |||
| 4d419b9010 | |||
| 8b2bf3e32e | |||
| db49703326 | |||
| fb78add739 | |||
| 04121f18a4 | |||
| fa029b9e53 | |||
| 494f0cb9ca | |||
| c1ca0bf27b | |||
| 8d1e7ebb4f | |||
| a257306999 | |||
| 2e5fcb6a75 | |||
| 87a9fad005 | |||
| 837b3d7705 | |||
| 4224333963 | |||
| 4dd48bed70 | |||
| abe6f42a3b | |||
| 27c67dbdd9 | |||
| 98ed361546 | |||
| eb1c7f78fa | |||
| 35b9ea383c | |||
| 9690280cd7 | |||
| 65538495c4 | |||
| 561e026834 | |||
| 7c74b8b5e5 | |||
| f7705a6d57 | |||
| 0dcf4a3f99 | |||
| 4ccdbc0ee6 | |||
| 0436053c62 | |||
| 6b97c226f1 | |||
| b1e78df6c7 | |||
| 5908494977 | |||
| 63529a11ae | |||
| 255b87f991 | |||
| fd3eb35782 | |||
| 9e75193731 | |||
| 609078c584 | |||
| 893126ef78 | |||
| 6737668391 | |||
| ca77579168 | |||
| c6559d593a | |||
| e32dac9e6e | |||
| 30b4d1a2eb | |||
| 2fa4ce68e7 | |||
| 80e533d98e | |||
| 0e3e258fd3 | |||
| c7991198ea | |||
| 1a4b2f4c19 | |||
| 52a9c3f120 | |||
| 2301884418 | |||
| 04054cfeae | |||
| 66be7838bb | |||
| 1eb65d1520 | |||
| f2a39316ba | |||
| fffd8c947b | |||
| a1d57d6a1a | |||
| 941205af2b | |||
| 6c2ad89687 | |||
| 59494f9e98 | |||
| 510246c341 | |||
| b184bcdea5 | |||
| cf52af4237 | |||
| e0fc301414 | |||
| b792e8721c | |||
| 2e2df4ff50 | |||
| a84e0ecfb3 | |||
| f828c1d786 | |||
| a98785abec | |||
| 7c4e541446 | |||
| 7d31d17034 | |||
| 2ff8cc74cc | |||
| fabafbb35b | |||
| 0b0163a0ac | |||
| 5b3d6c9f19 | |||
| ac14352e7f | |||
| 27130257c9 | |||
| e70a2e7537 | |||
| 6051588f24 | |||
| c895dfe9a0 | |||
| 1ea3945cf6 | |||
| 29d9f44142 | |||
| 31b7b5ea0c | |||
| 78ab2cc637 | |||
| fd16342aca | |||
| 2d3a1b0d4c | |||
| 1c7abeb0d9 | |||
| 97828ecdda | |||
| 9d8877cc67 | |||
| fd7b55452b | |||
| 1cafe6e96d | |||
| ea8821b41a | |||
| 8338ce3dd9 | |||
| 39f45d418f | |||
| 4e756da1ba | |||
| 919236a388 | |||
| ef33336975 | |||
| 916ff1921c | |||
| 70e3f70bcc | |||
| 417d9f5a6b | |||
| 591993a1f2 | |||
| e39620ce52 | |||
| 7312b2b22b | |||
| 45e8ac2f3c | |||
| 46bea7ba14 | |||
| c35ce49669 | |||
| c1e8235895 | |||
| 1813973daa | |||
| 7b036c5889 | |||
| 88d20431ce | |||
| d15542e4ed | |||
| 63ea62ff74 | |||
| c563390796 | |||
| 5f37f39558 | |||
| 4922e597d9 | |||
| 739968afbf |
@@ -40,7 +40,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
needs: BumpTag
|
||||
container:
|
||||
image: barichello/godot-ci:mono-4.4.1
|
||||
image: barichello/godot-ci:mono-4.5
|
||||
|
||||
steps:
|
||||
- name: Install node, curl and zip
|
||||
@@ -54,22 +54,12 @@ jobs:
|
||||
- name: Import resources and build solution
|
||||
run: |
|
||||
godot --headless --editor --build-solutions --quit --import --path $PWD
|
||||
|
||||
- name: Build Windows
|
||||
run: |
|
||||
mkdir -v -p build/windows
|
||||
godot --headless --verbose --build-solutions --import --export-release "Windows Desktop" build/windows/${{ env.GAME_NAME }}.exe
|
||||
godot --headless --verbose --build-solutions --export-release "Windows Desktop" build/windows/${{ env.GAME_NAME }}.exe
|
||||
zip -r Windows.zip build/windows
|
||||
- name: Linux Build
|
||||
run: |
|
||||
mkdir -v -p build/linux
|
||||
godot --headless --verbose --export-release "Linux/X11" build/linux/${{ env.GAME_NAME }}.x86_64
|
||||
zip -r Linux.zip build/linux
|
||||
- name: Mac Build
|
||||
run: |
|
||||
mkdir -v -p build/mac
|
||||
godot --headless --verbose --export-release "macOS" build/mac/${{ env.GAME_NAME }}.zip
|
||||
zip -r Mac.zip build/mac
|
||||
|
||||
- name: Upload to Itch
|
||||
uses: KikimoraGames/itch-publish@v0.0.3
|
||||
with:
|
||||
@@ -79,6 +69,27 @@ jobs:
|
||||
buildNumber: ${{ needs.BumpTag.outputs.tag_name }}
|
||||
gameData: Windows.zip
|
||||
buildChannel: windows
|
||||
|
||||
- name: Build Windows ARM
|
||||
run: |
|
||||
mkdir -v -p build/windowsArm
|
||||
godot --headless --verbose --build-solutions --export-release "Windows ARM" build/windowsArm/${{ env.GAME_NAME }}.exe
|
||||
zip -r WindowsArm.zip build/windowsArm
|
||||
- name: Upload to Itch
|
||||
uses: KikimoraGames/itch-publish@v0.0.3
|
||||
with:
|
||||
butlerApiKey: ${{ secrets.BUTLER_TOKEN }}
|
||||
itchUsername: ${{ env.ITCHIO_USERNAME }}
|
||||
itchGameId: ${{ env.ITCHIO_GAMEID }}
|
||||
buildNumber: ${{ needs.BumpTag.outputs.tag_name }}
|
||||
gameData: WindowsArm.zip
|
||||
buildChannel: windows-arm
|
||||
|
||||
- name: Linux Build
|
||||
run: |
|
||||
mkdir -v -p build/linux
|
||||
godot --headless --verbose --export-release "Linux/X11" build/linux/${{ env.GAME_NAME }}.x86_64
|
||||
zip -r Linux.zip build/linux
|
||||
- name: Upload to Itch
|
||||
uses: KikimoraGames/itch-publish@v0.0.3
|
||||
with:
|
||||
@@ -87,7 +98,13 @@ jobs:
|
||||
itchGameId: ${{ env.ITCHIO_GAMEID }}
|
||||
buildNumber: ${{ needs.BumpTag.outputs.tag_name }}
|
||||
gameData: Linux.zip
|
||||
buildChannel: linux
|
||||
buildChannel: linux
|
||||
|
||||
- name: Mac Build
|
||||
run: |
|
||||
mkdir -v -p build/mac
|
||||
godot --headless --verbose --export-release "macOS" build/mac/${{ env.GAME_NAME }}.zip
|
||||
zip -r Mac.zip build/mac
|
||||
- name: Upload to Itch
|
||||
uses: KikimoraGames/itch-publish@v0.0.3
|
||||
with:
|
||||
|
||||
1
.gitignore
vendored
@@ -10,6 +10,7 @@
|
||||
.import/
|
||||
|
||||
/builds
|
||||
/communication
|
||||
|
||||
# Imported translations (automatically generated from CSV files)
|
||||
*.translation
|
||||
@@ -1,4 +1,4 @@
|
||||
<Project Sdk="Godot.NET.Sdk/4.4.1">
|
||||
<Project Sdk="Godot.NET.Sdk/4.5.0">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<EnableDynamicLoading>true</EnableDynamicLoading>
|
||||
|
||||
131
Movement tests.csproj.old
Normal file
@@ -0,0 +1,131 @@
|
||||
<Project Sdk="Godot.NET.Sdk/4.4.1">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<EnableDynamicLoading>true</EnableDynamicLoading>
|
||||
<RootNamespace>Movementtests</RootNamespace>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="export_presets.cfg" />
|
||||
<Content Include="menus\assets\git_logo\Git-Logo-2Color.png" />
|
||||
<Content Include="menus\assets\git_logo\Git-Logo-2Color.png.import" />
|
||||
<Content Include="menus\assets\git_logo\LICENSE.txt" />
|
||||
<Content Include="menus\assets\godot_engine_logo\LICENSE.txt" />
|
||||
<Content Include="menus\assets\godot_engine_logo\logo_vertical_color_dark.png" />
|
||||
<Content Include="menus\assets\godot_engine_logo\logo_vertical_color_dark.png.import" />
|
||||
<Content Include="menus\assets\icon.png" />
|
||||
<Content Include="menus\assets\icon.png.import" />
|
||||
<Content Include="menus\ATTRIBUTION.md" />
|
||||
<Content Include="menus\resources\themes\expedition.tres" />
|
||||
<Content Include="menus\resources\themes\gravity.tres" />
|
||||
<Content Include="menus\resources\themes\grow.tres" />
|
||||
<Content Include="menus\resources\themes\lab.tres" />
|
||||
<Content Include="menus\resources\themes\lore.tres" />
|
||||
<Content Include="menus\resources\themes\steal_this_theme.tres" />
|
||||
<Content Include="menus\scenes\credits\scrollable_credits.gd" />
|
||||
<Content Include="menus\scenes\credits\scrollable_credits.gd.uid" />
|
||||
<Content Include="menus\scenes\credits\scrollable_credits.tscn" />
|
||||
<Content Include="menus\scenes\credits\scrolling_credits.gd" />
|
||||
<Content Include="menus\scenes\credits\scrolling_credits.gd.uid" />
|
||||
<Content Include="menus\scenes\credits\scrolling_credits.tscn" />
|
||||
<Content Include="menus\scenes\end_credits\end_credits.gd" />
|
||||
<Content Include="menus\scenes\end_credits\end_credits.gd.uid" />
|
||||
<Content Include="menus\scenes\end_credits\end_credits.tscn" />
|
||||
<Content Include="menus\scenes\game_scene\configurable_sub_viewport.gd" />
|
||||
<Content Include="menus\scenes\game_scene\configurable_sub_viewport.gd.uid" />
|
||||
<Content Include="menus\scenes\game_scene\game_ui.tscn" />
|
||||
<Content Include="menus\scenes\game_scene\input_display_label.gd" />
|
||||
<Content Include="menus\scenes\game_scene\input_display_label.gd.uid" />
|
||||
<Content Include="menus\scenes\game_scene\levels\level.gd" />
|
||||
<Content Include="menus\scenes\game_scene\levels\level.gd.uid" />
|
||||
<Content Include="menus\scenes\game_scene\levels\level_1.tscn" />
|
||||
<Content Include="menus\scenes\game_scene\levels\level_2.tscn" />
|
||||
<Content Include="menus\scenes\game_scene\levels\level_3.tscn" />
|
||||
<Content Include="menus\scenes\game_scene\tutorials\tutorial_1.tscn" />
|
||||
<Content Include="menus\scenes\game_scene\tutorials\tutorial_2.tscn" />
|
||||
<Content Include="menus\scenes\game_scene\tutorials\tutorial_3.tscn" />
|
||||
<Content Include="menus\scenes\game_scene\tutorial_manager.gd" />
|
||||
<Content Include="menus\scenes\game_scene\tutorial_manager.gd.uid" />
|
||||
<Content Include="menus\scenes\loading_screen\level_loading_screen.tscn" />
|
||||
<Content Include="menus\scenes\loading_screen\loading_screen.gd" />
|
||||
<Content Include="menus\scenes\loading_screen\loading_screen.gd.uid" />
|
||||
<Content Include="menus\scenes\loading_screen\loading_screen.tscn" />
|
||||
<Content Include="menus\scenes\loading_screen\loading_screen_with_shader_caching.gd" />
|
||||
<Content Include="menus\scenes\loading_screen\loading_screen_with_shader_caching.gd.uid" />
|
||||
<Content Include="menus\scenes\loading_screen\loading_screen_with_shader_caching.tscn" />
|
||||
<Content Include="menus\scenes\menus\level_select_menu\level_select_menu.gd" />
|
||||
<Content Include="menus\scenes\menus\level_select_menu\level_select_menu.gd.uid" />
|
||||
<Content Include="menus\scenes\menus\level_select_menu\level_select_menu.tscn" />
|
||||
<Content Include="menus\scenes\menus\main_menu\main_menu.gd" />
|
||||
<Content Include="menus\scenes\menus\main_menu\main_menu.gd.uid" />
|
||||
<Content Include="menus\scenes\menus\main_menu\main_menu.tscn" />
|
||||
<Content Include="menus\scenes\menus\main_menu\main_menu_with_animations.gd" />
|
||||
<Content Include="menus\scenes\menus\main_menu\main_menu_with_animations.gd.uid" />
|
||||
<Content Include="menus\scenes\menus\main_menu\main_menu_with_animations.tscn" />
|
||||
<Content Include="menus\scenes\menus\options_menu\audio\audio_input_option_control.gd" />
|
||||
<Content Include="menus\scenes\menus\options_menu\audio\audio_input_option_control.gd.uid" />
|
||||
<Content Include="menus\scenes\menus\options_menu\audio\audio_input_option_control.tscn" />
|
||||
<Content Include="menus\scenes\menus\options_menu\audio\audio_options_menu.gd" />
|
||||
<Content Include="menus\scenes\menus\options_menu\audio\audio_options_menu.gd.uid" />
|
||||
<Content Include="menus\scenes\menus\options_menu\audio\audio_options_menu.tscn" />
|
||||
<Content Include="menus\scenes\menus\options_menu\game\game_options_menu.gd" />
|
||||
<Content Include="menus\scenes\menus\options_menu\game\game_options_menu.gd.uid" />
|
||||
<Content Include="menus\scenes\menus\options_menu\game\game_options_menu.tscn" />
|
||||
<Content Include="menus\scenes\menus\options_menu\game\reset_game_control\reset_game_control.gd" />
|
||||
<Content Include="menus\scenes\menus\options_menu\game\reset_game_control\reset_game_control.gd.uid" />
|
||||
<Content Include="menus\scenes\menus\options_menu\game\reset_game_control\reset_game_control.tscn" />
|
||||
<Content Include="menus\scenes\menus\options_menu\input\input_extras_menu.tscn" />
|
||||
<Content Include="menus\scenes\menus\options_menu\input\input_options_menu.gd" />
|
||||
<Content Include="menus\scenes\menus\options_menu\input\input_options_menu.gd.uid" />
|
||||
<Content Include="menus\scenes\menus\options_menu\input\input_options_menu.tscn" />
|
||||
<Content Include="menus\scenes\menus\options_menu\input\input_options_menu_with_mouse_sensitivity.tscn" />
|
||||
<Content Include="menus\scenes\menus\options_menu\master_options_menu.gd" />
|
||||
<Content Include="menus\scenes\menus\options_menu\master_options_menu.gd.uid" />
|
||||
<Content Include="menus\scenes\menus\options_menu\master_options_menu.tscn" />
|
||||
<Content Include="menus\scenes\menus\options_menu\master_options_menu_with_tabs.tscn" />
|
||||
<Content Include="menus\scenes\menus\options_menu\mini_options_menu.gd" />
|
||||
<Content Include="menus\scenes\menus\options_menu\mini_options_menu.gd.uid" />
|
||||
<Content Include="menus\scenes\menus\options_menu\mini_options_menu.tscn" />
|
||||
<Content Include="menus\scenes\menus\options_menu\mini_options_menu_with_reset.gd" />
|
||||
<Content Include="menus\scenes\menus\options_menu\mini_options_menu_with_reset.gd.uid" />
|
||||
<Content Include="menus\scenes\menus\options_menu\mini_options_menu_with_reset.tscn" />
|
||||
<Content Include="menus\scenes\menus\options_menu\video\video_options_menu.gd" />
|
||||
<Content Include="menus\scenes\menus\options_menu\video\video_options_menu.gd.uid" />
|
||||
<Content Include="menus\scenes\menus\options_menu\video\video_options_menu.tscn" />
|
||||
<Content Include="menus\scenes\menus\options_menu\video\video_options_menu_with_extras.tscn" />
|
||||
<Content Include="menus\scenes\opening\opening.gd" />
|
||||
<Content Include="menus\scenes\opening\opening.gd.uid" />
|
||||
<Content Include="menus\scenes\opening\opening.tscn" />
|
||||
<Content Include="menus\scenes\opening\opening_with_logo.tscn" />
|
||||
<Content Include="menus\scenes\overlaid_menus\game_won_menu.gd" />
|
||||
<Content Include="menus\scenes\overlaid_menus\game_won_menu.gd.uid" />
|
||||
<Content Include="menus\scenes\overlaid_menus\game_won_menu.tscn" />
|
||||
<Content Include="menus\scenes\overlaid_menus\level_lost_menu.gd" />
|
||||
<Content Include="menus\scenes\overlaid_menus\level_lost_menu.gd.uid" />
|
||||
<Content Include="menus\scenes\overlaid_menus\level_lost_menu.tscn" />
|
||||
<Content Include="menus\scenes\overlaid_menus\level_won_menu.gd" />
|
||||
<Content Include="menus\scenes\overlaid_menus\level_won_menu.gd.uid" />
|
||||
<Content Include="menus\scenes\overlaid_menus\level_won_menu.tscn" />
|
||||
<Content Include="menus\scenes\overlaid_menus\mini_options_overlaid_menu.tscn" />
|
||||
<Content Include="menus\scenes\overlaid_menus\overlaid_menu.gd" />
|
||||
<Content Include="menus\scenes\overlaid_menus\overlaid_menu.gd.uid" />
|
||||
<Content Include="menus\scenes\overlaid_menus\overlaid_menu.tscn" />
|
||||
<Content Include="menus\scenes\overlaid_menus\overlaid_menu_container.gd" />
|
||||
<Content Include="menus\scenes\overlaid_menus\overlaid_menu_container.gd.uid" />
|
||||
<Content Include="menus\scenes\overlaid_menus\overlaid_menu_container.tscn" />
|
||||
<Content Include="menus\scenes\overlaid_menus\pause_menu.gd" />
|
||||
<Content Include="menus\scenes\overlaid_menus\pause_menu.gd.uid" />
|
||||
<Content Include="menus\scenes\overlaid_menus\pause_menu.tscn" />
|
||||
<Content Include="menus\scripts\game_state.gd" />
|
||||
<Content Include="menus\scripts\game_state.gd.uid" />
|
||||
<Content Include="menus\scripts\level_list_and_state_manager.gd" />
|
||||
<Content Include="menus\scripts\level_list_and_state_manager.gd.uid" />
|
||||
<Content Include="menus\scripts\level_state.gd" />
|
||||
<Content Include="menus\scripts\level_state.gd.uid" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="addons\" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="RustyOptions" Version="0.10.1" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -1,4 +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>
|
||||
@@ -1,6 +1,20 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://cc37235kj4384"]
|
||||
[gd_scene load_steps=6 format=3 uid="uid://cc37235kj4384"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://b5oej1q4h7jvh" path="res://addons/maaacks_game_template/base/scripts/ui_sound_controller.gd" id="1_dmagn"]
|
||||
[ext_resource type="AudioStream" uid="uid://d0iuat23cm2yd" path="res://assets/audio/kenney_ui-audio/mouseclick1.ogg" id="2_7f8wo"]
|
||||
[ext_resource type="AudioStream" uid="uid://skgtkftvx1gn" path="res://assets/audio/kenney_ui-audio/switch20.ogg" id="3_nvwb3"]
|
||||
[ext_resource type="AudioStream" uid="uid://dybdbi28p8a7o" path="res://assets/audio/kenney_ui-audio/switch3.ogg" id="4_e13bv"]
|
||||
[ext_resource type="AudioStream" uid="uid://o3wvigf0nhg" path="res://assets/audio/kenney_ui-audio/switch4.ogg" id="5_42wer"]
|
||||
|
||||
[node name="ProjectUISoundController" type="Node"]
|
||||
script = ExtResource("1_dmagn")
|
||||
button_hovered = ExtResource("2_7f8wo")
|
||||
button_focused = ExtResource("2_7f8wo")
|
||||
button_pressed = ExtResource("3_nvwb3")
|
||||
tab_hovered = ExtResource("2_7f8wo")
|
||||
tab_selected = ExtResource("3_nvwb3")
|
||||
slider_hovered = ExtResource("2_7f8wo")
|
||||
slider_focused = ExtResource("2_7f8wo")
|
||||
slider_drag_started = ExtResource("4_e13bv")
|
||||
slider_drag_ended = ExtResource("5_42wer")
|
||||
line_hovered = ExtResource("2_7f8wo")
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
class_name SceneLoaderClass
|
||||
extends Node
|
||||
class_name SceneLoaderClass
|
||||
## Autoload class for loading scenes with an optional loading screen.
|
||||
|
||||
signal scene_loaded
|
||||
|
||||
@@ -6,11 +6,15 @@ extends Control
|
||||
@export var options_packed_scene : PackedScene
|
||||
@export var credits_packed_scene : PackedScene
|
||||
|
||||
@export var menu_context : GUIDEMappingContext
|
||||
@export var back_action : GUIDEAction
|
||||
|
||||
var options_scene
|
||||
var credits_scene
|
||||
var sub_menu
|
||||
|
||||
func load_game_scene() -> void:
|
||||
GUIDE.disable_mapping_context(menu_context)
|
||||
SceneLoader.load_scene(game_scene_path)
|
||||
|
||||
func new_game() -> void:
|
||||
@@ -73,7 +77,12 @@ func _ready() -> void:
|
||||
_add_or_hide_options()
|
||||
_add_or_hide_credits()
|
||||
_hide_new_game_if_unset()
|
||||
|
||||
_setup_inputs()
|
||||
|
||||
func _setup_inputs() -> void:
|
||||
GUIDE.enable_mapping_context(menu_context)
|
||||
back_action.triggered.connect(_on_back_button_pressed)
|
||||
|
||||
func _on_new_game_button_pressed() -> void:
|
||||
new_game()
|
||||
|
||||
|
||||
@@ -4,7 +4,24 @@ extends OverlaidMenu
|
||||
@export var options_packed_scene : PackedScene
|
||||
@export_file("*.tscn") var main_menu_scene : String
|
||||
|
||||
@export var menu_context : GUIDEMappingContext
|
||||
|
||||
var popup_open : Node
|
||||
var previous_mapping_contexts : Array
|
||||
|
||||
var is_listening_to_inputs = true
|
||||
|
||||
func _enter_tree() -> void:
|
||||
super._enter_tree()
|
||||
previous_mapping_contexts = GUIDE.get_enabled_mapping_contexts()
|
||||
for previous_context in previous_mapping_contexts:
|
||||
GUIDE.disable_mapping_context(previous_context)
|
||||
GUIDE.enable_mapping_context(menu_context)
|
||||
|
||||
func _exit_tree() -> void:
|
||||
GUIDE.disable_mapping_context(menu_context)
|
||||
for previous_context in previous_mapping_contexts:
|
||||
GUIDE.enable_mapping_context(previous_context)
|
||||
|
||||
func close_popup() -> void:
|
||||
if popup_open != null:
|
||||
@@ -29,10 +46,15 @@ func open_options_menu() -> void:
|
||||
var options_scene := options_packed_scene.instantiate()
|
||||
add_child(options_scene)
|
||||
_disable_focus.call_deferred()
|
||||
is_listening_to_inputs = false
|
||||
await options_scene.tree_exiting
|
||||
is_listening_to_inputs = true
|
||||
_enable_focus.call_deferred()
|
||||
|
||||
func _handle_cancel_input() -> void:
|
||||
if not is_listening_to_inputs:
|
||||
return
|
||||
|
||||
if popup_open != null:
|
||||
close_popup()
|
||||
else:
|
||||
@@ -54,6 +76,8 @@ func _ready() -> void:
|
||||
_hide_exit_for_web()
|
||||
_hide_options_if_unset()
|
||||
_hide_main_menu_if_unset()
|
||||
|
||||
back_action.triggered.connect(_handle_cancel_input)
|
||||
|
||||
func _on_restart_button_pressed() -> void:
|
||||
%ConfirmRestart.popup_centered()
|
||||
@@ -79,3 +103,5 @@ func _on_confirm_main_menu_confirmed() -> void:
|
||||
|
||||
func _on_confirm_exit_confirmed() -> void:
|
||||
get_tree().quit()
|
||||
|
||||
|
||||
|
||||
@@ -11,6 +11,10 @@ extends Control
|
||||
process_mode = PROCESS_MODE_INHERIT
|
||||
@export var makes_mouse_visible : bool = true
|
||||
|
||||
@export var back_action : GUIDEAction
|
||||
|
||||
signal menu_closing
|
||||
|
||||
var _initial_pause_state : bool = false
|
||||
var _initial_focus_mode : FocusMode = FOCUS_ALL
|
||||
var _initial_mouse_mode : Input.MouseMode
|
||||
@@ -18,6 +22,7 @@ var _initial_focus_control
|
||||
var _scene_tree : SceneTree
|
||||
|
||||
func close() -> void:
|
||||
menu_closing.emit()
|
||||
_scene_tree.paused = _initial_pause_state
|
||||
Input.set_mouse_mode(_initial_mouse_mode)
|
||||
if is_instance_valid(_initial_focus_control) and _initial_focus_control.is_inside_tree():
|
||||
@@ -29,13 +34,14 @@ func _handle_cancel_input() -> void:
|
||||
close()
|
||||
|
||||
func _unhandled_input(event : InputEvent) -> void:
|
||||
return
|
||||
if event.is_action_pressed("ui_cancel"):
|
||||
_handle_cancel_input()
|
||||
get_viewport().set_input_as_handled()
|
||||
|
||||
func _on_close_button_pressed() -> void:
|
||||
close()
|
||||
|
||||
|
||||
func _enter_tree() -> void:
|
||||
_scene_tree = get_tree()
|
||||
_initial_pause_state = _scene_tree.paused
|
||||
|
||||
@@ -12,3 +12,11 @@ extends OverlaidMenu
|
||||
if menu_scene:
|
||||
var _instance = menu_scene.instantiate()
|
||||
%MenuContainer.add_child(_instance)
|
||||
|
||||
func blocking_close() -> void:
|
||||
get_viewport().set_input_as_handled()
|
||||
super.close()
|
||||
|
||||
func _ready() -> void:
|
||||
back_action.triggered.connect(blocking_close)
|
||||
|
||||
|
||||
@@ -2,17 +2,32 @@ class_name PauseMenuController
|
||||
extends Node
|
||||
|
||||
## Node for opening a pause menu when detecting a 'ui_cancel' event.
|
||||
|
||||
@export var pause_menu_packed : PackedScene
|
||||
@export var focused_viewport : Viewport
|
||||
@export var player : CharacterBody3D
|
||||
|
||||
func _unhandled_input(event : InputEvent) -> void:
|
||||
if event.is_action_pressed("ui_cancel"):
|
||||
if not focused_viewport:
|
||||
focused_viewport = get_viewport()
|
||||
var _initial_focus_control = focused_viewport.gui_get_focus_owner()
|
||||
var current_menu = pause_menu_packed.instantiate()
|
||||
get_tree().current_scene.call_deferred("add_child", current_menu)
|
||||
await current_menu.tree_exited
|
||||
if is_inside_tree() and _initial_focus_control:
|
||||
_initial_focus_control.grab_focus()
|
||||
@export_group("Inputs")
|
||||
@export var pause:GUIDEAction
|
||||
|
||||
var menu_already_open = false
|
||||
|
||||
func _ready() -> void:
|
||||
pause.triggered.connect(on_input_pause)
|
||||
|
||||
func on_input_pause():
|
||||
if menu_already_open:
|
||||
return
|
||||
|
||||
menu_already_open = true
|
||||
if not focused_viewport:
|
||||
focused_viewport = get_viewport()
|
||||
var _initial_focus_control = focused_viewport.gui_get_focus_owner()
|
||||
var current_menu = pause_menu_packed.instantiate()
|
||||
|
||||
current_menu.menu_closing.connect(player.LoadSettings)
|
||||
|
||||
get_tree().current_scene.call_deferred("add_child", current_menu)
|
||||
await current_menu.tree_exited
|
||||
menu_already_open = false
|
||||
if is_inside_tree() and _initial_focus_control:
|
||||
_initial_focus_control.grab_focus()
|
||||
|
||||
13
addons/shaker/assets/Pause.svg
Normal 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 |
43
addons/shaker/assets/Pause.svg.import
Normal 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
|
||||
12
addons/shaker/assets/Play.svg
Normal 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 |
43
addons/shaker/assets/Play.svg.import
Normal 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
|
||||
37
addons/shaker/assets/ShaderPreset.svg.import
Normal 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
|
||||
37
addons/shaker/assets/ShakeTypeBase.svg.import
Normal 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
|
||||
15
addons/shaker/assets/Shaker.svg
Normal 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 |
43
addons/shaker/assets/Shaker.svg.import
Normal 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
|
||||
15
addons/shaker/assets/Shaker2D.svg
Normal 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 |
43
addons/shaker/assets/Shaker2D.svg.import
Normal 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
|
||||
15
addons/shaker/assets/Shaker3D.svg
Normal 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 |
43
addons/shaker/assets/Shaker3D.svg.import
Normal 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
|
||||
28
addons/shaker/assets/ShakerEmitter.svg
Normal 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 |
43
addons/shaker/assets/ShakerEmitter.svg.import
Normal 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
|
||||
28
addons/shaker/assets/ShakerEmitter2D.svg
Normal 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 |
43
addons/shaker/assets/ShakerEmitter2D.svg.import
Normal 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
|
||||
35
addons/shaker/assets/ShakerEmitter3D.svg
Normal 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 |
43
addons/shaker/assets/ShakerEmitter3D.svg.import
Normal 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
|
||||
74
addons/shaker/assets/ShakerPreset.svg
Normal 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 |
43
addons/shaker/assets/ShakerPreset.svg.import
Normal 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
|
||||
74
addons/shaker/assets/ShakerPreset2D.svg
Normal 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 |
43
addons/shaker/assets/ShakerPreset2D.svg.import
Normal 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
|
||||
87
addons/shaker/assets/ShakerPreset3D.svg
Normal 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 |
43
addons/shaker/assets/ShakerPreset3D.svg.import
Normal 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
|
||||
50
addons/shaker/assets/ShakerReceiver.svg
Normal 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 |
43
addons/shaker/assets/ShakerReceiver.svg.import
Normal 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
|
||||
53
addons/shaker/assets/ShakerReceiver2D.svg
Normal 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 |
43
addons/shaker/assets/ShakerReceiver2D.svg.import
Normal 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
|
||||
56
addons/shaker/assets/ShakerReceiver3D.svg
Normal 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 |
43
addons/shaker/assets/ShakerReceiver3D.svg.import
Normal 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
|
||||
16
addons/shaker/assets/ShakerType.svg
Normal 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 |
43
addons/shaker/assets/ShakerType.svg.import
Normal 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
|
||||
16
addons/shaker/assets/ShakerType2D.svg
Normal 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 |
43
addons/shaker/assets/ShakerType2D.svg.import
Normal 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
|
||||
16
addons/shaker/assets/ShakerType3D.svg
Normal 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 |
43
addons/shaker/assets/ShakerType3D.svg.import
Normal 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
|
||||
12
addons/shaker/assets/Stop.svg
Normal 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 |
43
addons/shaker/assets/Stop.svg.import
Normal 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
40
addons/shaker/assets/icon.png.import
Normal 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
|
||||
112
addons/shaker/data/BaseShakerType.gd
Normal 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)
|
||||
1
addons/shaker/data/BaseShakerType.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://d2i321te0ny64
|
||||
53
addons/shaker/data/ShakerPresetBase.gd
Normal 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))
|
||||
1
addons/shaker/data/ShakerPresetBase.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://cveqkhn5t8vng
|
||||
24
addons/shaker/data/ShakerProperty.gd
Normal 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
|
||||
1
addons/shaker/data/ShakerProperty.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://bd8eceas8jvyl
|
||||
46
addons/shaker/data/Single/BaseShakerType1D.gd
Normal 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;
|
||||
1
addons/shaker/data/Single/BaseShakerType1D.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://bhqlklbhcxfgf
|
||||
43
addons/shaker/data/Single/ShakerTypeAudioBus1D.gd
Normal 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
|
||||
1
addons/shaker/data/Single/ShakerTypeAudioBus1D.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://dshti5xd41w07
|
||||
42
addons/shaker/data/Single/ShakerTypeBrownianShake1D.gd
Normal 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
|
||||
@@ -0,0 +1 @@
|
||||
uid://62yumjskyeow
|
||||
41
addons/shaker/data/Single/ShakerTypeCurve1D.gd
Normal 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
|
||||
1
addons/shaker/data/Single/ShakerTypeCurve1D.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://dadkdm3tvmuqq
|
||||
32
addons/shaker/data/Single/ShakerTypeNoiseShake1D.gd
Normal 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
|
||||
1
addons/shaker/data/Single/ShakerTypeNoiseShake1D.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://bdrk4rkut1y3l
|
||||
30
addons/shaker/data/Single/ShakerTypeRandom1D.gd
Normal 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
|
||||
1
addons/shaker/data/Single/ShakerTypeRandom1D.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://buor2ix0dmwk2
|
||||
41
addons/shaker/data/Single/ShakerTypeSawtoothWave1D.gd
Normal 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
|
||||
@@ -0,0 +1 @@
|
||||
uid://tftoajmajyfg
|
||||
32
addons/shaker/data/Single/ShakerTypeSineWave1D.gd
Normal 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
|
||||
1
addons/shaker/data/Single/ShakerTypeSineWave1D.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://vvwsdrpmw7w4
|
||||
35
addons/shaker/data/Single/ShakerTypeSquareWave1D.gd
Normal 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)
|
||||
1
addons/shaker/data/Single/ShakerTypeSquareWave1D.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://bwuxn8yt7jiwy
|
||||
47
addons/shaker/data/Vector2/BaseShakerType2D.gd
Normal 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
|
||||
1
addons/shaker/data/Vector2/BaseShakerType2D.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://chp1jfq2fdtbm
|
||||
94
addons/shaker/data/Vector2/ShakerPreset2D.gd
Normal 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
|
||||
1
addons/shaker/data/Vector2/ShakerPreset2D.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://ieocwh32dyx1
|
||||
45
addons/shaker/data/Vector2/ShakerTypeAudioBus2D.gd
Normal 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
|
||||
1
addons/shaker/data/Vector2/ShakerTypeAudioBus2D.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://4msbbvpnv85g
|
||||
44
addons/shaker/data/Vector2/ShakerTypeBrownianShake2D.gd
Normal 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
|
||||
@@ -0,0 +1 @@
|
||||
uid://c2p5nhqgceojd
|
||||
60
addons/shaker/data/Vector2/ShakerTypeCurve2D.gd
Normal 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
|
||||
1
addons/shaker/data/Vector2/ShakerTypeCurve2D.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://dd6hr5hjnra0i
|
||||
33
addons/shaker/data/Vector2/ShakerTypeNoiseShake2D.gd
Normal 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
|
||||
1
addons/shaker/data/Vector2/ShakerTypeNoiseShake2D.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://rytryaspugdk
|
||||
31
addons/shaker/data/Vector2/ShakerTypeRandom2D.gd
Normal 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
|
||||
1
addons/shaker/data/Vector2/ShakerTypeRandom2D.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://c7jr8ltct1k17
|
||||
42
addons/shaker/data/Vector2/ShakerTypeSawtoothWave2D.gd
Normal 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
|
||||
@@ -0,0 +1 @@
|
||||
uid://x16d6et41iut
|
||||
33
addons/shaker/data/Vector2/ShakerTypeSineWave2D.gd
Normal 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
|
||||
1
addons/shaker/data/Vector2/ShakerTypeSineWave2D.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://drm7drd6f4t4x
|
||||
36
addons/shaker/data/Vector2/ShakerTypeSquareWave2D.gd
Normal 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)
|
||||
1
addons/shaker/data/Vector2/ShakerTypeSquareWave2D.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://btxrpjbvdcl1f
|
||||
48
addons/shaker/data/Vector3/BaseShakerType3D.gd
Normal 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
|
||||
1
addons/shaker/data/Vector3/BaseShakerType3D.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://0tu2q57qqu4s
|
||||
103
addons/shaker/data/Vector3/ShakerPreset3D.gd
Normal 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]
|
||||
1
addons/shaker/data/Vector3/ShakerPreset3D.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://mlwdmecg12xd
|
||||