2023-01-10 14:26:54 +00:00
|
|
|
/**************************************************************************/
|
|
|
|
/* editor_properties.h */
|
|
|
|
/**************************************************************************/
|
|
|
|
/* This file is part of: */
|
|
|
|
/* GODOT ENGINE */
|
|
|
|
/* https://godotengine.org */
|
|
|
|
/**************************************************************************/
|
|
|
|
/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */
|
|
|
|
/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */
|
|
|
|
/* */
|
|
|
|
/* 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. */
|
|
|
|
/**************************************************************************/
|
2018-05-16 17:19:33 +00:00
|
|
|
|
2018-05-15 20:12:35 +00:00
|
|
|
#ifndef EDITOR_PROPERTIES_H
|
|
|
|
#define EDITOR_PROPERTIES_H
|
|
|
|
|
|
|
|
#include "editor/create_dialog.h"
|
|
|
|
#include "editor/editor_inspector.h"
|
2022-06-09 10:19:30 +00:00
|
|
|
#include "editor/editor_locale_dialog.h"
|
2021-06-10 16:48:35 +00:00
|
|
|
#include "editor/editor_resource_picker.h"
|
2018-05-15 20:12:35 +00:00
|
|
|
#include "editor/editor_spin_slider.h"
|
|
|
|
#include "editor/property_selector.h"
|
|
|
|
#include "editor/scene_tree_editor.h"
|
|
|
|
#include "scene/gui/color_picker.h"
|
2018-12-04 12:30:00 +00:00
|
|
|
#include "scene/gui/line_edit.h"
|
2018-05-15 20:12:35 +00:00
|
|
|
|
2018-05-19 19:09:38 +00:00
|
|
|
class EditorPropertyNil : public EditorProperty {
|
2019-03-19 18:35:57 +00:00
|
|
|
GDCLASS(EditorPropertyNil, EditorProperty);
|
2018-05-19 19:09:38 +00:00
|
|
|
LineEdit *text;
|
|
|
|
|
|
|
|
public:
|
|
|
|
virtual void update_property();
|
|
|
|
EditorPropertyNil();
|
|
|
|
};
|
|
|
|
|
2018-05-15 20:12:35 +00:00
|
|
|
class EditorPropertyText : public EditorProperty {
|
2019-03-19 18:35:57 +00:00
|
|
|
GDCLASS(EditorPropertyText, EditorProperty);
|
2018-05-15 20:12:35 +00:00
|
|
|
LineEdit *text;
|
|
|
|
|
|
|
|
bool updating;
|
|
|
|
void _text_changed(const String &p_string);
|
2018-07-24 00:42:31 +00:00
|
|
|
void _text_entered(const String &p_string);
|
2018-05-15 20:12:35 +00:00
|
|
|
|
|
|
|
protected:
|
|
|
|
static void _bind_methods();
|
|
|
|
|
|
|
|
public:
|
|
|
|
virtual void update_property();
|
2018-08-17 01:50:12 +00:00
|
|
|
void set_placeholder(const String &p_string);
|
2018-05-15 20:12:35 +00:00
|
|
|
EditorPropertyText();
|
|
|
|
};
|
|
|
|
|
|
|
|
class EditorPropertyMultilineText : public EditorProperty {
|
2019-03-19 18:35:57 +00:00
|
|
|
GDCLASS(EditorPropertyMultilineText, EditorProperty);
|
2018-05-15 20:12:35 +00:00
|
|
|
TextEdit *text;
|
|
|
|
|
|
|
|
AcceptDialog *big_text_dialog;
|
|
|
|
TextEdit *big_text;
|
|
|
|
Button *open_big_text;
|
|
|
|
|
|
|
|
void _big_text_changed();
|
|
|
|
void _text_changed();
|
|
|
|
void _open_big_text();
|
|
|
|
|
|
|
|
protected:
|
|
|
|
void _notification(int p_what);
|
|
|
|
static void _bind_methods();
|
|
|
|
|
|
|
|
public:
|
|
|
|
virtual void update_property();
|
|
|
|
EditorPropertyMultilineText();
|
|
|
|
};
|
|
|
|
|
|
|
|
class EditorPropertyTextEnum : public EditorProperty {
|
2019-03-19 18:35:57 +00:00
|
|
|
GDCLASS(EditorPropertyTextEnum, EditorProperty);
|
2018-05-15 20:12:35 +00:00
|
|
|
|
2022-02-10 21:26:09 +00:00
|
|
|
HBoxContainer *default_layout;
|
|
|
|
HBoxContainer *edit_custom_layout;
|
|
|
|
|
|
|
|
OptionButton *option_button;
|
|
|
|
Button *edit_button;
|
|
|
|
|
|
|
|
LineEdit *custom_value_edit;
|
|
|
|
Button *accept_button;
|
|
|
|
Button *cancel_button;
|
|
|
|
|
|
|
|
Vector<String> options;
|
|
|
|
bool loose_mode = false;
|
|
|
|
|
|
|
|
void _emit_changed_value(String p_string);
|
2018-05-15 20:12:35 +00:00
|
|
|
void _option_selected(int p_which);
|
|
|
|
|
2022-02-10 21:26:09 +00:00
|
|
|
void _edit_custom_value();
|
|
|
|
void _custom_value_submitted(String p_value);
|
|
|
|
void _custom_value_accepted();
|
|
|
|
void _custom_value_cancelled();
|
|
|
|
|
2018-05-15 20:12:35 +00:00
|
|
|
protected:
|
|
|
|
static void _bind_methods();
|
2022-02-10 21:26:09 +00:00
|
|
|
void _notification(int p_what);
|
2018-05-15 20:12:35 +00:00
|
|
|
|
|
|
|
public:
|
2022-02-10 21:26:09 +00:00
|
|
|
void setup(const Vector<String> &p_options, bool p_loose_mode = false);
|
2018-05-15 20:12:35 +00:00
|
|
|
virtual void update_property();
|
|
|
|
EditorPropertyTextEnum();
|
|
|
|
};
|
|
|
|
|
|
|
|
class EditorPropertyPath : public EditorProperty {
|
2019-03-19 18:35:57 +00:00
|
|
|
GDCLASS(EditorPropertyPath, EditorProperty);
|
2018-05-15 20:12:35 +00:00
|
|
|
Vector<String> extensions;
|
|
|
|
bool folder;
|
|
|
|
bool global;
|
2018-11-12 19:04:58 +00:00
|
|
|
bool save_mode;
|
2018-05-15 20:12:35 +00:00
|
|
|
EditorFileDialog *dialog;
|
2018-08-23 14:44:36 +00:00
|
|
|
LineEdit *path;
|
|
|
|
Button *path_edit;
|
2018-05-15 20:12:35 +00:00
|
|
|
|
|
|
|
void _path_selected(const String &p_path);
|
|
|
|
void _path_pressed();
|
2018-08-23 14:44:36 +00:00
|
|
|
void _path_focus_exited();
|
2018-05-15 20:12:35 +00:00
|
|
|
|
|
|
|
protected:
|
|
|
|
static void _bind_methods();
|
2018-08-23 14:44:36 +00:00
|
|
|
void _notification(int p_what);
|
2018-05-15 20:12:35 +00:00
|
|
|
|
|
|
|
public:
|
|
|
|
void setup(const Vector<String> &p_extensions, bool p_folder, bool p_global);
|
2018-11-12 19:04:58 +00:00
|
|
|
void set_save_mode();
|
2018-05-15 20:12:35 +00:00
|
|
|
virtual void update_property();
|
|
|
|
EditorPropertyPath();
|
|
|
|
};
|
|
|
|
|
2018-07-19 04:58:40 +00:00
|
|
|
class EditorPropertyClassName : public EditorProperty {
|
2019-03-19 18:35:57 +00:00
|
|
|
GDCLASS(EditorPropertyClassName, EditorProperty);
|
|
|
|
|
2018-07-19 04:58:40 +00:00
|
|
|
private:
|
|
|
|
CreateDialog *dialog;
|
|
|
|
Button *property;
|
|
|
|
String selected_type;
|
|
|
|
String base_type;
|
|
|
|
void _property_selected();
|
|
|
|
void _dialog_created();
|
|
|
|
|
|
|
|
protected:
|
|
|
|
static void _bind_methods();
|
|
|
|
|
|
|
|
public:
|
|
|
|
void setup(const String &p_base_type, const String &p_selected_type);
|
|
|
|
virtual void update_property();
|
|
|
|
EditorPropertyClassName();
|
|
|
|
};
|
|
|
|
|
2018-05-15 20:12:35 +00:00
|
|
|
class EditorPropertyMember : public EditorProperty {
|
2019-03-19 18:35:57 +00:00
|
|
|
GDCLASS(EditorPropertyMember, EditorProperty);
|
|
|
|
|
2018-05-15 20:12:35 +00:00
|
|
|
public:
|
|
|
|
enum Type {
|
|
|
|
MEMBER_METHOD_OF_VARIANT_TYPE, ///< a method of a type
|
|
|
|
MEMBER_METHOD_OF_BASE_TYPE, ///< a method of a base type
|
|
|
|
MEMBER_METHOD_OF_INSTANCE, ///< a method of an instance
|
|
|
|
MEMBER_METHOD_OF_SCRIPT, ///< a method of a script & base
|
|
|
|
MEMBER_PROPERTY_OF_VARIANT_TYPE, ///< a property of a type
|
|
|
|
MEMBER_PROPERTY_OF_BASE_TYPE, ///< a property of a base type
|
|
|
|
MEMBER_PROPERTY_OF_INSTANCE, ///< a property of an instance
|
|
|
|
MEMBER_PROPERTY_OF_SCRIPT, ///< a property of a script & base
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
private:
|
|
|
|
Type hint;
|
|
|
|
PropertySelector *selector;
|
|
|
|
Button *property;
|
|
|
|
String hint_text;
|
|
|
|
|
|
|
|
void _property_selected(const String &p_selected);
|
|
|
|
void _property_select();
|
|
|
|
|
|
|
|
protected:
|
|
|
|
static void _bind_methods();
|
|
|
|
|
|
|
|
public:
|
|
|
|
void setup(Type p_hint, const String &p_hint_text);
|
|
|
|
virtual void update_property();
|
|
|
|
EditorPropertyMember();
|
|
|
|
};
|
|
|
|
|
|
|
|
class EditorPropertyCheck : public EditorProperty {
|
2019-03-19 18:35:57 +00:00
|
|
|
GDCLASS(EditorPropertyCheck, EditorProperty);
|
2018-05-15 20:12:35 +00:00
|
|
|
CheckBox *checkbox;
|
|
|
|
|
|
|
|
void _checkbox_pressed();
|
|
|
|
|
|
|
|
protected:
|
|
|
|
static void _bind_methods();
|
|
|
|
|
|
|
|
public:
|
|
|
|
virtual void update_property();
|
|
|
|
EditorPropertyCheck();
|
|
|
|
};
|
|
|
|
|
|
|
|
class EditorPropertyEnum : public EditorProperty {
|
2019-03-19 18:35:57 +00:00
|
|
|
GDCLASS(EditorPropertyEnum, EditorProperty);
|
2018-05-15 20:12:35 +00:00
|
|
|
OptionButton *options;
|
|
|
|
|
|
|
|
void _option_selected(int p_which);
|
|
|
|
|
|
|
|
protected:
|
|
|
|
static void _bind_methods();
|
|
|
|
|
|
|
|
public:
|
|
|
|
void setup(const Vector<String> &p_options);
|
|
|
|
virtual void update_property();
|
2018-07-14 21:15:42 +00:00
|
|
|
void set_option_button_clip(bool p_enable);
|
2018-05-15 20:12:35 +00:00
|
|
|
EditorPropertyEnum();
|
|
|
|
};
|
|
|
|
|
|
|
|
class EditorPropertyFlags : public EditorProperty {
|
2019-03-19 18:35:57 +00:00
|
|
|
GDCLASS(EditorPropertyFlags, EditorProperty);
|
2018-05-15 20:12:35 +00:00
|
|
|
VBoxContainer *vbox;
|
|
|
|
Vector<CheckBox *> flags;
|
2022-03-06 17:04:29 +00:00
|
|
|
Vector<uint32_t> flag_values;
|
2018-05-15 20:12:35 +00:00
|
|
|
|
2022-03-06 17:04:29 +00:00
|
|
|
void _flag_toggled(int p_index);
|
2018-05-15 20:12:35 +00:00
|
|
|
|
|
|
|
protected:
|
|
|
|
static void _bind_methods();
|
|
|
|
|
|
|
|
public:
|
|
|
|
void setup(const Vector<String> &p_options);
|
|
|
|
virtual void update_property();
|
|
|
|
EditorPropertyFlags();
|
|
|
|
};
|
|
|
|
|
|
|
|
class EditorPropertyLayersGrid;
|
|
|
|
|
|
|
|
class EditorPropertyLayers : public EditorProperty {
|
2019-03-19 18:35:57 +00:00
|
|
|
GDCLASS(EditorPropertyLayers, EditorProperty);
|
|
|
|
|
2018-05-15 20:12:35 +00:00
|
|
|
public:
|
|
|
|
enum LayerType {
|
|
|
|
LAYER_PHYSICS_2D,
|
|
|
|
LAYER_RENDER_2D,
|
2022-06-13 13:51:23 +00:00
|
|
|
LAYER_NAVIGATION_2D,
|
2018-05-15 20:12:35 +00:00
|
|
|
LAYER_PHYSICS_3D,
|
|
|
|
LAYER_RENDER_3D,
|
2022-06-13 13:51:23 +00:00
|
|
|
LAYER_NAVIGATION_3D,
|
2018-05-15 20:12:35 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
private:
|
|
|
|
EditorPropertyLayersGrid *grid;
|
|
|
|
void _grid_changed(uint32_t p_grid);
|
|
|
|
LayerType layer_type;
|
|
|
|
PopupMenu *layers;
|
|
|
|
Button *button;
|
2022-10-25 11:05:20 +00:00
|
|
|
String basename;
|
2018-05-15 20:12:35 +00:00
|
|
|
|
|
|
|
void _button_pressed();
|
|
|
|
void _menu_pressed(int p_menu);
|
2022-03-24 09:19:59 +00:00
|
|
|
void _refresh_names();
|
2018-05-15 20:12:35 +00:00
|
|
|
|
2022-10-25 11:05:20 +00:00
|
|
|
String _get_layer_name(int p_index) const;
|
|
|
|
|
2018-05-15 20:12:35 +00:00
|
|
|
protected:
|
|
|
|
static void _bind_methods();
|
|
|
|
|
|
|
|
public:
|
|
|
|
void setup(LayerType p_layer_type);
|
|
|
|
virtual void update_property();
|
|
|
|
EditorPropertyLayers();
|
|
|
|
};
|
|
|
|
|
|
|
|
class EditorPropertyInteger : public EditorProperty {
|
2019-03-19 18:35:57 +00:00
|
|
|
GDCLASS(EditorPropertyInteger, EditorProperty);
|
2018-05-15 20:12:35 +00:00
|
|
|
EditorSpinSlider *spin;
|
|
|
|
bool setting;
|
2020-01-16 01:37:08 +00:00
|
|
|
void _value_changed(int64_t p_val);
|
2018-05-15 20:12:35 +00:00
|
|
|
|
|
|
|
protected:
|
|
|
|
static void _bind_methods();
|
|
|
|
|
|
|
|
public:
|
|
|
|
virtual void update_property();
|
2020-01-16 01:37:08 +00:00
|
|
|
void setup(int64_t p_min, int64_t p_max, int64_t p_step, bool p_allow_greater, bool p_allow_lesser);
|
2018-05-15 20:12:35 +00:00
|
|
|
EditorPropertyInteger();
|
|
|
|
};
|
|
|
|
|
|
|
|
class EditorPropertyObjectID : public EditorProperty {
|
2019-03-19 18:35:57 +00:00
|
|
|
GDCLASS(EditorPropertyObjectID, EditorProperty);
|
2018-05-15 20:12:35 +00:00
|
|
|
Button *edit;
|
|
|
|
String base_type;
|
|
|
|
void _edit_pressed();
|
|
|
|
|
|
|
|
protected:
|
|
|
|
static void _bind_methods();
|
|
|
|
|
|
|
|
public:
|
|
|
|
virtual void update_property();
|
|
|
|
void setup(const String &p_base_type);
|
|
|
|
EditorPropertyObjectID();
|
|
|
|
};
|
|
|
|
|
|
|
|
class EditorPropertyFloat : public EditorProperty {
|
2019-03-19 18:35:57 +00:00
|
|
|
GDCLASS(EditorPropertyFloat, EditorProperty);
|
2018-05-15 20:12:35 +00:00
|
|
|
EditorSpinSlider *spin;
|
|
|
|
bool setting;
|
|
|
|
void _value_changed(double p_val);
|
|
|
|
|
|
|
|
protected:
|
|
|
|
static void _bind_methods();
|
|
|
|
|
|
|
|
public:
|
|
|
|
virtual void update_property();
|
2018-05-16 12:13:41 +00:00
|
|
|
void setup(double p_min, double p_max, double p_step, bool p_no_slider, bool p_exp_range, bool p_greater, bool p_lesser);
|
2018-05-15 20:12:35 +00:00
|
|
|
EditorPropertyFloat();
|
|
|
|
};
|
|
|
|
|
|
|
|
class EditorPropertyEasing : public EditorProperty {
|
2019-03-19 18:35:57 +00:00
|
|
|
GDCLASS(EditorPropertyEasing, EditorProperty);
|
2018-05-15 20:12:35 +00:00
|
|
|
Control *easing_draw;
|
2018-07-18 22:37:17 +00:00
|
|
|
PopupMenu *preset;
|
2018-12-04 12:30:00 +00:00
|
|
|
EditorSpinSlider *spin;
|
|
|
|
bool setting;
|
|
|
|
|
2019-09-06 14:04:07 +00:00
|
|
|
bool dragging;
|
2018-07-18 22:37:17 +00:00
|
|
|
bool full;
|
2018-12-04 12:30:00 +00:00
|
|
|
bool flip;
|
2018-07-18 22:37:17 +00:00
|
|
|
|
|
|
|
enum {
|
|
|
|
EASING_ZERO,
|
|
|
|
EASING_LINEAR,
|
|
|
|
EASING_IN,
|
|
|
|
EASING_OUT,
|
|
|
|
EASING_IN_OUT,
|
|
|
|
EASING_OUT_IN,
|
|
|
|
EASING_MAX
|
|
|
|
|
|
|
|
};
|
2018-05-15 20:12:35 +00:00
|
|
|
|
|
|
|
void _drag_easing(const Ref<InputEvent> &p_ev);
|
|
|
|
void _draw_easing();
|
2018-07-18 22:37:17 +00:00
|
|
|
void _set_preset(int);
|
2018-05-15 20:12:35 +00:00
|
|
|
|
2018-12-04 12:30:00 +00:00
|
|
|
void _setup_spin();
|
|
|
|
void _spin_value_changed(double p_value);
|
|
|
|
void _spin_focus_exited();
|
|
|
|
|
|
|
|
void _notification(int p_what);
|
|
|
|
|
2018-05-15 20:12:35 +00:00
|
|
|
protected:
|
|
|
|
static void _bind_methods();
|
|
|
|
|
|
|
|
public:
|
|
|
|
virtual void update_property();
|
|
|
|
void setup(bool p_full, bool p_flip);
|
|
|
|
EditorPropertyEasing();
|
|
|
|
};
|
|
|
|
|
|
|
|
class EditorPropertyVector2 : public EditorProperty {
|
2019-03-19 18:35:57 +00:00
|
|
|
GDCLASS(EditorPropertyVector2, EditorProperty);
|
2018-05-15 20:12:35 +00:00
|
|
|
EditorSpinSlider *spin[2];
|
|
|
|
bool setting;
|
2022-04-05 00:58:21 +00:00
|
|
|
double ratio_xy = 1.0;
|
|
|
|
double ratio_yx = 1.0;
|
|
|
|
TextureButton *linked = nullptr;
|
|
|
|
void _update_ratio();
|
2018-09-02 17:16:33 +00:00
|
|
|
void _value_changed(double p_val, const String &p_name);
|
2018-05-15 20:12:35 +00:00
|
|
|
|
|
|
|
protected:
|
2018-07-19 01:27:39 +00:00
|
|
|
void _notification(int p_what);
|
2018-05-15 20:12:35 +00:00
|
|
|
static void _bind_methods();
|
|
|
|
|
|
|
|
public:
|
|
|
|
virtual void update_property();
|
2022-04-05 00:58:21 +00:00
|
|
|
void setup(double p_min, double p_max, double p_step, bool p_no_slider, bool p_link = false);
|
2018-05-15 20:12:35 +00:00
|
|
|
EditorPropertyVector2();
|
|
|
|
};
|
|
|
|
|
|
|
|
class EditorPropertyRect2 : public EditorProperty {
|
2019-03-19 18:35:57 +00:00
|
|
|
GDCLASS(EditorPropertyRect2, EditorProperty);
|
2018-05-15 20:12:35 +00:00
|
|
|
EditorSpinSlider *spin[4];
|
|
|
|
bool setting;
|
2018-09-02 17:16:33 +00:00
|
|
|
void _value_changed(double p_val, const String &p_name);
|
2018-05-15 20:12:35 +00:00
|
|
|
|
|
|
|
protected:
|
2018-07-19 01:27:39 +00:00
|
|
|
void _notification(int p_what);
|
2018-05-15 20:12:35 +00:00
|
|
|
static void _bind_methods();
|
|
|
|
|
|
|
|
public:
|
|
|
|
virtual void update_property();
|
|
|
|
void setup(double p_min, double p_max, double p_step, bool p_no_slider);
|
|
|
|
EditorPropertyRect2();
|
|
|
|
};
|
|
|
|
|
|
|
|
class EditorPropertyVector3 : public EditorProperty {
|
2019-03-19 18:35:57 +00:00
|
|
|
GDCLASS(EditorPropertyVector3, EditorProperty);
|
2018-05-15 20:12:35 +00:00
|
|
|
EditorSpinSlider *spin[3];
|
|
|
|
bool setting;
|
2022-04-05 00:58:21 +00:00
|
|
|
double ratio_yx = 1.0;
|
|
|
|
double ratio_zx = 1.0;
|
|
|
|
double ratio_xy = 1.0;
|
|
|
|
double ratio_zy = 1.0;
|
|
|
|
double ratio_xz = 1.0;
|
|
|
|
double ratio_yz = 1.0;
|
|
|
|
TextureButton *linked = nullptr;
|
|
|
|
void _update_ratio();
|
2018-09-02 17:16:33 +00:00
|
|
|
void _value_changed(double p_val, const String &p_name);
|
2018-05-15 20:12:35 +00:00
|
|
|
|
|
|
|
protected:
|
2018-07-19 01:27:39 +00:00
|
|
|
void _notification(int p_what);
|
2018-05-15 20:12:35 +00:00
|
|
|
static void _bind_methods();
|
|
|
|
|
|
|
|
public:
|
|
|
|
virtual void update_property();
|
2022-04-05 00:58:21 +00:00
|
|
|
void setup(double p_min, double p_max, double p_step, bool p_no_slider, bool p_link = false);
|
2018-05-15 20:12:35 +00:00
|
|
|
EditorPropertyVector3();
|
|
|
|
};
|
|
|
|
|
|
|
|
class EditorPropertyPlane : public EditorProperty {
|
2019-03-19 18:35:57 +00:00
|
|
|
GDCLASS(EditorPropertyPlane, EditorProperty);
|
2018-05-15 20:12:35 +00:00
|
|
|
EditorSpinSlider *spin[4];
|
|
|
|
bool setting;
|
2018-09-02 17:16:33 +00:00
|
|
|
void _value_changed(double p_val, const String &p_name);
|
2018-05-15 20:12:35 +00:00
|
|
|
|
|
|
|
protected:
|
2018-07-19 01:27:39 +00:00
|
|
|
void _notification(int p_what);
|
2018-05-15 20:12:35 +00:00
|
|
|
static void _bind_methods();
|
|
|
|
|
|
|
|
public:
|
|
|
|
virtual void update_property();
|
|
|
|
void setup(double p_min, double p_max, double p_step, bool p_no_slider);
|
|
|
|
EditorPropertyPlane();
|
|
|
|
};
|
|
|
|
|
|
|
|
class EditorPropertyQuat : public EditorProperty {
|
2019-03-19 18:35:57 +00:00
|
|
|
GDCLASS(EditorPropertyQuat, EditorProperty);
|
2018-05-15 20:12:35 +00:00
|
|
|
EditorSpinSlider *spin[4];
|
|
|
|
bool setting;
|
2018-09-02 17:16:33 +00:00
|
|
|
void _value_changed(double p_val, const String &p_name);
|
2018-05-15 20:12:35 +00:00
|
|
|
|
|
|
|
protected:
|
2018-07-19 01:27:39 +00:00
|
|
|
void _notification(int p_what);
|
2018-05-15 20:12:35 +00:00
|
|
|
static void _bind_methods();
|
|
|
|
|
|
|
|
public:
|
|
|
|
virtual void update_property();
|
|
|
|
void setup(double p_min, double p_max, double p_step, bool p_no_slider);
|
|
|
|
EditorPropertyQuat();
|
|
|
|
};
|
|
|
|
|
|
|
|
class EditorPropertyAABB : public EditorProperty {
|
2019-03-19 18:35:57 +00:00
|
|
|
GDCLASS(EditorPropertyAABB, EditorProperty);
|
2018-05-15 20:12:35 +00:00
|
|
|
EditorSpinSlider *spin[6];
|
|
|
|
bool setting;
|
2018-09-02 17:16:33 +00:00
|
|
|
void _value_changed(double p_val, const String &p_name);
|
2018-05-15 20:12:35 +00:00
|
|
|
|
|
|
|
protected:
|
2018-07-19 01:27:39 +00:00
|
|
|
void _notification(int p_what);
|
2018-05-15 20:12:35 +00:00
|
|
|
static void _bind_methods();
|
|
|
|
|
|
|
|
public:
|
|
|
|
virtual void update_property();
|
|
|
|
void setup(double p_min, double p_max, double p_step, bool p_no_slider);
|
|
|
|
EditorPropertyAABB();
|
|
|
|
};
|
|
|
|
|
|
|
|
class EditorPropertyTransform2D : public EditorProperty {
|
2019-03-19 18:35:57 +00:00
|
|
|
GDCLASS(EditorPropertyTransform2D, EditorProperty);
|
2018-05-15 20:12:35 +00:00
|
|
|
EditorSpinSlider *spin[6];
|
|
|
|
bool setting;
|
2018-09-02 17:16:33 +00:00
|
|
|
void _value_changed(double p_val, const String &p_name);
|
2018-05-15 20:12:35 +00:00
|
|
|
|
|
|
|
protected:
|
2018-07-19 01:27:39 +00:00
|
|
|
void _notification(int p_what);
|
2018-05-15 20:12:35 +00:00
|
|
|
static void _bind_methods();
|
|
|
|
|
|
|
|
public:
|
|
|
|
virtual void update_property();
|
|
|
|
void setup(double p_min, double p_max, double p_step, bool p_no_slider);
|
|
|
|
EditorPropertyTransform2D();
|
|
|
|
};
|
|
|
|
|
|
|
|
class EditorPropertyBasis : public EditorProperty {
|
2019-03-19 18:35:57 +00:00
|
|
|
GDCLASS(EditorPropertyBasis, EditorProperty);
|
2018-05-15 20:12:35 +00:00
|
|
|
EditorSpinSlider *spin[9];
|
|
|
|
bool setting;
|
2018-09-02 17:16:33 +00:00
|
|
|
void _value_changed(double p_val, const String &p_name);
|
2018-05-15 20:12:35 +00:00
|
|
|
|
|
|
|
protected:
|
2018-07-19 01:27:39 +00:00
|
|
|
void _notification(int p_what);
|
2018-05-15 20:12:35 +00:00
|
|
|
static void _bind_methods();
|
|
|
|
|
|
|
|
public:
|
|
|
|
virtual void update_property();
|
|
|
|
void setup(double p_min, double p_max, double p_step, bool p_no_slider);
|
|
|
|
EditorPropertyBasis();
|
|
|
|
};
|
|
|
|
|
|
|
|
class EditorPropertyTransform : public EditorProperty {
|
2019-03-19 18:35:57 +00:00
|
|
|
GDCLASS(EditorPropertyTransform, EditorProperty);
|
2018-05-15 20:12:35 +00:00
|
|
|
EditorSpinSlider *spin[12];
|
|
|
|
bool setting;
|
2018-09-02 17:16:33 +00:00
|
|
|
void _value_changed(double p_val, const String &p_name);
|
2018-05-15 20:12:35 +00:00
|
|
|
|
|
|
|
protected:
|
2018-07-19 01:27:39 +00:00
|
|
|
void _notification(int p_what);
|
2018-05-15 20:12:35 +00:00
|
|
|
static void _bind_methods();
|
|
|
|
|
|
|
|
public:
|
|
|
|
virtual void update_property();
|
|
|
|
void setup(double p_min, double p_max, double p_step, bool p_no_slider);
|
|
|
|
EditorPropertyTransform();
|
|
|
|
};
|
|
|
|
|
|
|
|
class EditorPropertyColor : public EditorProperty {
|
2019-03-19 18:35:57 +00:00
|
|
|
GDCLASS(EditorPropertyColor, EditorProperty);
|
2018-05-15 20:12:35 +00:00
|
|
|
ColorPickerButton *picker;
|
|
|
|
void _color_changed(const Color &p_color);
|
2021-01-09 13:17:33 +00:00
|
|
|
void _popup_closed();
|
2019-08-30 20:25:15 +00:00
|
|
|
void _picker_created();
|
2021-01-09 13:17:33 +00:00
|
|
|
void _picker_opening();
|
|
|
|
|
|
|
|
Color last_color;
|
2018-05-15 20:12:35 +00:00
|
|
|
|
|
|
|
protected:
|
|
|
|
static void _bind_methods();
|
|
|
|
|
|
|
|
public:
|
|
|
|
virtual void update_property();
|
|
|
|
void setup(bool p_show_alpha);
|
|
|
|
EditorPropertyColor();
|
|
|
|
};
|
|
|
|
|
|
|
|
class EditorPropertyNodePath : public EditorProperty {
|
2019-03-19 18:35:57 +00:00
|
|
|
GDCLASS(EditorPropertyNodePath, EditorProperty);
|
2018-05-15 20:12:35 +00:00
|
|
|
Button *assign;
|
|
|
|
Button *clear;
|
|
|
|
SceneTreeDialog *scene_tree;
|
|
|
|
NodePath base_hint;
|
2019-01-14 18:52:43 +00:00
|
|
|
bool use_path_from_scene_root;
|
2018-05-15 20:12:35 +00:00
|
|
|
|
2018-06-27 23:50:25 +00:00
|
|
|
Vector<StringName> valid_types;
|
2018-05-15 20:12:35 +00:00
|
|
|
void _node_selected(const NodePath &p_path);
|
|
|
|
void _node_assign();
|
|
|
|
void _node_clear();
|
|
|
|
|
2021-12-09 17:50:57 +00:00
|
|
|
bool can_drop_data_fw(const Point2 &p_point, const Variant &p_data, Control *p_from) const;
|
|
|
|
void drop_data_fw(const Point2 &p_point, const Variant &p_data, Control *p_from);
|
|
|
|
bool is_drop_valid(const Dictionary &p_drag_data) const;
|
|
|
|
|
2018-05-15 20:12:35 +00:00
|
|
|
protected:
|
|
|
|
static void _bind_methods();
|
|
|
|
void _notification(int p_what);
|
|
|
|
|
|
|
|
public:
|
|
|
|
virtual void update_property();
|
2019-01-14 18:52:43 +00:00
|
|
|
void setup(const NodePath &p_base_hint, Vector<StringName> p_valid_types, bool p_use_path_from_scene_root = true);
|
2018-05-15 20:12:35 +00:00
|
|
|
EditorPropertyNodePath();
|
|
|
|
};
|
|
|
|
|
2022-06-09 10:19:30 +00:00
|
|
|
class EditorPropertyLocale : public EditorProperty {
|
|
|
|
GDCLASS(EditorPropertyLocale, EditorProperty);
|
|
|
|
EditorLocaleDialog *dialog;
|
|
|
|
LineEdit *locale;
|
|
|
|
Button *locale_edit;
|
|
|
|
|
|
|
|
void _locale_selected(const String &p_locale);
|
|
|
|
void _locale_pressed();
|
|
|
|
void _locale_focus_exited();
|
|
|
|
|
|
|
|
protected:
|
|
|
|
static void _bind_methods();
|
|
|
|
void _notification(int p_what);
|
|
|
|
|
|
|
|
public:
|
|
|
|
void setup(const String &p_hit_string);
|
|
|
|
virtual void update_property();
|
|
|
|
EditorPropertyLocale();
|
|
|
|
};
|
|
|
|
|
2019-01-13 14:43:25 +00:00
|
|
|
class EditorPropertyRID : public EditorProperty {
|
2019-03-19 18:35:57 +00:00
|
|
|
GDCLASS(EditorPropertyRID, EditorProperty);
|
2019-01-13 14:43:25 +00:00
|
|
|
Label *label;
|
|
|
|
|
|
|
|
public:
|
|
|
|
virtual void update_property();
|
|
|
|
EditorPropertyRID();
|
|
|
|
};
|
|
|
|
|
2018-05-15 20:12:35 +00:00
|
|
|
class EditorPropertyResource : public EditorProperty {
|
2019-03-19 18:35:57 +00:00
|
|
|
GDCLASS(EditorPropertyResource, EditorProperty);
|
2018-05-15 20:12:35 +00:00
|
|
|
|
2021-06-10 16:48:35 +00:00
|
|
|
EditorResourcePicker *resource_picker = nullptr;
|
|
|
|
SceneTreeDialog *scene_tree = nullptr;
|
2018-05-15 20:12:35 +00:00
|
|
|
|
2021-06-10 16:48:35 +00:00
|
|
|
bool use_sub_inspector = false;
|
|
|
|
EditorInspector *sub_inspector = nullptr;
|
|
|
|
VBoxContainer *sub_inspector_vbox = nullptr;
|
|
|
|
bool updating_theme = false;
|
|
|
|
bool opened_editor = false;
|
2018-05-15 20:12:35 +00:00
|
|
|
|
2021-11-02 11:15:14 +00:00
|
|
|
void _resource_selected(const RES &p_resource, bool p_edit);
|
2021-06-10 16:48:35 +00:00
|
|
|
void _resource_changed(const RES &p_resource);
|
2018-05-15 20:12:35 +00:00
|
|
|
|
|
|
|
void _viewport_selected(const NodePath &p_path);
|
|
|
|
|
2018-05-17 21:02:16 +00:00
|
|
|
void _sub_inspector_property_keyed(const String &p_property, const Variant &p_value, bool);
|
|
|
|
void _sub_inspector_resource_selected(const RES &p_resource, const String &p_property);
|
|
|
|
void _sub_inspector_object_id_selected(int p_id);
|
|
|
|
|
2021-09-23 21:36:28 +00:00
|
|
|
bool _can_use_sub_inspector(const RES &p_resource);
|
2018-06-19 01:10:48 +00:00
|
|
|
void _open_editor_pressed();
|
2019-03-04 19:44:39 +00:00
|
|
|
void _fold_other_editors(Object *p_self);
|
2021-02-12 23:34:28 +00:00
|
|
|
void _update_property_bg();
|
|
|
|
|
2018-05-15 20:12:35 +00:00
|
|
|
protected:
|
|
|
|
static void _bind_methods();
|
|
|
|
void _notification(int p_what);
|
|
|
|
|
|
|
|
public:
|
|
|
|
virtual void update_property();
|
2021-06-10 16:48:35 +00:00
|
|
|
void setup(Object *p_object, const String &p_path, const String &p_base_type);
|
2018-05-17 21:02:16 +00:00
|
|
|
|
|
|
|
void collapse_all_folding();
|
|
|
|
void expand_all_folding();
|
|
|
|
|
2018-07-14 21:15:42 +00:00
|
|
|
void set_use_sub_inspector(bool p_enable);
|
|
|
|
|
2018-05-15 20:12:35 +00:00
|
|
|
EditorPropertyResource();
|
|
|
|
};
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////
|
|
|
|
/// \brief The EditorInspectorDefaultPlugin class
|
|
|
|
///
|
|
|
|
class EditorInspectorDefaultPlugin : public EditorInspectorPlugin {
|
2019-03-19 18:35:57 +00:00
|
|
|
GDCLASS(EditorInspectorDefaultPlugin, EditorInspectorPlugin);
|
2018-05-15 20:12:35 +00:00
|
|
|
|
|
|
|
public:
|
|
|
|
virtual bool can_handle(Object *p_object);
|
|
|
|
virtual void parse_begin(Object *p_object);
|
|
|
|
virtual bool parse_property(Object *p_object, Variant::Type p_type, const String &p_path, PropertyHint p_hint, const String &p_hint_text, int p_usage);
|
|
|
|
virtual void parse_end();
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif // EDITOR_PROPERTIES_H
|