Removed ess_data as a dependency from the setup script, but added it into this repo and renamed it to module manager.

This commit is contained in:
Relintai 2020-04-26 15:47:21 +02:00
parent 74304c87e8
commit 9d1f4128f8
64 changed files with 1848 additions and 5 deletions

View File

@ -49,7 +49,6 @@ module_repositories = [
]
addon_repositories = [
[ ['https://github.com/Relintai/ess_data.git', 'git@github.com:Relintai/ess_data.git' ], 'ess_data', '' ],
]
third_party_addon_repositories = [

View File

@ -1,3 +1,3 @@
*/*
ess_data
prop_tool
*
!model_manager
!model_manager/**

View File

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2019 Péter Magyar
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -0,0 +1,7 @@
# ESS Data
This is an addon for https://github.com/Relintai/entity_spell_system, to help with editing, and managing all game related the data in the project.
Looks like this:
![ess_data screenshot](screenshots/ess_data.png)

Binary file not shown.

After

Width:  |  Height:  |  Size: 939 B

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/empty.png-91b6ffc31d1ab0c9081673d056b1aae6.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/model_manager/icons/empty.png"
dest_files=[ "res://.import/empty.png-91b6ffc31d1ab0c9081673d056b1aae6.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/gom.png-1b9f09573d23d00595c3177419881bd1.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/model_manager/icons/gom.png"
dest_files=[ "res://.import/gom.png-1b9f09573d23d00595c3177419881bd1.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 B

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/icon_add.png-32631d56315601a131fd242aee7a3b79.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/model_manager/icons/icon_add.png"
dest_files=[ "res://.import/icon_add.png-32631d56315601a131fd242aee7a3b79.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 248 B

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/icon_copy.png-f4d65fb91114c70e50fb67c5c5bb5fb1.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/model_manager/icons/icon_copy.png"
dest_files=[ "res://.import/icon_copy.png-f4d65fb91114c70e50fb67c5c5bb5fb1.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 200 B

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/icon_display-name.png-f5557fd29e500456264ad785c21c47c0.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/model_manager/icons/icon_display-name.png"
dest_files=[ "res://.import/icon_display-name.png-f5557fd29e500456264ad785c21c47c0.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 B

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/icon_duplicate.png-76ae8a34a4880e84a08bcdf68f9ea179.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/model_manager/icons/icon_duplicate.png"
dest_files=[ "res://.import/icon_duplicate.png-76ae8a34a4880e84a08bcdf68f9ea179.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 346 B

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/icon_edit.png-ea78f3ad8dd14a28835b846f71898d96.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/model_manager/icons/icon_edit.png"
dest_files=[ "res://.import/icon_edit.png-ea78f3ad8dd14a28835b846f71898d96.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 267 B

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/icon_empty.png-428c8222194b802f67b678e5c3fd15ed.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/model_manager/icons/icon_empty.png"
dest_files=[ "res://.import/icon_empty.png-428c8222194b802f67b678e5c3fd15ed.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 170 B

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/icon_load.png-7ead551ff2c330dd66b58d1f82e9ad24.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/model_manager/icons/icon_load.png"
dest_files=[ "res://.import/icon_load.png-7ead551ff2c330dd66b58d1f82e9ad24.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 268 B

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/icon_move_down.png-fa1ee547bba931c04bfdf9354d54a11d.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/model_manager/icons/icon_move_down.png"
dest_files=[ "res://.import/icon_move_down.png-fa1ee547bba931c04bfdf9354d54a11d.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 269 B

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/icon_move_up.png-894ca3a411a207ef4d2cb84fd5f45a82.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/model_manager/icons/icon_move_up.png"
dest_files=[ "res://.import/icon_move_up.png-894ca3a411a207ef4d2cb84fd5f45a82.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 B

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/icon_multi_line.png-02a64189a571e7ff46fd9a62341016cf.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/model_manager/icons/icon_multi_line.png"
dest_files=[ "res://.import/icon_multi_line.png-02a64189a571e7ff46fd9a62341016cf.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 392 B

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/icon_options.png-1beb2966bd057330ea98392e982b8aba.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/model_manager/icons/icon_options.png"
dest_files=[ "res://.import/icon_options.png-1beb2966bd057330ea98392e982b8aba.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 409 B

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/icon_reload_small.png-e7d85ab20753d8b74497ca7cd4b851ed.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/model_manager/icons/icon_reload_small.png"
dest_files=[ "res://.import/icon_reload_small.png-e7d85ab20753d8b74497ca7cd4b851ed.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 B

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/icon_remove.png-1ec54533b4f9c075ba03cd885c63de8d.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/model_manager/icons/icon_remove.png"
dest_files=[ "res://.import/icon_remove.png-1ec54533b4f9c075ba03cd885c63de8d.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 B

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/icon_rename.png-ed4b6df257a31c91158a25b262faa111.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/model_manager/icons/icon_rename.png"
dest_files=[ "res://.import/icon_rename.png-ed4b6df257a31c91158a25b262faa111.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 252 B

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/icon_save.png-a9b3f47b1097f68902981cad3658b6c4.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/model_manager/icons/icon_save.png"
dest_files=[ "res://.import/icon_save.png-a9b3f47b1097f68902981cad3658b6c4.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 262 B

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/icon_script.png-7249902f6af8266e487b72220f5262fc.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/model_manager/icons/icon_script.png"
dest_files=[ "res://.import/icon_script.png-7249902f6af8266e487b72220f5262fc.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

View File

@ -0,0 +1,64 @@
tool
extends ConfirmationDialog
signal ok_pressed
export(NodePath) var line_edit_path : NodePath
export(NodePath) var option_button_path : NodePath
var _resource_type : String
var _line_edit : LineEdit
var _option_button : OptionButton
func _ready():
_line_edit = get_node(line_edit_path) as LineEdit
_option_button = get_node(option_button_path) as OptionButton
connect("confirmed", self, "_on_OK_pressed")
connect("about_to_show", self, "about_to_show")
func set_resource_type(resource_type : String) -> void:
_resource_type = resource_type
func about_to_show():
_option_button.clear()
if not ClassDB.class_exists(_resource_type):
return
var arr : PoolStringArray = PoolStringArray()
arr.append(_resource_type)
arr.append_array(ClassDB.get_inheriters_from_class(_resource_type))
var gsc : Array = ProjectSettings.get("_global_script_classes")
var l : int = arr.size() - 1
while (arr.size() != l):
l = arr.size()
for i in range(gsc.size()):
var d : Dictionary = gsc[i] as Dictionary
var found = false
for j in range(arr.size()):
if arr[j] == d["class"]:
found = true
break
if found:
continue
for j in range(arr.size()):
if arr[j] == d["base"]:
arr.append(d["class"])
for a in arr:
_option_button.add_item(a)
func _on_OK_pressed():
emit_signal("ok_pressed", _line_edit.text, _option_button.get_item_text(_option_button.selected))
hide()

View File

@ -0,0 +1,57 @@
[gd_scene load_steps=2 format=2]
[ext_resource path="res://addons/model_manager/panels/CreateNamePopup.gd" type="Script" id=1]
[node name="CreateNamePopup" type="ConfirmationDialog"]
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
margin_left = -245.5
margin_top = -125.5
margin_right = 245.5
margin_bottom = 125.5
window_title = "Create New Resource"
script = ExtResource( 1 )
__meta__ = {
"_edit_use_anchors_": false
}
line_edit_path = NodePath("VBoxContainer/LineEdit")
option_button_path = NodePath("VBoxContainer/OptionButton")
[node name="VBoxContainer" type="VBoxContainer" parent="."]
margin_left = 8.0
margin_top = 8.0
margin_right = 483.0
margin_bottom = 215.0
size_flags_horizontal = 3
size_flags_vertical = 3
__meta__ = {
"_edit_use_anchors_": false
}
[node name="Label2" type="Label" parent="VBoxContainer"]
margin_right = 449.0
margin_bottom = 25.0
size_flags_horizontal = 3
text = "Type"
[node name="OptionButton" type="OptionButton" parent="VBoxContainer"]
margin_top = 33.0
margin_right = 449.0
margin_bottom = 70.0
size_flags_horizontal = 3
[node name="Label" type="Label" parent="VBoxContainer"]
margin_top = 78.0
margin_right = 449.0
margin_bottom = 103.0
size_flags_horizontal = 3
text = "Name"
[node name="LineEdit" type="LineEdit" parent="VBoxContainer"]
margin_top = 111.0
margin_right = 449.0
margin_bottom = 156.0
size_flags_horizontal = 3
caret_blink = true

View File

@ -0,0 +1,93 @@
tool
extends Control
signal inspect_data
signal duplicate
signal delete
export(PackedScene) var spatial_preview : PackedScene
export(PackedScene) var node2d_preview : PackedScene
export(PackedScene) var control_preview : PackedScene
export(PackedScene) var texture_preview : PackedScene
export(NodePath) var main_button_path : NodePath
var _main_button : Button
var _preview : Node
var _data : Resource
func _ready():
_main_button = get_node(main_button_path) as Button
func set_resource(data : Resource) -> void:
_data = data
_main_button.set_resource(data)
var name_text : String = ""
if data.has_method("get_id"):
name_text += str(data.get_id()) + " - "
if data.has_method("get_text_name"):
name_text += str(data.get_text_name())
else:
if data.resource_name != "":
name_text += data.resource_name
else:
name_text += data.resource_path
if data.has_method("get_rank"):
name_text += " - Rank " + str(data.get_rank())
if data is Texture:
_preview = texture_preview.instance()
add_child(_preview)
_preview.owner = self
move_child(_preview, 0)
_preview.set_texture(data as Texture)
elif data is PackedScene:
var n : Node = data.instance()
if _preview != null:
_preview.queue_free()
if n is Spatial:
_preview = spatial_preview.instance()
add_child(_preview)
_preview.owner = self
move_child(_preview, 0)
_preview.preview(n as Spatial)
elif n is Node2D:
_preview = node2d_preview.instance()
add_child(_preview)
_preview.owner = self
move_child(_preview, 0)
_preview.preview(n as Node2D)
elif n is Control:
_preview = control_preview.instance()
add_child(_preview)
_preview.owner = self
move_child(_preview, 0)
_preview.preview(n as Control)
else:
n.queue_free()
_main_button.text = name_text
func can_drop_data(position, data):
return false
func inspect():
emit_signal("inspect_data", _data)
func duplicate_data():
emit_signal("duplicate", _data)
func delete():
emit_signal("delete", _data)

View File

@ -0,0 +1,12 @@
tool
extends Button
export(int) var tab = 0
var _panel
func _pressed():
_panel.set_tab(tab)
func set_main_panel(panel):
_panel = panel

View File

@ -0,0 +1,9 @@
[gd_scene load_steps=2 format=2]
[ext_resource path="res://addons/model_manager/panels/FolderEntryButton.gd" type="Script" id=1]
[node name="FolderEntryButton" type="Button"]
margin_right = 210.0
margin_bottom = 20.0
size_flags_horizontal = 3
script = ExtResource( 1 )

View File

@ -0,0 +1,39 @@
tool
extends Button
signal history_entry_selected
var data : Resource setget set_data#, get_data
func _pressed() -> void:
emit_signal("history_entry_selected", data)
func set_data(pdata: Resource) -> void:
data = pdata
var s : String = "(" + data.get_class() + ") "
if data.has_method("get_id"):
s += str(data.get_id()) + " - "
if data.has_method("get_text_name"):
s += str(data.get_text_name())
if data.has_method("get_rank"):
s += " (R " + str(data.get_rank()) + ")"
text = s
func get_data() -> Resource:
return data
func get_drag_data(position):
if data == null:
return null
var d : Dictionary = Dictionary()
d["type"] = "resource"
d["resource"] = data
d["from"] = self
return d

View File

@ -0,0 +1,11 @@
[gd_scene load_steps=2 format=2]
[ext_resource path="res://addons/model_manager/panels/HistoryEntry.gd" type="Script" id=1]
[node name="HistoryEntry" type="Button"]
margin_right = 236.0
margin_bottom = 37.0
script = ExtResource( 1 )
__meta__ = {
"_edit_use_anchors_": false
}

View File

@ -0,0 +1,89 @@
tool
extends Control
signal inspect_data
export(PackedScene) var resource_scene : PackedScene
export(PackedScene) var folder_entry_button_scene : PackedScene
export(String) var base_folder : String = "res://modules/"
export(NodePath) var main_container : NodePath
export(NodePath) var folder_entry_container_path : NodePath
var _main_container : Node
var _resource_scene : Node
var _folder_entry_container : Node
var _folders : Array = [
]
func _ready():
var dir : Directory = Directory.new()
if dir.file_exists("res://ess_data.json"):
var file : File = File.new()
if file.open("res://ess_data.json", File.READ) == OK:
var s : String = file.get_as_text()
_folders = parse_json(s)
file.close()
# else:
# var file : File = File.new()
#
# if file.open("res://ess_data.json", File.WRITE) == OK:
# file.store_string(to_json(_folders))
#
# file.close()
_main_container = get_node(main_container)
_resource_scene = resource_scene.instance()
_main_container.add_child(_resource_scene)
_resource_scene.owner = _main_container
_resource_scene.connect("inspect_data", self, "inspect_data")
_folder_entry_container = get_node(folder_entry_container_path)
for ch in _folder_entry_container.get_children():
ch.queue_free()
var index = 0
for f in _folders:
if f.has("header"):
var h : Label = Label.new()
_folder_entry_container.add_child(h)
h.owner = _folder_entry_container
h.text = f["header"]
var fe : Node = folder_entry_button_scene.instance()
_folder_entry_container.add_child(fe)
fe.owner = _folder_entry_container
fe.text = f["name"]
fe.tab = index
fe.set_main_panel(self)
index += 1
set_tab(0)
# set_tab("test")
func set_tab(tab_index : int) -> void:
hide_all()
_resource_scene.show()
_resource_scene.set_resource_type(_folders[tab_index]["folder"], _folders[tab_index]["type"])
func hide_all() -> void:
_resource_scene.hide()
func inspect_data(var data : Resource) -> void:
emit_signal("inspect_data", data)

View File

@ -0,0 +1,44 @@
[gd_scene load_steps=4 format=2]
[ext_resource path="res://addons/model_manager/panels/MainPanel.gd" type="Script" id=1]
[ext_resource path="res://addons/model_manager/panels/FolderEntryButton.tscn" type="PackedScene" id=2]
[ext_resource path="res://addons/model_manager/panels/ResourcePanel.tscn" type="PackedScene" id=3]
[node name="Panel" type="MarginContainer"]
anchor_right = 1.0
anchor_bottom = 1.0
size_flags_horizontal = 3
size_flags_vertical = 3
script = ExtResource( 1 )
__meta__ = {
"_edit_use_anchors_": false
}
resource_scene = ExtResource( 3 )
folder_entry_button_scene = ExtResource( 2 )
base_folder = "res://data/"
main_container = NodePath("HSplitContainer/MarginContainer")
folder_entry_container_path = NodePath("HSplitContainer/ScrollContainer/VBoxContainer")
[node name="HSplitContainer" type="HSplitContainer" parent="."]
margin_right = 1024.0
margin_bottom = 600.0
size_flags_horizontal = 3
size_flags_vertical = 3
split_offset = 210
__meta__ = {
"_edit_use_anchors_": false
}
[node name="ScrollContainer" type="ScrollContainer" parent="HSplitContainer"]
margin_right = 210.0
margin_bottom = 600.0
size_flags_vertical = 3
[node name="VBoxContainer" type="VBoxContainer" parent="HSplitContainer/ScrollContainer"]
margin_right = 210.0
size_flags_horizontal = 3
[node name="MarginContainer" type="MarginContainer" parent="HSplitContainer"]
margin_left = 222.0
margin_right = 1024.0
margin_bottom = 600.0

View File

@ -0,0 +1,291 @@
tool
extends Control
signal inspect_data
export(PackedScene) var resource_row_scene : PackedScene
export(PackedScene) var history_row_scene : PackedScene
export(NodePath) var entry_container_path : NodePath
export(NodePath) var name_popup_path : NodePath
export(NodePath) var create_popup_path : NodePath
export(NodePath) var delete_popup_path : NodePath
export(NodePath) var history_container_path : NodePath
var _filter_term : String
var _entry_container : Node
var _name_popup : Node
var _create_popup : ConfirmationDialog
var _delete_popup : ConfirmationDialog
var _history_container : Node
var _folder : String
var _resource_type : String
var _queue_deleted : Resource
var _state : Dictionary
var _states : Dictionary
func _ready():
_history_container = get_node(history_container_path)
_entry_container = get_node(entry_container_path)
_name_popup = get_node(name_popup_path)
_name_popup.connect("ok_pressed", self, "ok_pressed")
_create_popup = get_node(create_popup_path)
_delete_popup = get_node(delete_popup_path)
func set_resource_type(folder : String, resource_type : String) -> void:
if folder == _folder and _resource_type == resource_type:
return
_states[_folder + "," + _resource_type] = _state
if _states.has(folder + "," + resource_type):
_state = _states[folder + "," + resource_type]
else:
_state = Dictionary()
_folder = folder
_resource_type = resource_type
# _filter_term = ""
_create_popup.set_resource_type(resource_type)
refresh()
func refresh() -> void:
for ch in _entry_container.get_children():
ch.queue_free()
var d : Directory = Directory.new()
if d.open(_folder) == OK:
d.list_dir_begin()
var data_array : Array = Array()
var file_name = d.get_next()
while (file_name != ""):
if not d.current_is_dir():
if ResourceLoader.exists(_folder + file_name, _resource_type):
var res = ResourceLoader.load(_folder + file_name, _resource_type)
if _filter_term != "":
var ftext : String = ""
if res.has_method("get_text_name"):
ftext = res.get_text_name()
if ftext == "":
if res.resource_name != "":
ftext = res.resource_name
else:
ftext = res.resource_path
ftext = ftext.to_lower()
if ftext.find(_filter_term) == -1:
file_name = d.get_next()
continue
var id : int = 0
if res.has_method("get_id"):
id = res.get_id()
data_array.append({
"id": id,
"resource": res
})
file_name = d.get_next()
data_array.sort_custom(self, "sort_entries")
for d in data_array:
var resn : Node = resource_row_scene.instance()
_entry_container.add_child(resn)
resn.owner = _entry_container
resn.set_resource(d["resource"])
resn.connect("inspect_data", self, "inspect_data")
resn.connect("duplicate", self, "duplicate_data")
resn.connect("delete", self, "delete")
func inspect_data(var data : Resource) -> void:
var found : bool = false
for ch in _history_container.get_children():
if ch.data == data:
found = true
_history_container.move_child(ch, 0)
break
if not found:
var n : Node = history_row_scene.instance()
_history_container.add_child(n)
_history_container.move_child(n, 0)
n.owner = _history_container
n.data = data
n.connect("history_entry_selected", self, "inspect_data")
if _history_container.get_child_count() > 20:
var ch : Node = _history_container.get_child(_history_container.get_child_count() - 1)
ch.queue_free()
emit_signal("inspect_data", data)
func ok_pressed(res_name: String, pclass_name: String) -> void:
var d : Directory = Directory.new()
if d.open(_folder) == OK:
d.list_dir_begin()
var file_name = d.get_next()
var max_ind : int = 0
while (file_name != ""):
if not d.current_is_dir():
var curr_ind : int = int(file_name.split("_")[0])
if curr_ind > max_ind:
max_ind = curr_ind
file_name = d.get_next()
max_ind += 1
var newfname : String = str(res_name)
newfname = newfname.replace(" ", "_")
newfname = newfname.to_lower()
newfname = str(max_ind) + "_" + newfname + ".tres"
var res : Resource = null
if ClassDB.class_exists(pclass_name) and ClassDB.can_instance(pclass_name):
res = ClassDB.instance(pclass_name)
else:
var gsc : Array = ProjectSettings.get("_global_script_classes")
for i in range(gsc.size()):
var gsce : Dictionary = gsc[i] as Dictionary
if gsce["class"] == pclass_name:
var script : Script = load(gsce["path"])
res = script.new()
break
if res == null:
print("ESSData: Error in creating resource type " + pclass_name)
return
if res.has_method("set_id"):
res.set_id(max_ind)
if res.has_method("set_text_name"):
res.set_text_name(str(res_name))
ResourceSaver.save(_folder + newfname, res)
refresh()
func duplicate_data(data):
if not data is Resource:
return
var d : Directory = Directory.new()
if d.open(_folder) == OK:
d.list_dir_begin()
var file_name = d.get_next()
var max_ind : int = 0
while (file_name != ""):
if not d.current_is_dir():
var curr_ind : int = int(file_name.split("_")[0])
if curr_ind > max_ind:
max_ind = curr_ind
file_name = d.get_next()
max_ind += 1
var res_name : String = ""
if data.has_method("get_text_name"):
res_name = data.get_text_name()
var newfname : String = res_name
newfname = newfname.replace(" ", "_")
newfname = newfname.to_lower()
newfname = str(max_ind) + "_" + newfname + ".tres"
var res : Resource = data.duplicate()
if res.has_method("set_id"):
res.set_id(max_ind)
if res.has_method("set_text_name"):
res.set_text_name(str(res_name))
ResourceSaver.save(_folder + newfname, res)
refresh()
func delete(data):
if data == null or data as Resource == null:
return
_queue_deleted = data as Resource
_delete_popup.popup_centered()
func delete_confirm():
if _queue_deleted == null:
return
var d : Directory = Directory.new()
d.remove(_queue_deleted.resource_path)
_queue_deleted = null
refresh()
func clear_history() -> void:
for ch in _history_container.get_children():
ch.queue_free()
func search(text : String) -> void:
_filter_term = text.to_lower()
refresh()
func sort_entries(a, b):
return a["id"] < b["id"]

View File

@ -0,0 +1,117 @@
[gd_scene load_steps=8 format=2]
[ext_resource path="res://addons/model_manager/panels/CreateNamePopup.tscn" type="PackedScene" id=1]
[ext_resource path="res://addons/model_manager/panels/ResourceRow.tscn" type="PackedScene" id=2]
[ext_resource path="res://addons/model_manager/panels/HistoryEntry.tscn" type="PackedScene" id=3]
[ext_resource path="res://addons/model_manager/icons/icon_add.png" type="Texture" id=4]
[ext_resource path="res://addons/model_manager/panels/ResourcePanel.gd" type="Script" id=5]
[ext_resource path="res://addons/model_manager/icons/icon_empty.png" type="Texture" id=6]
[ext_resource path="res://addons/model_manager/icons/icon_reload_small.png" type="Texture" id=7]
[node name="Panel" type="Control"]
anchor_right = 1.0
anchor_bottom = 1.0
script = ExtResource( 5 )
__meta__ = {
"_edit_use_anchors_": false
}
resource_row_scene = ExtResource( 2 )
history_row_scene = ExtResource( 3 )
entry_container_path = NodePath("ResourcePanel/VBoxContainer2/ScrollContainer2/VBoxContainer")
name_popup_path = NodePath("CreateNamePopup")
create_popup_path = NodePath("CreateNamePopup")
delete_popup_path = NodePath("DeletePopup")
history_container_path = NodePath("ResourcePanel/VBoxContainer/ScrollContainer/VBoxContainer")
[node name="ResourcePanel" type="HSplitContainer" parent="."]
anchor_right = 1.0
anchor_bottom = 1.0
split_offset = 500
__meta__ = {
"_edit_use_anchors_": false
}
[node name="VBoxContainer2" type="VBoxContainer" parent="ResourcePanel"]
margin_right = 664.0
margin_bottom = 600.0
[node name="LineEdit" type="LineEdit" parent="ResourcePanel/VBoxContainer2"]
margin_right = 664.0
margin_bottom = 45.0
right_icon = ExtResource( 6 )
placeholder_text = "Filter"
caret_blink = true
[node name="CreateButton" type="Button" parent="ResourcePanel/VBoxContainer2"]
margin_top = 53.0
margin_right = 664.0
margin_bottom = 90.0
rect_min_size = Vector2( 100, 0 )
text = "Create"
icon = ExtResource( 4 )
expand_icon = true
[node name="HSeparator" type="HSeparator" parent="ResourcePanel/VBoxContainer2"]
margin_top = 98.0
margin_right = 664.0
margin_bottom = 106.0
size_flags_horizontal = 3
__meta__ = {
"_edit_use_anchors_": false
}
[node name="ScrollContainer2" type="ScrollContainer" parent="ResourcePanel/VBoxContainer2"]
margin_top = 114.0
margin_right = 664.0
margin_bottom = 600.0
size_flags_vertical = 3
[node name="VBoxContainer" type="VBoxContainer" parent="ResourcePanel/VBoxContainer2/ScrollContainer2"]
margin_right = 664.0
size_flags_horizontal = 3
[node name="VBoxContainer" type="VBoxContainer" parent="ResourcePanel"]
margin_left = 688.0
margin_right = 1024.0
margin_bottom = 600.0
[node name="Button" type="Button" parent="ResourcePanel/VBoxContainer"]
margin_right = 336.0
margin_bottom = 37.0
size_flags_horizontal = 3
text = "Clear History"
icon = ExtResource( 7 )
[node name="HSeparator" type="HSeparator" parent="ResourcePanel/VBoxContainer"]
margin_top = 45.0
margin_right = 336.0
margin_bottom = 53.0
size_flags_horizontal = 3
[node name="ScrollContainer" type="ScrollContainer" parent="ResourcePanel/VBoxContainer"]
margin_top = 61.0
margin_right = 336.0
margin_bottom = 600.0
size_flags_horizontal = 3
size_flags_vertical = 3
[node name="VBoxContainer" type="VBoxContainer" parent="ResourcePanel/VBoxContainer/ScrollContainer"]
margin_right = 336.0
size_flags_horizontal = 3
[node name="CreateNamePopup" parent="." instance=ExtResource( 1 )]
[node name="DeletePopup" type="ConfirmationDialog" parent="."]
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
margin_left = -139.0
margin_top = -55.0
margin_right = 139.0
margin_bottom = 55.0
dialog_text = "Delete?"
[connection signal="text_entered" from="ResourcePanel/VBoxContainer2/LineEdit" to="." method="search"]
[connection signal="pressed" from="ResourcePanel/VBoxContainer2/CreateButton" to="CreateNamePopup" method="popup"]
[connection signal="pressed" from="ResourcePanel/VBoxContainer/Button" to="." method="clear_history"]
[connection signal="confirmed" from="DeletePopup" to="." method="delete_confirm"]

View File

@ -0,0 +1,46 @@
[gd_scene load_steps=9 format=2]
[ext_resource path="res://addons/model_manager/previews/TexturePreview.tscn" type="PackedScene" id=1]
[ext_resource path="res://addons/model_manager/previews/ControlPreview.tscn" type="PackedScene" id=2]
[ext_resource path="res://addons/model_manager/previews/Node2DPreview.tscn" type="PackedScene" id=3]
[ext_resource path="res://addons/model_manager/previews/SpatialPreview.tscn" type="PackedScene" id=4]
[ext_resource path="res://addons/model_manager/panels/ResourceRowMainButton.gd" type="Script" id=5]
[ext_resource path="res://addons/model_manager/panels/EntryButton.gd" type="Script" id=6]
[ext_resource path="res://addons/model_manager/icons/icon_duplicate.png" type="Texture" id=7]
[ext_resource path="res://addons/model_manager/icons/icon_remove.png" type="Texture" id=8]
[node name="ResourceRow" type="HBoxContainer"]
margin_right = 634.0
margin_bottom = 37.0
rect_min_size = Vector2( 100, 0 )
size_flags_horizontal = 3
script = ExtResource( 6 )
__meta__ = {
"_edit_use_anchors_": false
}
spatial_preview = ExtResource( 4 )
node2d_preview = ExtResource( 3 )
control_preview = ExtResource( 2 )
texture_preview = ExtResource( 1 )
main_button_path = NodePath("ResourceRowMainButton")
[node name="ResourceRowMainButton" type="Button" parent="."]
margin_right = 570.0
margin_bottom = 37.0
size_flags_horizontal = 3
script = ExtResource( 5 )
[node name="Button2" type="Button" parent="."]
margin_left = 574.0
margin_right = 602.0
margin_bottom = 37.0
icon = ExtResource( 7 )
[node name="Button3" type="Button" parent="."]
margin_left = 606.0
margin_right = 634.0
margin_bottom = 37.0
icon = ExtResource( 8 )
[connection signal="pressed" from="ResourceRowMainButton" to="." method="inspect"]
[connection signal="pressed" from="Button2" to="." method="duplicate_data"]
[connection signal="pressed" from="Button3" to="." method="delete"]

View File

@ -0,0 +1,18 @@
tool
extends Button
var _data : Resource
func get_drag_data(position):
if _data == null:
return null
var d : Dictionary = Dictionary()
d["type"] = "resource"
d["resource"] = _data
d["from"] = self
return d
func set_resource(data : Resource) -> void:
_data = data

View File

@ -0,0 +1,7 @@
[plugin]
name="Entity Spell System Data Manager"
description=""
author="Relintai"
version="1.0"
script="plugin.gd"

View File

@ -0,0 +1,36 @@
tool
extends EditorPlugin
const _main_panel : PackedScene = preload("res://addons/model_manager/panels/MainPanel.tscn")
const _script_icon : Texture = preload("res://addons/model_manager/icons/icon_multi_line.png")
var _main_panel_instance : Control
func _enter_tree():
_main_panel_instance = _main_panel.instance() as Control
_main_panel_instance.connect("inspect_data", self, "inspect_data")
get_editor_interface().get_editor_viewport().add_child(_main_panel_instance)
make_visible(false)
func _exit_tree():
_main_panel_instance.queue_free()
func has_main_screen():
return true
func make_visible(visible):
if visible:
_main_panel_instance.show()
else:
_main_panel_instance.hide()
func get_plugin_icon():
return _script_icon
func get_plugin_name():
return "Modules"
func inspect_data(var data : Resource) -> void:
get_editor_interface().inspect_object(data)

View File

@ -0,0 +1,14 @@
tool
extends ViewportContainer
export(NodePath) var container_path : NodePath
var _container : Node
func _ready() -> void:
_container = get_node(container_path)
func preview(n: Control) -> void:
_container.add_child(n)
n.owner = _container

View File

@ -0,0 +1,21 @@
[gd_scene load_steps=2 format=2]
[ext_resource path="res://addons/model_manager/previews/ControlPreview.gd" type="Script" id=1]
[node name="ControlPreview" type="ViewportContainer"]
margin_right = 60.0
margin_bottom = 60.0
rect_min_size = Vector2( 60, 60 )
rect_pivot_offset = Vector2( -198.876, -96.6558 )
stretch = true
script = ExtResource( 1 )
__meta__ = {
"_edit_use_anchors_": false
}
container_path = NodePath("Viewport")
[node name="Viewport" type="Viewport" parent="."]
size = Vector2( 500, 500 )
own_world = true
handle_input_locally = false
render_target_update_mode = 3

View File

@ -0,0 +1,14 @@
tool
extends ViewportContainer
export(NodePath) var container_path : NodePath
var _container : Node
func _ready() -> void:
_container = get_node(container_path)
func preview(n: Node2D) -> void:
_container.add_child(n)
n.owner = _container

View File

@ -0,0 +1,24 @@
[gd_scene load_steps=2 format=2]
[ext_resource path="res://addons/model_manager/previews/Node2DPreview.gd" type="Script" id=1]
[node name="Node2DPreview" type="ViewportContainer"]
margin_right = 60.0
margin_bottom = 60.0
rect_min_size = Vector2( 60, 60 )
rect_pivot_offset = Vector2( -198.876, -96.6558 )
stretch = true
script = ExtResource( 1 )
__meta__ = {
"_edit_use_anchors_": false
}
container_path = NodePath("Viewport")
[node name="Viewport" type="Viewport" parent="."]
size = Vector2( 500, 500 )
own_world = true
handle_input_locally = false
render_target_update_mode = 3
[node name="Camera2D" type="Camera2D" parent="Viewport"]
current = true

View File

@ -0,0 +1,14 @@
tool
extends ViewportContainer
export(NodePath) var container_path : NodePath
var _container : Node
func _ready() -> void:
_container = get_node(container_path)
func preview(n: Spatial) -> void:
_container.add_child(n)
n.owner = _container

View File

@ -0,0 +1,28 @@
[gd_scene load_steps=2 format=2]
[ext_resource path="res://addons/model_manager/previews/SpatialPreview.gd" type="Script" id=1]
[node name="SpatialPreview" type="ViewportContainer"]
margin_right = 60.0
margin_bottom = 60.0
rect_min_size = Vector2( 60, 60 )
rect_pivot_offset = Vector2( -198.876, -96.6558 )
script = ExtResource( 1 )
__meta__ = {
"_edit_use_anchors_": false
}
container_path = NodePath("Viewport")
[node name="Viewport" type="Viewport" parent="."]
size = Vector2( 60, 60 )
size_override_stretch = true
own_world = true
handle_input_locally = false
render_target_update_mode = 3
[node name="Camera" type="Camera" parent="Viewport"]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 10.9828 )
current = true
[node name="DirectionalLight" type="DirectionalLight" parent="Viewport"]
transform = Transform( 0.276929, 0, -0.96089, 0, 1, 0, 0.96089, 0, 0.276929, -13.093, 0, 6.67786 )

View File

@ -0,0 +1,12 @@
tool
extends TextureRect
func set_texture(tex: Texture)-> void:
texture = tex
if tex is PackerImageResource:
var t : ImageTexture = ImageTexture.new()
t.create_from_image(tex.data, 0)
texture = t

View File

@ -0,0 +1,12 @@
[gd_scene load_steps=2 format=2]
[ext_resource path="res://addons/model_manager/previews/TexturePreview.gd" type="Script" id=1]
[node name="TexturePreview" type="TextureRect"]
margin_bottom = 37.0
rect_min_size = Vector2( 50, 50 )
expand = true
script = ExtResource( 1 )
__meta__ = {
"_edit_use_anchors_": false
}

View File

@ -184,11 +184,121 @@ _global_script_classes=[ {
"language": "GDScript",
"path": "res://steering_ai_framework/GSAIUtils.gd"
}, {
"base": "InspectorGadgetBase",
"class": "GadgetAABB",
"language": "GDScript",
"path": "res://addons/inspector-gadget/src/gadgets/gadget_aabb.gd"
}, {
"base": "InspectorGadgetBase",
"class": "GadgetBasis",
"language": "GDScript",
"path": "res://addons/inspector-gadget/src/gadgets/gadget_basis.gd"
}, {
"base": "InspectorGadgetBase",
"class": "GadgetBool",
"language": "GDScript",
"path": "res://addons/inspector-gadget/src/gadgets/gadget_bool.gd"
}, {
"base": "GadgetVector4",
"class": "GadgetColor",
"language": "GDScript",
"path": "res://addons/inspector-gadget/src/gadgets/gadget_vector4/gadget_color.gd"
}, {
"base": "InspectorGadgetBase",
"class": "GadgetFloat",
"language": "GDScript",
"path": "res://addons/inspector-gadget/src/gadgets/gadget_float.gd"
}, {
"base": "InspectorGadgetBase",
"class": "GadgetInt",
"language": "GDScript",
"path": "res://addons/inspector-gadget/src/gadgets/gadget_int.gd"
}, {
"base": "GadgetStringEdit",
"class": "GadgetNodePath",
"language": "GDScript",
"path": "res://addons/inspector-gadget/src/gadgets/gadget_node_path.gd"
}, {
"base": "GadgetVector4",
"class": "GadgetPlane",
"language": "GDScript",
"path": "res://addons/inspector-gadget/src/gadgets/gadget_vector4/gadget_plane.gd"
}, {
"base": "GadgetVector4",
"class": "GadgetQuat",
"language": "GDScript",
"path": "res://addons/inspector-gadget/src/gadgets/gadget_vector4/gadget_quat.gd"
}, {
"base": "GadgetStringEdit",
"class": "GadgetRID",
"language": "GDScript",
"path": "res://addons/inspector-gadget/src/gadgets/gadget_rid.gd"
}, {
"base": "InspectorGadgetBase",
"class": "GadgetRect2",
"language": "GDScript",
"path": "res://addons/inspector-gadget/src/gadgets/gadget_rect2.gd"
}, {
"base": "InspectorGadgetBase",
"class": "GadgetResource",
"language": "GDScript",
"path": "res://addons/inspector-gadget/src/gadgets/gadget_resource.gd"
}, {
"base": "InspectorGadgetBase",
"class": "GadgetStringEdit",
"language": "GDScript",
"path": "res://addons/inspector-gadget/src/gadgets/gadget_string_edit.gd"
}, {
"base": "InspectorGadgetBase",
"class": "GadgetStringLabel",
"language": "GDScript",
"path": "res://addons/inspector-gadget/src/gadgets/gadget_string_label.gd"
}, {
"base": "InspectorGadgetBase",
"class": "GadgetTransform",
"language": "GDScript",
"path": "res://addons/inspector-gadget/src/gadgets/gadget_transform.gd"
}, {
"base": "InspectorGadgetBase",
"class": "GadgetTransform2D",
"language": "GDScript",
"path": "res://addons/inspector-gadget/src/gadgets/gadget_transform2d.gd"
}, {
"base": "InspectorGadgetBase",
"class": "GadgetVector2",
"language": "GDScript",
"path": "res://addons/inspector-gadget/src/gadgets/gadget_vector2.gd"
}, {
"base": "InspectorGadgetBase",
"class": "GadgetVector3",
"language": "GDScript",
"path": "res://addons/inspector-gadget/src/gadgets/gadget_vector3.gd"
}, {
"base": "InspectorGadgetBase",
"class": "GadgetVector4",
"language": "GDScript",
"path": "res://addons/inspector-gadget/src/gadgets/gadget_vector4.gd"
}, {
"base": "Resource",
"class": "GameModule",
"language": "GDScript",
"path": "res://scripts/game_modules/GameModule.gd"
}, {
"base": "InspectorGadgetBase",
"class": "InspectorGadget",
"language": "GDScript",
"path": "res://addons/inspector-gadget/src/inspector_gadget.gd"
}, {
"base": "MarginContainer",
"class": "InspectorGadgetBase",
"language": "GDScript",
"path": "res://addons/inspector-gadget/src/inspector_gadget_base.gd"
}, {
"base": "Reference",
"class": "InspectorGadgetUtil",
"language": "GDScript",
"path": "res://addons/inspector-gadget/src/inspector_gadget_util.gd"
}, {
"base": "ItemTemplate",
"class": "ItemTemplateGD",
"language": "GDScript",
@ -300,7 +410,29 @@ _global_script_class_icons={
"GSAISteeringBehavior": "",
"GSAITargetAcceleration": "",
"GSAIUtils": "",
"GadgetAABB": "",
"GadgetBasis": "",
"GadgetBool": "",
"GadgetColor": "",
"GadgetFloat": "",
"GadgetInt": "",
"GadgetNodePath": "",
"GadgetPlane": "",
"GadgetQuat": "",
"GadgetRID": "",
"GadgetRect2": "",
"GadgetResource": "",
"GadgetStringEdit": "",
"GadgetStringLabel": "",
"GadgetTransform": "",
"GadgetTransform2D": "",
"GadgetVector2": "",
"GadgetVector3": "",
"GadgetVector4": "",
"GameModule": "",
"InspectorGadget": "",
"InspectorGadgetBase": "",
"InspectorGadgetUtil": "",
"ItemTemplateGD": "",
"LayeredTextureMaker": "",
"Main": "",
@ -355,7 +487,7 @@ window/size/viewport_scale=100
[editor_plugins]
enabled=PoolStringArray( "ess_data" )
enabled=PoolStringArray( "model_manager" )
[ess]