Describe the process of creating editor icons globally and per module

Also created a new `Editor development` chapter/section to encompass
C++ editor development side specifically which is not necessarily
related to pure core development, generic types and patterns.
This commit is contained in:
Andrii Doroshenko (Xrayez)
2019-07-02 21:55:49 +03:00
parent fb699e6591
commit 209af20763
5 changed files with 146 additions and 0 deletions

View File

@@ -410,6 +410,35 @@ the docs will become accessible within the engine's built-in documentation syste
In order to keep documentation up-to-date, all you'll have to do is simply modify
one of the ``ClassName.xml`` files and recompile the engine from now on.
.. _doc_custom_module_icons:
Adding custom editor icons
--------------------------
Similarly to how you can write self-contained documentation within a module,
you can also create your own custom icons for classes to appear in the editor.
For the actual process of creating editor icons to be integrated within the engine,
please refer to :ref:`doc_editor_icons` first.
Once you've created your icon(s), proceed with the following steps:
1. Make a new directory in the root of the module named ``icons``. This is the
default path for the engine to look for module's editor icons.
2. Move your newly created ``svg`` icons (optimized or not) into that folder.
3. Recompile the engine and run the editor. Now the icon(s) will appear in
editor's interface where appropriate.
If you'd like to store your icons somewhere else within your module,
add the following code snippet to ``config.py`` to override the default path:
.. code:: python
def get_icons_path():
return "path/to/icons"
Summing up
----------

View File

@@ -0,0 +1,98 @@
.. _doc_editor_icons:
Editor icons
============
When a new class is created and exposed to scripting, the editor's interface
will display it with a default icon representing the base class it inherits
from. Yet in most cases it is recommended to create icons for new classes
to improve the user experience.
Creating icons
~~~~~~~~~~~~~~
In order to create new icons, you first need a vector graphics editor installed.
For instance, you can use the open-source `Inkscape <https://inkscape.org/>`_ editor.
Clone the ``godot-design`` repository containing all the original editor icons:
.. code:: bash
git clone https://github.com/godotengine/godot-design
The icons must be created in a vector graphics editor in ``svg`` format. You
can use ``engine/icons/inkscape_template.svg`` with default icon properties
already set up.
Once you're satisfied with the icon's design, save the icon in
``engine/icons/svg/`` folder. But in order for the engine to automatically
pick up the icons, each icon's filename:
1. Must be prefixed with ``icon_``.
2. ``PascalCase`` name should be converted to ``snake_case``, so words
are separated by ``_`` whenever case changes, and uppercase acronyms must
also have all letters, numbers, and special characters separated as distinct
words. Some examples:
+--------------------+----------------------------------+
| Name | Filename |
+====================+==================================+
| ``Polygon2D`` | ``icon_polygon_2_d.svg`` |
+--------------------+----------------------------------+
| ``CSGPolygon`` | ``icon_c_s_g_polygon.svg`` |
+--------------------+----------------------------------+
| ``CPUParticles2D`` | ``icon_c_p_u_particles_2_d.svg`` |
+--------------------+----------------------------------+
| ``C#`` | ``icon_c_#.svg`` |
+--------------------+----------------------------------+
Icon optimization
~~~~~~~~~~~~~~~~~
Because the editor renders the ``svg``'s at runtime, they need to be small
in size, so they can be efficiently parsed. Editor icons must be first
optimized before being added to the engine, to do so:
1. Add them to the ``engine/icons/svg`` folder.
2. Run the ``optimize.py`` script. You must have the ``scour`` package installed:
.. code:: bash
pip install scour
cd godot-design/engine/icons && ./optimize.py
The optimized icons will be generated in the ``engine/icons/optimized`` folder.
Integrating and sharing the icons
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If you're contributing to the engine itself, you should make a pull request to
add optimized icons to ``godot/editor/icons`` in the main repository. Recompile
the engine to make sure it does pick up new icons for classes. Once merged,
don't forget to add the original version of the icons to the ``godot-design``
repository so that the icon can be improved upon by other contributors.
It's also possible to create custom icons within a module. If you're creating
your own module and don't plan to integrate it with Godot, you don't need to
make a separate pull request for your icons to be available within the editor
as they can be self-contained.
For specific instructions on how to create module icons, refer to
:ref:`Creating custom module icons<doc_custom_module_icons>`.
Troubleshooting
~~~~~~~~~~~~~~~
If icons don't appear in the editor make sure that:
1. Each icon's filename matches the naming requirement as described previously.
2. ``modules/svg`` is enabled (should be enabled by default). Without it, icons
won't appear in the editor at all.
References:
~~~~~~~~~~~
- `editor/icons <https://github.com/godotengine/godot/tree/master/editor/icons>`__

View File

@@ -0,0 +1,9 @@
Editor development
==================
.. toctree::
:maxdepth: 1
:name: toc-devel-editor
introduction
creating_icons

View File

@@ -0,0 +1,9 @@
.. _doc_editor_intro:
Introduction
============
As the engine is constantly evolving and new features are being added, it is
important to familiarize yourself with the editor and tools development in C++.
Without the editor, some of the engine's internal functionality would become
unaccessible and make the development not intuitive.

View File

@@ -111,6 +111,7 @@ The main documentation for the site is organized into the following sections:
development/compiling/index
development/cpp/index
development/editor/index
development/file_formats/index