Compare commits

...

501 Commits

Author SHA1 Message Date
Jonathan 628da80ed3 Merge pull request 'feature/entity_rework' (#52) from feature/entity_rework into develop
2 months ago
Katharina Ziolkowski 0dfbd73978 Reverted ItemOnGround to make everything compile again
2 months ago
Katharina Ziolkowski 8a93b00e72 Merge branch 'develop' into feature/entity_rework
2 months ago
Katharina Ziolkowski ba7d550c3f Implemented Save and Load functionality
2 months ago
Katharina Ziolkowski b65a3bbd6d Managed the freeing of entityplacers. Also cleaned up EntityManager
2 months ago
Katharina Ziolkowski bcbc074c86 First adjustments to the Entity System to make it work with different types
2 months ago
jonathan 745f54b375 WIP
3 months ago
Katharina Ziolkowski 2c8a024528 Merge pull request 'feature/build_0_7' (#49) from feature/build_0_7 into develop
3 months ago
Katharina Ziolkowski 76eb408a40 Merge branch 'develop' into feature/build_0_7
3 months ago
Katharina Ziolkowski ff143f07e7 deleted unused autosave file
3 months ago
Jonathan b50ca5b919 Merge pull request 'einfügen von Gesichtsausdrücken für Vesna' (#46) from Vesna_Gesichtsausdrücke_einfügen_ into develop
3 months ago
jonathan 59d313d97d Added basic entity scripts
4 months ago
Jonathan 9032272599 Merge pull request 'BlobFighter TargetSelection ColliderShape2D Transform angepasst' (#42) from Enemy_selection_overlap into develop
4 months ago
JoansLink00 a2ef3bfaf0 Window angepasst
4 months ago
JoansLink00 1ab1071246 HoverIndicator off
4 months ago
Katharina Ziolkowski b0ee8c4c58 fixed path strings in scene transitions and added disclaimer and credits back into the flow
4 months ago
Katharina Ziolkowski 522fdfa365 Added fightworld background and cat dialogue
4 months ago
Katharina Ziolkowski 4f6c5ab9c1 fixed some layering issues in beetroot scene and added a mock convo with the domovoi
4 months ago
Katharina Ziolkowski 11e24e249e Fixed Field outline not disappearing when switching tools
4 months ago
Katharina Ziolkowski f3080df4b7 moved fence door collision shape up to reduce unwanted triggering
4 months ago
Katharina Ziolkowski f6e83e7fef Added event handlers in Fieldbehaviour to react to watering can state changes
4 months ago
Katharina Ziolkowski 3bdc8cd03f Deactivated harvestable plant on spawn
4 months ago
Katharina Ziolkowski f862827d98 Removed Print statements
4 months ago
Katharina Ziolkowski a401cbe5b9 🐛 fixed field activator self-deactivating on load bug
4 months ago
Katharina Ziolkowski 48660b167c Merge branch 'feature/bugfixes_polish_II' into feature/build_0_7
4 months ago
Jonathan e5b2b8b8ab Merge pull request 'Connect farming and fighting by making them codependent' (#44) from feature/farm_fight_loop into develop
4 months ago
Jonathan 2fa8aa9fbc Merge pull request 'Vesna resets to bed after death' (#47) from Vesna_resets_to_bed_after_dead into develop
4 months ago
Jonathan 6deb6e29fd Merge pull request 'Made attack selection only select alive enemies' (#45) from bug/attack_dead_enemy into develop
4 months ago
Jonathan edc133749f Merge pull request 'Randomized who starts the fight' (#41) from randomise_fight_start into develop
4 months ago
jonathan 5f75bde317 💄 Made heal button show how many beats are left
4 months ago
jonathan 7310bfbf6e Added flying beet to the ui when used
4 months ago
jonathan fef8380a57 When beetroot is in inventory the player can heal
4 months ago
jonathan f42c2c86b1 Defeated enemygroups now drop a beet_seed
4 months ago
Katharina Ziolkowski f1a2e6166b 🐛 fixed field setup in beet scene
4 months ago
Katharina Ziolkowski c0111e4c17 🐛 fixed rake triggering field interaction + watering can interaction
4 months ago
JoansLink00 2ed9dbbc52 Vesna resets to bed after death
4 months ago
Katharina Ziolkowski 4f660c4af8 🐛 fixed rake still activating field outlines bug
4 months ago
Katharina Ziolkowski 13fcf059e9 Added trash object savestate
4 months ago
Katharina Ziolkowski 7f58aeae76 removed GD.Prints
4 months ago
JoansLink00 3456340bb7 einfügen von Gesichtsausdrücken für Vesna
4 months ago
Katharina Ziolkowski 30750d2e3c ♻️ removed planted state from Fieldstate because it didn't make any sense.
4 months ago
Katharina Ziolkowski 950731b225 🐛 Fixed ObjectNotDisposedException on Well in beetroot scene
4 months ago
Katharina Ziolkowski feb591f56a ♻️ modified changed path in start scene
4 months ago
Katharina Ziolkowski aac0992590 ♻️ scene name refactoring part two: fixing scene transition paths in scenes
4 months ago
Katharina Ziolkowski 21cf2d1a6a ♻️ Renamed scenes
4 months ago
Katharina Ziolkowski 3f5cfed477 removed test scene
4 months ago
Katharina Ziolkowski 64c15c2e63 removed print statements
4 months ago
Katharina Ziolkowski a98c842ee0 🐛 Fixed field interaction bug
4 months ago
Katharina Ziolkowski abed751d29 🚧 WIP trying to make fields have outlines again
4 months ago
Katharina Ziolkowski ce113e16da 🐛 planting seeds works again
4 months ago
Katharina Ziolkowski c55e527bf4 Merge branch 'develop' into feature/bugfixes_polish_II
4 months ago
Katharina Ziolkowski c509a52001 🚧 Basic interaction works now too
4 months ago
Katharina Ziolkowski 9e0e87ef17 🚧 WIP detection works now
4 months ago
Katharina Ziolkowski 7ffbb8e68d pulled ceiling lower in kitchen scene
4 months ago
jonathan 6375383373 🐛Made attack selection only select alive enemies
4 months ago
Jonathan b810ea1d9f Merge pull request 'Kampf Tooltip wird ausgeblendet' (#43) from Kampf_Tooltip into develop
4 months ago
Katharina Ziolkowski b232cb31c3 🚧 interaction kinda sorta works now, still needs tweaking
4 months ago
Katharina Ziolkowski a6260efc07 Merge branch 'develop' into feature/bugfixes_polish_II
4 months ago
Katharina Ziolkowski 3d19509826 Merge pull request 'feature/art_update' (#40) from feature/art_update into develop
4 months ago
Katharina Ziolkowski 113dd0820f Merge branch 'develop' into feature/art_update
4 months ago
Katharina Ziolkowski 7e148cd9fe 🐛 fixed Ysorting issues in fightworld
4 months ago
Katharina Ziolkowski 59489e4a17 Made common room into hub area and ajdusted Yeli dialogue
4 months ago
JoansLink00 fc00559483 Kampf Tooltip wird ausgeblendet
4 months ago
Katharina Ziolkowski 982178d89a 🐛 fixed sunflower parallaxing to *perfection*
4 months ago
JoansLink00 09f55d3aa7 BlobFighter TargetSelection ColliderShape2D Transform angepasst
4 months ago
Katharina Ziolkowski c89685c936 🐛 fixed colliders in kitchen
4 months ago
Katharina Ziolkowski 79108fbe15 🐛 fixed parallax problems
4 months ago
Katharina Ziolkowski 9499c27444 🚧 WIP: trying to rework the detection system (it fails)
4 months ago
Jonathan 0434667c22 Merge pull request 'feature/bugfixes_And_Polish' (#39) from feature/bugfixes_And_Polish into develop
4 months ago
jonathan a736adaafb Randomized who starts the fight
4 months ago
Katharina Ziolkowski bef54420e4 darkened fightworld room to make it look more like night
4 months ago
Katharina Ziolkowski 9267278ce8 tried and failed at fixing all layering issues in beet scene
4 months ago
Katharina Ziolkowski 9ba83dfddd Made stove interactable
4 months ago
Katharina Ziolkowski 7c5ba2d6bb Added kitchen room
4 months ago
Katharina Ziolkowski 0c5fc26d2f 🍱 changed forest background in first farming scene
4 months ago
Katharina Ziolkowski e51e0a24d2 🐛 fixed dialogic bugs and moved trash items out of the way
4 months ago
Katharina Ziolkowski 7bb523f9e7 🐛 harvested plants don't come back on scene reload
4 months ago
Katharina Ziolkowski a3651d6268 deleted unused code
4 months ago
Katharina Ziolkowski 0892a13e66 🐛 fixed beet harvesting
4 months ago
Katharina Ziolkowski 61caa6eea6 Merge branch 'refs/heads/develop' into feature/bugfixes_And_Polish
4 months ago
Katharina Ziolkowski 2ec693eed2 Merge pull request 'Added visual feedback when hitting a region in the minigame' (#37) from minigame_hit_feedback into develop
4 months ago
Katharina Ziolkowski b7d1f9d8d5 Merge branch 'develop' into minigame_hit_feedback
4 months ago
Katharina Ziolkowski 12bf632932 Merge pull request 'Added randomnes into attack minigame' (#36) from minigame_variation into develop
4 months ago
Katharina Ziolkowski 0d985e5bf6 Merge branch 'develop' into minigame_variation
4 months ago
Katharina Ziolkowski e86b3e81dd Merge pull request 'fighting minigame has no more Overlap with Vesna' (#38) from fighting_minigame_fix_overlap_with_Vesna into develop
4 months ago
JoansLink00 14a73daa75 fighting minigame has no more Overlap with Vesna
4 months ago
Katharina Ziolkowski 996470f5e6 🐛 fixed beets double spawning bug
4 months ago
Katharina Ziolkowski 1dd4a694d0 Merge pull request 'feature/day_and_night' (#34) from feature/day_and_night into develop
4 months ago
Katharina Ziolkowski 9b8933e698 ♻️ removed no longer used method
4 months ago
Katharina Ziolkowski 9f4cda0e6d ♻️ Replaced _ready mit _entertree (while deferring)
4 months ago
Katharina Ziolkowski 1c865730a3 🚚 renamed directory
4 months ago
jonathan aa4f1c55b5 Added visual feedback when hitting a region in the minigame
4 months ago
jonathan aad6c44567 Added randomnes into attack minigame
4 months ago
jlink 8e9359d6f8 Merge pull request 'fight log no longer visible and door interactable' (#35) from remove_fightlog into develop
4 months ago
JoansLink00 7696271727 fight log no longer visible and door interactable
4 months ago
Katharina Ziolkowski 229dd04bc1 Made bed interaction count up the days and verified that you can now play a full loop
4 months ago
Katharina Ziolkowski 8407ce4c1f Added Tab button mapping to inventory and fixed label descriptor
4 months ago
Katharina Ziolkowski b9a52dadcc fields can now seperate "today" from any other day
4 months ago
Katharina Ziolkowski 0ecae5a4d9 watering can fillstate is saving and loading
4 months ago
Katharina Ziolkowski c288af296c made plants only grow when watered
4 months ago
Katharina Ziolkowski e65330786e 🐛 fixed dayplanted confusion on plants
4 months ago
Katharina Ziolkowski c7a4aea70b Starting a new game resets the inventory now
5 months ago
Katharina Ziolkowski b6caf4dbed 🐛 Fixed ObjectDisposedException Errors on plant/field and InventorySlot
5 months ago
Katharina Ziolkowski 51a145a994 🚚 renamed player prefab to Vesna
5 months ago
Katharina Ziolkowski 41b30a4274 🚧 days are counted, plants know which day it is, but harvestables are still broken
5 months ago
Katharina Ziolkowski a1fb71119f 🚧 WIP binding the plant growth to the day count in the savefile
5 months ago
Katharina Ziolkowski 67d5b67c21 💄 Added new game button that resets the savegame (also did some layouting)
5 months ago
Katharina Ziolkowski 684131f495 Make SaveableVariableNodes and a simple cheat to count up days
5 months ago
Katharina Ziolkowski f32033cb5f Merge pull request 'Made the fight world completable' (#33) from feature/night_to_day into develop
5 months ago
Katharina Ziolkowski 1ad463ccb0 🔥 removed unused code
5 months ago
Katharina Ziolkowski 451ea82706 Merge pull request 'feature/save_and_loaaaaaad' (#32) from feature/save_and_loaaaaaad into develop
5 months ago
jonathan 3f4dfccbc6 🐛Make the FightWorld reset when sleeping in the bed
5 months ago
jonathan 3c370e30a0 Added end of night scene
5 months ago
jonathan 073a74bb22 🚸Rebalanded fight to make it more likely to win
5 months ago
Katharina Ziolkowski 75e4bdd7fd ♻️ removed Print statements
5 months ago
Katharina Ziolkowski f37f7c7ceb added saving and loading support to collectable inventory items
5 months ago
Katharina Ziolkowski 70383fc16e Implemented load check for unique inventory items
5 months ago
Katharina Ziolkowski 88f3c90eec ♻️ inventory works
5 months ago
Katharina Ziolkowski 9d818e5079 ♻️ refactored field code to work with the new id system
5 months ago
Katharina Ziolkowski e9cd4ce276 ♻️ reworked and debugged the SaveSystem. Removed unnecessary scene reference.
5 months ago
Katharina Ziolkowski 638ebaff46 📝 Added documentation
5 months ago
Katharina Ziolkowski b4013b1ff2 :feature: made GetComponent nullable in NodeExtension
5 months ago
Katharina Ziolkowski c695115a4a :feature: implemented saving and loading for ducks, 🔥 removed save implementation from interactionArea
5 months ago
Katharina Ziolkowski c68727aebe 🚧 intermediate state with homework
5 months ago
Katharina Ziolkowski bee6249c6f 🚧 implemented interaction area loading
5 months ago
Katharina Ziolkowski fda2b95b38 Savesystem rework
5 months ago
Katharina Ziolkowski 4bbaab1a2a Created ISaveable interface and made existing saveable classes inherit from it.
5 months ago
Katharina Ziolkowski 4ed6f4e7d9 Reworked existing save system for user data: Made path steam-compatible, added Versioning and try/catch to save
5 months ago
Katharina Ziolkowski ce29711614 ❇️ Added Settings classes to save and load local configurations
5 months ago
Katharina Ziolkowski 2947011a1a working intermediate state of the save system
5 months ago
Katharina Ziolkowski 2a4425b9db Added Save and load support to the inventory
5 months ago
Katharina Ziolkowski 72079044bd 🚧 WIP implementing save and load for the inventory
5 months ago
Jonathan b205e45096 Merge pull request 'feature/farming_bugfixes_and_magic_word' (#30) from feature/farming_bugfixes_and_magic_word into develop
5 months ago
Katharina Ziolkowski d17e58bcd3 🐛 removed stub code and unused signal from FarmingControls2D
5 months ago
Katharina Ziolkowski 02cbc761bc reverted changed start scene in project godot
5 months ago
Jonathan fb6a42a874 Merge pull request 'Added damage fly number' (#29) from feature/damage_feedback into develop
5 months ago
Jonathan 4bd433b1b0 Merge pull request 'Import changes lol' (#31) from feature/import_changes into develop
5 months ago
Katharina Ziolkowski c02a2d1383 Import changes lol
5 months ago
Katharina Ziolkowski c5f8b157ad 🐛 changed savegame location to user-space instead of project-space
5 months ago
Katharina Ziolkowski 093546f3e4 Merge branch 'develop' into feature/farming_bugfixes_and_magic_word
5 months ago
Katharina Ziolkowski c9f97c2571 📝 added documentation comments
5 months ago
Katharina Ziolkowski 6613e54658 Implemented Loading function on fields and plants
5 months ago
Katharina Ziolkowski 3fcb34c04d 🚧 saving of field parameters as json implemented
5 months ago
Katharina Ziolkowski 5cc65bc3f4 🔧 filled up main outdoor scene with fields
5 months ago
Katharina Ziolkowski 443741f5f1 🐛 added preset fields to main outdoor scene and made them farmable
5 months ago
Katharina Ziolkowski 554a319428 🚧 farming rework part 2: you can now kinda "create" fields
5 months ago
jonathan 3bb4fcd129 Added damage fly number
5 months ago
Katharina Ziolkowski 4705d1ee2f 🐛 can no longer water fields when watering can is empty
5 months ago
Katharina Ziolkowski b00b466045 🚧 watering fields kinda works now
5 months ago
Jonathan 0507f1ee3d Merge pull request 'Sleeping in bed now loads the new fight world scene' (#27) from feature/integrate_new_fight into develop
5 months ago
Jonathan 651ec2cc68 Merge pull request 'Fixed enemy groups show in different spots and even when all enemies are dead' (#28) from bug/enemy_group into develop
5 months ago
Katharina Ziolkowski d51cc461f7 🚧 made preplaced fields show plants
5 months ago
jonathan 54bfc3c021 🐛 Fixed enemy groups show in different spots and even when all enemies are dead
5 months ago
Katharina Ziolkowski 55f0d2a77e 🚧 reworked farming system to work with indices instead of positions
5 months ago
jonathan 1531ffbf8d Sleeping in bed now loads the new fight world scene
5 months ago
jonathan 74096f2c71 🐛Fixed sprite outline fallback
5 months ago
Katharina Ziolkowski 97dcadf07a Added sceneprovider reference to field scripts and made them register on ready. Also added VariableSetter.
5 months ago
Jonathan 1c5d776a3a Merge pull request 'Fixed wrong dependency' (#26) from bug/scene_dependency into develop
5 months ago
jonathan c814d7606d 🐛Fixed wrong dependency
5 months ago
Jonathan e1a61fb1e2 Merge pull request 'made dead fighters shrink to telegraph to the player that they are dead' (#25) from feature/dead_squash into develop
5 months ago
jonathan edbd4a182b 🎨Removed comment
5 months ago
Jonathan a9446ec770 Merge pull request '🐛 Fixed fighters keep fighting at 0 hp' (#24) from bug/enemy_die into develop
5 months ago
Katharina Ziolkowski fe1dd2bcc1 Added inventorylistener for watering can
5 months ago
Katharina Ziolkowski 6e833a0735 added InventoryListener and made field interaction area activate only when the right item (seed) is in the inventory
5 months ago
Katharina Ziolkowski c52bfc8017 🐛 fixed field outline
5 months ago
Katharina Ziolkowski 58c2be1db8 plants no longer grow when just interacting with them
5 months ago
Katharina Ziolkowski c7c6e184d6 🐛 adjusted field positions
5 months ago
Katharina Ziolkowski 6a2355cf97 🐛 fixed never more than 10 fields bug
5 months ago
Katharina Ziolkowski 1d7f656ec4 🚧 WIP trying to fix a bug that won't let me have more than 9 fields. Dont ask me why.
5 months ago
Katharina Ziolkowski 1c5b585b3d 🔥 removed print statements used for debugging
5 months ago
Katharina Ziolkowski f1b980cdb6 🐛 field creation at the same spot no longer possible, also watering works now.
5 months ago
Katharina Ziolkowski 8b77ca9bc5 ♻️ migrated the InteractionAreas currently used to the new format and removed the old code
5 months ago
jonathan f51275ccc0 made dead fighters shrink to telegraph to the player that they are dead
5 months ago
Katharina Ziolkowski 8d616735f4 🚚 moved Animationfix script
5 months ago
jonathan 50b2c04cb4 🐛 Fixed fighters keep fighting at 0 hp
5 months ago
Katharina Ziolkowski 66848af8bf Merge branch 'develop' into feature/farming_bugfixes_and_magic_word
5 months ago
Jonathan e864c62a3a Merge pull request 'Fight rework premature merge' (#22) from feature/fight_rework into develop
5 months ago
jonathan f27f69c15f 🐛 Rebase fixing
5 months ago
jonathan 21b361f9d7 🎨 Live review changes
5 months ago
jonathan 83dc6bfd56 ♻️ Implemented FightersFormation to keep track of the fight entered state of the fighters
5 months ago
jonathan 0de3bcae22 ♻️Code cleanup
5 months ago
jonathan 3326bde40c 🐛Exiting fight happening when one side wins
5 months ago
jonathan 83c9dfc945 Added theme-based region colors
5 months ago
jonathan cd235248c6 Added minigame label for each region
5 months ago
jonathan 8bb1c22549 Added minigame to attack action
5 months ago
jonathan 8624e2aea8 Added minigame
5 months ago
jonathan fef1bcc3b6 cap health at minimum 0
5 months ago
jonathan f4d8ed87e2 Added blob attack action
5 months ago
jonathan 1f227f70a7 Added basic health bar
5 months ago
jonathan 9bf25640f6 Added basic action animation
5 months ago
jonathan 0e315396c9 Made fight fightable
5 months ago
jonathan f27dd199b8 Fight happening base setup
5 months ago
jonathan fd0e631b1f Bootstrap fight system
5 months ago
Katharina Ziolkowski 6ba26c360d 🚧 reworking Fieldservice
6 months ago
Katharina Ziolkowski 63fd81e54d 🔥 removed no longer needed scene call group
6 months ago
Katharina Ziolkowski b54f784d51 🎨 Replaced pickup animation group call with event
6 months ago
Katharina Ziolkowski 6194988bf0 🎨 removed plant growing call group and replaced it with an event call. Made FarmingAnimation play on event.
6 months ago
Katharina Ziolkowski 759933c1cd Merge pull request 'feature/detection_cross' (#21) from feature/detection_cross into develop
6 months ago
Katharina Ziolkowski af8807610d :bug increased interaction area size for fence gates
6 months ago
Katharina Ziolkowski 02b6584e44 🐛 fixed ObjectDisposedException from the Inventory when switching scenes.
6 months ago
Katharina Ziolkowski e202534c6b 🐛 Vesnas Namensschild sieht nicht richtig aus FIXED
6 months ago
Katharina Ziolkowski 1f13f3ea51 Merge branch 'develop' into feature/detection_cross
6 months ago
Katharina Ziolkowski 8b7afbcab6 Merge remote-tracking branch 'origin/feature/detection_cross' into feature/detection_cross
6 months ago
Jonathan afce4ad0b9 Merge pull request 'feature/events' (#19) from feature/events into develop
6 months ago
Katharina Ziolkowski 32ac007256 🎨 Exchanged Quest post it with ui sprite
6 months ago
Katharina Ziolkowski d45deeb7ed 🔧 adjusted seed pickup positions and indoor collider sizes
6 months ago
Katharina Ziolkowski 9e21b07271 🍱 Adjusted colliders in farm_outside scene and reactivated ground collider on Vesna
6 months ago
Katharina Ziolkowski f94c2d0a50 📝🔥🔨
6 months ago
Katharina Ziolkowski 84b8938d1f 🚧 WIP first setup completed (still buggy!)
6 months ago
Katharina Ziolkowski 8d421b58ec Implemented dialogue box design as described in mockups
6 months ago
Katharina Ziolkowski ebe99c5f22 💄 Added new fonts and increased textbox size. Also added border line.
6 months ago
Katharina Ziolkowski b32b483d09 upgraded project to 4.5
6 months ago
Katharina Ziolkowski c6e9bc9336 scene updates after undoing changes to interactionArea
6 months ago
Katharina Ziolkowski 5b0fed7816 sound autoimports
6 months ago
Nao 3bdd5aa873 SFX for Wolf added + redone reverb of footsteps (but not sure it worked?! - possible new upload/replacement possible)
6 months ago
Katharina Ziolkowski 3fe79f2fd8 Added VariableGetter functionality and some Variable setting components. Also added them to test scene.
6 months ago
Katharina Ziolkowski 8c1157c26e 🔥 removed indexed RaiseEvent-Call from EventRaiser
6 months ago
Katharina Ziolkowski c96e6da78e Separated events from variables and adjusted test scene
6 months ago
Katharina Ziolkowski 0fc1760b70 Merge pull request 'feature/animations_update' (#17) from feature/animations_update into develop
6 months ago
Katharina Ziolkowski 90b8dda16a Merge branch 'feature/dialogic_style_rework' into feature/detection_cross
6 months ago
Katharina Ziolkowski ecff43d5c3 Merge branch 'develop' into feature/detection_cross
6 months ago
Jonathan 40b8c022fe Merge pull request 'feature/showcase_bugfixing_kathi_partII' (#16) from feature/showcase_bugfixing_kathi_partII into develop
6 months ago
Katharina Ziolkowski e1b1a2f447 🔧 adjusted seed pickup positions and indoor collider sizes
6 months ago
Katharina Ziolkowski 2d4e853ec8 🍱 Adjusted colliders in farm_outside scene and reactivated ground collider on Vesna
6 months ago
Katharina Ziolkowski 8f097de476 📝🔥🔨
6 months ago
Katharina Ziolkowski 109573fb1b 🎨 Exchanged Quest post it with ui sprite
6 months ago
Katharina Ziolkowski 0e55394699 🚧 WIP first setup completed (still buggy!)
6 months ago
Katharina Ziolkowski b1335d4b00 Merge branch 'feature/dialogic_style_rework' into feature/detection_cross
6 months ago
Katharina Ziolkowski 078e26e868 Implemented dialogue box design as described in mockups
6 months ago
Katharina Ziolkowski ffebe10593 💄 Added new fonts and increased textbox size. Also added border line.
6 months ago
Katharina Ziolkowski 4c8406ba97 upgraded project to 4.5
6 months ago
Katharina Ziolkowski 080ebaae47 removed redundant import statement
6 months ago
Katharina Ziolkowski 5cf250b295 Added randomizer class for certain types of EventResources
6 months ago
Katharina Ziolkowski ef56f79d5c Added event payload and Valuechange-handling
6 months ago
Katharina Ziolkowski 5bcbee8865 created test scene and removed event test elements from start scene
6 months ago
Katharina Ziolkowski a74abe684b Godot upgrade to 4.5
6 months ago
Katharina Ziolkowski a593be8273 📝 added documentation and improved event scope
6 months ago
Katharina Ziolkowski 1e004b62b8 Implemented first version of EventResources
6 months ago
Katharina Ziolkowski 5fc7b3d563 scene updates after undoing changes to interactionArea
6 months ago
Katharina Ziolkowski d4892e1aa4 sound autoimports
6 months ago
Katharina Ziolkowski e0ea5ef5be Merge branch 'feature/sounds_update' into feature/bugfixing_kathi_partIII
6 months ago
Katharina Ziolkowski 02ff401273 Merge branch 'feature/animations_update' into feature/bugfixing_kathi_partIII
6 months ago
Katharina Ziolkowski c3e78b5db2 Merge remote-tracking branch 'origin/Nao's-Sounds' into feature/sounds_update
6 months ago
Katharina Ziolkowski 09b2baab0a Merge remote-tracking branch 'origin/Animations' into feature/animations_update
6 months ago
Katharina Ziolkowski d6a2b586e4 🐛 fixed ducks counting bug
7 months ago
Katharina Ziolkowski 936983e14f 💄 updated dialogic style to make it clearer who is talking and have vesna always on the left side
7 months ago
Katharina Ziolkowski e73f13d7d4 🎨 💄 Created art template for farm plants and reworked existing plant prefabs and inventory resources
7 months ago
Katharina Ziolkowski 0713e334b3 Fixed InventoryInstance behaviour
7 months ago
Katharina Ziolkowski c56f654751 Set up second garden with beetroot, built transition from yard and back
7 months ago
Katharina Ziolkowski 1f88f9b4b5 Added beetroot as growable plant
7 months ago
Katharina Ziolkowski 06fd80f762 grass layering fix
7 months ago
Katharina Ziolkowski 2cb605261e Fixed Tomato farming (again)
7 months ago
Katharina Ziolkowski 975dd45c94 fixed item repository bug
7 months ago
Katharina Ziolkowski d1a8ff0cbf WIP reworking the item repository
7 months ago
Felix Paul da7cd2f6f2 Small update
8 months ago
Katharina Ziolkowski 9f50e1d293 WIP trying to implement pickup sounds
8 months ago
Katharina Ziolkowski 652cac4232 Added typing sounds to dialogic characters
8 months ago
Katharina Ziolkowski e44e06bace Added Footsteps SFX
8 months ago
Katharina Ziolkowski 89313fd484 Merge remote-tracking branch 'origin/Nao's-Sounds' into feature/showcase_bugfixing_kathi_partII
8 months ago
Katharina Ziolkowski eeb56fd7ad Added possibility to deactivate an interactionarea if there is no more timelines to play
8 months ago
Katharina Ziolkowski 871e1856f1 Tools get deactivated from animation when switching to an empty slot in the inventory. Also fixed layering (AGAIN)
8 months ago
Katharina Ziolkowski 378bf45c49 Implemented PR feedback + made sure initial farming quests run smoothly
8 months ago
Katharina Ziolkowski f6e0c4e615 minor scene fixes
8 months ago
Katharina Ziolkowski 6ae877f2ab Implemented first version of an interactable area that reacts to inventory selection
8 months ago
Katharina Ziolkowski 3913143892 Added Hotkey-Info to inventory prefab
8 months ago
Katharina Ziolkowski 4734ae953c Added option to play pickup animation for non-inventory items
8 months ago
Katharina Ziolkowski 5992c390ee Reinstated plantgrowing animation
8 months ago
Katharina Ziolkowski 283caf282b Added interaction on mouse click
8 months ago
Katharina Ziolkowski 7c03964d33 changed watering can display to slider
8 months ago
Katharina Ziolkowski 36c948f116 re-added watering animation and vfx
8 months ago
Katharina Ziolkowski d0ba4076b3 planting, growing and watering a little less dependent than before
8 months ago
Katharina Ziolkowski 7fd26ffed3 Fixed tomato farming again
8 months ago
Katharina Ziolkowski ce2d7eb773 WIP moving seed to plant matching into separate system, making fields independent of specific plants.
8 months ago
Katharina Ziolkowski 41365fb5d4 Fixed tool animation
8 months ago
Katharina Ziolkowski 96c7d35aa7 Added word wrapping to quest post it.
8 months ago
Katharina Ziolkowski c2f5359d0c changes after develop merge
8 months ago
Jonathan 9bebe1a44d Merge pull request 'Implemented first demo quest line' (#15) from feature/implement_quests into develop
8 months ago
jonathan 06a270e916 Renamed function to not sound like a unity signal
8 months ago
jonathan b621df5435 removed invisible character
8 months ago
jonathan 03dbc08293 quest status name refactoring
8 months ago
jonathan 8676bbb2f6 Fix spelling
8 months ago
jonathan 6e998810b6 Completed first demo quest line
8 months ago
jonathan c96be7467e Added Quest field
8 months ago
Jonathan 6aa7530502 Added speed hack for vesna
8 months ago
Jonathan d7ac1c6c22 Fixed retrigger yeli dialog
8 months ago
Jonathan 0170a53b5a Added more quest stuff including dialogic quest condition
8 months ago
cblech abc33fd06c Added first quests
8 months ago
cblech 2fbeb93018 Dialogic quest addition and plugin fix
8 months ago
Jonathan 9253a78a06 Merge pull request 'feature/showcase_bugfixing_kathi' (#14) from feature/showcase_bugfixing_kathi into develop
8 months ago
Katharina Ziolkowski 0008b16d48 Adjusted moving values and animations to make vesna not slide any more
9 months ago
Katharina Ziolkowski 8e0dced918 Vesna can walk diagonally now
9 months ago
Katharina Ziolkowski 2e21fb7e98 Made sure splash screen features logo
9 months ago
Katharina Ziolkowski b69191e7f7 fixed pickup layering
9 months ago
Katharina Ziolkowski 8f75b5b644 Added secondary outline mat and assigned it to inventory items
9 months ago
Katharina Ziolkowski 6275bea52c MAde Vesna and Yeli disappear on dialogic start
9 months ago
Katharina Ziolkowski 279cac22ee Fixed dialogic settings
9 months ago
Katharina Ziolkowski e88ba2e1ef Updated interaction area setups to avoid nullrefs
9 months ago
Katharina Ziolkowski f01143e887 cleaned up dialogue structure and removed vesna2 from dialogues
9 months ago
Katharina Ziolkowski 18711776bb Fixed output error ERROR: Script class can only be set together with base class name
9 months ago
Katharina Ziolkowski 0f246825fc Added Wellbehaviour and fixed door interaction to offer outlines
9 months ago
Katharina Ziolkowski 19e30dd0b8 Removed disclaimer reference from bootstrap
9 months ago
Katharina Ziolkowski 730c4999d7 Extracted FightAttack Enum in the hopes of fixing errors
9 months ago
Katharina Ziolkowski cfe604d3b7 set duck body scale to 1,1
9 months ago
Katharina Ziolkowski ad16b86171 wip exchanging interaction label with outline
9 months ago
Katharina Ziolkowski 5ee295256b Fixed Yeli Layering issue in indoor scene
9 months ago
Katharina Ziolkowski ab23d41496 Fixed ysorting on ducks and trash
9 months ago
Felix Paul 12842a37ff Rigged Chuga
9 months ago
Jonathan ae0944fe00 Merge pull request 'feature/showcase_kathi' (#12) from feature/showcase_kathi into develop
9 months ago
Katharina Ziolkowski 486cfb5546 WIP trying to fix the last plant stage bug on repeated farming rounds
9 months ago
Katharina Ziolkowski b92eb909ad Removed no longer needed print statements
9 months ago
Katharina Ziolkowski d2c7302ab2 Fixed farming (the way it was before)
9 months ago
Katharina Ziolkowski 5affc48dc5 Added scene transitions between fighting scene, credits, and start
9 months ago
Katharina Ziolkowski cdb6b83124 Merge remote-tracking branch 'origin/feature/fight_system' into feature/showcase_kathi
9 months ago
Katharina Ziolkowski a4f9511892 WIP fixing farming mechanic again
9 months ago
cblech cc7e8c5c4b Added Credits
9 months ago
Katharina Ziolkowski 7a3e96d679 Merge remote-tracking branch 'origin/feature/fight_system' into feature/showcase_kathi
9 months ago
Katharina Ziolkowski e38c391e1c Reworked flow to make it playable somehow
9 months ago
cblech c0e002f783 made you win waiting time shorter
9 months ago
cblech e8850ca7c5 Added chuga dialog to fight scene
9 months ago
Katharina Ziolkowski eaedf8c396 WIP Beetroot
9 months ago
Katharina Ziolkowski ffa20bbdf8 Added trash to first outdoor scene
9 months ago
Katharina Ziolkowski b77b6e3a52 Added second outdoor scene after tutorial
9 months ago
cblech 69cb63ad89 merge auto fixes
9 months ago
cblech 11790434f5 Merge remote-tracking branch 'origin/feature/showcase_kathi' into feature/fight_system
9 months ago
Katharina Ziolkowski c7d56301fc Added counter script to count ducks (and other things)
9 months ago
cblech 8bd2b09232 Added healing
9 months ago
Katharina Ziolkowski 480d149ede SceneTransition Rework completed
9 months ago
cblech c6fc400994 Added second fight with mavkha
9 months ago
Katharina Ziolkowski 16251db248 WIP new SceneTransition system
9 months ago
cblech 4752002caf Added action per round
9 months ago
cblech 0e028a2cb9 Renamed signal
9 months ago
cblech 01a281c2aa Fixed camera bounds
9 months ago
cblech 2a46d363e9 Changed music to forrest
9 months ago
cblech 92c3f5e054 Target only alive enemies
9 months ago
cblech 6727339e9a Added audio to fight
9 months ago
cblech e3d67722de Merge remote-tracking branch 'origin/Nao's-Sounds' into feature/fight_system
9 months ago
cblech b6fd6292e3 Basic fighting system
9 months ago
Katharina Ziolkowski e8c24e18be Added indoor bedroom scene
9 months ago
Katharina Ziolkowski 199d0873c8 Set up beetroot quest and added cat to indoor scene.
9 months ago
Katharina Ziolkowski e84ef716f6 Merge remote-tracking branch 'origin/feature_sanel-dialogic' into feature/showcase_kathi
9 months ago
Katharina Ziolkowski 135ba0d198 Reworked Domovoi kitchen animation and added AnimationStarter script
9 months ago
Sanelschnitte 2940475062 Added dialog in Dialogic
9 months ago
Katharina Ziolkowski 202f8809aa Fixed plant layering issue
9 months ago
Katharina Ziolkowski 28bb81c0b0 Added fence gates and fixed dialogic toggle for inventory
9 months ago
Katharina Ziolkowski b9c5de6dc3 Made labels visible on ducks
9 months ago
Katharina Ziolkowski 8c18688a69 MVP duck setup
9 months ago
Katharina Ziolkowski 2429958741 Added Disclaimer scene
9 months ago
Katharina Ziolkowski 6b5a8ee126 WIP duck behaviour
9 months ago
Katharina Ziolkowski 8d40529349 Changed StartScreen layout and added Quit button
9 months ago
Katharina Ziolkowski 9e97cc3b80 WIP duck pushing behaviour
9 months ago
Katharina Ziolkowski ebc3ee9cf9 Implemented basic duck running away from vesna mechanic
9 months ago
Katharina Ziolkowski a1bbe44105 Merge remote-tracking branch 'origin/Nao's-Sounds' into feature/showcase_kathi
9 months ago
Katharina Ziolkowski 3ce10c8ba9 Merge remote-tracking branch 'origin/Nao's-Sounds' into feature/showcase_kathi
9 months ago
Katharina Ziolkowski 7e6163ed68 updated project.godot
9 months ago
Katharina Ziolkowski 55d6222698 Added Camera to Indoor Common Room scene and renamend scene asset
9 months ago
Katharina Ziolkowski d7ad2ba072 reverted / recreated inventory changes
9 months ago
Katharina Ziolkowski 9c50a63dc3 Merge branch 'develop' into feature/showcase_kathi
9 months ago
Katharina Ziolkowski 746ac58329 Merge pull request 'Feature: Quest system' (#11) from feature/quest_system into develop
9 months ago
cblech a9cb20c8bc Fixed journal references
9 months ago
cblech 32249fde86 Made quest visuals
9 months ago
cblech 27e137bc02 Made quest usable
9 months ago
cblech 01daddee3b Made basic quest setup
9 months ago
Jonathan ba512508f8 Merge pull request 'feature/farm_scene_rework' (#10) from feature/farm_scene_rework into develop
9 months ago
Katharina Ziolkowski ec653aa847 readded camera ref to farming behaviour
9 months ago
Katharina Ziolkowski 9acea54f28 Added duck sprite
9 months ago
Katharina Ziolkowski 2f5296e05a Diversified field shapes
9 months ago
Katharina Ziolkowski e8a58655ad Added grass textures and field borders
9 months ago
Katharina Ziolkowski aa3789566c Duplicated sunflower field parallaxe layer to ensure seamlessness on big screens
9 months ago
Katharina Ziolkowski 9c7ae20c18 Reworked Camera controls outside scene
9 months ago
Felix Paul ffc7ef2d61 Added Vesna and Yeli as 2D rigged chars, Chuga is still WIP
9 months ago
Katharina Ziolkowski ab2cf3f497 wateringcanstate uid?
9 months ago
Katharina Ziolkowski bf096aa716 visual improvements on farm scene
9 months ago
Katharina Ziolkowski 09ef508f49 Fixed field creation bug
9 months ago
Katharina Ziolkowski a54003c658 Made ground noise texture more seamless
9 months ago
Katharina Ziolkowski fbad33213c Finalized new watering can mechanic with vfx and ui
9 months ago
Katharina Ziolkowski 35c7e9a25e WIP Wasserstand UI
9 months ago
Katharina Ziolkowski 57896e37df Fixed background music loop and added audio mixers
10 months ago
Katharina Ziolkowski 242879159a Fixed sfx binding in farming scene
10 months ago
Katharina Ziolkowski 7ef9fe53b2 Added SignalVisualizer plugin
10 months ago
Katharina Ziolkowski 600d9cfca1 Made items activate directly when picked up
10 months ago
Katharina Ziolkowski 48796de1ba Changed dialogic background color to black and opacity to 168 sothat there is a visible dark overlay during dialogues
10 months ago
Katharina Ziolkowski 4a0b2cd550 Improved Inventory UI (more in the middle, adapt to viewport size, new selector image)
10 months ago
Katharina Ziolkowski ba429d7b84 wip improving inventory layout
10 months ago
Katharina Ziolkowski e33776daeb ESC closes inventory now.
10 months ago
Katharina Ziolkowski 9cfd3bd6f4 Improving farm outside scene performance
10 months ago
Katharina Ziolkowski c36d0b5866 reduced VRAM load by more than 50%
10 months ago
Katharina Ziolkowski bcdba7b812 Fixed Vesna sliding issue
10 months ago
Katharina Ziolkowski 7467ec56d9 Fixed ordering issues in indoor scene
10 months ago
Katharina Ziolkowski 990494e8b0 Adjusted indoor speed
10 months ago
Katharina Ziolkowski c6e0cfe4d9 Fixed Button layout behaviour
10 months ago
Katharina Ziolkowski 4e010220bf Improved performance of the first indoor scene
10 months ago
Katharina Ziolkowski ccc4eb759e Added new house image to farming scene
10 months ago
Jonathan 58c65fc928 Merge pull request 'First intro sequence with Yeli' (#9) from feature/yeli_intro into develop
10 months ago
cblech 937e54e47a Merge branch 'feature/farming_visuals' into develop
10 months ago
Katharina Ziolkowski 83c8a15e5a Added art for updated startscreen to project (but not yet to start menu scene)
10 months ago
Katharina Ziolkowski 1fcddb7349 changed export presets for new builds
10 months ago
Katharina Ziolkowski 26cae9b0f8 fixed missing ready plants
10 months ago
Katharina Ziolkowski 0ebd0c46a0 Added indoor ending
10 months ago
Katharina Ziolkowski 2226b859df Added WateringCan SFX
10 months ago
Katharina Ziolkowski 07bcab4454 Added Farming SFX
10 months ago
Katharina Ziolkowski 4c6d5350b2 Added Background music
10 months ago
Katharina Ziolkowski f2c492de54 changed label settings for InteractionArea
10 months ago
Katharina Ziolkowski e269b3ab44 WIP trying to toggle interactable colliders at runtime for fields
10 months ago
Katharina Ziolkowski 89ae347a91 Added last farming timelines and fixed some minor issues
10 months ago
Katharina Ziolkowski ddb5547b42 Updated Startscreen and added second tutorial step
10 months ago
Katharina Ziolkowski afa06d3ee2 Fixed Yeli Y sorting issue and made fields rounded
10 months ago
Katharina Ziolkowski dd656d5f5f Extended dialogic toggle
10 months ago
Katharina Ziolkowski cdb62f3c2f Added Cozy Raven Splashscreen
10 months ago
Katharina Ziolkowski b0f4592fdd Added first working timeline for yelis intro to farming scene
10 months ago
Katharina Ziolkowski 406c11b581 import statements
10 months ago
Katharina Ziolkowski 9812006234 Added Yeli sprites and dialogic test timeline as well as prefab
10 months ago
Katharina Ziolkowski b8e456f7ef moved player2D prefab
10 months ago
Felix Paul 97e5485ef1 Added Yeli Idle and Talk animations
10 months ago
Felix Paul c77563d38e Rerender Harvesting and added Watering animations
10 months ago
Nao c322f7667a Placeholder for Quest Fail added
10 months ago
Nao 68be479a09 New SFX for Door added
10 months ago
Nao dc52d80a92 SFX Quest Complete Placeholder added (need more time)
10 months ago
Nao a84ca9c32c Farm Atmos Nighttime added
10 months ago
Nao 6b1dd04dd5 New SFX and Forest Atmos Nighttime added
10 months ago
Katharina Ziolkowski 523624756e missing import files
10 months ago
Nao 72593ff7c7 SFX for kitchen added (cutlery, plates, etc) and a few renamed
10 months ago
Katharina Ziolkowski d7dfd03241 Deleted unused material folder
10 months ago
Nao eac135508c SFX Snoring Added
10 months ago
Anna Scheck 90cadbea07 ui elemente hinzugefügt für dialog
10 months ago
Nao 72c3454728 SFX Door Open and Close added
10 months ago
Katharina Ziolkowski 83e25f44cd Fixed background parallaxe effect in outdoor scene
10 months ago
Katharina Ziolkowski 31f19ad139 Code cleanup part 2
10 months ago
Katharina Ziolkowski c6ec99e87a Project cleanup: Removed 3D scripts and scenes from project. Also renamed and moved some minor stuff.
10 months ago
Katharina Ziolkowski 1f17cca62d changes from build process
11 months ago
Anna Scheck 1629862759 Merge pull request 'ui elemente hinzugefügt für dialog' (#4) from feature/ui-elements into develop
11 months ago
Anna Scheck a53b4c4010 ui elemente hinzugefügt für dialog
11 months ago
Katharina Ziolkowski 3e135afecb Added StartScreen and Scene Transition script
11 months ago
Katharina Ziolkowski 25d8f217ff basic harvesting implemented
11 months ago
Katharina Ziolkowski a477f9ef4f Implemented field creation and wateringcan fill up animation
11 months ago
Katharina Ziolkowski b917fb5fbd changed player window size
11 months ago
Felix Paul 20ed134628 Added Yeli Idle and Talk animations
11 months ago
Katharina Ziolkowski 47a1326292 state after magic clip done
11 months ago
Katharina Ziolkowski 708aa8cca4 State after inventory clip (farming mechanic still WIP)
11 months ago
Katharina Ziolkowski 83f4144b43 Reworked farming tools pickup animations
11 months ago
Katharina Ziolkowski 2c677a8cda Inventory resource rework and slot aspect fix
11 months ago
cblech ec5d42068e fixed generic item on ground and added icon
11 months ago
cblech 8fdb395ae8 Added icon to slot
11 months ago
Katharina Ziolkowski 60928c520c Inventory implemented
11 months ago
Katharina Ziolkowski f3ed5e0ad0 Changes to ItemOnGround
11 months ago
Katharina Ziolkowski ee897db52b added swaying plants shader
11 months ago
Katharina Ziolkowski 41201d7406 Indoor room sprites added
11 months ago
Katharina Ziolkowski 267172d026 WIP adding the inventory, also state after first clip
11 months ago
Katharina Ziolkowski 917e6a5f7e Merge remote-tracking branch 'origin/inventory' into feature/farming_visuals
11 months ago
Katharina Ziolkowski 23ef4e9a63 changed visibility order for plants
11 months ago
Katharina Ziolkowski fa7cc66748 added farming animation mechanic
11 months ago
cblech 7b006d19ef Changed slot visuals
11 months ago
Katharina Ziolkowski ad070514d7 Added item and interact animations
11 months ago
Katharina Ziolkowski 80c48ea3df added pickup animation
11 months ago
cblech d76218f88f Moved Bar slot selection handling to inventory manager
11 months ago
Katharina Ziolkowski 7276bdda38 Watering can animation plays when watering
11 months ago
Katharina Ziolkowski 73dc3063c0 removed unnecessary icons from farming controls
11 months ago
cblech ae4f7d9c58 added missing imports
11 months ago
cblech 9a5caef52f Added inventory background and fixes
11 months ago
Katharina Ziolkowski 15c2a84ecd Added babushka icon to project settings
11 months ago
Katharina Ziolkowski 1094fb2142 Added tool animations to player
11 months ago
cblech 2ab1c38de9 cleaned Inventory ui
11 months ago
Felix Paul 3eb35d4e7d Rerender Harvesting and added Watering animations
11 months ago
Katharina Ziolkowski 6d80253d9c import updates to shaders and animations
11 months ago
Katharina Ziolkowski 1b7c35879c Merge remote-tracking branch 'origin/Animations' into farming_mechanic
11 months ago
Katharina Ziolkowski ff426b0494 Initial Farming setup complete
11 months ago
Katharina Ziolkowski 90616537bc Watering fields
11 months ago
Katharina Ziolkowski 0f8eb244e9 planting / growth works again
11 months ago
Katharina Ziolkowski 38fdad7690 removed print statements
11 months ago
Katharina Ziolkowski 0de6bc0c04 the most beautiful grid of fields you can imagine
11 months ago
Felix Paul fc2d6592a2 Added Vesna animations with tools
11 months ago
Katharina Ziolkowski 222c10fe0a limited field creation to specified shape
11 months ago
Katharina Ziolkowski 8af825bc18 InteractionAreas are now bound to SpriteSwitchers and farming tool interaction works
11 months ago
Katharina Ziolkowski f7684b6c2a Deleted unused kenney assets
11 months ago
Katharina Ziolkowski f9a3a8e389 generated import files for art assets
11 months ago
Katharina Ziolkowski 6ad8fb00bd imported various art assets from owncloud
11 months ago
Katharina Ziolkowski c4dbc104d4 music files added
11 months ago
Katharina Ziolkowski 77c0babdca minor changes after merge
11 months ago
Katharina Ziolkowski aa5a3483bb Merge remote-tracking branch 'origin/Nao's-Sounds' into farming_mechanic
11 months ago
Katharina Ziolkowski 68b6031da1 Merge remote-tracking branch 'origin/Animations' into farming_mechanic
11 months ago
Katharina Ziolkowski 4afb02440c Reworking 2D interactions
11 months ago
Katharina Ziolkowski ff85b67087 Made interaction area 2d work - and farming/growing work again.
11 months ago
Felix Paul 20f8eaaebd Added Vesna 2D image sequences
11 months ago
Felix Paul 69848e77c9 Added PickUp and Interact (Back) animations
11 months ago
Katharina Ziolkowski 366923699c WIP 2D rework
11 months ago
Katharina Ziolkowski 2a7f39e3fe Adjusted movement and included collider collisions as a constraint to the player
11 months ago
Katharina Ziolkowski 296fed6e08 Added fields
11 months ago
Katharina Ziolkowski 1af04631c5 Added 2d outdoor scene with parallaxe and mockup background
11 months ago
Felix Paul 9ec1bcab97 Added 2 animations
12 months ago
Katharina Ziolkowski d11fc9f1f2 Cleaned up house mockup outline and removed spammy debug log
12 months ago
Katharina Ziolkowski 16a65f7155 added flat indoor test and skybox to 3d test
12 months ago
Katharina Ziolkowski 0fcc425ace built first 2d indoor scene + added kitchen
12 months ago
Felix Paul 21685d60d5 Added Vesna animations
12 months ago
Katharina Ziolkowski 752cdb1502 Added new how sprite
12 months ago
Katharina Ziolkowski 8299998a0f Added fence to the left part of the farm
12 months ago
Katharina Ziolkowski 5ea6431216 Added tree prefabs and a forest border around the farm
12 months ago
Felix Paul 7cccd40290 Test
12 months ago
Katharina Ziolkowski 762a694be3 Spawning and watering is now bound to the cursor position (kinda)
12 months ago
Katharina Ziolkowski 339428c312 Basic watering functionality implemented
12 months ago
Katharina Ziolkowski 7e19268847 Merge remote-tracking branch 'origin/main' into c_sharp_setup
12 months ago
Katharina Ziolkowski 20b37de108 generated files
12 months ago
Katharina Ziolkowski c73d3ff370 Reworked the fieldservice
1 year ago

7
.gitignore vendored

@ -2,8 +2,13 @@
.godot/
/android/
/builds/
/_builds/
/_clips/
# temporary files
**/*.tmp
**/*.translation
**/*~lock~
**/*~lock~
# override config can be used by developers to override the settings without pushing changes to the repository
override.cfg

@ -0,0 +1,9 @@
<component name="libraryTable">
<library name="GdSdk" type="GdScript">
<CLASSES />
<JAVADOC />
<SOURCES>
<root url="file://$APPLICATION_PLUGINS_DIR$/GdScript/extracted/Master" />
</SOURCES>
</library>
</component>

@ -1,6 +1,14 @@
<Project Sdk="Godot.NET.Sdk/4.4.0">
<Project Sdk="Godot.NET.Sdk/4.5.1">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<EnableDynamicLoading>true</EnableDynamicLoading>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<Folder Include="prefabs\UI\Inventory\" />
<Folder Include="scripts\CSharp\Low Code\Randomizer\" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="13.0.4" />
</ItemGroup>
</Project>

@ -0,0 +1,6 @@
<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/CodeStyle/Naming/CSharpNaming/UserRules/=53eecf85_002Dd821_002D40e8_002Dac97_002Dfdb734542b84/@EntryIndexedValue">&lt;Policy&gt;&lt;Descriptor Staticness="Instance" AccessRightKinds="Protected, ProtectedInternal, Internal, Public, PrivateProtected" Description="Instance fields (not private)"&gt;&lt;ElementKinds&gt;&lt;Kind Name="FIELD" /&gt;&lt;Kind Name="READONLY_FIELD" /&gt;&lt;/ElementKinds&gt;&lt;/Descriptor&gt;&lt;Policy Inspect="True" WarnAboutPrefixesAndSuffixes="False" Prefix="" Suffix="" Style="aaBb" /&gt;&lt;/Policy&gt;</s:String>
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=0B2502BD29F5EC4798EEFD2950AA7E06/Description/@EntryValue">Godot Signal</s:String>
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=0B2502BD29F5EC4798EEFD2950AA7E06/Text/@EntryValue">[Signal]
public delegate void $SignalName$EventHandler($END$);</s:String>
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=0B2502BD29F5EC4798EEFD2950AA7E06/Field/=SignalName/Expression/@EntryValue">suggestVariableName()</s:String></wpf:ResourceDictionary>

@ -1,2 +1,39 @@
<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_003AArea3D_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003F8a54226fa2e1c9371a8091f24cfd744aef11fe6869527dc23b9b837623a29b9_003FArea3D_002Ecs/@EntryIndexedValue">ForceIncluded</s:String></wpf:ResourceDictionary>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AArea2D_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E2_003Fresharper_002Dhost_003FSourcesCache_003Fefbd3244e8e427e388f389cc304f90548d56b58a375097a197ac2eb8259990bb_003FArea2D_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AArea3D_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003F8a54226fa2e1c9371a8091f24cfd744aef11fe6869527dc23b9b837623a29b9_003FArea3D_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AArray_00601_002Ecs_002Fl_003AC_0021_003FUsers_003FJonathan_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fe37dc1faf08a4d5ea030ad59bdf77522523400_003Fa3_003Fe272a3a7_003FArray_00601_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AAudioStreamPlayer2D_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F848324b1c23114c3f5e8bbb5a42c4ade394c59a7a7a133a66b76581ca571_003FAudioStreamPlayer2D_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ABabushka_002Escripts_002ECSharp_002ECommon_002EFarming_002EFieldBehaviour2D_005FScriptMethods_002Egenerated_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E2_003Fresharper_002Dhost_003FSourcesCache_003F75d11718f1abbc2572fd32e4b83acbec9d79ac_003FBabushka_002Escripts_002ECSharp_002ECommon_002EFarming_002EFieldBehaviour2D_005FScriptMethods_002Egenerated_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ABabushka_002Escripts_002ECSharp_002ECommon_002EFarming_002EVesnaBehaviour2D_005FScriptMethods_002Egenerated_002Ecs_002Fl_003AC_0021_003FUsers_003FJonathan_003FAppData_003FLocal_003FTemp_003FSourceGeneratedDocuments_003F9509A9D00FD8A232B5E86A84_003FGodot_002ESourceGenerators_003FGodot_002ESourceGenerators_002EScriptMethodsGenerator_003FBabushka_002Escripts_002ECSharp_002ECommon_002EFarming_002EVesnaBehaviour2D_005FScriptMethods_002Egenerated_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ABabushka_002Escripts_002ECSharp_002ECommon_002EFarming_002EVesnaBehaviour2D_005FScriptProperties_002Egenerated_002Ecs_002Fl_003AC_0021_003FUsers_003FJonathan_003FAppData_003FLocal_003FTemp_003FSourceGeneratedDocuments_003F9509A9D00FD8A232B5E86A84_003FGodot_002ESourceGenerators_003FGodot_002ESourceGenerators_002EScriptPropertiesGenerator_003FBabushka_002Escripts_002ECSharp_002ECommon_002EFarming_002EVesnaBehaviour2D_005FScriptProperties_002Egenerated_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ABabushka_002Escripts_002ECSharp_002ECommon_002EFarming_002EVesnaBehaviour2D_005FScriptProperties_002Egenerated_002Ecs_002Fl_003AC_0021_003FUsers_003FJonathan_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F4298b0f293f987511fc1b7956ee691fd778f8378_003FBabushka_002Escripts_002ECSharp_002ECommon_002EFarming_002EVesnaBehaviour2D_005FScriptProperties_002Egenerated_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ABabushka_002Escripts_002ECSharp_002ECommon_002EFarming_002EVesnaBehaviour2D_005FScriptProperties_002Egenerated_002Ecs_002Fl_003AC_0021_003FUsers_003FJonathan_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F4298b0f293f987511fc1b7956ee691fd778f8378_003FBabushka_002Escripts_002ECSharp_002ECommon_002EFarming_002EVesnaBehaviour2D_005FScriptProperties_002Egenerated_002Ecs_002Fz_003A2_002D1/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ABabushka_002Escripts_002ECSharp_002ECommon_002EQuest_002EQuestListItemUi_005FScriptMethods_002Egenerated_002Ecs_002Fl_003AC_0021_003FUsers_003FJonathan_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F48fad7e7f3c9e292b3fdbddf9d363f0d1752aa_003FBabushka_002Escripts_002ECSharp_002ECommon_002EQuest_002EQuestListItemUi_005FScriptMethods_002Egenerated_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ABabushka_002Escripts_002ECSharp_002ECommon_002EQuest_002EQuestManager_005FScriptSignals_002Egenerated_002Ecs_002Fl_003AC_0021_003FUsers_003FJonathan_003FAppData_003FLocal_003FTemp_003FSourceGeneratedDocuments_003F9509A9D00FD8A232B5E86A84_003FGodot_002ESourceGenerators_003FGodot_002ESourceGenerators_002EScriptSignalsGenerator_003FBabushka_002Escripts_002ECSharp_002ECommon_002EQuest_002EQuestManager_005FScriptSignals_002Egenerated_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACanvasItem_002Ecs_002Fl_003AC_0021_003FUsers_003FJonathan_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003Fef7b819b226fab796d1dfe66d415dd7510bcac87675020ddb8f03a828e763_003FCanvasItem_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACastHelpers_002Ecs_002Fl_003AC_0021_003FUsers_003FJonathan_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F3c92637ae2e83da0a63791071c41eae291d594156062866d8621b7ed7245c_003FCastHelpers_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACastHelpers_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fd111abf504bf42b5968a609b168fd093b2e200_003Fbb_003F1c116fcd_003FCastHelpers_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACharacterBody2D_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003Fbba0bbd7a98ee58286e9484fbe86e01afff6232283f6efd3556eb7116453_003FCharacterBody2D_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACount_002Ecs_002Fl_003AC_0021_003FUsers_003FJonathan_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003Ffe5a7cee5a1771b89077bd73292de84439b4f816799e2ad6c2615c6ff5bd748e_003FCount_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ADictionary_00602_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003Fhome_003Fjonathan_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fe37dc1faf08a4d5ea030ad59bdf77522523400_003Fd4_003Fbd338aeb_003FDictionary_00602_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AExportToolButtonAttribute_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E2_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fe37dc1faf08a4d5ea030ad59bdf77522523400_003F31_003F3e05ef15_003FExportToolButtonAttribute_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AGD_005Fconstants_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E2_003Fresharper_002Dhost_003FSourcesCache_003Fdf61b6148ca71eef8cf4e56545a9319fd2647f05d2f959dad42d9fcbe95192_003FGD_005Fconstants_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AMustBeVariantAttribute_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E2_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fe37dc1faf08a4d5ea030ad59bdf77522523400_003Fda_003Fbb06d681_003FMustBeVariantAttribute_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AGD_005Fconstants_002Ecs_002Fl_003AC_0021_003FUsers_003FJonathan_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F4ef0bac6437b6a9567d44f62ae567d854fa7b8513ef7139ef349b49768bc9df_003FGD_005Fconstants_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ANode_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003Ff1d69ec2da76ccf9bc8a75c8e0fdca9a7ba1adf8c8c9d5047e2fa5991c02eca_003FNode_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AResourceLoader_002Ecs_002Fl_003AC_0021_003FUsers_003FJonathan_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F9f4e8eb124d11f8219cb513a19bed22b2120ed29f9d6785ba56e3367b48d581_003FResourceLoader_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AResourceLoader_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E2_003Fresharper_002Dhost_003FSourcesCache_003F9f4e8eb124d11f8219cb513a19bed22b2120ed29f9d6785ba56e3367b48d581_003FResourceLoader_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AThrowHelper_002Ecs_002Fl_003AC_0021_003FUsers_003FJonathan_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003Fc7102cd0ffb8973777e61b1942c3fffac7e14016a511d055c3adf73ff91748_003FThrowHelper_002Ecs/@EntryIndexedValue">ForceIncluded</s:String></wpf:ResourceDictionary>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AEnumerable_002Ecs_002Fl_003AC_0021_003FUsers_003FJonathan_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F76fabf6f8acf4a0099cae0bcf8b218467f10_003F7e_003F28cee476_003FEnumerable_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AGD_005Fconstants_002Ecs_002Fl_003AC_0021_003FUsers_003FJonathan_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F4ef0bac6437b6a9567d44f62ae567d854fa7b8513ef7139ef349b49768bc9df_003FGD_005Fconstants_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ANode_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003Ff1d69ec2da76ccf9bc8a75c8e0fdca9a7ba1adf8c8c9d5047e2fa5991c02eca_003FNode_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ANullable_002Ecs_002Fl_003AC_0021_003FUsers_003FJonathan_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F5acc345db3c207bc9d886a36ff14867ef8d65557432172c2a42f19aeac04d1b_003FNullable_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AResourceLoader_002Ecs_002Fl_003AC_0021_003FUsers_003FJonathan_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F9f4e8eb124d11f8219cb513a19bed22b2120ed29f9d6785ba56e3367b48d581_003FResourceLoader_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_003FJonathan_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F8d6960554e939a669841b1ece03d27df4ab42f92bb80be3767eaec8cdaccf84b_003FSceneTree_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AShape2D_002Ecs_002Fl_003AC_0021_003FUsers_003FJonathan_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F3671dbbd9b17cdf2bf9075b468b6bd7e3ab13fc3be7a116484085d3b6cc9fe_003FShape2D_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AThrowHelper_002Ecs_002Fl_003AC_0021_003FUsers_003FJonathan_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003Fc7102cd0ffb8973777e61b1942c3fffac7e14016a511d055c3adf73ff91748_003FThrowHelper_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/Environment/UnitTesting/UnitTestSessionStore/Sessions/=bc5a80e4_002D7ba6_002D4f7d_002Db896_002Dc591eec7ab12/@EntryIndexedValue">&lt;SessionState ContinuousTestingMode="0" IsActive="True" Name="Tests" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session"&gt;&#xD;
&lt;TestAncestor&gt;&#xD;
&lt;TestId&gt;NUnit3x::A6EF2269-9E64-40D4-BA0A-33CB234E2503::net9.0::BabushkaTest.Tests&lt;/TestId&gt;&#xD;
&lt;/TestAncestor&gt;&#xD;
&lt;/SessionState&gt;</s:String></wpf:ResourceDictionary>

@ -0,0 +1 @@
<svg height="24" viewBox="0 0 16 16" width="24" xmlns="http://www.w3.org/2000/svg"><path d="m8 1a1 1 0 0 0 -1 1v5h-2c-1.108 0-2 .892-2 2v1h10v-1c0-1.108-.892-2-2-2h-2v-5a1 1 0 0 0 -1-1zm-5 10v4l10-1v-3z" fill="#e0e0e0"/></svg>

After

Width:  |  Height:  |  Size: 227 B

@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bmnff63evbdhv"
path="res://.godot/imported/Clear.svg-d661617e27b91e3580171e3447fde514.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/SignalVisualizer/Clear.svg"
dest_files=["res://.godot/imported/Clear.svg-d661617e27b91e3580171e3447fde514.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

@ -0,0 +1,58 @@
class_name SignalConnection extends Object
# Properties
# |===================================|
# |===================================|
# |===================================|
var signal_id: int
var source_node_name: String
var destination_node_name: String
var method_signature: String
var description: String :
get:
return "ID: {signal_id} Source: {source_node_name} Destination: {destination_node_name} Method: {method_signature}".format({
"signal_id": signal_id,
"source_node_name": source_node_name,
"destination_node_name": destination_node_name,
"method_signature": method_signature,
})
var dictionary_key: String :
get:
return "{signal_id}__{source_node_name}__{destination_node_name}__{method_signature}".format({ "signal_id": signal_id, "source_node_name": source_node_name, "destination_node_name": destination_node_name, "method_signature": method_signature.replace("::", "_") })
var dictionary_representation: Dictionary :
get:
return {
"signal_id": signal_id,
"source_node_name": source_node_name,
"destination_node_name": destination_node_name,
"method_signature": method_signature,
}
# Lifecycle
# |===================================|
# |===================================|
# |===================================|
func _init(signal_id: int, source_node_name: String, destination_node_name: String, method_signature: String):
self.signal_id = signal_id
self.source_node_name = source_node_name
self.destination_node_name = destination_node_name
self.method_signature = method_signature
# Signals
# |===================================|
# |===================================|
# |===================================|
# Methods
# |===================================|
# |===================================|
# |===================================|

@ -0,0 +1,56 @@
class_name SignalDescription extends Object
# Properties
# |===================================|
# |===================================|
# |===================================|
var id: int:
get:
if _source_id != null:
return _source_id
return get_instance_id()
var node_name: String
var signal_name: String
var description: String :
get:
return "ID: {id} Node: {node_name} Signal: {signal_name}".format({
"id": id,
"node_name": node_name,
"signal_name": signal_name,
})
var dictionary_representation: Dictionary :
get:
return {
"id": id,
"node_name": node_name,
"signal_name": signal_name,
}
var _source_id = null
# Lifecycle
# |===================================|
# |===================================|
# |===================================|
func _init(node_name: String, signal_name: String):
self.node_name = node_name
self.signal_name = signal_name
# Signals
# |===================================|
# |===================================|
# |===================================|
# Methods
# |===================================|
# |===================================|
# |===================================|

@ -0,0 +1,53 @@
class_name SignalGraph extends Object
# Properties
# |===================================|
# |===================================|
# |===================================|
var name: String
var signals: Array[SignalDescription]
var edges: Array[SignalConnection]
var description: String :
get:
return "Signals: {signals}\nEdges: {edges}".format({
"signals": signals.map(func (item): return item.description),
"edges": edges.map(func (item): return item.description),
})
var dictionary_representation: Dictionary :
get:
return {
"name": name,
"signals": signals.map(func (element): return element.dictionary_representation),
"edges": edges.map(func (element): return element.dictionary_representation),
}
# Lifecycle
# |===================================|
# |===================================|
# |===================================|
func _init(name: String, signals: Array[SignalDescription] = [], edges: Array[SignalConnection] = []):
self.name = name
self.signals = signals
self.edges = edges
# Signals
# |===================================|
# |===================================|
# |===================================|
# Methods
# |===================================|
# |===================================|
# |===================================|
func get_source_signal_for_edge(edge: SignalConnection) -> SignalDescription:
var result = signals.filter(func (item): return item.id == edge.signal_id)
if result.size() > 0:
return result[0]
return null

@ -0,0 +1,170 @@
@tool
class_name SignalGraphUtility
static var SignalGraphNode = preload("res://addons/SignalVisualizer/Visualizer/signal_graph_node.tscn")
static var GraphNodeItem = preload("res://addons/SignalVisualizer/Visualizer/signal_graph_node_item.tscn")
const SOURCE_COLOR: Color = Color.SKY_BLUE
const DESTINATION_COLOR: Color = Color.CORAL
const CONNECTION_TYPE: int = 0
#region Methods
static func create_signal_graph(name: String, signals: Array, edges: Array) -> SignalGraph:
var signal_graph = SignalGraph.new(name)
for signal_item in signals:
var new_signal_description = SignalDescription.new(signal_item.node_name, signal_item.signal_name)
new_signal_description._source_id = signal_item.id
signal_graph.signals.append(new_signal_description)
for connection in edges:
var new_edge = SignalConnection.new(connection.signal_id, connection.source_node_name, connection.destination_node_name, connection.method_signature)
signal_graph.edges.append(new_edge)
return signal_graph
static func create_signal_graph_from_node(root_node: Node, is_persistent_only: bool = false):
var signal_graph = SignalGraph.new(root_node.scene_file_path)
var all_nodes: Array[Node] = _gather_nodes_from_node(root_node)
var signals: Array[SignalDescription] = []
var edges: Array[SignalConnection] = []
for node in all_nodes:
for signal_item in node.get_signal_list():
var existing_signals = []
var connection_list = node.get_signal_connection_list(signal_item["name"] as String)
if connection_list.size() > 0:
for connection in connection_list:
var enabled_flags = connection["flags"] == CONNECT_PERSIST if is_persistent_only else true
var should_display_connection = "name" in connection["callable"].get_object() and not connection["callable"].get_object().name.begins_with("@") and enabled_flags
if should_display_connection:
var signal_description: SignalDescription
var filtered_signals = existing_signals.filter(func (element): return element.signal_name == signal_item.name and element.node_name == node.name)
if filtered_signals.size() == 1:
signal_description = filtered_signals[0]
else:
signal_description = SignalDescription.new(node.name, signal_item.name)
existing_signals.append(signal_description)
signals.append(signal_description)
var signal_edge = SignalConnection.new(signal_description.id, signal_description.node_name, connection["callable"].get_object().name, connection["callable"].get_method())
if not signal_graph.edges.any(func (element): return element.signal_id == signal_description.id):
edges.append(signal_edge)
var temp_signals = {}
for item in signals:
temp_signals[item.id] = item
var temp_edges = {}
for item in edges:
temp_edges[item.dictionary_key] = item
signal_graph.signals.assign(temp_signals.keys().map(func (key): return temp_signals[key]))
signal_graph.edges.assign(temp_edges.keys().map(func (key): return temp_edges[key]))
return signal_graph
static func generate_signal_graph_nodes(signal_graph: SignalGraph, graph_node: GraphEdit, open_script_callable: Callable):
var graph_nodes: Dictionary = {}
for signal_item in signal_graph.signals:
var current_graph_node: SignalGraphNode
if graph_nodes.has(signal_item.node_name):
current_graph_node = graph_nodes[signal_item.node_name]
if not current_graph_node:
current_graph_node = SignalGraphNode.instantiate()
current_graph_node.title = signal_item.node_name
current_graph_node.name = _get_graph_node_name(signal_item.node_name)
graph_node.add_child(current_graph_node)
graph_nodes[signal_item.node_name] = current_graph_node
for edge in signal_graph.edges:
var destination_graph_node: SignalGraphNode
if graph_nodes.has(edge.destination_node_name):
destination_graph_node = graph_nodes[edge.destination_node_name]
else:
destination_graph_node = SignalGraphNode.instantiate()
destination_graph_node.title = edge.destination_node_name
destination_graph_node.name = _get_graph_node_name(edge.destination_node_name)
graph_node.add_child(destination_graph_node)
graph_nodes[edge.destination_node_name] = destination_graph_node
var source_signal = signal_graph.get_source_signal_for_edge(edge)
if source_signal != null:
var source_graph_node: SignalGraphNode = graph_nodes[edge.source_node_name] as SignalGraphNode
if not source_graph_node.has_source_signal_description(source_signal.signal_name, edge.destination_node_name):
var source_signal_label = Label.new()
source_signal_label.text = source_signal.signal_name
source_signal_label.name = "source_" + source_signal.signal_name + "_" + edge.destination_node_name
source_graph_node.add_child(source_signal_label)
var destination_signal_name = "destination_" + source_signal.signal_name + "_" + edge.method_signature.replace("::", "__")
var has_destination = destination_graph_node.has_destination_signal_description(source_signal.signal_name, edge.method_signature)
if not has_destination:
var destination_signal_item = GraphNodeItem.instantiate()
destination_signal_item.signal_data = SignalGraphNodeItem.Metadata.new(source_signal.signal_name, edge.method_signature, edge.destination_node_name)
destination_signal_item.text = edge.method_signature
destination_signal_item.name = destination_signal_name
destination_signal_item.open_script.connect(open_script_callable)
destination_graph_node.add_child(destination_signal_item)
for edge in signal_graph.edges:
var source_signal = signal_graph.get_source_signal_for_edge(edge)
if source_signal != null:
var source_graph_node: SignalGraphNode = graph_nodes[edge.source_node_name] as SignalGraphNode
var destination_graph_node: SignalGraphNode = graph_nodes[edge.destination_node_name] as SignalGraphNode
var from_port = source_graph_node.get_source_slot(source_signal.signal_name, edge.destination_node_name)
var to_port = destination_graph_node.get_destination_slot(source_signal.signal_name, edge.method_signature)
source_graph_node.set_slot(from_port, false, CONNECTION_TYPE, Color.BLACK, true, CONNECTION_TYPE, SOURCE_COLOR)
destination_graph_node.set_slot(to_port, true, CONNECTION_TYPE, DESTINATION_COLOR, false, CONNECTION_TYPE, Color.BLACK)
var from_slot_index = source_graph_node.get_next_source_slot(source_signal.signal_name, edge.destination_node_name)
var to_slot_index = destination_graph_node.get_next_destination_slot(source_signal.signal_name, edge.method_signature)
if from_port >= 0 and to_port >= 0:
graph_node.connect_node(source_graph_node.name, from_slot_index, destination_graph_node.name, to_slot_index)
else:
print(">>> Invalid Connection Request")
static func generate_signal_graph_tree(signal_graph: SignalGraph, tree_node: Tree):
var root = tree_node.create_item()
root.set_text(0, signal_graph.name)
var tree_items: Dictionary = {}
for signal_item in signal_graph.signals:
var node_tree_item: TreeItem
if tree_items.has(signal_item.node_name):
node_tree_item = tree_items[signal_item.node_name] as TreeItem
else:
node_tree_item = tree_node.create_item(root)
node_tree_item.set_text(0, signal_item.node_name)
tree_items[signal_item.node_name] = node_tree_item
var signal_tree_item = tree_node.create_item(node_tree_item)
signal_tree_item.set_text(0, signal_item.signal_name)
for edge in signal_graph.edges.filter(func (item): return item.signal_id == signal_item.id):
var signal_connection_tree_item = tree_node.create_item(signal_tree_item)
signal_connection_tree_item.set_text(0, edge.destination_node_name + "::" + edge.method_signature)
static func _get_graph_node_name(name: String) -> String:
return "{node_name}_graph_node".format({ "node_name": name })
static func _gather_nodes_from_node(root_node: Node) -> Array[Node]:
var node_list: Array[Node] = [root_node]
return node_list + __gather_nodes_from_node(root_node)
static func __gather_nodes_from_node(node: Node) -> Array[Node]:
var nodes: Array[Node] = []
for child in node.get_children(false):
nodes.append(child)
nodes += __gather_nodes_from_node(child)
return nodes
#endregion

@ -0,0 +1,146 @@
extends Node
# Properties
# |===================================|
# |===================================|
# |===================================|
var _signal_graph: SignalGraph
var _lambda_map: Dictionary = {}
# Lifecycle
# |===================================|
# |===================================|
# |===================================|
func _ready():
if OS.is_debug_build():
EngineDebugger.register_message_capture("signal_debugger", _on_signal_debugger_message_capture)
# Signals
# |===================================|
# |===================================|
# |===================================|
func _on_signal_debugger_message_capture(message: String, data: Array) -> bool:
if message == "start":
_signal_graph = generate_signal_graph()
for signal_item in _signal_graph.signals:
_connect_to_signal(signal_item)
EngineDebugger.send_message(
"signal_debugger:generated_graph",
[[_signal_graph.signals.map(func (item): return item.dictionary_representation), _signal_graph.edges.map(func (item): return item.dictionary_representation)]]
)
if message == "stop" and _signal_graph:
for signal_item in _signal_graph.signals:
_disconnect_from_signal(signal_item)
if message == "invoke_signal" and data.size() == 2:
var node_name = data[0]
var signal_name = data[1]
var root_node = get_tree().current_scene
var node = root_node if root_node.name == node_name else root_node.find_child(node_name)
if node:
var connection_list = node.get_signal_connection_list(signal_name)
for connection in connection_list:
var callable = connection["callable"]
var bound_args = callable.get_bound_arguments()
var bound_args_count = callable.get_bound_arguments_count()
var method = callable.get_method()
callable.callv([node])
return true
func _on_signal_execution(signal_name: String, node_name: String, args):
EngineDebugger.send_message(
"signal_debugger:signal_executed",
[Time.get_datetime_string_from_system(), node_name, signal_name]
)
# Methods
# |===================================|
# |===================================|
# |===================================|
func generate_signal_graph() -> SignalGraph:
var graph = SignalGraphUtility.create_signal_graph_from_node(get_tree().current_scene)
return graph
#var signal_graph = SignalGraph.new(get_tree().current_scene.name)
#var all_nodes: Array[Node] = _gather_nodes_in_scene()
#var signals: Array[SignalDescription] = []
#var edges: Array[SignalConnection] = []
#
#for node in all_nodes:
#for signal_item in node.get_signal_list():
#var existing_signals = []
#var connection_list = node.get_signal_connection_list(signal_item["name"] as String)
#if connection_list.size() > 0:
#for connection in connection_list:
#var should_display_connection = "name" in connection["callable"].get_object() and not connection["callable"].get_object().name.begins_with("@")
#if should_display_connection:
#var signal_description: SignalDescription
#var filtered_signals = existing_signals.filter(func (element): return element.signal_name == signal_item.name and element.node_name == node.name)
#if filtered_signals.size() == 1:
#signal_description = filtered_signals[0]
#else:
#signal_description = SignalDescription.new(node.name, signal_item.name)
#existing_signals.append(signal_description)
#signals.append(signal_description)
#
#var signal_edge = SignalConnection.new(signal_description.id, signal_description.node_name, connection["callable"].get_object().name, connection["callable"].get_method())
#if not signal_graph.edges.any(func (element): return element.signal_id == signal_description.id):
#edges.append(signal_edge)
#
#var temp_signals = {}
#for item in signals:
#temp_signals[item.id] = item
#
#var temp_edges = {}
#for item in edges:
#temp_edges[item.dictionary_key] = item
#
#signal_graph.signals.assign(temp_signals.keys().map(func (key): return temp_signals[key]))
#signal_graph.edges.assign(temp_edges.keys().map(func (key): return temp_edges[key]))
#
#return signal_graph
#func _gather_nodes_in_scene() -> Array[Node]:
#var scene_root = get_tree().current_scene
#var node_list: Array[Node] = [scene_root]
#return node_list + _gather_nodes_from_node(scene_root)
#
#func _gather_nodes_from_node(node: Node) -> Array[Node]:
#var nodes: Array[Node] = []
#for child in node.get_children(false):
#nodes.append(child)
#nodes += _gather_nodes_from_node(child)
#
#return nodes
func _connect_to_signal(signal_item: SignalDescription):
var root_node = get_tree().current_scene
var _execute: Callable = func (args = []): _on_signal_execution(signal_item.signal_name, signal_item.node_name, args)
if root_node.name == signal_item.node_name:
root_node.connect(signal_item.signal_name, _execute)
_lambda_map[signal_item] = _execute
else:
var child = root_node.find_child(signal_item.node_name)
if child:
child.connect(signal_item.signal_name, _execute)
_lambda_map[signal_item] = _execute
func _disconnect_from_signal(signal_item: SignalDescription):
var root_node = get_tree().current_scene
if root_node.name == signal_item.node_name:
var callable = _lambda_map[signal_item]
if callable:
root_node.disconnect(signal_item.signal_name, callable)
_lambda_map.erase(signal_item)
else:
var child = root_node.find_child(signal_item.node_name)
if child:
var callable = _lambda_map[signal_item]
if callable:
child.disconnect(signal_item.signal_name, callable)
_lambda_map.erase(signal_item)

@ -0,0 +1,97 @@
[gd_scene load_steps=5 format=3 uid="uid://cbsmvov8u78q"]
[ext_resource type="Script" path="res://addons/SignalVisualizer/Debugger/signal_debugger_panel.gd" id="1_66cpc"]
[ext_resource type="Texture2D" uid="uid://be3nwoioa311t" path="res://addons/SignalVisualizer/Play.svg" id="2_2wkuv"]
[ext_resource type="Texture2D" uid="uid://oo1oq2colx5b" path="res://addons/SignalVisualizer/Stop.svg" id="3_bg5eu"]
[ext_resource type="Texture2D" uid="uid://bmnff63evbdhv" path="res://addons/SignalVisualizer/Clear.svg" id="4_vg63r"]
[node name="SignalDebugger" type="Control"]
clip_contents = true
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_66cpc")
start_icon = ExtResource("2_2wkuv")
stop_icon = ExtResource("3_bg5eu")
[node name="VBoxContainer" type="VBoxContainer" parent="."]
clip_contents = true
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"]
custom_minimum_size = Vector2(2.08165e-12, 50)
layout_mode = 2
theme_override_constants/separation = 8
[node name="ActionButton" type="Button" parent="VBoxContainer/HBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
disabled = true
text = "Start"
icon = ExtResource("2_2wkuv")
[node name="ClearAllButton" type="Button" parent="VBoxContainer/HBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
text = "Clear All"
icon = ExtResource("4_vg63r")
[node name="Spacer" type="Control" parent="VBoxContainer/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="ClearLogsButton" type="Button" parent="VBoxContainer/HBoxContainer"]
layout_mode = 2
text = "Clear Logs"
icon = ExtResource("4_vg63r")
[node name="HSplitContainer" type="HSplitContainer" parent="VBoxContainer"]
layout_mode = 2
size_flags_vertical = 3
[node name="SignalTree" type="Tree" parent="VBoxContainer/HSplitContainer"]
unique_name_in_owner = true
custom_minimum_size = Vector2(250, 2.08165e-12)
layout_mode = 2
columns = 2
allow_reselect = true
allow_rmb_select = true
hide_root = true
[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/HSplitContainer"]
layout_mode = 2
[node name="TabBar" type="TabBar" parent="VBoxContainer/HSplitContainer/VBoxContainer"]
layout_mode = 2
tab_count = 2
tab_0/title = "Signal Log"
tab_1/title = "Signal Graph"
[node name="LogLabel" type="RichTextLabel" parent="VBoxContainer/HSplitContainer/VBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
theme_override_colors/default_color = Color(0.690196, 0.690196, 0.690196, 1)
bbcode_enabled = true
scroll_following = true
[node name="Graph" type="GraphEdit" parent="VBoxContainer/HSplitContainer/VBoxContainer"]
unique_name_in_owner = true
visible = false
layout_mode = 2
size_flags_vertical = 3
[connection signal="pressed" from="VBoxContainer/HBoxContainer/ActionButton" to="." method="_on_action_button_pressed"]
[connection signal="pressed" from="VBoxContainer/HBoxContainer/ClearAllButton" to="." method="_on_clear_all_button_pressed"]
[connection signal="pressed" from="VBoxContainer/HBoxContainer/ClearLogsButton" to="." method="_on_clear_logs_button_pressed"]
[connection signal="item_selected" from="VBoxContainer/HSplitContainer/SignalTree" to="." method="_on_signal_tree_item_selected"]
[connection signal="tab_changed" from="VBoxContainer/HSplitContainer/VBoxContainer/TabBar" to="." method="_on_tab_bar_tab_changed"]

@ -0,0 +1,192 @@
@tool
class_name SignalDebuggerPanel extends Control
signal open_script(node_name: String, method_signature: String)
signal start_signal_debugging
signal stop_signal_debugging
var SignalGraphNode = preload("res://addons/SignalVisualizer/Visualizer/signal_graph_node.tscn")
var GraphNodeItem = preload("res://addons/SignalVisualizer/Visualizer/signal_graph_node_item.tscn")
const SOURCE_COLOR: Color = Color.SKY_BLUE
const DESTINATION_COLOR: Color = Color.CORAL
const CONNECTION_TYPE: int = 0
enum Tabs {
LOG,
GRAPH
}
# Properties
# |===================================|
# |===================================|
# |===================================|
@export var start_icon: Texture2D
@export var stop_icon: Texture2D
@onready var action_button: Button = %ActionButton
@onready var clear_all_button: Button = %ClearAllButton
@onready var signal_tree: Tree = %SignalTree
@onready var log_label: RichTextLabel = %LogLabel
@onready var graph_node: GraphEdit = %Graph
var is_started: bool = false :
get: return is_started
set(new_value):
is_started = new_value
_update_action_button()
var _signals: Array = []
var _signal_filter: Array = []
var _is_stack_trace_enabled: bool = false
var _debugger_tab_state: Tabs = Tabs.LOG
var _graph: SignalGraph
# Lifecycle
# |===================================|
# |===================================|
# |===================================|
func _ready():
disable()
_handle_tab_update(0)
# Signals
# |===================================|
# |===================================|
# |===================================|
func _on_action_button_pressed():
if is_started:
stop()
else:
start()
func _on_clear_all_button_pressed():
log_label.clear()
signal_tree.clear()
graph_node.clear_connections()
for child in graph_node.get_children():
if child is SignalGraphNode:
child.queue_free()
func _on_clear_logs_button_pressed():
log_label.clear()
func _on_signal_tree_item_selected():
# Updates the checkmark button
var selected_item = signal_tree.get_selected()
var is_checked = selected_item.is_checked(1)
selected_item.set_checked(1, (not is_checked))
# Add / Remove signal from filters
var selected_signal = _signals.filter(func (element): return element.signal_name == selected_item.get_text(0))[0]
if _signal_filter.has(selected_signal.signal_name):
var selected_index = _signal_filter.find(selected_signal.signal_name)
_signal_filter.remove_at(selected_index)
else:
_signal_filter.append(selected_signal.signal_name)
func _on_tab_bar_tab_changed(tab: int):
_handle_tab_update(tab)
func _on_stack_trace_button_pressed():
_is_stack_trace_enabled = not _is_stack_trace_enabled
func _on_open_signal_in_script(data: SignalGraphNodeItem.Metadata):
open_script.emit(data.node_name, data.method_signature)
# Methods
# |===================================|
# |===================================|
# |===================================|
func enable():
action_button.disabled = false
func disable():
action_button.disabled = true
func start():
if not is_started:
is_started = true
action_button.icon = stop_icon
start_signal_debugging.emit()
log_label.append_text("[color=#B0B0B0]Signal Debugging Started...[/color]")
log_label.newline()
log_label.newline()
func stop():
if is_started:
is_started = false
action_button.icon = start_icon
stop_signal_debugging.emit()
log_label.newline()
log_label.append_text("[color=#B0B0B0]Signal Debugging Stopped[/color]")
log_label.newline()
log_label.newline()
func create_tree_from_signals(signals: Array):
_signals = signals
var root = signal_tree.create_item()
root.set_text(0, "Signals")
var tree_items: Dictionary = {}
for signal_item in signals:
var node_tree_item: TreeItem
if tree_items.has(signal_item.node_name):
node_tree_item = tree_items[signal_item.node_name] as TreeItem
else:
node_tree_item = signal_tree.create_item(root)
node_tree_item.set_text(0, signal_item.node_name)
node_tree_item.set_selectable(0, false)
node_tree_item.set_selectable(1, false)
tree_items[signal_item.node_name] = node_tree_item
var signal_tree_item = signal_tree.create_item(node_tree_item)
signal_tree_item.set_text(0, signal_item.signal_name)
signal_tree_item.set_cell_mode(1, TreeItem.CELL_MODE_CHECK)
signal_tree_item.set_checked(1, true)
signal_tree_item.set_selectable(0, false)
signal_tree_item.set_selectable(1, true)
func create_signal_graph(signals: Array, edges: Array):
_graph = SignalGraphUtility.create_signal_graph(get_tree().edited_scene_root.scene_file_path, signals, edges)
SignalGraphUtility.generate_signal_graph_nodes(_graph, graph_node, _on_open_signal_in_script)
func log_signal_execution(time: String, node_name: String, signal_name: String):
if _signal_filter != null and _signal_filter.has(signal_name):
return
if not log_label.text.is_empty():
log_label.newline()
log_label.append_text(
"[color=#FFCC00]{time}[/color]\t\t{node_name}\t\t{signal_name}".format({ "time": time, "node_name": node_name, "signal_name": signal_name })
)
log_label.newline()
func _handle_tab_update(selected_tab_index: int):
match selected_tab_index:
1:
_debugger_tab_state = Tabs.GRAPH
_:
_debugger_tab_state = Tabs.LOG
match _debugger_tab_state:
Tabs.LOG:
log_label.show()
graph_node.hide()
Tabs.GRAPH:
log_label.hide()
graph_node.show()
func _update_action_button():
if is_started:
action_button.text = "Stop"
action_button.modulate = Color("#ff3b30")
else:
action_button.text = "Start"
action_button.modulate = Color.WHITE

@ -0,0 +1 @@
<svg height="24" width="24" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="M11 1a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1zM6.732 5A2 2 0 0 1 7 6v1.117L9.268 6A2 2 0 0 1 9 5V3.883zM2 5a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1zm5 3.883V10a2 2 0 0 1-.268 1L9 12.117V11a2 2 0 0 1 .268-1zM11 10a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-3a1 1 0 0 0-1-1z" fill="#8eef97"/></svg>

After

Width:  |  Height:  |  Size: 437 B

@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bxj8ep08wbnm6"
path="res://.godot/imported/GraphEdit.svg-90dae61e8e0b157ab8eff95fe4b91e53.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/SignalVisualizer/GraphEdit.svg"
dest_files=["res://.godot/imported/GraphEdit.svg-90dae61e8e0b157ab8eff95fe4b91e53.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

@ -0,0 +1 @@
<svg height="24" viewBox="0 0 16 16" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M4 12a1 1 0 0 0 1.555.832l6-4a1 1 0 0 0 0-1.664l-6-4A1 1 0 0 0 4 4z" fill="#e0e0e0"/></svg>

After

Width:  |  Height:  |  Size: 184 B

@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://be3nwoioa311t"
path="res://.godot/imported/Play.svg-a446691ffcef211028bb160b5a2d6ff1.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/SignalVisualizer/Play.svg"
dest_files=["res://.godot/imported/Play.svg-a446691ffcef211028bb160b5a2d6ff1.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

@ -0,0 +1,162 @@
@tool
extends EditorPlugin
class SignalDebuggerPlugin extends EditorDebuggerPlugin:
var SignalDebuggerPanelScene = preload("res://addons/SignalVisualizer/Debugger/SignalDebugger.tscn")
signal open_script
signal start_signal_debugging
signal stop_signal_debugging
var debugger_panel
func _has_capture(prefix) -> bool:
return prefix == "signal_debugger"
func _capture(message, data, session_id) -> bool:
if message == "signal_debugger:signal_executed":
if data.size() == 3:
var time = data[0]
var node_name = data[1]
var signal_name = data[2]
debugger_panel.log_signal_execution(time, node_name, signal_name)
return true
if message == "signal_debugger:generated_graph":
if data.size() == 1:
var signals = data[0][0] as Array
var edges = data[0][1] as Array
debugger_panel.create_tree_from_signals(signals)
debugger_panel.create_signal_graph(signals, edges)
return true
return false
func _setup_session(session_id):
debugger_panel = SignalDebuggerPanelScene.instantiate()
var session = get_session(session_id)
debugger_panel.name = "Signal Debugger"
debugger_panel.open_script.connect(func (arg1, arg2): open_script.emit(arg1, arg2))
debugger_panel.start_signal_debugging.connect(func (): start_signal_debugging.emit())
debugger_panel.stop_signal_debugging.connect(func (): stop_signal_debugging.emit())
session.started.connect(
func ():
debugger_panel.enable()
)
session.stopped.connect(
func ():
debugger_panel.stop()
debugger_panel.disable()
stop_signal_debugging.emit()
)
session.add_session_tab(debugger_panel)
var SignalVisualizerDockScene = preload("res://addons/SignalVisualizer/Visualizer/signal_visualizer_dock.tscn")
class ScriptMethodReference:
var script_reference: Script
var line_number: int
# Properties
# |===================================|
# |===================================|
# |===================================|
var dock: Control
var debugger: SignalDebuggerPlugin
# Lifecycle
# |===================================|
# |===================================|
# |===================================|
func _enter_tree():
dock = SignalVisualizerDockScene.instantiate()
debugger = SignalDebuggerPlugin.new()
dock.open_script.connect(_on_open_signal_in_script)
add_control_to_bottom_panel(dock, "Signal Visualizer")
debugger.start_signal_debugging.connect(_on_debugger_start_signal_debugging)
debugger.stop_signal_debugging.connect(_on_debugger_stop_signal_debugging)
debugger.open_script.connect(_on_open_signal_in_script)
add_debugger_plugin(debugger)
if not ProjectSettings.has_setting("autoload/Signal_Debugger"):
add_autoload_singleton("Signal_Debugger", "res://addons/SignalVisualizer/Debugger/SignalDebugger.gd")
func _exit_tree():
remove_control_from_bottom_panel(dock)
dock.free()
remove_debugger_plugin(debugger)
remove_autoload_singleton("Signal_Debugger")
# Signals
# |===================================|
# |===================================|
# |===================================|
func _on_open_signal_in_script(node_name: String, method_signature: String):
var node: Node
if get_tree().edited_scene_root.name == node_name:
node = get_tree().edited_scene_root
else:
node = get_tree().edited_scene_root.find_child(node_name)
if node != null:
var script: Script = node.get_script()
if script != null:
var editor = get_editor_interface()
var method_reference = _find_method_reference_in_script(script, method_signature)
if method_reference != null:
editor.edit_script(method_reference.script_reference, method_reference.line_number, 0)
editor.set_main_screen_editor("Script")
else:
push_warning("Requested method in script ({script}) for node ({name}) is not available.".format({ "name": node_name, "script": script.name }))
else:
push_warning("Requested script for node ({name}) is not available.".format({ "name": node_name }))
else:
push_warning("Requested script for node ({name}) is not available.".format({ "name": node_name }))
func _on_debugger_start_signal_debugging():
for session in debugger.get_sessions():
session.send_message("signal_debugger:start", [])
func _on_debugger_stop_signal_debugging():
for session in debugger.get_sessions():
session.send_message("signal_debugger:stop", [])
# Methods
# |===================================|
# |===================================|
# |===================================|
func _find_method_reference_in_script(script: Script, method_signature: String) -> ScriptMethodReference:
var line_number = __find_method_line_number_in_script(script, method_signature)
if line_number == -1:
var base_script = script.get_base_script()
if base_script:
return _find_method_reference_in_script(base_script, method_signature)
var reference = ScriptMethodReference.new()
reference.script_reference = script
reference.line_number = line_number
return reference
func __find_method_line_number_in_script(script: Script, method_signature: String) -> int:
var line_number = 0
var found = false
for line in script.source_code.split("\n", true):
line_number += 1
if line.contains(method_signature):
found = true
return line_number
return -1

@ -0,0 +1 @@
<svg height="24" viewBox="0 0 16 16" width="24" xmlns="http://www.w3.org/2000/svg"><rect x="3" y="3" height="10" width="10" rx="1" fill="#e0e0e0"/></svg>

After

Width:  |  Height:  |  Size: 154 B

@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://oo1oq2colx5b"
path="res://.godot/imported/Stop.svg-e085086fb31c334bc2f02ca2bffba522.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/SignalVisualizer/Stop.svg"
dest_files=["res://.godot/imported/Stop.svg-e085086fb31c334bc2f02ca2bffba522.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

@ -0,0 +1,31 @@
@tool
extends Label
# Properties
# |===================================|
# |===================================|
# |===================================|
# Lifecycle
# |===================================|
# |===================================|
# |===================================|
# Signals
# |===================================|
# |===================================|
# |===================================|
# Methods
# |===================================|
# |===================================|
# |===================================|
func get_text_size() -> Vector2:
return get_theme_default_font().get_string_size(text)

@ -0,0 +1,94 @@
@tool
class_name SignalGraphNode extends GraphNode
# Properties
# |===================================|
# |===================================|
# |===================================|
var connections: Array = [] :
get: return connections
set(new_value):
connections = new_value
# Lifecycle
# |===================================|
# |===================================|
# |===================================|
func _ready():
selectable = true
resizable = true
draggable = true
# Signals
# |===================================|
# |===================================|
# |===================================|
func _on_resize_request(new_minsize):
size = new_minsize
# Methods
# |===================================|
# |===================================|
# |===================================|
func has_source_signal_description(signal_name: String, destination_node_name: String) -> bool:
for child in get_children():
if child.name == "source_" + signal_name + "_" + destination_node_name:
return true
return false
func get_source_slot(signal_name: String, destination_node_name: String) -> int:
var index = 0
for child in get_children():
if child.name == "source_" + signal_name + "_" + destination_node_name:
return index
index += 1
return -1
func get_next_source_slot(signal_name: String, destination_node_name: String) -> int:
var index = 0
for child in get_children():
if child.name.begins_with("source_"):
if child.name == "source_" + signal_name + "_" + destination_node_name:
return index
index += 1
return -1
func has_destination_signal_description(signal_name: String, method_signature: String) -> bool:
for child in get_children():
if child.name == "destination_" + signal_name + "_" + _sanitize_method_signature(method_signature):
return true
return false
func get_destination_slot(signal_name: String, method_signature: String) -> int:
var index = 0
for child in get_children():
if child.name == "destination_" + signal_name + "_" + _sanitize_method_signature(method_signature):
return index
index += 1
return -1
func get_next_destination_slot(signal_name: String, method_signature: String) -> int:
var index = 0
for child in get_children():
if child.name.begins_with("destination_"):
if child.name == "destination_" + signal_name + "_" + _sanitize_method_signature(method_signature):
return index
index += 1
return -1
func _sanitize_method_signature(signature: String) -> String:
return signature.replace("::", "__")

@ -0,0 +1,12 @@
[gd_scene load_steps=2 format=3 uid="uid://cq10iaub18e54"]
[ext_resource type="Script" path="res://addons/SignalVisualizer/Visualizer/signal_graph_node.gd" id="1_ovklj"]
[node name="SignalGraphNode" type="GraphNode"]
custom_minimum_size = Vector2(100, 50)
offset_right = 232.0
offset_bottom = 54.0
resizable = true
script = ExtResource("1_ovklj")
[connection signal="resize_request" from="." to="." method="_on_resize_request"]

@ -0,0 +1,57 @@
@tool
class_name SignalGraphNodeItem extends Control
signal open_script(metadata: SignalGraphNodeItem.Metadata)
class Metadata:
var signal_name: String
var method_signature: String
var node_name: String
func _init(signal_name: String, method_signature: String, node_name: String):
self.signal_name = signal_name
self.method_signature = method_signature
self.node_name = node_name
# Properties
# |===================================|
# |===================================|
# |===================================|
@onready var label: Label = %DescriptionLabel
var signal_data: Metadata = null
var text: String = "" :
get: return text
set(new_value):
text = new_value
if label:
label.text = text
# Lifecycle
# |===================================|
# |===================================|
# |===================================|
func _ready():
_update()
# Signals
# |===================================|
# |===================================|
# |===================================|
func _on_open_signal_in_script_button_pressed():
open_script.emit(signal_data)
# Methods
# |===================================|
# |===================================|
# |===================================|
func _update():
label.text = text
var text_size = label.get_text_size()
custom_minimum_size = Vector2((text_size.x * 2) + 50, text_size.y * 3)

@ -0,0 +1,43 @@
[gd_scene load_steps=3 format=3 uid="uid://b2lwtwp6kpwtb"]
[ext_resource type="Script" path="res://addons/SignalVisualizer/Visualizer/signal_graph_node_item.gd" id="1_jrd34"]
[ext_resource type="Script" path="res://addons/SignalVisualizer/Visualizer/resizable_label.gd" id="2_4wwd5"]
[node name="SignalItem" type="Control"]
clip_contents = true
custom_minimum_size = Vector2(51, 23)
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
size_flags_horizontal = 3
size_flags_vertical = 3
script = ExtResource("1_jrd34")
[node name="HBoxContainer" type="HBoxContainer" parent="."]
custom_minimum_size = Vector2(100, 50)
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="DescriptionLabel" type="Label" parent="HBoxContainer"]
unique_name_in_owner = true
custom_minimum_size = Vector2(100, 50)
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 1
vertical_alignment = 1
clip_text = true
script = ExtResource("2_4wwd5")
[node name="OpenSignalInScriptButton" type="Button" parent="HBoxContainer"]
layout_mode = 2
text = "Open"
flat = true
[connection signal="pressed" from="HBoxContainer/OpenSignalInScriptButton" to="." method="_on_open_signal_in_script_button_pressed"]

@ -0,0 +1,67 @@
@tool
extends Control
signal open_script(node_name: String, method_signature: String)
var SignalGraphNode = preload("res://addons/SignalVisualizer/Visualizer/signal_graph_node.tscn")
var GraphNodeItem = preload("res://addons/SignalVisualizer/Visualizer/signal_graph_node_item.tscn")
# Properties
# |===================================|
# |===================================|
# |===================================|
const SOURCE_COLOR: Color = Color.SKY_BLUE
const DESTINATION_COLOR: Color = Color.CORAL
const CONNECTION_TYPE: int = 0
@onready var arrange_nodes_checkbox: CheckBox = %ArrangeNodesCheckBox
@onready var signal_details_checkbox: CheckBox = %SignalDetailsCheckBox
@onready var signal_tree: Tree = %SignalTree
@onready var graph: GraphEdit = %Graph
# Lifecycle
# |===================================|
# |===================================|
# |===================================|
# Signals
# |===================================|
# |===================================|
# |===================================|
func _on_clear_graph_button_pressed():
clear()
func _on_generate_graph_button_pressed():
clear()
var scene_signal_graph = SignalGraphUtility.create_signal_graph_from_node(get_tree().edited_scene_root, true)
SignalGraphUtility.generate_signal_graph_nodes(scene_signal_graph, graph, _on_open_signal_in_script)
SignalGraphUtility.generate_signal_graph_tree(scene_signal_graph, signal_tree)
if arrange_nodes_checkbox.button_pressed:
graph.arrange_nodes()
func _on_open_signal_in_script(data: SignalGraphNodeItem.Metadata):
open_script.emit(data.node_name, data.method_signature)
# Methods
# |===================================|
# |===================================|
# |===================================|
func clear():
_clear_graph_nodes()
_clear_tree()
func _clear_graph_nodes():
graph.clear_connections()
for child in graph.get_children():
if child is SignalGraphNode:
child.queue_free()
func _clear_tree():
signal_tree.clear()

@ -0,0 +1,78 @@
[gd_scene load_steps=5 format=3 uid="uid://dppfamjc0ji40"]
[ext_resource type="Script" path="res://addons/SignalVisualizer/Visualizer/signal_visualizer_dock.gd" id="1_akar5"]
[ext_resource type="Texture2D" uid="uid://bmnff63evbdhv" path="res://addons/SignalVisualizer/Clear.svg" id="2_m8bsv"]
[ext_resource type="Texture2D" uid="uid://bxj8ep08wbnm6" path="res://addons/SignalVisualizer/GraphEdit.svg" id="3_dtmqs"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_ae0jg"]
[node name="SignalVisualizerDock" type="Control"]
clip_contents = true
custom_minimum_size = Vector2(2.08165e-12, 200)
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_akar5")
[node name="VBoxContainer" type="VBoxContainer" parent="."]
clip_contents = true
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
size_flags_horizontal = 3
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"]
clip_contents = true
custom_minimum_size = Vector2(2.08165e-12, 50)
layout_mode = 2
theme_override_constants/separation = 8
alignment = 2
[node name="ArrangeNodesCheckBox" type="CheckBox" parent="VBoxContainer/HBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
text = "Arrange Nodes"
[node name="SignalDetailsCheckBox" type="CheckBox" parent="VBoxContainer/HBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
text = "Signal Details"
[node name="Panel" type="Panel" parent="VBoxContainer/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_styles/panel = SubResource("StyleBoxEmpty_ae0jg")
[node name="ClearGraphButton" type="Button" parent="VBoxContainer/HBoxContainer"]
layout_mode = 2
text = "Clear Graph"
icon = ExtResource("2_m8bsv")
[node name="GenerateGraphButton" type="Button" parent="VBoxContainer/HBoxContainer"]
layout_mode = 2
text = "Generate Graph"
icon = ExtResource("3_dtmqs")
[node name="HSplitContainer" type="HSplitContainer" parent="VBoxContainer"]
layout_mode = 2
size_flags_vertical = 3
[node name="SignalTree" type="Tree" parent="VBoxContainer/HSplitContainer"]
unique_name_in_owner = true
custom_minimum_size = Vector2(200, 2.08165e-12)
layout_mode = 2
column_titles_visible = true
[node name="Graph" type="GraphEdit" parent="VBoxContainer/HSplitContainer"]
unique_name_in_owner = true
layout_mode = 2
size_flags_vertical = 3
[connection signal="pressed" from="VBoxContainer/HBoxContainer/ClearGraphButton" to="." method="_on_clear_graph_button_pressed"]
[connection signal="pressed" from="VBoxContainer/HBoxContainer/GenerateGraphButton" to="." method="_on_generate_graph_button_pressed"]

@ -0,0 +1,7 @@
[plugin]
name="SignalVisualizer"
description="Visual the current scene's signal connections as a graph. Debug the current running scene's signals with automatic logging in a new debugger panel."
author="MiniGameDev"
version="1.7.0"
script="SignalVisualizer.gd"

@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/GuiResizerTopLeft.svg-eb563f557424c74239e878a
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
@ -25,6 +27,10 @@ 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

@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/GuiResizerTopRight.svg-cc1dc8556d51357c5eb0b0
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
@ -25,6 +27,10 @@ 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

@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/Pin.svg-83b09f5c00a829c5d8b136bf5bae65bc.ctex
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
@ -25,6 +27,10 @@ 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

@ -0,0 +1,58 @@
[gd_resource type="Resource" script_class="DialogicStyle" load_steps=18 format=3 uid="uid://b2fmyjrydbg57"]
[ext_resource type="Script" uid="uid://dfx2htp24tuvm" path="res://addons/dialogic/Resources/dialogic_style_layer.gd" id="1_hr3vo"]
[ext_resource type="PackedScene" uid="uid://c1k5m0w3r40xf" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_FullBackground/full_background_layer.tscn" id="2_cpmol"]
[ext_resource type="PackedScene" uid="uid://cn674foxwedqu" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_Input/full_advance_input_layer.tscn" id="3_12uyf"]
[ext_resource type="PackedScene" uid="uid://by6waso0mjpjp" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_SpeakerPortraitTextbox/textbox_with_speaker_portrait.tscn" id="4_ncyk4"]
[ext_resource type="PackedScene" uid="uid://dsbwnp5hegnu3" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_Glossary/glossary_popup_layer.tscn" id="5_qg2g4"]
[ext_resource type="PackedScene" uid="uid://dhk6j6eb6e3q" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/vn_choice_layer.tscn" id="6_c5ex4"]
[ext_resource type="PackedScene" uid="uid://cvgf4c6gg0tsy" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_TextInput/text_input_layer.tscn" id="7_bopa1"]
[ext_resource type="PackedScene" uid="uid://lx24i8fl6uo" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_History/history_layer.tscn" id="8_oycnw"]
[ext_resource type="Script" uid="uid://b14h380mah4av" path="res://addons/dialogic/Resources/dialogic_style.gd" id="9_i6i1n"]
[sub_resource type="Resource" id="Resource_w535h"]
script = ExtResource("1_hr3vo")
[sub_resource type="Resource" id="Resource_j3dy5"]
script = ExtResource("1_hr3vo")
scene = ExtResource("2_cpmol")
[sub_resource type="Resource" id="Resource_d5o1r"]
script = ExtResource("1_hr3vo")
scene = ExtResource("3_12uyf")
[sub_resource type="Resource" id="Resource_g7mor"]
script = ExtResource("1_hr3vo")
scene = ExtResource("4_ncyk4")
[sub_resource type="Resource" id="Resource_wgjgg"]
script = ExtResource("1_hr3vo")
scene = ExtResource("5_qg2g4")
[sub_resource type="Resource" id="Resource_45hxc"]
script = ExtResource("1_hr3vo")
scene = ExtResource("6_c5ex4")
[sub_resource type="Resource" id="Resource_c53vn"]
script = ExtResource("1_hr3vo")
scene = ExtResource("7_bopa1")
[sub_resource type="Resource" id="Resource_n6k7j"]
script = ExtResource("1_hr3vo")
scene = ExtResource("8_oycnw")
[resource]
script = ExtResource("9_i6i1n")
name = "babushka_dialogue_style"
layer_list = Array[String](["10", "11", "12", "13", "14", "15", "16"])
layer_info = {
"": SubResource("Resource_w535h"),
"10": SubResource("Resource_j3dy5"),
"11": SubResource("Resource_d5o1r"),
"12": SubResource("Resource_g7mor"),
"13": SubResource("Resource_wgjgg"),
"14": SubResource("Resource_45hxc"),
"15": SubResource("Resource_c53vn"),
"16": SubResource("Resource_n6k7j")
}
metadata/_latest_layer = ""

@ -0,0 +1,22 @@
@tool
extends EditorPlugin
func _enter_tree() -> void:
if !ProjectSettings.has_setting("babushka/hacks/speed_hack"):
ProjectSettings.set_setting("babushka/hacks/speed_hack",-1)
var property_info = {
"name": "babushka/hacks/speed_hack",
"type": TYPE_FLOAT,
"hint": PROPERTY_HINT_RANGE,
"hint_string": "-1,20,0.5"
}
ProjectSettings.add_property_info(property_info)
ProjectSettings.set_initial_value("babushka/hacks/speed_hack",-1)
func _exit_tree() -> void:
# Clean-up of the plugin goes here.
pass

@ -0,0 +1,7 @@
[plugin]
name="BabushkaHelpers"
description=""
author="Cozy Raven"
version=""
script="babushkahelpers.gd"

@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/icon_bg.png-5937ce0a857c4a8a9d624ea9ebf09a97.
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
@ -25,6 +27,10 @@ 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

@ -19,6 +19,8 @@ dest_files=["res://.godot/imported/default.svg-3f34de5e45bef5de4d9c15ef78c00c6c.
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
@ -26,6 +28,10 @@ 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

@ -19,6 +19,8 @@ dest_files=["res://.godot/imported/divide.svg-4928f878a07ba93ebc44d8ae73ad4c1f.c
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
@ -26,6 +28,10 @@ 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

@ -19,6 +19,8 @@ dest_files=["res://.godot/imported/join.svg-2f0d7b9e8e01cf0e62b8c3a85aff6213.cte
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
@ -26,6 +28,10 @@ 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

@ -19,6 +19,8 @@ dest_files=["res://.godot/imported/leave.svg-c936f6e3d601b8c12c23f205a765084e.ct
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
@ -26,6 +28,10 @@ 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

@ -19,6 +19,8 @@ dest_files=["res://.godot/imported/minus.svg-29f22d1aa24635bae2c03057c07be8bc.ct
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
@ -26,6 +28,10 @@ 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

@ -19,6 +19,8 @@ dest_files=["res://.godot/imported/multiply.svg-0e9db99aafb66d43ee14adcca26c5b47
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
@ -26,6 +28,10 @@ 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

@ -19,6 +19,8 @@ dest_files=["res://.godot/imported/plus.svg-e094b0b8505b5d910717883d06553532.cte
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
@ -26,6 +28,10 @@ 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

@ -19,6 +19,8 @@ dest_files=["res://.godot/imported/set.svg-f100fad003be2285d5d0da5c58417203.ctex
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
@ -26,6 +28,10 @@ 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

@ -19,6 +19,8 @@ dest_files=["res://.godot/imported/update.svg-cefa0fe6bfa50911bb9a77982288e485.c
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
@ -26,6 +28,10 @@ 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

@ -19,6 +19,8 @@ dest_files=["res://.godot/imported/decrement_icon.svg-9556cf56db91e200fb946372e0
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
@ -26,6 +28,10 @@ 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

@ -19,6 +19,8 @@ dest_files=["res://.godot/imported/increment_icon.svg-081e6509e76349f0628c55a41e
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
@ -26,6 +28,10 @@ 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

@ -19,6 +19,8 @@ dest_files=["res://.godot/imported/add-folder.svg-41a970370f904038e63c13bddbdb64
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
@ -26,6 +28,10 @@ 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

@ -19,6 +19,8 @@ dest_files=["res://.godot/imported/close-icon.svg-c630c93ada599b08938f4854f5376f
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
@ -26,6 +28,10 @@ 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

@ -19,6 +19,8 @@ dest_files=["res://.godot/imported/closed-icon.svg-b4f16653b91d6792313a130565319
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
@ -26,6 +28,10 @@ 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

@ -19,6 +19,8 @@ dest_files=["res://.godot/imported/expand-icon.svg-26099b197ab0f314e2253848fcc22
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
@ -26,6 +28,10 @@ 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

@ -19,6 +19,8 @@ dest_files=["res://.godot/imported/open-icon.svg-1a2ae6d0121a79b624c0fb87cc9ceea
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
@ -26,6 +28,10 @@ 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

@ -19,6 +19,8 @@ dest_files=["res://.godot/imported/variable.svg-50a50248b9d47e5556571e4111e8d5b4
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
@ -26,6 +28,10 @@ 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

@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/variable_icon.png-df9d711980209a7752dc8762037
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
@ -25,6 +27,10 @@ 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

@ -19,6 +19,8 @@ dest_files=["res://.godot/imported/warning.svg-a48ae93c4663637f2aca88d055604495.
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
@ -26,6 +28,10 @@ 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

@ -19,6 +19,8 @@ dest_files=["res://.godot/imported/character.svg-48bc1c93fa13733a935ca2c669d933a
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
@ -26,6 +28,10 @@ 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

@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/icon_character.png-97a1851bbafe2b302ea88c25a8
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
@ -25,6 +27,10 @@ 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

@ -19,6 +19,8 @@ dest_files=["res://.godot/imported/portrait.svg-7d29c7cfe3e086d65dce33c3d66c48cd
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
@ -26,6 +28,10 @@ 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

@ -19,6 +19,8 @@ dest_files=["res://.godot/imported/add-character.svg-a658b65c1225b02657a50d5c965
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
@ -26,6 +28,10 @@ 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

@ -19,6 +19,8 @@ dest_files=["res://.godot/imported/add-timeline.svg-86961b528ebdf01f585931a15fea
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
@ -26,6 +28,10 @@ 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

@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/Unknown.png-1cc7645f56036e8d378a70ac1dd772bb.
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
@ -25,6 +27,10 @@ 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

@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dialogic-logo.svg-e43201cabc9573eeb3f78fd91ea
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
@ -25,6 +27,10 @@ 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

@ -19,6 +19,8 @@ dest_files=["res://.godot/imported/plugin-icon.svg-aa6701e8ed73f5fe5d177dfddce3a
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
@ -26,6 +28,10 @@ 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

@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/preview_character.png-54f0625ad8281c635fea35a
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
@ -25,6 +27,10 @@ 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

@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/preview_character_speaker.png-c0667c648e2901a
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
@ -25,6 +27,10 @@ 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

@ -21,6 +21,7 @@ msdf_pixel_range=8
msdf_size=48
allow_system_fallback=true
force_autohinter=false
modulate_color_glyphs=false
hinting=1
subpixel_positioning=1
keep_rounding_remainders=true

@ -21,6 +21,7 @@ msdf_pixel_range=8
msdf_size=48
allow_system_fallback=true
force_autohinter=false
modulate_color_glyphs=false
hinting=1
subpixel_positioning=1
keep_rounding_remainders=true

@ -21,6 +21,7 @@ msdf_pixel_range=8
msdf_size=48
allow_system_fallback=true
force_autohinter=false
modulate_color_glyphs=false
hinting=1
subpixel_positioning=1
keep_rounding_remainders=true

@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/BubbleEnd.png-a2bd812e4aeb33a7c97291d41dcc179
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
@ -25,6 +27,10 @@ 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

@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/rpg_box.webp-6ea0804b52e01599dbc94ffacc31d433
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
@ -25,6 +27,10 @@ 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

@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/next-indicator-dialogic-1.png-694f122eff55e96
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
@ -25,6 +27,10 @@ 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 885 B

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cyfjhl5qp3lpj"
path="res://.godot/imported/next-indicator-dialogic-2.png-738692064a5e64a28dcba134b029afb9.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/dialogic/Example Assets/next-indicator/next-indicator-dialogic-2.png"
dest_files=["res://.godot/imported/next-indicator-dialogic-2.png-738692064a5e64a28dcba134b029afb9.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

@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/next-indicator.png-e3b7b80d9da791a1d0a061a728
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
@ -25,6 +27,10 @@ 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

@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/pl5 blink.png-dd40283850366d49ae61df7b137ffd7
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
@ -25,6 +27,10 @@ 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

@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/pl5 doubt.png-c657bfaf88fd5c06956ec703146704c
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
@ -25,6 +27,10 @@ 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

@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/pl5 hate.png-004951da12b71d275d61f3fe7af6c760
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
@ -25,6 +27,10 @@ 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

@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/pl5 plot.png-7c5bbb51327eb4b7b1b78f4597ed6c60
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
@ -25,6 +27,10 @@ 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

@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/pl5 sad.png-778e9490c4f77059d6c87f720b2bbff7.
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
@ -25,6 +27,10 @@ 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

@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/pl5 scoff.png-f0b3e5d0a8895f55d2377978a0992a3
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
@ -25,6 +27,10 @@ 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

@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/pl5 shy.png-db66f14e608e1c150163af82c8a9f341.
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
@ -25,6 +27,10 @@ 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

@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/pl5 surprise.png-9f07d67f3c68589bb2cfec738d68
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
@ -25,6 +27,10 @@ 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

@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/pl5.png-0e78d740b51df476d423c20a3850d39a.ctex
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
@ -25,6 +27,10 @@ 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

@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/pl3 avoid.png-f8f5fd2a91f270ef9417e3b4bda0f35
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
@ -25,6 +27,10 @@ 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

@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/pl3 blink.png-bc002e72d459c371c5ebb5d3d237500
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
@ -25,6 +27,10 @@ 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

@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/pl3 concept.png-baa2419b24f73cd7e47554567e865
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
@ -25,6 +27,10 @@ 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

@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/pl3 confusion.png-447505e4db69107e418a56eb992
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
@ -25,6 +27,10 @@ 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

@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/pl3 doubt.png-ad639761c380e37b578d46414772df7
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
@ -25,6 +27,10 @@ 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

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

Loading…
Cancel
Save