Giter Club home page Giter Club logo

godot_spatial_gardener's Introduction

Plugin logo

A Godot plugin for painting foliage and props on any 3D surface

Animated cover


What is it for?

It's meant to simplify foliage placement in a natural-feeling way without having to use heightmap terrain or writing procedural placement algorithms.

It can also handle thousands of foliage instances without completely tanking the FPS (with an reasonable setup).

This is a single player plugin and works best with finite medium-sized scenes. Think platformers, shooters, adventure games, anything with a hand-made level.

Video preview


Stability

Current stable release requires at least Godot v4.2.

Want a test-drive? Go to Releases and get the most recent windows build: godot_spatial_gardener_showcase_windows_x64_<version>.zip.

Test-drive


Installation

This plugin is installed the same way as other Godot plugins.

Download the code by clicking green Code button and then Download ZIP. Unpack it anywhere you like.

Copy the folder addons/dreadpon.spatial_gardener/ to res://addons/ in your Godot project and enable it from Project -> Project Settings -> Plugins.

Paint 1


Tutorial

For a detailed guide you can refer to my tutorial.

It comes in two formats, depending on your preference:

Text tutorial is the most up-to-date, but video better illustrates each step due to being a video, duh.


Contribution

If you want to report a bug or request a feature, you should do so on GitHub using Issues.

Refer here for more details.


Sponsor this project

You're welcome to support me on:

Or with crypto:

  • BTC bc1qr7wrgagssy5gu03l7r92rsd59qpcwnp49qkjnf
  • ETH 0xbf8596a783c473A259F07b472FbcfA3aB1E52956

This will help make updates for this plugin and embark on new exciting projects!

You can also join me on Discord:


Branding

You can use 'Spatial Gardener' logos on the basis of 'fair use' whenever you mention this plugin (e.g. in a video review/tutorial).

As long as you don't modify them in any way, claim as your own or redistribute/resell you should be fine.

You can download them here.


Third-Party Credits

Algorithms and code architecture

3D models

Audio

Artwork

godot_spatial_gardener's People

Contributors

aaronfranke avatar dreadpon avatar flavelius avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

godot_spatial_gardener's Issues

[BUG] 3.5rc7 rightclick drag scales brush without modifier pressed

Godot version
3.5rc7 mono official

Plugin version
current git repository state (7b127ad)

Platform
Windows 10

Issue description
While having the Gardener selected, rightclick-drag scales the brush instead of adjusting the view (3D editor camera rotation). This happens even though in the gardener settings it says shift as modifier is required; and setting this to another modifier like control also doesn't change anything.
My 3D editor navigation scheme is maya, maybe that matters:
grafik
grafik

Steps to Reproduce
maybe it's reproducable with the settings from the screenshot, not sure.

Minimal reproduction project
This is more an editor-settings/addon problem than a project-problem

[BUG] Density setting doesnt change anything

Godot version
v3.5.stable.official [991bb6ac7]

Plugin version
1.1.0

Platform
Windows 10

Issue description
Density Setting doesnt change anything

Steps to Reproduce
I followed youtube tutorial https://www.youtube.com/watch?v=AqRz0URe3bo&list=PLtsfK5HW0bX-TKR8eO_uKEguii8w9dGIh&index=1
And when painting density is really sparce for grass, so I tried increasing density, but it does nothing, I tried restarting godot engine, still same issue, both in editor and game
image

[BUG]

v4.2.1.stable.official [b09f793f5]

Plugin version
"1.3.1 [83def9c]"

Platform
mac

Issue description
Describe your issue. What is expected to happen? What actually happened?
When I paint with the gardener, I paint. When I save and reload the project, the painted changes are gone.
If I open the tscn I see the objects are there, and the moment the project is reloaded, they disapear from the tscn.

Steps to Reproduce
Describe steps for others to reproduce this issue
I don't have many steps... I installed the plugin, then I added the gardener, I added a static object on the same collision layer. I added the root folder for the gardener, then I added a plant and added a tscn to the plant (I did not add a .mesh). Then I painted, saved, reloaded the project.

Minimal reproduction project
If applicable, please paste a link to minimal reproduction project that shows this issue in action.
gardener_reload_issue.zip

[BUG] Brushes changed to Paint, Paint2, Paint3, Paint4, instead of including Erase, Single, and Reapply

Godot version
Godot v3.5.rc4.mono.official

Plugin version
v1.0.0-stable (although I made a minor tweak to get it to work with Godot 3.5)

Platform
Windows 10

Issue description
After closing and reopening Godot, I can no longer erase and all the brush tabs are just Paint with a number.

image

Steps to Reproduce
Not entirely sure how this occurred. I was in a separate branch, created a commit, merged to main, and pulled main. Perhaps something was lost a long the way, but it looks like everything in the addons folder is still there.

Minimal reproduction project

[BUG] buffer_update: Buffer argument is not a valid buffer of any type.

Godot version: v4.1.1
Plugin version: v1.3.0-stable (c17f838)
Platform: Windows 10

Issue description
Maybe related to #32 or maybe to godotengine/godot#68592 ?
Every time the MMI_container has more than one MuiltimeshInstance3D it throws following error on loading of the map:

E 0:00:03:0011   buffer_update: Buffer argument is not a valid buffer of any type.
  <C++ Error>    Method/function failed. Returning: ERR_INVALID_PARAMETER
  <C++ Source>   drivers/vulkan/rendering_device_vulkan.cpp:5858 @ buffer_update()

Err thrown in here

Steps to Reproduce

  1. Add at least two plants
  2. run the scene.

Minimal reproduction project
Funny enough is that I cannot reproduce this in any small project this only happens in my bigger one. And if I delete the second plant everything works as expected.

Just want to say Thank you!

I have neither a bug issue or feature request, I just want to say a heartfelt THANK YOU for releasing this really mind boggling awesome looking plugin under MIT!
And then on top creating these really fantastic video tutorials and demos and showcase!

[BUG] (?) Hitching in editor

On the latest stable release, I have a lot of trees, and the editor hitches as I move the camera around (but in-game it seems fine). Is this something other people have seen? Should I try a nightly version?

[BUG] LOD continues to use editor camera when it should use active scene camera during runtime.

Godot version
Specify a numerical Godot version you are using. Include Git commit hash if possible.

v4.2.1.stable.mono.official [b09f793f5]

Plugin version
Specify a numerical Spatial Gardener version you are using. Include Git commit hash if possible.

1.3.1 (7eb20eb)

Platform
What platform you were using, when you encountered this bug?

Windows 10

Issue description
Describe your issue. What is expected to happen? What actually happened?

When trying out the plugin in a scene of my own, I noticed it would only use the editor viewpoint for LOD updates, during runtime that area would remain loaded, and nothing new would load in with the runtime active camera. I then tried using the provided showcase to see if it had the same issue, and it did, the area where the editor camera was left would remain active, and while following the train it wouldn't cause further updates.

Steps to Reproduce
Describe steps for others to reproduce this issue

  1. Open demo project and scene provided on GitHub
  2. Move editor camera away from area
  3. Play scene and ride the train, grass won't appear as it thinks it's still outside the LOD range

Minimal reproduction project
If applicable, please paste a link to minimal reproduction project that shows this issue in action.
Demo project on this GitHub

[BUG] Errors in exported Game

Godot version v4.2.1.stable.official.b09f793f5

Plugin version
1.3.1

Platform
Windows 10

Issue description
When exporting the game it looks like Spatial Gardener is trying to access some editor features while in production mode.
Those look like this:

Godot Engine v4.2.1.stable.official.b09f793f5 - https://godotengine.org
Vulkan API 1.3.260 - Forward+ - Using Vulkan Device #0: NVIDIA - NVIDIA GeForce RTX 3090
 
USER SCRIPT ERROR: Parse Error: Could not find type "EditorUndoRedoManager" in the current scope.
   at: GDScript::reload (res://addons/dreadpon.spatial_gardener/utility/undo_redo_interface.gd:10)
USER SCRIPT ERROR: Parse Error: Could not find type "EditorUndoRedoManager" in the current scope.
   at: GDScript::reload (res://addons/dreadpon.spatial_gardener/utility/undo_redo_interface.gd:17)
USER SCRIPT ERROR: Parse Error: Could not find type "EditorUndoRedoManager" in the current scope.
   at: GDScript::reload (res://addons/dreadpon.spatial_gardener/utility/undo_redo_interface.gd:24)
USER SCRIPT ERROR: Parse Error: Could not find type "EditorUndoRedoManager" in the current scope.
   at: GDScript::reload (res://addons/dreadpon.spatial_gardener/utility/undo_redo_interface.gd:44)
USER SCRIPT ERROR: Parse Error: Could not find type "EditorUndoRedoManager" in the current scope.
   at: GDScript::reload (res://addons/dreadpon.spatial_gardener/utility/undo_redo_interface.gd:69)
USER SCRIPT ERROR: Parse Error: Could not find type "EditorUndoRedoManager" in the current scope.
   at: GDScript::reload (res://addons/dreadpon.spatial_gardener/utility/undo_redo_interface.gd:76)
USER SCRIPT ERROR: Parse Error: Could not find type "EditorUndoRedoManager" in the current scope.
   at: GDScript::reload (res://addons/dreadpon.spatial_gardener/utility/undo_redo_interface.gd:83)
USER SCRIPT ERROR: Compile Error: 
   at: GDScript::reload (res://addons/dreadpon.spatial_gardener/controls/input_fields/ui_input_field.gd:-1)
USER SCRIPT ERROR: Compile Error: 
   at: GDScript::reload (res://addons/dreadpon.spatial_gardener/controls/input_fields/ui_if_object.gd:-1)
USER SCRIPT ERROR: Parse Error: Identifier "EditorFileDialog" not declared in the current scope.
   at: GDScript::reload (res://addons/dreadpon.spatial_gardener/greenhouse/greenhouse.gd:59)
USER SCRIPT ERROR: Compile Error: 
   at: GDScript::reload (res://addons/dreadpon.spatial_gardener/controls/side_panel/ui_side_panel.gd:-1)
ERROR: Failed to load script "res://addons/dreadpon.spatial_gardener/controls/side_panel/ui_side_panel.gd" with error "Compilation failed".
   at: load (modules/gdscript/gdscript.cpp:2788)
USER SCRIPT ERROR: Parse Error: Could not resolve class "res://addons/dreadpon.spatial_gardener/controls/input_fields/ui_if_thumbnail_base.gd".
   at: GDScript::reload (res://addons/dreadpon.spatial_gardener/controls/input_fields/ui_if_thumbnail_array.gd:0)
USER SCRIPT ERROR: Parse Error: Identifier "EditorFileDialog" not declared in the current scope.
   at: GDScript::reload (res://addons/dreadpon.spatial_gardener/controls/input_fields/ui_if_thumbnail_base.gd:56)
USER SCRIPT ERROR: Compile Error: 
   at: GDScript::reload (res://addons/dreadpon.spatial_gardener/controls/input_fields/ui_if_thumbnail_object.gd:-1)
USER SCRIPT ERROR: Parse Error: Could not find type "EditorUndoRedoManager" in the current scope.
   at: GDScript::reload (res://addons/dreadpon.spatial_gardener/utility/undo_redo_interface.gd:10)
USER SCRIPT ERROR: Parse Error: Could not find type "EditorUndoRedoManager" in the current scope.
   at: GDScript::reload (res://addons/dreadpon.spatial_gardener/utility/undo_redo_interface.gd:17)
USER SCRIPT ERROR: Parse Error: Could not find type "EditorUndoRedoManager" in the current scope.
   at: GDScript::reload (res://addons/dreadpon.spatial_gardener/utility/undo_redo_interface.gd:24)
USER SCRIPT ERROR: Parse Error: Could not find type "EditorUndoRedoManager" in the current scope.
   at: GDScript::reload (res://addons/dreadpon.spatial_gardener/utility/undo_redo_interface.gd:44)
USER SCRIPT ERROR: Parse Error: Could not find type "EditorUndoRedoManager" in the current scope.
   at: GDScript::reload (res://addons/dreadpon.spatial_gardener/utility/undo_redo_interface.gd:69)
USER SCRIPT ERROR: Parse Error: Could not find type "EditorUndoRedoManager" in the current scope.
   at: GDScript::reload (res://addons/dreadpon.spatial_gardener/utility/undo_redo_interface.gd:76)
USER SCRIPT ERROR: Parse Error: Could not find type "EditorUndoRedoManager" in the current scope.
   at: GDScript::reload (res://addons/dreadpon.spatial_gardener/utility/undo_redo_interface.gd:83)
USER SCRIPT ERROR: Compile Error: 
   at: GDScript::reload (res://addons/dreadpon.spatial_gardener/utility/input_field_resource/input_field_resource.gd:-1)
USER SCRIPT ERROR: Compile Error: 
   at: GDScript::reload (res://addons/dreadpon.spatial_gardener/toolshed/toolshed.gd:-1)
USER SCRIPT ERROR: Compile Error: 
   at: GDScript::reload (res://addons/dreadpon.spatial_gardener/utility/defaults.gd:-1)
USER SCRIPT ERROR: Parse Error: Identifier "EditorFileDialog" not declared in the current scope.
   at: GDScript::reload (res://addons/dreadpon.spatial_gardener/greenhouse/greenhouse.gd:59)
USER SCRIPT ERROR: Parse Error: Identifier "EditorFileDialog" not declared in the current scope.
   at: GDScript::reload (res://addons/dreadpon.spatial_gardener/controls/input_fields/ui_if_thumbnail_base.gd:56)
USER SCRIPT ERROR: Compile Error: 
   at: GDScript::reload (res://addons/dreadpon.spatial_gardener/controls/input_fields/ui_if_thumbnail_array.gd:-1)
USER SCRIPT ERROR: Compile Error: 
   at: GDScript::reload (res://addons/dreadpon.spatial_gardener/greenhouse/greenhouse_plant.gd:-1)
USER SCRIPT ERROR: Parse Error: Could not find type "EditorUndoRedoManager" in the current scope.
   at: GDScript::reload (res://addons/dreadpon.spatial_gardener/utility/undo_redo_interface.gd:10)
USER SCRIPT ERROR: Parse Error: Could not find type "EditorUndoRedoManager" in the current scope.
   at: GDScript::reload (res://addons/dreadpon.spatial_gardener/utility/undo_redo_interface.gd:17)
USER SCRIPT ERROR: Parse Error: Could not find type "EditorUndoRedoManager" in the current scope.
   at: GDScript::reload (res://addons/dreadpon.spatial_gardener/utility/undo_redo_interface.gd:24)
USER SCRIPT ERROR: Parse Error: Could not find type "EditorUndoRedoManager" in the current scope.
   at: GDScript::reload (res://addons/dreadpon.spatial_gardener/utility/undo_redo_interface.gd:44)
USER SCRIPT ERROR: Parse Error: Could not find type "EditorUndoRedoManager" in the current scope.
   at: GDScript::reload (res://addons/dreadpon.spatial_gardener/utility/undo_redo_interface.gd:69)
USER SCRIPT ERROR: Parse Error: Could not find type "EditorUndoRedoManager" in the current scope.
   at: GDScript::reload (res://addons/dreadpon.spatial_gardener/utility/undo_redo_interface.gd:76)
USER SCRIPT ERROR: Parse Error: Could not find type "EditorUndoRedoManager" in the current scope.
   at: GDScript::reload (res://addons/dreadpon.spatial_gardener/utility/undo_redo_interface.gd:83)
USER SCRIPT ERROR: Compile Error: 
   at: GDScript::reload (res://addons/dreadpon.spatial_gardener/arborist/arborist.gd:-1)
USER SCRIPT ERROR: Parse Error: Identifier "EditorFileDialog" not declared in the current scope.
   at: GDScript::reload (res://addons/dreadpon.spatial_gardener/greenhouse/greenhouse.gd:59)
USER SCRIPT ERROR: Compile Error: 
   at: GDScript::reload (res://addons/dreadpon.spatial_gardener/gardener/data_import_export.gd:-1)
USER SCRIPT ERROR: Compile Error: 
   at: GDScript::reload (res://addons/dreadpon.spatial_gardener/gardener/gardener.gd:-1)
ERROR: Failed to load script "res://addons/dreadpon.spatial_gardener/gardener/gardener.gd" with error "Compilation failed".
   at: load (modules/gdscript/gdscript.cpp:2788)

Steps to Reproduce

  1. Use spatial gardener in any scene
  2. Export the game to Windows
  3. Open your user data folder "C:\Users\NAME\AppData\Roaming\Godot\app_userdata\PROJECTNAME\logs"
  4. See a lot of errors in the godot.log

Minimal reproduction project

  • tested it with a big project and with a clean scene with nothing but a static body and Gardener with some shapes

[BUG] Placed foliage disappearing on scene reload as well as after starting/playing scene

Godot version
"4.2.1"

Plugin version
"1.3.1 (stable) as well as current master branch"

Platform
"Windows 10"

Issue description
Meshes which are placed with the painting tool in a scene disappear if we play the scene via the "play scene" option in the editor.
In addition to that, saving and reloading the project also gets rid of the meshes. (Sometimes empty MultiMeshInstance nodes get left over in the gardener.)
I was also able to reproduce the same bug by switching between larger scenes (only happening in a larger project, I presume due to Godot loading/unloading scenes dynamically to avoid high memory usage?)

Steps to Reproduce
1.) Download attached "FoliageTest.zip" and extract. (uses current addon from master branch)
2.) open test.tscn, click on "Hardener" and select "Greenhouse_Plant_State"
3.) Start painting on the plane. Green blocks should appear.
green

4.) save the scene with CTRL+S and start playing the scene. The cubes aren't visible:
render

5.) closing and reopening the project also causes the cubes to disappear/not render properly.

Minimal reproduction project
FoliageTest.zip

Apologies in advance if i'm missing crucial info here and/or if i'm not using the tool properly.
I saw this bugreport: #36
Although in my case it doesn't have to do with the LOD distance. (I'ts by default on -1.)

I'll dig through the code to see what could be causing this but just in case i wanted to post this bugreport here.
In any case thank you for this great tool. :)

/EDIT:
Just found out that this bug happens if you use "SpawnedNode3D" instead of "Mesh" in the LOD settings. With regular meshes (.tres) files it works fine.

[BUG]Unable to load addon script from path: 'res://addons/dreadpon.spatial_gardener/plugin.gd'.

Godot v3.4.2.stable.mono.oficial [45eaa2daf]
OS: Ubuntu 18.04

godot_spatial_gardener_demo_v1.0.0-stable.zip

godot_spatial_gardener_demo_v1.0.0-stable.zip
"0.1.0 (3283e07), etc."

Unable to load addon script from path: 'res://addons/dreadpon.spatial_gardener/plugin.gd'. This might be due to a code error in that script.
Disabling the addon at 'res://addons/dreadpon.spatial_gardener/plugin.cfg' to prevent further errors.

add modifyable text labels to brushes

issue:
sometimes godot doesn't properly save a thumbnail to a scene or mesh resulting in a blank brush with a default text that does not reflect the instance stored in the brush. This leaves you guessing what the brush is.

This leads to a lot of trial and error when you have a diverse amount of fawna and clutter.

gardener_labels_example2

proposal:
I would like see see user editable labels on brushes...readable simply on the thumbnail or mouse over popup.
This would remove the trial and error method of figuring out what brush is what.

Aternative:
allow the user to supply their own thumbnail.

[BUG][PSA: DATA LOSS] Arborist loses all data upon saving/changing scenes

Godot version
v4.2.2.stable.official [15073afe3]

Plugin version
1.3.2 (asset library)

Platform
Windows 10

Issue description
Okay this has happened a few times already, but I'm not that far into the project that catastrophe has happened. Some times when I save another scene and change to the scene with gardener, the plugin simply goes haywire and stops working, spewing endless stream of errors:
kuva
From this situation I've tried 2 different options:

  1. Save and reload the project. After reloading I'm greeted with following errors:
res://addons/dreadpon.spatial_gardener/arborist/arborist.gd:89 - Invalid call. Nonexistent function 'duplicate_tree' in base 'Nil'.
INFO: gardener.gd (Gardener): Found existing Arborist
  res://addons/dreadpon.spatial_gardener/arborist/mmi_octree/mmi_octree_node.gd:316 - Invalid set index 'cast_shadow' (on base: 'Nil') with value of type 'int'.
  res://addons/dreadpon.spatial_gardener/arborist/mmi_octree/mmi_octree_node.gd:316 - Invalid set index 'cast_shadow' (on base: 'Nil') with value of type 'int'.
  res://addons/dreadpon.spatial_gardener/arborist/mmi_octree/mmi_octree_node.gd:316 - Invalid set index 'cast_shadow' (on base: 'Nil') with value of type 'int'.
  res://addons/dreadpon.spatial_gardener/arborist/mmi_octree/mmi_octree_node.gd:316 - Invalid set index 'cast_shadow' (on base: 'Nil') with value of type 'int'.
  res://addons/dreadpon.spatial_gardener/arborist/mmi_octree/mmi_octree_node.gd:526 - Cannot call method 'get_node_or_null' on a null value.
  res://addons/dreadpon.spatial_gardener/arborist/mmi_octree/mmi_octree_node.gd:567 - Cannot call method 'get_child_count' on a null value.
  res://addons/dreadpon.spatial_gardener/arborist/mmi_octree/mmi_octree_node.gd:526 - Cannot call method 'get_node_or_null' on a null value.
  res://addons/dreadpon.spatial_gardener/arborist/mmi_octree/mmi_octree_node.gd:567 - Cannot call method 'get_child_count' on a null value.
  res://addons/dreadpon.spatial_gardener/arborist/mmi_octree/mmi_octree_node.gd:526 - Cannot call method 'get_node_or_null' on a null value.
  res://addons/dreadpon.spatial_gardener/arborist/mmi_octree/mmi_octree_node.gd:567 - Cannot call method 'get_child_count' on a null value.
  res://addons/dreadpon.spatial_gardener/arborist/mmi_octree/mmi_octree_node.gd:526 - Cannot call method 'get_node_or_null' on a null value.
  res://addons/dreadpon.spatial_gardener/arborist/mmi_octree/mmi_octree_node.gd:567 - Cannot call method 'get_child_count' on a null value.
  res://addons/dreadpon.spatial_gardener/arborist/mmi_octree/mmi_octree_node.gd:526 - Cannot call method 'get_node_or_null' on a null value.
  res://addons/dreadpon.spatial_gardener/arborist/mmi_octree/mmi_octree_node.gd:567 - Cannot call method 'get_child_count' on a null value.
  res://addons/dreadpon.spatial_gardener/arborist/mmi_octree/mmi_octree_node.gd:526 - Cannot call method 'get_node_or_null' on a null value.
  res://addons/dreadpon.spatial_gardener/arborist/mmi_octree/mmi_octree_node.gd:567 - Cannot call method 'get_child_count' on a null value.
  res://addons/dreadpon.spatial_gardener/arborist/mmi_octree/mmi_octree_node.gd:526 - Cannot call method 'get_node_or_null' on a null value.
  res://addons/dreadpon.spatial_gardener/arborist/mmi_octree/mmi_octree_node.gd:567 - Cannot call method 'get_child_count' on a null value.
  res://addons/dreadpon.spatial_gardener/arborist/mmi_octree/mmi_octree_node.gd:526 - Cannot call method 'get_node_or_null' on a null value.
  res://addons/dreadpon.spatial_gardener/arborist/mmi_octree/mmi_octree_node.gd:567 - Cannot call method 'get_child_count' on a null value.
  res://addons/dreadpon.spatial_gardener/arborist/mmi_octree/mmi_octree_node.gd:316 - Invalid set index 'cast_shadow' (on base: 'Nil') with value of type 'int'.

All the props are in place, but the gardener doesn't recognize them. Inspecting diff of the scene file it seems that some data has been permanently lost.

OR

  1. Reload saved scene. This seems to fix the issue, so as long as I know to do this I can prevent data loss (unless there was unsaved changes).

And this is where the PSA comes in:

If Gardener starts spamming errors, reload saved scene. DO NOT SAVE.

Steps to Reproduce

  1. Make a scene with Gardener (let's say test.tscn), and second unrelated scene (character.tscn) instantiated in that scene.
  2. Have both scenes opened in editor.
  3. Save the character.tscn.
  4. Change tabs to test.tscn.

Minimal reproduction project
GardererMRP.zip
Do steps 2-4 with this MRP.

LODs not evenly distributed [BUG]

Godot version
v3.5.rc3.official [af8a02dda]

Plugin version
1.0.0

Platform
Windows 10

Issue description
When zooming in and out, the LODs are not chosen evenly, but primarily LOD0 and LOD2 are being used when using 3 LODs.
LOD1 will only show for objects which are at a very specific distance.

Steps to Reproduce

  1. Load your demo scene
  2. For one of the Tree-Brushes, replace LOD 1 and 2 with very different big models.
  3. Zoom in and out
  4. Notice that LOD1 will only show up very briefly.

Godot 3.5 [BUG]

Godot version: 3.5

Plugin version: 1.0.0

Platform: Windows 11

Issue:
The plugin can't enabled

[FEATURE REQUEST] Enable deleting floating instances

Describe the problem you're trying to solve in your project
I'm not trying to solve a problem in my project; it's just something that can become a problem.
When painting vegetation onto a mesh that later changes, instances can end up floating in the air.
But as the brush is projected onto ground, it cannot reach those instances anymore to clean them up.

Describe a feature you consider and how it will help you
I guess there could be multiple ways to solve this.
-The most hardcore way (that substance painter afaik uses to reapply edits to a changed mesh): remember each brush stroke and add an option to replay the sequence of actions.
-The most naîve option: reproject instances of a selected type a specific distance downwards.
-Or more viable options:
-Make the brush (sphere) detachable (and in detached state positionable via transform-gizmos) with a button to apply on click
-Add an automated way to delete instances that are a certain radius apart from potential ground or other geometry in general

Describe alternatives you've considered
Not using an addon for foliage placement

Describe how you imagine it would work. With code, pseudo-code, diagram or a drawing
I think each option already kind of explains itself

[BUG] LOD0 Resets After Engine Restart

Godot Version: 4.2.1 Stable Mono

Plugin Version: 1.3.1 Stable

Platform: Windows

Description:
If a plant has more than 1 LOD, LOD0 will reset to null when the editor has been re-opened after closing. This gives the error of "servers/rendering/renderer_rd/storage_rd/mesh_storage.cpp:1634 - Condition "multimesh->mesh.is_null()" is true." Since that LOD is null.

Steps To Reproduce:
1 ) Create a new plant type
2 ) Give it more than 1-2 LODs
4 ) Close editor and re-open it

Add mesh variation to plants

Describe the problem you're trying to solve in your project
Sometimes you want your tree to look slightly different: extra branch here, extra flower there. But for all intents and purposes it should be the same plant.

Describe a feature you consider and how it will help you
For that we can have 'mesh variation' list, from where a mesh is chosen randomly when painting. It might even have a weighted chance of appearence - to make some variations rarer than others.

Describe alternatives you've considered
An alternative is to use entirely different plants. Perfectly doable, but a pain to manage.

Describe how you imagine it would work. With code, pseudo-code, diagram or a drawing
For each LOD_Variant we can have a list of mesh variations. This could look a bit cumbersome, so maybe a custom UI element (like a spreadsheet/table) is in order.

Plugin broken on godot 3.5 'problem with plugin.GD'

Godot 3.5 mono windows 64

plugin version 1.0.0

Windows 11 device

The plugin will not enable in godot 3.5 mono with the text: 'Unable to load addon script from path: 'res://addons/dreadpon.spatial_gardener/plugin.gd'. This might be due to a code error in that script.
Disabling the addon at 'res://addons/dreadpon.spatial_gardener/plugin.cfg' to prevent further errors.'

I have checked plugin.gd and it has the error: (16,48) couldn't fully preload the script, possible cyclic reference or compilation error. use "load()" instead if a cyclic reference is intended.'

This error is on the line referencing the garderner.gd file. When I opened that fine I received the same error about line 18, referencing the defaults script. The defaults script had the same error at line 9 referencing the toolshed script, which had the same error at line 11 referencing the toolshed_brush script which has the error message "Script isn't fully loaded (cyclic preload?)"

To reproduce attempt to add the plugin on the 3.5 mono version of godot.

Can't find Spatial Gardener via the AssetLib tab

Godot version
3.5 stable

Platform
Win

Issue description
I was about to comment on Reddit how easy it is to download and install Spatial Gardener from within Godot, but it turns out it is actually not that straight forward and might be missed by someone who does not decide to dig a little deeper.

In the AssetLib tab "Spatial Gardener" won't show up ...

image

... unless the user clicks on "Support" (which does not look like a Button), and the enables "Testing". Only then Spatial Gardener shows up:

image

Steps to Reproduce
In the Godot 3.5 stable Editor, go the the AssetLib tab and search for "Spatial" or "Spatial Gardener" or "Gardener" ...
What ever you do, Spatial Gardener won't show up.

"Testing" was disabled for me by default.

Remake the resource saving mechanism for Toolsheds and Greenhouses to utilize built-in caching instead of fighting it

Describe the problem you're trying to solve in your project
Currently the resource saving mechanism does some nasty hacks to overwrite saved resources (.res files for toolshed.gd and greenhouse.gd). It might lead to unforseen bugs later on, or even already has judjing from #11 .

Describe a feature you consider and how it will help you
It's better to test the behavior in a fresh project and figure out a proper way to save resources without duplicating everything.

Describe alternatives you've considered
None, current implementation is a nasty workaround.

Describe how you imagine it would work. With code, pseudo-code, diagram or a drawing
Not sure yet. Pehaps resource files are automaticlaly overwritten on scene save? Or there's a separate trigger for that that I can use.

Add option to change size of multi mesh instances used to decrease draw calls for dense foliage

I am working on an action game with dense grass and foliage on the ground in medium-sized levels.
I notices using your plugin that the multi mesh instances used are often incredibly small, only being about 1-2 metres wide. This is leading to problems with draw calls in my game where too many mmu's are being drawn, which could be massively reduced if the size of each mmu was larger.
There could be a slider for multi mesh instance size which sets how large the multi mesh instances are, with a larger number meaning larger mmu's and lower draw calls, at the expense of a more chunky border at the LOD max and LOD kill distances.

I have no idea how to actually implement this.

[FEATURE REQUEST] Reapply position to terrain

Describe the problem you're trying to solve in your project
I'm iterating on landscape, changing the terrain and foliage to find something I like. However, any time I change the terrain, foliage stays in place. I need to erase the foliage and repaint each time I want to iterate on the underlying terrain.
kuva
Objects floating above the terrain which was lowered.
kuva
Objects sunk inside the terrain which was raised.

Describe a feature you consider and how it will help you
Using reapply brush should recast the position of the instances so that they stick to the terrain properly again.

Describe alternatives you've considered
Erasing and repainting will suffice in the earlier stages of map development, but once I settle on something and make it look good, I'm not sure what to do if I want to fine tune the terrain.

Describe how you imagine it would work. With code, pseudo-code, diagram or a drawing
Add option to recalculate position on the Reapply brush (or a separate Reposition brush). I'd imagine doing a raycast from object's position + up on local axis towards down on the local axis would usually give good results. Maybe needs some parameter to adjust the search range.

Large Amount of nodes slow to reload

Godot version
"3.5 stable"

Plugin version
1.1.0

Platform
Win10

Issue description
I was testing this amazing plugin and filled up a scene with thousands of blades of grass.
The scene is over 20MB!
Yet, I cannot reopen it in Godot now, as it's possibly too big. It eventually loads (after 5 minutes).

Steps to Reproduce

  1. Fill up scene with thousands of nodes
  2. Save the scene
  3. CLose the scene
    4.Try to reopen

Minimal reproduction project
If applicable, please paste a link to minimal reproduction project that shows this issue in action.

[BUG] LOD Kill Distance

Godot version
4.2.1 stable

Plugin version
1.3.1

Platform
Windows 10

Issue description

Objects with LOD Kill Distance greater than 0 get completely removed from the scene if you save the scene while the editor viewport camera is outside of the kill distance range and then reload the project

Steps to Reproduce

  1. Create a new Godot Project
  2. Import the add-on to the Project (I am using the version of the plugin with the demo)
  3. Create a new scene with a StaticBody3D as the floor (I'm just using a box mesh with 100x100 side and boxcollision3d with the same size)
  4. Add a gardener to the scene and any plant (I'm using the tree generic lod 0) and increase the LOD Kill Distance to any value.
  5. Zoom out until the plants are no longer visible, save the scene and reload the project.
  6. The objects are now gone even if you zoom in, and on the right hand side the gardener shows "0" for the plants instantiated

[FEATURE REQUEST] Allow toggling shadow casting per entry

Describe the problem you're trying to solve in your project
It's sometimes advisable to disable shadow casting when placing a lot of small grass instances that are too small to cast meaningful shadows. It's currently not possible to disable that on a per entry basis.

Describe a feature you consider and how it will help you
It would be helpful to have an additional toggle to change the shadow casting mode in the property panel for each entry.

Describe alternatives you've considered
One possible alternative is to create a custom shader-material which has shadow casting disabled as render mode. The problem is that this then applies to all targets using this material, meaning it would require creating extra custom materials for imported scenes just to have them also be renderable with shadows disabled. And it's more steps involved when later deciding to scale up the painted grass instances and wanting them to then cast shadows again.

Describe how you imagine it would work. With code, pseudo-code, diagram or a drawing
The toggle would simply copy its state to the resulting multimesh's https://docs.godotengine.org/en/stable/classes/class_geometryinstance.html#class-geometryinstance-property-cast-shadow property

[FEATURE REQUEST] LOD transition hysteresis and smooth fading in and out (transparency/dither)

hello dreadpon, thank you very much for making this free addon, its simple 2 use and very useful!!!!!!!!!!

is it possible to add some sort of fade in/fade out effect to minimize LOD popping?? like with visibility range fade transition margins in Godot

maybe it could be some kind of transparency shader (dithered opacity for maximum fps!!) that gradually fades a new LOD in and then fades old LOD out depending on the distance from player (for example 1m for fade in, then 1m for fadeout - all done in a span of 2 meters)

[BUG] Godot 3.5 rc4 - signal already exists in parent class

Hi, I don't know if this is a 3.5 thing only or not, but when I try to activate I can't becuase of a compile error. I tracked it down to the file:res://addons/dreadpon.spatial_gardener/controls/extensions/ui_signaling_hslider.gd
The error is "The signal 'drag_started' already exists in a parent class'. Commenting out the signal declaration allows the plugin to compile and enable in the editor. Haven't yet tested the plugin further, but at least it enables now.

[BUG] Spawned Node3D sometimes revert to earlier setting

Godot version
v4.2.2.stable.official [15073afe3]

Plugin version
1.3.2

Platform
Windows 10

Issue description
In my scene I have set up a few types of bushes and trees. For a bush I initially set up collision from another tree as Spawned Node3D. Later I changed it to another scene that fits more to the shape. However, sometimes it randomly reverts to the scene I initially set it to. I change it back again and for some time it works, but then again reverts.

Steps to Reproduce
Unfortunately I haven't been able to notice any rhythm or reason as to how this happens...

Minimal reproduction project
See above. This might be one of those hard to catch bugs since it happens very sporadically, and for some reason on one plant at that.

[FEATURE REQUEST] Add transform brush

Describe the problem you're trying to solve in your project
This tool is the best I've found for setting up foliage! However sometimes I want to place some assets very deliberately. For example this formation:
kuva
However, there's no tools to fine tune the placement, rotation and size of instances. This formation I got by using reapply brush many times until it hit something that is passable. I'd modify it even further, but didn't want to push my luck.

Describe a feature you consider and how it will help you
Add a transform tool, which would apply transformation to instances it affects: rotate around axis, embiggen or shrink, translate. This way I could set up the formations I want.

Describe alternatives you've considered
As I mentioned earlier using reapply repeatedly until it will be good. Possibly by trial and error by setting absolute values in the tool. Or using regular scenes whenever I want more control.

Describe how you imagine it would work. With code, pseudo-code, diagram or a drawing
The transform brush would have the following options:
Translate: X Y Z
Rotate: X Y Z
Scale: X Y Z
Use local transformation: bool (translates and rotates around object's own axes)
The changes would be incremental, meaning the longer I hold mouse button down the more it will affect the object.

Cyclic dependency error in linux

Godot 3.5

Spatial Gardener 1.0.0

Linux

I tried installing the plugin through the asset lib and also by downloading it directly but failed every time with a cyclic dependency error.

To reproduce the error just try installing the plugin through the asset library.

[FEATURE REQUEST] An option for composite objects/placement

Describe the problem you're trying to solve in your project
Typically in games that are not lowpoly, trees are separated into branch and leaves because they usually don't share the same shader (branch->opaque, leaves->transparent/transmission/..). This addon supports placing whole scenes as colliders etc (which could be made up of multiple sub-objects, but doesn't seem to support rendering mesh-compounds/the same object composition of multiple meshes.

Describe a feature you consider and how it will help you
I could imagine something like linked/sub entries that are always placed together with a certain (maybe even configurable) offset between them.

Describe alternatives you've considered
Not assigning the mesh field, and instead just using the spatial field alone with the full meshed object assigned. This doesn't make use of multimeshing though and is thus less performant for many instances.

Describe how you imagine it would work. With code, pseudo-code, diagram or a drawing
There could be an extra field to name entries and another, or a dropdown, that one can assign any other entry to be linked to or just another nested sub-inspector. This could then optionally hide most of the properties of the linked entry inspector and just expose some offset settings. The system then, when placing instances while painting determines which are linked and always paints those together, with the same transformation as base + the offset of the linked entry appended.

[FEATURE REQUEST] A way to paint at runtime using code

I have a game that procedural generates maps. I'd like to be able to add in plantlife after the map is generated. Maybe there's a way to do this I haven't thought of. BTW thanks so much for the plugin it is great!

00:25:buffer_update argument not valid

This is ONLY in Showcase with the Train. I don't think it affects the actual plugin. LOW importance.

Godot version
v4.1.1.stable.mono.official [bd6af8e0e]

Plugin version
1.3.0 (was included in demo scene project, I didn't even have to add it, although I did follow the text tutorial on GitHub and checked it was there but the checkbox was already checked)
Got it from Git Latest Button: https://github.com/dreadpon/godot_spatial_gardener/releases/tag/v1.3.0

Platform
MacOS, latest 9-24-2023, Ventura 13.4.1 (22F82)
MacBook Pro 14, M1 Max, late 2021, 32GB Memory

Issue description
Only in Showcase Scene
No gameplay seems to be affected.
802 errors (only 2 actual errors but they are repeated continuously):

  1. About ⅔ of them are this one:
    E 0:00:25:0844 buffer_update: Buffer argument is not a valid buffer of any type.
    <C++ Error> Method/function failed. Returning: ERR_INVALID_PARAMETER
    <C++ Source> drivers/vulkan/rendering_device_vulkan.cpp:5858 @ buffer_update()

  2. Second ⅓ errors are this one:
    E 0:02:17:0536 dummy.gd:6 @ _ready(): Buffer argument is not a valid buffer of any type.
    <C++ Error> Method/function failed. Returning: ERR_INVALID_PARAMETER
    <C++ Source> drivers/vulkan/rendering_device_vulkan.cpp:5858 @ buffer_update()
    dummy.gd:6 @ _ready()

Upon playing Showcase Scene a second time got this before moving or anything: E 0:00:07:0778 buffer_update: Buffer argument is not a valid buffer of any type.
<C++ Error> Method/function failed. Returning: ERR_INVALID_PARAMETER
<C++ Source> drivers/vulkan/rendering_device_vulkan.cpp:5858 @ buffer_update()

And then "Too many errors! Ignoring for up to 1 second..."

When the train left, they stopped. I waited for train to return.

I rode the train the whole way. Got back off where I started. Ran along track, fell to my infinite falling world lol, never got the second "dummy" error from above...and I never got another error after the initial 401 buffer update ones.

Steps to Reproduce

  1. Go to Showcase
  2. Click on play current scene
  3. Observe the errors happening continuously while playing.
    I walked along track (whole way to end), ran along track, and jumped, then got on train and rode it the whole way. Then Clicked Restart to try getting on the train.
  4. The second time I pushed play, the dummy error (2) didn't appear. I restarted via UI to see if that threw more errors, it didn't.
  5. The errors only happened at beginning. They didn't appear as new at any point in my travels.

NOTE: All PathFollows in the RailPath->PathFollow show a warning (yellow triangle ! ). Tried to find what this was referring to, but couldn't. See Screenshot.
Screenshot 2023-09-24 at 9 47 07 AM

Minimal reproduction project
I just downloaded the project from latest Git and opened Showcase Scene in project file, no adds or changes to original

Bad looking orange selection's bounding box when using the brush

Godot version
4.1.1

its not the big problem I fix it by just just adding a holder node as a parent of paint_brush_node

replace this line :

owned_spatial.add_child(paint_brush_node)

with this:

var holder:Node = Node.new()
owned_spatial.add_child(holder)
holder.add_child(paint_brush_node)

[FEATURE REQUEST] Add .res to open mesh dialog

Sorry for spamming you with all these requests, I think this tool is already very good and I'm finding relatively small nitpicks but I thought I should write them up anyway 😂

Describe the problem you're trying to solve in your project
I'm using binary .res resources to save meshes instead of text based .tres. When adding meshes the open file dialog shows only .tres files by default. I need to change the filter to all files instead (showing also bunch of unrelated files as well). It's not a showstopper, just a little annoyance.

Describe a feature you consider and how it will help you
Add .res files to the open dialog default filter.

Describe alternatives you've considered
Workaround is to use all files filter, which is a few extra clicks each time I import a new model.

Describe how you imagine it would work. With code, pseudo-code, diagram or a drawing
In open mesh dialog add *.res to the available filters.

[BUG] Can't paint foliage at all in Godot v3.4.4 stable mono official on Windows 11

v3.4.4 stable mono official (419e713a2)

Gardener 1.0.0

Windows 11

Issue description
Foliage cannot be painted. I setup Gardner according to the documentation, set collision layers, add a mesh and try to drag with the left mouse button in the viewport. Nothing happens, the bubble does not move at all. I can however resize the bubble via right click and drag.

Steps to Reproduce
Create a new Gardener object in the scene
Add a mesh. I add an obj file, as I don't have mesh files - the file filter does not permit it but it seems to be displayed properly in the small preview rectangle.
Select the mesh as foliage and try to paint it by left clicking and dragging - nothing happens, the bubble won't even move. No errors are displayed in the console.

[BUG] Unable to enable the plugin in godot v3.5

Godot version
v3.5.stable.official [991bb6ac7]

Plugin version
1.0.0

Platform
Windows 11 64-bit

Issue description

  • Unable to enable the plugin.
    When trying to enable the plugin, a pop up window with the message appears.
    "Unable to load addon script from path: 'res://addons/dreadpon.spatial_gardener/plugin.gd'. This might be due to a code error in that script. Disabling the addon at 'res://addons/dreadpon.spatial_gardener/plugin.cfg' to prevent further errors."

Since plugin cannot be enabled, the showcase scene won't run.

Steps to Reproduce
Open the release in godot 3.5.

Error messages in the output window
Godot Engine v3.5.stable.official (c) 2007-2022 Juan Linietsky, Ariel Manzur & Godot Contributors.
--- GDScript language server started ---
res://addons/dreadpon.spatial_gardener/controls/extensions/ui_signaling_hslider.gd:11 - Parse Error: The signal "drag_started" already exists in a parent class.
res://addons/dreadpon.spatial_gardener/controls/input_fields/ui_if_real_slider.gd:11 - Parse Error: Couldn't fully preload the script, possible cyclic reference or compilation error. Use "load()" instead if a cyclic reference is intended.
res://addons/dreadpon.spatial_gardener/utility/input_field_resource/input_field_resource.gd:31 - Parse Error: Couldn't fully preload the script, possible cyclic reference or compilation error. Use "load()" instead if a cyclic reference is intended.
res://addons/dreadpon.spatial_gardener/greenhouse/greenhouse_LOD_variant.gd:1 - Parse Error: Script isn't fully loaded (cyclic preload?): res://addons/dreadpon.spatial_gardener/utility/input_field_resource/input_field_resource.gd
res://addons/dreadpon.spatial_gardener/greenhouse/greenhouse_plant.gd:12 - Parse Error: Couldn't fully preload the script, possible cyclic reference or compilation error. Use "load()" instead if a cyclic reference is intended.
res://addons/dreadpon.spatial_gardener/arborist/arborist.gd:21 - Parse Error: Couldn't fully preload the script, possible cyclic reference or compilation error. Use "load()" instead if a cyclic reference is intended.
res://addons/dreadpon.spatial_gardener/controls/input_fields/ui_if_real_slider.gd:11 - Parse Error: Couldn't fully preload the script, possible cyclic reference or compilation error. Use "load()" instead if a cyclic reference is intended.
res://addons/dreadpon.spatial_gardener/utility/input_field_resource/input_field_resource.gd:31 - Parse Error: Couldn't fully preload the script, possible cyclic reference or compilation error. Use "load()" instead if a cyclic reference is intended.
res://addons/dreadpon.spatial_gardener/toolshed/toolshed_brush.gd:1 - Parse Error: Script isn't fully loaded (cyclic preload?): res://addons/dreadpon.spatial_gardener/utility/input_field_resource/input_field_resource.gd
res://addons/dreadpon.spatial_gardener/toolshed/toolshed.gd:11 - Parse Error: Couldn't fully preload the script, possible cyclic reference or compilation error. Use "load()" instead if a cyclic reference is intended.
res://addons/dreadpon.spatial_gardener/utility/defaults.gd:9 - Parse Error: Couldn't fully preload the script, possible cyclic reference or compilation error. Use "load()" instead if a cyclic reference is intended.
res://addons/dreadpon.spatial_gardener/gardener/gardener.gd:18 - Parse Error: Couldn't fully preload the script, possible cyclic reference or compilation error. Use "load()" instead if a cyclic reference is intended.
res://addons/dreadpon.spatial_gardener/controls/input_fields/ui_if_real_slider.gd:11 - Parse Error: Couldn't fully preload the script, possible cyclic reference or compilation error. Use "load()" instead if a cyclic reference is intended.
res://addons/dreadpon.spatial_gardener/utility/input_field_resource/input_field_resource.gd:31 - Parse Error: Couldn't fully preload the script, possible cyclic reference or compilation error. Use "load()" instead if a cyclic reference is intended.
res://addons/dreadpon.spatial_gardener/greenhouse/greenhouse_LOD_variant.gd:1 - Parse Error: Script isn't fully loaded (cyclic preload?): res://addons/dreadpon.spatial_gardener/utility/input_field_resource/input_field_resource.gd
res://addons/dreadpon.spatial_gardener/arborist/mmi_octree/mmi_octree_node.gd:18 - Parse Error: Couldn't fully preload the script, possible cyclic reference or compilation error. Use "load()" instead if a cyclic reference is intended.
res://addons/dreadpon.spatial_gardener/arborist/mmi_octree/mmi_octree_manager.gd:13 - Parse Error: Couldn't fully preload the script, possible cyclic reference or compilation error. Use "load()" instead if a cyclic reference is intended.
res://addons/dreadpon.spatial_gardener/arborist/mmi_octree/mmi_octree_node.gd:18 - Parse Error: Couldn't fully preload the script, possible cyclic reference or compilation error. Use "load()" instead if a cyclic reference is intended.
res://addons/dreadpon.spatial_gardener/utility/console/console.gd:4 - Parse Error: Couldn't fully preload the script, possible cyclic reference or compilation error. Use "load()" instead if a cyclic reference is intended.
res://addons/dreadpon.spatial_gardener/gardener/debug_viewer.gd:12 - Parse Error: Couldn't fully preload the script, possible cyclic reference or compilation error. Use "load()" instead if a cyclic reference is intended.
res://addons/dreadpon.spatial_gardener/controls/input_fields/ui_if_real_slider.gd:11 - Parse Error: Couldn't fully preload the script, possible cyclic reference or compilation error. Use "load()" instead if a cyclic reference is intended.
res://addons/dreadpon.spatial_gardener/utility/input_field_resource/input_field_resource.gd:31 - Parse Error: Couldn't fully preload the script, possible cyclic reference or compilation error. Use "load()" instead if a cyclic reference is intended.
res://addons/dreadpon.spatial_gardener/controls/input_fields/ui_if_real_slider.gd:11 - Parse Error: Couldn't fully preload the script, possible cyclic reference or compilation error. Use "load()" instead if a cyclic reference is intended.
res://addons/dreadpon.spatial_gardener/utility/input_field_resource/input_field_resource.gd:31 - Parse Error: Couldn't fully preload the script, possible cyclic reference or compilation error. Use "load()" instead if a cyclic reference is intended.
res://addons/dreadpon.spatial_gardener/toolshed/toolshed_brush.gd:1 - Parse Error: Script isn't fully loaded (cyclic preload?): res://addons/dreadpon.spatial_gardener/utility/input_field_resource/input_field_resource.gd
res://addons/dreadpon.spatial_gardener/toolshed/toolshed.gd:11 - Parse Error: Couldn't fully preload the script, possible cyclic reference or compilation error. Use "load()" instead if a cyclic reference is intended.
res://addons/dreadpon.spatial_gardener/utility/defaults.gd:9 - Parse Error: Couldn't fully preload the script, possible cyclic reference or compilation error. Use "load()" instead if a cyclic reference is intended.
res://addons/dreadpon.spatial_gardener/greenhouse/greenhouse_plant.gd:12 - Parse Error: Couldn't fully preload the script, possible cyclic reference or compilation error. Use "load()" instead if a cyclic reference is intended.
res://addons/dreadpon.spatial_gardener/plugin.gd:16 - Parse Error: Couldn't fully preload the script, possible cyclic reference or compilation error. Use "load()" instead if a cyclic reference is intended.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.