diff --git a/.gitignore b/.gitignore index dc38e6ff..84b6d287 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,9 @@ build +/exts/__pycache__ +/resources/templates +/resources/theme/layout.html +.nvimrc +/drafts/images # QTCreator *.config @@ -8,6 +13,3 @@ build *.user *.cflags *.cxxflags -/source/__pycache__ -/ext/__pycache__ -TODO.md diff --git a/resources/theme/css/rtd_dark.css b/resources/theme/css/rtd_dark.css new file mode 100644 index 00000000..06f6c54e --- /dev/null +++ b/resources/theme/css/rtd_dark.css @@ -0,0 +1,181 @@ +/*! + * @name Readthedocs + * @namespace http://userstyles.org + * @description Styles the documentation pages hosted on Readthedocs.io + * @author Anthony Post + * @homepage https://userstyles.org/styles/142968 + * @version 0.20170529055029 + * + * Modified by Aloïs Dreyfus: 20200527-1037 + * Modified by Erik Kalkoken: 20220615 + */ + +@media (prefers-color-scheme: dark) { + /* aum added */ + + .admonition { + /* .admonition, .note { */ + background-color: #2d2d2d !important; + } + + .admonition-title { + color: rgba(40, 40, 40, 1.0) !important; + } + + .important .admonition-title { + background-color: #FF5A00 !important; + } + + .warning .admonition-title { + background-color: #FF302A !important; + } + + .seealso .admonition-title { + background-color: rgba(100, 100, 100, 1.0) !important; + } + + .nt, .nf { + color: lightblue !important; + } + +/* Draws a box around menuselection role. */ +/* Temporary fix for "theme(0.2.5b2)" bug: no box around 'kbd' role. */ + .menuselection, .kbd.docutils.literal { + font-size: 90%; + font-weight: normal; + background-color: rgba(50, 50, 50, 0.65) !important; + color: white !important; + border: solid #E1E4E5 1px; + white-space: nowrap; + padding: 2px 5px; + } + +/* 'kbd' role. */ + .kbd.docutils.literal { + font-family: "Lato", "proxima-nova", + "Helvetica Neue", Arial, sans-serif; + font-size: 85%; + font-weight: normal; + color: white !important; + } + + figcaption { + margin-top: 15px; + } + + body { + text-align: justify; + background-color: rgba(40, 40, 40, 1.0) !important; + } + + h3 { + margin-top: 5px !important; + } + + figure { + margin-bottom: 10px !important; + } + + /* aum added end*/ + + a:visited { + color: #bf84d8; + } + + .rst-content .refbox .admonition-title{ + background-color: rgba(255, 90, 00, 1.0) !important; + color: yellow; + } + + pre, .gh, .docutils.literal.notranslate { + background-color: rgba(40, 40, 40, 1.0) !important; + color: white !important; + } + + .wy-nav-content { + background: rgba(30, 30, 30, 1.0) !important; + color: aliceblue; + } + + .method dt, .class dt, .data dt, .attribute dt, .function dt, + .descclassname, .descname { + background-color: #525252 !important; + color: white !important; + /*border: 0, 0, 0, 0;*/ + } + + .toc-backref { + color: grey !important; + } + + code.literal { + background-color: #2d2d2d !important; + border: 1px solid #6d6d6d !important; + } + + .wy-nav-content-wrap { + background-color: rgba(0, 0, 0, 0.6) !important; + } + + .sidebar { + background-color: #191919 !important; + } + + .sidebar-title { + background-color: #2b2b2b !important; + } + + .xref, .py-meth { + color: #7ec3e6 !important; + } + + .wy-side-nav-search { + background-color: inherit; + border-bottom: 1px solid #fcfcfc; + } + + .wy-table thead, .rst-content table.docutils thead, .rst-content table.field-list thead { + background-color: #b9b9b9; + } + + .wy-table thead th, .rst-content table.docutils thead th, .rst-content table.field-list thead th { + border: solid 2px #e1e4e5; + } + + .wy-table thead p, .rst-content table.docutils thead p, .rst-content table.field-list thead p { + margin: 0; + } + + .wy-table-odd td, .wy-table-striped tr:nth-child(2n-1) td, .rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td { + background-color: #343131; + } + + .highlight .m { + color: inherit + } + + /* Literal.Number */ + .highlight .nv { + color: #3a7ca8 + } + + /* Name.Variable */ + + .rst-content .section .admonition ul { + margin-bottom: 0; + } + + li.toctree-l1 { + margin-top: 5px; + margin-bottom: 5px; + } + + .wy-menu-vertical li code { + color: rgba(200, 200, 200, 1.0) !important; + /*color: #E74C3C;*/ + } + + .wy-menu-vertical .xref { + color: #2980B9 !important; + } +} diff --git a/resources/theme/css/theme_overrides.css b/resources/theme/css/theme_overrides.css index 1f41990d..1935d7c0 100644 --- a/resources/theme/css/theme_overrides.css +++ b/resources/theme/css/theme_overrides.css @@ -32,6 +32,13 @@ rst-content .admonition-title { background-color: #404040 }/* /* aum end */ +/* aum added */ + +/* justify text */ +.rst-content { text-align: justify } + +/* aum end */ + h5 {margin-bottom: 5px} /* Sidebar menu links. */ @@ -60,6 +67,7 @@ input[type="number"], input[type="tel"], input[type="color"] { } /* Fixes overlay of "align-right" images on block. */ +/* aum : does not work as expected */ .rst-content .admonition {overflow: auto} /* Boxed paragraphs. */ diff --git a/source/conf.py b/source/conf.py index 745a9b2e..a53b6f70 100644 --- a/source/conf.py +++ b/source/conf.py @@ -35,7 +35,8 @@ # -- General configuration --------------------------------------------------- # If your documentation needs a minimal Sphinx version, state it here. -needs_sphinx = '1.5' +# 1.8 needed for 'html_css_files' and 'html_js_files' - docs.readthedocs.io +needs_sphinx = '1.8' # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom @@ -44,10 +45,6 @@ extensions = [ 'youtube', 'vimeo', - 'collapse', - #'myst-parser', - #'sphinx_togglebutton', - #'sphinx_toolbox.collapse', #'sphinx.ext.mathjax', #'sphinx.ext.intersphinx', #'sphinx.ext.todo', @@ -98,7 +95,7 @@ # Theme options html_theme_options = { - "navigation_with_keys": True, + "navigation_with_keys": True, # included in the title "display_version": False, "collapse_navigation": True, # slows build down; useful @@ -117,8 +114,10 @@ html_static_path = ["../resources/theme"] # _static if html_theme == "sphinx_rtd_theme": - html_css_files = ["css/theme_overrides.css"] -# html_css_files = ["css/custom.css"] + html_css_files = ["css/theme_overrides.css"] +# for production, switch to above theme_overrides.css + # html_css_files = ["css/rtd_dark.css"] + # Custom sidebar templates, must be a dictionary that maps document names # to template names. # @@ -168,7 +167,6 @@ 'UPBGE Community', 'manual'), ] - # -- Options for manual page output ------------------------------------------ # One entry per manual page. List of tuples @@ -178,8 +176,7 @@ [author], 1) ] - -# -- Options for Texinfo output ---------------------------------------------- +# -- Options for Texinfo output ----------------------------------------------- # Grouping the document tree into Texinfo files. List of tuples # (source start file, target name, title, author, diff --git a/source/images/Chapter1/Fig01-08.jpg b/source/images/Chapter1/Fig01-08.jpg deleted file mode 100644 index d87720e7..00000000 Binary files a/source/images/Chapter1/Fig01-08.jpg and /dev/null differ diff --git a/source/images/Chapter1/Fig01-05.png b/source/images/Tutorials/getting_started/01-coordinate_system.png similarity index 100% rename from source/images/Chapter1/Fig01-05.png rename to source/images/Tutorials/getting_started/01-coordinate_system.png diff --git a/source/images/Chapter1/Fig01-06.jpg b/source/images/Tutorials/getting_started/02-teapot_cube.jpg similarity index 100% rename from source/images/Chapter1/Fig01-06.jpg rename to source/images/Tutorials/getting_started/02-teapot_cube.jpg diff --git a/source/images/Chapter1/Fig01-07.jpg b/source/images/Tutorials/getting_started/03-cylinder_cap.jpg similarity index 100% rename from source/images/Chapter1/Fig01-07.jpg rename to source/images/Tutorials/getting_started/03-cylinder_cap.jpg diff --git a/source/images/Tutorials/getting_started/04-normals.jpg b/source/images/Tutorials/getting_started/04-normals.jpg new file mode 100644 index 00000000..2387849f Binary files /dev/null and b/source/images/Tutorials/getting_started/04-normals.jpg differ diff --git a/source/images/Chapter1/Fig01-09.jpg b/source/images/Tutorials/getting_started/05-translation.jpg similarity index 100% rename from source/images/Chapter1/Fig01-09.jpg rename to source/images/Tutorials/getting_started/05-translation.jpg diff --git a/source/images/Chapter1/Fig01-10.jpg b/source/images/Tutorials/getting_started/06-mesh_with_texture.jpg similarity index 100% rename from source/images/Chapter1/Fig01-10.jpg rename to source/images/Tutorials/getting_started/06-mesh_with_texture.jpg diff --git a/source/images/Chapter1/Fig01-11.jpg b/source/images/Tutorials/getting_started/07-diffuse_map.jpg similarity index 100% rename from source/images/Chapter1/Fig01-11.jpg rename to source/images/Tutorials/getting_started/07-diffuse_map.jpg diff --git a/source/images/Chapter1/Fig01-12.png b/source/images/Tutorials/getting_started/08-lamp_sun.png similarity index 100% rename from source/images/Chapter1/Fig01-12.png rename to source/images/Tutorials/getting_started/08-lamp_sun.png diff --git a/source/images/Chapter1/Fig01-13.png b/source/images/Tutorials/getting_started/09-camera_object.png similarity index 100% rename from source/images/Chapter1/Fig01-13.png rename to source/images/Tutorials/getting_started/09-camera_object.png diff --git a/source/images/Tutorials/getting_started/10-dopesheet.png b/source/images/Tutorials/getting_started/10-dopesheet.png new file mode 100644 index 00000000..981b45e0 Binary files /dev/null and b/source/images/Tutorials/getting_started/10-dopesheet.png differ diff --git a/source/images/Tutorials/getting_started/11-bounce_animation.png b/source/images/Tutorials/getting_started/11-bounce_animation.png new file mode 100644 index 00000000..575d31b6 Binary files /dev/null and b/source/images/Tutorials/getting_started/11-bounce_animation.png differ diff --git a/source/images/Tutorials/getting_started/12-armature.png b/source/images/Tutorials/getting_started/12-armature.png new file mode 100644 index 00000000..a00dce63 Binary files /dev/null and b/source/images/Tutorials/getting_started/12-armature.png differ diff --git a/source/images/Chapter1/Fig01-17.jpg b/source/images/Tutorials/getting_started/13-shape_keys.jpg similarity index 100% rename from source/images/Chapter1/Fig01-17.jpg rename to source/images/Tutorials/getting_started/13-shape_keys.jpg diff --git a/source/images/Chapter1/Fig01-18.jpg b/source/images/Tutorials/getting_started/14-physics_motion.jpg similarity index 100% rename from source/images/Chapter1/Fig01-18.jpg rename to source/images/Tutorials/getting_started/14-physics_motion.jpg diff --git a/source/images/Chapter1/Fig01-19.jpg b/source/images/Tutorials/getting_started/15-object_logic_game.jpg similarity index 100% rename from source/images/Chapter1/Fig01-19.jpg rename to source/images/Tutorials/getting_started/15-object_logic_game.jpg diff --git a/source/images/tutorials-getting_started-game_loop.png b/source/images/Tutorials/getting_started/16-game_loop.png similarity index 100% rename from source/images/tutorials-getting_started-game_loop.png rename to source/images/Tutorials/getting_started/16-game_loop.png diff --git a/source/images/tutorials-getting_started-scene_loop.png b/source/images/Tutorials/getting_started/17-scene_loop.png similarity index 100% rename from source/images/tutorials-getting_started-scene_loop.png rename to source/images/Tutorials/getting_started/17-scene_loop.png diff --git a/source/images/tutorials-getting_started-logic_ticks_diagram.png b/source/images/Tutorials/getting_started/18-logic_tick_skipping.png similarity index 100% rename from source/images/tutorials-getting_started-logic_ticks_diagram.png rename to source/images/Tutorials/getting_started/18-logic_tick_skipping.png diff --git a/source/images/Tutorials/getting_started/18-logic_tick_skipping_dark.png b/source/images/Tutorials/getting_started/18-logic_tick_skipping_dark.png new file mode 100644 index 00000000..776bbcf0 Binary files /dev/null and b/source/images/Tutorials/getting_started/18-logic_tick_skipping_dark.png differ diff --git a/source/images/Tutorials/getting_started/19-default_workspace.png b/source/images/Tutorials/getting_started/19-default_workspace.png new file mode 100644 index 00000000..eebae79c Binary files /dev/null and b/source/images/Tutorials/getting_started/19-default_workspace.png differ diff --git a/source/images/Tutorials/getting_started/20-game_engine.png b/source/images/Tutorials/getting_started/20-game_engine.png new file mode 100644 index 00000000..08c4f422 Binary files /dev/null and b/source/images/Tutorials/getting_started/20-game_engine.png differ diff --git a/source/images/Tutorials/getting_started/21-numpad.png b/source/images/Tutorials/getting_started/21-numpad.png new file mode 100644 index 00000000..bda4579f Binary files /dev/null and b/source/images/Tutorials/getting_started/21-numpad.png differ diff --git a/source/images/Tutorials/getting_started/22-editor_outliner.png b/source/images/Tutorials/getting_started/22-editor_outliner.png new file mode 100644 index 00000000..923923da Binary files /dev/null and b/source/images/Tutorials/getting_started/22-editor_outliner.png differ diff --git a/source/images/Tutorials/getting_started/23-editor_properties.png b/source/images/Tutorials/getting_started/23-editor_properties.png new file mode 100644 index 00000000..9b334e6d Binary files /dev/null and b/source/images/Tutorials/getting_started/23-editor_properties.png differ diff --git a/source/images/Tutorials/getting_started/24-editor_timeline.png b/source/images/Tutorials/getting_started/24-editor_timeline.png new file mode 100644 index 00000000..26c66820 Binary files /dev/null and b/source/images/Tutorials/getting_started/24-editor_timeline.png differ diff --git a/source/images/Tutorials/getting_started/25-area_split.png b/source/images/Tutorials/getting_started/25-area_split.png new file mode 100644 index 00000000..7b288ce7 Binary files /dev/null and b/source/images/Tutorials/getting_started/25-area_split.png differ diff --git a/source/images/Tutorials/getting_started/26-editor_selection.png b/source/images/Tutorials/getting_started/26-editor_selection.png new file mode 100644 index 00000000..44267ba0 Binary files /dev/null and b/source/images/Tutorials/getting_started/26-editor_selection.png differ diff --git a/source/images/Tutorials/getting_started/27-dopsheet_image_brick.png b/source/images/Tutorials/getting_started/27-dopsheet_image_brick.png new file mode 100644 index 00000000..002586f9 Binary files /dev/null and b/source/images/Tutorials/getting_started/27-dopsheet_image_brick.png differ diff --git a/source/images/Tutorials/getting_started/27-image.png b/source/images/Tutorials/getting_started/27-image.png new file mode 100644 index 00000000..7c1e87aa Binary files /dev/null and b/source/images/Tutorials/getting_started/27-image.png differ diff --git a/source/images/Tutorials/getting_started/28-viewport_shading.png b/source/images/Tutorials/getting_started/28-viewport_shading.png new file mode 100644 index 00000000..2cd47d2d Binary files /dev/null and b/source/images/Tutorials/getting_started/28-viewport_shading.png differ diff --git a/source/images/Tutorials/getting_started/29-search_pupup.png b/source/images/Tutorials/getting_started/29-search_pupup.png new file mode 100644 index 00000000..af9db59c Binary files /dev/null and b/source/images/Tutorials/getting_started/29-search_pupup.png differ diff --git a/source/images/Tutorials/getting_started/30-3d_navigation.png b/source/images/Tutorials/getting_started/30-3d_navigation.png new file mode 100644 index 00000000..a49733e3 Binary files /dev/null and b/source/images/Tutorials/getting_started/30-3d_navigation.png differ diff --git a/source/images/Tutorials/getting_started/31-datablock_hierarchy.png b/source/images/Tutorials/getting_started/31-datablock_hierarchy.png new file mode 100644 index 00000000..8bca5d8f Binary files /dev/null and b/source/images/Tutorials/getting_started/31-datablock_hierarchy.png differ diff --git a/source/images/Chapter1/Fig01-14.png b/source/images/Tutorials/getting_started/original_images/Fig01-14.png similarity index 100% rename from source/images/Chapter1/Fig01-14.png rename to source/images/Tutorials/getting_started/original_images/Fig01-14.png diff --git a/source/images/Chapter1/Fig01-15.png b/source/images/Tutorials/getting_started/original_images/Fig01-15.png similarity index 100% rename from source/images/Chapter1/Fig01-15.png rename to source/images/Tutorials/getting_started/original_images/Fig01-15.png diff --git a/source/images/Chapter1/Fig01-20.jpg b/source/images/Tutorials/getting_started/original_images/Fig01-20.jpg similarity index 100% rename from source/images/Chapter1/Fig01-20.jpg rename to source/images/Tutorials/getting_started/original_images/Fig01-20.jpg diff --git a/source/images/Chapter1/Fig01-20b.png b/source/images/Tutorials/getting_started/original_images/Fig01-20b.png similarity index 100% rename from source/images/Chapter1/Fig01-20b.png rename to source/images/Tutorials/getting_started/original_images/Fig01-20b.png diff --git a/source/images/Chapter1/Fig01-20c.png b/source/images/Tutorials/getting_started/original_images/Fig01-20c.png similarity index 100% rename from source/images/Chapter1/Fig01-20c.png rename to source/images/Tutorials/getting_started/original_images/Fig01-20c.png diff --git a/source/images/Chapter1/Fig01-21.png b/source/images/Tutorials/getting_started/original_images/Fig01-21.png similarity index 100% rename from source/images/Chapter1/Fig01-21.png rename to source/images/Tutorials/getting_started/original_images/Fig01-21.png diff --git a/source/images/Chapter1/Fig01-22.jpg b/source/images/Tutorials/getting_started/original_images/Fig01-22.jpg similarity index 100% rename from source/images/Chapter1/Fig01-22.jpg rename to source/images/Tutorials/getting_started/original_images/Fig01-22.jpg diff --git a/source/images/Chapter1/Fig01-23.png b/source/images/Tutorials/getting_started/original_images/Fig01-23.png similarity index 100% rename from source/images/Chapter1/Fig01-23.png rename to source/images/Tutorials/getting_started/original_images/Fig01-23.png diff --git a/source/images/Chapter1/Fig01-24.png b/source/images/Tutorials/getting_started/original_images/Fig01-24.png similarity index 100% rename from source/images/Chapter1/Fig01-24.png rename to source/images/Tutorials/getting_started/original_images/Fig01-24.png diff --git a/source/images/Chapter1/Fig01-25.png b/source/images/Tutorials/getting_started/original_images/Fig01-25.png similarity index 100% rename from source/images/Chapter1/Fig01-25.png rename to source/images/Tutorials/getting_started/original_images/Fig01-25.png diff --git a/source/images/Chapter1/Fig01-26.png b/source/images/Tutorials/getting_started/original_images/Fig01-26.png similarity index 100% rename from source/images/Chapter1/Fig01-26.png rename to source/images/Tutorials/getting_started/original_images/Fig01-26.png diff --git a/source/images/Chapter1/Fig01-27.png b/source/images/Tutorials/getting_started/original_images/Fig01-27.png similarity index 100% rename from source/images/Chapter1/Fig01-27.png rename to source/images/Tutorials/getting_started/original_images/Fig01-27.png diff --git a/source/images/Chapter1/Fig01-28.png b/source/images/Tutorials/getting_started/original_images/Fig01-28.png similarity index 100% rename from source/images/Chapter1/Fig01-28.png rename to source/images/Tutorials/getting_started/original_images/Fig01-28.png diff --git a/source/images/Chapter1/Fig01-29.png b/source/images/Tutorials/getting_started/original_images/Fig01-29.png similarity index 100% rename from source/images/Chapter1/Fig01-29.png rename to source/images/Tutorials/getting_started/original_images/Fig01-29.png diff --git a/source/images/Chapter1/Fig01-30-1.png b/source/images/Tutorials/getting_started/original_images/Fig01-30-1.png similarity index 100% rename from source/images/Chapter1/Fig01-30-1.png rename to source/images/Tutorials/getting_started/original_images/Fig01-30-1.png diff --git a/source/images/Chapter1/Fig01-30.png b/source/images/Tutorials/getting_started/original_images/Fig01-30.png similarity index 100% rename from source/images/Chapter1/Fig01-30.png rename to source/images/Tutorials/getting_started/original_images/Fig01-30.png diff --git a/source/images/Chapter1/Fig01-31.png b/source/images/Tutorials/getting_started/original_images/Fig01-31.png similarity index 100% rename from source/images/Chapter1/Fig01-31.png rename to source/images/Tutorials/getting_started/original_images/Fig01-31.png diff --git a/source/images/Chapter1/Fig01-32.png b/source/images/Tutorials/getting_started/original_images/Fig01-32.png similarity index 100% rename from source/images/Chapter1/Fig01-32.png rename to source/images/Tutorials/getting_started/original_images/Fig01-32.png diff --git a/source/images/Chapter1/Fig01-33.png b/source/images/Tutorials/getting_started/original_images/Fig01-33.png similarity index 100% rename from source/images/Chapter1/Fig01-33.png rename to source/images/Tutorials/getting_started/original_images/Fig01-33.png diff --git a/source/images/Chapter1/Fig01-16.png b/source/images/Tutorials/getting_started/original_images/xx-armature_animation.png similarity index 100% rename from source/images/Chapter1/Fig01-16.png rename to source/images/Tutorials/getting_started/original_images/xx-armature_animation.png diff --git a/source/images/Tutorials/introducing_logic_bricks/01-move_object-initial_scene.png b/source/images/Tutorials/introducing_logic_bricks/01-move_object-initial_scene.png new file mode 100644 index 00000000..d2be378c Binary files /dev/null and b/source/images/Tutorials/introducing_logic_bricks/01-move_object-initial_scene.png differ diff --git a/source/images/Tutorials/introducing_logic_bricks/02-move_object-logic_editor.png b/source/images/Tutorials/introducing_logic_bricks/02-move_object-logic_editor.png new file mode 100644 index 00000000..0ce16807 Binary files /dev/null and b/source/images/Tutorials/introducing_logic_bricks/02-move_object-logic_editor.png differ diff --git a/source/images/Tutorials/introducing_logic_bricks/03-move_object-property_2x.png b/source/images/Tutorials/introducing_logic_bricks/03-move_object-property_2x.png new file mode 100644 index 00000000..2575faa7 Binary files /dev/null and b/source/images/Tutorials/introducing_logic_bricks/03-move_object-property_2x.png differ diff --git a/source/images/Tutorials/introducing_logic_bricks/04-move_object-fuel_consumption.png b/source/images/Tutorials/introducing_logic_bricks/04-move_object-fuel_consumption.png new file mode 100644 index 00000000..a0e87118 Binary files /dev/null and b/source/images/Tutorials/introducing_logic_bricks/04-move_object-fuel_consumption.png differ diff --git a/source/images/Tutorials/introducing_logic_bricks/05-move_object-debug.png b/source/images/Tutorials/introducing_logic_bricks/05-move_object-debug.png new file mode 100644 index 00000000..869d5047 Binary files /dev/null and b/source/images/Tutorials/introducing_logic_bricks/05-move_object-debug.png differ diff --git a/source/images/Tutorials/introducing_logic_bricks/06-play_animation-rotate_scale.png b/source/images/Tutorials/introducing_logic_bricks/06-play_animation-rotate_scale.png new file mode 100644 index 00000000..aaad5fb7 Binary files /dev/null and b/source/images/Tutorials/introducing_logic_bricks/06-play_animation-rotate_scale.png differ diff --git a/source/images/Tutorials/introducing_logic_bricks/07-play_animation-editor_setup.png b/source/images/Tutorials/introducing_logic_bricks/07-play_animation-editor_setup.png new file mode 100644 index 00000000..6ad46e8a Binary files /dev/null and b/source/images/Tutorials/introducing_logic_bricks/07-play_animation-editor_setup.png differ diff --git a/source/images/Tutorials/introducing_logic_bricks/08-linked_libraries.png b/source/images/Tutorials/introducing_logic_bricks/08-linked_libraries.png new file mode 100644 index 00000000..3ca38e5c Binary files /dev/null and b/source/images/Tutorials/introducing_logic_bricks/08-linked_libraries.png differ diff --git a/source/images/Tutorials/introducing_logic_bricks/09-linked_libraries-linking.png b/source/images/Tutorials/introducing_logic_bricks/09-linked_libraries-linking.png new file mode 100644 index 00000000..135becd5 Binary files /dev/null and b/source/images/Tutorials/introducing_logic_bricks/09-linked_libraries-linking.png differ diff --git a/source/images/Tutorials/introducing_logic_bricks/10-linked_libraries-linked.png b/source/images/Tutorials/introducing_logic_bricks/10-linked_libraries-linked.png new file mode 100644 index 00000000..390d7fb7 Binary files /dev/null and b/source/images/Tutorials/introducing_logic_bricks/10-linked_libraries-linked.png differ diff --git a/source/images/Tutorials/introducing_logic_bricks/11-linked_libraries-broken_links.png b/source/images/Tutorials/introducing_logic_bricks/11-linked_libraries-broken_links.png new file mode 100644 index 00000000..f29d82b4 Binary files /dev/null and b/source/images/Tutorials/introducing_logic_bricks/11-linked_libraries-broken_links.png differ diff --git a/source/images/Tutorials/introducing_logic_bricks/12-linked_libraries-outliner.png b/source/images/Tutorials/introducing_logic_bricks/12-linked_libraries-outliner.png new file mode 100644 index 00000000..706d9782 Binary files /dev/null and b/source/images/Tutorials/introducing_logic_bricks/12-linked_libraries-outliner.png differ diff --git a/source/images/Tutorials/introducing_logic_bricks/13-linked_libraries-relocate_broken.png b/source/images/Tutorials/introducing_logic_bricks/13-linked_libraries-relocate_broken.png new file mode 100644 index 00000000..f924fe76 Binary files /dev/null and b/source/images/Tutorials/introducing_logic_bricks/13-linked_libraries-relocate_broken.png differ diff --git a/source/images/Tutorials/introducing_logic_bricks/_06-play_animation-rotate_scale.png b/source/images/Tutorials/introducing_logic_bricks/_06-play_animation-rotate_scale.png new file mode 100644 index 00000000..78ffae5b Binary files /dev/null and b/source/images/Tutorials/introducing_logic_bricks/_06-play_animation-rotate_scale.png differ diff --git a/source/images/tutorials-linked_libraries-base_files_1.png b/source/images/Tutorials/introducing_logic_bricks/original_images/tutorials-linked_libraries-base_files_1.png similarity index 100% rename from source/images/tutorials-linked_libraries-base_files_1.png rename to source/images/Tutorials/introducing_logic_bricks/original_images/tutorials-linked_libraries-base_files_1.png diff --git a/source/images/tutorials-linked_libraries-linking_1.png b/source/images/Tutorials/introducing_logic_bricks/original_images/tutorials-linked_libraries-linking_1.png similarity index 100% rename from source/images/tutorials-linked_libraries-linking_1.png rename to source/images/Tutorials/introducing_logic_bricks/original_images/tutorials-linked_libraries-linking_1.png diff --git a/source/images/tutorials-linked_libraries-linking_2.png b/source/images/Tutorials/introducing_logic_bricks/original_images/tutorials-linked_libraries-linking_2.png similarity index 100% rename from source/images/tutorials-linked_libraries-linking_2.png rename to source/images/Tutorials/introducing_logic_bricks/original_images/tutorials-linked_libraries-linking_2.png diff --git a/source/images/tutorials-linked_libraries-managing_1.png b/source/images/Tutorials/introducing_logic_bricks/original_images/tutorials-linked_libraries-managing_1.png similarity index 100% rename from source/images/tutorials-linked_libraries-managing_1.png rename to source/images/Tutorials/introducing_logic_bricks/original_images/tutorials-linked_libraries-managing_1.png diff --git a/source/images/tutorials-linked_libraries-managing_2.png b/source/images/Tutorials/introducing_logic_bricks/original_images/tutorials-linked_libraries-managing_2.png similarity index 100% rename from source/images/tutorials-linked_libraries-managing_2.png rename to source/images/Tutorials/introducing_logic_bricks/original_images/tutorials-linked_libraries-managing_2.png diff --git a/source/images/tutorials-linked_libraries-managing_3.png b/source/images/Tutorials/introducing_logic_bricks/original_images/tutorials-linked_libraries-managing_3.png similarity index 100% rename from source/images/tutorials-linked_libraries-managing_3.png rename to source/images/Tutorials/introducing_logic_bricks/original_images/tutorials-linked_libraries-managing_3.png diff --git a/source/images/tutorials-linked_libraries-managing_4.png b/source/images/Tutorials/introducing_logic_bricks/original_images/tutorials-linked_libraries-managing_4.png similarity index 100% rename from source/images/tutorials-linked_libraries-managing_4.png rename to source/images/Tutorials/introducing_logic_bricks/original_images/tutorials-linked_libraries-managing_4.png diff --git a/source/images/tutorials-move_object-debug_properties.png b/source/images/Tutorials/introducing_logic_bricks/original_images/tutorials-move_object-debug_properties.png similarity index 100% rename from source/images/tutorials-move_object-debug_properties.png rename to source/images/Tutorials/introducing_logic_bricks/original_images/tutorials-move_object-debug_properties.png diff --git a/source/images/tutorials-move_object-initial_scene.png b/source/images/Tutorials/introducing_logic_bricks/original_images/tutorials-move_object-initial_scene.png similarity index 100% rename from source/images/tutorials-move_object-initial_scene.png rename to source/images/Tutorials/introducing_logic_bricks/original_images/tutorials-move_object-initial_scene.png diff --git a/source/images/tutorials-move_object-logic_editor_1.png b/source/images/Tutorials/introducing_logic_bricks/original_images/tutorials-move_object-logic_editor_1.png similarity index 100% rename from source/images/tutorials-move_object-logic_editor_1.png rename to source/images/Tutorials/introducing_logic_bricks/original_images/tutorials-move_object-logic_editor_1.png diff --git a/source/images/tutorials-move_object-logic_editor_2.png b/source/images/Tutorials/introducing_logic_bricks/original_images/tutorials-move_object-logic_editor_2.png similarity index 100% rename from source/images/tutorials-move_object-logic_editor_2.png rename to source/images/Tutorials/introducing_logic_bricks/original_images/tutorials-move_object-logic_editor_2.png diff --git a/source/images/tutorials-move_object-logic_editor_3.png b/source/images/Tutorials/introducing_logic_bricks/original_images/tutorials-move_object-logic_editor_3.png similarity index 100% rename from source/images/tutorials-move_object-logic_editor_3.png rename to source/images/Tutorials/introducing_logic_bricks/original_images/tutorials-move_object-logic_editor_3.png diff --git a/source/images/tutorials-play_animation-action_editor.png b/source/images/Tutorials/introducing_logic_bricks/original_images/tutorials-play_animation-action_editor.png similarity index 100% rename from source/images/tutorials-play_animation-action_editor.png rename to source/images/Tutorials/introducing_logic_bricks/original_images/tutorials-play_animation-action_editor.png diff --git a/source/images/tutorials-play_animation-logic_editor_1.png b/source/images/Tutorials/introducing_logic_bricks/original_images/tutorials-play_animation-logic_editor_1.png similarity index 100% rename from source/images/tutorials-play_animation-logic_editor_1.png rename to source/images/Tutorials/introducing_logic_bricks/original_images/tutorials-play_animation-logic_editor_1.png diff --git a/source/images/Tutorials/introducing_logic_nodes/15_move_object.png b/source/images/Tutorials/introducing_logic_nodes/15_move_object.png new file mode 100644 index 00000000..44d92f12 Binary files /dev/null and b/source/images/Tutorials/introducing_logic_nodes/15_move_object.png differ diff --git a/source/images/Chapter1/Fig01-01.jpg b/source/images/introduction/01-blender16.jpg similarity index 100% rename from source/images/Chapter1/Fig01-01.jpg rename to source/images/introduction/01-blender16.jpg diff --git a/source/images/Chapter1/Fig01-02.jpg b/source/images/introduction/02-blender_reel.jpg similarity index 100% rename from source/images/Chapter1/Fig01-02.jpg rename to source/images/introduction/02-blender_reel.jpg diff --git a/source/images/Chapter1/Fig01-03.png b/source/images/introduction/03-blender_commits.png similarity index 100% rename from source/images/Chapter1/Fig01-03.png rename to source/images/introduction/03-blender_commits.png diff --git a/source/images/Chapter1/Fig01-04.jpg b/source/images/introduction/04-gimp.jpg similarity index 100% rename from source/images/Chapter1/Fig01-04.jpg rename to source/images/introduction/04-gimp.jpg diff --git a/source/images/logic_nodes/objects/get_attribute/ln-color.png b/source/images/logic_nodes/objects/get_attribute/ln-color.png new file mode 100644 index 00000000..e223b6e7 Binary files /dev/null and b/source/images/logic_nodes/objects/get_attribute/ln-color.png differ diff --git a/source/images/logic_nodes/objects/get_attribute/ln-local_angular_velocity.png b/source/images/logic_nodes/objects/get_attribute/ln-local_angular_velocity.png new file mode 100644 index 00000000..f832dee4 Binary files /dev/null and b/source/images/logic_nodes/objects/get_attribute/ln-local_angular_velocity.png differ diff --git a/source/images/logic_nodes/objects/get_attribute/ln-local_linear_velocity.png b/source/images/logic_nodes/objects/get_attribute/ln-local_linear_velocity.png new file mode 100644 index 00000000..3a7082e8 Binary files /dev/null and b/source/images/logic_nodes/objects/get_attribute/ln-local_linear_velocity.png differ diff --git a/source/images/logic_nodes/objects/get_attribute/ln-local_orientation.png b/source/images/logic_nodes/objects/get_attribute/ln-local_orientation.png new file mode 100644 index 00000000..9c2a6b16 Binary files /dev/null and b/source/images/logic_nodes/objects/get_attribute/ln-local_orientation.png differ diff --git a/source/images/logic_nodes/objects/get_attribute/ln-local_position.png b/source/images/logic_nodes/objects/get_attribute/ln-local_position.png new file mode 100644 index 00000000..628fcb58 Binary files /dev/null and b/source/images/logic_nodes/objects/get_attribute/ln-local_position.png differ diff --git a/source/images/logic_nodes/objects/get_attribute/ln-local_scale.png b/source/images/logic_nodes/objects/get_attribute/ln-local_scale.png new file mode 100644 index 00000000..780d9737 Binary files /dev/null and b/source/images/logic_nodes/objects/get_attribute/ln-local_scale.png differ diff --git a/source/images/logic_nodes/objects/get_attribute/ln-local_transform.png b/source/images/logic_nodes/objects/get_attribute/ln-local_transform.png new file mode 100644 index 00000000..88d120cd Binary files /dev/null and b/source/images/logic_nodes/objects/get_attribute/ln-local_transform.png differ diff --git a/source/images/logic_nodes/objects/get_attribute/ln-name.png b/source/images/logic_nodes/objects/get_attribute/ln-name.png new file mode 100644 index 00000000..bd061222 Binary files /dev/null and b/source/images/logic_nodes/objects/get_attribute/ln-name.png differ diff --git a/source/images/logic_nodes/objects/get_attribute/ln-visibility.png b/source/images/logic_nodes/objects/get_attribute/ln-visibility.png new file mode 100644 index 00000000..ad9fc77b Binary files /dev/null and b/source/images/logic_nodes/objects/get_attribute/ln-visibility.png differ diff --git a/source/images/logic_nodes/objects/get_attribute/ln-world_angular_velocity.png b/source/images/logic_nodes/objects/get_attribute/ln-world_angular_velocity.png new file mode 100644 index 00000000..97f694b8 Binary files /dev/null and b/source/images/logic_nodes/objects/get_attribute/ln-world_angular_velocity.png differ diff --git a/source/images/logic_nodes/objects/get_attribute/ln-world_linear_velocity.png b/source/images/logic_nodes/objects/get_attribute/ln-world_linear_velocity.png new file mode 100644 index 00000000..87a9a4c4 Binary files /dev/null and b/source/images/logic_nodes/objects/get_attribute/ln-world_linear_velocity.png differ diff --git a/source/images/logic_nodes/objects/get_attribute/ln-world_orientation.png b/source/images/logic_nodes/objects/get_attribute/ln-world_orientation.png new file mode 100644 index 00000000..3527248a Binary files /dev/null and b/source/images/logic_nodes/objects/get_attribute/ln-world_orientation.png differ diff --git a/source/images/logic_nodes/objects/get_attribute/ln-world_position.png b/source/images/logic_nodes/objects/get_attribute/ln-world_position.png new file mode 100644 index 00000000..00a3f25e Binary files /dev/null and b/source/images/logic_nodes/objects/get_attribute/ln-world_position.png differ diff --git a/source/images/logic_nodes/objects/get_attribute/ln-world_scale.png b/source/images/logic_nodes/objects/get_attribute/ln-world_scale.png new file mode 100644 index 00000000..83e75869 Binary files /dev/null and b/source/images/logic_nodes/objects/get_attribute/ln-world_scale.png differ diff --git a/source/images/logic_nodes/objects/get_attribute/ln-world_transform.png b/source/images/logic_nodes/objects/get_attribute/ln-world_transform.png new file mode 100644 index 00000000..407410de Binary files /dev/null and b/source/images/logic_nodes/objects/get_attribute/ln-world_transform.png differ diff --git a/source/images/logic_nodes/objects/set_attribute/ln-color.png b/source/images/logic_nodes/objects/set_attribute/ln-color.png new file mode 100644 index 00000000..85e860cb Binary files /dev/null and b/source/images/logic_nodes/objects/set_attribute/ln-color.png differ diff --git a/source/images/logic_nodes/objects/set_attribute/ln-local_angular_velocity.png b/source/images/logic_nodes/objects/set_attribute/ln-local_angular_velocity.png new file mode 100644 index 00000000..9cf275c4 Binary files /dev/null and b/source/images/logic_nodes/objects/set_attribute/ln-local_angular_velocity.png differ diff --git a/source/images/logic_nodes/objects/set_attribute/ln-local_linear_velocity.png b/source/images/logic_nodes/objects/set_attribute/ln-local_linear_velocity.png new file mode 100644 index 00000000..52081af0 Binary files /dev/null and b/source/images/logic_nodes/objects/set_attribute/ln-local_linear_velocity.png differ diff --git a/source/images/logic_nodes/objects/set_attribute/ln-local_orientation.png b/source/images/logic_nodes/objects/set_attribute/ln-local_orientation.png new file mode 100644 index 00000000..5384d6f1 Binary files /dev/null and b/source/images/logic_nodes/objects/set_attribute/ln-local_orientation.png differ diff --git a/source/images/logic_nodes/objects/set_attribute/ln-local_position.png b/source/images/logic_nodes/objects/set_attribute/ln-local_position.png new file mode 100644 index 00000000..acc50a6f Binary files /dev/null and b/source/images/logic_nodes/objects/set_attribute/ln-local_position.png differ diff --git a/source/images/logic_nodes/objects/set_attribute/ln-local_transform.png b/source/images/logic_nodes/objects/set_attribute/ln-local_transform.png new file mode 100644 index 00000000..e0c52132 Binary files /dev/null and b/source/images/logic_nodes/objects/set_attribute/ln-local_transform.png differ diff --git a/source/images/logic_nodes/objects/set_attribute/ln-world_angular_velocity.png b/source/images/logic_nodes/objects/set_attribute/ln-world_angular_velocity.png new file mode 100644 index 00000000..c8004027 Binary files /dev/null and b/source/images/logic_nodes/objects/set_attribute/ln-world_angular_velocity.png differ diff --git a/source/images/logic_nodes/objects/set_attribute/ln-world_linear_velocity.png b/source/images/logic_nodes/objects/set_attribute/ln-world_linear_velocity.png new file mode 100644 index 00000000..fbbb383e Binary files /dev/null and b/source/images/logic_nodes/objects/set_attribute/ln-world_linear_velocity.png differ diff --git a/source/images/logic_nodes/objects/set_attribute/ln-world_orientation.png b/source/images/logic_nodes/objects/set_attribute/ln-world_orientation.png new file mode 100644 index 00000000..6b07cb36 Binary files /dev/null and b/source/images/logic_nodes/objects/set_attribute/ln-world_orientation.png differ diff --git a/source/images/logic_nodes/objects/set_attribute/ln-world_position.png b/source/images/logic_nodes/objects/set_attribute/ln-world_position.png new file mode 100644 index 00000000..6003fb93 Binary files /dev/null and b/source/images/logic_nodes/objects/set_attribute/ln-world_position.png differ diff --git a/source/images/logic_nodes/objects/set_attribute/ln-world_scale.png b/source/images/logic_nodes/objects/set_attribute/ln-world_scale.png new file mode 100644 index 00000000..5304026c Binary files /dev/null and b/source/images/logic_nodes/objects/set_attribute/ln-world_scale.png differ diff --git a/source/images/logic_nodes/objects/set_attribute/ln-world_transform.png b/source/images/logic_nodes/objects/set_attribute/ln-world_transform.png new file mode 100644 index 00000000..6c549049 Binary files /dev/null and b/source/images/logic_nodes/objects/set_attribute/ln-world_transform.png differ diff --git a/source/index.rst b/source/index.rst index 11b31873..f7e928fc 100644 --- a/source/index.rst +++ b/source/index.rst @@ -1,16 +1,6 @@ .. UPBGE Manual documentation master file, created by sphinx-quickstart on Sun Jul 8 18:28:15 2018. - You can adapt this file completely to your liking, but it should at least - contain the root `toctree` directive. - -.. TODO:: - - remove 'sphinx-toolbox' from pip installation 'requirements.txt' file, and linux installation text (contribute.rst), and link to /exts/collapse.py file instead DONE - - - fix 488 / 1430 build warning messages DONE - - - spellcheck all files - - - glossary needs a lot of love + You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. ============ UPBGE Manual @@ -18,10 +8,18 @@ UPBGE Manual Welcome to UPBGE's documentation! Here you will find definitions of the available tools and features in UPBGE, step-by-step tutorials to certain tasks and a lot of examples for game logic programming with detailed information. -Visit the `UPBGE's website `__ or `contribute to this manual `__. Contribution guidelines are in the *Contribute* chapter of this manual. +Visit the `UPBGE's website `__ or `contribute `__ to this manual. Contribution guidelines are in the :ref:`Contribute ` chapter. Also, if you want to read the whole manual offline you can download it from `this link `__. +.. tip:: **Site navigation** + + Keyboard navigation is supported - use arrow keys :kbd:`left/right` for previous/next page, and :kbd:`up/down` to scroll the page up/down. + Press :kbd:`Alt-left/right` to go back/forward by browser history. To focus the *Search* field, press :kbd:`/` (slash) key, :kbd:`Tab` to unfocus, :kbd:`Enter` to search. + +.. note:: + See :ref:`contribute-about` for a cheatsheet of most common abbreviations used in this manual. + .. toctree:: :maxdepth: 2 :caption: Manual diff --git a/source/manual/contribute/about.rst b/source/manual/contribute/about.rst index 1a3e73de..ed644184 100644 --- a/source/manual/contribute/about.rst +++ b/source/manual/contribute/about.rst @@ -1,16 +1,16 @@ .. _contribute-about: -++++++++++++++++++++++ +============================== About the UPBGE Manual -++++++++++++++++++++++ +============================== The purpose is to provide a complete and concise *reference manual*, with: - - Insight into Blender/UPBGE's way of working, its internal (technical) design, in order to understand options and tools; - - Detailed functional description of all features, tools and options in UPBGE. +- Insight into Blender/UPBGE's way of working, its internal (technical) design, in order to understand options and tools; +- Detailed functional description of all features, tools and options in UPBGE. Conventions -=========== +++++++++++++++++++++++++++++++ .. note:: These conventions are for people reading the manual. We have a more detailed list of conventions for authors under the :doc:`Writing Style ` section. diff --git a/source/manual/contribute/contribute.rst b/source/manual/contribute/contribute.rst index 331e5fc1..2f48a158 100644 --- a/source/manual/contribute/contribute.rst +++ b/source/manual/contribute/contribute.rst @@ -66,7 +66,8 @@ If using `Homebrew `__, run the following commands in the term ``brew install git`` -.. TODO:: someone check if macOS instructions are complete +.. + someone check if macOS instructions are complete Windows +++++++ @@ -140,7 +141,8 @@ Troubleshooting #. If *rst* formatting is not displayed as expected, try adding:: .. highlight:: rst - directive to the top of the ``.rst`` file. + +directive to the top of the ``.rst`` file. ------------------ Editing the Manual diff --git a/source/manual/contribute/markup_style.rst b/source/manual/contribute/markup_style.rst index d72564da..65992e6d 100644 --- a/source/manual/contribute/markup_style.rst +++ b/source/manual/contribute/markup_style.rst @@ -34,7 +34,6 @@ Other loose conventions: - Avoid heavily wrapped text (i.e. sentences can have their own lines). - Headings ======== @@ -61,13 +60,12 @@ Headings """""""""""""""""" .. important:: - *Parts* should only be used for contents or index pages. Each ``.rst`` file should only have one chapter heading (``*``) per file - top heading. - + *Parts* should only be used for contents or index pages. Each ``.rst`` file should only have one chapter heading (``=``) per file - top heading. Text Styling ============ -See the `overview on ReStructuredText `__ for more information on how to style the various elements of the documentation and on how to add lists, tables, pictures and code blocks. The `Sphinx reference `__ provides more insight additional constructs. +See the `overview on ReStructuredText `__ for more information on how to style the various elements of the documentation and on how to add lists, tables, pictures and code blocks. The `Sphinx reference `__ provides more insight into additional constructs. .. tip:: Do not manually format/break lines in ``.rst`` files; use your editor's *wrap text* functionality. 80 characters is standard line length for computer files. @@ -88,8 +86,7 @@ Interface Elements Code Samples ============ -There is support for syntax highlighting if the programming language is provided, -and line numbers can be optionally shown with the ``:linenos:`` option:: +There is support for syntax highlighting if the programming language is provided, and line numbers can be optionally shown with the ``:linenos:`` option:: .. code-block:: python :linenos: @@ -109,12 +106,10 @@ Figures are used to place images:: For consistency, and since it would be good to ensure that screenshots are all of similar size when floated next to text, writers should take screenshots in the following manner: -#. Prepare the area you would like to capture making sure to *use the default theme and setting*. - (In some cases you may not want to use the default settings e.g. if some options are hidden behind a checkbox.) +#. Prepare the area you would like to capture making sure to *use the default theme and setting*. (In some cases you may not want to use the default settings e.g. if some options are hidden behind a checkbox.) #. Zoom to the maximum zoom level (hold :kbd:`NumpadPlus` or :kbd:`Ctrl-MMB` or similar). #. Zoom out eight zoom levels (:kbd:`NumpadMinus` -- eight times). -#. In some cases you will want to leave a small margin around the thing you are trying to capture. - This should be around 30px but does not have to be exact. +#. In some cases you will want to leave a small margin around the thing you are trying to capture. This should be around 30px but does not have to be exact. This can be applied to several parts of the interface but might not work for all cases. @@ -133,11 +128,9 @@ No Caps, No Gaps Sort Usefully Order naming with specific identifiers at the end. Format - Use ``.png`` for images that have solid colors such as screenshots of the Blender interface, - and ``.jpg`` for images with a high amount of color variance, such as sample renders and photographs. + Use ``.png`` for images that have solid colors such as screenshots of the Blender interface, and ``.jpg`` for images with a high amount of color variance, such as sample renders and photographs. - Do not use animated ``.gif`` files, these are hard to maintain, can be distracting - and are usually large in file size. Instead use a video if needed (see `Videos`_ below). + Do not use animated ``.gif`` files, these are hard to maintain, can be distracting and are usually large in file size. Instead use a video if needed (see `Videos`_ below). Location Place the images in the ``manual/images`` folder, and use subfolders, if needed. Naming @@ -154,21 +147,11 @@ Naming Usage Guides ------------ -- Avoid specifying the resolution of the image, - so that the theme can handle the images consistently - and provide the best layout across different screen sizes. -- When documenting a panel or section of the UI, - it is better to use a single image that shows all of the relevant areas - (rather than multiple images for each icon or button) - placed at the top of the section you are writing, - and then explain the features in the order that they appear in the image. +- Avoid specifying the resolution of the image, so that the theme can handle the images consistently and provide the best layout across different screen sizes. +- When documenting a panel or section of the UI, it is better to use a single image that shows all of the relevant areas (rather than multiple images for each icon or button) placed at the top of the section you are writing, and then explain the features in the order that they appear in the image. .. note:: - - It is important that the manual can be maintained long term. - UI and tool options change, so try to avoid having a lot of images - (when they are not especially necessary). - Otherwise, this becomes too much of a maintenance burden. + It is important that the manual can be maintained long term. UI and tool options change, so try to avoid having a lot of images (when they are not especially necessary). Otherwise, this becomes too much of a maintenance burden. Videos ====== @@ -176,8 +159,7 @@ Videos .. note:: This is from Blender manual. It might not be suitable for *UPBGE-Docs* developers. -Videos can be embedded from Blender's self-hosted `PeerTube `__ instance, which can be found at `video.blender.org `__. -To embed a video use the following directive:: +Videos can be embedded from Blender's self-hosted `PeerTube `__ instance, which can be found at `video.blender.org `__. To embed a video use the following directive:: .. peertube:: ID @@ -193,8 +175,7 @@ Usage Guides ------------ - Avoid adding videos that rely on voice or words, as this is difficult to translate. -- Do not embed video tutorials as a means of explaining a feature, the writing itself should explain it adequately. - (Though you may include a link to the video at the bottom of the page under the heading ``Tutorials``). +- Do not embed video tutorials as a means of explaining a feature, the writing itself should explain it adequately. (Though you may include a link to the video at the bottom of the page under the heading ``Tutorials``.) Useful Constructs ================= @@ -216,13 +197,34 @@ You can link to another part of the Manual with folder path:: To link to a specific section in another file (or the same one), explicit labels are available:: - .. _sample-label: ["link to this" directive, single _underscore] + .. _explicit-label: ["link to this" directive, single _underscore] (section or image which needs to be referenced) - Some text :ref:`Optional Title ` ["link from this" directive] + Some text :ref:`Optional Title `. ["link from this" directive] + +.. important:: + Explicit labels should immediatelly preceed the title. I.e.:: + + .. _explicit label: -Linking to a title in the same file:: + .. figure:: images/path-to-image.png + + ===== + Title + ===== + + will not work. Should be:: + + .. figure:: images/path-to-image.png + + .. _explicit label: + + ===== + Title + ===== + +Linking to a title in the *same file*:: Titles are Targets ================== @@ -238,14 +240,7 @@ Linking to the outside world:: Context Sensitive Manual Access ------------------------------- -It is possible to link to a specific part of the manual from inside the Blender by opening -the context menu (right click) of a property or operator and selecting *Online Manual*. -In order for this to work, this needs to be accounted for in the documentation. -To link a property or operator to a specific part of the manual you need to add -an external reference link tag whose ID matches Blender's RNA tag. -The easiest way to find out what is the tag for a property, is to open the context menu of -the property/operator and select *Online Python Reference* to extract the tag from the URL. -Some examples of how this looks in the RST document are given below:: +It is possible to link to a specific part of the manual from inside the Blender by opening the context menu (right click) of a property or operator and selecting *Online Manual*. In order for this to work, this needs to be accounted for in the documentation. To link a property or operator to a specific part of the manual you need to add an external reference link tag whose ID matches Blender's RNA tag. The easiest way to find out what is the tag for a property, is to open the context menu of the property/operator and select *Online Python Reference* to extract the tag from the URL. Some examples of how this looks in the RST document are given below:: .. _bpy.types.FluidDomainSettings.use_fractions: diff --git a/source/manual/datablocks/lamp.rst b/source/manual/datablocks/lamp.rst index 7ee40eb9..3df4aa02 100644 --- a/source/manual/datablocks/lamp.rst +++ b/source/manual/datablocks/lamp.rst @@ -4,4 +4,4 @@ Lamp ==== -.. todo:: TODO +todo diff --git a/source/manual/editors/properties/index.rst b/source/manual/editors/properties/index.rst index c36d67a0..6917b825 100644 --- a/source/manual/editors/properties/index.rst +++ b/source/manual/editors/properties/index.rst @@ -4,11 +4,11 @@ Properties Editor ################# .. figure:: /images/editors-properties-tabs.png + :figwidth: 100% - The Properties editor header. + Properties editor header -The properties editor is an essential part of the development process. There, you can -change almost all properties of the selected object, scene, camera, etc, like: +The properties editor is an essential part of the development process. There, you can change almost all properties of the selected object, scene, camera, etc, like: - The screen resolution; - Frames per second; @@ -21,8 +21,7 @@ change almost all properties of the selected object, scene, camera, etc, like: In this section you have a detailed description about each tab of the Properties editor. -.. note:: The **Render layers** and **Particles** tabs don't apply to UPBGE, so they won't - be explained here. +.. important:: The **Render layers** and **Particles** tabs don't apply to UPBGE, so they won't be explained here. .. note:: This section will explain properties belonging to UPBGE only (Blender Game renderer) or, at most, relevant properties for game development. For other Blender properties, see the `official Blender manual `__. @@ -43,4 +42,4 @@ In this section you have a detailed description about each tab of the Properties :caption: Object-specific materials.rst - data.rst \ No newline at end of file + data.rst diff --git a/source/manual/introduction/briefing.rst b/source/manual/introduction/briefing.rst index 5920aa03..cb6459e6 100644 --- a/source/manual/introduction/briefing.rst +++ b/source/manual/introduction/briefing.rst @@ -1,134 +1,97 @@ +.. _introduction-briefing: -********* +============================== Briefing -********* +============================== An Origin Story ---------------- +++++++++++++++++++++++++++++++ -It was the mid-1990s, and the personal computer was taking off faster than anyone had anticipated. -With it, there arose the advent of animated graphics and 3D games. +It was the mid-1990s, and the personal computer was taking off faster than anyone had anticipated. With it, there arose the advent of animated graphics and 3D games. Blender Begins -^^^^^^^^^^^^^^ +------------------------------ + +It was at this ripe time that Blender came into being. Blender started off as an in-house 3D animation software created by a small Dutch animation studio called NeoGeo. Perhaps it was because of the lack of a cheap and capable substitute; perhaps it was due to sheer ambition, NeoGeo decided to create its own animation software from scratch rather than using what was available. -It was at this ripe time that Blender came into being. Blender started off as an in-house 3D animation software created by a -small Dutch animation studio called NeoGeo. Perhaps it was because of the lack of a cheap and capable substitute; -perhaps it was due to sheer ambition, NeoGeo decided to create its own animation software from scratch rather than using what was available. The chief programmer of Blender was *Ton Roosendaal*, who was responsible for writing a large part of the core Blender functionalities. -For the next few years, Blender remained the internal tool of a very successful animation studio. -The software became so good that in 1998, Blender was made available to the public. A new company, Not a Number (NaN), -was formed to oversee the development and distribution of Blender. Largely via the Internet, -Blender was distributed as two separate versions: a free version with limited functionality and a version that was not -free (called Blender Publisher) that had a few additional features. Being the only complete 3D animation and game creation -package available for free at a time when computer graphics was still in its infancy, Blender started gaining popularity, -and many online communities developed that allowed artists to share knowledge and their work. +For the next few years, Blender remained the internal tool of a very successful animation studio. The software became so good that in 1998, Blender was made available to the public. A new company, Not a Number (NaN), was formed to oversee the development and distribution of Blender. Largely via the Internet, Blender was distributed as two separate versions: a free version with limited functionality and a version that was not free (called Blender Publisher) that had a few additional features. Being the only complete 3D animation and game creation package available for free at a time when computer graphics was still in its infancy, Blender started gaining popularity, and many online communities developed that allowed artists to share knowledge and their work. -.. image:: /images/Chapter1/Fig01-01.jpg - :align: center +.. figure:: /images/introduction/01-blender16.jpg + + Blender 1.6 and Blender 2.5 The Dark Nights -^^^^^^^^^^^^^^^ +------------------------------ -Alas, with the collapse of the Internet bubble and some other unfortunate circumstances, Not a Number (NaN) filed -for bankruptcy in 2002. Since Blender was the intellectual property of the company at the time, dissolving the company meant an -uncertain future for Blender. The Blender community did not want to see their favorite software go down with NaN. So a deal was struck -in which NaN would release the source code of Blender to the public for a payment of €100,000. A "Free the Blender" fundraising -campaign was started. The online community responded very generously. A few months later, enough money was collected to convince NaN -to re-release Blender as an open source software to the newly established Blender Foundation. The foundation was created -specifically to manage the now open source Blender. Ton Roosendaal, the original creator of Blender, heads the foundation. +Alas, with the collapse of the Internet bubble and some other unfortunate circumstances, Not a Number (NaN) filed for bankruptcy in 2002. Since Blender was the intellectual property of the company at the time, dissolving the company meant an uncertain future for Blender. The Blender community did not want to see their favorite software go down with NaN. So a deal was struck in which NaN would release the source code of Blender to the public for a payment of €100,000. A "Free the Blender" fundraising campaign was started. The online community responded very generously. A few months later, enough money was collected to convince NaN to re-release Blender as an open source software to the newly established Blender Foundation. The foundation was created specifically to manage the now open source Blender. Ton Roosendaal, the original creator of Blender, heads the foundation. Blender Rises -^^^^^^^^^^^^^ +------------------------------ -Located in beautiful Amsterdam, the Blender Foundation now oversees the development, distribution, and marketing of Blender. -But because of the open source nature of the software, its development has been driven largely by volunteer contributors from across the world. +Located in beautiful Amsterdam, the Blender Foundation now oversees the development, distribution, and marketing of Blender. But because of the open source nature of the software, its development has been driven largely by volunteer contributors from across the world. -The Blender Foundation also created the Blender Institute, an animation and game studio that focuses on movie and game development -using Blender. The Institute produced the movies **Elephants Dream**, **Big Buck Bunny**, **Sintel**, **Tears of Steel**, **Cosmos Laundromat** and the -game **Yo, Frankie!**. These projects serve two main goals: The production process is an opportunity to improve Blender in a real studio environment, -and the end result also serves as an advertisement for the software itself. +The Blender Foundation also created the Blender Institute, an animation and game studio that focuses on movie and game development using Blender. The Institute produced the movies **Elephants Dream**, **Big Buck Bunny**, **Sintel**, **Tears of Steel**, **Cosmos Laundromat** and the game **Yo, Frankie!**. These projects serve two main goals: The production process is an opportunity to improve Blender in a real studio environment, and the end result also serves as an advertisement for the software itself. -.. image:: /images/Chapter1/Fig01-02.jpg - :align: center +.. figure:: /images/introduction/02-blender_reel.jpg + + Blender reel -Then came Blender 2.5, which changed much of how Blender looked and behaved. This refactoring, as it was called, took years of planning and coding. -Blender 2.5 marks a significant milestone in the history of Blender. For users coming from the Blender 2.4x series, the entire interface looks -radically different: menus items are rearranged, keyboard shortcuts are altered, even the default color scheme has changed from a boring gray to a -slightly less boring shade of gray. Blender 2.5 is designed to be more intuitive, faster to use, and easier to learn than its predecessor. +Then came Blender 2.5, which changed much of how Blender looked and behaved. This refactoring, as it was called, took years of planning and coding. Blender 2.5 marks a significant milestone in the history of Blender. For users coming from the Blender 2.4x series, the entire interface looks radically different: menus items are rearranged, keyboard shortcuts are altered, even the default color scheme has changed from a boring gray to a slightly less boring shade of gray. Blender 2.5 is designed to be more intuitive, faster to use, and easier to learn than its predecessor. -Blender uses the Python programming language for scripting. With Python, you can customize the behavior of Blender, extend its functionality, and, -more importantly, control the game engine. Knowing how to program is not a requirement for using Blender, but knowing Python will make -you a far more capable game-maker. +Blender uses the Python programming language for scripting. With Python, you can customize the behavior of Blender, extend its functionality, and, more importantly, control the game engine. Knowing how to program is not a requirement for using Blender, but knowing Python will make you a far more capable game-maker. -.. image:: /images/Chapter1/Fig01-03.png - :width: 50% - :align: left +.. figure:: /images/introduction/03-blender_commits.png + :width: 70% -The year 2012 marked the tenth anniversary of Blender going open source. During these 10 years of open source development, more than 150 people -have contributed something to the source code, totaling 50,000 contributions ("commits," in GIT techno-jargon), averaging nearly 30 commits -every day over the past year. Needless to say, the program has improved much over the years, and it shows no sign of slowing down when it reaches almost -to the twentyth anniversary. The image below shows the Blender development statistics gathered from the official GIT repository including Blender -trunk all its branches. + Monthly commits -Blender vs UPBGE -^^^^^^^^^^^^^^^^ +The year 2012 marked the tenth anniversary of Blender going open source. During these 10 years of open source development, more than 150 people have contributed something to the source code, totaling 50,000 contributions ("commits," in GIT techno-jargon), averaging nearly 30 commits every day over the past year. Needless to say, the program has improved much over the years, and it shows no sign of slowing down when it reaches almost to the thirtieth anniversary. The image below shows the Blender development statistics gathered from the official GIT repository including Blender trunk all its branches. -You already know that Blender is an open source 3D software that is capable of modeling, animation, rendering, compositing, and producing a game all in one package. -Let's analyze the term "open source 3D software": "Open source 3D software" means that Blender's source code is available for anyone to access and modify. -The most obvious advantage to open source software is that as an artist, you can use Blender for free, for non-commercial as well as commercial work. -As a developer, you are allowed to modify Blender in any way you want to suit your specific needs. But open source does not mean that anyone -can make changes to the Blender code without approval. Blender is licensed under the GNU Public License v2 (GPL2). In a nutshell, it means that Blender can be -copied, modified, and if re-shared, the changes in the source code have to be available and licensed in an equivalent license. +Blender vs UPBGE +------------------------------ -The **Uchronia Project Blender Game Engine** (UPBGE) is a `Blender `__'s builtin tool derived from Blender Foundation's -`Blender Game Engine `__ for real-time projects, from architectural visualizations and simulations to games. +You already know that Blender is an open source 3D software that is capable of modeling, animation, rendering, compositing, and producing a game all in one package. Let's analyze the term "open source 3D software": "Open source 3D software" means that Blender's source code is available for anyone to access and modify. The most obvious advantage to open source software is that as an artist, you can use Blender for free, for non-commercial as well as commercial work. As a developer, you are allowed to modify Blender in any way you want to suit your specific needs. But open source does not mean that anyone can make changes to the Blender code without approval. Blender is licensed under the GNU Public License v2 (GPL2). In a nutshell, it means that Blender can be copied, modified, and if re-shared, the changes in the source code have to be available and licensed in an equivalent license. -Originally created by Tristan Porteries as a fork from the Blender Game Engine with the purpose to develop the Blender Game Engine in a faster way, -became indepent with the Blender Foundation's announcement of BGE's removal when it reached to Blender 2.80. With this independency, -the UPBGE's developers (former BGE developers) have freedom to change and add features that could not be changed before (because the possibility of -an official Blender merge, now discarded). +The **Uchronia Project Blender Game Engine** (UPBGE) is a `Blender `__'s builtin tool derived from Blender Foundation's `Blender Game Engine `__ for real-time projects, from architectural visualizations and simulations to games. -Basically, due to its periodic synchronization with Blender source code (almost daily), UPBGE, as its acronym suggests, has become a Blender from a parallel universe -in which the game engine was never removed. +Originally created by Tristan Porteries as a fork from the Blender Game Engine with the purpose to develop the Blender Game Engine in a faster way, became indepent with the Blender Foundation's announcement of BGE's removal when it reached to Blender 2.80. With this independency, the UPBGE's developers (former BGE developers) have freedom to change and add features that could not be changed before (because the possibility of an official Blender merge, now discarded). -In any case, UPBGE is kriptonian for "hope". Who knows if in the future that parallel universe merges with our universe and we may add another line entitled "Justice League" -to this beautiful story :-). +Basically, due to its periodic synchronization with Blender source code (almost daily), UPBGE, as its acronym suggests, has become a Blender from a parallel universe in which the game engine was never removed. -Until that time comes, UPBGE has adopted the new physically based and state-of-the-art real-time render engine, Eevee. This way all you can do in Blender/UPBGE editor you -can translate it to the Game Engine. A truly WYSIWYG (What You See Is What You Get) Game Engine, the strongest UPBGE feature. +In any case, UPBGE is kriptonian for "hope". Who knows if in the future that parallel universe merges with our universe and we may add another line entitled "Justice League" to this beautiful story :-). -Of course, software exists to serve the users - that's you. Every time a Blender and/or UPBGE user creates a piece of artwork, it justifies, even if just a little, -the enormous amount of time that went into creating the software. We hope that by picking up this manual, you are on your way to creating something -amazing to share with the world. +Until that time comes, UPBGE has adopted the new physically based and state-of-the-art real-time render engine, Eevee. This way all you can do in Blender/UPBGE editor you can translate it to the Game Engine. A truly WYSIWYG (What You See Is What You Get) Game Engine, the strongest UPBGE feature. +Of course, software exists to serve the users - that's you. Every time a Blender and/or UPBGE user creates a piece of artwork, it justifies, even if just a little, the enormous amount of time that went into creating the software. We hope that by picking up this manual, you are on your way to creating something amazing to share with the world. Features --------- +------------------------------ -Compared to some of the commercial game engines available today, the Uchronia Project Blender Game Engine (UPBGE or BGE or GE for short) is relatively simple. -Is that a bad thing? Not necessarily. A simple platform like UPBGE is very easy to learn, and yet it's flexible enough to do a lot. +Compared to some of the commercial game engines available today, the Uchronia Project Blender Game Engine (UPBGE or BGE or GE for short) is relatively simple. Is that a bad thing? Not necessarily. A simple platform like UPBGE is very easy to learn, and yet it's flexible enough to do a lot. -UPBGE have lots of `new features `__, -improvements and bugs fixed. Some features that UPBGE supports are: +UPBGE have lots of `new features `__, improvements and bugs fixed. Some features that UPBGE supports are: - Realtime advanced physics powered by `Bullet `__, including rigid bodies, obstacle simulation and path finding. + - Fully integrated audio engine powered by `OpenAL `__ and `Audaspace `__,supporting 3D sound and sound effects. + - Two easy and straightforward visual logic systems, Logic Bricks and Logic Nodes. + - Powerful `Python `__ language bindings, allowing support to even more libraries through the use of `PyPI `__. + - Development process entirely inside Blender, without needing to import/export assets, although most used formats are supported through import/export addons (FBX, Collada, glTF, obj, stl, etc). + - Execution of game in Blender's viewport (for fast previewing) or on an standalone executable. + - Rendering powered by state of art Blender's EEVEE engine including PBR shading, SSR reflections, GTAO ambient occlusion, Bloom, Soft and contact shadows, Light probes for global ilumination, Volumetrics, etc. + - Blender's `Linked Libraries `__ feature, allowing to organize projects in multiple blend files. -- GLSL custom shaders for visual effects and post processing. +- GLSL custom shaders for visual effects and post processing. Development ------------ +------------------------------ -UPBGE is maintained by a group of developers in their spare time and its community. You -can contribute to UPBGE if you code in C++ or Python: just `open a pull request `__, -submit your changes and wait for the reviewers. Also, even if you don't code, you can -contribute by submitting bug reports, feature requests and participating discussions -`on issues `__. +UPBGE is maintained by a group of developers in their spare time and its community. You can contribute to UPBGE if you code in C++ or Python: just `open a pull request `__, submit your changes and wait for the reviewers. Also, even if you don't code, you can contribute by submitting bug reports, feature requests and participating discussions `on issues `__. diff --git a/source/manual/introduction/compatibility_notes.rst b/source/manual/introduction/compatibility_notes.rst index f07d7f89..7a6500c8 100644 --- a/source/manual/introduction/compatibility_notes.rst +++ b/source/manual/introduction/compatibility_notes.rst @@ -1,16 +1,15 @@ - -******************* +.. _intro-compatibility_notes: + +============================== Compatibility Notes -******************* +============================== UPBGE VS Blender -================ +++++++++++++++++++++++++++++++ -UPBGE is fully integrated into Blender environment, but it doesn't mean it supports -all the features that Blender provides. Here's some compatibility info about various -features present in Blender relative to UPBGE. +UPBGE is fully integrated into Blender environment, but it doesn't mean it supports all the features that Blender provides. Here's some compatibility info about various features present in Blender relative to UPBGE. -.. _compatibility-supported-objects: +.. _object_types_supported: .. rubric:: Object types supported @@ -23,9 +22,9 @@ features present in Blender relative to UPBGE. - :ref:`datablock-object` - :ref:`datablock-text` -.. note:: Any other object type (like Curve, Speaker, Force Field, etc) will not be rendered into game. A Curve Object can be converted to :ref:`datablock-mesh` though. +.. important:: Any other object type (like Curve, Speaker, Force Field, etc) will not be rendered into game. A Curve Object can be converted to :ref:`datablock-mesh` though. -.. _compatibility-supported-datablocks: +.. _data_blocks_supported: .. rubric:: Data-blocks supported @@ -47,20 +46,16 @@ features present in Blender relative to UPBGE. - :ref:`datablock-world` - Particle (partially supported) -.. note:: Any other data-block type (like Line Styles, Brushes, etc) have no use or will not be rendered into game. - +.. important:: Any other data-block type (like Line Styles, Brushes, etc) have no use or will not be rendered into game. UPBGE VS BGE -================ +============================== -BGE also have some incompatibilities with UPBGE. UPBGE can partially load and execute games made -in BGE, but a game made in UPBGE can't be executed in BGE, resulting in several -issues like: +BGE also have some incompatibilities with UPBGE. UPBGE can partially load and execute games made in BGE, but a game made in UPBGE can't be executed in BGE, resulting in several issues like: - Logic can't run most of the times. - Materials get messed up. - UPBGE do not support Multitexture material mode anymore. Set to GLSL when in vanilla BGE. - Sometimes physics simulation get messed up. -Along with this compatibility with BGE, UPBGE comes with features not supported by -BGE, like Modifiers applied automatically at game start (instead of discarded, as in BGE). +Along with this compatibility with BGE, UPBGE comes with features not supported by BGE, like Modifiers applied automatically at game start (instead of discarded, as in BGE). diff --git a/source/manual/introduction/deeper_look.rst b/source/manual/introduction/deeper_look.rst index 29df6a55..ed911ac7 100644 --- a/source/manual/introduction/deeper_look.rst +++ b/source/manual/introduction/deeper_look.rst @@ -1,29 +1,18 @@ +.. _intro-deeper_look: -************* +============================== A Deeper Look -************* +============================== Use Cases -========= - -UPBGE allows you to create real-time interactive 3D applications or simulations. This -allows you to create almost any type of interactive project, like architectural -presentations, virtual prototypes for robotic projects, physics simulation projects, -simple and complex games, and much more. - -Much can be achieved through UPBGE by default, as it provides a blank canvas full of -features to be used, and even more can be acomplished by extending these features -according to your needs. -For example, if you're working with robotics and needs to send or receive commands -through a USB port, you can install the -`PySerial `__ Python module for use with UPBGE. -Or if you need a graphical feature that can't be acomplished through the default UPBGE's -capabilities, you can write your own OpenGL shaders. -The list goes on, and there's a big chance that the project you aim to can be brought to -life with UPBGE, using its features and abilities to be extended. +++++++++++++++++++++++++++++++ + +UPBGE allows you to create real-time interactive 3D applications or simulations. This allows you to create almost any type of interactive project, like architectural presentations, virtual prototypes for robotic projects, physics simulation projects, simple and complex games, and much more. + +Much can be achieved through UPBGE by default, as it provides a blank canvas full of features to be used, and even more can be acomplished by extending these features according to your needs. For example, if you're working with robotics and needs to send or receive commands through a USB port, you can install the `PySerial `__ Python module for use with UPBGE. Or if you need a graphical feature that can't be acomplished through the default UPBGE's capabilities, you can write your own OpenGL shaders. The list goes on, and there's a big chance that the project you aim to can be brought to life with UPBGE, using its features and abilities to be extended. Sample Games -============ +++++++++++++++++++++++++++++++ Here are some examples of games made with BGE/UPBGE: @@ -47,7 +36,6 @@ Here are some examples of games made with BGE/UPBGE: .. .. youtube:: 3krdf9xRgw4 - .. ``Game Name / Creator Name:`` Spaceship Test by Atomic Skill produced with UPBGE 0.3. @@ -56,24 +44,15 @@ Here are some examples of games made with BGE/UPBGE: ``Game Name / Creator Name:`` GTA-like prototype by ThePajlok Studios produced with UPBGE 0.3. Under The Hood -============== +++++++++++++++++++++++++++++++ -UPBGE oversees a game loop, which processes logic, sound, physics and rendering -simulations in sequential order. The engine is written in C++. +UPBGE oversees a game loop, which processes logic, sound, physics and rendering simulations in sequential order. The engine is written in C++. -By default, the user has access to a powerful and high-level visual logic programming -interface. The visual programming in UPBGE provides deep interaction with the simulation, -and its functionality can be extended through Python scripting. It is designed to abstract -the complex engine features into a simple user interface, which does not require experience -with Programming. +By default, the user has access to a powerful and high-level visual logic programming interface. The visual programming in UPBGE provides deep interaction with the simulation, and its functionality can be extended through Python scripting. It is designed to abstract the complex engine features into a simple user interface, which does not require experience with Programming. -UPBGE is closely integrated with the existing code base of Blender, which permits quick -transitions between the traditional modeling feature set and game-specific functionality -provided by the program. In this sense, the UPBGE can be efficiently used in all areas of -game design, from prototyping to final release. +UPBGE is closely integrated with the existing code base of Blender, which permits quick transitions between the traditional modeling feature set and game-specific functionality provided by the program. In this sense, the UPBGE can be efficiently used in all areas of game design, from prototyping to final release. -UPBGE can simulate content within Blender, however it also includes the ability to export -a binary run-time to Linux, MacOS, and MS-Windows. +UPBGE can simulate content within Blender, however it also includes the ability to export a binary run-time to Linux, MacOS, and MS-Windows. There are a number of powerful libraries the UPBGE takes advantage of: @@ -83,14 +62,16 @@ There are a number of powerful libraries the UPBGE takes advantage of: - `Recast `__: A state of the art navigation mesh construction tool set for games. Project Development Process -=========================== +++++++++++++++++++++++++++++++ When creating a game or simulation in UPBGE, there are four essential steps: #. Create visual elements that can be rendered. Usually, 3D models. -#. Enable interaction within the scene using logic to enable custom behavior and - determine how it is invoked. -#. Create one (or more) camera to give a frustum from which to render the scene, and - modify the parameters to support the environment in which the game will be displayed, - such as VR rendering. +#. Enable interaction within the scene using logic to enable custom behavior and determine how it is invoked. +#. Create one (or more) camera to give a frustum from which to render the scene, and modify the parameters to support the environment in which the game will be displayed, such as VR rendering. #. Launch the game, using the internal player or exporting a runtime to the appropriate platform. + +.. figure:: /images/introduction/04-gimp.jpg + :figwidth: 90% + + Gimp diff --git a/source/manual/introduction/index.rst b/source/manual/introduction/index.rst index 6a1edb6a..1f7914e1 100644 --- a/source/manual/introduction/index.rst +++ b/source/manual/introduction/index.rst @@ -1,11 +1,10 @@ -.. _introduction-index: +.. _intro-index: -++++++++++++ +============================== Introduction -++++++++++++ +============================== -This section gives an overview of UPBGE's capabilities, features, history and some -differences between it and BGE, but not directly comparing UPBGE to BGE. +This section gives an overview of UPBGE's capabilities, features, history and some differences between it and BGE, but not directly comparing UPBGE to BGE. .. toctree:: :maxdepth: 2 diff --git a/source/manual/logic_nodes/animation/animation_status.rst b/source/manual/logic_nodes/animation/animation_status.rst index 66fc5e09..6c515376 100644 --- a/source/manual/logic_nodes/animation/animation_status.rst +++ b/source/manual/logic_nodes/animation/animation_status.rst @@ -1,10 +1,10 @@ -.. _ln-animation_status: - .. figure:: /images/logic_nodes/animation/ln-animation_status.png :align: right :width: 215 :alt: Animation Status Node +.. _ln-animation_status: + ====================== Animation Status ====================== diff --git a/source/manual/logic_nodes/animation/armature_rig/bone_status.rst b/source/manual/logic_nodes/animation/armature_rig/bone_status.rst index 291f08db..752f321f 100644 --- a/source/manual/logic_nodes/animation/armature_rig/bone_status.rst +++ b/source/manual/logic_nodes/animation/armature_rig/bone_status.rst @@ -1,10 +1,10 @@ -.. _ln-bone_status: - .. figure:: /images/logic_nodes/animation/armature_rig/ln-bone_status.png :align: right :width: 215 :alt: Bone Status Node +.. _ln-bone_status: + ============================== Bone Status ============================== diff --git a/source/manual/logic_nodes/animation/armature_rig/set_bone_position.rst b/source/manual/logic_nodes/animation/armature_rig/set_bone_position.rst index b28c8972..0ec26912 100644 --- a/source/manual/logic_nodes/animation/armature_rig/set_bone_position.rst +++ b/source/manual/logic_nodes/animation/armature_rig/set_bone_position.rst @@ -1,10 +1,10 @@ -.. _ln-set_bone_position: - .. figure:: /images/logic_nodes/animation/armature_rig/ln-set_bone_position.png :align: right :width: 215 :alt: Set Bone Position Node +.. _ln-set_bone_position: + ============================== Set Bone Position ============================== diff --git a/source/manual/logic_nodes/animation/bone_constraints/set_attribute.rst b/source/manual/logic_nodes/animation/bone_constraints/set_attribute.rst index 9424910f..f5a58bd3 100644 --- a/source/manual/logic_nodes/animation/bone_constraints/set_attribute.rst +++ b/source/manual/logic_nodes/animation/bone_constraints/set_attribute.rst @@ -1,10 +1,10 @@ -.. _logic_nodes-set_attribute: - .. figure:: /images/logic_nodes/animation/bone_constraints/ln-set_attribute.png :align: right :width: 215 :alt: Set Attribute Node +.. _ln-set_attribute: + ============================== Set Attribute ============================== diff --git a/source/manual/logic_nodes/animation/bone_constraints/set_influence.rst b/source/manual/logic_nodes/animation/bone_constraints/set_influence.rst index 17397eda..286e025d 100644 --- a/source/manual/logic_nodes/animation/bone_constraints/set_influence.rst +++ b/source/manual/logic_nodes/animation/bone_constraints/set_influence.rst @@ -1,10 +1,10 @@ -.. _logic_nodes-set_influence: - .. figure:: /images/logic_nodes/animation/bone_constraints/ln-set_influence.png :align: right :width: 215 :alt: Set Influence Node +.. _ln-set_influence: + ====================== Set Influence ====================== diff --git a/source/manual/logic_nodes/animation/bone_constraints/set_target.rst b/source/manual/logic_nodes/animation/bone_constraints/set_target.rst index 3c471dc1..3901ebc2 100644 --- a/source/manual/logic_nodes/animation/bone_constraints/set_target.rst +++ b/source/manual/logic_nodes/animation/bone_constraints/set_target.rst @@ -1,10 +1,10 @@ -.. _logic_nodes-set_target: - .. figure:: /images/logic_nodes/animation/bone_constraints/ln-set_target.png :align: right :width: 215 :alt: Set Target Node +.. _ln-set_target: + ============================== Set Target ============================== diff --git a/source/manual/logic_nodes/animation/play_animation.rst b/source/manual/logic_nodes/animation/play_animation.rst index bc9d254d..0d2e4acd 100644 --- a/source/manual/logic_nodes/animation/play_animation.rst +++ b/source/manual/logic_nodes/animation/play_animation.rst @@ -1,10 +1,10 @@ -.. _ln-play_animation: - .. figure:: /images/logic_nodes/animation/ln-play_animation.png :align: right :width: 215 :alt: Play Animation Node +.. _ln-play_animation: + ====================== Play Animation ====================== diff --git a/source/manual/logic_nodes/animation/set_animation_frame.rst b/source/manual/logic_nodes/animation/set_animation_frame.rst index 7ffa677b..85e8f80d 100644 --- a/source/manual/logic_nodes/animation/set_animation_frame.rst +++ b/source/manual/logic_nodes/animation/set_animation_frame.rst @@ -1,10 +1,10 @@ -.. _ln-set_animation_frame: - .. figure:: /images/logic_nodes/animation/ln-set_animation_frame.png :align: right :width: 215 :alt: Set Animation Frame Node +.. _ln-set_animation_frame: + ====================== Set Animation Frame ====================== diff --git a/source/manual/logic_nodes/animation/stop_animation.rst b/source/manual/logic_nodes/animation/stop_animation.rst index 9750e2a4..de1def6f 100644 --- a/source/manual/logic_nodes/animation/stop_animation.rst +++ b/source/manual/logic_nodes/animation/stop_animation.rst @@ -1,10 +1,10 @@ -.. _ln-stop_animation: - .. figure:: /images/logic_nodes/animation/ln-stop_animation.png :align: right :width: 215 :alt: Stop Animation Node +.. _ln-stop_animation: + ====================== Stop Animation ====================== diff --git a/source/manual/logic_nodes/data/dict/dictionary_from_items.rst b/source/manual/logic_nodes/data/dict/dictionary_from_items.rst index 86fa7e8d..399e95d2 100644 --- a/source/manual/logic_nodes/data/dict/dictionary_from_items.rst +++ b/source/manual/logic_nodes/data/dict/dictionary_from_items.rst @@ -1,10 +1,10 @@ -.. _ln-dictionary_from_items: - .. figure:: /images/logic_nodes/data/dict/ln-dictionary_from_items.png :align: right :width: 215 :alt: Dictionary From Items Node +.. _ln-dictionary_from_items: + ===================== Dictionary From Items ===================== diff --git a/source/manual/logic_nodes/data/dict/get_dictionary_key.rst b/source/manual/logic_nodes/data/dict/get_dictionary_key.rst index f77b5e79..35c203d2 100644 --- a/source/manual/logic_nodes/data/dict/get_dictionary_key.rst +++ b/source/manual/logic_nodes/data/dict/get_dictionary_key.rst @@ -1,10 +1,10 @@ -.. _ln-get_dictionary_key: - .. figure:: /images/logic_nodes/data/dict/ln-get_dictionary_key.png :align: right :width: 215 :alt: Get Dictionary Key Node +.. _ln-get_dictionary_key: + ===================== Get Dictionary Key ===================== diff --git a/source/manual/logic_nodes/data/dict/new_dictionary.rst b/source/manual/logic_nodes/data/dict/new_dictionary.rst index 35b1e049..b6ef7e1f 100644 --- a/source/manual/logic_nodes/data/dict/new_dictionary.rst +++ b/source/manual/logic_nodes/data/dict/new_dictionary.rst @@ -1,10 +1,10 @@ -.. _ln-new_dictionary: - .. figure:: /images/logic_nodes/data/dict/ln-new_dictionary.png :align: right :width: 215 :alt: New Dictionary Node +.. _ln-new_dictionary: + ================= New Dictionary ================= diff --git a/source/manual/logic_nodes/data/dict/remove_dictionary_key.rst b/source/manual/logic_nodes/data/dict/remove_dictionary_key.rst index d2ba92e7..7600201f 100644 --- a/source/manual/logic_nodes/data/dict/remove_dictionary_key.rst +++ b/source/manual/logic_nodes/data/dict/remove_dictionary_key.rst @@ -1,10 +1,10 @@ -.. _ln-remove_dictionary_key: - .. figure:: /images/logic_nodes/data/dict/ln-remove_dictionary_key.png :align: right :width: 215 :alt: Remove Dictionary Key Node +.. _ln-remove_dictionary_key: + ===================== Remove Dictionary Key ===================== diff --git a/source/manual/logic_nodes/data/dict/set_dictionary_key.rst b/source/manual/logic_nodes/data/dict/set_dictionary_key.rst index 14b0b31c..d74cc55f 100644 --- a/source/manual/logic_nodes/data/dict/set_dictionary_key.rst +++ b/source/manual/logic_nodes/data/dict/set_dictionary_key.rst @@ -1,10 +1,10 @@ -.. _ln-set_dictionary_key: - .. figure:: /images/logic_nodes/data/dict/ln-set_dictionary_key.png :align: right :width: 215 :alt: Set Dictionary Key Node +.. _ln-set_dictionary_key: + ===================== Set Dictionary Key ===================== diff --git a/source/manual/logic_nodes/data/list/append.rst b/source/manual/logic_nodes/data/list/append.rst index 89e2ed84..0e579f68 100644 --- a/source/manual/logic_nodes/data/list/append.rst +++ b/source/manual/logic_nodes/data/list/append.rst @@ -1,10 +1,10 @@ -.. _ln-append: - .. figure:: /images/logic_nodes/data/list/ln-append.png :align: right :width: 215 :alt: Append Node +.. _ln-append: + ================= Append ================= diff --git a/source/manual/logic_nodes/data/list/duplicate.rst b/source/manual/logic_nodes/data/list/duplicate.rst index a53b5f07..636fdae4 100644 --- a/source/manual/logic_nodes/data/list/duplicate.rst +++ b/source/manual/logic_nodes/data/list/duplicate.rst @@ -1,10 +1,10 @@ -.. _ln-duplicate: - .. figure:: /images/logic_nodes/data/list/ln-duplicate.png :align: right :width: 215 :alt: Duplicate Node +.. _ln-duplicate: + ===================== Duplicate ===================== diff --git a/source/manual/logic_nodes/data/list/extend.rst b/source/manual/logic_nodes/data/list/extend.rst index 8c28f9d2..2b4c3aa1 100644 --- a/source/manual/logic_nodes/data/list/extend.rst +++ b/source/manual/logic_nodes/data/list/extend.rst @@ -1,10 +1,10 @@ -.. _ln-extend: - .. figure:: /images/logic_nodes/data/list/ln-extend.png :align: right :width: 215 :alt: Extend Node +.. _ln-extend: + ================= Extend ================= diff --git a/source/manual/logic_nodes/data/list/get_list_index.rst b/source/manual/logic_nodes/data/list/get_list_index.rst index e0476616..a4a5a063 100644 --- a/source/manual/logic_nodes/data/list/get_list_index.rst +++ b/source/manual/logic_nodes/data/list/get_list_index.rst @@ -1,10 +1,10 @@ -.. _ln-get_list_index: - .. figure:: /images/logic_nodes/data/list/ln-get_list_index.png :align: right :width: 215 :alt: Get List Index Node +.. _ln-get_list_index: + ================= Get List Index ================= diff --git a/source/manual/logic_nodes/data/list/get_random_list_item.rst b/source/manual/logic_nodes/data/list/get_random_list_item.rst index 29379ca9..58171bac 100644 --- a/source/manual/logic_nodes/data/list/get_random_list_item.rst +++ b/source/manual/logic_nodes/data/list/get_random_list_item.rst @@ -1,10 +1,10 @@ -.. _ln-get_random_list_item: - .. figure:: /images/logic_nodes/data/list/ln-get_random_list_item.png :align: right :width: 215 :alt: Get Random List Item Node +.. _ln-get_random_list_item: + ===================== Get Random List Item ===================== diff --git a/source/manual/logic_nodes/data/list/list_from_items.rst b/source/manual/logic_nodes/data/list/list_from_items.rst index 04b9d9c1..3697794a 100644 --- a/source/manual/logic_nodes/data/list/list_from_items.rst +++ b/source/manual/logic_nodes/data/list/list_from_items.rst @@ -1,10 +1,10 @@ -.. _ln-list_from_items: - .. figure:: /images/logic_nodes/data/list/ln-list_from_items.png :align: right :width: 215 :alt: List From Items Node +.. _ln-list_from_items: + ================= List From Items ================= diff --git a/source/manual/logic_nodes/data/list/new_list.rst b/source/manual/logic_nodes/data/list/new_list.rst index a425c7da..45723fbe 100644 --- a/source/manual/logic_nodes/data/list/new_list.rst +++ b/source/manual/logic_nodes/data/list/new_list.rst @@ -1,10 +1,10 @@ -.. _ln-new_list: - .. figure:: /images/logic_nodes/data/list/ln-new_list.png :align: right :width: 215 :alt: New List Node +.. _ln-new_list: + ================= New List ================= diff --git a/source/manual/logic_nodes/data/list/remove_index.rst b/source/manual/logic_nodes/data/list/remove_index.rst index e8ac1e9b..b6ee4684 100644 --- a/source/manual/logic_nodes/data/list/remove_index.rst +++ b/source/manual/logic_nodes/data/list/remove_index.rst @@ -1,10 +1,10 @@ -.. _ln-remove_index: - .. figure:: /images/logic_nodes/data/list/ln-remove_index.png :align: right :width: 215 :alt: Remove Index Node +.. _ln-remove_index: + ================= Remove Index ================= diff --git a/source/manual/logic_nodes/data/list/remove_value.rst b/source/manual/logic_nodes/data/list/remove_value.rst index be9ba3db..97276045 100644 --- a/source/manual/logic_nodes/data/list/remove_value.rst +++ b/source/manual/logic_nodes/data/list/remove_value.rst @@ -1,10 +1,10 @@ -.. _ln-remove_value: - .. figure:: /images/logic_nodes/data/list/ln-remove_value.png :align: right :width: 215 :alt: Remove Value Node +.. _ln-remove_value: + ================= Remove Value ================= diff --git a/source/manual/logic_nodes/data/list/set_list_index.rst b/source/manual/logic_nodes/data/list/set_list_index.rst index 4b8b91f9..02bb5cbb 100644 --- a/source/manual/logic_nodes/data/list/set_list_index.rst +++ b/source/manual/logic_nodes/data/list/set_list_index.rst @@ -1,10 +1,10 @@ -.. _ln-set_list_index: - .. figure:: /images/logic_nodes/data/list/ln-set_list_index.png :align: right :width: 215 :alt: Set List Index Node +.. _ln-set_list_index: + ================= Set List Index ================= diff --git a/source/manual/logic_nodes/data/load_file_content.rst b/source/manual/logic_nodes/data/load_file_content.rst index 9b96e778..7ac6d1f2 100644 --- a/source/manual/logic_nodes/data/load_file_content.rst +++ b/source/manual/logic_nodes/data/load_file_content.rst @@ -1,10 +1,10 @@ -.. _ln-load_file_content: - .. figure:: /images/logic_nodes/data/ln-load_file_content.png :align: right :width: 215 :alt: Load File Content Node +.. _ln-load_file_content: + ================= Load File Content ================= diff --git a/source/manual/logic_nodes/data/load_scene.rst b/source/manual/logic_nodes/data/load_scene.rst index b0eeb2e8..84199943 100644 --- a/source/manual/logic_nodes/data/load_scene.rst +++ b/source/manual/logic_nodes/data/load_scene.rst @@ -1,10 +1,10 @@ -.. _ln-load_scene: - .. figure:: /images/logic_nodes/data/ln-load_scene.png :align: right :width: 215 :alt: Load Scene Node +.. _ln-load_scene: + ========== Load Scene ========== diff --git a/source/manual/logic_nodes/data/variables/clear_variables.rst b/source/manual/logic_nodes/data/variables/clear_variables.rst index d0bf0d01..42b3dddf 100644 --- a/source/manual/logic_nodes/data/variables/clear_variables.rst +++ b/source/manual/logic_nodes/data/variables/clear_variables.rst @@ -1,10 +1,10 @@ -.. _ln-clear_variables: - .. figure:: /images/logic_nodes/data/variables/ln-clear_variables.png :align: right :width: 215 :alt: Clear Variables Node +.. _ln-clear_variables: + ================== Clear Variables ================== diff --git a/source/manual/logic_nodes/data/variables/list_saved_variables.rst b/source/manual/logic_nodes/data/variables/list_saved_variables.rst index 101acd55..90a9a4e7 100644 --- a/source/manual/logic_nodes/data/variables/list_saved_variables.rst +++ b/source/manual/logic_nodes/data/variables/list_saved_variables.rst @@ -1,10 +1,10 @@ -.. _ln-list_saved_variables: - .. figure:: /images/logic_nodes/data/variables/ln-list_saved_variables.png :align: right :width: 215 :alt: List Saved Variables Node +.. _ln-list_saved_variables: + ==================== List Saved Variables ==================== diff --git a/source/manual/logic_nodes/data/variables/load_variable.rst b/source/manual/logic_nodes/data/variables/load_variable.rst index 84dca511..aba7e527 100644 --- a/source/manual/logic_nodes/data/variables/load_variable.rst +++ b/source/manual/logic_nodes/data/variables/load_variable.rst @@ -1,10 +1,10 @@ -.. _ln-load_variable: - .. figure:: /images/logic_nodes/data/variables/ln-load_variable.png :align: right :width: 215 :alt: Load Variable Node +.. _ln-load_variable: + ================= Load Variable ================= diff --git a/source/manual/logic_nodes/data/variables/load_variable_dict.rst b/source/manual/logic_nodes/data/variables/load_variable_dict.rst index ea9c4fa8..22b94c11 100644 --- a/source/manual/logic_nodes/data/variables/load_variable_dict.rst +++ b/source/manual/logic_nodes/data/variables/load_variable_dict.rst @@ -1,10 +1,10 @@ -.. _ln-load_variable_dict: - .. figure:: /images/logic_nodes/data/variables/ln-load_variable_dict.png :align: right :width: 215 :alt: Load Variable Dict Node +.. _ln-load_variable_dict: + ================== Load Variable Dict ================== diff --git a/source/manual/logic_nodes/data/variables/remove_variable.rst b/source/manual/logic_nodes/data/variables/remove_variable.rst index d1f827d8..a2e9414d 100644 --- a/source/manual/logic_nodes/data/variables/remove_variable.rst +++ b/source/manual/logic_nodes/data/variables/remove_variable.rst @@ -1,10 +1,10 @@ -.. _ln-remove_variable: - .. figure:: /images/logic_nodes/data/variables/ln-remove_variable.png :align: right :width: 215 :alt: Remove Variable Node +.. _ln-remove_variable: + ================= Remove Variable ================= diff --git a/source/manual/logic_nodes/data/variables/save_variable.rst b/source/manual/logic_nodes/data/variables/save_variable.rst index 8595f552..7239fd6a 100644 --- a/source/manual/logic_nodes/data/variables/save_variable.rst +++ b/source/manual/logic_nodes/data/variables/save_variable.rst @@ -1,10 +1,10 @@ -.. _ln-save_variable: - .. figure:: /images/logic_nodes/data/variables/ln-save_variable.png :align: right :width: 215 :alt: Save Variable Node +.. _ln-save_variable: + ================= Save Variable ================= diff --git a/source/manual/logic_nodes/data/variables/save_variable_dict.rst b/source/manual/logic_nodes/data/variables/save_variable_dict.rst index b14f7455..99a724b9 100644 --- a/source/manual/logic_nodes/data/variables/save_variable_dict.rst +++ b/source/manual/logic_nodes/data/variables/save_variable_dict.rst @@ -1,10 +1,10 @@ -.. _ln-save_variable_dict: - .. figure:: /images/logic_nodes/data/variables/ln-save_variable_dict.png :align: right :width: 215 :alt: Save Variable Dict Node +.. _ln-save_variable_dict: + ================== Save Variable Dict ================== diff --git a/source/manual/logic_nodes/events/custom/receive_event.rst b/source/manual/logic_nodes/events/custom/receive_event.rst index 95a0196c..014d7c12 100644 --- a/source/manual/logic_nodes/events/custom/receive_event.rst +++ b/source/manual/logic_nodes/events/custom/receive_event.rst @@ -1,10 +1,10 @@ -.. _ln-receive_event: - .. figure:: /images/logic_nodes/events/ln-receive_event.png :align: right :width: 215 :alt: Receive Event Node +.. _ln-receive_event: + ============================= Receive Event ============================= diff --git a/source/manual/logic_nodes/events/custom/send_event.rst b/source/manual/logic_nodes/events/custom/send_event.rst index fd03042d..906227f9 100644 --- a/source/manual/logic_nodes/events/custom/send_event.rst +++ b/source/manual/logic_nodes/events/custom/send_event.rst @@ -1,10 +1,10 @@ -.. _ln-send_event: - .. figure:: /images/logic_nodes/events/ln-send_event.png :align: right :width: 215 :alt: Send Event Node +.. _ln-send_event: + =============== Send Event =============== diff --git a/source/manual/logic_nodes/events/on_init.rst b/source/manual/logic_nodes/events/on_init.rst index 6acd3671..57824625 100644 --- a/source/manual/logic_nodes/events/on_init.rst +++ b/source/manual/logic_nodes/events/on_init.rst @@ -1,10 +1,10 @@ -.. _ln-on_init: - .. figure:: /images/logic_nodes/events/ln-on_init.png :align: right :width: 215 :alt: On Init Node +.. _ln-on_init: + ========== On Init ========== diff --git a/source/manual/logic_nodes/events/on_next_frame.rst b/source/manual/logic_nodes/events/on_next_frame.rst index 31d3b524..b69c15d2 100644 --- a/source/manual/logic_nodes/events/on_next_frame.rst +++ b/source/manual/logic_nodes/events/on_next_frame.rst @@ -1,10 +1,10 @@ -.. _ln-on_next_frame: - .. figure:: /images/logic_nodes/events/ln-on_next_frame.png :align: right :width: 215 :alt: On Next Frame Node +.. _ln-on_next_frame: + ============= On Next Frame ============= diff --git a/source/manual/logic_nodes/events/on_update.rst b/source/manual/logic_nodes/events/on_update.rst index 9f724e4e..99ae57aa 100644 --- a/source/manual/logic_nodes/events/on_update.rst +++ b/source/manual/logic_nodes/events/on_update.rst @@ -1,10 +1,10 @@ -.. _ln-on_update: - .. figure:: /images/logic_nodes/events/ln-on_update.png :align: right :width: 215 :alt: On Update Node +.. _ln-on_update: + =========== On Update =========== diff --git a/source/manual/logic_nodes/events/on_value_changed.rst b/source/manual/logic_nodes/events/on_value_changed.rst index fdb62584..c1acc03c 100644 --- a/source/manual/logic_nodes/events/on_value_changed.rst +++ b/source/manual/logic_nodes/events/on_value_changed.rst @@ -1,10 +1,10 @@ -.. _ln-on_value_changed: - .. figure:: /images/logic_nodes/events/ln-on_value_changed.png :align: right :width: 215 :alt: On Value Changed Node +.. _ln-on_value_changed: + ================ On Value Changed ================ diff --git a/source/manual/logic_nodes/events/on_value_changed_to.rst b/source/manual/logic_nodes/events/on_value_changed_to.rst index b9b7429b..d94bdf33 100644 --- a/source/manual/logic_nodes/events/on_value_changed_to.rst +++ b/source/manual/logic_nodes/events/on_value_changed_to.rst @@ -1,10 +1,10 @@ -.. _ln-on_value_changed_to: - .. figure:: /images/logic_nodes/events/ln-on_value_changed_to.png :align: right :width: 215 :alt: On Value Changed To Node +.. _ln-on_value_changed_to: + =================== On Value Changed To =================== diff --git a/source/manual/logic_nodes/events/once.rst b/source/manual/logic_nodes/events/once.rst index 5a0afcd0..09405400 100644 --- a/source/manual/logic_nodes/events/once.rst +++ b/source/manual/logic_nodes/events/once.rst @@ -1,10 +1,10 @@ -.. _ln-once: - .. figure:: /images/logic_nodes/events/ln-once.png :align: right :width: 215 :alt: Once Node +.. _ln-once: + ========== Once ========== @@ -30,7 +30,6 @@ Example +++++++ .. figure:: /images/logic_nodes/events/ln-once-example.png - :align: center :width: 500 :alt: Once Node Example diff --git a/source/manual/logic_nodes/file/get_font.rst b/source/manual/logic_nodes/file/get_font.rst index d890fd27..beb8834d 100644 --- a/source/manual/logic_nodes/file/get_font.rst +++ b/source/manual/logic_nodes/file/get_font.rst @@ -1,10 +1,10 @@ -.. _ln-get_font: - .. figure:: /images/logic_nodes/file/ln-get_font.png :align: right :width: 215 :alt: Get Font Node +.. _ln-get_font: + ================= Get Font ================= diff --git a/source/manual/logic_nodes/file/get_image.rst b/source/manual/logic_nodes/file/get_image.rst index d24041ac..8fe58c2d 100644 --- a/source/manual/logic_nodes/file/get_image.rst +++ b/source/manual/logic_nodes/file/get_image.rst @@ -1,10 +1,10 @@ -.. _ln-get_image: - .. figure:: /images/logic_nodes/file/ln-get_image.png :align: right :width: 215 :alt: Get Image Node +.. _ln-get_image: + ================= Get Image ================= diff --git a/source/manual/logic_nodes/file/get_sound.rst b/source/manual/logic_nodes/file/get_sound.rst index a9e2d6ce..3957c5d4 100644 --- a/source/manual/logic_nodes/file/get_sound.rst +++ b/source/manual/logic_nodes/file/get_sound.rst @@ -1,10 +1,10 @@ -.. _ln-get_sound: - .. figure:: /images/logic_nodes/file/ln-get_sound.png :align: right :width: 215 :alt: Get Sound Node +.. _ln-get_sound: + ================= Get Sound ================= diff --git a/source/manual/logic_nodes/game/load_blender_file.rst b/source/manual/logic_nodes/game/load_blender_file.rst index 524c0b5b..83b4987a 100644 --- a/source/manual/logic_nodes/game/load_blender_file.rst +++ b/source/manual/logic_nodes/game/load_blender_file.rst @@ -1,10 +1,10 @@ -.. _ln-load_blender_file: - .. figure:: /images/logic_nodes/game/ln-load_blender_file.png :align: right :width: 215 :alt: Load Blender File Node +.. _ln-load_blender_file: + ================= Load Blender File ================= diff --git a/source/manual/logic_nodes/game/load_game.rst b/source/manual/logic_nodes/game/load_game.rst index bcc2e31c..41624982 100644 --- a/source/manual/logic_nodes/game/load_game.rst +++ b/source/manual/logic_nodes/game/load_game.rst @@ -1,10 +1,10 @@ -.. _ln-load_game: - .. figure:: /images/logic_nodes/game/ln-load_game.png :align: right :width: 215 :alt: Load Game Node +.. _ln-load_game: + ========== Load Game ========== diff --git a/source/manual/logic_nodes/game/quit_game.rst b/source/manual/logic_nodes/game/quit_game.rst index 8a756164..5927cc06 100644 --- a/source/manual/logic_nodes/game/quit_game.rst +++ b/source/manual/logic_nodes/game/quit_game.rst @@ -1,10 +1,10 @@ -.. _ln-quit_game: - .. figure:: /images/logic_nodes/game/ln-quit_game.png :align: right :width: 215 :alt: Quit Game Node +.. _ln-quit_game: + =========== Quit Game =========== diff --git a/source/manual/logic_nodes/game/restart_game.rst b/source/manual/logic_nodes/game/restart_game.rst index 6be8f5c7..d4a92b98 100644 --- a/source/manual/logic_nodes/game/restart_game.rst +++ b/source/manual/logic_nodes/game/restart_game.rst @@ -1,10 +1,10 @@ -.. _ln-restart_game: - .. figure:: /images/logic_nodes/game/ln-restart_game.png :align: right :width: 215 :alt: Restart Game Node +.. _ln-restart_game: + ============= Restart Game ============= diff --git a/source/manual/logic_nodes/game/save_game.rst b/source/manual/logic_nodes/game/save_game.rst index fcad8c3c..d87c3587 100644 --- a/source/manual/logic_nodes/game/save_game.rst +++ b/source/manual/logic_nodes/game/save_game.rst @@ -1,10 +1,10 @@ -.. _ln-save_game: - .. figure:: /images/logic_nodes/game/ln-save_game.png :align: right :width: 215 :alt: Save Game Node +.. _ln-save_game: + ========== Save Game ========== diff --git a/source/manual/logic_nodes/index.rst b/source/manual/logic_nodes/index.rst index 1d963dba..acc9dcab 100644 --- a/source/manual/logic_nodes/index.rst +++ b/source/manual/logic_nodes/index.rst @@ -32,397 +32,26 @@ Logic Nodes ui/index utility/index -This page lists all available *Logic Nodes* in this chapter. There are 6 categories in *Logic Editor* :menuselection:`Add` menu, separated into sub- and sub-sub-menus (click the line to toggle-expand): +This page lists available *Logic Nodes* sub-menus. There are 6 categories in *Logic Editor* :menuselection:`Add` menu, separated into sub- and sub-sub-menus: -.. collapse:: Events | | Game | | Input | | Values + * :ref:`ln-events-index` | | :ref:`ln-game-index` | | :ref:`ln-input-index` | | :ref:`ln-values-index` - * :ref:`ln-events-index` - * On Init - * On Update - * On Next Frame - * On Value Changed To - * On Value Changed - * Once - * **Custom** - * Receive Event - * Send Event - * :ref:`ln-game-index` - * Load Blender File - * Load Game - * Quit Game - * Restart Game - * Save Game - * :ref:`ln-input-index` - * **Mouse** - * Mouse Button - * Mouse Moved - * Mouse Over - * Mouse Status - * Cursor Visibility - * Set Cursor Position - * Mouse Look - * **Keyboard** - * Keyboard Key - * Keyboard Active - * Key Code - * Key Logger - * **Gamepad** - * Gamepad Button - * Gamepad Sticks - * Gamepad Active - * Gamepad Vibrate - * Gamepad Look - * **VR** - * VR Headset - * VR Controller - * :ref:`ln-values-index` - * Boolean - * Float - * Integer - * String - * **Vector** - * Color RGB - * Color RGBA - * Separate XY - * Separate XYZ - * Combine XY - * Combine XYZ - * Combine XYZW - * Euler - * Resize Vector - * **Properties** - * Get Tree Property - * Set Tree Property - * Get Object Property - * Set Object Property - * Object Has Property - * Toggle Object Property - * Modify Object Property - * Evaluate Object Property - * Copy Property From Object - * Get Global Property - * Set Global Property - * Random Value - * Invert - * Formatted String - * File Path - * Store Value - * Value Switch - * Value Switch List - * Value Switch List Compare ( x ) + * :ref:`ln-animation-index` | | :ref:`ln-lights-index` | | :ref:`ln-nodes-index` | | :ref:`ln-objects-index` | | :ref:`ln-scene-index` | | :ref:`ln-sound-index` -| + * :ref:`ln-logic-index` | | :ref:`ln-math-index` | | :ref:`ln-physics-index` | | :ref:`ln-python-index` | | :ref:`ln-raycasts-index` | | :ref:`ln-time-index` -.. collapse:: Animation | | Lights | | Nodes | | Objects | | Scene | | Sound + * :ref:`ln-data-index` | | :ref:`ln-file-index` | | :ref:`ln-network-index` - * :ref:`ln-animation-index` - * Play Animation - * Stop Animation - * Set Animation Frame - * Animation Status - * **Armature / Rig** - * Bone Status - * Set Bone Position - * **Bone Constraints** - * Set Attribute - * Set Influence - * Set Target - * :ref:`ln-lights-index` - * Get Light Color - * Set Light Color - * Get Light Power - * Set Light Power - * Set Light Shadow - * Make Light Unique - * :ref:`ln-nodes-index` - * **Materials** - * Get Node - * Play Sequence - * Get Socket Value - * Set Socket - * Get Node Value - * Set Node Value - * **Geometry** - * Get Socket Value - * Set Socket - * Get Node Value - * Set Node Value - * **Groups** - * Get Socket Value - * Set Socket - * Get Node Value - * Set Node Value - * :ref:`ln-objects-index` - * **Get Attribute** - * Get World Position - * Get World Orientation - * Get World Linear Velocity - * Get World Angular Velocity - * Get World Transform - * Get Local Position - * Get Local Orientation - * Get Local Linear Velocity - * Get Local Angular Velocity - * Get Local Transform - * Get Name - * Get Scale - * Get Color - * **Set Attribute** - * Set World Position - * Set World Orientation - * Set World Linear Velocity - * Set World Angular Velocity - * Set World Transform - * Set Local Position - * Set Local Orientation - * Set Local Linear Velocity - * Set Local Angular Velocity - * Set Local Transform - * Set Scale - * Set Color - * **Transformation** - * Apply Movement - * Apply Rotation - * Apply Force - * Apply Torque - * Apply Impulse - * Align Axis To Vector - * Follow Path - * Move To - * Move To With Navmesh - * Rotate To - * Slow Follow - * **Object Data** - * Get Axis Vector - * Get Object ID - * Get Vertices - * Replace Mesh - * Set Constraint Attribute - * **Curves** - * Get Curve Points - * Set Curve Points - * Add Object - * Remove Object - * Set Visibility - * Get Object - * Get Child By Index - * Get Child By Name - * Get Parent - * Set Parent - * Remove Parent - * Set Material - * Send Message - * Spawn Pool - * :ref:`ln-scene-index` - * **Camera** - * Active Camera - * Set Camera - * Set FOV - * Set Orthographic Scale - * World To Screen - * Screen To World - * **Post FX** - * Add Filter - * Remove Filter - * Set Filter State - * Toggle Filter - * **Collections** - * Get Collection - * Get Object Names - * Get Objects - * Set Collection Visibility - * Set Overlay Collection - * Remove Overlay Collection - * Get Scene - * Set Scene - * Get Gravity - * Set Gravity - * Get Timescale - * Set Timescale - * :ref:`ln-sound-index` - * Start Sound - * Start Speaker - * Pause Sound - * Resume Sound - * Stop Sound - * Stop All Sounds - -| - -.. collapse:: Logic | | Math | | Physics | | Python | | Raycasts | | Time - - * AI ( TODO ) - * :ref:`ln-logic-index` - * **Trees** - * Start Logic Tree - * Run Logic Tree - * Stop Logic Tree - * Add Logic Tree To Object - * Logic Tree Status - * **Bricks** - * Get Sensor Value - * Set Sensor Value - * Get Actuator Value - * Set Actuator Value - * Controller Status - * Sensor Positive - * Gate - * Branch - * Gate List - * Is None - * Not None - * :ref:`ln-math-index` - * Math - * Vector Math - * **Vectors** - * Check Angle - * Vector Rotate - * Absolute Vector - * XYZ To Matrix - * Matrix To XYZ - * Interpolate - * Absolute - * Clamp - * Compare - * Formula - * Map Range - * Treshold - * Ranged Treshold - * Limit Range - * Within Range - * :ref:`ln-physics-index` - * **Vehicle** - * Create New Vehicle - * Accelerate - * Brake - * Set Vehicle Attribute - * Steer - * **Character** - * Walk - * Jump - * Get Physics Info - * Set Jump Force - * Set Max Jumps - * Set Velocity - * Collision - * Set Collision Group - * Set Collision Mask - * Add Constraint - * Remove Constraint - * Set Physics - * Set Gravity - * Set Dynamics - * Set Rigid Body - * :ref:`ln-python-index` - * Run Python Code - * Get Instance Attribute - * Set Object Attribute - * Typecast Value - * :ref:`ln-raycasts-index` - * Raycast - * Mouse Ray - * Camera Ray - * Projectile Ray - * :ref:`ln-time-index` - * Time Data - * Delta Factor - * Delay - * Timer - * Pulsify - * Barrier - -| - -.. collapse:: Data | | File | | Network - - * :ref:`ln-data-index` - * **List** - * New List - * List From Items - * Append - * Extend - * Remove Index - * Remove Value - * Get List Index - * Set List Index - * Get Random List Item - * Duplicate - * **Dict** - * New Dictionary - * Dictionary From Items - * Get Dictionary Key - * Set Dictionary Key - * Remove Dictionary Key - * **Variables** - * Load Variable - * Save Variable - * Remove Variable - * Load Variable Dict - * Save Variable Dict - * Clear Variables - * List Saved Variables - * Load Scene - * Load File Content - * :ref:`ln-file-index` - * Get Font - * Get Image - * Get Sound - * :ref:`ln-network-index` - * LAN Server - * LAN Client - * Rebuild Data - * Send Data - * Serialize Data - -| - -.. collapse:: Render | | UI - - * :ref:`ln-render-index` - * **EEVEE** - * Set Ambient Occlusion - * Set Bloom - * Set Exposure - * Set Gamma - * Set SSR - * Set Volumetric Light - * Get Fullscreen - * Set Fullscreen - * Get Resolution - * Set Resolution - * Get VSync - * Set VSync - * Show Framerate - * Show Profile - * :ref:`ln-ui-index` - * **Widgets** - * Create Canvas - * Create Layout - * Create Button - * Create Label - * Create Image - * Crate Slider - * Add Widget - * Get Widget Atrribute - * Set Widget Attribute - * Set Custom Cursor - -| - -.. collapse:: Utility + * :ref:`ln-render-index` | | :ref:`ln-ui-index` * :ref:`ln-utility-index` - * Print - * Draw ----- .. note:: - The sub-menu *Layout* is not a particular part of Logic Nodes - those are tools for organizing and connecting, and are common feature for all *node editors*. .. figure:: /images/logic_nodes/ln-noodles.png - :align: center :scale: 60% :alt: Logic Noodles diff --git a/source/manual/logic_nodes/input/gamepad/gamepad_active.rst b/source/manual/logic_nodes/input/gamepad/gamepad_active.rst index f6efd08e..21b2a644 100644 --- a/source/manual/logic_nodes/input/gamepad/gamepad_active.rst +++ b/source/manual/logic_nodes/input/gamepad/gamepad_active.rst @@ -1,10 +1,10 @@ -.. _ln-gamepad_active: - .. figure:: /images/logic_nodes/input/gamepad/ln-gamepad_active.png :align: right :width: 215 :alt: Gamepad Active Node +.. _ln-gamepad_active: + =============== Gamepad Active =============== diff --git a/source/manual/logic_nodes/input/gamepad/gamepad_button.rst b/source/manual/logic_nodes/input/gamepad/gamepad_button.rst index 879707b8..52bc248b 100644 --- a/source/manual/logic_nodes/input/gamepad/gamepad_button.rst +++ b/source/manual/logic_nodes/input/gamepad/gamepad_button.rst @@ -1,10 +1,10 @@ -.. _ln-gamepad_button: - .. figure:: /images/logic_nodes/input/gamepad/ln-gamepad_button.png :align: right :width: 215 :alt: Gamepad Button Node +.. _ln-gamepad_button: + ============== Gamepad Button ============== diff --git a/source/manual/logic_nodes/input/gamepad/gamepad_look.rst b/source/manual/logic_nodes/input/gamepad/gamepad_look.rst index ea36aaad..b11e684d 100644 --- a/source/manual/logic_nodes/input/gamepad/gamepad_look.rst +++ b/source/manual/logic_nodes/input/gamepad/gamepad_look.rst @@ -1,10 +1,10 @@ -.. _ln-gamepad_look: - .. figure:: /images/logic_nodes/input/gamepad/ln-gamepad_look.png :align: right :width: 215 :alt: Gamepad Look Node +.. _ln-gamepad_look: + ============== Gamepad Look ============== diff --git a/source/manual/logic_nodes/input/gamepad/gamepad_sticks.rst b/source/manual/logic_nodes/input/gamepad/gamepad_sticks.rst index b632d7d4..65dde8a7 100644 --- a/source/manual/logic_nodes/input/gamepad/gamepad_sticks.rst +++ b/source/manual/logic_nodes/input/gamepad/gamepad_sticks.rst @@ -1,10 +1,10 @@ -.. _ln-gamepad_sticks: - .. figure:: /images/logic_nodes/input/gamepad/ln-gamepad_sticks.png :align: right :width: 215 :alt: Gamepad Sticks Node +.. _ln-gamepad_sticks: + ============== Gamepad Sticks ============== diff --git a/source/manual/logic_nodes/input/gamepad/gamepad_vibrate.rst b/source/manual/logic_nodes/input/gamepad/gamepad_vibrate.rst index 09076b89..da5ab167 100644 --- a/source/manual/logic_nodes/input/gamepad/gamepad_vibrate.rst +++ b/source/manual/logic_nodes/input/gamepad/gamepad_vibrate.rst @@ -1,10 +1,10 @@ -.. _ln-gamepad_vibrate: - .. figure:: /images/logic_nodes/input/gamepad/ln-gamepad_vibrate.png :align: right :width: 215 :alt: Gamepad Vibrate Node +.. _ln-gamepad_vibrate: + ================ Gamepad Vibrate ================ diff --git a/source/manual/logic_nodes/input/keyboard/instream.rst b/source/manual/logic_nodes/input/keyboard/instream.rst index e17a3cfc..d164d574 100644 --- a/source/manual/logic_nodes/input/keyboard/instream.rst +++ b/source/manual/logic_nodes/input/keyboard/instream.rst @@ -1,10 +1,10 @@ -.. _ln-instream: - .. figure:: /images/logic_nodes/input/keyboard/ln-instream.png :align: right :width: 215 :alt: Key Logger Node +.. _ln-instream: + ========== Key Logger ========== diff --git a/source/manual/logic_nodes/input/keyboard/key_code.rst b/source/manual/logic_nodes/input/keyboard/key_code.rst index 8d5844c7..0980384f 100644 --- a/source/manual/logic_nodes/input/keyboard/key_code.rst +++ b/source/manual/logic_nodes/input/keyboard/key_code.rst @@ -1,10 +1,10 @@ -.. _ln-key_code: - .. figure:: /images/logic_nodes/input/keyboard/ln-key_code.png :align: right :width: 215 :alt: Key Code Node +.. _ln-key_code: + ======== Key Code ======== diff --git a/source/manual/logic_nodes/input/keyboard/keyboard_active.rst b/source/manual/logic_nodes/input/keyboard/keyboard_active.rst index 3464c5f0..c89c85fb 100644 --- a/source/manual/logic_nodes/input/keyboard/keyboard_active.rst +++ b/source/manual/logic_nodes/input/keyboard/keyboard_active.rst @@ -1,10 +1,10 @@ -.. _ln-keyboard_active: - .. figure:: /images/logic_nodes/input/keyboard/ln-keyboard_active.png :align: right :width: 215 :alt: Keyboard Active Node +.. _ln-keyboard_active: + =============== Keyboard Active =============== diff --git a/source/manual/logic_nodes/input/keyboard/keyboard_key.rst b/source/manual/logic_nodes/input/keyboard/keyboard_key.rst index 213f55d4..6450dc76 100644 --- a/source/manual/logic_nodes/input/keyboard/keyboard_key.rst +++ b/source/manual/logic_nodes/input/keyboard/keyboard_key.rst @@ -1,10 +1,10 @@ -.. _ln-keyboard_key: - .. figure:: /images/logic_nodes/input/keyboard/ln-keyboard_key.png :align: right :width: 215 :alt: Keyboard Key Node +.. _ln-keyboard_key: + ============= Keyboard Key ============= diff --git a/source/manual/logic_nodes/input/mouse/cursor_visibility.rst b/source/manual/logic_nodes/input/mouse/cursor_visibility.rst index 13d863e8..5bd112cc 100644 --- a/source/manual/logic_nodes/input/mouse/cursor_visibility.rst +++ b/source/manual/logic_nodes/input/mouse/cursor_visibility.rst @@ -1,10 +1,10 @@ -.. _ln-cursor_visibility: - .. figure:: /images/logic_nodes/input/mouse/ln-cursor_visibility.png :align: right :width: 215 :alt: Cursor Visibility Node +.. _ln-cursor_visibility: + ================= Cursor Visibility ================= diff --git a/source/manual/logic_nodes/input/mouse/mouse_button.rst b/source/manual/logic_nodes/input/mouse/mouse_button.rst index ee4c0371..3156a9a6 100644 --- a/source/manual/logic_nodes/input/mouse/mouse_button.rst +++ b/source/manual/logic_nodes/input/mouse/mouse_button.rst @@ -1,10 +1,10 @@ -.. _ln-mouse_button: - .. figure:: /images/logic_nodes/input/mouse/ln-mouse_button.png :align: right :width: 215 :alt: Mouse Button Node +.. _ln-mouse_button: + ============= Mouse Button ============= diff --git a/source/manual/logic_nodes/input/mouse/mouse_look.rst b/source/manual/logic_nodes/input/mouse/mouse_look.rst index 2832b564..a2ea0f12 100644 --- a/source/manual/logic_nodes/input/mouse/mouse_look.rst +++ b/source/manual/logic_nodes/input/mouse/mouse_look.rst @@ -1,10 +1,10 @@ -.. _ln-mouse_look: - .. figure:: /images/logic_nodes/input/mouse/ln-mouse_look.png :align: right :width: 215 :alt: Mouse Look Node +.. _ln-mouse_look: + ============ Mouse Look ============ diff --git a/source/manual/logic_nodes/input/mouse/mouse_moved.rst b/source/manual/logic_nodes/input/mouse/mouse_moved.rst index bf5a749f..0ae0ea76 100644 --- a/source/manual/logic_nodes/input/mouse/mouse_moved.rst +++ b/source/manual/logic_nodes/input/mouse/mouse_moved.rst @@ -1,10 +1,10 @@ -.. _ln-mouse_moved: - .. figure:: /images/logic_nodes/input/mouse/ln-mouse_moved.png :align: right :width: 215 :alt: Mouse Moved Node +.. _ln-mouse_moved: + =========== Mouse Moved =========== diff --git a/source/manual/logic_nodes/input/mouse/mouse_over.rst b/source/manual/logic_nodes/input/mouse/mouse_over.rst index 29ea61ee..0f44f2ea 100644 --- a/source/manual/logic_nodes/input/mouse/mouse_over.rst +++ b/source/manual/logic_nodes/input/mouse/mouse_over.rst @@ -1,10 +1,10 @@ -.. _ln-mouse_over: - .. figure:: /images/logic_nodes/input/mouse/ln-mouse_over.png :align: right :width: 215 :alt: Mouse Over Node +.. _ln-mouse_over: + =========== Mouse Over =========== @@ -42,22 +42,18 @@ Example :align: center :width: 500 :alt: Mouse Over Node Apply -| + With Cube object selected, apply the Logic Tree (click :menuselection:`Apply To Selected` button). Run the UPBGE from terminal (Linux & mac), or open the console (Windows). See :doc:`System Console ` if needed. Make sure that in :menuselection:`Render > Game Debug > Mouse Cursor` is selected. -| - .. figure:: /images/logic_nodes/input/mouse/ln-mouse_over-example_terminal.png :align: center :width: 90% :alt: Mouse Over Node Terminal -| - Run the example, and move mouse cursor over the Cube which has *Logic Tree* applied to it. In system terminal/console, see printed results. .. figure:: /images/logic_nodes/input/mouse/ln-mouse_over-example_once.png @@ -65,7 +61,4 @@ Run the example, and move mouse cursor over the Cube which has *Logic Tree* appl :width: 500 :alt: Mouse Over Node Terminal -| - Add `Once` node, run and observe different terminal output. Only once per *Mouse Over* is now system message printed. Uncheck ``Repeat`` and exactly once is message printed - on first *Mouse Over* event only. - diff --git a/source/manual/logic_nodes/input/mouse/mouse_status.rst b/source/manual/logic_nodes/input/mouse/mouse_status.rst index 4c43a931..d4f11d0c 100644 --- a/source/manual/logic_nodes/input/mouse/mouse_status.rst +++ b/source/manual/logic_nodes/input/mouse/mouse_status.rst @@ -1,10 +1,10 @@ -.. _ln-mouse_status: - .. figure:: /images/logic_nodes/input/mouse/ln-mouse_status.png :align: right :width: 215 :alt: Mouse Status Node +.. _ln-mouse_status: + ============== Mouse Status ============== diff --git a/source/manual/logic_nodes/input/mouse/set_cursor_position.rst b/source/manual/logic_nodes/input/mouse/set_cursor_position.rst index 60962655..2d2cf693 100644 --- a/source/manual/logic_nodes/input/mouse/set_cursor_position.rst +++ b/source/manual/logic_nodes/input/mouse/set_cursor_position.rst @@ -1,10 +1,10 @@ -.. _ln-set-cursor_position: - .. figure:: /images/logic_nodes/input/mouse/ln-set_cursor_position.png :align: right :width: 215 :alt: Set Cursor Position Node +.. _ln-set_cursor_position: + ==================== Set Cursor Position ==================== diff --git a/source/manual/logic_nodes/input/vr/vr_controller.rst b/source/manual/logic_nodes/input/vr/vr_controller.rst index c8014d70..fad7e62c 100644 --- a/source/manual/logic_nodes/input/vr/vr_controller.rst +++ b/source/manual/logic_nodes/input/vr/vr_controller.rst @@ -1,10 +1,10 @@ -.. _ln-vr_controller: - .. figure:: /images/logic_nodes/input/vr/ln-vr_controller.png :align: right :width: 215 :alt: VR Controller Node +.. _ln-vr_controller: + ============== VR Controller ============== diff --git a/source/manual/logic_nodes/input/vr/vr_headset.rst b/source/manual/logic_nodes/input/vr/vr_headset.rst index 51ff3f47..84ac146b 100644 --- a/source/manual/logic_nodes/input/vr/vr_headset.rst +++ b/source/manual/logic_nodes/input/vr/vr_headset.rst @@ -1,10 +1,10 @@ -.. _ln-vr_headset: - .. figure:: /images/logic_nodes/input/vr/ln-vr_headset.png :align: right :width: 215 :alt: VR Headset Node +.. _ln-vr_headset: + =========== VR Headset =========== diff --git a/source/manual/logic_nodes/introduction.rst b/source/manual/logic_nodes/introduction.rst index b06f391d..06a778dd 100644 --- a/source/manual/logic_nodes/introduction.rst +++ b/source/manual/logic_nodes/introduction.rst @@ -1,42 +1,39 @@ .. _ln-introduction: -============ +============================== Introduction -============ - +============================== + As an alternative to *Python scripts* and *Logic Bricks*, *Logic Nodes* provide an intuitive and versatile way to create game logic. Designed to support rapid prototyping, they enable artists and game designers to quickly test and even fully implement desired features. .. figure:: /images/logic_nodes/ln-4_key_template.png - :align: center :scale: 60% - -| 4-Key Template for Object/Player Movement Logic Nodes use a **visual approach** to programming, allowing developers to skip learning a *programming language* and the engine's API, to get their game done. With a set of 300+ nodes, close to all functionality is covered - including calling *custom scripts* and referencing *Logic Bricks* to make full use of UPBGE's power. Logic Trees -+++++++++++ +++++++++++++++++++++++++++++++ *Logic Trees* are different from *Logic Bricks*, as they are not directly bound to an object. They can be created, edited and compiled **without any object in the scene**. To be executed though, they need to be **applied to at least one object** (or called through another tree, but more on that later). Now the difference between being *bound* and being *applied* to an object is that multiple objects can have the same *Logic Node Tree* applied to them, while *Logic Bricks* are unique for each object. Basically, *Logic Node Trees* work just as *Material Node Trees* do - you add nodes, connect them to one another and something happens. One difference would be that with a material, you always need to route the end of the nodes chain back to the *Material Output*. This is not the case with Logic Nodes. You can have a lot of smaller patches within a single tree which will be executed, **regardless if they're connected or not**. As there's no such thing as an *Output Node*, each part of the tree is evaluated "as is". Logic Nodes -+++++++++++ +++++++++++++++++++++++++++++++ The system is built around *nodes*, and each node has *Sockets* that can be connected to the Sockets of other nodes. Normally the code isn't very picky and will try to work with whatever comes its way, meaning that you can try to combine different types of Sockets without having to fear a complete crash. It is generally advised to try to keep Logic Trees **as small as possible** to keep the performance high. You would for example use the *Formula Node* for more complex equations instead of putting multiple *Math* nodes together. Global Variables -++++++++++++++++ +++++++++++++++++++++++++++++++ With the *Logic Nodes* addon also comes the ability to create and read *Global Variables*. They work very similarly to *Properties*, but again they are not bound to an object, but to the scene. These variables are intended to be used to store data about the world like *time*, *temperature* etc., or *game settings*, though they can just as well be used for player or entity data that wouldn't really make sense on an object. Architecture -++++++++++++ +++++++++++++++++++++++++++++++ Under the hood, Logic Nodes are actually generating *Python scripts* to be executed by the game engine. The generated component will have options for executing the tree *only at startup* and for executing the tree *only when a certain property is set*. Using this method will prevent you from accessing Logic Bricks directly, but you can still access them via *custom Python calls*. diff --git a/source/manual/logic_nodes/lights/get_light_color.rst b/source/manual/logic_nodes/lights/get_light_color.rst index fa1b605f..1c6c7b6f 100644 --- a/source/manual/logic_nodes/lights/get_light_color.rst +++ b/source/manual/logic_nodes/lights/get_light_color.rst @@ -1,10 +1,10 @@ -.. _ln-get_light_color: - .. figure:: /images/logic_nodes/lights/ln-get_light_color.png :align: right :width: 215 :alt: Get Light Color Node +.. _ln-get_light_color: + =============== Get Light Color =============== diff --git a/source/manual/logic_nodes/lights/get_light_power.rst b/source/manual/logic_nodes/lights/get_light_power.rst index 3197f43f..f8d013bd 100644 --- a/source/manual/logic_nodes/lights/get_light_power.rst +++ b/source/manual/logic_nodes/lights/get_light_power.rst @@ -1,10 +1,10 @@ -.. _ln-get_light_power: - .. figure:: /images/logic_nodes/lights/ln-get_light_power.png :align: right :width: 215 :alt: Get Light Power Node +.. _ln-get_light_power: + =============== Get Light Power =============== diff --git a/source/manual/logic_nodes/lights/make_light_unique.rst b/source/manual/logic_nodes/lights/make_light_unique.rst index a747f991..3ed37adc 100644 --- a/source/manual/logic_nodes/lights/make_light_unique.rst +++ b/source/manual/logic_nodes/lights/make_light_unique.rst @@ -1,10 +1,10 @@ -.. _ln-make_light_unique: - .. figure:: /images/logic_nodes/lights/ln-make_light_unique.png :align: right :width: 215 :alt: Make Light Unique Node +.. _ln-make_light_unique: + ================= Make Light Unique ================= diff --git a/source/manual/logic_nodes/lights/set_light_color.rst b/source/manual/logic_nodes/lights/set_light_color.rst index 4fea16cc..5c725c25 100644 --- a/source/manual/logic_nodes/lights/set_light_color.rst +++ b/source/manual/logic_nodes/lights/set_light_color.rst @@ -1,10 +1,10 @@ -.. _ln-set_light_color: - .. figure:: /images/logic_nodes/lights/ln-set_light_color.png :align: right :width: 215 :alt: Set Light Color Node +.. _ln-set_light_color: + =============== Set Light Color =============== diff --git a/source/manual/logic_nodes/lights/set_light_power.rst b/source/manual/logic_nodes/lights/set_light_power.rst index 0899dae9..1bfc2156 100644 --- a/source/manual/logic_nodes/lights/set_light_power.rst +++ b/source/manual/logic_nodes/lights/set_light_power.rst @@ -1,10 +1,10 @@ -.. _ln-set_light_power: - .. figure:: /images/logic_nodes/lights/ln-set_light_power.png :align: right :width: 215 :alt: Set Light Power Node +.. _ln-set_light_power: + =============== Set Light Power =============== diff --git a/source/manual/logic_nodes/lights/set_light_shadow.rst b/source/manual/logic_nodes/lights/set_light_shadow.rst index 233fc303..dfee8e4d 100644 --- a/source/manual/logic_nodes/lights/set_light_shadow.rst +++ b/source/manual/logic_nodes/lights/set_light_shadow.rst @@ -1,13 +1,13 @@ -.. _ln-set_light_shadow: - .. figure:: /images/logic_nodes/lights/ln-set_light_shadow.png :align: right :width: 215 :alt: Set Light Shadow Node -=============== +.. _ln-set_light_shadow: + +================= Set Light Shadow -=============== +================= Inputs ++++++ diff --git a/source/manual/logic_nodes/logic/branch.rst b/source/manual/logic_nodes/logic/branch.rst index 182fe0be..c5fed031 100644 --- a/source/manual/logic_nodes/logic/branch.rst +++ b/source/manual/logic_nodes/logic/branch.rst @@ -1,10 +1,10 @@ -.. _ln-branch: - .. figure:: /images/logic_nodes/logic/ln-branch.png :align: right :width: 150 :alt: Branch Node +.. _ln-branch: + ====================== Branch ====================== diff --git a/source/manual/logic_nodes/logic/bricks/controller_status.rst b/source/manual/logic_nodes/logic/bricks/controller_status.rst index 933551db..dfb32075 100644 --- a/source/manual/logic_nodes/logic/bricks/controller_status.rst +++ b/source/manual/logic_nodes/logic/bricks/controller_status.rst @@ -1,10 +1,10 @@ -.. _ln-controller_status: - .. figure:: /images/logic_nodes/logic/bricks/ln-controller_status.png :align: right :width: 215 :alt: Controller Status Node +.. _ln-controller_status: + ====================== Controller Status ====================== diff --git a/source/manual/logic_nodes/logic/bricks/get_actuator_value.rst b/source/manual/logic_nodes/logic/bricks/get_actuator_value.rst index ab6dec17..16cbc096 100644 --- a/source/manual/logic_nodes/logic/bricks/get_actuator_value.rst +++ b/source/manual/logic_nodes/logic/bricks/get_actuator_value.rst @@ -1,10 +1,10 @@ -.. _ln-get_actuator_value: - .. figure:: /images/logic_nodes/logic/bricks/ln-get_actuator_value.png :align: right :width: 215 :alt: Get Actuator Value Node +.. _ln-get_actuator_value: + ====================== Get Actuator Value ====================== diff --git a/source/manual/logic_nodes/logic/bricks/get_sensor_value.rst b/source/manual/logic_nodes/logic/bricks/get_sensor_value.rst index 7822d41a..a3d79396 100644 --- a/source/manual/logic_nodes/logic/bricks/get_sensor_value.rst +++ b/source/manual/logic_nodes/logic/bricks/get_sensor_value.rst @@ -1,10 +1,10 @@ -.. _ln-get_sensor_value: - .. figure:: /images/logic_nodes/logic/bricks/ln-get_sensor_value.png :align: right :width: 215 :alt: Get Sensor Value Node +.. _ln-get_sensor_value: + ====================== Get Sensor Value ====================== diff --git a/source/manual/logic_nodes/logic/bricks/sensor_positive.rst b/source/manual/logic_nodes/logic/bricks/sensor_positive.rst index a624e4d0..dd2e02f4 100644 --- a/source/manual/logic_nodes/logic/bricks/sensor_positive.rst +++ b/source/manual/logic_nodes/logic/bricks/sensor_positive.rst @@ -1,10 +1,10 @@ -.. _ln-sensor_positive: - .. figure:: /images/logic_nodes/logic/bricks/ln-sensor_positive.png :align: right :width: 215 :alt: Sensor Positive Node +.. _ln-sensor_positive: + ====================== Sensor Positive ====================== diff --git a/source/manual/logic_nodes/logic/bricks/set_actuator_value.rst b/source/manual/logic_nodes/logic/bricks/set_actuator_value.rst index bcfff96b..487ee8b2 100644 --- a/source/manual/logic_nodes/logic/bricks/set_actuator_value.rst +++ b/source/manual/logic_nodes/logic/bricks/set_actuator_value.rst @@ -1,10 +1,10 @@ -.. _ln-set_actuator_value: - .. figure:: /images/logic_nodes/logic/bricks/ln-set_actuator_value.png :align: right :width: 215 :alt: Set Actuator Value Node +.. _ln-set_actuator_value: + ====================== Set Actuator Value ====================== diff --git a/source/manual/logic_nodes/logic/bricks/set_sensor_value.rst b/source/manual/logic_nodes/logic/bricks/set_sensor_value.rst index 5382bb4e..a0246e94 100644 --- a/source/manual/logic_nodes/logic/bricks/set_sensor_value.rst +++ b/source/manual/logic_nodes/logic/bricks/set_sensor_value.rst @@ -1,10 +1,10 @@ -.. _ln-set_sensor_value: - .. figure:: /images/logic_nodes/logic/bricks/ln-set_sensor_value.png :align: right :width: 215 :alt: Set Sensor Value Node +.. _ln-set_sensor_value: + ====================== Set Sensor Value ====================== diff --git a/source/manual/logic_nodes/logic/gate.rst b/source/manual/logic_nodes/logic/gate.rst index 2a8625f3..ab655ffc 100644 --- a/source/manual/logic_nodes/logic/gate.rst +++ b/source/manual/logic_nodes/logic/gate.rst @@ -1,10 +1,10 @@ -.. _ln-gate: - .. figure:: /images/logic_nodes/logic/ln-gate.png :align: right :width: 215 :alt: Gate Node +.. _ln-gate: + ====================== Gate ====================== diff --git a/source/manual/logic_nodes/logic/gate_list.rst b/source/manual/logic_nodes/logic/gate_list.rst index 540ddfed..83d0a13e 100644 --- a/source/manual/logic_nodes/logic/gate_list.rst +++ b/source/manual/logic_nodes/logic/gate_list.rst @@ -1,10 +1,10 @@ -.. _ln-gate_list: - .. figure:: /images/logic_nodes/logic/ln-gate_list.png :align: right :width: 215 :alt: Gate List Node +.. _ln-gate_list: + ====================== Gate List ====================== diff --git a/source/manual/logic_nodes/logic/is_none.rst b/source/manual/logic_nodes/logic/is_none.rst index ddec604e..14e11d28 100644 --- a/source/manual/logic_nodes/logic/is_none.rst +++ b/source/manual/logic_nodes/logic/is_none.rst @@ -1,10 +1,10 @@ -.. _ln-is_none: - .. figure:: /images/logic_nodes/logic/ln-is_none.png :align: right :width: 130 :alt: Is None Node +.. _ln-is_none: + ====================== Is None ====================== diff --git a/source/manual/logic_nodes/logic/not_none.rst b/source/manual/logic_nodes/logic/not_none.rst index 47679ee2..e97848b9 100644 --- a/source/manual/logic_nodes/logic/not_none.rst +++ b/source/manual/logic_nodes/logic/not_none.rst @@ -1,10 +1,10 @@ -.. _ln-not_none: - .. figure:: /images/logic_nodes/logic/ln-not_none.png :align: right :width: 160 :alt: Not None Node +.. _ln-not_none: + ====================== Not None ====================== diff --git a/source/manual/logic_nodes/logic/trees/add_logic_tree_to_object.rst b/source/manual/logic_nodes/logic/trees/add_logic_tree_to_object.rst index 00e656f4..26eb9fb1 100644 --- a/source/manual/logic_nodes/logic/trees/add_logic_tree_to_object.rst +++ b/source/manual/logic_nodes/logic/trees/add_logic_tree_to_object.rst @@ -1,10 +1,10 @@ -.. _ln-add_logic_tree_to_object: - .. figure:: /images/logic_nodes/logic/trees/ln-add_logic_tree_to_object.png :align: right :width: 215 :alt: Add Logic Tree To Object Node +.. _ln-add_logic_tree_to_object: + ========================= Add Logic Tree To Object ========================= diff --git a/source/manual/logic_nodes/logic/trees/logic_tree_status.rst b/source/manual/logic_nodes/logic/trees/logic_tree_status.rst index 6f77da1a..131e0adc 100644 --- a/source/manual/logic_nodes/logic/trees/logic_tree_status.rst +++ b/source/manual/logic_nodes/logic/trees/logic_tree_status.rst @@ -1,10 +1,10 @@ -.. _ln-logic_tree_status: - .. figure:: /images/logic_nodes/logic/trees/ln-logic_tree_status.png :align: right :width: 215 :alt: Logic Tree Status Node +.. _ln-logic_tree_status: + ========================= Logic Tree Status ========================= diff --git a/source/manual/logic_nodes/logic/trees/run_logic_tree.rst b/source/manual/logic_nodes/logic/trees/run_logic_tree.rst index 00b89d37..0dda8d8a 100644 --- a/source/manual/logic_nodes/logic/trees/run_logic_tree.rst +++ b/source/manual/logic_nodes/logic/trees/run_logic_tree.rst @@ -1,10 +1,10 @@ -.. _ln-run_logic_tree: - .. figure:: /images/logic_nodes/logic/trees/ln-run_logic_tree.png :align: right :width: 215 :alt: Run Logic Tree Node +.. _ln-run_logic_tree: + ====================== Run Logic Tree ====================== diff --git a/source/manual/logic_nodes/logic/trees/start_logic_tree.rst b/source/manual/logic_nodes/logic/trees/start_logic_tree.rst index c8a9d9f9..15176671 100644 --- a/source/manual/logic_nodes/logic/trees/start_logic_tree.rst +++ b/source/manual/logic_nodes/logic/trees/start_logic_tree.rst @@ -1,10 +1,10 @@ -.. _ln-start_logic_tree: - .. figure:: /images/logic_nodes/logic/trees/ln-start_logic_tree.png :align: right :width: 215 :alt: Start Logic Tree Node +.. _ln-start_logic_tree: + ====================== Start Logic Tree ====================== diff --git a/source/manual/logic_nodes/logic/trees/stop_logic_tree.rst b/source/manual/logic_nodes/logic/trees/stop_logic_tree.rst index 19516818..43f3f9f8 100644 --- a/source/manual/logic_nodes/logic/trees/stop_logic_tree.rst +++ b/source/manual/logic_nodes/logic/trees/stop_logic_tree.rst @@ -1,10 +1,10 @@ -.. _ln-stop_logic_tree: - .. figure:: /images/logic_nodes/logic/trees/ln-stop_logic_tree.png :align: right :width: 215 :alt: Stop Logic Tree Node +.. _ln-stop_logic_tree: + ====================== Stop Logic Tree ====================== diff --git a/source/manual/logic_nodes/math/absolute.rst b/source/manual/logic_nodes/math/absolute.rst index 62c6f44c..b82fab84 100644 --- a/source/manual/logic_nodes/math/absolute.rst +++ b/source/manual/logic_nodes/math/absolute.rst @@ -1,10 +1,10 @@ -.. _ln-absolute: - .. figure:: /images/logic_nodes/math/ln-absolute.png :align: right :width: 215 :alt: Absolute Node +.. _ln-absolute: + ====================== Absolute ====================== diff --git a/source/manual/logic_nodes/math/clamp.rst b/source/manual/logic_nodes/math/clamp.rst index 42d8b309..994e61f0 100644 --- a/source/manual/logic_nodes/math/clamp.rst +++ b/source/manual/logic_nodes/math/clamp.rst @@ -1,10 +1,10 @@ -.. _ln-clamp: - .. figure:: /images/logic_nodes/math/ln-clamp.png :align: right :width: 215 :alt: Clamp Node +.. _ln-clamp: + ====================== Clamp ====================== diff --git a/source/manual/logic_nodes/math/compare.rst b/source/manual/logic_nodes/math/compare.rst index ead16282..0c30aa71 100644 --- a/source/manual/logic_nodes/math/compare.rst +++ b/source/manual/logic_nodes/math/compare.rst @@ -1,10 +1,10 @@ -.. _ln-compare: - .. figure:: /images/logic_nodes/math/ln-compare.png :align: right :width: 215 :alt: Compare Node +.. _ln-compare: + ====================== Compare ====================== diff --git a/source/manual/logic_nodes/math/formula.rst b/source/manual/logic_nodes/math/formula.rst index 6013a632..2538780f 100644 --- a/source/manual/logic_nodes/math/formula.rst +++ b/source/manual/logic_nodes/math/formula.rst @@ -1,10 +1,10 @@ -.. _ln-formula: - .. figure:: /images/logic_nodes/math/ln-formula.png :align: right :width: 215 :alt: Formula Node +.. _ln-formula: + ====================== Formula ====================== diff --git a/source/manual/logic_nodes/math/interpolate.rst b/source/manual/logic_nodes/math/interpolate.rst index 526017f6..94a073e4 100644 --- a/source/manual/logic_nodes/math/interpolate.rst +++ b/source/manual/logic_nodes/math/interpolate.rst @@ -1,10 +1,10 @@ -.. _ln-interpolate: - .. figure:: /images/logic_nodes/math/ln-interpolate.png :align: right :width: 215 :alt: Interpolate Node +.. _ln-interpolate: + ====================== Interpolate ====================== diff --git a/source/manual/logic_nodes/math/limit_range.rst b/source/manual/logic_nodes/math/limit_range.rst index 987b3cf7..f868d5d7 100644 --- a/source/manual/logic_nodes/math/limit_range.rst +++ b/source/manual/logic_nodes/math/limit_range.rst @@ -1,10 +1,10 @@ -.. _ln-limit_range: - .. figure:: /images/logic_nodes/math/ln-limit_range.png :align: right :width: 215 :alt: Limit Range Node +.. _ln-limit_range: + ====================== Limit Range ====================== diff --git a/source/manual/logic_nodes/math/map_range.rst b/source/manual/logic_nodes/math/map_range.rst index 6dbbd4ff..427b233f 100644 --- a/source/manual/logic_nodes/math/map_range.rst +++ b/source/manual/logic_nodes/math/map_range.rst @@ -1,10 +1,10 @@ -.. _ln-map_range: - .. figure:: /images/logic_nodes/math/ln-map_range.png :align: right :width: 215 :alt: Map Range Node +.. _ln-map_range: + ====================== Map Range ====================== diff --git a/source/manual/logic_nodes/math/math.rst b/source/manual/logic_nodes/math/math.rst index 95cfafac..9eee8008 100644 --- a/source/manual/logic_nodes/math/math.rst +++ b/source/manual/logic_nodes/math/math.rst @@ -1,10 +1,10 @@ -.. _ln-math: - .. figure:: /images/logic_nodes/math/ln-math.png :align: right :width: 215 :alt: Math Node +.. _ln-math: + ====================== Math ====================== diff --git a/source/manual/logic_nodes/math/ranged_treshold.rst b/source/manual/logic_nodes/math/ranged_treshold.rst index 4b47e61a..05d7cb64 100644 --- a/source/manual/logic_nodes/math/ranged_treshold.rst +++ b/source/manual/logic_nodes/math/ranged_treshold.rst @@ -1,10 +1,10 @@ -.. _ln-ranged_treshold: - .. figure:: /images/logic_nodes/math/ln-ranged_treshold.png :align: right :width: 215 :alt: Ranged Treshold Node +.. _ln-ranged_treshold: + ====================== Ranged Treshold ====================== diff --git a/source/manual/logic_nodes/math/treshold.rst b/source/manual/logic_nodes/math/treshold.rst index ae9114ad..efe5217a 100644 --- a/source/manual/logic_nodes/math/treshold.rst +++ b/source/manual/logic_nodes/math/treshold.rst @@ -1,10 +1,10 @@ -.. _ln-treshold: - .. figure:: /images/logic_nodes/math/ln-treshold.png :align: right :width: 215 :alt: Treshold Node +.. _ln-treshold: + ====================== Treshold ====================== diff --git a/source/manual/logic_nodes/math/vector_math.rst b/source/manual/logic_nodes/math/vector_math.rst index 1fe79430..ca438457 100644 --- a/source/manual/logic_nodes/math/vector_math.rst +++ b/source/manual/logic_nodes/math/vector_math.rst @@ -1,10 +1,10 @@ -.. _ln-vector_math: - .. figure:: /images/logic_nodes/math/ln-vector_math.png :align: right :width: 215 :alt: Vector Math Node +.. _ln-vector_math: + ====================== Vector Math ====================== diff --git a/source/manual/logic_nodes/math/vectors/absolute_vector.rst b/source/manual/logic_nodes/math/vectors/absolute_vector.rst index b58439d4..58c54a41 100644 --- a/source/manual/logic_nodes/math/vectors/absolute_vector.rst +++ b/source/manual/logic_nodes/math/vectors/absolute_vector.rst @@ -1,10 +1,10 @@ -.. _ln-absolute_vector: - .. figure:: /images/logic_nodes/math/vectors/ln-absolute_vector.png :align: right :width: 215 :alt: Absolute Vector Node +.. _ln-absolute_vector: + ====================== Absolute Vector ====================== diff --git a/source/manual/logic_nodes/math/vectors/check_angle.rst b/source/manual/logic_nodes/math/vectors/check_angle.rst index 6bb2c55f..0b004db7 100644 --- a/source/manual/logic_nodes/math/vectors/check_angle.rst +++ b/source/manual/logic_nodes/math/vectors/check_angle.rst @@ -1,10 +1,10 @@ -.. _ln-check_angle: - .. figure:: /images/logic_nodes/math/vectors/ln-check_angle.png :align: right :width: 215 :alt: Check Angle Node +.. _ln-check_angle: + ====================== Check Angle ====================== diff --git a/source/manual/logic_nodes/math/vectors/matrix_to_xyz.rst b/source/manual/logic_nodes/math/vectors/matrix_to_xyz.rst index 98ec3c13..9d7c2a4f 100644 --- a/source/manual/logic_nodes/math/vectors/matrix_to_xyz.rst +++ b/source/manual/logic_nodes/math/vectors/matrix_to_xyz.rst @@ -1,10 +1,10 @@ -.. _ln-matrix_to_xyz: - .. figure:: /images/logic_nodes/math/vectors/ln-matrix_to_xyz.png :align: right :width: 290 :alt: Matrix To XYZ Node +.. _ln-matrix_to_xyz: + ====================== Matrix To XYZ ====================== diff --git a/source/manual/logic_nodes/math/vectors/vector_rotate.rst b/source/manual/logic_nodes/math/vectors/vector_rotate.rst index e2e758f1..e89080ae 100644 --- a/source/manual/logic_nodes/math/vectors/vector_rotate.rst +++ b/source/manual/logic_nodes/math/vectors/vector_rotate.rst @@ -1,10 +1,10 @@ -.. _ln-vector_rotate: - .. figure:: /images/logic_nodes/math/vectors/ln-vector_rotate.png :align: right :width: 215 :alt: Vector Rotate Node +.. _ln-vector_rotate: + ====================== Vector Rotate ====================== diff --git a/source/manual/logic_nodes/math/vectors/xyz_to_matrix.rst b/source/manual/logic_nodes/math/vectors/xyz_to_matrix.rst index 392a4fb9..36c1ea11 100644 --- a/source/manual/logic_nodes/math/vectors/xyz_to_matrix.rst +++ b/source/manual/logic_nodes/math/vectors/xyz_to_matrix.rst @@ -1,10 +1,10 @@ -.. _ln-xyz_to_matrix: - .. figure:: /images/logic_nodes/math/vectors/ln-xyz_to_matrix.png :align: right :width: 215 :alt: XYZ To Matrix Node +.. _ln-xyz_to_matrix: + ====================== XYZ To Matrix ====================== diff --git a/source/manual/logic_nodes/math/within_range.rst b/source/manual/logic_nodes/math/within_range.rst index d6a479b7..7508a1c2 100644 --- a/source/manual/logic_nodes/math/within_range.rst +++ b/source/manual/logic_nodes/math/within_range.rst @@ -1,10 +1,10 @@ -.. _ln-within_range: - .. figure:: /images/logic_nodes/math/ln-within_range.png :align: right :width: 215 :alt: Within Range Node +.. _ln-within_range: + ====================== Within Range ====================== diff --git a/source/manual/logic_nodes/network/lan_client.rst b/source/manual/logic_nodes/network/lan_client.rst index 02748245..d206c2f8 100644 --- a/source/manual/logic_nodes/network/lan_client.rst +++ b/source/manual/logic_nodes/network/lan_client.rst @@ -1,10 +1,10 @@ -.. _ln-lan_client: - .. figure:: /images/logic_nodes/network/ln-lan_client.png :align: right :width: 215 :alt: LAN Client Node +.. _ln-lan_client: + ================= LAN Client ================= diff --git a/source/manual/logic_nodes/network/lan_server.rst b/source/manual/logic_nodes/network/lan_server.rst index 1b07c49e..2e617ab2 100644 --- a/source/manual/logic_nodes/network/lan_server.rst +++ b/source/manual/logic_nodes/network/lan_server.rst @@ -1,10 +1,10 @@ -.. _ln-lan_server: - .. figure:: /images/logic_nodes/network/ln-lan_server.png :align: right :width: 215 :alt: LAN Server Node +.. _ln-lan_server: + ================= LAN Server ================= diff --git a/source/manual/logic_nodes/network/rebuild_data.rst b/source/manual/logic_nodes/network/rebuild_data.rst index a726ecee..dfeea0b6 100644 --- a/source/manual/logic_nodes/network/rebuild_data.rst +++ b/source/manual/logic_nodes/network/rebuild_data.rst @@ -1,10 +1,10 @@ -.. _ln-rebuild_data: - .. figure:: /images/logic_nodes/network/ln-rebuild_data.png :align: right :width: 215 :alt: Rebuild Data Node +.. _ln-rebuild_data: + ================= Rebuild Data ================= diff --git a/source/manual/logic_nodes/network/send_data.rst b/source/manual/logic_nodes/network/send_data.rst index 9010df45..a312c984 100644 --- a/source/manual/logic_nodes/network/send_data.rst +++ b/source/manual/logic_nodes/network/send_data.rst @@ -1,10 +1,10 @@ -.. _ln-send_data: - .. figure:: /images/logic_nodes/network/ln-send_data.png :align: right :width: 215 :alt: Send Data Node +.. _ln-send_data: + ================= Send Data ================= diff --git a/source/manual/logic_nodes/network/serialize_data.rst b/source/manual/logic_nodes/network/serialize_data.rst index ce1f1b8a..4aefe63f 100644 --- a/source/manual/logic_nodes/network/serialize_data.rst +++ b/source/manual/logic_nodes/network/serialize_data.rst @@ -1,10 +1,10 @@ -.. _ln-serialize_data: - .. figure:: /images/logic_nodes/network/ln-serialize_data.png :align: right :width: 215 :alt: Serialize Data Node +.. _ln-serialize_data: + ================= Serialize Data ================= diff --git a/source/manual/logic_nodes/nodes/geometry/get_node_value.rst b/source/manual/logic_nodes/nodes/geometry/get_node_value.rst index e1d6c33b..12f4c88a 100644 --- a/source/manual/logic_nodes/nodes/geometry/get_node_value.rst +++ b/source/manual/logic_nodes/nodes/geometry/get_node_value.rst @@ -1,10 +1,10 @@ -.. _ln-geo-get_node_value: - .. figure:: /images/logic_nodes/nodes/geometry/ln-get_node_value.png :align: right :width: 215 :alt: Get Node Value Node +.. _ln-geo-get_node_value: + ================ Get Node Value ================ diff --git a/source/manual/logic_nodes/nodes/geometry/get_socket_value.rst b/source/manual/logic_nodes/nodes/geometry/get_socket_value.rst index c4517662..fb8ab034 100644 --- a/source/manual/logic_nodes/nodes/geometry/get_socket_value.rst +++ b/source/manual/logic_nodes/nodes/geometry/get_socket_value.rst @@ -1,10 +1,10 @@ -.. _ln-geo-get_socket_value: - .. figure:: /images/logic_nodes/nodes/geometry/ln-get_socket_value.png :align: right :width: 215 :alt: Get Socket Value Node +.. _ln-geo-get_socket_value: + ================ Get Socket Value ================ diff --git a/source/manual/logic_nodes/nodes/geometry/set_node_value.rst b/source/manual/logic_nodes/nodes/geometry/set_node_value.rst index da6c1de7..05cd598a 100644 --- a/source/manual/logic_nodes/nodes/geometry/set_node_value.rst +++ b/source/manual/logic_nodes/nodes/geometry/set_node_value.rst @@ -1,10 +1,10 @@ -.. _ln-geo-set_node_value: - .. figure:: /images/logic_nodes/nodes/geometry/ln-set_node_value.png :align: right :width: 215 :alt: Set Node Value Node +.. _ln-geo-set_node_value: + ================ Set Node Value ================ diff --git a/source/manual/logic_nodes/nodes/geometry/set_socket.rst b/source/manual/logic_nodes/nodes/geometry/set_socket.rst index 1fdcebdf..075d0634 100644 --- a/source/manual/logic_nodes/nodes/geometry/set_socket.rst +++ b/source/manual/logic_nodes/nodes/geometry/set_socket.rst @@ -1,10 +1,10 @@ -.. _ln-geo-set_socket: - .. figure:: /images/logic_nodes/nodes/geometry/ln-set_socket.png :align: right :width: 215 :alt: Set Socket Node +.. _ln-geo-set_socket: + ================ Set Socket ================ diff --git a/source/manual/logic_nodes/nodes/groups/get_node_value.rst b/source/manual/logic_nodes/nodes/groups/get_node_value.rst index 9703cfa4..34fb7966 100644 --- a/source/manual/logic_nodes/nodes/groups/get_node_value.rst +++ b/source/manual/logic_nodes/nodes/groups/get_node_value.rst @@ -1,10 +1,10 @@ -.. _ln-gro-get_node_value: - .. figure:: /images/logic_nodes/nodes/groups/ln-get_node_value.png :align: right :width: 215 :alt: Get Node Value Node +.. _ln-gro-get_node_value: + ================ Get Node Value ================ diff --git a/source/manual/logic_nodes/nodes/groups/get_socket_value.rst b/source/manual/logic_nodes/nodes/groups/get_socket_value.rst index 8cf33ac2..a0c32925 100644 --- a/source/manual/logic_nodes/nodes/groups/get_socket_value.rst +++ b/source/manual/logic_nodes/nodes/groups/get_socket_value.rst @@ -1,10 +1,10 @@ -.. _ln-gro-get_socket_value: - .. figure:: /images/logic_nodes/nodes/groups/ln-get_socket_value.png :align: right :width: 215 :alt: Get Socket Value Node +.. _ln-gro-get_socket_value: + ================ Get Socket Value ================ diff --git a/source/manual/logic_nodes/nodes/groups/set_node_value.rst b/source/manual/logic_nodes/nodes/groups/set_node_value.rst index b3ab1782..441e4601 100644 --- a/source/manual/logic_nodes/nodes/groups/set_node_value.rst +++ b/source/manual/logic_nodes/nodes/groups/set_node_value.rst @@ -1,10 +1,10 @@ -.. _ln-gro-set_node_value: - .. figure:: /images/logic_nodes/nodes/groups/ln-set_node_value.png :align: right :width: 215 :alt: Set Node Value Node +.. _ln-gro-set_node_value: + ================ Set Node Value ================ diff --git a/source/manual/logic_nodes/nodes/groups/set_socket.rst b/source/manual/logic_nodes/nodes/groups/set_socket.rst index 92672c45..4a718b8c 100644 --- a/source/manual/logic_nodes/nodes/groups/set_socket.rst +++ b/source/manual/logic_nodes/nodes/groups/set_socket.rst @@ -1,10 +1,10 @@ -.. _ln-gro-set_socket: - .. figure:: /images/logic_nodes/nodes/groups/ln-set_socket.png :align: right :width: 215 :alt: Set Socket Node +.. _ln-gro-set_socket: + ================ Set Socket ================ diff --git a/source/manual/logic_nodes/nodes/materials/get_node.rst b/source/manual/logic_nodes/nodes/materials/get_node.rst index 533f495c..74e29092 100644 --- a/source/manual/logic_nodes/nodes/materials/get_node.rst +++ b/source/manual/logic_nodes/nodes/materials/get_node.rst @@ -1,10 +1,10 @@ -.. _ln-mat-get_node: - .. figure:: /images/logic_nodes/nodes/materials/ln-get_node.png :align: right :width: 215 :alt: Get Node Node +.. _ln-mat-get_node: + =============== Get Node =============== diff --git a/source/manual/logic_nodes/nodes/materials/get_node_value.rst b/source/manual/logic_nodes/nodes/materials/get_node_value.rst index 96997136..5a0382bc 100644 --- a/source/manual/logic_nodes/nodes/materials/get_node_value.rst +++ b/source/manual/logic_nodes/nodes/materials/get_node_value.rst @@ -1,10 +1,10 @@ -.. _ln-mat-get_node_value: - .. figure:: /images/logic_nodes/nodes/materials/ln-get_node_value.png :align: right :width: 215 :alt: Get Node Value Node +.. _ln-mat-get_node_value: + ================ Get Node Value ================ diff --git a/source/manual/logic_nodes/nodes/materials/get_socket_value.rst b/source/manual/logic_nodes/nodes/materials/get_socket_value.rst index 74576f02..a85b436f 100644 --- a/source/manual/logic_nodes/nodes/materials/get_socket_value.rst +++ b/source/manual/logic_nodes/nodes/materials/get_socket_value.rst @@ -1,10 +1,10 @@ -.. _ln-mat-get_socket_value: - .. figure:: /images/logic_nodes/nodes/materials/ln-get_socket_value.png :align: right :width: 215 :alt: Get Socket Value Node +.. _ln-mat-get_socket_value: + ================ Get Socket Value ================ diff --git a/source/manual/logic_nodes/nodes/materials/play_sequence.rst b/source/manual/logic_nodes/nodes/materials/play_sequence.rst index c5d3cba7..6b9a0725 100644 --- a/source/manual/logic_nodes/nodes/materials/play_sequence.rst +++ b/source/manual/logic_nodes/nodes/materials/play_sequence.rst @@ -1,10 +1,10 @@ -.. _ln-mat-play_sequence: - .. figure:: /images/logic_nodes/nodes/materials/ln-play_sequence.png :align: right :width: 215 :alt: Play Sequence Node +.. _ln-mat-play_sequence: + =============== Play Sequence =============== diff --git a/source/manual/logic_nodes/nodes/materials/set_node_value.rst b/source/manual/logic_nodes/nodes/materials/set_node_value.rst index 3d530578..775fd646 100644 --- a/source/manual/logic_nodes/nodes/materials/set_node_value.rst +++ b/source/manual/logic_nodes/nodes/materials/set_node_value.rst @@ -1,10 +1,10 @@ -.. _ln-mat-set_node_value: - .. figure:: /images/logic_nodes/nodes/materials/ln-set_node_value.png :align: right :width: 215 :alt: Set Node Value Node +.. _ln-mat-set_node_value: + ================ Set Node Value ================ diff --git a/source/manual/logic_nodes/nodes/materials/set_socket.rst b/source/manual/logic_nodes/nodes/materials/set_socket.rst index f1e19d63..63857da1 100644 --- a/source/manual/logic_nodes/nodes/materials/set_socket.rst +++ b/source/manual/logic_nodes/nodes/materials/set_socket.rst @@ -1,10 +1,10 @@ -.. _ln-mat-set_socket: - .. figure:: /images/logic_nodes/nodes/materials/ln-set_socket.png :align: right :width: 215 :alt: Set Socket Node +.. _ln-mat-set_socket: + ================ Set Socket ================ diff --git a/source/manual/logic_nodes/objects/add_object.rst b/source/manual/logic_nodes/objects/add_object.rst index 60659354..4438fb62 100644 --- a/source/manual/logic_nodes/objects/add_object.rst +++ b/source/manual/logic_nodes/objects/add_object.rst @@ -1,10 +1,10 @@ -.. _ln-add_object: - .. figure:: /images/logic_nodes/objects/ln-add_object.png :align: right :width: 215 :alt: Add Object Node +.. _ln-add_object: + ====================== Add Object ====================== diff --git a/source/manual/logic_nodes/objects/curves/get_curve_points.rst b/source/manual/logic_nodes/objects/curves/get_curve_points.rst index b4c08f1f..0862cfe5 100644 --- a/source/manual/logic_nodes/objects/curves/get_curve_points.rst +++ b/source/manual/logic_nodes/objects/curves/get_curve_points.rst @@ -1,10 +1,10 @@ -.. _ln-get_curve_points: - .. figure:: /images/logic_nodes/objects/curves/ln-get_curve_points.png :align: right :width: 215 :alt: Get Curve Points Node +.. _ln-get_curve_points: + ====================== Get Curve Points ====================== diff --git a/source/manual/logic_nodes/objects/curves/set_curve_points.rst b/source/manual/logic_nodes/objects/curves/set_curve_points.rst index 07e704bc..a06f69b7 100644 --- a/source/manual/logic_nodes/objects/curves/set_curve_points.rst +++ b/source/manual/logic_nodes/objects/curves/set_curve_points.rst @@ -1,10 +1,10 @@ -.. _ln-set_curve_points: - .. figure:: /images/logic_nodes/objects/curves/ln-set_curve_points.png :align: right :width: 215 :alt: Set Curve Points Node +.. _ln-set_curve_points: + ====================== Set Curve Points ====================== diff --git a/source/manual/logic_nodes/objects/get_attribute/get_color.rst b/source/manual/logic_nodes/objects/get_attribute/get_color.rst index c3d02bd4..f3da8b61 100644 --- a/source/manual/logic_nodes/objects/get_attribute/get_color.rst +++ b/source/manual/logic_nodes/objects/get_attribute/get_color.rst @@ -1,10 +1,10 @@ -.. _ln-get_color: - -.. figure:: /images/logic_nodes/objects/get_attribute/ln-get_color.png +.. figure:: /images/logic_nodes/objects/get_attribute/ln-color.png :align: right :width: 215 :alt: Get Color Node +.. _ln-get_color: + ============================= Get Color ============================= @@ -12,21 +12,17 @@ Get Color Parameters ++++++++++ -prop - value +Get Attribute + Color todo Inputs ++++++ -prop - value +Object + todo Outputs +++++++ -prop - value - -Example -+++++++ - +Color + todo diff --git a/source/manual/logic_nodes/objects/get_attribute/get_local_angular_velocity.rst b/source/manual/logic_nodes/objects/get_attribute/get_local_angular_velocity.rst index 7f486864..a55d96ef 100644 --- a/source/manual/logic_nodes/objects/get_attribute/get_local_angular_velocity.rst +++ b/source/manual/logic_nodes/objects/get_attribute/get_local_angular_velocity.rst @@ -1,10 +1,10 @@ -.. _ln-get_local_angular_velocity: - -.. figure:: /images/logic_nodes/objects/get_attribute/ln-get_local_angular_velocity.png +.. figure:: /images/logic_nodes/objects/get_attribute/ln-local_angular_velocity.png :align: right :width: 215 :alt: Get Local Angular Velocity Node +.. _ln-get_local_angular_velocity: + ============================= Get Local Angular Velocity ============================= @@ -12,21 +12,17 @@ Get Local Angular Velocity Parameters ++++++++++ -prop - value +Get Attribute + Local Angular Velocity Inputs ++++++ -prop - value +Object + todo Outputs +++++++ -prop - value - -Example -+++++++ - +Local Angular Velocity + todo diff --git a/source/manual/logic_nodes/objects/get_attribute/get_local_linear_velocity.rst b/source/manual/logic_nodes/objects/get_attribute/get_local_linear_velocity.rst index 7a1b7166..81466943 100644 --- a/source/manual/logic_nodes/objects/get_attribute/get_local_linear_velocity.rst +++ b/source/manual/logic_nodes/objects/get_attribute/get_local_linear_velocity.rst @@ -1,10 +1,10 @@ -.. _ln-get_local_linear_velocity: - -.. figure:: /images/logic_nodes/objects/get_attribute/ln-get_local_linear_velocity.png +.. figure:: /images/logic_nodes/objects/get_attribute/ln-local_linear_velocity.png :align: right :width: 215 :alt: Get Local Linear Velocity Node +.. _ln-get_local_linear_velocity: + ============================= Get Local Linear Velocity ============================= @@ -12,21 +12,17 @@ Get Local Linear Velocity Parameters ++++++++++ -prop - value +Get Attribute + Local Linear Velocity todo Inputs ++++++ -prop - value +Object + todo Outputs +++++++ -prop - value - -Example -+++++++ - +Local Linear Velocity + todo diff --git a/source/manual/logic_nodes/objects/get_attribute/get_local_orientation.rst b/source/manual/logic_nodes/objects/get_attribute/get_local_orientation.rst index cb9ca7cc..88b58fa7 100644 --- a/source/manual/logic_nodes/objects/get_attribute/get_local_orientation.rst +++ b/source/manual/logic_nodes/objects/get_attribute/get_local_orientation.rst @@ -1,10 +1,10 @@ -.. _ln-get_local_orientation: - -.. figure:: /images/logic_nodes/objects/get_attribute/ln-get_local_orientation.png +.. figure:: /images/logic_nodes/objects/get_attribute/ln-local_orientation.png :align: right :width: 215 :alt: Get Local Orientation Node +.. _ln-get_local_orientation: + ============================= Get Local Orientation ============================= @@ -12,21 +12,17 @@ Get Local Orientation Parameters ++++++++++ -prop - value +Get Attribute + todo Inputs ++++++ -prop - value +Object + todo Outputs +++++++ -prop - value - -Example -+++++++ - +Orientation + todo diff --git a/source/manual/logic_nodes/objects/get_attribute/get_local_position.rst b/source/manual/logic_nodes/objects/get_attribute/get_local_position.rst index 1f42c861..ed6b1f35 100644 --- a/source/manual/logic_nodes/objects/get_attribute/get_local_position.rst +++ b/source/manual/logic_nodes/objects/get_attribute/get_local_position.rst @@ -1,10 +1,10 @@ -.. _ln-get_local_position: - -.. figure:: /images/logic_nodes/objects/get_attribute/ln-get_local_position.png +.. figure:: /images/logic_nodes/objects/get_attribute/ln-local_position.png :align: right :width: 215 :alt: Get Local Position Node +.. _ln-get_local_position: + ============================= Get Local Position ============================= @@ -12,21 +12,17 @@ Get Local Position Parameters ++++++++++ -prop - value +Get Attribute + Local Position todo Inputs ++++++ -prop - value +Object + todo Outputs +++++++ -prop - value - -Example -+++++++ - +Local Position + todo diff --git a/source/manual/logic_nodes/objects/get_attribute/get_local_scale.rst b/source/manual/logic_nodes/objects/get_attribute/get_local_scale.rst new file mode 100644 index 00000000..f4b39f8e --- /dev/null +++ b/source/manual/logic_nodes/objects/get_attribute/get_local_scale.rst @@ -0,0 +1,28 @@ +.. figure:: /images/logic_nodes/objects/get_attribute/ln-local_scale.png + :align: right + :width: 215 + :alt: Get Local Scale Node + +.. _ln-get_local_scale: + +============================= +Get Local Scale +============================= + +Parameters +++++++++++ + +Get Attribute + Local Scale todo + +Inputs +++++++ + +Object + todo + +Outputs ++++++++ + +Local Scale + todo diff --git a/source/manual/logic_nodes/objects/get_attribute/get_local_transform.rst b/source/manual/logic_nodes/objects/get_attribute/get_local_transform.rst index b1587d88..04359a21 100644 --- a/source/manual/logic_nodes/objects/get_attribute/get_local_transform.rst +++ b/source/manual/logic_nodes/objects/get_attribute/get_local_transform.rst @@ -1,10 +1,10 @@ -.. _ln-get_local_transform: - -.. figure:: /images/logic_nodes/objects/get_attribute/ln-get_local_transform.png +.. figure:: /images/logic_nodes/objects/get_attribute/ln-local_transform.png :align: right :width: 215 :alt: Get Local Transform Node +.. _ln-get_local_transform: + ============================= Get Local Transform ============================= @@ -12,21 +12,17 @@ Get Local Transform Parameters ++++++++++ -prop - value +Get Attribute + Local Transform todo Inputs ++++++ -prop - value +Object + todo Outputs +++++++ -prop - value - -Example -+++++++ - +Value + todo diff --git a/source/manual/logic_nodes/objects/get_attribute/get_name.rst b/source/manual/logic_nodes/objects/get_attribute/get_name.rst index 543ae342..1107ca75 100644 --- a/source/manual/logic_nodes/objects/get_attribute/get_name.rst +++ b/source/manual/logic_nodes/objects/get_attribute/get_name.rst @@ -1,10 +1,10 @@ -.. _ln-get_name: - -.. figure:: /images/logic_nodes/objects/get_attribute/ln-get_name.png +.. figure:: /images/logic_nodes/objects/get_attribute/ln-name.png :align: right :width: 215 :alt: Get Name Node +.. _ln-get_name: + ============================= Get Name ============================= @@ -12,21 +12,17 @@ Get Name Parameters ++++++++++ -prop - value +Get Attribute + Name todo Inputs ++++++ -prop - value +Object + todo Outputs +++++++ -prop - value - -Example -+++++++ - +Value + todo diff --git a/source/manual/logic_nodes/objects/get_attribute/get_scale.rst b/source/manual/logic_nodes/objects/get_attribute/get_scale.rst index 8583ae21..219527ee 100644 --- a/source/manual/logic_nodes/objects/get_attribute/get_scale.rst +++ b/source/manual/logic_nodes/objects/get_attribute/get_scale.rst @@ -1,10 +1,10 @@ -.. _ln-get_scale: - .. figure:: /images/logic_nodes/objects/get_attribute/ln-get_scale.png :align: right :width: 215 :alt: Get Scale Node + .. _ln-get_scale: + ============================= Get Scale ============================= diff --git a/source/manual/logic_nodes/objects/get_attribute/get_visibility.rst b/source/manual/logic_nodes/objects/get_attribute/get_visibility.rst new file mode 100644 index 00000000..dc5706ef --- /dev/null +++ b/source/manual/logic_nodes/objects/get_attribute/get_visibility.rst @@ -0,0 +1,28 @@ +.. figure:: /images/logic_nodes/objects/get_attribute/ln-visibility.png + :align: right + :width: 215 + :alt: Get Visibility Node + +.. _ln-get_visibility: + +============================= +Get Visibility +============================= + +Parameters +++++++++++ + +Get Attribute + Visibility todo + +Inputs +++++++ + +Object + todo + +Outputs ++++++++ + +Visible + todo diff --git a/source/manual/logic_nodes/objects/get_attribute/get_world_angular_velocity.rst b/source/manual/logic_nodes/objects/get_attribute/get_world_angular_velocity.rst index 2c1b8b4c..c1665d71 100644 --- a/source/manual/logic_nodes/objects/get_attribute/get_world_angular_velocity.rst +++ b/source/manual/logic_nodes/objects/get_attribute/get_world_angular_velocity.rst @@ -1,10 +1,10 @@ -.. _ln-get_world_angular_velocity: - -.. figure:: /images/logic_nodes/objects/get_attribute/ln-get_world_angular_velocity.png +.. figure:: /images/logic_nodes/objects/get_attribute/ln-world_angular_velocity.png :align: right :width: 215 :alt: Get World Angular Velocity Node +.. _ln-get_world_angular_velocity: + ============================= Get World Angular Velocity ============================= @@ -12,21 +12,17 @@ Get World Angular Velocity Parameters ++++++++++ -prop - value +Get Attribute + World Angular Velocity todo. Inputs ++++++ -prop - value +Object + todo Outputs +++++++ -prop - value - -Example -+++++++ - +World Angular Velocity + todo diff --git a/source/manual/logic_nodes/objects/get_attribute/get_world_linear_velocity.rst b/source/manual/logic_nodes/objects/get_attribute/get_world_linear_velocity.rst index 8bea9964..81d2309e 100644 --- a/source/manual/logic_nodes/objects/get_attribute/get_world_linear_velocity.rst +++ b/source/manual/logic_nodes/objects/get_attribute/get_world_linear_velocity.rst @@ -1,10 +1,10 @@ -.. _ln-get_world_linear_velocity: - -.. figure:: /images/logic_nodes/objects/get_attribute/ln-get_world_linear_velocity.png +.. figure:: /images/logic_nodes/objects/get_attribute/ln-world_linear_velocity.png :align: right :width: 215 :alt: Get World Linear Velocity Node +.. _ln-get_world_linear_velocity: + ============================= Get World Linear Velocity ============================= @@ -12,21 +12,17 @@ Get World Linear Velocity Parameters ++++++++++ -prop - value +Get Attribute + World Linear Velocity todo. Inputs ++++++ -prop - value +Object + Object todo. Outputs +++++++ -prop - value - -Example -+++++++ - +World Linear Velocity + todo diff --git a/source/manual/logic_nodes/objects/get_attribute/get_world_orientation.rst b/source/manual/logic_nodes/objects/get_attribute/get_world_orientation.rst index cea0a60a..81a5e0d7 100644 --- a/source/manual/logic_nodes/objects/get_attribute/get_world_orientation.rst +++ b/source/manual/logic_nodes/objects/get_attribute/get_world_orientation.rst @@ -1,10 +1,10 @@ -.. _ln-get_world_orientation: - -.. figure:: /images/logic_nodes/objects/get_attribute/ln-get_world_orientation.png +.. figure:: /images/logic_nodes/objects/get_attribute/ln-world_orientation.png :align: right :width: 215 :alt: Get World Orientation Node +.. _ln-get_world_orientation: + ======================= Get World Orientation ======================= @@ -12,21 +12,17 @@ Get World Orientation Parameters ++++++++++ -prop - value +Get Attribute + World Orientation todo. Inputs ++++++ -prop - value +Object + todo Outputs +++++++ -prop - value - -Example -+++++++ - +Orientation + World Orientation todo diff --git a/source/manual/logic_nodes/objects/get_attribute/get_world_position.rst b/source/manual/logic_nodes/objects/get_attribute/get_world_position.rst index 119fb2e0..27c1a8cd 100644 --- a/source/manual/logic_nodes/objects/get_attribute/get_world_position.rst +++ b/source/manual/logic_nodes/objects/get_attribute/get_world_position.rst @@ -1,10 +1,10 @@ -.. _ln-get_world_position: - -.. figure:: /images/logic_nodes/objects/get_attribute/ln-get_world_position.png +.. figure:: /images/logic_nodes/objects/get_attribute/ln-world_position.png :align: right :width: 215 :alt: Get World Position Node +.. _ln-get_world_position: + ======================= Get World Position ======================= @@ -12,21 +12,17 @@ Get World Position Parameters ++++++++++ -prop - value +Get Attribute + World Position todo. Inputs ++++++ -prop - value +Object + todo Outputs +++++++ -prop - value - -Example -+++++++ - +World Position + todo diff --git a/source/manual/logic_nodes/objects/get_attribute/get_world_scale.rst b/source/manual/logic_nodes/objects/get_attribute/get_world_scale.rst new file mode 100644 index 00000000..1587773a --- /dev/null +++ b/source/manual/logic_nodes/objects/get_attribute/get_world_scale.rst @@ -0,0 +1,28 @@ +.. figure:: /images/logic_nodes/objects/get_attribute/ln-world_scale.png + :align: right + :width: 215 + :alt: Get World Scale Node + +.. _ln-get_world_scale: + +============================= +Get World Scale +============================= + +Parameters +++++++++++ + +Get Attribute + World Scale todo + +Inputs +++++++ + +Object + todo + +Outputs ++++++++ + +World Scale + todo diff --git a/source/manual/logic_nodes/objects/get_attribute/get_world_transform.rst b/source/manual/logic_nodes/objects/get_attribute/get_world_transform.rst index decf8734..aed13ae5 100644 --- a/source/manual/logic_nodes/objects/get_attribute/get_world_transform.rst +++ b/source/manual/logic_nodes/objects/get_attribute/get_world_transform.rst @@ -1,10 +1,10 @@ -.. _ln-get_world_transform: - -.. figure:: /images/logic_nodes/objects/get_attribute/ln-get_world_transform.png +.. figure:: /images/logic_nodes/objects/get_attribute/ln-world_transform.png :align: right :width: 215 :alt: Get World Transform Node +.. _ln-get_world_transform: + ============================= Get World Transform ============================= @@ -12,21 +12,17 @@ Get World Transform Parameters ++++++++++ -prop - value +Get Attribute + World Transform todo. Inputs ++++++ -prop - value +Object + todo Outputs +++++++ -prop - value - -Example -+++++++ - +Value + World Transform diff --git a/source/manual/logic_nodes/objects/get_attribute/index.rst b/source/manual/logic_nodes/objects/get_attribute/index.rst index 61a852b4..2f2c9b16 100644 --- a/source/manual/logic_nodes/objects/get_attribute/index.rst +++ b/source/manual/logic_nodes/objects/get_attribute/index.rst @@ -17,6 +17,8 @@ Get Attribute get_local_linear_velocity get_local_angular_velocity get_local_transform + get_world_scale + get_local_scale get_name - get_scale get_color + get_visibility diff --git a/source/manual/logic_nodes/objects/get_child_by_index.rst b/source/manual/logic_nodes/objects/get_child_by_index.rst index e6998383..ce2deb9c 100644 --- a/source/manual/logic_nodes/objects/get_child_by_index.rst +++ b/source/manual/logic_nodes/objects/get_child_by_index.rst @@ -1,10 +1,10 @@ -.. _ln-get_child_by_index: - .. figure:: /images/logic_nodes/objects/ln-get_child_by_index.png :align: right :width: 215 :alt: Get Child By Index Node +.. _ln-get_child_by_index: + ====================== Get Child By Index ====================== diff --git a/source/manual/logic_nodes/objects/get_child_by_name.rst b/source/manual/logic_nodes/objects/get_child_by_name.rst index 1a7aa40b..38690485 100644 --- a/source/manual/logic_nodes/objects/get_child_by_name.rst +++ b/source/manual/logic_nodes/objects/get_child_by_name.rst @@ -1,10 +1,10 @@ -.. _ln-get_child_by_name: - .. figure:: /images/logic_nodes/objects/ln-get_child_by_name.png :align: right :width: 215 :alt: Get Child By Name Node +.. _ln-get_child_by_name: + ====================== Get Child By Name ====================== diff --git a/source/manual/logic_nodes/objects/get_object.rst b/source/manual/logic_nodes/objects/get_object.rst index 8c861c9f..62fac34a 100644 --- a/source/manual/logic_nodes/objects/get_object.rst +++ b/source/manual/logic_nodes/objects/get_object.rst @@ -1,10 +1,10 @@ -.. _ln-get_object: - .. figure:: /images/logic_nodes/objects/ln-get_object.png :align: right :width: 215 :alt: Get Object Node +.. _ln-get_object: + ====================== Get Object ====================== diff --git a/source/manual/logic_nodes/objects/get_parent.rst b/source/manual/logic_nodes/objects/get_parent.rst index 4635a843..ac4561e2 100644 --- a/source/manual/logic_nodes/objects/get_parent.rst +++ b/source/manual/logic_nodes/objects/get_parent.rst @@ -1,10 +1,10 @@ -.. _ln-get_parent: - .. figure:: /images/logic_nodes/objects/ln-get_parent.png :align: right :width: 215 :alt: Get Parent Node +.. _ln-get_parent: + ====================== Get Parent ====================== diff --git a/source/manual/logic_nodes/objects/object_data/get_axis_vector.rst b/source/manual/logic_nodes/objects/object_data/get_axis_vector.rst index 3c211005..c7457980 100644 --- a/source/manual/logic_nodes/objects/object_data/get_axis_vector.rst +++ b/source/manual/logic_nodes/objects/object_data/get_axis_vector.rst @@ -1,10 +1,10 @@ -.. _ln-get_axis_vector: - .. figure:: /images/logic_nodes/objects/object_data/ln-get_axis_vector.png :align: right :width: 215 :alt: Get Axis Vector Node +.. _ln-get_axis_vector: + ====================== Get Axis Vector ====================== diff --git a/source/manual/logic_nodes/objects/object_data/get_object_id.rst b/source/manual/logic_nodes/objects/object_data/get_object_id.rst index af80e940..4475f7a8 100644 --- a/source/manual/logic_nodes/objects/object_data/get_object_id.rst +++ b/source/manual/logic_nodes/objects/object_data/get_object_id.rst @@ -1,10 +1,10 @@ -.. _ln-get_object_id: - .. figure:: /images/logic_nodes/objects/object_data/ln-get_object_id.png :align: right :width: 215 :alt: Get Object ID Node +.. _ln-get_object_id: + ====================== Get Object ID ====================== diff --git a/source/manual/logic_nodes/objects/object_data/get_vertices.rst b/source/manual/logic_nodes/objects/object_data/get_vertices.rst index 7668293f..12456e0f 100644 --- a/source/manual/logic_nodes/objects/object_data/get_vertices.rst +++ b/source/manual/logic_nodes/objects/object_data/get_vertices.rst @@ -1,10 +1,10 @@ -.. _ln-get_vertices: - .. figure:: /images/logic_nodes/objects/object_data/ln_get_vertices.png :align: right :width: 215 :alt: Get Vertices Node +.. _ln-get_vertices: + ====================== Get Vertices ====================== diff --git a/source/manual/logic_nodes/objects/object_data/replace_mesh.rst b/source/manual/logic_nodes/objects/object_data/replace_mesh.rst index c0d677af..e04b5f07 100644 --- a/source/manual/logic_nodes/objects/object_data/replace_mesh.rst +++ b/source/manual/logic_nodes/objects/object_data/replace_mesh.rst @@ -1,10 +1,10 @@ -.. _ln-replace_mesh: - .. figure:: /images/logic_nodes/objects/object_data/ln-replace_mesh.png :align: right :width: 215 :alt: Replace Mesh Node +.. _ln-replace_mesh: + ====================== Replace Mesh ====================== diff --git a/source/manual/logic_nodes/objects/object_data/set_constraint_attribute.rst b/source/manual/logic_nodes/objects/object_data/set_constraint_attribute.rst index 91a7bfb8..94d06ae8 100644 --- a/source/manual/logic_nodes/objects/object_data/set_constraint_attribute.rst +++ b/source/manual/logic_nodes/objects/object_data/set_constraint_attribute.rst @@ -1,10 +1,10 @@ -.. _ln-set_constraint_attribute: - .. figure:: /images/logic_nodes/objects/object_data/ln-set_constraint_attribute.png :align: right :width: 215 :alt: Set Constraint Attribute Node +.. _ln-set_constraint_attribute: + ======================== Set Constraint Attribute ======================== diff --git a/source/manual/logic_nodes/objects/remove_object.rst b/source/manual/logic_nodes/objects/remove_object.rst index f4f1a258..31da0b89 100644 --- a/source/manual/logic_nodes/objects/remove_object.rst +++ b/source/manual/logic_nodes/objects/remove_object.rst @@ -1,10 +1,10 @@ -.. _ln-remove_object: - .. figure:: /images/logic_nodes/objects/ln-remove_object.png :align: right :width: 215 :alt: Remove Object Node +.. _ln-remove_object: + ====================== Remove Object ====================== diff --git a/source/manual/logic_nodes/objects/remove_parent.rst b/source/manual/logic_nodes/objects/remove_parent.rst index 23d976ef..c0c1972e 100644 --- a/source/manual/logic_nodes/objects/remove_parent.rst +++ b/source/manual/logic_nodes/objects/remove_parent.rst @@ -1,10 +1,10 @@ -.. _ln-remove_parent: - .. figure:: /images/logic_nodes/objects/ln-remove_parent.png :align: right :width: 215 :alt: Remove Parent Node +.. _ln-remove_parent: + ====================== Remove Parent ====================== diff --git a/source/manual/logic_nodes/objects/send_message.rst b/source/manual/logic_nodes/objects/send_message.rst index ee79155a..fe3e898f 100644 --- a/source/manual/logic_nodes/objects/send_message.rst +++ b/source/manual/logic_nodes/objects/send_message.rst @@ -1,10 +1,10 @@ -.. _ln-send_message: - .. figure:: /images/logic_nodes/objects/ln-send_message.png :align: right :width: 215 :alt: Send Message Node +.. _ln-send_message: + ====================== Send Message ====================== diff --git a/source/manual/logic_nodes/objects/set_attribute/index.rst b/source/manual/logic_nodes/objects/set_attribute/index.rst index 47a67de9..566060f9 100644 --- a/source/manual/logic_nodes/objects/set_attribute/index.rst +++ b/source/manual/logic_nodes/objects/set_attribute/index.rst @@ -17,6 +17,5 @@ Set Attribute set_local_linear_velocity set_local_angular_velocity set_local_transform - set_name - set_scale + set_world_scale set_color diff --git a/source/manual/logic_nodes/objects/set_attribute/set_color.rst b/source/manual/logic_nodes/objects/set_attribute/set_color.rst index cbfd7591..cb9a5bfa 100644 --- a/source/manual/logic_nodes/objects/set_attribute/set_color.rst +++ b/source/manual/logic_nodes/objects/set_attribute/set_color.rst @@ -1,10 +1,10 @@ -.. _ln-set_color: - -.. figure:: /images/logic_nodes/objects/set_attribute/ln-set_color.png +.. figure:: /images/logic_nodes/objects/set_attribute/ln-color.png :align: right :width: 215 :alt: Set Color Node +.. _ln-set_color: + ============================= Set Color ============================= @@ -12,21 +12,26 @@ Set Color Parameters ++++++++++ -prop - value +Set Attribute + Color todo Inputs ++++++ -prop - value +Condition + Condition to be fulfilled for node to activate. -Outputs -+++++++ +XYZ + todo -prop - value +Object + todo -Example +Color + todo + +Outputs +++++++ +Done + *True* if node performed successfully, else *False*. diff --git a/source/manual/logic_nodes/objects/set_attribute/set_local_angular_velocity.rst b/source/manual/logic_nodes/objects/set_attribute/set_local_angular_velocity.rst index 72f93873..6c5278da 100644 --- a/source/manual/logic_nodes/objects/set_attribute/set_local_angular_velocity.rst +++ b/source/manual/logic_nodes/objects/set_attribute/set_local_angular_velocity.rst @@ -1,10 +1,10 @@ -.. _ln-set_local_angular_velocity: - -.. figure:: /images/logic_nodes/objects/get_attribute/ln-set_local_angular_velocity.png +.. figure:: /images/logic_nodes/objects/set_attribute/ln-local_angular_velocity.png :align: right :width: 215 :alt: Set Local Angular Velocity Node +.. _ln-set_local_angular_velocity: + ============================= Set Local Angular Velocity ============================= @@ -12,21 +12,26 @@ Set Local Angular Velocity Parameters ++++++++++ -prop - value +Set Attribute + Local Angular Velocity todo Inputs ++++++ -prop - value +Condition + Condition to be fulfilled for node to activate. -Outputs -+++++++ +XYZ + todo -prop - value +Object + todo -Example +Value + todo + +Outputs +++++++ +Done + *True* if node performed successfully, else *False*. diff --git a/source/manual/logic_nodes/objects/set_attribute/set_local_linear_velocity.rst b/source/manual/logic_nodes/objects/set_attribute/set_local_linear_velocity.rst index bb02bc73..f6b796c8 100644 --- a/source/manual/logic_nodes/objects/set_attribute/set_local_linear_velocity.rst +++ b/source/manual/logic_nodes/objects/set_attribute/set_local_linear_velocity.rst @@ -1,10 +1,10 @@ -.. _ln-set_local_linear_velocity: - -.. figure:: /images/logic_nodes/objects/set_attribute/ln-set_local_linear_velocity.png +.. figure:: /images/logic_nodes/objects/set_attribute/ln-local_linear_velocity.png :align: right :width: 215 :alt: Set Local Linear Velocity Node +.. _ln-set_local_linear_velocity: + ============================= Set Local Linear Velocity ============================= @@ -12,21 +12,26 @@ Set Local Linear Velocity Parameters ++++++++++ -prop - value +Set Attribute + Local Linear Velocity todo Inputs ++++++ -prop - value +Condition + Condition to be fulfilled for node to activate. -Outputs -+++++++ +XYZ + todo -prop - value +Object + todo -Example +Value + todo + +Outputs +++++++ +Done + *True* if node performed successfully, else *False*. diff --git a/source/manual/logic_nodes/objects/set_attribute/set_local_orientation.rst b/source/manual/logic_nodes/objects/set_attribute/set_local_orientation.rst index 10b81b0d..3ae0827d 100644 --- a/source/manual/logic_nodes/objects/set_attribute/set_local_orientation.rst +++ b/source/manual/logic_nodes/objects/set_attribute/set_local_orientation.rst @@ -1,10 +1,10 @@ -.. _ln-set_local_orientation: - -.. figure:: /images/logic_nodes/objects/set_attribute/ln-set_local_orientation.png +.. figure:: /images/logic_nodes/objects/set_attribute/ln-local_orientation.png :align: right :width: 215 :alt: Set Local Orientation Node +.. _ln-set_local_orientation: + ============================= Set Local Orientation ============================= @@ -12,21 +12,26 @@ Set Local Orientation Parameters ++++++++++ -prop - value +Set Attribute + Local Orientation todo Inputs ++++++ -prop - value +Condition + Condition to be fulfilled for node to activate. -Outputs -+++++++ +XYZ + todo -prop - value +Object + todo -Example +Value + todo + +Outputs +++++++ +Done + *True* if node performed successfully, else *False*. diff --git a/source/manual/logic_nodes/objects/set_attribute/set_local_position.rst b/source/manual/logic_nodes/objects/set_attribute/set_local_position.rst index 295b8434..666f6654 100644 --- a/source/manual/logic_nodes/objects/set_attribute/set_local_position.rst +++ b/source/manual/logic_nodes/objects/set_attribute/set_local_position.rst @@ -1,10 +1,10 @@ -.. _ln-set_local_position: - -.. figure:: /images/logic_nodes/objects/set_attribute/ln-set_local_position.png +.. figure:: /images/logic_nodes/objects/set_attribute/ln-local_position.png :align: right :width: 215 :alt: Set Local Position Node +.. _ln-set_local_position: + ============================= Set Local Position ============================= @@ -12,21 +12,26 @@ Set Local Position Parameters ++++++++++ -prop - value +Set Attribute + Local Position todo Inputs ++++++ -prop - value +Condition + Condition to be fulfilled for node to activate. -Outputs -+++++++ +XYZ + todo -prop - value +Object + todo -Example +Value + todo + +Outputs +++++++ +Done + *True* if node performed successfully, else *False*. diff --git a/source/manual/logic_nodes/objects/set_attribute/set_local_transform.rst b/source/manual/logic_nodes/objects/set_attribute/set_local_transform.rst index 97f6b636..5941af50 100644 --- a/source/manual/logic_nodes/objects/set_attribute/set_local_transform.rst +++ b/source/manual/logic_nodes/objects/set_attribute/set_local_transform.rst @@ -1,10 +1,10 @@ -.. _ln-set_local_transform: - -.. figure:: /images/logic_nodes/objects/set_attribute/ln-set_local_transform.png +.. figure:: /images/logic_nodes/objects/set_attribute/ln-local_transform.png :align: right :width: 215 :alt: Set Local Transform Node +.. _ln-set_local_transform: + ============================= Set Local Transform ============================= @@ -12,21 +12,26 @@ Set Local Transform Parameters ++++++++++ -prop - value +Set Attribute + Local Transform todo Inputs ++++++ -prop - value +Condition + Condition to be fulfilled for node to activate. -Outputs -+++++++ +XYZ + todo -prop - value +Object + todo -Example +Value + todo + +Outputs +++++++ +Done + *True* if node performed successfully, else *False*. diff --git a/source/manual/logic_nodes/objects/set_attribute/set_name.rst b/source/manual/logic_nodes/objects/set_attribute/set_name.rst index e3127d8c..ff1560d3 100644 --- a/source/manual/logic_nodes/objects/set_attribute/set_name.rst +++ b/source/manual/logic_nodes/objects/set_attribute/set_name.rst @@ -1,10 +1,10 @@ -.. _ln-set_name: - .. figure:: /images/logic_nodes/objects/set_attribute/ln-set_name.png :align: right :width: 215 :alt: Set Name Node +.. _ln-set_name: + ============================= Set Name ============================= diff --git a/source/manual/logic_nodes/objects/set_attribute/set_scale.rst b/source/manual/logic_nodes/objects/set_attribute/set_scale.rst index 9bf93830..81ae712f 100644 --- a/source/manual/logic_nodes/objects/set_attribute/set_scale.rst +++ b/source/manual/logic_nodes/objects/set_attribute/set_scale.rst @@ -1,10 +1,10 @@ -.. _ln-set_scale: - .. figure:: /images/logic_nodes/objects/set_attribute/ln-set_scale.png :align: right :width: 215 :alt: Set Scale Node +.. _ln-set_scale: + ============================= Set Scale ============================= diff --git a/source/manual/logic_nodes/objects/set_attribute/set_world_angular_velocity.rst b/source/manual/logic_nodes/objects/set_attribute/set_world_angular_velocity.rst index 645ecf53..1faf8d34 100644 --- a/source/manual/logic_nodes/objects/set_attribute/set_world_angular_velocity.rst +++ b/source/manual/logic_nodes/objects/set_attribute/set_world_angular_velocity.rst @@ -1,10 +1,10 @@ -.. _ln-set_world_angular_velocity: - -.. figure:: /images/logic_nodes/objects/set_attribute/ln-set_world_angular_velocity.png +.. figure:: /images/logic_nodes/objects/set_attribute/ln-world_angular_velocity.png :align: right :width: 215 :alt: Set World Angular Velocity Node +.. _ln-set_world_angular_velocity: + ============================= Set World Angular Velocity ============================= @@ -12,21 +12,26 @@ Set World Angular Velocity Parameters ++++++++++ -prop - value +Set Attribute + World Angular Velocity todo Inputs ++++++ -prop - value +Condition + Condition to be fulfilled for node to activate. -Outputs -+++++++ +XYZ + todo -prop - value +Object + todo -Example +Value + todo + +Outputs +++++++ +Done + *True* if node performed successfully, else *False*. diff --git a/source/manual/logic_nodes/objects/set_attribute/set_world_linear_velocity.rst b/source/manual/logic_nodes/objects/set_attribute/set_world_linear_velocity.rst index 10169c4e..53c6a7ed 100644 --- a/source/manual/logic_nodes/objects/set_attribute/set_world_linear_velocity.rst +++ b/source/manual/logic_nodes/objects/set_attribute/set_world_linear_velocity.rst @@ -1,10 +1,10 @@ -.. _ln-set_world_linear_velocity: - -.. figure:: /images/logic_nodes/objects/set_attribute/ln-set_world_linear_velocity.png +.. figure:: /images/logic_nodes/objects/set_attribute/ln-world_linear_velocity.png :align: right :width: 215 :alt: Set World Linear Velocity Node +.. _ln-set_world_linear_velocity: + ============================= Set World Linear Velocity ============================= @@ -12,21 +12,26 @@ Set World Linear Velocity Parameters ++++++++++ -prop - value +Set Attribute + World Linear Velocity todo Inputs ++++++ -prop - value +Condition + Condition to be fulfilled for node to activate. -Outputs -+++++++ +XYZ + todo -prop - value +Object + todo -Example +Value + todo + +Outputs +++++++ +Done + *True* if node performed successfully, else *False*. diff --git a/source/manual/logic_nodes/objects/set_attribute/set_world_orientation.rst b/source/manual/logic_nodes/objects/set_attribute/set_world_orientation.rst index cb420870..65cb1aa8 100644 --- a/source/manual/logic_nodes/objects/set_attribute/set_world_orientation.rst +++ b/source/manual/logic_nodes/objects/set_attribute/set_world_orientation.rst @@ -1,10 +1,10 @@ -.. _ln-set_world_orientation: - -.. figure:: /images/logic_nodes/objects/set_attribute/ln-set_world_orientation.png +.. figure:: /images/logic_nodes/objects/set_attribute/ln-world_orientation.png :align: right :width: 215 :alt: Set World Orientation Node +.. _ln-set_world_orientation: + ======================= Set World Orientation ======================= @@ -12,21 +12,26 @@ Set World Orientation Parameters ++++++++++ -prop - value +Set Attribute + World Orientation todo Inputs ++++++ -prop - value +Condition + Condition to be fulfilled for node to activate. -Outputs -+++++++ +XYZ + todo -prop - value +Object + todo -Example +Value + todo + +Outputs +++++++ +Done + *True* if node performed successfully, else *False*. diff --git a/source/manual/logic_nodes/objects/set_attribute/set_world_position.rst b/source/manual/logic_nodes/objects/set_attribute/set_world_position.rst index ad4fb174..adeede10 100644 --- a/source/manual/logic_nodes/objects/set_attribute/set_world_position.rst +++ b/source/manual/logic_nodes/objects/set_attribute/set_world_position.rst @@ -1,10 +1,10 @@ -.. _ln-set_world_position: - -.. figure:: /images/logic_nodes/objects/set_attribute/ln-set_world_position.png +.. figure:: /images/logic_nodes/objects/set_attribute/ln-world_position.png :align: right :width: 215 :alt: Set World Position Node +.. _ln-set_world_position: + ======================= Set World Position ======================= @@ -12,21 +12,26 @@ Set World Position Parameters ++++++++++ -prop - value +Set Attribute + World Position todo Inputs ++++++ -prop - value +Condition + Condition to be fulfilled for node to activate. -Outputs -+++++++ +XYZ + todo -prop - value +Object + todo -Example +Value + todo + +Outputs +++++++ +Done + *True* if node performed successfully, else *False*. diff --git a/source/manual/logic_nodes/objects/set_attribute/set_world_scale.rst b/source/manual/logic_nodes/objects/set_attribute/set_world_scale.rst new file mode 100644 index 00000000..4c669c40 --- /dev/null +++ b/source/manual/logic_nodes/objects/set_attribute/set_world_scale.rst @@ -0,0 +1,37 @@ +.. figure:: /images/logic_nodes/objects/set_attribute/ln-world_scale.png + :align: right + :width: 215 + :alt: Set World Scale Node + +.. _ln-set_world_scale: + +============================= +Set World Scale +============================= + +Parameters +++++++++++ + +Set Attribute + World Scale todo + +Inputs +++++++ + +Condition + Condition to be fulfilled for node to activate. + +XYZ + todo + +Object + todo + +Value + todo + +Outputs ++++++++ + +Done + *True* if node performed successfully, else *False*. diff --git a/source/manual/logic_nodes/objects/set_attribute/set_world_transform.rst b/source/manual/logic_nodes/objects/set_attribute/set_world_transform.rst index 976da3aa..5686800b 100644 --- a/source/manual/logic_nodes/objects/set_attribute/set_world_transform.rst +++ b/source/manual/logic_nodes/objects/set_attribute/set_world_transform.rst @@ -1,10 +1,10 @@ -.. _ln-set_world_transform: - -.. figure:: /images/logic_nodes/objects/set_attribute/ln-set_world_transform.png +.. figure:: /images/logic_nodes/objects/set_attribute/ln-world_transform.png :align: right :width: 215 :alt: Set World Transform Node +.. _ln-set_world_transform: + ============================= Set World Transform ============================= @@ -12,21 +12,26 @@ Set World Transform Parameters ++++++++++ -prop - value +Set Attribute + World Transform todo Inputs ++++++ -prop - value +Condition + Condition to be fulfilled for node to activate. -Outputs -+++++++ +XYZ + todo -prop - value +Object + todo -Example +Value + todo + +Outputs +++++++ +Done + *True* if node performed successfully, else *False*. diff --git a/source/manual/logic_nodes/objects/set_material.rst b/source/manual/logic_nodes/objects/set_material.rst index 475d0952..fe792268 100644 --- a/source/manual/logic_nodes/objects/set_material.rst +++ b/source/manual/logic_nodes/objects/set_material.rst @@ -1,10 +1,10 @@ -.. _ln-set_material: - .. figure:: /images/logic_nodes/objects/ln-set_material.png :align: right :width: 215 :alt: Set Material Node +.. _ln-set_material: + ====================== Set Material ====================== diff --git a/source/manual/logic_nodes/objects/set_parent.rst b/source/manual/logic_nodes/objects/set_parent.rst index 622dce7a..11da8d22 100644 --- a/source/manual/logic_nodes/objects/set_parent.rst +++ b/source/manual/logic_nodes/objects/set_parent.rst @@ -1,10 +1,10 @@ -.. _ln-set_parent: - .. figure:: /images/logic_nodes/objects/ln-set_parent.png :align: right :width: 215 :alt: Set Parent Node +.. _ln-set_parent: + ====================== Set Parent ====================== diff --git a/source/manual/logic_nodes/objects/set_visibility.rst b/source/manual/logic_nodes/objects/set_visibility.rst index cf229026..766e91ce 100644 --- a/source/manual/logic_nodes/objects/set_visibility.rst +++ b/source/manual/logic_nodes/objects/set_visibility.rst @@ -1,10 +1,10 @@ -.. _ln-set_visibility: - .. figure:: /images/logic_nodes/objects/ln-set_visibility.png :align: right :width: 215 :alt: Set Visibility Node +.. _ln-set_visibility: + ====================== Set Visibility ====================== diff --git a/source/manual/logic_nodes/objects/spawn_pool.rst b/source/manual/logic_nodes/objects/spawn_pool.rst index 5f6e2117..107db32c 100644 --- a/source/manual/logic_nodes/objects/spawn_pool.rst +++ b/source/manual/logic_nodes/objects/spawn_pool.rst @@ -1,10 +1,10 @@ -.. _ln-spawn_pool: - .. figure:: /images/logic_nodes/objects/ln-spawn_pool.png :align: right :width: 215 :alt: Spawn Pool Node +.. _ln-spawn_pool: + ====================== Spawn Pool ====================== diff --git a/source/manual/logic_nodes/objects/transformation/align_axis_to_vector.rst b/source/manual/logic_nodes/objects/transformation/align_axis_to_vector.rst index d45cb6c1..ea8d8300 100644 --- a/source/manual/logic_nodes/objects/transformation/align_axis_to_vector.rst +++ b/source/manual/logic_nodes/objects/transformation/align_axis_to_vector.rst @@ -1,10 +1,10 @@ -.. _ln-align_axis_to_vector: - .. figure:: /images/logic_nodes/objects/transformation/ln-align_axis_to_vector.png :align: right :width: 215 :alt: Align Axis to Vector Node +.. _ln-align_axis_to_vector: + ==================== Align Axis to Vector ==================== diff --git a/source/manual/logic_nodes/objects/transformation/apply_force.rst b/source/manual/logic_nodes/objects/transformation/apply_force.rst index c6a84292..69b9d518 100644 --- a/source/manual/logic_nodes/objects/transformation/apply_force.rst +++ b/source/manual/logic_nodes/objects/transformation/apply_force.rst @@ -1,10 +1,10 @@ -.. _ln-apply_force: - .. figure:: /images/logic_nodes/objects/transformation/ln-apply_force.png :align: right :width: 215 :alt: Apply Force Node +.. _ln-apply_force: + ============== Apply Force ============== diff --git a/source/manual/logic_nodes/objects/transformation/apply_impulse.rst b/source/manual/logic_nodes/objects/transformation/apply_impulse.rst index b3d4f7c6..f08b0d93 100644 --- a/source/manual/logic_nodes/objects/transformation/apply_impulse.rst +++ b/source/manual/logic_nodes/objects/transformation/apply_impulse.rst @@ -1,10 +1,10 @@ -.. _ln-apply_impulse: - .. figure:: /images/logic_nodes/objects/transformation/ln-apply_impulse.png :align: right :width: 215 :alt: Apply Impulse Node +.. _ln-apply_impulse: + ============== Apply Impulse ============== diff --git a/source/manual/logic_nodes/objects/transformation/apply_movement.rst b/source/manual/logic_nodes/objects/transformation/apply_movement.rst index f4a1802e..6638a0fd 100644 --- a/source/manual/logic_nodes/objects/transformation/apply_movement.rst +++ b/source/manual/logic_nodes/objects/transformation/apply_movement.rst @@ -1,10 +1,10 @@ -.. _ln-apply_movement: - .. figure:: /images/logic_nodes/objects/transformation/ln-apply_movement.png :align: right :width: 215 :alt: Apply Movement Node +.. _ln-apply_movement: + ============== Apply Movement ============== diff --git a/source/manual/logic_nodes/objects/transformation/apply_rotation.rst b/source/manual/logic_nodes/objects/transformation/apply_rotation.rst index 9318978b..6eaff344 100644 --- a/source/manual/logic_nodes/objects/transformation/apply_rotation.rst +++ b/source/manual/logic_nodes/objects/transformation/apply_rotation.rst @@ -1,10 +1,10 @@ -.. _ln-apply_rotation: - .. figure:: /images/logic_nodes/objects/transformation/ln-apply_rotation.png :align: right :width: 215 :alt: Apply Rotation Node +.. _ln-apply_rotation: + ============== Apply Rotation ============== diff --git a/source/manual/logic_nodes/objects/transformation/apply_torque.rst b/source/manual/logic_nodes/objects/transformation/apply_torque.rst index 4a17ec78..2606af68 100644 --- a/source/manual/logic_nodes/objects/transformation/apply_torque.rst +++ b/source/manual/logic_nodes/objects/transformation/apply_torque.rst @@ -1,10 +1,10 @@ -.. _ln-apply_torque: - .. figure:: /images/logic_nodes/objects/transformation/ln-apply_torque.png :align: right :width: 215 :alt: Apply Torque Node +.. _ln-apply_torque: + ============== Apply Torque ============== diff --git a/source/manual/logic_nodes/objects/transformation/follow_path.rst b/source/manual/logic_nodes/objects/transformation/follow_path.rst index 776dd94e..d636ffb1 100644 --- a/source/manual/logic_nodes/objects/transformation/follow_path.rst +++ b/source/manual/logic_nodes/objects/transformation/follow_path.rst @@ -1,10 +1,10 @@ -.. _ln-follow_path: - .. figure:: /images/logic_nodes/objects/transformation/ln-follow_path.png :align: right :width: 215 :alt: Follow Path Node +.. _ln-follow_path: + ============== Follow Path ============== diff --git a/source/manual/logic_nodes/objects/transformation/move_to.rst b/source/manual/logic_nodes/objects/transformation/move_to.rst index 0faf0891..8980554e 100644 --- a/source/manual/logic_nodes/objects/transformation/move_to.rst +++ b/source/manual/logic_nodes/objects/transformation/move_to.rst @@ -1,10 +1,10 @@ -.. _ln-move_to: - .. figure:: /images/logic_nodes/objects/transformation/ln-move_to.png :align: right :width: 215 :alt: Move To Node +.. _ln-move_to: + ============== Move To ============== diff --git a/source/manual/logic_nodes/objects/transformation/move_to_with_navmesh.rst b/source/manual/logic_nodes/objects/transformation/move_to_with_navmesh.rst index fc144bca..d79046b3 100644 --- a/source/manual/logic_nodes/objects/transformation/move_to_with_navmesh.rst +++ b/source/manual/logic_nodes/objects/transformation/move_to_with_navmesh.rst @@ -1,10 +1,10 @@ -.. _ln-move_to_with_navmesh: - .. figure:: /images/logic_nodes/objects/transformation/ln-move_to_with_navmesh.png :align: right :width: 215 :alt: Move To with Navmesh Node +.. _ln-move_to_with_navmesh: + ====================== Move To with Navmesh ====================== diff --git a/source/manual/logic_nodes/objects/transformation/rotate_to.rst b/source/manual/logic_nodes/objects/transformation/rotate_to.rst index 0afae0fa..b4df4bc5 100644 --- a/source/manual/logic_nodes/objects/transformation/rotate_to.rst +++ b/source/manual/logic_nodes/objects/transformation/rotate_to.rst @@ -1,10 +1,10 @@ -.. _ln-rotate_to: - .. figure:: /images/logic_nodes/objects/transformation/ln-rotate_to.png :align: right :width: 215 :alt: Rotate To Node +.. _ln-rotate_to: + ============== Rotate To ============== diff --git a/source/manual/logic_nodes/objects/transformation/slow_follow.rst b/source/manual/logic_nodes/objects/transformation/slow_follow.rst index 5b514065..9373e029 100644 --- a/source/manual/logic_nodes/objects/transformation/slow_follow.rst +++ b/source/manual/logic_nodes/objects/transformation/slow_follow.rst @@ -1,10 +1,10 @@ -.. _ln-slow_follow: - .. figure:: /images/logic_nodes/objects/transformation/ln-slow_follow.png :align: right :width: 215 :alt: Slow Follow Node +.. _ln-slow_follow: + ============== Slow Follow ============== diff --git a/source/manual/logic_nodes/physics/add_constraint.rst b/source/manual/logic_nodes/physics/add_constraint.rst index bbb1627c..4a199521 100644 --- a/source/manual/logic_nodes/physics/add_constraint.rst +++ b/source/manual/logic_nodes/physics/add_constraint.rst @@ -1,10 +1,10 @@ -.. _ln-add_constraint: - .. figure:: /images/logic_nodes/physics/ln-add_constraint.png :align: right :width: 215 :alt: Add Constraint Node +.. _ln-add_constraint: + ==================== Add Constraint ==================== diff --git a/source/manual/logic_nodes/physics/character/get_physics_info.rst b/source/manual/logic_nodes/physics/character/get_physics_info.rst index e2f522a1..39b29649 100644 --- a/source/manual/logic_nodes/physics/character/get_physics_info.rst +++ b/source/manual/logic_nodes/physics/character/get_physics_info.rst @@ -1,10 +1,10 @@ -.. _ln-get_physics_info: - .. figure:: /images/logic_nodes/physics/character/ln-get_physics_info.png :align: right :width: 215 :alt: Get Physics Info Node +.. _ln-get_physics_info: + ==================== Get Physics Info ==================== diff --git a/source/manual/logic_nodes/physics/character/jump.rst b/source/manual/logic_nodes/physics/character/jump.rst index f79336b6..4ba2e432 100644 --- a/source/manual/logic_nodes/physics/character/jump.rst +++ b/source/manual/logic_nodes/physics/character/jump.rst @@ -1,10 +1,10 @@ -.. _ln-jump: - .. figure:: /images/logic_nodes/physics/character/ln-jump.png :align: right :width: 215 :alt: Jump Node +.. _ln-jump: + ==================== Jump ==================== diff --git a/source/manual/logic_nodes/physics/character/set_jump_force.rst b/source/manual/logic_nodes/physics/character/set_jump_force.rst index d6b0a43b..58ee0fb5 100644 --- a/source/manual/logic_nodes/physics/character/set_jump_force.rst +++ b/source/manual/logic_nodes/physics/character/set_jump_force.rst @@ -1,10 +1,10 @@ -.. _ln-set_jump_force: - .. figure:: /images/logic_nodes/physics/character/ln-set_jump_force.png :align: right :width: 215 :alt: Set Jump Force Node +.. _ln-set_jump_force: + ==================== Set Jump Force ==================== diff --git a/source/manual/logic_nodes/physics/character/set_max_jumps.rst b/source/manual/logic_nodes/physics/character/set_max_jumps.rst index f6715e26..50133919 100644 --- a/source/manual/logic_nodes/physics/character/set_max_jumps.rst +++ b/source/manual/logic_nodes/physics/character/set_max_jumps.rst @@ -1,10 +1,10 @@ -.. _ln-set_max_jumps: - .. figure:: /images/logic_nodes/physics/character/ln-set_max_jumps.png :align: right :width: 215 :alt: Set Max Jumps Node +.. _ln-set_max_jumps: + ==================== Set Max Jumps ==================== diff --git a/source/manual/logic_nodes/physics/character/set_velocity.rst b/source/manual/logic_nodes/physics/character/set_velocity.rst index 19a911b7..96bac019 100644 --- a/source/manual/logic_nodes/physics/character/set_velocity.rst +++ b/source/manual/logic_nodes/physics/character/set_velocity.rst @@ -1,10 +1,10 @@ -.. _ln-set_velocity: - .. figure:: /images/logic_nodes/physics/character/ln-set_velocity.png :align: right :width: 215 :alt: Set Velocity Node +.. _ln-set_velocity: + ==================== Set Velocity ==================== diff --git a/source/manual/logic_nodes/physics/character/walk.rst b/source/manual/logic_nodes/physics/character/walk.rst index 554cc2ea..d68f490b 100644 --- a/source/manual/logic_nodes/physics/character/walk.rst +++ b/source/manual/logic_nodes/physics/character/walk.rst @@ -1,10 +1,10 @@ -.. _ln-walk: - .. figure:: /images/logic_nodes/physics/character/ln-walk.png :align: right :width: 215 :alt: Walk Node +.. _ln-walk: + ==================== Walk ==================== diff --git a/source/manual/logic_nodes/physics/collision.rst b/source/manual/logic_nodes/physics/collision.rst index 5105e5a3..04aebb9b 100644 --- a/source/manual/logic_nodes/physics/collision.rst +++ b/source/manual/logic_nodes/physics/collision.rst @@ -1,10 +1,10 @@ -.. _ln-collision: - .. figure:: /images/logic_nodes/physics/ln-collision.png :align: right :width: 215 :alt: Collision Node +.. _ln-collision: + =============== Collision =============== diff --git a/source/manual/logic_nodes/physics/remove_constraint.rst b/source/manual/logic_nodes/physics/remove_constraint.rst index 0228353f..b0bb59f6 100644 --- a/source/manual/logic_nodes/physics/remove_constraint.rst +++ b/source/manual/logic_nodes/physics/remove_constraint.rst @@ -1,10 +1,10 @@ -.. _ln-remove_constraint: - .. figure:: /images/logic_nodes/physics/ln-remove_constraint.png :align: right :width: 215 :alt: Remove Constraint Node +.. _ln-remove_constraint: + ==================== Remove Constraint ==================== diff --git a/source/manual/logic_nodes/physics/set_collision_group.rst b/source/manual/logic_nodes/physics/set_collision_group.rst index a662b1c7..2f3d2f4c 100644 --- a/source/manual/logic_nodes/physics/set_collision_group.rst +++ b/source/manual/logic_nodes/physics/set_collision_group.rst @@ -1,10 +1,10 @@ -.. _ln-set_collision_group: - .. figure:: /images/logic_nodes/physics/ln-set_collision_group.png :align: right :width: 215 :alt: Set Collision Group Node +.. _ln-set_collision_group: + ==================== Set Collision Group ==================== diff --git a/source/manual/logic_nodes/physics/set_collision_mask.rst b/source/manual/logic_nodes/physics/set_collision_mask.rst index 732a8a31..9f011655 100644 --- a/source/manual/logic_nodes/physics/set_collision_mask.rst +++ b/source/manual/logic_nodes/physics/set_collision_mask.rst @@ -1,10 +1,10 @@ -.. _ln-set_collision_mask: - .. figure:: /images/logic_nodes/physics/ln-set_collision_mask.png :align: right :width: 215 :alt: Set Collision Mask Node +.. _ln-set_collision_mask: + ==================== Set Collision Mask ==================== diff --git a/source/manual/logic_nodes/physics/set_dynamics.rst b/source/manual/logic_nodes/physics/set_dynamics.rst index f44fbcfa..146259d7 100644 --- a/source/manual/logic_nodes/physics/set_dynamics.rst +++ b/source/manual/logic_nodes/physics/set_dynamics.rst @@ -1,10 +1,10 @@ -.. _ln-set_dynamics: - .. figure:: /images/logic_nodes/physics/ln-set_dynamics.png :align: right :width: 215 :alt: Set Dynamics Node +.. _ln-set_dynamics: + ==================== Set Dynamics ==================== diff --git a/source/manual/logic_nodes/physics/set_gravity.rst b/source/manual/logic_nodes/physics/set_gravity.rst index 6f6b537b..72cbf7b1 100644 --- a/source/manual/logic_nodes/physics/set_gravity.rst +++ b/source/manual/logic_nodes/physics/set_gravity.rst @@ -1,10 +1,10 @@ -.. _ln-set_gravity: - .. figure:: /images/logic_nodes/physics/ln-set_gravity.png :align: right :width: 215 :alt: Set Gravity Node +.. _ln-physics_set_gravity: + ==================== Set Gravity ==================== diff --git a/source/manual/logic_nodes/physics/set_physics.rst b/source/manual/logic_nodes/physics/set_physics.rst index 2d73fc77..0337a06b 100644 --- a/source/manual/logic_nodes/physics/set_physics.rst +++ b/source/manual/logic_nodes/physics/set_physics.rst @@ -1,10 +1,10 @@ -.. _ln-set_physics: - .. figure:: /images/logic_nodes/physics/ln-set_physics.png :align: right :width: 215 :alt: Set Physics Node +.. _ln-set_physics: + ==================== Set Physics ==================== diff --git a/source/manual/logic_nodes/physics/set_rigid_body.rst b/source/manual/logic_nodes/physics/set_rigid_body.rst index 7dc7caf3..3e9a5a7e 100644 --- a/source/manual/logic_nodes/physics/set_rigid_body.rst +++ b/source/manual/logic_nodes/physics/set_rigid_body.rst @@ -1,10 +1,10 @@ -.. _ln-set_rigid_body: - .. figure:: /images/logic_nodes/physics/ln-set_rigid_body.png :align: right :width: 215 :alt: Set Rigid Body Node +.. _ln-set_rigid_body: + ==================== Set Rigid Body ==================== diff --git a/source/manual/logic_nodes/physics/vehicle/accelerate.rst b/source/manual/logic_nodes/physics/vehicle/accelerate.rst index fcb5c420..4d842290 100644 --- a/source/manual/logic_nodes/physics/vehicle/accelerate.rst +++ b/source/manual/logic_nodes/physics/vehicle/accelerate.rst @@ -1,10 +1,10 @@ -.. _ln-accelerate: - .. figure:: /images/logic_nodes/physics/vehicle/ln-accelerate.png :align: right :width: 215 :alt: Accelerate Node +.. _ln-accelerate: + ==================== Accelerate ==================== diff --git a/source/manual/logic_nodes/physics/vehicle/brake.rst b/source/manual/logic_nodes/physics/vehicle/brake.rst index 975c7767..29d5f47e 100644 --- a/source/manual/logic_nodes/physics/vehicle/brake.rst +++ b/source/manual/logic_nodes/physics/vehicle/brake.rst @@ -1,10 +1,10 @@ -.. _ln-brake: - .. figure:: /images/logic_nodes/physics/vehicle/ln-brake.png :align: right :width: 215 :alt: Brake Node +.. _ln-brake: + ==================== Brake ==================== diff --git a/source/manual/logic_nodes/physics/vehicle/create_new_vehicle.rst b/source/manual/logic_nodes/physics/vehicle/create_new_vehicle.rst index a4f6699b..647dc70c 100644 --- a/source/manual/logic_nodes/physics/vehicle/create_new_vehicle.rst +++ b/source/manual/logic_nodes/physics/vehicle/create_new_vehicle.rst @@ -1,10 +1,10 @@ -.. _ln-create_new_vehicle: - .. figure:: /images/logic_nodes/physics/vehicle/ln-create_new_vehicle.png :align: right :width: 215 :alt: Create New Vehicle Node +.. _ln-create_new_vehicle: + ==================== Create New Vehicle ==================== diff --git a/source/manual/logic_nodes/physics/vehicle/set_vehicle_attribute.rst b/source/manual/logic_nodes/physics/vehicle/set_vehicle_attribute.rst index db81d46f..93d30dbb 100644 --- a/source/manual/logic_nodes/physics/vehicle/set_vehicle_attribute.rst +++ b/source/manual/logic_nodes/physics/vehicle/set_vehicle_attribute.rst @@ -1,10 +1,10 @@ -.. _ln-set_vehicle_attribute: - .. figure:: /images/logic_nodes/physics/vehicle/ln-set_vehicle_attribute.png :align: right :width: 285 :alt: Set Vehicle Attribute Node +.. _ln-set_vehicle_attribute: + ===================== Set Vehicle Attribute ===================== diff --git a/source/manual/logic_nodes/physics/vehicle/steer.rst b/source/manual/logic_nodes/physics/vehicle/steer.rst index d3991124..a64735fb 100644 --- a/source/manual/logic_nodes/physics/vehicle/steer.rst +++ b/source/manual/logic_nodes/physics/vehicle/steer.rst @@ -1,10 +1,10 @@ -.. _ln-steer: - .. figure:: /images/logic_nodes/physics/vehicle/ln-steer.png :align: right :width: 215 :alt: Steer Node +.. _ln-steer: + ===================== Steer ===================== diff --git a/source/manual/logic_nodes/python/get_instance_attribute.rst b/source/manual/logic_nodes/python/get_instance_attribute.rst index 9be3068f..ac70bd22 100644 --- a/source/manual/logic_nodes/python/get_instance_attribute.rst +++ b/source/manual/logic_nodes/python/get_instance_attribute.rst @@ -1,10 +1,10 @@ -.. _ln-get_instance_attribute: - .. figure:: /images/logic_nodes/python/ln-get_instance_attribute.png :align: right :width: 215 :alt: Get Instance Attribute Node +.. _ln-get_instance_attribute: + ======================= Get Instance Attribute ======================= diff --git a/source/manual/logic_nodes/python/run_python_code.rst b/source/manual/logic_nodes/python/run_python_code.rst index 1248419b..8bc705a0 100644 --- a/source/manual/logic_nodes/python/run_python_code.rst +++ b/source/manual/logic_nodes/python/run_python_code.rst @@ -1,10 +1,10 @@ -.. _ln-run_python_code: - .. figure:: /images/logic_nodes/python/ln-run_python_code.png :align: right :width: 215 :alt: Run Python Code Node +.. _ln-run_python_code: + =============== Run Python Code =============== diff --git a/source/manual/logic_nodes/python/set_object_attribute.rst b/source/manual/logic_nodes/python/set_object_attribute.rst index 3b130b1a..c748727e 100644 --- a/source/manual/logic_nodes/python/set_object_attribute.rst +++ b/source/manual/logic_nodes/python/set_object_attribute.rst @@ -1,10 +1,10 @@ -.. _ln-set_object_attribute: - .. figure:: /images/logic_nodes/python/ln-set_object_attribute.png :align: right :width: 215 :alt: Set Object Attribute Node +.. _ln-set_object_attribute: + ======================= Set Object Attribute ======================= diff --git a/source/manual/logic_nodes/python/typecast_value.rst b/source/manual/logic_nodes/python/typecast_value.rst index f8d53822..90c73aef 100644 --- a/source/manual/logic_nodes/python/typecast_value.rst +++ b/source/manual/logic_nodes/python/typecast_value.rst @@ -1,10 +1,10 @@ -.. _ln-typecast_value: - .. figure:: /images/logic_nodes/python/ln-typecast_value.png :align: right :width: 215 :alt: Typecast Value Node +.. _ln-typecast_value: + ======================= Typecast Value ======================= diff --git a/source/manual/logic_nodes/raycasts/camera_ray.rst b/source/manual/logic_nodes/raycasts/camera_ray.rst index 14d9cfd5..540ec6d7 100644 --- a/source/manual/logic_nodes/raycasts/camera_ray.rst +++ b/source/manual/logic_nodes/raycasts/camera_ray.rst @@ -1,10 +1,10 @@ -.. _ln-camera_ray: - .. figure:: /images/logic_nodes/raycasts/ln-camera_ray.png :align: right :width: 215 :alt: Camera Ray Node +.. _ln-camera_ray: + =============== Camera Ray =============== diff --git a/source/manual/logic_nodes/raycasts/mouse_ray.rst b/source/manual/logic_nodes/raycasts/mouse_ray.rst index a20f41a8..5131b07e 100644 --- a/source/manual/logic_nodes/raycasts/mouse_ray.rst +++ b/source/manual/logic_nodes/raycasts/mouse_ray.rst @@ -1,10 +1,10 @@ -.. _ln-mouse_ray: - .. figure:: /images/logic_nodes/raycasts/ln-mouse_ray.png :align: right :width: 215 :alt: Mouse Ray Node +.. _ln-mouse_ray: + =============== Mouse Ray =============== diff --git a/source/manual/logic_nodes/raycasts/projectile_ray.rst b/source/manual/logic_nodes/raycasts/projectile_ray.rst index 4505a3d1..fd0d933f 100644 --- a/source/manual/logic_nodes/raycasts/projectile_ray.rst +++ b/source/manual/logic_nodes/raycasts/projectile_ray.rst @@ -1,10 +1,10 @@ -.. _ln-projectile_ray: - .. figure:: /images/logic_nodes/raycasts/ln-projectile_ray.png :align: right :width: 215 :alt: Projectile Ray Node +.. _ln-projectile_ray: + =============== Projectile Ray =============== diff --git a/source/manual/logic_nodes/raycasts/raycast.rst b/source/manual/logic_nodes/raycasts/raycast.rst index 4a8acc52..719eedf2 100644 --- a/source/manual/logic_nodes/raycasts/raycast.rst +++ b/source/manual/logic_nodes/raycasts/raycast.rst @@ -1,10 +1,10 @@ -.. _ln-raycast: - .. figure:: /images/logic_nodes/raycasts/ln-raycast.png :align: right :width: 215 :alt: Raycast Node +.. _ln-raycast: + =============== Raycast =============== diff --git a/source/manual/logic_nodes/render/eevee/set_ambient_occlusion.rst b/source/manual/logic_nodes/render/eevee/set_ambient_occlusion.rst index 8cca8677..2f9da9ab 100644 --- a/source/manual/logic_nodes/render/eevee/set_ambient_occlusion.rst +++ b/source/manual/logic_nodes/render/eevee/set_ambient_occlusion.rst @@ -1,10 +1,10 @@ -.. _ln-set_ambient_occlusion: - .. figure:: /images/logic_nodes/render/eevee/ln-set_ambient_occlusion.png :align: right :width: 215 :alt: Set Ambient Occlusion Node +.. _ln-set_ambient_occlusion: + ============================= Set Ambient Occlusion ============================= diff --git a/source/manual/logic_nodes/render/eevee/set_bloom.rst b/source/manual/logic_nodes/render/eevee/set_bloom.rst index d031b97d..70ffeda1 100644 --- a/source/manual/logic_nodes/render/eevee/set_bloom.rst +++ b/source/manual/logic_nodes/render/eevee/set_bloom.rst @@ -1,10 +1,10 @@ -.. _ln-set-bloom: - .. figure:: /images/logic_nodes/render/eevee/ln-set_bloom.png :align: right :width: 215 :alt: Set Bloom Node +.. _ln-set_bloom: + ======================= Set Bloom ======================= diff --git a/source/manual/logic_nodes/render/eevee/set_exposure.rst b/source/manual/logic_nodes/render/eevee/set_exposure.rst index 6d15b99d..0ededdbb 100644 --- a/source/manual/logic_nodes/render/eevee/set_exposure.rst +++ b/source/manual/logic_nodes/render/eevee/set_exposure.rst @@ -1,10 +1,10 @@ -.. _ln-set-exposure: - .. figure:: /images/logic_nodes/render/eevee/ln-set_exposure.png :align: right :width: 215 :alt: Set Exposure Node +.. _ln-set_exposure: + ======================= Set Exposure ======================= diff --git a/source/manual/logic_nodes/render/eevee/set_gamma.rst b/source/manual/logic_nodes/render/eevee/set_gamma.rst index a1847c14..7714dd00 100644 --- a/source/manual/logic_nodes/render/eevee/set_gamma.rst +++ b/source/manual/logic_nodes/render/eevee/set_gamma.rst @@ -1,10 +1,10 @@ -.. _ln-set-gamma: - .. figure:: /images/logic_nodes/render/eevee/ln-set_gamma.png :align: right :width: 215 :alt: Set Gamma Node +.. _ln-set_gamma: + ======================= Set Gamma ======================= diff --git a/source/manual/logic_nodes/render/eevee/set_ssr.rst b/source/manual/logic_nodes/render/eevee/set_ssr.rst index c5467bc1..75df5e05 100644 --- a/source/manual/logic_nodes/render/eevee/set_ssr.rst +++ b/source/manual/logic_nodes/render/eevee/set_ssr.rst @@ -1,10 +1,10 @@ -.. _ln-set-ssr: - .. figure:: /images/logic_nodes/render/eevee/ln-set_ssr.png :align: right :width: 215 :alt: Set SSR Node +.. _ln-set_ssr: + ======================= Set SSR ======================= diff --git a/source/manual/logic_nodes/render/eevee/set_volumetric_light.rst b/source/manual/logic_nodes/render/eevee/set_volumetric_light.rst index 0bc314c0..3672dc1a 100644 --- a/source/manual/logic_nodes/render/eevee/set_volumetric_light.rst +++ b/source/manual/logic_nodes/render/eevee/set_volumetric_light.rst @@ -1,10 +1,10 @@ -.. _ln-set-volumetric-light: - .. figure:: /images/logic_nodes/render/eevee/ln-set_volumetric_light.png :align: right :width: 215 :alt: Set Volumetric Light Node +.. _ln-set_volumetric_light: + ======================= Set Volumetric Light ======================= diff --git a/source/manual/logic_nodes/render/get_fullscreen.rst b/source/manual/logic_nodes/render/get_fullscreen.rst index fb8e302d..02110460 100644 --- a/source/manual/logic_nodes/render/get_fullscreen.rst +++ b/source/manual/logic_nodes/render/get_fullscreen.rst @@ -1,13 +1,13 @@ -.. _ln-get_fullscreen: - .. figure:: /images/logic_nodes/render/ln-get_fullscreen.png :align: right :width: 215 :alt: Get Fullscreen Node -========== +.. _ln-get_fullscreen: + +=============== Get Fullscreen -========== +=============== Outputs +++++++ diff --git a/source/manual/logic_nodes/render/get_resolution.rst b/source/manual/logic_nodes/render/get_resolution.rst index 2139cfa4..b7597940 100644 --- a/source/manual/logic_nodes/render/get_resolution.rst +++ b/source/manual/logic_nodes/render/get_resolution.rst @@ -1,10 +1,10 @@ -.. _ln-get_resolution: - .. figure:: /images/logic_nodes/render/ln-get_resolution.png :align: right :width: 215 :alt: Get Resolution Node +.. _ln-get_resolution: + ============================= Get Resolution ============================= diff --git a/source/manual/logic_nodes/render/get_vsync.rst b/source/manual/logic_nodes/render/get_vsync.rst index 0a07ac63..c9f05a2d 100644 --- a/source/manual/logic_nodes/render/get_vsync.rst +++ b/source/manual/logic_nodes/render/get_vsync.rst @@ -1,10 +1,10 @@ -.. _ln-get_vsync: - .. figure:: /images/logic_nodes/render/ln-get_vsync.png :align: right :width: 215 :alt: Get VSync Node +.. _ln-get_vsync: + ========== Get VSync ========== diff --git a/source/manual/logic_nodes/render/set_fullscreen.rst b/source/manual/logic_nodes/render/set_fullscreen.rst index 5628e27c..ec03c456 100644 --- a/source/manual/logic_nodes/render/set_fullscreen.rst +++ b/source/manual/logic_nodes/render/set_fullscreen.rst @@ -1,13 +1,13 @@ -.. _ln-set_fullscreen: - .. figure:: /images/logic_nodes/render/ln-set_fullscreen.png :align: right :width: 215 :alt: Set Fullscreen Node -========== +.. _ln-set_fullscreen: + +============== Set Fullscreen -========== +============== Inputs ++++++ diff --git a/source/manual/logic_nodes/render/set_resolution.rst b/source/manual/logic_nodes/render/set_resolution.rst index 34a37ae8..7c413554 100644 --- a/source/manual/logic_nodes/render/set_resolution.rst +++ b/source/manual/logic_nodes/render/set_resolution.rst @@ -1,13 +1,13 @@ -.. _ln-set_resolution: - .. figure:: /images/logic_nodes/render/ln-set_resolution.png :align: right :width: 215 :alt: Set Resolution Node -========== +.. _ln-set_resolution: + +=============== Set Resolution -========== +=============== Inputs ++++++ diff --git a/source/manual/logic_nodes/render/set_vsync.rst b/source/manual/logic_nodes/render/set_vsync.rst index 9d1698cd..35417a57 100644 --- a/source/manual/logic_nodes/render/set_vsync.rst +++ b/source/manual/logic_nodes/render/set_vsync.rst @@ -1,10 +1,10 @@ -.. _ln-set_vsync: - .. figure:: /images/logic_nodes/render/ln-set_vsync.png :align: right :width: 215 :alt: Set VSync Node +.. _ln-set_vsync: + ========== Set VSync ========== diff --git a/source/manual/logic_nodes/render/show_framerate.rst b/source/manual/logic_nodes/render/show_framerate.rst index 5d7f8b00..3f5e5416 100644 --- a/source/manual/logic_nodes/render/show_framerate.rst +++ b/source/manual/logic_nodes/render/show_framerate.rst @@ -1,10 +1,10 @@ -.. _ln-show_framerate: - .. figure:: /images/logic_nodes/render/ln-show_framerate.png :align: right :width: 215 :alt: Show Framerate Node +.. _ln-show_framerate: + ============================= Show Framerate ============================= diff --git a/source/manual/logic_nodes/render/show_profile.rst b/source/manual/logic_nodes/render/show_profile.rst index 6e2d27dc..70ef5972 100644 --- a/source/manual/logic_nodes/render/show_profile.rst +++ b/source/manual/logic_nodes/render/show_profile.rst @@ -1,10 +1,10 @@ -.. _ln-show_profile: - .. figure:: /images/logic_nodes/render/ln-show_profile.png :align: right :width: 215 :alt: Show Profile Node +.. _ln-show_profile: + ============================= Show Profile ============================= diff --git a/source/manual/logic_nodes/scene/camera/active_camera.rst b/source/manual/logic_nodes/scene/camera/active_camera.rst index 704f0847..c5f77ae8 100644 --- a/source/manual/logic_nodes/scene/camera/active_camera.rst +++ b/source/manual/logic_nodes/scene/camera/active_camera.rst @@ -1,10 +1,10 @@ -.. _ln-active_camera: - .. figure:: /images/logic_nodes/scene/camera/ln-active_camera.png :align: right :width: 215 :alt: Active Camera Node +.. _ln-active_camera: + ============== Active Camera ============== diff --git a/source/manual/logic_nodes/scene/camera/screen_to_world.rst b/source/manual/logic_nodes/scene/camera/screen_to_world.rst index 9b9c7e0c..489c6b31 100644 --- a/source/manual/logic_nodes/scene/camera/screen_to_world.rst +++ b/source/manual/logic_nodes/scene/camera/screen_to_world.rst @@ -1,10 +1,10 @@ -.. _ln-screen_to_world: - .. figure:: /images/logic_nodes/scene/camera/ln-screen_to_world.png :align: right :width: 215 :alt: Screen To World Node +.. _ln-screen_to_world: + ======================= Screen To World ======================= diff --git a/source/manual/logic_nodes/scene/camera/set_camera.rst b/source/manual/logic_nodes/scene/camera/set_camera.rst index a93092b3..e9ec87de 100644 --- a/source/manual/logic_nodes/scene/camera/set_camera.rst +++ b/source/manual/logic_nodes/scene/camera/set_camera.rst @@ -1,10 +1,10 @@ -.. _ln-set_camera: - .. figure:: /images/logic_nodes/scene/camera/ln-set_camera.png :align: right :width: 215 :alt: Set Camera Node +.. _ln-set_camera: + ============== Set Camera ============== diff --git a/source/manual/logic_nodes/scene/camera/set_fov.rst b/source/manual/logic_nodes/scene/camera/set_fov.rst index 0b266f91..31bcd048 100644 --- a/source/manual/logic_nodes/scene/camera/set_fov.rst +++ b/source/manual/logic_nodes/scene/camera/set_fov.rst @@ -1,10 +1,10 @@ -.. _ln-set_fov: - .. figure:: /images/logic_nodes/scene/camera/ln-set_fov.png :align: right :width: 215 :alt: Set FOV Node +.. _ln-set_fov: + ============== Set FOV ============== diff --git a/source/manual/logic_nodes/scene/camera/set_orthographic_scale.rst b/source/manual/logic_nodes/scene/camera/set_orthographic_scale.rst index 28eb7256..8f9668b2 100644 --- a/source/manual/logic_nodes/scene/camera/set_orthographic_scale.rst +++ b/source/manual/logic_nodes/scene/camera/set_orthographic_scale.rst @@ -1,10 +1,10 @@ -.. _ln-set_orthographic_scale: - .. figure:: /images/logic_nodes/scene/camera/ln-set_orthographic_scale.png :align: right :width: 215 :alt: Set Orthographic Scale Node +.. _ln-set_orthographic_scale: + ======================= Set Orthographic Scale ======================= diff --git a/source/manual/logic_nodes/scene/camera/world_to_screen.rst b/source/manual/logic_nodes/scene/camera/world_to_screen.rst index e6e4dcd3..4e31b1c5 100644 --- a/source/manual/logic_nodes/scene/camera/world_to_screen.rst +++ b/source/manual/logic_nodes/scene/camera/world_to_screen.rst @@ -1,10 +1,10 @@ -.. _ln-world_to_screen: - .. figure:: /images/logic_nodes/scene/camera/ln-world_to_screen.png :align: right :width: 215 :alt: World To Screen Node +.. _ln-world_to_screen: + ======================= World To Screen ======================= diff --git a/source/manual/logic_nodes/scene/collections/get_collection.rst b/source/manual/logic_nodes/scene/collections/get_collection.rst index b36fd32e..a780cb30 100644 --- a/source/manual/logic_nodes/scene/collections/get_collection.rst +++ b/source/manual/logic_nodes/scene/collections/get_collection.rst @@ -1,10 +1,10 @@ -.. _ln-get_collection: - .. figure:: /images/logic_nodes/scene/collections/ln-get_collection.png :align: right :width: 215 :alt: Get Collection Node +.. _ln-get_collection: + ======================= Get Collection ======================= diff --git a/source/manual/logic_nodes/scene/collections/get_object_names.rst b/source/manual/logic_nodes/scene/collections/get_object_names.rst index a26de877..e52f82ca 100644 --- a/source/manual/logic_nodes/scene/collections/get_object_names.rst +++ b/source/manual/logic_nodes/scene/collections/get_object_names.rst @@ -1,10 +1,10 @@ -.. _ln-get_object_names: - .. figure:: /images/logic_nodes/scene/collections/ln-get_object_names.png :align: right :width: 215 :alt: Get Object Names Node +.. _ln-get_object_names: + ======================= Get Object Names ======================= diff --git a/source/manual/logic_nodes/scene/collections/get_objects.rst b/source/manual/logic_nodes/scene/collections/get_objects.rst index 8ce3e562..18fb7986 100644 --- a/source/manual/logic_nodes/scene/collections/get_objects.rst +++ b/source/manual/logic_nodes/scene/collections/get_objects.rst @@ -1,10 +1,10 @@ -.. _ln-get_objects: - .. figure:: /images/logic_nodes/scene/collections/ln-get_objects.png :align: right :width: 215 :alt: Get Objects Node +.. _ln-get_objects: + ======================= Get Objects ======================= diff --git a/source/manual/logic_nodes/scene/collections/remove_overlay_collection.rst b/source/manual/logic_nodes/scene/collections/remove_overlay_collection.rst index 7770a06a..f436fcff 100644 --- a/source/manual/logic_nodes/scene/collections/remove_overlay_collection.rst +++ b/source/manual/logic_nodes/scene/collections/remove_overlay_collection.rst @@ -1,10 +1,10 @@ -.. _ln-remove_overlay_collection: - .. figure:: /images/logic_nodes/scene/collections/ln-remove_overlay_collection.png :align: right :width: 215 :alt: Remove Overlay Collection Node +.. _ln-remove_overlay_collection: + ========================= Remove Overlay Collection ========================= diff --git a/source/manual/logic_nodes/scene/collections/set_collection_visibility.rst b/source/manual/logic_nodes/scene/collections/set_collection_visibility.rst index 2eec9712..3c561bff 100644 --- a/source/manual/logic_nodes/scene/collections/set_collection_visibility.rst +++ b/source/manual/logic_nodes/scene/collections/set_collection_visibility.rst @@ -1,10 +1,10 @@ -.. _ln-set_collection_visibility: - .. figure:: /images/logic_nodes/scene/collections/ln-set_collection_visibility.png :align: right :width: 215 :alt: Set Collection Visibility Node +.. _ln-set_collection_visibility: + ========================= Set Collection Visibility ========================= diff --git a/source/manual/logic_nodes/scene/collections/set_overlay_collection.rst b/source/manual/logic_nodes/scene/collections/set_overlay_collection.rst index f85a6f3a..51e2de65 100644 --- a/source/manual/logic_nodes/scene/collections/set_overlay_collection.rst +++ b/source/manual/logic_nodes/scene/collections/set_overlay_collection.rst @@ -1,10 +1,10 @@ -.. _ln-set_overlay_collection: - .. figure:: /images/logic_nodes/scene/collections/ln-set_overlay_collection.png :align: right :width: 215 :alt: Set Overlay Collection Node +.. _ln-set_overlay_collection: + ======================= Set Overlay Collection ======================= diff --git a/source/manual/logic_nodes/scene/get_gravity.rst b/source/manual/logic_nodes/scene/get_gravity.rst index 55a2b8c5..adc5db5b 100644 --- a/source/manual/logic_nodes/scene/get_gravity.rst +++ b/source/manual/logic_nodes/scene/get_gravity.rst @@ -1,10 +1,10 @@ -.. _ln-get_gravity: - .. figure:: /images/logic_nodes/scene/ln-get_gravity.png :align: right :width: 215 :alt: Get Gravity Node +.. _ln-get_gravity: + =========== Get Gravity =========== diff --git a/source/manual/logic_nodes/scene/get_scene.rst b/source/manual/logic_nodes/scene/get_scene.rst index 58140725..c9df1211 100644 --- a/source/manual/logic_nodes/scene/get_scene.rst +++ b/source/manual/logic_nodes/scene/get_scene.rst @@ -1,10 +1,10 @@ -.. _ln-get_scene: - .. figure:: /images/logic_nodes/scene/ln-get_scene.png :align: right :width: 215 :alt: Get Scene Node +.. _ln-get_scene: + ========== Get Scene ========== diff --git a/source/manual/logic_nodes/scene/get_timescale.rst b/source/manual/logic_nodes/scene/get_timescale.rst index 7feaa914..cf650330 100644 --- a/source/manual/logic_nodes/scene/get_timescale.rst +++ b/source/manual/logic_nodes/scene/get_timescale.rst @@ -1,10 +1,10 @@ -.. _ln-get_timescale: - .. figure:: /images/logic_nodes/scene/ln-get_timescale.png :align: right :width: 215 :alt: Get Timescale Node +.. _ln-get_timescale: + ============= Get Timescale ============= diff --git a/source/manual/logic_nodes/scene/post_fx/add_filter.rst b/source/manual/logic_nodes/scene/post_fx/add_filter.rst index c2ed19d5..b7a5e8a4 100644 --- a/source/manual/logic_nodes/scene/post_fx/add_filter.rst +++ b/source/manual/logic_nodes/scene/post_fx/add_filter.rst @@ -1,10 +1,10 @@ -.. _ln-add_filter: - .. figure:: /images/logic_nodes/scene/post_fx/ln-add_filter.png :align: right :width: 215 :alt: Add Filter Node +.. _ln-add_filter: + ======================= Add Filter ======================= diff --git a/source/manual/logic_nodes/scene/post_fx/remove_filter.rst b/source/manual/logic_nodes/scene/post_fx/remove_filter.rst index c3dcfd73..24b4ad8c 100644 --- a/source/manual/logic_nodes/scene/post_fx/remove_filter.rst +++ b/source/manual/logic_nodes/scene/post_fx/remove_filter.rst @@ -1,10 +1,10 @@ -.. _ln-remove_filter: - .. figure:: /images/logic_nodes/scene/post_fx/ln-remove_filter.png :align: right :width: 215 :alt: Remove Filter Node +.. _ln-remove_filter: + ======================= Remove Filter ======================= diff --git a/source/manual/logic_nodes/scene/post_fx/set_filter_state.rst b/source/manual/logic_nodes/scene/post_fx/set_filter_state.rst index 13931ab6..43d61b33 100644 --- a/source/manual/logic_nodes/scene/post_fx/set_filter_state.rst +++ b/source/manual/logic_nodes/scene/post_fx/set_filter_state.rst @@ -1,10 +1,10 @@ -.. _ln-set_filter_state: - .. figure:: /images/logic_nodes/scene/post_fx/ln-set_filter_state.png :align: right :width: 215 :alt: Set Filter State Node +.. _ln-set_filter_state: + ======================= Set Filter State ======================= diff --git a/source/manual/logic_nodes/scene/post_fx/toggle_filter.rst b/source/manual/logic_nodes/scene/post_fx/toggle_filter.rst index 632378b1..30191025 100644 --- a/source/manual/logic_nodes/scene/post_fx/toggle_filter.rst +++ b/source/manual/logic_nodes/scene/post_fx/toggle_filter.rst @@ -1,10 +1,10 @@ -.. _ln-toggle_filter: - .. figure:: /images/logic_nodes/scene/post_fx/ln-toggle_filter.png :align: right :width: 215 :alt: Toggle Filter Node +.. _ln-toggle_filter: + ======================= Toggle Filter ======================= diff --git a/source/manual/logic_nodes/scene/set_gravity.rst b/source/manual/logic_nodes/scene/set_gravity.rst index c3529e1c..e857c9c2 100644 --- a/source/manual/logic_nodes/scene/set_gravity.rst +++ b/source/manual/logic_nodes/scene/set_gravity.rst @@ -1,10 +1,10 @@ -.. _ln-set_gravity: - .. figure:: /images/logic_nodes/scene/ln-set_gravity.png :align: right :width: 215 :alt: Set Gravity Node +.. _ln-set_gravity: + =========== Set Gravity =========== diff --git a/source/manual/logic_nodes/scene/set_scene.rst b/source/manual/logic_nodes/scene/set_scene.rst index 0c2778cc..ae69bcb1 100644 --- a/source/manual/logic_nodes/scene/set_scene.rst +++ b/source/manual/logic_nodes/scene/set_scene.rst @@ -1,10 +1,10 @@ -.. _ln-set_scene: - .. figure:: /images/logic_nodes/scene/ln-set_scene.png :align: right :width: 215 :alt: Set Scene Node +.. _ln-set_scene: + ========== Set Scene ========== diff --git a/source/manual/logic_nodes/scene/set_timescale.rst b/source/manual/logic_nodes/scene/set_timescale.rst index 05b6d14e..95b40059 100644 --- a/source/manual/logic_nodes/scene/set_timescale.rst +++ b/source/manual/logic_nodes/scene/set_timescale.rst @@ -1,10 +1,10 @@ -.. _ln-set_timescale: - .. figure:: /images/logic_nodes/scene/ln-set_timescale.png :align: right :width: 215 :alt: Set Timescale Node +.. _ln-set_timescale: + ============= Set Timescale ============= diff --git a/source/manual/logic_nodes/sound/pause_sound.rst b/source/manual/logic_nodes/sound/pause_sound.rst index 7d86a64b..ae2e9140 100644 --- a/source/manual/logic_nodes/sound/pause_sound.rst +++ b/source/manual/logic_nodes/sound/pause_sound.rst @@ -1,10 +1,10 @@ -.. _ln-pause_sound: - .. figure:: /images/logic_nodes/sound/ln-pause_sound.png :align: right :width: 215 :alt: Pause Sound Node +.. _ln-pause_sound: + ====================== Pause Sound ====================== @@ -28,10 +28,7 @@ Example +++++++ .. figure:: /images/logic_nodes/sound/ln-pause_sound-example.png - :align: center :width: 100% :alt: Pause Sound Node -| - This example will play sound when :kbd:`Space` key is pressed, will pause sound when :kbd:`P` is pressed, and will resume sound when :kbd:`E` key is pressed. diff --git a/source/manual/logic_nodes/sound/resume_sound.rst b/source/manual/logic_nodes/sound/resume_sound.rst index df96e630..e21efb69 100644 --- a/source/manual/logic_nodes/sound/resume_sound.rst +++ b/source/manual/logic_nodes/sound/resume_sound.rst @@ -1,10 +1,10 @@ -.. _ln-resume_sound: - .. figure:: /images/logic_nodes/sound/ln-resume_sound.png :align: right :width: 215 :alt: Resume Sound Node +.. _ln-resume_sound: + ====================== Resume Sound ====================== diff --git a/source/manual/logic_nodes/sound/start_sound.rst b/source/manual/logic_nodes/sound/start_sound.rst index ec5e6305..654466f0 100644 --- a/source/manual/logic_nodes/sound/start_sound.rst +++ b/source/manual/logic_nodes/sound/start_sound.rst @@ -1,10 +1,10 @@ -.. _ln-start_sound: - .. figure:: /images/logic_nodes/sound/ln-start_sound.png :align: right :width: 265 :alt: Start Sound Node +.. _ln-start_sound: + ====================== Start Sound ====================== diff --git a/source/manual/logic_nodes/sound/start_speaker.rst b/source/manual/logic_nodes/sound/start_speaker.rst index de9217ed..a6ccfbba 100644 --- a/source/manual/logic_nodes/sound/start_speaker.rst +++ b/source/manual/logic_nodes/sound/start_speaker.rst @@ -1,10 +1,10 @@ -.. _logic_nodes-start_speaker: - .. figure:: /images/logic_nodes/sound/ln-start_speaker.png :align: right :width: 215 :alt: Start Speaker Node +.. _ln-start_speaker: + ====================== Start Speaker ====================== diff --git a/source/manual/logic_nodes/sound/stop_all_sounds.rst b/source/manual/logic_nodes/sound/stop_all_sounds.rst index 880bfdfd..5f430a49 100644 --- a/source/manual/logic_nodes/sound/stop_all_sounds.rst +++ b/source/manual/logic_nodes/sound/stop_all_sounds.rst @@ -1,10 +1,10 @@ -.. _logic_nodes-stop_all_sounds: - .. figure:: /images/logic_nodes/sound/ln-stop_all_sounds.png :align: right :width: 215 :alt: Stop All Sounds +.. _ln-stop_all_sounds: + ====================== Stop All Sounds ====================== diff --git a/source/manual/logic_nodes/sound/stop_sound.rst b/source/manual/logic_nodes/sound/stop_sound.rst index 495192de..2a111478 100644 --- a/source/manual/logic_nodes/sound/stop_sound.rst +++ b/source/manual/logic_nodes/sound/stop_sound.rst @@ -1,10 +1,10 @@ -.. _ln-stop_sound: - .. figure:: /images/logic_nodes/sound/ln-stop_sound.png :align: right :width: 215 :alt: Stop Sound Node +.. _ln-stop_sound: + ====================== Stop Sound ====================== diff --git a/source/manual/logic_nodes/time/barrier.rst b/source/manual/logic_nodes/time/barrier.rst index f7971204..bb6a791e 100644 --- a/source/manual/logic_nodes/time/barrier.rst +++ b/source/manual/logic_nodes/time/barrier.rst @@ -1,10 +1,10 @@ -.. _ln-barrier: - .. figure:: /images/logic_nodes/time/ln-barrier.png :align: right :width: 215 :alt: Barrier Node +.. _ln-barrier: + ====================== Barrier ====================== diff --git a/source/manual/logic_nodes/time/delay.rst b/source/manual/logic_nodes/time/delay.rst index 106c0a1b..a08bbc27 100644 --- a/source/manual/logic_nodes/time/delay.rst +++ b/source/manual/logic_nodes/time/delay.rst @@ -1,10 +1,10 @@ -.. _ln-delay: - .. figure:: /images/logic_nodes/time/ln-delay.png :align: right :width: 215 :alt: Delay Node +.. _ln-delay: + ====================== Delay ====================== diff --git a/source/manual/logic_nodes/time/delta_factor.rst b/source/manual/logic_nodes/time/delta_factor.rst index c417c784..b838e049 100644 --- a/source/manual/logic_nodes/time/delta_factor.rst +++ b/source/manual/logic_nodes/time/delta_factor.rst @@ -1,10 +1,10 @@ -.. _ln-delta_factor: - .. figure:: /images/logic_nodes/time/ln-delta_factor.png :align: right :width: 215 :alt: Delta Factor Node +.. _ln-delta_factor: + ====================== Delta Factor ====================== diff --git a/source/manual/logic_nodes/time/pulsify.rst b/source/manual/logic_nodes/time/pulsify.rst index 281b47de..82209bad 100644 --- a/source/manual/logic_nodes/time/pulsify.rst +++ b/source/manual/logic_nodes/time/pulsify.rst @@ -1,10 +1,10 @@ -.. _ln-pulsify: - .. figure:: /images/logic_nodes/time/ln-pulsify.png :align: right :width: 215 :alt: Pulsify Node +.. _ln-pulsify: + ====================== Pulsify ====================== diff --git a/source/manual/logic_nodes/time/time_data.rst b/source/manual/logic_nodes/time/time_data.rst index a7174578..93f6f195 100644 --- a/source/manual/logic_nodes/time/time_data.rst +++ b/source/manual/logic_nodes/time/time_data.rst @@ -1,10 +1,10 @@ -.. _ln-time_data: - .. figure:: /images/logic_nodes/time/ln-time_data.png :align: right :width: 215 :alt: Time Data Node +.. _ln-time_data: + ====================== Time Data ====================== diff --git a/source/manual/logic_nodes/time/timer.rst b/source/manual/logic_nodes/time/timer.rst index 732e996c..212ccfe5 100644 --- a/source/manual/logic_nodes/time/timer.rst +++ b/source/manual/logic_nodes/time/timer.rst @@ -1,10 +1,10 @@ -.. _ln-timer: - .. figure:: /images/logic_nodes/time/ln-timer.png :align: right :width: 215 :alt: Timer Node +.. _ln-timer: + ====================== Timer ====================== @@ -23,3 +23,6 @@ Outputs When Elapsed Condition/node to execute when timer has elapsed. + +.. note:: + *Timer* node is tied to the CPU clock, not to game FPS. diff --git a/source/manual/logic_nodes/ui/add_widget.rst b/source/manual/logic_nodes/ui/add_widget.rst index 1c73f77e..c335521b 100644 --- a/source/manual/logic_nodes/ui/add_widget.rst +++ b/source/manual/logic_nodes/ui/add_widget.rst @@ -1,10 +1,10 @@ -.. _ln-add_widget: - .. figure:: /images/logic_nodes/ui/ln-add_widget.png :align: right :width: 215 :alt: Add Widget Node +.. _ln-add_widget: + ========== Add Widget ========== diff --git a/source/manual/logic_nodes/ui/get_widget_attribute.rst b/source/manual/logic_nodes/ui/get_widget_attribute.rst index 1c516801..dfb78771 100644 --- a/source/manual/logic_nodes/ui/get_widget_attribute.rst +++ b/source/manual/logic_nodes/ui/get_widget_attribute.rst @@ -1,10 +1,10 @@ -.. _ln-get_widget_attribute: - .. figure:: /images/logic_nodes/ui/ln-get_widget_attribute.png :align: right :width: 215 :alt: Get Widget Attribute Node +.. _ln-get_widget_attribute: + ============================= Get Widget Attribute ============================= diff --git a/source/manual/logic_nodes/ui/set_custom_cursor.rst b/source/manual/logic_nodes/ui/set_custom_cursor.rst index beee6da9..f5825f63 100644 --- a/source/manual/logic_nodes/ui/set_custom_cursor.rst +++ b/source/manual/logic_nodes/ui/set_custom_cursor.rst @@ -1,10 +1,10 @@ -.. _ln-set_custom_cursor: - .. figure:: /images/logic_nodes/ui/ln-set_custom_cursor.png :align: right :width: 215 :alt: Set Custom Cursor Node +.. _ln-set_custom_cursor: + ============================= Set Custom Cursor ============================= diff --git a/source/manual/logic_nodes/ui/set_widget_attribute.rst b/source/manual/logic_nodes/ui/set_widget_attribute.rst index da2cb395..6e68973d 100644 --- a/source/manual/logic_nodes/ui/set_widget_attribute.rst +++ b/source/manual/logic_nodes/ui/set_widget_attribute.rst @@ -1,10 +1,10 @@ -.. _ln-set_widget_attribute: - .. figure:: /images/logic_nodes/ui/ln-set_widget_attribute.png :align: right :width: 215 :alt: Set Widget Attribute Node +.. _ln-set_widget_attribute: + ============================= Set Widget Attribute ============================= diff --git a/source/manual/logic_nodes/ui/widgets/create_button.rst b/source/manual/logic_nodes/ui/widgets/create_button.rst index 0a2e693a..f23619db 100644 --- a/source/manual/logic_nodes/ui/widgets/create_button.rst +++ b/source/manual/logic_nodes/ui/widgets/create_button.rst @@ -1,10 +1,10 @@ -.. _ln-create_button: - .. figure:: /images/logic_nodes/ui/widgets/ln-create_button.png :align: right :width: 215 :alt: Create Button Node +.. _ln-create_button: + ======================== Create Button ======================== diff --git a/source/manual/logic_nodes/ui/widgets/create_canvas.rst b/source/manual/logic_nodes/ui/widgets/create_canvas.rst index 92a795e2..8896bc79 100644 --- a/source/manual/logic_nodes/ui/widgets/create_canvas.rst +++ b/source/manual/logic_nodes/ui/widgets/create_canvas.rst @@ -1,10 +1,10 @@ -.. _ln-create_canvas: - .. figure:: /images/logic_nodes/ui/widgets/ln-create_canvas.png :align: right :width: 215 :alt: Create Canvas Node +.. _ln-create_canvas: + ======================== Create Canvas ======================== diff --git a/source/manual/logic_nodes/ui/widgets/create_image.rst b/source/manual/logic_nodes/ui/widgets/create_image.rst index 8a3ce52b..46e56173 100644 --- a/source/manual/logic_nodes/ui/widgets/create_image.rst +++ b/source/manual/logic_nodes/ui/widgets/create_image.rst @@ -1,10 +1,10 @@ -.. _ln-create_image: - .. figure:: /images/logic_nodes/ui/widgets/ln-create_image.png :align: right :width: 215 :alt: Create Image Node +.. _ln-create_image: + ======================== Create Image ======================== diff --git a/source/manual/logic_nodes/ui/widgets/create_label.rst b/source/manual/logic_nodes/ui/widgets/create_label.rst index e929dd0a..e11bb3e6 100644 --- a/source/manual/logic_nodes/ui/widgets/create_label.rst +++ b/source/manual/logic_nodes/ui/widgets/create_label.rst @@ -1,10 +1,10 @@ -.. _ln-create_label: - .. figure:: /images/logic_nodes/ui/widgets/ln-create_label.png :align: right :width: 215 :alt: Create Label Node +.. _ln-create_label: + ======================== Create Label ======================== diff --git a/source/manual/logic_nodes/ui/widgets/create_layout.rst b/source/manual/logic_nodes/ui/widgets/create_layout.rst index 87899668..6359235f 100644 --- a/source/manual/logic_nodes/ui/widgets/create_layout.rst +++ b/source/manual/logic_nodes/ui/widgets/create_layout.rst @@ -1,10 +1,10 @@ -.. _ln-create_layout: - .. figure:: /images/logic_nodes/ui/widgets/ln-create_layout.png :align: right :width: 215 :alt: Create Layout Node +.. _ln-create_layout: + ======================== Create Layout ======================== diff --git a/source/manual/logic_nodes/ui/widgets/create_slider.rst b/source/manual/logic_nodes/ui/widgets/create_slider.rst index 12035487..75a13616 100644 --- a/source/manual/logic_nodes/ui/widgets/create_slider.rst +++ b/source/manual/logic_nodes/ui/widgets/create_slider.rst @@ -1,10 +1,10 @@ -.. _ln-create_slider: - .. figure:: /images/logic_nodes/ui/widgets/ln-create_slider.png :align: right :width: 215 :alt: Create Slider Node +.. _ln-create_slider: + ======================== Create Slider ======================== diff --git a/source/manual/logic_nodes/utility/draw.rst b/source/manual/logic_nodes/utility/draw.rst index ace4e8c3..7239ae5f 100644 --- a/source/manual/logic_nodes/utility/draw.rst +++ b/source/manual/logic_nodes/utility/draw.rst @@ -1,10 +1,10 @@ -.. _ln-draw: - .. figure:: /images/logic_nodes/utility/ln-draw.png :align: right :width: 215 :alt: Draw Node +.. _ln-draw: + ============================= Draw ============================= diff --git a/source/manual/logic_nodes/utility/print.rst b/source/manual/logic_nodes/utility/print.rst index 8b74f609..5c337044 100644 --- a/source/manual/logic_nodes/utility/print.rst +++ b/source/manual/logic_nodes/utility/print.rst @@ -1,10 +1,10 @@ -.. _ln-print: - .. figure:: /images/logic_nodes/utility/ln-print.png :align: right :width: 215 :alt: Print Node +.. _ln-print: + ============================= Print ============================= diff --git a/source/manual/logic_nodes/values/boolean.rst b/source/manual/logic_nodes/values/boolean.rst index c2e751e1..8fa05e01 100644 --- a/source/manual/logic_nodes/values/boolean.rst +++ b/source/manual/logic_nodes/values/boolean.rst @@ -1,10 +1,10 @@ -.. _ln-boolean: - .. figure:: /images/logic_nodes/values/ln-boolean.png :align: right :width: 215 :alt: Boolean Node +.. _ln-boolean: + ======================== Boolean ======================== diff --git a/source/manual/logic_nodes/values/file_path.rst b/source/manual/logic_nodes/values/file_path.rst index fb2d3231..42e39de9 100644 --- a/source/manual/logic_nodes/values/file_path.rst +++ b/source/manual/logic_nodes/values/file_path.rst @@ -1,10 +1,10 @@ -.. _ln-file_path: - .. figure:: /images/logic_nodes/values/ln-file_path.png :align: right :width: 215 :alt: File Path Node +.. _ln-file_path: + ======================== File Path ======================== diff --git a/source/manual/logic_nodes/values/float.rst b/source/manual/logic_nodes/values/float.rst index 3d1f1e55..5ca5129b 100644 --- a/source/manual/logic_nodes/values/float.rst +++ b/source/manual/logic_nodes/values/float.rst @@ -1,10 +1,10 @@ -.. _ln-float: - .. figure:: /images/logic_nodes/values/ln-float.png :align: right :width: 215 :alt: Float Node +.. _ln-float: + ======================== Float ======================== diff --git a/source/manual/logic_nodes/values/formatted_string.rst b/source/manual/logic_nodes/values/formatted_string.rst index b887abaf..d992dd90 100644 --- a/source/manual/logic_nodes/values/formatted_string.rst +++ b/source/manual/logic_nodes/values/formatted_string.rst @@ -1,10 +1,10 @@ -.. _ln-formatted_string: - .. figure:: /images/logic_nodes/values/ln-formatted_string.png :align: right :width: 215 :alt: Formatted String Node +.. _ln-formatted_string: + ======================== Formatted String ======================== @@ -31,19 +31,13 @@ Example +++++++ .. figure:: /images/logic_nodes/values/ln-formatted_string_nodes.png - :align: center :width: 500 :alt: Formatted String Node Example -| - Above setup will pull text values from two String nodes, format them through Formatted String, and print the resulting string into console, on ``LMB`` click. .. figure:: /images/logic_nodes/values/ln-formatted_string_output.png - :align: center :width: 400 :alt: Formatted String Node Output -| - Printed result in System Console. diff --git a/source/manual/logic_nodes/values/integer.rst b/source/manual/logic_nodes/values/integer.rst index 1e953f58..bf00596e 100644 --- a/source/manual/logic_nodes/values/integer.rst +++ b/source/manual/logic_nodes/values/integer.rst @@ -1,10 +1,10 @@ -.. _ln-integer: - .. figure:: /images/logic_nodes/values/ln-integer.png :align: right :width: 215 :alt: Integer Node +.. _ln-integer: + ======================== Integer ======================== diff --git a/source/manual/logic_nodes/values/invert.rst b/source/manual/logic_nodes/values/invert.rst index cdb42959..4258601e 100644 --- a/source/manual/logic_nodes/values/invert.rst +++ b/source/manual/logic_nodes/values/invert.rst @@ -1,10 +1,10 @@ -.. _ln-invert: - .. figure:: /images/logic_nodes/values/ln-invert.png :align: right :width: 215 :alt: Invert Node +.. _ln-invert: + ======================== Invert ======================== diff --git a/source/manual/logic_nodes/values/properties/copy_property_from_object.rst b/source/manual/logic_nodes/values/properties/copy_property_from_object.rst index dc281321..81cee9f4 100644 --- a/source/manual/logic_nodes/values/properties/copy_property_from_object.rst +++ b/source/manual/logic_nodes/values/properties/copy_property_from_object.rst @@ -1,10 +1,10 @@ -.. _ln-copy_property_from_object: - .. figure:: /images/logic_nodes/values/properties/ln-copy_property_from_object.png :align: right :width: 215 :alt: Copy Property From Object Node +.. _ln-copy_property_from_object: + ============================= Copy Property From Object ============================= diff --git a/source/manual/logic_nodes/values/properties/evaluate_object_property.rst b/source/manual/logic_nodes/values/properties/evaluate_object_property.rst index f7f44d69..0c5a15d0 100644 --- a/source/manual/logic_nodes/values/properties/evaluate_object_property.rst +++ b/source/manual/logic_nodes/values/properties/evaluate_object_property.rst @@ -1,10 +1,10 @@ -.. _ln-evaluate_object_property: - .. figure:: /images/logic_nodes/values/properties/ln-evaluate_object_property.png :align: right :width: 215 :alt: Evaluate Object Property Node +.. _ln-evaluate_object_property: + ======================== Evaluate Object Property ======================== diff --git a/source/manual/logic_nodes/values/properties/get_global_property.rst b/source/manual/logic_nodes/values/properties/get_global_property.rst index 6d11407a..1a8fa5ba 100644 --- a/source/manual/logic_nodes/values/properties/get_global_property.rst +++ b/source/manual/logic_nodes/values/properties/get_global_property.rst @@ -1,10 +1,10 @@ -.. _ln-get_global_property: - .. figure:: /images/logic_nodes/values/properties/ln-get_global_property.png :align: right :width: 215 :alt: Get Global Property Node +.. _ln-get_global_property: + ======================== Get Global Property ======================== diff --git a/source/manual/logic_nodes/values/properties/get_object_property.rst b/source/manual/logic_nodes/values/properties/get_object_property.rst index 0aaf10a9..22a2e99b 100644 --- a/source/manual/logic_nodes/values/properties/get_object_property.rst +++ b/source/manual/logic_nodes/values/properties/get_object_property.rst @@ -1,10 +1,10 @@ -.. _ln-get_object_property: - .. figure:: /images/logic_nodes/values/properties/ln-get_object_property.png :align: right :width: 215 :alt: Get Object Property Node +.. _ln-get_object_property: + ======================== Get Object Property ======================== diff --git a/source/manual/logic_nodes/values/properties/get_tree_property.rst b/source/manual/logic_nodes/values/properties/get_tree_property.rst index 0a48017b..e90e0b06 100644 --- a/source/manual/logic_nodes/values/properties/get_tree_property.rst +++ b/source/manual/logic_nodes/values/properties/get_tree_property.rst @@ -1,10 +1,10 @@ -.. _ln-get_tree_property: - .. figure:: /images/logic_nodes/values/properties/ln-get_tree_property.png :align: right :width: 215 :alt: Get Tree Property Node +.. _ln-get_tree_property: + ======================== Get Tree Property ======================== diff --git a/source/manual/logic_nodes/values/properties/modify_object_property.rst b/source/manual/logic_nodes/values/properties/modify_object_property.rst index 60b48efb..009f5266 100644 --- a/source/manual/logic_nodes/values/properties/modify_object_property.rst +++ b/source/manual/logic_nodes/values/properties/modify_object_property.rst @@ -1,10 +1,10 @@ -.. _ln-modify_object_property: - .. figure:: /images/logic_nodes/values/properties/ln-modify_object_property.png :align: right :width: 215 :alt: Modify Object Property Node +.. _ln-modify_object_property: + ======================== Modify Object Property ======================== diff --git a/source/manual/logic_nodes/values/properties/object_has_property.rst b/source/manual/logic_nodes/values/properties/object_has_property.rst index c17f8a2e..50f3efee 100644 --- a/source/manual/logic_nodes/values/properties/object_has_property.rst +++ b/source/manual/logic_nodes/values/properties/object_has_property.rst @@ -1,10 +1,10 @@ -.. _ln-object_has_property: - .. figure:: /images/logic_nodes/values/properties/ln-object_has_property.png :align: right :width: 215 :alt: Object Has Property Node +.. _ln-object_has_property: + ======================== Object Has Property ======================== diff --git a/source/manual/logic_nodes/values/properties/set_global_property.rst b/source/manual/logic_nodes/values/properties/set_global_property.rst index 7d81ca8c..5a032cdb 100644 --- a/source/manual/logic_nodes/values/properties/set_global_property.rst +++ b/source/manual/logic_nodes/values/properties/set_global_property.rst @@ -1,10 +1,10 @@ -.. _ln-set_global_property: - .. figure:: /images/logic_nodes/values/properties/ln-set_global_property.png :align: right :width: 215 :alt: Set Global Property Node +.. _ln-set_global_property: + ======================== Set Global Property ======================== diff --git a/source/manual/logic_nodes/values/properties/set_object_property.rst b/source/manual/logic_nodes/values/properties/set_object_property.rst index facf6098..4a71f680 100644 --- a/source/manual/logic_nodes/values/properties/set_object_property.rst +++ b/source/manual/logic_nodes/values/properties/set_object_property.rst @@ -1,10 +1,10 @@ -.. _ln-set_object_property: - .. figure:: /images/logic_nodes/values/properties/ln-set_object_property.png :align: right :width: 215 :alt: Set Object Property Node +.. _ln-set_object_property: + ======================== Set Object Property ======================== diff --git a/source/manual/logic_nodes/values/properties/set_tree_property.rst b/source/manual/logic_nodes/values/properties/set_tree_property.rst index f9cfb37d..a0d7fb61 100644 --- a/source/manual/logic_nodes/values/properties/set_tree_property.rst +++ b/source/manual/logic_nodes/values/properties/set_tree_property.rst @@ -1,10 +1,10 @@ -.. _ln-set_tree_property: - .. figure:: /images/logic_nodes/values/properties/ln-set_tree_property.png :align: right :width: 215 :alt: Set Tree Property Node +.. _ln-set_tree_property: + ======================== Set Tree Property ======================== diff --git a/source/manual/logic_nodes/values/properties/toggle_object_property.rst b/source/manual/logic_nodes/values/properties/toggle_object_property.rst index a43340f5..28daaffa 100644 --- a/source/manual/logic_nodes/values/properties/toggle_object_property.rst +++ b/source/manual/logic_nodes/values/properties/toggle_object_property.rst @@ -1,10 +1,10 @@ -.. _ln-toggle_object_property: - .. figure:: /images/logic_nodes/values/properties/ln-toggle_object_property.png :align: right :width: 215 :alt: Toggle Object Property Node +.. _ln-toggle_object_property: + ======================== Toggle Object Property ======================== diff --git a/source/manual/logic_nodes/values/random_value.rst b/source/manual/logic_nodes/values/random_value.rst index 304a82a5..4ed776f4 100644 --- a/source/manual/logic_nodes/values/random_value.rst +++ b/source/manual/logic_nodes/values/random_value.rst @@ -1,10 +1,10 @@ -.. _ln-random_value: - .. figure:: /images/logic_nodes/values/ln-random_value.png :align: right :width: 215 :alt: Random Value Node +.. _ln-random_value: + ======================== Random Value ======================== diff --git a/source/manual/logic_nodes/values/store_value.rst b/source/manual/logic_nodes/values/store_value.rst index c5e321ef..f685008e 100644 --- a/source/manual/logic_nodes/values/store_value.rst +++ b/source/manual/logic_nodes/values/store_value.rst @@ -1,10 +1,10 @@ -.. _ln-store_value: - .. figure:: /images/logic_nodes/values/ln-store_value.png :align: right :width: 215 :alt: Store Value Node +.. _ln-store_value: + ======================== Store Value ======================== diff --git a/source/manual/logic_nodes/values/string.rst b/source/manual/logic_nodes/values/string.rst index eb951ca9..43e3ea8b 100644 --- a/source/manual/logic_nodes/values/string.rst +++ b/source/manual/logic_nodes/values/string.rst @@ -1,10 +1,10 @@ -.. _ln-string: - .. figure:: /images/logic_nodes/values/ln-string.png :align: right :width: 215 :alt: String Node +.. _ln-string: + ======================== String ======================== diff --git a/source/manual/logic_nodes/values/value_switch.rst b/source/manual/logic_nodes/values/value_switch.rst index 3fecec54..f54ac207 100644 --- a/source/manual/logic_nodes/values/value_switch.rst +++ b/source/manual/logic_nodes/values/value_switch.rst @@ -1,10 +1,10 @@ -.. _ln-value_switch: - .. figure:: /images/logic_nodes/values/ln-value_switch.png :align: right :width: 215 :alt: Value Switch Node +.. _ln-value_switch: + ======================== Value Switch ======================== diff --git a/source/manual/logic_nodes/values/value_switch_list.rst b/source/manual/logic_nodes/values/value_switch_list.rst index 45166b12..98e9aa75 100644 --- a/source/manual/logic_nodes/values/value_switch_list.rst +++ b/source/manual/logic_nodes/values/value_switch_list.rst @@ -1,10 +1,10 @@ -.. _ln-value_switch_list: - .. figure:: /images/logic_nodes/values/ln-value_switch_list.png :align: right :width: 215 :alt: Value Switch List Node +.. _ln-value_switch_list: + ======================== Value Switch List ======================== diff --git a/source/manual/logic_nodes/values/value_switch_list_compare.rst b/source/manual/logic_nodes/values/value_switch_list_compare.rst index 203bb86b..9d971d9f 100644 --- a/source/manual/logic_nodes/values/value_switch_list_compare.rst +++ b/source/manual/logic_nodes/values/value_switch_list_compare.rst @@ -1,10 +1,10 @@ -.. _ln-value_switch_list_compare: - .. figure:: /images/logic_nodes/values/ln-value_switch_list_compare.png :align: right :width: 215 :alt: Value Switch List Compare Node +.. _ln-value_switch_list_compare: + ========================== Value Switch List Compare ========================== diff --git a/source/manual/logic_nodes/values/vector/color_rgb.rst b/source/manual/logic_nodes/values/vector/color_rgb.rst index b572f791..f6b17f2c 100644 --- a/source/manual/logic_nodes/values/vector/color_rgb.rst +++ b/source/manual/logic_nodes/values/vector/color_rgb.rst @@ -1,10 +1,10 @@ -.. _ln-color_rgb: - .. figure:: /images/logic_nodes/values/vector/ln-color_rgb.png :align: right :width: 215 :alt: Color RGB Node +.. _ln-color_rgb: + ======================== Color RGB ======================== diff --git a/source/manual/logic_nodes/values/vector/color_rgba.rst b/source/manual/logic_nodes/values/vector/color_rgba.rst index d0689dfd..6c910ca3 100644 --- a/source/manual/logic_nodes/values/vector/color_rgba.rst +++ b/source/manual/logic_nodes/values/vector/color_rgba.rst @@ -1,10 +1,10 @@ -.. _ln-color_rgba: - .. figure:: /images/logic_nodes/values/vector/ln-color_rgba.png :align: right :width: 215 :alt: Color RGBA Node +.. _ln-color_rgba: + ======================== Color RGBA ======================== diff --git a/source/manual/logic_nodes/values/vector/combine_xy.rst b/source/manual/logic_nodes/values/vector/combine_xy.rst index d8f2d8d3..6757b9ed 100644 --- a/source/manual/logic_nodes/values/vector/combine_xy.rst +++ b/source/manual/logic_nodes/values/vector/combine_xy.rst @@ -1,10 +1,10 @@ -.. _ln-combine_xy: - .. figure:: /images/logic_nodes/values/vector/ln-combine_xy.png :align: right :width: 215 :alt: Combine XY Node +.. _ln-combine_xy: + ======================== Combine XY ======================== diff --git a/source/manual/logic_nodes/values/vector/combine_xyz.rst b/source/manual/logic_nodes/values/vector/combine_xyz.rst index 6f641b3a..78cb620d 100644 --- a/source/manual/logic_nodes/values/vector/combine_xyz.rst +++ b/source/manual/logic_nodes/values/vector/combine_xyz.rst @@ -1,10 +1,10 @@ -.. _ln-combine_xyz: - .. figure:: /images/logic_nodes/values/vector/ln-combine_xyz.png :align: right :width: 215 :alt: Combine XYZ Node +.. _ln-combine_xyz: + ======================== Combine XYZ ======================== diff --git a/source/manual/logic_nodes/values/vector/combine_xyzw.rst b/source/manual/logic_nodes/values/vector/combine_xyzw.rst index e5344015..81ebe1eb 100644 --- a/source/manual/logic_nodes/values/vector/combine_xyzw.rst +++ b/source/manual/logic_nodes/values/vector/combine_xyzw.rst @@ -1,10 +1,10 @@ -.. _ln-combine_xyzw: - .. figure:: /images/logic_nodes/values/vector/ln-combine_xyzw.png :align: right :width: 215 :alt: Combine XYZW Node +.. _ln-combine_xyzw: + ======================== Combine XYZW ======================== diff --git a/source/manual/logic_nodes/values/vector/euler.rst b/source/manual/logic_nodes/values/vector/euler.rst index 8319266a..35481d61 100644 --- a/source/manual/logic_nodes/values/vector/euler.rst +++ b/source/manual/logic_nodes/values/vector/euler.rst @@ -1,10 +1,10 @@ -.. _ln-euler: - .. figure:: /images/logic_nodes/values/vector/ln-euler.png :align: right :width: 215 :alt: Euler Node +.. _ln-euler: + ======================== Euler ======================== diff --git a/source/manual/logic_nodes/values/vector/resize_vector.rst b/source/manual/logic_nodes/values/vector/resize_vector.rst index d7ecde2d..fe17aa0f 100644 --- a/source/manual/logic_nodes/values/vector/resize_vector.rst +++ b/source/manual/logic_nodes/values/vector/resize_vector.rst @@ -1,10 +1,10 @@ -.. _ln-resize_vector: - .. figure:: /images/logic_nodes/values/vector/ln-resize_vector.png :align: right :width: 215 :alt: Resize Vector Node +.. _ln-resize_vector: + ======================== Resize Vector ======================== diff --git a/source/manual/logic_nodes/values/vector/separate_xy.rst b/source/manual/logic_nodes/values/vector/separate_xy.rst index 2eb5253e..0568fc2d 100644 --- a/source/manual/logic_nodes/values/vector/separate_xy.rst +++ b/source/manual/logic_nodes/values/vector/separate_xy.rst @@ -1,10 +1,10 @@ -.. _ln-separate_xy: - .. figure:: /images/logic_nodes/values/vector/ln-separate_xy.png :align: right :width: 215 :alt: Separate XY Node +.. _ln-separate_xy: + ======================== Separate XY ======================== diff --git a/source/manual/logic_nodes/values/vector/separate_xyz.rst b/source/manual/logic_nodes/values/vector/separate_xyz.rst index 81d7b058..a1541d30 100644 --- a/source/manual/logic_nodes/values/vector/separate_xyz.rst +++ b/source/manual/logic_nodes/values/vector/separate_xyz.rst @@ -1,10 +1,10 @@ -.. _ln-separate_xyz: - .. figure:: /images/logic_nodes/values/vector/ln-separate_xyz.png :align: right :width: 215 :alt: Separate XYZ Node +.. _ln-separate_xyz: + ======================== Separate XYZ ======================== diff --git a/source/manual/physics/introduction.rst b/source/manual/physics/introduction.rst index fb490947..d6ab5da4 100644 --- a/source/manual/physics/introduction.rst +++ b/source/manual/physics/introduction.rst @@ -75,47 +75,31 @@ Your options include: Object Constraints Properties Editor -* **Physics sensors and actuators:** Except for maybe the case of a Rube Goldberg machine, where everything happens in a predetermined manner, -most games would be pretty boring if there were no way to make an object move at a user's command or to trigger a reaction when two objects collide. -Actuators and sensors fulfill these two roles, respectively. Actuators are part of logic brick that carries out an action (such as applying a force -to the object to make it move). Sensors are triggers that detect when something happens in the game, such as when two objects touch. A combination of -sensors and actuators makes a game truly interactive, by giving the game engine the ability to make decisions. Figure 6.6 shows the Logic Brick Editor. -In case you forgot, there is a full chapter in this book about logic bricks. +* **Physics sensors and actuators:** Except for maybe the case of a Rube Goldberg machine, where everything happens in a predetermined manner, most games would be pretty boring if there were no way to make an object move at a user's command or to trigger a reaction when two objects collide. Actuators and sensors fulfill these two roles, respectively. Actuators are part of logic brick that carries out an action (such as applying a force to the object to make it move). Sensors are triggers that detect when something happens in the game, such as when two objects touch. A combination of sensors and actuators makes a game truly interactive, by giving the game engine the ability to make decisions. Figure 6.6 shows the Logic Brick Editor. In case you forgot, there is a full chapter in this book about logic bricks. .. figure:: /images/Chapter6/Fig06-06.png Logic Brick Editor -* **Python:** In addition to all the physics settings one can access from the graphic user interface, an extensive Python API is at your disposal. -The Python API gives you programmable control over many aspects of the physics engine. With Python, you can dynamically set many of the physics options -while the game is running. It even allows you to accomplish a few things that are not possible from the graphic interface. For instance, Python -can be used to create realistic vehicle physics. Figure 6.7 shows the Text Editor with a Python script open. +* **Python:** In addition to all the physics settings one can access from the graphic user interface, an extensive Python API is at your disposal. The Python API gives you programmable control over many aspects of the physics engine. With Python, you can dynamically set many of the physics options while the game is running. It even allows you to accomplish a few things that are not possible from the graphic interface. For instance, Python can be used to create realistic vehicle physics. Figure 6.7 shows the Text Editor with a Python script open. .. figure:: /images/Chapter6/Fig06-07.png Text Editor -So now that you have an overview of what physics is all about and where to find all the settings, the rest of the chapter will explain how to use these -settings in combination to achieve various effects. +So now that you have an overview of what physics is all about and where to find all the settings, the rest of the chapter will explain how to use these settings in combination to achieve various effects. Visualizing Physics =================== .. figure:: /images/game_engine-physics-introduction-visualization.png -Go to :menuselection:`Game --> Show Physics Visualization` to show lines representing various attributes -of the Bullet representation of your objects. -Note that these might be easier to see when you turn on Wireframe Mode :kbd:`Z` -before you press :kbd:`P`. -Also note that you can see how the Bullet triangulation is working -(it busts all your Quads to Tris at run-time, but the BGE meshes are still quads at run-time). +Go to :menuselection:`Game --> Show Physics Visualization` to show lines representing various attributes of the Bullet representation of your objects. Note that these might be easier to see when you turn on Wireframe Mode :kbd:`Z` before you press :kbd:`P`. Also note that you can see how the Bullet triangulation is working (it busts all your Quads to Tris at run-time, but the BGE meshes are still quads at run-time). - *RGB/XYZ Widget* -- Representing the object's Local Orientation and Origin. - *Green* -- "sleeping meshes" that are not moving, saving calculations until an external event "wakes" them. -- *White* -- White lines represent active bounding meshes at are undergoing physics calculations, - until such calculations are so small that the object is put to rest. - This is how you can see the effects of the *Collision Bounds*. - - *Thick*, or *Many White Lines* -- A compound collision mesh/meshes. +- *White* -- White lines represent active bounding meshes at are undergoing physics calculations, until such calculations are so small that the object is put to rest. This is how you can see the effects of the *Collision Bounds*. +- *Thick*, or *Many White Lines* -- A compound collision mesh/meshes. - *Violet* -- Bounding meshes for soft bodies. - *Red* -- The bounding box, the outer boundary of object. It is always aligned with global X, Y and Z, and is used to optimize calculations. @@ -146,84 +130,43 @@ Show Framerate and Profile `__ with :menuselection:`Game --> Show Framerate and Profile` enabled. -If you enable :menuselection:`Game --> Show Framerate and Profile`, -it will put some statistics in the upper left area of the game window. +If you enable :menuselection:`Game --> Show Framerate and Profile`, it will put some statistics in the upper left area of the game window. .. seealso:: - These can be very informative, but also a bit cryptic. Moguri has elaborated on their meanings, for us: - `Moguri's blog `__. + These can be very informative, but also a bit cryptic. Moguri has elaborated on their meanings, for us: `Moguri's blog `__. Mesh Deformations ----------------- -As mentioned above, rigid body physics do not affect mesh deformations, -nor do they account for them in the physics model. This leaves you with a few options: +As mentioned above, rigid body physics do not affect mesh deformations, nor do they account for them in the physics model. This leaves you with a few options: Soft Bodies -+++++++++++ +----------- -You can try using a :doc:`soft body `, -but these are fairly hard to configure well. +You can try using a :doc:`soft body `, but these are fairly hard to configure well. Actions -+++++++ - -To use an :doc:`Action Actuator ` -to do the deformation, you have to make a choice. If you use *shape keys* in the Action, -you will be fine as far as the overall collisions (but see below for the note on ``reinstancePhysicsMesh()``). -The mesh itself is both a display and a physics mesh, so there is not much to configure. - -To use an *armature* as the deformer will require a bit of extra thought and effort. -Basically the armature will only deform a mesh if the armature is the parent of that mesh. -But at that point, your mesh will lose its physics responsiveness, and only hang in the air -(it is copying the location/rotation of the armature). -To somewhat fix this you can then parent the armature to a collision mesh -(perhaps a simple box or otherwise very low-poly mesh). -This "Deformation Mesh" will be the physics representative, being type: Dynamic or Rigid Body, -but it will be set to Invisible. Then "display mesh" will be the opposite set to *No Collision*, -but visible. This still leaves the problem mentioned in the previous paragraph. - -When you deform a display mesh, it does not update the corresponding physics mesh. -You can view this evidently when you -enable physics visualization (`Visualizing Physics`_) -- the collision bounds will remain exactly as when they began. -To fix this, you must call ``own.reinstancePhysicsMesh()`` in some form. -Currently this only works on *Triangle Mesh* bounds, not *Convex Hull*. -We have prepared a demonstration file in -`Manual-BGE-Physics-DancingSticks.blend -`__. -Note that, we had to increase -the :menuselection:`World --> Physics --> Physics Steps --> Substeps` to make the collisions work well. -The more basic case is the case the Shapekeyed Action, which you can see in the back area of the scene. -Since it is the only object involved, you can call ``reinstancePhysicsMesh()`` unadorned, -and it will do the right thing. - -The more complicated case is the :menuselection:`Collision Mesh --> Armature --> Display Mesh` cluster, -which you can see in the front of the scene. -What it does in the blend-file is call ``reinstancePhysicsMesh(viz)``, -that is, passing in a reference to the visual mesh. -If we tried to establish this relationship without the use of Python, -we would find that Blender's dependency check system would reject it as a cyclic setup. -This is an example of where Blender's checking is too coarsely-grained, -as this circle is perfectly valid: the grandparent object (the collision mesh) -controls the location/rotation, while the middle object (the armature) -receives the animated Action, where the child (the Display Mesh) receives the deformation, -and passes that on up to the top, harmlessly. Something to note is that the collision mesh is -merely a plane -- that is all it requires for this, -since it will be getting the mesh data from ``viz``. +------- -Ragdolls -++++++++ +To use an :doc:`Action Actuator ` to do the deformation, you have to make a choice. If you use *shape keys* in the Action, you will be fine as far as the overall collisions (but see below for the note on ``reinstancePhysicsMesh()``). The mesh itself is both a display and a physics mesh, so there is not much to configure. + +To use an *armature* as the deformer will require a bit of extra thought and effort. Basically the armature will only deform a mesh if the armature is the parent of that mesh. But at that point, your mesh will lose its physics responsiveness, and only hang in the air (it is copying the location/rotation of the armature). To somewhat fix this you can then parent the armature to a collision mesh (perhaps a simple box or otherwise very low-poly mesh). This "Deformation Mesh" will be the physics representative, being type: Dynamic or Rigid Body, but it will be set to Invisible. Then "display mesh" will be the opposite set to *No Collision*, but visible. This still leaves the problem mentioned in the previous paragraph. + +When you deform a display mesh, it does not update the corresponding physics mesh. You can view this evidently when you enable physics visualization (`Visualizing Physics`_) -- the collision bounds will remain exactly as when they began. To fix this, you must call ``own.reinstancePhysicsMesh()`` in some form. Currently this only works on *Triangle Mesh* bounds, not *Convex Hull*. -A third option is to create your items out of many sub-objects, connected together with *rigid body joints* or similar. -This can be quite a bit more work, but the results can be much more like a realistic response to collisions. -For an add-on that can help you out in the process, check out the -`Blender Ragdoll Implementation Kit -`__. +We have prepared a demonstration file in `Manual-BGE-Physics-DancingSticks.blend `__. +Note that, we had to increase the :menuselection:`World --> Physics --> Physics Steps --> Substeps` to make the collisions work well. The more basic case is the case the Shapekeyed Action, which you can see in the back area of the scene. Since it is the only object involved, you can call ``reinstancePhysicsMesh()`` unadorned, and it will do the right thing. +The more complicated case is the :menuselection:`Collision Mesh --> Armature --> Display Mesh` cluster, which you can see in the front of the scene. What it does in the blend-file is call ``reinstancePhysicsMesh(viz)``, that is, passing in a reference to the visual mesh. If we tried to establish this relationship without the use of Python, we would find that Blender's dependency check system would reject it as a cyclic setup. This is an example of where Blender's checking is too coarsely-grained, as this circle is perfectly valid: the grandparent object (the collision mesh) controls the location/rotation, while the middle object (the armature) receives the animated Action, where the child (the Display Mesh) receives the deformation, and passes that on up to the top, harmlessly. Something to note is that the collision mesh is merely a plane -- that is all it requires for this, since it will be getting the mesh data from ``viz``. + +Ragdolls +-------- + +A third option is to create your items out of many sub-objects, connected together with *rigid body joints* or similar. This can be quite a bit more work, but the results can be much more like a realistic response to collisions. For an add-on that can help you out in the process, check out the `Blender Ragdoll Implementation Kit `__. .. _game-engine-physics-bake-keyframes: @@ -237,21 +180,12 @@ Sometimes you will want to look at: * The `Bullet API Docs `__ * The `Bullet Forums `__ - Recording to Keyframes ---------------------- -Beyond gaming, sometimes you wish to render a complex scene that involves collisions, -multiple forces, friction between multiple bodies, -and air drag or even a simple setup that is just easier to achieve using the real-time physics. +Beyond gaming, sometimes you wish to render a complex scene that involves collisions, multiple forces, friction between multiple bodies, and air drag or even a simple setup that is just easier to achieve using the real-time physics. -Blender provides a way to ''bake'' or ''record'' a physics simulation into keyframes -allowing it then to be played as an action either for animation or games. -Keep in mind that the result of this method is a recording, no longer a simulation. -This means that the result is completely deterministic -(the same every time it is run) and unable to interact with -new objects that are added to the physics simulation after it was recorded. -This may, or not, be desired according to the situation. +Blender provides a way to ''bake'' or ''record'' a physics simulation into keyframes allowing it then to be played as an action either for animation or games. Keep in mind that the result of this method is a recording, no longer a simulation. This means that the result is completely deterministic (the same every time it is run) and unable to interact with new objects that are added to the physics simulation after it was recorded. This may, or not, be desired according to the situation. .. figure:: /images/game_engine-physics-introduction-record_animation.png @@ -265,22 +199,18 @@ All you have to do to achieve this effect is to execute the following script: bla bla bla -it will lock away your keyframes for use in *Blender Render* mode. -You can go back to the 3D View and press :kbd:`Alt-A` to play it back, -or :kbd:`Ctrl-F12` to render it out as an animation. +it will lock away your keyframes for use in *Blender Render* mode. You can go back to the 3D View and press :kbd:`Alt-A` to play it back, or :kbd:`Ctrl-F12` to render it out as an animation. Note that you can also use Game Logic Bricks and scripting. Everything will be recorded. Keyframe Clean-up -+++++++++++++++++ +----------------- .. figure:: /images/game_engine-physics-introduction-dope_sheet_full.png Resulting recorded animation. -*Record Animation* keys redundant data (data that did not change relative to the last frame). -Pressing :kbd:`O` while in the *Dope Sheet* will remove all superfluous keyframes. -Unwanted channels can also be removed. +*Record Animation* keys redundant data (data that did not change relative to the last frame). Pressing :kbd:`O` while in the *Dope Sheet* will remove all superfluous keyframes. Unwanted channels can also be removed. .. figure:: /images/game_engine-physics-introduction-dope_sheet_cleaned.png @@ -290,7 +220,7 @@ Exporting --------- .bullet / Bullet Compatible Engines -+++++++++++++++++++++++++++++++++++ +----------------------------------- You can snapshot the physics world at any time with the following code: @@ -300,5 +230,4 @@ You can snapshot the physics world at any time with the following code: bge.constraints.exportBulletFile("test.bullet") -This will allow importing into other Bullet-based projects. See the -`Bullet Wiki on Serialization `__ for more. +This will allow importing into other Bullet-based projects. See the `Bullet Wiki on Serialization `__ for more. diff --git a/source/manual/python/python_game_engine.rst b/source/manual/python/python_game_engine.rst index 2a4a2a68..7da8f0ec 100644 --- a/source/manual/python/python_game_engine.rst +++ b/source/manual/python/python_game_engine.rst @@ -17,21 +17,13 @@ inside the game engine. This part is divided into four submodules: Integrating Python in the Game Engine ------------------------------------- -In the game engine, the script interface is controller-centric by design. Therefore, you can consider -the Python script simply as a more complex controller to replace the Expression or the Boolean controllers. -In those cases, the script will be responsible for controlling how the sensors are related with the actuators -of a given object. In fact, the sensors, actuators, and even the object where you are calling the script -from are all attributes of the controller. +In the game engine, the script interface is controller-centric by design. Therefore, you can consider the Python script simply as a more complex controller to replace the Expression or the Boolean controllers. In those cases, the script will be responsible for controlling how the sensors are related with the actuators of a given object. In fact, the sensors, actuators, and even the object where you are calling the script from are all attributes of the controller. -As we mentioned earlier, with a Python script you can control external devices, control multiple objects at once, -and much more. However, you will never be free from using a logic brick framework. And from the combination -of logic bricks, individual sensors, global sensors, and actuators, the elegance of your system will arise. +As we mentioned earlier, with a Python script you can control external devices, control multiple objects at once, and much more. However, you will never be free from using a logic brick framework. And from the combination of logic bricks, individual sensors, global sensors, and actuators, the elegance of your system will arise. -In the first example, you will find a very simple case study of how to make your Python controller work. -It will cover the basic behavior of receiving sensors' input in the script and triggering actuators from it. +In the first example, you will find a very simple case study of how to make your Python controller work. It will cover the basic behavior of receiving sensors' input in the script and triggering actuators from it. -Download the example :download:`003_template.zip `, extract it -and load the abracadabra.blend file. +Download the example :download:`003_template.zip `, extract it and load the abracadabra.blend file. .. figure:: /images/Python_Scripting/python-scripting-introduction-to-scripting-05.png @@ -1029,9 +1021,12 @@ This is a list of all the joysticks your computer supports. That means the list if joystick and joystick.connected: print(i, joystick.name, joystick.numAxis, joystick.activeButtons) -For the complete list of all the parameters supported by the Joystick python object, visit the official API: _http://www.blender.org/documentation/blender_python_api_2_66_release/bge.types.SCA_JoystickSensor.html_ + +.. + For the complete list of all the parameters supported by the Joystick python object, visit the official API: _http://www.blender.org/documentation/blender_python_api_2_66_release/bge.types.SCA_JoystickSensor.html_ -A sample file can be found on \Book\Chapter7\joystick.blend. +.. + A sample file can be found on \Book\Chapter7\joystick.blend. Others ****** diff --git a/source/manual/python_components/getting_started/character_controller_templates.rst b/source/manual/python_components/getting_started/character_controller_templates.rst index 464f58bb..52500c14 100644 --- a/source/manual/python_components/getting_started/character_controller_templates.rst +++ b/source/manual/python_components/getting_started/character_controller_templates.rst @@ -8,7 +8,6 @@ These templates were created to help UPBGE users to create games or any kind of .. figure:: /images/Python_Components/Fig-08.png - To use, just select it from template label at script editor and you're done! You can use this template in your projects, even for commercial projects. You only need to give credits to Guilherme Teres Nunes (UnidayStudio) for this. It's very easy to use: Just load this script into your .blend file through template label (or paste it in the same folder that your .blend is), select the object that you want, and attach the script into the object's components using **Register Component** button. Character Controller Component @@ -18,18 +17,26 @@ This component will serve as a **Character Controller** for your game. With this You simply have to create a capsule for your character, set the physics type to "Character" and attach this Component to them. It's very simple to configure: .. figure:: /images/Python_Components/Fig-09.png - :align: left + :align: right Character Controller component * **Activate**: If you want this component running. + * **Walk Speed**: The character's walk speed. + * **Run Speed**: The character's run speed. + * **Max Jumps**: The character's max jumps. Set to :kbd:`0` if you don't want the character to jump. + * **Static Jump Direction**: If you want to make your character jump in a static direction, activate "Static Jump Direction". It means that, if the player wasn't moving when he pressed Space, the character will jump up and the player will not be able to change this during the jump. The same for when he was moving when pressed Space. The jump direction will be the character direction when the player press space. + * **Static Jump Rotation**: Exactly like the Jump Direction, but for the character rotation. + * **Avoid Sliding**: If your character object have Collision Bounds activated, I'd recommend to enable the "Avoid Sliding" option. If so, the component will avoid the character from sliding on ramps. + * **Smooth Character Movement**: You can make the movement gets more smooth by increasing this value (:kbd:`0.0` to :kbd:`1.0`). + * **Make Object Invisible**: Makes the object invisible ingame (useful if you attach this component to a capsule object that have a armature inside). First Person Camera Component @@ -42,17 +49,19 @@ To use, add a camera in your scene, parent it into your character capsule (you c You can configure the mouse sensibility, invert :kbd:`X` or :kbd:`Y` axis and enable/disable the camera rotation limit. It's very simple to configure: .. figure:: /images/Python_Components/Fig-10.png - :align: left + :align: right First Person Camera component * **Activate**: If you want this component running. + * **Mouse Sensibility**: The mouse sensibility. + * **Invert Mouse X Axis**: To invert the mouselook on the :kbd:`X` axis. + * **Invert Mouse Y Axis**: To invert the mouselook on the :kbd:`Y` axis. -* **Limit Camera Rotation**: Limits the camera rotation on the :kbd:`X` local axis. Very useful for First Person games to avoid the camera from flip upside down. -| +* **Limit Camera Rotation**: Limits the camera rotation on the :kbd:`X` local axis. Very useful for First Person games to avoid the camera from flip upside down. Third Person Camera Component ----------------------------- @@ -64,26 +73,34 @@ To use, add a camera in your scene, parent it into your character capsule (you c You can configure the mouse sensibility, invert :kbd:`X` or :kbd:`Y` axis and enable/disable the camera rotation limit. It's very simple to configure: .. figure:: /images/Python_Components/Fig-11.png - :align: left + :align: right Third Person Camera component * **Activate**: If you want this component running. + * **Mouse Sensibility**: The mouse sensibility. + * **Invert Mouse X Axis**: To invert the mouselook on the :kbd:`X` axis. + * **Invert Mouse Y Axis**: To invert the mouselook on the :kbd:`Y` axis. + * **Camera Height**: The height that you want your camera to be (consider height zero = the center of your character). + * **Camera Distance**: How far from the character that you want your camera to be. + * **Camera Crab (Side)**: You can make the camera stay on the side of your character, if you want. Just adjust this variable. + * **Camera Collision**: If you want your camera to have collision (to prevent the camera from traversing walls). -* **Camera Collision Property**: The property that you want your camera to avoid (if you want the camera to avoid all the objects, leave this blank). + + * **Camera Collision Property**: The property that you want your camera to avoid (if you want the camera to avoid all the objects, leave this blank). + * **Align Player to View**: You can define when you want the player (character) to look at the camera view direction: Never, just when the player moves or always. + * **Align Player Smooth**: How smooth you want the player to look at the camera direction. :kbd:`0` means no smooth and :kbd:`1` means maximum smooth possible. By using this Component, you can also call some functions using python (from other components) to help you: setCameraAlign(type), setCameraPos(x,y,z), alignPlayerToView(), getCameraView(). Take a look at the implementation to see how these functions works. -| - Simple Animator Component ------------------------- @@ -92,20 +109,29 @@ This component will automatically align the armature to the move direction of yo To use, attach this component to the armature of your character. It's important that the armature is parented with an capsule object with physics type equals to Character. It's very simple to configure: .. figure:: /images/Python_Components/Fig-12.png - :align: left + :align: right Simple Animator component * **Activate**: If you want this component running. + * **Max Walk Speed**: Define the max speed that you want while executing the walk animation. After this speed, the character will start interpolating the run animation. (Read the notes at the end). + * **Max Run Speed**: Define the max speed that you want while executing the run animation. After this speed, the animation will not change. + * **Suspend Children's Physics**: Enable this if you want to remove all the physics from the armature's childrens (recursive). Useful to avoid these childrens to collide with the player capsule, causing a physics bug. + * **Align To Move Direction**: Enable this if you want to make you character faces the direction that the player is going. + * **Align Smooth**: How smooth you want to align the character with the direction. 0 Means no smooth and 1 means max smooth. + * **Idle Animation**: Define the name of the Idle (stopped) animation, the frame start and frame end. + * **Walk Animation**: Define the name of the Walk animation, the frame start and frame end. * **Run Animation**: Define the name of the Run animation, the frame start and frame end. + * **Jump Up Animation**: Define the name of the Jump Up animation, the frame start and frame end. + * **Jump Down Animation**: Define the name of the Jump Down animation, the frame start and frame end. The Jump animations should be divided in two: Jump Up and Jump Down. The first one will be executed when the character is going up. The second, whe the character is falling. Both should be loop animations. .. note:: diff --git a/source/manual/tutorials/getting_started/3D_basic_concepts.rst b/source/manual/tutorials/getting_started/3D_basic_concepts.rst index 88c0d1a7..9e5da784 100644 --- a/source/manual/tutorials/getting_started/3D_basic_concepts.rst +++ b/source/manual/tutorials/getting_started/3D_basic_concepts.rst @@ -1,69 +1,62 @@ -================= +.. _3d_basic_concepts: + +============================== 3D Basic Concepts -================= +============================== ---------- 3D Basics ---------- +++++++++++++++++++++++++++++++ If you haven't used any 3D application before, the terms modeling, animation, and rendering might be foreign to you. So before you go off to create the spectacular game that you always wanted to make, let's have a quick refresher on the basics of computer graphics. You don't have to endure the boring section below if you are already know what RGB stands for and the difference between Cartesian and Gaussian. The knowledge in this section is universal and applies to all other 3D applications. So even if you are coming from a different application, the same concepts drive all of them. ------------------ Coordinate System ------------------ +------------------------------ + +.. figure:: /images/Tutorials/getting_started/01-coordinate_system.png + :figwidth: 40% -.. image:: /images/Chapter1/Fig01-05.png - :width: 33 % - :align: right + Coordinate system We live in a three-dimensional world that has width, height, and depth. So to represent anything that resembles real life as a virtual world inside a computer, we need to think and work in three dimensions. The most common system used is called the Cartesian coordinate system, where the three dimensions are represented by X, Y, and Z, laid out as intersecting planes. Where the three axes meet is called the *origin*. You can think of the origin as the center of your digital universe. A single position in space is represented by a set of numbers that corresponds to its position from the origin: thus (2, -4, 8) is a point in space that is 2 units from the origin along the X axis, 4 units from the origin along the -Y axis, and 8 units up in the Z direction. ------------------------------------- Points, Edges, Triangles, and Meshes ------------------------------------ -Although we can define a position in space using the XYZ coordinates, a single *point* (or a :term:`vertex`, as it's more commonly known in computer graphics) is not terribly useful; after all, you can't see a dot that is infinitesimally small. But you can join this vertex with another vertex to form a *line* (also known as an :term:`edge`). An *edge* by itself still wouldn't be very visible, so you create another vertex and join all three vertices together with lines and fill in the middle. Suddenly, something far more interesting is created - a triangle (also known as a :term:`face`)! By linking multiple faces together, you can create any shape, the result of which is called a :term:`mesh` or :term:`model`. Figure below shows how a *mesh* can be broken down into *faces*, then *edges*, and ultimately, into *vertices*. +Although we can define a position in space using the XYZ coordinates, a single *point* (or a :term:`vertex`, as it's more commonly known in computer graphics) is not terribly useful; after all, you can't see a dot that is infinitesimally small. But you can join this vertex with another vertex to form a *line* (also known as an :term:`edge`). An *edge* by itself still wouldn't be very visible, so you create another vertex and join all three vertices together with lines and fill in the middle. Suddenly, something far more interesting is created - a triangle (also known as a :term:`face`)! By linking multiple faces together, you can create any shape, the result of which is called a :term:`mesh` or *model*. Figure below shows how a *mesh* can be broken down into *faces*, then *edges*, and ultimately, into *vertices*. -.. figure:: /images/Chapter1/Fig01-06.jpg +.. figure:: /images/Tutorials/getting_started/02-teapot_cube.jpg + :figwidth: 80% Teapot, cube, face, edge and vertex -Why is the :term:`triangle` so important? Turns out, modern computer graphics use the *triangle* as the basic building block for almost any shape. A rectangular :term:`plane` (also known as a *quadrangle*, or more commonly a *quad*) is simply two triangles arranged side by side. A cube is simply six squares put together. Even a :term:`sphere` is just made of tiny facelets arranged into a ball shape. +Why is the :term:`triangle` so important? Turns out, modern computer graphics use the *triangle* as the basic building block for almost any shape. A rectangular *plane* (also known as a *quadrangle*, or more commonly a *quad*) is simply two triangles arranged side by side. A cube is simply six squares put together. Even a *sphere* is just made of tiny facelets arranged into a ball shape. + +.. figure:: /images/Tutorials/getting_started/03-cylinder_cap.jpg + :width: 70% -.. image:: /images/Chapter1/Fig01-07.jpg - :width: 50 % The cylinder cap can be made up of triangles, quads, or an n-gon - :align: right -In Blender, a mesh can be made from a combination of triangles, quads, or n-gons. The benefit of n-gons is their ability to retain a clean topology while modeling. -Without n-gons, certain areas of a model (such as a window on a wall) would require a higher number of triangles or quads to approximate, as shown below. -While n-gons make modeling easier in some cases, Blender still converts them to triangles when you start the game. +In Blender, a mesh can be made from a combination of triangles, quads, or n-gons. The benefit of n-gons is their ability to retain a clean topology while modeling. Without n-gons, certain areas of a model (such as a window on a wall) would require a higher number of triangles or quads to approximate, as shown below. While n-gons make modeling easier in some cases, Blender still converts them to triangles when you start the game. The process of creating a mesh by rearranging vertices, edges, and faces is called **modeling**. Blender has many tools that help artists define the geometry they want. -It is worth noting that unlike the real world, polygonal models do not have volumes. They are just a shell made of interconnected faces that take -the shape of the object, but the inside of the object is always "hollow." +It is worth noting that unlike the real world, polygonal models do not have volumes. They are just a shell made of interconnected faces that take the shape of the object, but the inside of the object is always "hollow." -.. image:: /images/Chapter1/Fig01-08.jpg - :width: 50 % +.. figure:: /images/Tutorials/getting_started/04-normals.jpg + :width: 70% + Surface normals are displayed as cyan lines protruding from the faces - :align: right -Another concept that a modeler will likely encounter is surface normals, or "normals" for short. Normal is a property of each face that indicates -the direction a polygon is facing. Because normals are used for shading computation of the surface, ideally all the normals for a mesh should be pointed "outward". -Wrongly oriented normals can cause the mesh to show up as black or invisible. Fortunately, there is a Make Normals Consistent function in Blender that can usually -resolve the issue. Figure 1.8 shows how normals are presented in Blender. +Another concept that a modeler will likely encounter is surface normals, or "normals" for short. Normal is a property of each face that indicates the direction a polygon is facing. Because normals are used for shading computation of the surface, ideally all the normals for a mesh should be pointed "outward". Wrongly oriented normals can cause the mesh to show up as black or invisible. Fortunately, there is a Make Normals Consistent function in Blender that can usually resolve the issue. Figure 1.8 shows how normals are presented in Blender. .. topic:: **Beyond Polygons** - Technically, there are other approaches to computer graphics that do not rely on triangles or polygons, such as NURBS (Non-uniform rational B-spline) - and voxel (short for VOlumetric piXEL). But polygon modeling and rendering is by far the most common, and it is the only supported method in the game engine. + Technically, there are other approaches to computer graphics that do not rely on triangles or polygons, such as NURBS (Non-uniform rational B-spline) and voxel (short for VOlumetric piXEL). But polygon modeling and rendering is by far the most common, and it is the only supported method in the game engine. ----------------- Basic Transforms ----------------- +------------------------------ The three basic transforms that you should be familiar with are: @@ -73,77 +66,57 @@ The three basic transforms that you should be familiar with are: These three are the most common manipulations you will encounter. They are illustrated below. -.. figure:: /images/Chapter1/Fig01-09.jpg +.. figure:: /images/Tutorials/getting_started/05-translation.jpg + :figwidth: 95% - Translation, scaling, and rotation. + Translation, scaling, and rotation ----------------------- Materials and Textures ----------------------- +------------------------------ -Using polygons, you can define the shape of a mesh. To alter the color and appearance of it, you need to apply materials to the object. Material controls the -color, shininess, bumpiness, and even transparency of the object. These variables ultimately all serve to add details to the object. +Using polygons, you can define the shape of a mesh. To alter the color and appearance of it, you need to apply materials to the object. Material controls the color, shininess, bumpiness, and even transparency of the object. These variables ultimately all serve to add details to the object. -Often, changing the color is not enough to make a surface look realistic. This is where textures come in. Texturing is a common technique used to add color -and detail to a mesh by wrapping the mesh with an image, like a decal. Imagine a toy globe: if you carefully peel off the paper map that is glued onto the -plastic ball and lay it out flat on the table, that map would be the texture, and the plastic ball would be the mesh. The projection of the 2D image onto a -3D mesh is called **texture mapping**. Texture mapping can be an automatic process, using one of the predefined projections, or a manual process, which uses -a UV layout to map the 2D image onto the 3D mesh. Figure 1.10 illustrates how an image is mapped onto a model. +Often, changing the color is not enough to make a surface look realistic. This is where textures come in. Texturing is a common technique used to add color and detail to a mesh by wrapping the mesh with an image, like a decal. Imagine a toy globe: if you carefully peel off the paper map that is glued onto the plastic ball and lay it out flat on the table, that map would be the texture, and the plastic ball would be the mesh. The projection of the 2D image onto a 3D mesh is called **texture mapping**. Texture mapping can be an automatic process, using one of the predefined projections, or a manual process, which uses a UV layout to map the 2D image onto the 3D mesh. Figure 1.10 illustrates how an image is mapped onto a model. -.. figure:: /images/Chapter1/Fig01-10.jpg +.. figure:: /images/Tutorials/getting_started/06-mesh_with_texture.jpg + :figwidth: 86% - Meshes with texture applied. + Meshes with texture applied -Traditionally, a texture changes the color of a surface. But that's not all it can do: textures can also be used to alter other properties of the -surface such as its transparency, reflectivity, and even bumpiness to create the illusion of a much more detailed surface. +Traditionally, a texture changes the color of a surface. But that's not all it can do: textures can also be used to alter other properties of the surface such as its transparency, reflectivity, and even bumpiness to create the illusion of a much more detailed surface. -.. image:: /images/Chapter1/Fig01-11.jpg - :width: 50 % - :alt: From left to right: diffuse map, normal map, and specular map. - :align: right +.. figure:: /images/Tutorials/getting_started/07-diffuse_map.jpg + :figwidth: 85% + + Diffuse map, normal map, and specular map -A diffuse map controls the base color of the surface. A normal map controls the surface normal of an object, creating a bumpy effect by changing -the way the light is reflected off the object. A specular map controls the specular reflection of an object, making it look shiny in certain places -and dull in others. A texture map can also have transparent pixels, rendering part of the object transparent. +A diffuse map controls the base color of the surface. A normal map controls the surface normal of an object, creating a bumpy effect by changing the way the light is reflected off the object. A specular map controls the specular reflection of an object, making it look shiny in certain places and dull in others. A texture map can also have transparent pixels, rendering part of the object transparent. -Generally, textures are image files. But there are also other ways to texture a surface, such as using a procedural texture. Procedural texture -differs from an image in that it's generated by an algorithm in real time, rather than from a pre-made image file. +Generally, textures are image files. But there are also other ways to texture a surface, such as using a procedural texture. Procedural texture differs from an image in that it's generated by an algorithm in real time, rather than from a pre-made image file. ------- Lights ------- +------------------------------ -Everything you see is the result of light hitting your eyes-without lights, the world would be pitch black. Likewise, light is just as -important in a virtual world. With light comes shadow as well. Shadow might not be something that you think about every day, but the interplay of shadow -and light makes a huge difference in how the scene is presented. +Everything you see is the result of light hitting your eyes-without lights, the world would be pitch black. Likewise, light is just as important in a virtual world. With light comes shadow as well. Shadow might not be something that you think about every day, but the interplay of shadow and light makes a huge difference in how the scene is presented. -.. image:: /images/Chapter1/Fig01-12.png - :width: 50 % - :alt: From left: Lamp, Sun, Spot lamp, Hemi lamp, and Area lamp. - :align: right +.. figure:: /images/Tutorials/getting_started/08-lamp_sun.png + :width: 70% + + Lamp, Sun, Spot lamp, Hemi lamp, and Area lamp -In most 3D applications, there are several different types of light available to the artist; each type has its advantages and disadvantages. -For example, a Spot lamp approximates a lamp with a conical influence; a sun lamp approximates a light source from infinitely far away. Lamps in Blender are -treated like regular objects: they can be positioned and rotated just like any other object. Figure 1.12 shows how different lamps look in Blender. +In most 3D applications, there are several different types of light available to the artist; each type has its advantages and disadvantages. For example, a Spot lamp approximates a lamp with a conical influence; a sun lamp approximates a light source from infinitely far away. Lamps in Blender are treated like regular objects: they can be positioned and rotated just like any other object. Figure 1.12 shows how different lamps look in Blender. -Think of lighting as more than something that makes your scene visible. Good lighting can enhance the purpose of the scene by highlighting -details while hiding irrelevant areas in shadow. Skillful placement of lighting also adds drama and realism to the scene, making an otherwise -boring scene look visually exciting. +Think of lighting as more than something that makes your scene visible. Good lighting can enhance the purpose of the scene by highlighting details while hiding irrelevant areas in shadow. Skillful placement of lighting also adds drama and realism to the scene, making an otherwise boring scene look visually exciting. ------- Camera ------- +------------------------------ + +.. figure:: /images/Tutorials/getting_started/09-camera_object.png + :figwidth: 50% -.. image:: /images/Chapter1/Fig01-13.png - :width: 50 % - :alt: Camera objects - :align: right + Camera object -When you are creating a 3D scene, you are looking at the virtual world from an omniscient view. In this mode, you can view and edit the world -from any angle just like a movie director walking around a set in order to adjust things. Once the game starts, the player must view the game -through a predetermined camera. Note that a predetermined camera does not mean the camera is fixed; almost all games have a camera that reacts to a player's input. -In an action game, the camera tends to follow the character from behind; in a strategy game, the camera might be hovering high above, looking down; -in a platformer, the camera is usually looking at the scene from the side. +When you are creating a 3D scene, you are looking at the virtual world from an omniscient view. In this mode, you can view and edit the world from any angle just like a movie director walking around a set in order to adjust things. Once the game starts, the player must view the game through a predetermined camera. Note that a predetermined camera does not mean the camera is fixed; almost all games have a camera that reacts to a player's input. In an action game, the camera tends to follow the character from behind; in a strategy game, the camera might be hovering high above, looking down; in a platformer, the camera is usually looking at the scene from the side. A camera is also treated as a regular object in Blender, so you can manipulate its location and orientation just as you can with any other object. @@ -152,49 +125,40 @@ A camera is also treated as a regular object in Blender, so you can manipulate i Speaking of lights and cameras, this is the part where we point out the wonderful book by Marcos Mateu-Mestre called Framed Ink. The book uses tons of beautiful drawings to illustrate the many key principles in visual storytelling. ---------- Animation ---------- +------------------------------ -In this context, _animation_ refers to the technique of making things change over time. For example, animation can involve moving an object, deforming it, -or changing its color. To set up an animation, you create "keyframes," which are snapshots in time that store specific values pertaining to the animation. -The software can then automatically interpolate in between those values to create a smooth transition. The image below shows Blender's Dopesheet Editor. -The Dopesheet allows you to see the various properties that change during an animation: the horizontal axis represents time; the vertical axis shows the -various properties, such as location or rotation that are keyframed. +In this context, *animation* refers to the technique of making things change over time. For example, animation can involve moving an object, deforming it, or changing its color. To set up an animation, you create "keyframes," which are snapshots in time that store specific values pertaining to the animation. The software can then automatically interpolate in between those values to create a smooth transition. The image below shows Blender's Dopesheet Editor. The Dopesheet allows you to see the various properties that change during an animation: the horizontal axis represents time; the vertical axis shows the various properties, such as location or rotation that are keyframed. -.. figure:: /images/Chapter1/Fig01-14.png +.. figure:: /images/Tutorials/getting_started/10-dopesheet.png + :figwidth: 90% - Dopesheet Editor: each diamond shape is a keyframe. + Dopesheet Editor keyframes -.. image:: /images/Chapter1/Fig01-15.png - :width: 50 % - :alt: LocRotScale animation - :align: right - -The easiest way to animate is to alter the location, rotation, and scaling of an object over time. For example, by altering these variables, -you can realistically animate the movement of a bouncing ball. Keep in mind that the curves represent the value of the channels (in this case xyz location) -of the ball, not the actual motion path of the ball itself. - -.. image:: /images/Chapter1/Fig01-16.png - :width: 33 % - :alt: Armature animation - :align: left - -To animate something more complicated, such as a human, it's not enough to just move, rotate, and scale the object as a whole. -This is where armatures come in. Armatures are skeletons that can be "inserted" into a model to control the model's deformation. Using this system, -you can create complex yet organic-looking animations. +The easiest way to animate is to alter the location, rotation, and scaling of an object over time. For example, by altering these variables, you can realistically animate the movement of a bouncing ball. Keep in mind that the curves represent the value of the channels (in this case xyz location) of the ball, not the actual motion path of the ball itself. + +.. figure:: /images/Tutorials/getting_started/11-bounce_animation.png + :width: 80% + + Bouncing ball animation + +To animate something more complicated, such as a human, it's not enough to just move, rotate, and scale the object as a whole. This is where armatures come in. Armatures are skeletons that can be "inserted" into a model to control the model's deformation. Using this system, you can create complex yet organic-looking animations. -.. image:: /images/Chapter1/Fig01-17.jpg - :width: 50 % - :alt: Shape keys animation. - :align: right +.. figure:: /images/Tutorials/getting_started/12-armature.png + :width: 40% -A third way to animate is using shape keys. Shape keys are snapshots of the mesh in different shapes. They are often used to animate nuanced changes -that cannot be otherwise easily animated with armatures. + Armature animation + +A third way to animate is using shape keys. Shape keys are snapshots of the mesh in different shapes. They are often used to animate nuanced changes that cannot be otherwise easily animated with armatures. -.. figure:: /images/Chapter1/Fig01-18.jpg - :width: 33 % - :alt: Procedural physics-based motion. - :align: left +.. figure:: /images/Tutorials/getting_started/13-shape_keys.jpg + :width: 70% + + Shape keys animation Finally, keep in mind that making objects move doesn't always have to be a manual process. You can also make objects move by using the physics engine. + +.. figure:: /images/Tutorials/getting_started/14-physics_motion.jpg + :width: 70% + + Procedural physics-based motion diff --git a/source/manual/tutorials/getting_started/blender_basic.rst b/source/manual/tutorials/getting_started/blender_basic.rst index 6d815f9e..d0a5a4b2 100644 --- a/source/manual/tutorials/getting_started/blender_basic.rst +++ b/source/manual/tutorials/getting_started/blender_basic.rst @@ -1,483 +1,320 @@ -==================== +.. _blender_upbge_basics: + +============================== Blender/UPBGE Basics -==================== +============================== -------------- Blender/UPBGE -------------- +++++++++++++++++++++++++++++++ -When you start Blender/UPBGE, you will be greeted with the splash screen. Although you can -customize all aspect of Blender/UPBGE, in this manual, we will assume you are using the -default Blender/UPBGE settings and shortcuts. +When you start Blender/UPBGE, you will be greeted with the splash screen. Although you can customize all aspect of Blender/UPBGE, in this manual, we will assume you are using the default Blender/UPBGE settings and shortcuts. -Clicking anywhere else to dismiss the splash screen, you are presented with an empty -workspace like this: +Clicking anywhere else to dismiss the splash screen, you are presented with a default workspace: -.. figure:: /images/Chapter1/Fig01-20.jpg +.. figure:: /images/Tutorials/getting_started/19-default_workspace.png + :figwidth: 95% - Blender/UPBGE default workspace. + Blender/UPBGE default workspace -The Blender/UPBGE window is divided into Editors. Each Editor region can be resized, moved, -and changed to display a specific set of content. For now, let's focus on the default setup. +Blender/UPBGE window is divided into Editors. Each Editor region can be resized, moved, and changed to display a specific set of content. For now, let's focus on the default setup. ---------- Main Menu ---------- +++++++++++++++++++++++++++++++ -At the top of the screen is the main menu, which offers basic functionalities such as -Open, Save, and Help. Furthermore, the main menu controls the view for the rest of the -Blender/UPBGE window. The Render Engine option in the middle of the menu controls how the -interface is configured. +At the top of the screen is the main menu, which offers basic functionalities such as Open, Save, and Help. Furthermore, the main menu controls the view for the rest of the Blender/UPBGE window. The Render Engine option in the middle of the menu controls how the interface is configured. -.. figure:: /images/Chapter1/Fig01-21.png +.. figure:: /images/Tutorials/getting_started/20-game_engine.png :figwidth: 40% - :align: left + :align: right Selecting the Game Engine -By default, Cycles Render is selected. In this mode, the interface is configured for -doing 3D modeling, animation, and rendering with Cycles. But let's switch it to the -Blender Game mode. Click the drop-down menu and select Blender Game from the list. -This setting will unlock certain features that are not visible normally, and it also -hides features that are not available in the Blender game engine. +By default, EEVEE is selected. This engine enables certain features that are not visible normally, and it also hides features that are not available in the Blender. ------------ 3D Viewport ------------ +++++++++++++++++++++++++++++++ -Occupying the majority of the screen is a 3D Viewport. Here you can see the 3D world -you created and test the game. For now, feel free to explore the 3D Viewport by holding -down your middle mouse button over the 3D Viewport and dragging the mouse; the view should -rotate with the mouse movement. (Mac users can use the two-finger rotate gesture on the -trackpad) The default scene contains three objects: a cube, a camera, and a light. -To select one of the objects, right-click on it. The selected object is highlighted in yellow. +Occupying the majority of the screen is a 3D Viewport. Here you can see the 3D world you created and test the game. For now, feel free to explore the 3D Viewport by holding down your middle mouse button over the 3D Viewport and dragging the mouse; the view should rotate with the mouse movement. (Mac users can use the two-finger rotate gesture on the trackpad) The default scene contains three objects: a cube, a camera, and a light. To select one of the objects, right-click on it. The selected object is highlighted in yellow. .. note:: **Basic Navigation Controls** - Press and hold the middle mouse button to rotate the 3D view. Scroll the mouse - wheel to zoom in the 3D view. Right-click to select a 3D object. - Selected objects are highlighted in yellow. - -.. figure:: /images/Chapter1/Fig01-23.png - :figwidth: 25% - :align: left + Press and hold the middle mouse button to rotate the 3D view. Scroll the mouse wheel to zoom in the 3D view. Right-click to select a 3D object. Selected objects are highlighted in yellow. - Number pad keyboard layout. +.. figure:: /images/Tutorials/getting_started/21-numpad.png + :figwidth: 40% + Numberpad keyboard layout -Another common setup for the 3D Viewport is to split the view into four quadrants: -top view, side view, front view, and a perspective view. You can turn on Quad -view by pressing Ctrl+Alt+Q with the mouse over the 3D Viewport (see Figure 1.22). -Press the same key combination to go back to the single view. +Another common setup for the 3D Viewport is to split the view into four quadrants: top view, side view, front view, and a perspective view. You can turn on Quad view by pressing Ctrl+Alt+Q with the mouse over the 3D Viewport (see Figure 1.22). Press the same key combination to go back to the single view. -To quickly snap to one of the predetermined views (side, top, front, and so on), -the number pad is the way to go. +To quickly snap to one of the predetermined views (side, top, front, and so on), the number pad is the way to go. --------- Outliner --------- +++++++++++++++++++++++++++++++ -.. figure:: /images/Chapter1/Fig01-20b.png - :figwidth: 33% - :align: right +.. figure:: /images/Tutorials/getting_started/22-editor_outliner.png + :figwidth: 50% - Outliner + Outliner editor -To the right of the screen are two editors. The top portion is the Outliner, which -contains a listing of all the data in the current Blender file. For a large project, -the Outliner is an indispensable tool for organizing your scene. For now, you can -safely ignore it. +To the right of the screen are two editors. The top portion is the Outliner, which contains a listing of all the data in the current Blender file. For a large project, the Outliner is an indispensable tool for organizing your scene. For now, you can safely ignore it. ------------------ Properties Editor ------------------ +++++++++++++++++++++++++++++++ -.. figure:: /images/Chapter1/Fig01-24.png - :figwidth: 33% - :align: right +.. figure:: /images/Tutorials/getting_started/23-editor_properties.png + :figwidth: 50% - Properties Editor icons. + Properties editor -Under the Outliner on the right, you have the Properties Editor. Here you can access -global settings for the file, as well as settings for individual objects. This is one -of the most frequently used panels in Blender, after the 3D view perhaps. The *Properties Editor* -is context sensitive, which means it will automatically display different content, depending -on the object that is active. Take a closer look at the row of icons at the top of the *Properties Editor*, -as shown in Figure 1.24. These tabs organize the properties into groups, -with the more general settings on the left-most tab, and the more specific settings on the right. +Under the Outliner on the right, you have the Properties Editor. Here you can access global settings for the file, as well as settings for individual objects. This is one of the most frequently used panels in Blender, after the 3D view perhaps. The *Properties Editor* is context sensitive, which means it will automatically display different content, depending on the object that is active. Take a closer look at the row of icons at the top of the *Properties Editor*, as shown in Figure 1.24. These tabs organize the properties into groups, with the more general settings on the left-most tab, and the more specific settings on the right. --------- Timeline --------- +++++++++++++++++++++++++++++++ At the very bottom of the screen is a timeline window, which will be useful when you start making animations. -.. figure:: /images/Chapter1/Fig01-20c.png +.. figure:: /images/Tutorials/getting_started/24-editor_timeline.png + :figwidth: 100% Timeline ------------------------ Workspace Customization ------------------------ +++++++++++++++++++++++++++++++ -The default screen, as described previously, is set up for general use. At some point, -it becomes necessary to change the screen layout to accomplish other tasks. To select a -different layout, use the Screens layout drop-down menu from the main menu. +The default screen, as described previously, is set up for general use. At some point, it becomes necessary to change the screen layout to accomplish other tasks. To select a different layout, use the Screens layout drop-down menu from the main menu. -Apart from the predefined screen layouts, you can customize the screen layout however -you like. You can either split an existing editor into two or merge two -adjacent editors together. +Apart from the predefined screen layouts, you can customize the screen layout however you like. You can either split an existing editor into two or merge two adjacent editors together. .. note:: **Editor, Region, and Area** - A region within the Blender/UPBGE windows is called an *editor*. An editor displays - a specific set of content and tools. Common areas include: *3D View*, *Properties Editor*, - *UV/Image Editor*, and *Logic Brick Editor*. - + A region within the Blender/UPBGE windows is called an *editor*. An editor displays a specific set of content and tools. Common areas include: *3D View*, *Properties Editor*, *UV/Image Editor*, and *Logic Brick Editor*. +Figure below shows one area split into two. You can do it by dragging the top corner of the area to the right or bottom: -Figure 1.25 shows one area split into two. You can do it by dragging the top corner -of the area to the right or bottom +.. figure:: /images/Tutorials/getting_started/25-area_split.png + :figwidth: 60% -.. figure:: /images/Chapter1/Fig01-25.png + Area splitting - Area Splitting +To merge two adjacent areas into one is exactly the same as shown in Figure, but it is done in reverse order. Optionally, you can click with the right mouse button in the edge of the area you want to split or join, and select the option in the Area Options pop-up menu. -To merge two adjacent areas into one is exactly the same as shown in Figure 1.25, -but it is done in reverse order. Optionally, you can click with the right mouse button -in the edge of the area you want to split or join, and select the option in the Area Options pop-up menu. +.. figure:: /images/Tutorials/getting_started/26-editor_selection.png + :figwidth: 90% -.. figure:: /images/Chapter1/Fig01-27.png - :figwidth: 25% - :align: left + Editor selection - Editor selection. +Not only can you change the size and layout of the editor, but the type of editor can also be changed. As you can see in Figure 1.27, the left-most icon in the header can be used to change the editor type. -Not only can you change the size and layout of the editor, -but the type of editor can also be changed. As you can see in Figure 1.27, -the left-most icon in the header can be used to change the editor type. +.. figure:: /images/Tutorials/getting_started/27-dopsheet_image_brick.png + :figwidth: 95% -.. figure:: /images/Chapter1/Fig01-28.png - :figwidth: 45% - :align: right + Dopesheet, Image Editor, and Logic Brick Editor - Dopesheet, Image Editor, and Logic Brick Editor. +Almost everything a studio needs to create the game is integrated into a single interface: you can create the game, test the game, and play the game all from the same program. This means that, as an artist, you can create a game in the shortest time possible, without having to worry about importing and exporting files between different applications. As a programmer, you won't have to switch back and forth between different software just to test your code. Figure 1.28 shows some screenshots of different editors that you will be using throughout the manual. -Almost everything a studio needs to create the game is integrated into a single interface: -you can create the game, test the game, and play the game all from the same program. -This means that, as an artist, you can create a game in the shortest time possible, -without having to worry about importing and exporting files between different applications. -As a programmer, you won't have to switch back and forth between different software just -to test your code. Figure 1.28 shows some screenshots of different editors that you will -be using throughout the manual. - -------------------- More on the 3D View -------------------- +++++++++++++++++++++++++++++++ -The 3D view is where you will spend most of your time, so let's take a look at it in a -bit more detail. You've already learned a few ways to navigate around the scene earlier -in this chapter, using both the mouse and the keyboard. +The 3D view is where you will spend most of your time, so let's take a look at it in a bit more detail. You've already learned a few ways to navigate around the scene earlier in this chapter, using both the mouse and the keyboard. ----------------------- Viewport Shading Modes ----------------------- +++++++++++++++++++++++++++++++ -.. figure:: /images/Chapter1/Fig01-29.png - :figwidth: 25% - :align: right +.. figure:: /images/Tutorials/getting_started/28-viewport_shading.png + :figwidth: 55% - Drawing Modes + Viewport Drawing Modes -Let's look at the four different Viewport Shading modes available in the 3D view. -They are used to change the way the scene is displayed onscreen. The four modes are: +Let's look at the four different Viewport Shading modes available in the 3D view. They are used to change the way the scene is displayed onscreen. The four modes are: - **Bounding Box** : Represents all objects as a wireframe boundary. Useful for when the scene gets really complex. + - **Wireframe** : Draws all objects as wireframe, which allows you to see through objects. + - **Solid** : Draws all objects as solid faces, which is commonly used when modeling. + - **Textured** : Draws all objects as solid faces, also with texture and accurate lighting. This is useful for previewing the scene. -The two most commonly used Shading modes are Wireframe and Solid. Therefore, -they are assigned to a keyboard toggle for easy access. Press the ``Z`` key to toggle -between Wireframe and Solid View modes. Additionally, you can Press ``Alt+Z`` to toggle -between Solid and Textured view modes. -.. note:: **Standing Out** +The two most commonly used Shading modes are Wireframe and Solid. Therefore, they are assigned to a keyboard toggle for easy access. Press the ``Z`` key to toggle between Wireframe and Solid View modes. Additionally, you can Press ``Alt+Z`` to toggle between Solid and Textured view modes. - Individual objects can also override the Viewport Shading mode - via a setting under the Properties Editor > Object > Display > Type. +.. note:: **Standing Out** + Individual objects can also override the Viewport Shading mode via a setting under the :menuselection:`Properties Editor > Object > Viewport Display > Display As`. -------------- Editing Modes -------------- +++++++++++++++++++++++++++++++ -To the left of the Shading mode selector is the Editing Mode selector. +Far to the left of the Shading mode selector is the Editing Mode selector. -- **Object Mode** : The default mode, which allows the manipulation of objects in the -scene as a whole. From this mode, you can select any of the objects in the scene, -and move, rotate, and scale them. In fact, almost everything apart from modeling -can be done from Object mode. -- **Edit Mode**: This mode can be seen as the counterpart to Object mode. It allows -you to edit the underlying geometry of the object. If you are modeling, you'll -probably want to be in Edit mode. For this reason, Edit mode is not available -when a non-editable object is selected (for example, a camera or light). +- **Object Mode** : The default mode, which allows the manipulation of objects in the scene as a whole. From this mode, you can select any of the objects in the scene, and move, rotate, and scale them. In fact, almost everything apart from modeling can be done from Object mode. -To switch between Object mode and Edit mode, press the tab key. +- **Edit Mode**: This mode can be seen as the counterpart to Object mode. It allows you to edit the underlying geometry of the object. If you are modeling, you'll probably want to be in Edit mode. For this reason, Edit mode is not available when a non-editable object is selected (for example, a camera or light). + +To switch between Object mode and Edit mode, press the :kbd:`Tab` key. In addition to the two editing modes we just discussed, there are a few other modes that are less commonly used. - **Sculpt Mode** : Only available for Mesh objects. Allows modifications to the mesh as if it were clay. -- **Vertex** , **Weight,** and **Texture Paint Mode** : Only available for Mesh objects. -These modes allow the assignment of color or weight to the mesh. -- **Pose Mode** : Is used to animate bones in an armature. -Edit mode and Object mode are by far the most commonly used editing modes, so we will -refrain from diving too deeply into the other modes for now. +- **Vertex** , **Weight,** and **Texture Paint Mode** : Only available for Mesh objects. These modes allow the assignment of color or weight to the mesh. + +- **Pose Mode** : Is used to animate bones in an armature. Only visible when Object has bones attached. + +Edit mode and Object mode are by far the most commonly used editing modes, so we will refrain from diving too deeply into the other modes for now. ------------------- Keyboard and Mouse ------------------- +++++++++++++++++++++++++++++++ -The joke is that to move an object in Blender, you have to press the ``G`` key, -which stands for "movinG." This gag stems from the fact that to a beginner, -many of the shortcuts in Blender/UPBGE seem counterintuitive. However, there -is a very good reason why "G" is preferred over "M." In this case, the ``G`` key can -be easily accessed on the keyboard by the left hand while the right hand is on the mouse. -Also, officially, G stands for Grab. +The joke is that to move an object in Blender, you have to press the ``G`` key, which stands for *movinG*. This gag stems from the fact that to a beginner, many of the shortcuts in Blender/UPBGE seem counterintuitive. However, there is a very good reason why :kbd:`G` is preferred over :kbd:`M`. In this case, the :kbd:`G` key can be easily accessed on the keyboard by the left hand while the right hand is on the mouse. Also, officially, G stands for Grab. .. note:: **Think Different** - By default, the Mac keyboard uses Command instead of Control as the default modifier key. - So whenever you see ``Ctrl+Something`` in this book, mentally map it to Cmd - if you are using a Jobsian product. + By default, the Mac keyboard uses Command instead of Control as the default modifier key. So whenever you see :kbd:`Ctrl-Something`, mentally map it to :kbd:`Cmd` if you are using a Jobsian product. - Additionally, Blender/UPBGE has good support for multi-touch gestures on OS X. - You can pinch to zoom, rotate to orbit around, and pan around. + Additionally, Blender/UPBGE has good support for multi-touch gestures on OS X. You can pinch to zoom, rotate to orbit around, and pan around. Let's start with some shortcuts that work the way you would expect: -* **Ctrl + S:** Save File -* **Ctrl + O:** Open File -* **Ctrl + N:** New File -* **Ctrl + Z:** Undo -* **Ctrl + Shift + Z:** Redo -* **Ctrl + Q:** Close(Quit) Application +* :kbd:`Ctrl-S`: save file; +* :kbd:`Ctrl-O`: open file; +* :kbd:`Ctrl-N`: new file; +* :kbd:`Ctrl-Z`: undo; +* :kbd:`Ctrl-Shift-Z`: redo; +* :kbd:`Ctrl-Q`: close(quit) application. The above shortcuts work anywhere within Blender: they are effectively global. Unfortunately, the familiarity ends here. To manipulate an object in the 3D view, generally you have to select it at first: -- **Right-click:** Select object -- **Shift + Right-click:** Extend selection to multiple objects -- **A:** Select all +- :kbd:`RMB`: select object; +- :kbd:`Shift-RMB`: extend selection to multiple objects; +- :kbd:`A``: select all. -All of the actions above are "reversible." If something is already selected, right-clicking -on it will deselect it. If all the objects are already selected, pressing ``A`` will deselect all. +All of the actions above are "reversible." If something is already selected, right-clicking on it will deselect it. If all the objects are already selected, pressing :kbd:`A` will deselect all. -Once an object is selected, you can start manipulating it. The keyboard shortcuts -below correspond to the three most basic transforms: +Once an object is selected, you can start manipulating it. The keyboard shortcuts below correspond to the three most basic transforms: -- **G:** Start Grabbing -- **S:** Start Scaling -- **R:** Start Rotating -- **Move mouse:** Carry out transform action -- **Left-click:** Confirm transformation -- **Enter:** Confirm transformation +- :kbd:`G`: start grabbing; +- :kbd:`S`: start scaling; +- :kbd:`R`: start rotating; +- :kbd:`Move mouse`: carry out transform action; +- :kbd:`LMB`: confirm transformation; +- :kbd:`Enter``: confirm transformation. -Pressing one of the keys will start the transformation, and then you can move your mouse -to control the degree of the effect. To finalize the transformation, left-click the mouse or press Enter. +Pressing one of the keys will start the transformation, and then you can move your mouse to control the degree of the effect. To finalize the transformation, left-click the mouse or press Enter. ------- Search ------- - -.. figure:: /images/Chapter1/Fig01-30.png - :figwidth: 30% - :align: right +++++++++++++++++++++++++++++++ - The Search Box +.. figure:: /images/Tutorials/getting_started/29-search_pupup.png + :figwidth: 60% -The final tip that you will learn is the search functionality in Blender. -If you are unable to recall how to invoke a certain operation, whether through a button or -a keyboard shortcut, a quick way to find it is by using the search functionality. -Key in a few letters of what you are looking for, and the result should appear -as shown in Figure 1.30. + The F3 Search Box -Tapping on the spacebar from anywhere will bring out a search box that contains a list of actions. +The final tip that you will learn is the search functionality in Blender. If you are unable to recall how to invoke a certain operation, whether through a button or a keyboard shortcut, a quick way to find it is by using the search functionality. Press :kbd:`F3` key and start typing in what you are looking for, and the result should appear. -A word of caution, though: the current implementation of the search is not very -context-aware, so sometimes operations that are not permitted in the active context might show up. +A word of caution, though: the current implementation of the search is not very context-aware, so sometimes operations that are not permitted in the active context might show up. ------------------------- Blender/UPBGE Philosophy ------------------------- +++++++++++++++++++++++++++++++ -Blender/UPBGE is designed with certain philosophies in mind. Understanding these -will allow you to use Blender the way it is intended, which allows you to navigate -around Blender faster and work more efficiently. +Blender/UPBGE is designed with certain philosophies in mind. Understanding these will allow you to use Blender the way it is intended, which allows you to navigate around Blender faster and work more efficiently. Let the brainwashing begin! ---------- Interface ---------- +++++++++++++++++++++++++++++++ -Because Blender was originally created as an in-house software, its interface is -designed to maximize speed and efficiency for users who have mastered it. Since Blender 2.5, -a lot of work has been done to make the interface more user-friendly. That said, Blender is -probably unlike any other program you've used before, including other kinds of 3D software. -Luckily, the Blender interface is very consistent within the application. This means that -once you learn to do something, you'll be able to use it in another part of the program. +Because Blender was originally created as an in-house software, its interface is designed to maximize speed and efficiency for users who have mastered it. Since Blender 2.5, a lot of work has been done to make the interface more user-friendly. That said, Blender is probably unlike any other program you've used before, including other kinds of 3D software. Luckily, the Blender interface is very consistent within the application. This means that once you learn to do something, you'll be able to use it in another part of the program. --------- Keyboard --------- - -Because of the large number of commands Blender is capable of performing, invoking a -function through a quick tap on the keyboard is generally faster than using the mouse -to find the menu entry. As you follow through the rest of this section, pay special -attention to the shortcut keys that are used, because Blender is designed to let you -work fast once you learn the shortcuts. - - -Blender's keyboard shortcuts are optimized for a full-sized English QWERTY keyboard. -The number pad (which, unfortunately, is not present on many laptops) is used to quickly -navigate around the 3D scene. Laptop users usually have to press extra keys on their keyboard -(such as the Fn key or a toggle) in order to simulate a number pad key. As a solution, -go to File > User Preferences (Ctrl + Alt + U), then switch to Input tab and enable "Emulate Numpad" -option to use main 1 to 0 keys instead of Numpad keys. If you want this setting -remain permanently, click on the "Save User Settings" button. +++++++++++++++++++++++++++++++ -.. figure:: /images/Chapter1/Fig01-30.png +Because of the large number of commands Blender is capable of performing, invoking a function through a quick tap on the keyboard is generally faster than using the mouse to find the menu entry. As you follow through the rest of this section, pay special attention to the shortcut keys that are used, because Blender is designed to let you work fast once you learn the shortcuts. - Emulate Numpad - -.. figure:: /images/Chapter1/Fig01-31.png - :figwidth: 20% +.. figure:: /images/Tutorials/getting_started/30-3d_navigation.png + :figwidth: 30% :align: right - 3D Navigator. + Side N-panel > View tab > 3D Navigation + +Blender's keyboard shortcuts are optimized for a full-sized English QWERTY keyboard. The number pad (which, unfortunately, is not present on many laptops) is used to quickly navigate around the 3D scene. Laptop users usually have to press extra keys on their keyboard (such as the :kbd:`Fn` key or a toggle) in order to simulate a number pad key. As a solution, go to :menuselection:`Edit > Preferences > Input > Keyboard` tab and enable :menuselection:`Emulate Numpad` option to use main 1 to 0 keys instead of Numpad keys. -Alternatively, Blender also has an add-on called "3D Navigation" that provides an -easier way to navigate around the world for people without a number pad. To enable -the 3D navigation plug-in to help you navigate around the 3D Viewport quickly, -go to File > User Preferences > Add-Ons, and turn on 3D Views: 3D Navigation. Then -you can switch views quickly from the 3D view's Toolshelf. +Alternatively, Blender also has an add-on called *3D Navigation* that provides an easier way to navigate around the world for people without a number pad. To enable the 3D navigation plug-in, check :menuselection:`Edit > Preferences > Add-Ons > 3D Views: 3D Navigation` checkbox. Then you can switch views quickly from the 3D view's Toolshelf. ------ Mouse ------ +++++++++++++++++++++++++++++++ -Blender is designed for a three-button mouse: a mouse with two buttons and a -scroll wheel. Although there is an option to emulate the middle-mouse button -(when you click on the scroll wheel), this book will assume that you are working -with a three-button mouse for convenience. +Blender is designed for a three-button mouse: a mouse with two buttons and a scroll wheel. Although there is an option to emulate the middle-mouse button (when you click on the scroll wheel), this book will assume that you are working with a three-button mouse for convenience. .. note:: **How to Emulate a Three-Button Mouse** - If you don't have a three-button mouse, you can use the Alt+Left mouse button - combination to emulate the middle mouse button. To enable this feature, - go to File > User Preferences > Input and turn on Emulate 3 Button Mouse. + If you don't have a three-button mouse, you can use the :kbd:`Alt+LMB` combination to emulate the middle mouse button. To enable this feature, go to :menuselection:`Edit > Preferences > Input > Mouse` and turn on :menuselection:`Emulate 3 Button Mouse`. -------- Context -------- +++++++++++++++++++++++++++++++ -In Blender, the actions you can perform at any given time are limited to the -current state of Blender, also known collectively as the " context." For example, -certain operations can only be invoked when you have an object selected; the Property Editors -change, depending on which object is selected; the effect of the keyboard shortcuts even changes, -depending on where your mouse is positioned. This context-sensitive nature lets you focus on the -task at hand by only providing you with options that makes sense at the time. This is Blender's -way of preventing the interface from getting too cluttered. +In Blender, the actions you can perform at any given time are limited to the current state of Blender, also known collectively as the " context." For example, certain operations can only be invoked when you have an object selected; the Property Editors change, depending on which object is selected; the effect of the keyboard shortcuts even changes, depending on where your mouse is positioned. This context-sensitive nature lets you focus on the task at hand by only providing you with options that makes sense at the time. This is Blender's way of preventing the interface from getting too cluttered. The "context" usually refers to one or a combination of the following: - **Active rendering engine:** Blender Render, Blender Games, and Cycles Render are the default three. + - **Active editor:** The active editor is defined as the window subdivision that the mouse cursor is hovering over. Shortcut keys often have different effects, depending on which editor the mouse is over. + - **Active object:** The active object is defined as the object that is most recently selected. + - **Selected object:** All the objects that have been selected (highlighted). Keep in mind that there can be more than one selected object, but only one active object. + - **Editing mode:** Blender has six different modes of editing. Two of the most commonly used are the Edit mode and the Object mode. In Object mode, you can manipulate objects as a whole. In Edit mode, you can change the shape of a mesh. In each mode, there is a unique set of tools and options at your disposal. You will learn about the other four modes (Sculpt, Vertex Paint, Texture Paint, Weight Paint) in later chapters. ----------- Datablocks ----------- +++++++++++++++++++++++++++++++ Often, a single Blender file contains hundreds of objects, each with different colors, textures, and animations. How is all this organized? Blender uses "data blocks" to represent content stored within a Blender file. Each data block represents a collection of data or settings. Some common datablock types you will encounter are Object datablock, Mesh datablock, Material datablock, Texture datablock, and Image datablock. -.. figure:: /images/Chapter1/Fig01-32.png - :figwidth: 30% - :align: right +.. figure:: /images/Tutorials/getting_started/31-datablock_hierarchy.png + :figwidth: 50% - Datablock hierarchy. + Datablock hierarchy In order to reduce the apparent complexity of the program, Blender further organizes data blocks into hierarchies. At the top level are scenes, which can have a number of worlds, each of which can have any number of objects (objects can be a mesh, a light, a camera, and so on). If the object is a mesh, then a Mesh datablock is attached to it. If the object is a light, then a Light datablock is attached to the object. -An example of a datablock hierarchy chain is shown in Figure 1.32: -Scene > Object > Mesh > Material > Texture > Image - - -Throughout the Blender interface, you will run into many datablock managers. -They all look like Figure 1.33. - -.. figure:: /images/Chapter1/Fig01-33.png - :figwidth: 30% - :align: left - - Datablock Sharing +Throughout the Blender interface, you will run into many datablock managers. They all look like Figure above. -Because datablocks can be shared, copied, and reused, large scenes can be managed -efficiently through the use of shared datablocks. Figure 1.33 shows a datablock -that has been shared by three "users," as denoted by the number next to its name. +Because datablocks can be shared, copied, and reused, large scenes can be managed efficiently through the use of shared datablocks. ----------------------- Parenting and Grouping ----------------------- +++++++++++++++++++++++++++++++ Grouping and parenting both allow you to introduce some form of order to the scene by setting up arbitrary relationships between different objects. But grouping and parenting work in different ways. Parenting is used to establish links between multiple objects so that basic transformations like location, rotation, and scaling are propagated from the parent to its children. This way, any transformation applied to the parent is automatically applied to all the children. Parenting is a useful way to "glue" different objects together so they behave as one. -To parent one object to another, simply select the object you want to be the child first. -If more than one object is to be a child, select all of them now. Lastly, select the -object that you want to be the parent. Then press Ctrl+P to set parent. +To parent one object to another, simply select the object you want to be the child first. If more than one object is to be a child, select all of them now. Lastly, select the object that you want to be the parent. Then press Ctrl+P to set parent. An object can only have one parent object, but a parent object can have many children. -Grouping can also be used to logically link objects in the scene together without -any transformation constraints to the objects. Unlike parenting, grouping does not -have a parent-child relationship; objects are simply members of a group. +Grouping can also be used to logically link objects in the scene together without any transformation constraints to the objects. Unlike parenting, grouping does not have a parent-child relationship; objects are simply members of a group. -Select all the objects you want to group. Then press Ctrl+G to add them to a new group. -You can also manage group membership from the Object Properties Editor. +Select all the objects you want to group. Then press Ctrl+G to add them to a new group. You can also manage group membership from the Object Properties Editor. -Grouping, by itself, it not very useful. But groups can be quickly "instanced" as -group instances. Group Instance is a very useful way to create multiple copies of -objects without making actual copies of the objects. Grouping will also come in handy -for asset management, which will be discussed in the next chapter. +Grouping, by itself, it not very useful. But groups can be quickly "instanced" as group instances. Group Instance is a very useful way to create multiple copies of objects without making actual copies of the objects. Grouping will also come in handy for asset management, which will be discussed in the next chapter. A single object can be in multiple groups. A group can have multiple objects. ----------------------- Backward Compatibility ----------------------- +++++++++++++++++++++++++++++++ -Blender is designed so that older files can be opened with newer versions of Blender. -But due to the rate that Blender matures, some unexpected behaviors are to be expected -when you least expect them. +Blender is designed so that older files can be opened with newer versions of Blender. But due to the rate that Blender matures, some unexpected behaviors are to be expected when you least expect them. -Due to the Blender Python API change in Blender 2.5, old scripts written for 2.4x will -be broken in later versions of Blender. But by the time you are reading this, there -should be enough new content available for you to find. +Due to the Blender Python API change in Blender 2.5, old scripts written for 2.4x will be broken in later versions of Blender. But by the time you are reading this, there should be enough new content available for you to find. ------- Onward ------- +++++++++++++++++++++++++++++++ -This concludes the crash course on Blender and the game engine. By now, -you should have a cursory understanding of the function of a game engine and be -familiar with the Blender interface. In the next chapter, you will get your hands -dirty and build a simple game by following the step-by-step tutorial. +This concludes the crash course on Blender and the game engine. By now, you should have a cursory understanding of the function of a game engine and be familiar with the Blender interface. In the next chapter, you will get your hands dirty and build a simple game by following the step-by-step tutorial. diff --git a/source/manual/tutorials/getting_started/game_basic_concepts.rst b/source/manual/tutorials/getting_started/game_basic_concepts.rst index df6eae9e..6b12cd64 100644 --- a/source/manual/tutorials/getting_started/game_basic_concepts.rst +++ b/source/manual/tutorials/getting_started/game_basic_concepts.rst @@ -1,19 +1,19 @@ -=================== +.. _game_basic_concepts: + +============================== Game Basic Concepts -=================== +============================== ----- +++++++++++++++++++++++++++++++ Game ----- +++++++++++++++++++++++++++++++ -So far, we have talked about 3D at length. But how does the game engine fit into? Well, a game engine simply takes the existing 3D assets and attaches a "brain" -to them so the objects know how to respond to events. The "brain" can be in the form of logic bricks (which can perform different actions depending on the -user input), scripts (which can extend the functionality of logic bricks), or other physical properties of an object (such as rigid body settings to make -an object tumble and fall realistically). +So far, we have talked about 3D at length. But how does the game engine fit into? Well, a game engine simply takes the existing 3D assets and attaches a "brain" to them so the objects know how to respond to events. The "brain" can be in the form of logic bricks (which can perform different actions depending on the user input), scripts (which can extend the functionality of logic bricks), or other physical properties of an object (such as rigid body settings to make an object tumble and fall realistically). -.. figure:: /images/Chapter1/Fig01-19.jpg - - Game = Object + Logic. +.. figure:: /images/Tutorials/getting_started/15-object_logic_game.jpg + :figwidth: 80% + + Object + logic = game A game engine is made up of many distinct components: @@ -26,56 +26,44 @@ The above list is not meant to be exhaustive, but it should give you an idea of .. topic:: **Quality vs. Performance** - Making a video game is a constant balancing act between quality and performance. As artists, you want to make the virtual world as rich and detailed - as possible; on the other hand, you need to make sure the game can run smoothly for people who might not have top-of-the-line computers. Throughout the - process of game-making, you will run into cases where you have to make a decision whether to prioritize the visual quality or the performance of the game. - You will also learn tricks to achieve high-quality visual without compromising the performance, as well as how to optimize the game by identifying what - is slowing it down. + Making a video game is a constant balancing act between quality and performance. As artists, you want to make the virtual world as rich and detailed as possible; on the other hand, you need to make sure the game can run smoothly for people who might not have top-of-the-line computers. Throughout the process of game-making, you will run into cases where you have to make a decision whether to prioritize the visual quality or the performance of the game. You will also learn tricks to achieve high-quality visual without compromising the performance, as well as how to optimize the game by identifying what is slowing it down. ---------- +------------------------------ Game Loop ---------- +------------------------------ -The game loop is something that every game or general software has: it consists of several -processing steps and then, repeating it. To make it clear, think of a video player -processing steps: +The game loop is something that every game or general software has: it consists of several processing steps and then, repeating it. To make it clear, think of a video player processing steps: - It reads a portion of the video file from disk. - It decodes the read file portion into a image. - It shows the decoded image in the screen as a single frame. - It repeats everything from the start. -Nevertheless, this article will present you how the game loop is built in UPBGE. -It is essential to know how it works: if you keep that in mind, it will explain a lot of -mysterious behavior that you might discover. +Nevertheless, this article will present you how the game loop is built in UPBGE. It is essential to know how it works: if you keep that in mind, it will explain a lot of mysterious behavior that you might discover. -.. figure:: /images/tutorials-getting_started-game_loop.png +.. figure:: /images/Tutorials/getting_started/16-game_loop.png + :figwidth: 60% - Game loop diagram. + Game loop diagram -Each cycle in the game loop represents a logical frame, also known as logic tick. -It is the smallest time unit within your game. In each loop: +Each cycle in the game loop represents a logical frame, also known as logic tick. It is the smallest time unit within your game. In each loop: - The scenes are processed. - The devices are checked for input. - The final image is rendered. -It is important to know that the render part might be skipped if the last frame was -spending too much processing time , resulting in lag. There is a limit on how much renders -can be skipped (default = 5). If this limit exceeds, a render will take place regardless -how long it takes. Such 'render' lags will result in 'logic' lags, making the game run -slower than expected. +It is important to know that the render part might be skipped if the last frame was spending too much processing time , resulting in lag. There is a limit on how much renders can be skipped (default = 5). If this limit exceeds, a render will take place regardless how long it takes. Such 'render' lags will result in 'logic' lags, making the game run slower than expected. ----------- +------------------------------ Scene Loop ----------- +------------------------------ -.. figure:: /images/tutorials-getting_started-scene_loop.png +.. figure:: /images/Tutorials/getting_started/17-scene_loop.png + :figwidth: 80% - Scene loop diagram. + Scene loop diagram -This loop is a bit more complex. The scenes loop cycles through all active scenes -performing the following steps for each scene: +This loop is a bit more complex. The scenes loop cycles through all active scenes performing the following steps for each scene: - Logic processing This first step processes the logic of the game, be it visual or Python. @@ -86,13 +74,11 @@ performing the following steps for each scene: Once all these steps are taken for all active scenes, the main loop continues. ------------ +------------------------------ Logic Ticks ------------ +------------------------------ -The logic processing works through frames called *logic ticks*. By default, a game -running at 60 frames per second also can run 60 logic ticks per second. In practical -examples: +The logic processing works through frames called *logic ticks*. By default, a game running at 60 frames per second also can run 60 logic ticks per second. In practical examples: - If I have a number 0 and increase it by 1 each frame, after 1 second its value will be 60. @@ -100,13 +86,12 @@ examples: - If I have an object and move it 0.1 meters each frame, after 1 second it should have been moved 6 meters. -In UPBGE you can control the logic tick intervals for each object by skipping a given ammount -of ticks, allowing you to run logic at exact custom time intervals or optimize logic which -doesn't need to run each frame. The following diagram shows how logic tick skipping work. +In UPBGE you can control the logic tick intervals for each object by skipping a given ammount of ticks, allowing you to run logic at exact custom time intervals or optimize logic which doesn't need to run each frame. The following diagram shows how logic tick skipping work. -.. figure:: /images/tutorials-getting_started-logic_ticks_diagram.png +.. figure:: /images/Tutorials/getting_started/18-logic_tick_skipping_dark.png + :figwidth: 50% - Logic tick skipping diagram. + Logic tick skipping diagram In the given diagram, where dark red is logic execution and grey is a interval: @@ -114,5 +99,4 @@ In the given diagram, where dark red is logic execution and grey is a interval: 2. Skipping of 2 ticks between each logic execution. 3. Skipping of 6 ticks between each logic execution. -To understand how the game loop and logic triggering works is important for you to shape -the way your logic will be made and understand internal behaviors that UPBGE may show. +To understand how the game loop and logic triggering works is important for you to shape the way your logic will be made and understand internal behaviors that UPBGE may show. diff --git a/source/manual/tutorials/introducing_logic_bricks/linked_libraries.rst b/source/manual/tutorials/introducing_logic_bricks/linked_libraries.rst index 88de9075..b6a3ca5c 100644 --- a/source/manual/tutorials/introducing_logic_bricks/linked_libraries.rst +++ b/source/manual/tutorials/introducing_logic_bricks/linked_libraries.rst @@ -1,109 +1,83 @@ +.. _lb-using_linked_libraries: + ============================== Using Linked Libraries In Game ============================== -*Linked Library* is a Blender feature that allows referencing a datablock from another -blend file into the current one, allowing easier manipulation of common assets and better -project management, as you only need to edit the original file to update all the -references. UPBGE supports this Blender feature, specially group instances, which ones -are fairly well integrated through Python. This tutorial aims to show how to use linked -libraries, group instances and manage the links. +*Linked Library* is a Blender feature that allows referencing a datablock from another blend file into the current one, allowing easier manipulation of common assets and better project management, as you only need to edit the original file to update all the references. UPBGE supports this Blender feature, specially group instances, which ones are fairly well integrated through Python. This tutorial aims to show how to use linked libraries, group instances and manage the links. ---------------- Before We Start ---------------- +++++++++++++++++++++++++++++++ -To proceed with this tutorial, we need some base files first. On a directory, save three -empty blend files: *game.blend* (which will contain the references from the libraries), -*lib_character.blend* (which will contain the actual model of our character) and -*lib_scenery.blend* (which will contain the actual model of our ground). We'll edit the -file *game.blend* later, first we must create the contents of our libraries. +To proceed with this tutorial, we need some base files first. On a directory, save three empty blend files: *game.blend* (which will contain the references from the libraries), *lib_character.blend* (which will contain the actual model of our character) and *lib_scenery.blend* (which will contain the actual model of our ground). We'll edit the file *game.blend* later, first we must create the contents of our libraries. lib_character.blend - Add an Monkey object, add it to a group (:kbd:`Ctrl-G`) and rename the group to `player`. + Add a Monkey object, add it to a collection (:kbd:`M`) and rename the collection to ``player``. lib_scenery.blend - Add an Plane, scale it by 5 (so it have the size of 10x10), add it to a group - (:kbd:`Ctrl-G`) and rename the group to `ground`. + Add a Plane, scale it up by 5 (select *plane* > :kbd:`S` > :kbd:`5` > :kbd:`Enter` > size of 10x10), and add it to a collection named ``ground``. Both files should be set up somewhat like this: -.. figure:: /images/tutorials-linked_libraries-base_files_1.png +.. figure:: /images/Tutorials/introducing_logic_bricks/08-linked_libraries.png + :figwidth: 60% - Split view of the two files. + Split view of the two files ------------------- -Linking The Groups ------------------- +Linking Collections +++++++++++++++++++++++++++++++ -Now, we'll create a blend file named *game.blend* on the same directory as our previous -files. In this file, we'll do the following procedures: +Now, we'll create a blend file named *game.blend* on the same directory as our previous files. In this file, we'll do the following procedures: -- Go to the *File* menu, click the option *Link*. -- Select the either *lib_character.blend* or *lib_scenery.blend*. -- Select the option *Group*. -- Select the corresponding group and double click it / click *Link from Library*. +- Go to :menuselection:`File > Link...`. +- Select either ``lib_character.blend`` or ``lib_scenery.blend`` file. +- Select the *Collection* folder. +- Select corresponding collection and double click it/click :menuselection:`Link`. +- Repeat linking the other collection. -.. figure:: /images/tutorials-linked_libraries-linking_1.png +.. figure:: /images/Tutorials/introducing_logic_bricks/09-linked_libraries-linking.png + :figwidth: 60% - Linking procedures diagram. + Linking procedure -If everything went right, you should see in the *3D Viewport* the group instances added. -They are not editable as they are only :ref:`datablock-empty` objects referencing groups -from the original files. +If everything went right, you should see in the *3D Viewport* the collection instances added. They are not editable as they are only :ref:`datablock-empty` objects referencing collections from the original files. The Outliner shows chain icons, signifying those collections are linked. -.. figure:: /images/tutorials-linked_libraries-linking_2.png +.. figure:: /images/Tutorials/introducing_logic_bricks/10-linked_libraries-linked.png + :figwidth: 80% - Groups instanced on game.blend scene. + Collections instanced in game.blend scene -With the instances added, all you have to do is place them with the desired -transformations, and if you need to edit all the placed instances, just edit the original -file to update all the references. Pretty handy, isn't it? +With the instances added, all you have to do is place them with the desired transformations, and if you need to edit all the placed instances, just edit the original file to update all the references. Pretty handy, isn't it? ------------------- Managing the Links ------------------- +++++++++++++++++++++++++++++++ -If you rename or move any of your libraries to another folder, you will face a common -problem: broken links. There are several ways to deal with this problem, and this section -will present you the use of the *Outliner* to manage links (and :ref:`datablock-index`). +If you rename or move any of your libraries to another folder, you will face a common problem: broken links. There are several ways to deal with this problem, and this section will present you the use of the *Outliner* to manage links (and :ref:`datablock-index`). -I have renamed the library files to `LibCharacter` and `LibScenery`, which are different -names from the previous ones (with underlines and only lower case characters). When opening -`game.blend`, the editor will complain about the non existing libraries, and our instances -will be shown only as :ref:`datablock-empty` objects. +I have renamed the library files to `LibCharacter` and `LibScenery`, which are different names from the previous ones (with underlines and only lower case characters). When opening `game.blend`, the editor will complain about the non-existing libraries, and our instances will be shown only as :ref:`datablock-empty` objects. -.. figure:: /images/tutorials-linked_libraries-managing_1.png +.. figure:: /images/Tutorials/introducing_logic_bricks/11-linked_libraries-broken_links.png + :figwidth: 100% - Main file after libraries be renamed. + Opening game.blend after libraries be renamed To fix this, we must go to the *Outliner* and select the *Blend File* mode. On this mode we'll see all :ref:`datablock-index` on our blend file. -.. figure:: /images/tutorials-linked_libraries-managing_2.png +.. figure:: /images/Tutorials/introducing_logic_bricks/12-linked_libraries-outliner.png + :figwidth: 50% - *Blend File* mode on the *Outliner*. + Blender File mode in Outliner -The important elements here are the references to our libraries at the bottom: they are -being shown as cracked icons and their previous names. We have two choices to fix this issue: +The important elements here are the references to our libraries at the bottom: they are being shown as cracked icons and their previous names. To fix this issue: -Renaming the references - You only need to double click the references and provide the new names. If they are in another folder, you must provide the relative path. - Relocating the references - You only need to right click the references, select *Relocate* and select the corresponding file. + Right click the references, select :menuselection:`Relocate` and select the corresponding file. -.. figure:: /images/tutorials-linked_libraries-managing_3.png +.. figure:: /images/Tutorials/introducing_logic_bricks/13-linked_libraries-relocate_broken.png + :figwidth: 60% - Broken references fix modes on the *Outliner*. + Broken references fix modes in Outliner -After fixing the broken references, their icons will change back to normal and the objects -will be automatically updated in the *3D Viewport*. +After fixing the broken references, their icons will change back to normal and the objects will be automatically updated in the *3D Viewport*. -.. figure:: /images/tutorials-linked_libraries-managing_4.png - - Fixed references and objects updated on the *3D Viewport*. - -Understanding how to use and manage linked libraries is important to maintain a complex and -healthy project environment. Much more can be achieved through the use of :class:`bge.logic.LibLoad`, -loading and unloading libraries dynamically using Python, but for simpler projects, linked -libraries should do the job. \ No newline at end of file +Understanding how to use and manage linked libraries is important to maintain a complex and healthy project environment. Much more can be achieved through the use of :class:`bge.logic.LibLoad`, loading and unloading libraries dynamically using Python, but for simpler projects, linked libraries should do the job. diff --git a/source/manual/tutorials/introducing_logic_bricks/move_object.rst b/source/manual/tutorials/introducing_logic_bricks/move_object.rst index 8bf26cbc..3ee477a2 100644 --- a/source/manual/tutorials/introducing_logic_bricks/move_object.rst +++ b/source/manual/tutorials/introducing_logic_bricks/move_object.rst @@ -1,6 +1,8 @@ -============= +.. _lb-move_object: + +============================== Moving A Cube -============= +============================== In this short tutorial we will introduce two essential elements for logic in UPBGE: logic triggering and game properties. These elements allows the interactivity with the set up objects. @@ -8,58 +10,55 @@ A **game property** (also known as variable) is a value that is kept inside a ob The **logic triggering** is the act of triggering some kind of event in the game. There's lots of ways to trigger events in UPBGE, from detecting if a key is pressed to detecting an object colliding with another, or even triggering events continuously without detecting anything. After the detection of an trigger, an event can be happen, like a object to move, a property be changed, etc. ------------ Setup Scene ------------ +++++++++++++++++++++++++++++++ -First, we must add objects to compose our scene. We need three basic objects: +First, we must add objects to compose our scene (*mouse-over* 3D Viewport > :kbd:`Shift-A`). We need three basic objects: Camera A camera will allow us to see our scene from a point of view. Light - A light will illuminate the scene objects, allowing us to see them. In this example we'll - use a Sun light, which will illuminate all objects in the scene. + A light will illuminate the scene objects, allowing us to see them. In this example we'll use a Sun light, which will illuminate all objects in the scene. Cube - A Cube object will be our visual feedback of our logic. As we can't see a camera or light, - we'll move the Cube. + A Cube object will be our visual feedback of our logic. As we can't see a camera or light, we'll move the Cube. Once all objects were added, place them somewhat like the picture below: -.. figure:: /images/tutorials-move_object-initial_scene.png +.. figure:: /images/Tutorials/introducing_logic_bricks/01-move_object-initial_scene.png + :figwidth: 90% - The Camera is showing the Cube, the Cube is at the center of the scene and the Hemi lamp can be anywhere. + Cube at the center of the scene Our Cube is not centered in the screen on purpose: we'll move it in the front direction (``-Y``), so it's good to see it moving after certain point. ------------- Adding Logic ------------- +++++++++++++++++++++++++++++++ -After the scene is set up, follow these steps: +After the scene is set up, with `Cube` selected, follow these steps: - Go to the :ref:`bpy.types.SpaceLogicEditor`. -- Add a :ref:`sensor-keyboard` through the dropdown menu named **Add Sensor**. -- Add a :ref:`controller-and` through the dropdown menu named **Add Controller**. -- Add a :ref:`actuator-motion` through the dropdown menu named **Add Actuator**. -- Connect each brick by dragging and dropping one insert into another. +- Add a :ref:`sensor-keyboard` through the dropdown menu :menuselection:`Add Sensor`. +- Add a :ref:`controller-and` through the dropdown menu :menuselection:`Add Controller`. +- Add a :ref:`actuator-motion` through the dropdown menu :menuselection:`Add Actuator`. + +Connect each brick by dragging and dropping one insert into another (`chain link` icon). Now we must fill some information on the bricks: -- On the :ref:`sensor-keyboard`, click on the *Key* field and press a key to assign a key to it. -- On the :ref:`actuator-motion`, insert the value ``-0.05`` in the field *Y* of *Loc*. +- On the :ref:`sensor-keyboard`, click on the ``Key`` field and press a key to assign a key to it. +- On the :ref:`actuator-motion`, insert the value ``-0.05`` in the field ``Y`` of ``Loc``. The :ref:`bpy.types.SpaceLogicEditor` should look like this: -.. figure:: /images/tutorials-move_object-logic_editor_1.png +.. figure:: /images/Tutorials/introducing_logic_bricks/02-move_object-logic_editor.png + :figwidth: 100% :ref:`sensor-keyboard` > :ref:`controller-and` > :ref:`actuator-motion` -Now, start the game engine (by default, pressing :kbd:`P` while focusing the 3D Viewport). -If you press the key you assigned to the :ref:`sensor-keyboard`, the Cube will move in the -``-Y`` direction, and if you release the key, the Cube will stop. +Start the game engine (by default, pressing :kbd:`P` while focusing/mouse-over the 3D Viewport). If you press the key you assigned to the :ref:`sensor-keyboard`, the Cube will move in the ``-Y`` direction, and if you release the key, the Cube will stop. This behavior happens for several reasons: @@ -67,26 +66,23 @@ This behavior happens for several reasons: - The :ref:`controller-and` receives the signals from all connected sensors, and if all signals are positive, the controller emits an activation signal to all connected actuators, or an deactivation signal if one or more incoming signals are negative. - The :ref:`actuator-motion` receives the activation signal from the controller and perform the motion. When it receives a deactivation signal, it stops performing the motion. -This is the basic of visual logic when using UPBGE, pretty straightforward. However, -according to what you want to achieve, it can get a lot more complex. +This is the basic of visual logic when using UPBGE, pretty straightforward. However, according to what you want to achieve, it can get a lot more complex. ------------------------------ Logic Depending On Properties ------------------------------ +++++++++++++++++++++++++++++++ -In games, the logic depends on statuses most of the time. An enemy dies when its life reaches -``0``, the player can shoot while its ammo is greater than ``0``, and so on. In UPBGE, you -can do these conditions through the use of properties. +In games, the logic depends on statuses most of the time. An enemy dies when its life reaches ``0``, the player can shoot while its ammo is greater than ``0``, and so on. In UPBGE, you can do these conditions through the use of properties. To continue, perform the following steps: -- In :ref:`editor-logic-properties`, add a property through **Add Game Property**, set its name to *fuel*, its type to *Integer* and its value to ``200``. -- In :ref:`bpy.types.SpaceLogicEditor`, add a :ref:`sensor-property`, set its evaluation type to **Greater Than**, the property to *fuel* and the value to ``0``. +- In :ref:`bpy.types.SpaceLogicEditor` (No. 1 - :menuselection:`Properties`), add a property through :menuselection:`Add Game Property`, set its name to ``fuel``, its type to ``Integer`` and its value to ``200``. +- Next add a :ref:`sensor-property`, set its evaluation type to *Greater Than*, the Property to *fuel* and the value to ``0``. - Connect the :ref:`sensor-property` to the :ref:`controller-and`, along with the :ref:`sensor-keyboard`. -.. figure:: /images/tutorials-move_object-logic_editor_2.png +.. figure:: /images/Tutorials/introducing_logic_bricks/03-move_object-property_2x.png + :figwidth: 100% - The property *fuel* added and the :ref:`sensor-property` properly filled. + Property Sensor (left side) properly filled and Fuel property added (right side) This makes our Cube move only if the value of *fuel* is greater than ``0``. You can set the property *fuel* to ``0`` and play the game, and you will see that the Cube will not move. However, it would be good if we decrease the value of *fuel* as our Cube moves, until it reaches ``0``. To do that, do the following steps: @@ -94,31 +90,21 @@ This makes our Cube move only if the value of *fuel* is greater than ``0``. You - Set the mode of :ref:`actuator-property` to **Add**, its property to *fuel* and its value to ``-1``. - Enable the pulse mode on :ref:`sensor-keyboard`. -.. figure:: /images/tutorials-move_object-logic_editor_3.png +.. figure:: /images/Tutorials/introducing_logic_bricks/04-move_object-fuel_consumption.png + :figwidth: 100% - The sensors connected to :ref:`controller-and` and the new :ref:`actuator-property` properly filled. + Fuel consumption logic: Sensors > And Controller > Property Actuator + +There's a new factor involved here: the pulse mode on :ref:`sensor-keyboard` (blue ``up`` arrow in top left corner). By default, a sensor sends a single positive signal to the controller when active, and a single negative signal when inactive. The pulse mode makes the signal be sent each logical frame (default is 60 frames per second). This is useful for us now, because we need our *fuel* to be decreased while we press the key without the need of releasing and pressing it again. -There's a new factor involved here: the pulse mode on :ref:`sensor-keyboard`. By default, -a sensor sends a single positive signal to the controller when active, and a single negative -signal when inactive. The pulse mode makes the signal be sent each logical frame (default -is 60 frames per second). This is useful for us now, because we need our *fuel* to be -decreased while we press the key without the need of releasing and pressing it again. +Go ahead and play the game. The Cube will move and, after some time, it stops. It happens because the :ref:`actuator-property` has decreased ``1`` unit of *fuel* each frame, according to the :ref:`sensor-keyboard` pulse mode, and when *fuel* reaches ``0``, the logic of the :ref:`actuator-motion` doesn't respond anymore. It would be good, however, to see the value of *fuel* be decreased over time. You can do this by enabling the debug flag on the *fuel* property (:menuselection:`Properties Editor > Game > Game Properties`), or :menuselection:`Logic Bricks Editor > N-panel > Properties`, as shown in the figure below. -Go ahead em play the game. The Cube will move and, after some time, it stops. It happens -because the :ref:`actuator-property` has decreased ``1`` unit of *fuel* each frame, -according to the :ref:`sensor-keyboard` pulse mode, and when *fuel* reaches ``0``, the -logic of the :ref:`actuator-motion` doesn't respond anymore. It would be good, however, to -see the value of *fuel* be decreased over time. You can do this by enabling the debug flag -on the *fuel* property and the **Show Debug Properties** on menu *Game > Show Debug > Show -Debug Properties*, or on the **Render** editor, as shown in the figure below. +.. figure:: /images/Tutorials/introducing_logic_bricks/05-move_object-debug.png + :figwidth: 100% -.. figure:: /images/tutorials-move_object-debug_properties.png + Debug settings and display on screen ----------- Conclusion ----------- +++++++++++++++++++++++++++++++ -The goal of this basic tutorial is to show how to work with the visual logic and properties -on UPBGE. There's more to be discovered about visual logic and properties, like other -:ref:`logic-properties-types`, the use of :ref:`logic-states` with logic bricks, etc, -and those subjects can be better understood on their own pages. +The goal of this basic tutorial is to show how to work with the visual logic and properties on UPBGE. There's more to be discovered about visual logic and properties, like other :ref:`logic-properties-types`, the use of :ref:`logic-states` with logic bricks, etc, and those subjects can be better understood on their own pages. diff --git a/source/manual/tutorials/introducing_logic_bricks/play_animation.rst b/source/manual/tutorials/introducing_logic_bricks/play_animation.rst index 319493aa..794aaa76 100644 --- a/source/manual/tutorials/introducing_logic_bricks/play_animation.rst +++ b/source/manual/tutorials/introducing_logic_bricks/play_animation.rst @@ -1,75 +1,54 @@ -==================== +.. _lb-play_animation: + +============================== Playing An Animation -==================== +============================== -In games, animations can be used in many places other than characters - a sliding menu, a -opening door, coins rotating, etc. In UPBGE, an animation can be played through the use -of an :ref:`datablock-action`. This tutorial will show you how to play an animation in a -object and the concept of animation layering, allowing you to play and blend multiple -animations at once in a single object. +In games, animations can be used in many places other than characters - a sliding menu, a opening door, coins rotating, etc. In UPBGE, an animation can be played through the use of an :ref:`datablock-action`. This tutorial will show you how to play an animation of an object and the concept of animation layering, allowing you to play and blend multiple animations at once in a single object. ---------------- Before We Start ---------------- +++++++++++++++++++++++++++++++ -Before we start using animations through logic, we need some animations. As we said before, -UPBGE animations work through the use of :ref:`datablock-action`, so we need to set our -default **Dope Sheet** editor from *Dope Sheet* mode to *Action Editor* mode. Now, assuming -you already know how to make simple animations adding keyframes, we'll make two simple -actions on a cube of a total 50 frames each, with the following settings: +Before we start using animations through logic, we need some animations. As we said before, UPBGE animations work through the use of :ref:`datablock-action`, so we need to set our default *Dope Sheet* editor from *Dope Sheet* mode to *Action Editor* mode. Now, assuming you already know how to make simple animations adding keyframes, we'll make two simple actions on a cube of a total 50 frames each, with the following settings: -- Rotation action named *rotate*: No rotation at frame 0, 180° at ``Z`` axis on frame - 25, more 180° at ``Z`` axis on frame 50 (that is, a full 360°). +- Rotation action named *rotate*: No rotation at frame 1, 180° at ``Z`` axis on frame 25, more 180° at ``Z`` axis on frame 50 (that is, a full 360°). -- Scaling action named *scale*: No scale at frame 0, double scale at frame 25 and no - scale at frame 50 again. +- Scaling action named *scale*: 0 scale at frame 1, double scale at frame 25 and 0 scale at frame 50 again. -.. figure:: /images/tutorials-play_animation-action_editor.png +.. figure:: /images/Tutorials/introducing_logic_bricks/06-play_animation-rotate_scale.png + :figwidth: 100% - *Action Editor* showing each action. + Action Editor showing both actions -Note the transform channels: *rotate* action only have *Rotation* channels, and *scale* -action only have *Scaling* channels. This is important to properly blend those actions -later on, as having the same channels on both (even without an actual transform) may not -have the expected result in the end. +Note the transform channels: *rotate* action only has *Euler Rotation* channels, and *scale* action only has *Scale* channels. This is important to properly blend those actions later on, as having the same channels on both (even without an actual transform) may not have the expected result in the end. ---------- The Logic ---------- +++++++++++++++++++++++++++++++ Now, go to the :ref:`bpy.types.SpaceLogicEditor` and do the following setup: -- Add two :ref:`sensor-keyboard` through the dropdown menu named **Add Sensor**. -- Add two :ref:`controller-and` through the dropdown menu named **Add Controller**. -- Add two :ref:`actuator-action` through the dropdown menu named **Add Actuator**. -- Connect each brick by dragging and dropping one insert into another. +- Add two :ref:`sensor-keyboard` through the dropdown menu :menuselection:`Add Sensor`. +- Add two :ref:`controller-and` through the dropdown menu :menuselection:`Add Controller`. +- Add two :ref:`actuator-action` through the dropdown menu :menuselection:`Add Actuator`. + +Connect each brick by dragging and dropping one insert into another. + Now we must fill some fields: -- On the :ref:`sensor-keyboard`, rename both, respectively, to *rotate* and *scale*, and - set the field *Key* to, respectively, :kbd:`A` and :kbd:`S`. -- On the :ref:`actuator-action`, rename both, respectively, to *rotate* and *scale*, set - the playback type to *Loop Stop*, the value to its respective actions, *End Frame* to 50 - and *Layer* to, respectively, 0 and 1. +- On the :ref:`sensor-keyboard`, rename both, respectively, to ``rotate`` and ``scale``, and set the field ``Key`` to, respectively, :kbd:`A` and :kbd:`S`. +- On the :ref:`actuator-action`, rename both, respectively, to ``rotate`` and ``scale``, set the playback type to ``Loop Stop``, the value to its respective actions, ``End Frame`` to 50 and ``Layer`` to, respectively, 0 and 1. The setup should look somewhat like the figure below: -.. figure:: /images/tutorials-play_animation-logic_editor_1.png +.. figure:: /images/Tutorials/introducing_logic_bricks/07-play_animation-editor_setup.png + :figwidth: 100% - The :ref:`bpy.types.SpaceLogicEditor` with the given logic set. + Logic Bricks Editor with the given logic set -Now, play the game by pressing :kbd:`P` while focusing the *3D Viewport*. When you press -:kbd:`A` the cube should rotate, and when you press :kbd:`A` the cube should scale. When -pressing both buttons the cube will rotate and scale at the same time, blending both -actions. This is only possible due to different animation layers being blended togheter. -For a matter of testing, set the actuator *scale*'s *Layer* to 0, the same value from the -actuator *rotate*. When you play the game, you can't play both animations at the same time: -the last triggered actuator overwrites the currently playing. +Now, play the game by pressing :kbd:`P` while focusing the *3D Viewport*. When you press :kbd:`A` the cube should rotate, and when you press :kbd:`S` the cube should scale. When pressing both buttons the cube will rotate and scale at the same time, blending both actions. This is only possible due to different animation layers being blended together. For a matter of testing, set the actuator *scale Layer* to 0, the same value from the actuator *rotate*. When you play the game, you can't play both animations at the same time: the last triggered actuator overwrites the currently playing. ----------- Conclusion ----------- +++++++++++++++++++++++++++++++ -This is how you play and blend animations using visual logic in UPBGE. There's more to be -discovered, like playback modes, blending and more, and this can be learnt from the -:ref:`actuator-action` page. \ No newline at end of file +This is how you play and blend animations using visual logic in UPBGE. There's more to be discovered, like playback modes, blending and more, and this can be learnt from the :ref:`actuator-action` page. diff --git a/source/manual/tutorials/introducing_logic_nodes/a_first_example.rst b/source/manual/tutorials/introducing_logic_nodes/a_first_example.rst index dc9c8441..b6fe5435 100644 --- a/source/manual/tutorials/introducing_logic_nodes/a_first_example.rst +++ b/source/manual/tutorials/introducing_logic_nodes/a_first_example.rst @@ -1,14 +1,13 @@ .. _ln-a_first_example: -=============== +============================== A First Example -=============== +============================== We will print some text to the console when a keyboard key is pressed. This is the "Hello World" example for the Logic Nodes. --------------- System Console --------------- +++++++++++++++++++++++++++++++ UPBGE uses system console/terminal to print info and error messages. To see those messages: @@ -19,70 +18,74 @@ Windows users: Linux and Mac users: * start UPBGE via console/terminal - navigate to blender executable file, and run:: -| ``./blender`` .. figure:: /images/Tutorials/introducing_logic_nodes/00_terminal_run.png + :figwidth: 100% Run UPBGE on Linux or Mac terminal ---------------------------------- Activating the Logic Nodes Add-on ---------------------------------- ++++++++++++++++++++++++++++++++++ The *Logic Nodes* add-on comes preinstalled in UPBGE 0.3+. If not already, it needs to be activated: * :menuselection:`Edit -> Preferences -> Add-ons` .. figure:: /images/Tutorials/introducing_logic_nodes/01_edit_menu_prefs.png + :figwidth: 100% Navigate to Preferences There, in *search/filter* field, filter for ``logic``, and check the box for *Logic Nodes+*. .. figure:: /images/Tutorials/introducing_logic_nodes/02_prefs_filter_logic.png + :figwidth: 100% Search for 'logic' and check the box Click the little arrow, next to the check box, to expand the *Logic Nodes+* add-on menu, and in the :menuselection:`Preferences` click :menuselection:`Install or Update Uplogic Module` button. .. figure:: /images/Tutorials/introducing_logic_nodes/03_prefs_addons_ln_unfold.png + :figwidth: 90% Install or Update Uplogic Module -.. note:: +.. important:: This same :menuselection:`Preferences` menu can be used to report a bug - click on :menuselection:`Report a Bug` button (internet connection is required). The default web browser will open ``github.com`` web page. There, click :menuselection:`New issue` button, and follow the instructions. Houston, the eagle has landed. We're good to go. -------------------------- Creating a New Logic Tree -------------------------- +++++++++++++++++++++++++++++++ Now let's get started. First we need to create a logic tree. Switch the *Editor Type* to the :menuselection:`Logic Node Editor`. .. figure:: /images/Tutorials/introducing_logic_nodes/04_editor.png + :figwidth: 50% Select Logic Node Editor This editor is similar to the *Shader Editor* or *Geometry Node Editor*. Click on :menuselection:`New` and a new empty tree (named *Logic Node Editor* by default) will be created. .. figure:: /images/Tutorials/introducing_logic_nodes/05_new_ln_tree.png + :figwidth: 100% Click New button .. figure:: /images/Tutorials/introducing_logic_nodes/06_n_panel_dashboard.png + :figwidth: 100% New empty Node Tree with side Dashboard ------------- Adding Nodes ------------- +++++++++++++++++++++++++++++++ With mouse cursor inside *Logic Node Editor*, press :kbd:`Shift-A`, or click :menuselection:`Add` button in top header. This will pop-up a menu with all available *Logic Nodes*, organized in sub-menus. Go ahead and take a look at what is available. .. figure:: /images/Tutorials/introducing_logic_nodes/07_add_key_node.png + :figwidth: 100% Available Logic Nodes in Add menu @@ -93,6 +96,7 @@ For this example, we're looking for two nodes: the ``Key`` and the ``Print`` nod * if accidentally wrong node is selected, press :kbd:`ESC` to cancel, and repeat. .. figure:: /images/Tutorials/introducing_logic_nodes/08_search_print_node.png + :figwidth: 100% Editor searches for node @@ -107,25 +111,24 @@ The ``Print`` node is an **action** type node. These nodes actually do something Those two nodes need to be connected together. The ``Key`` node has an *If Pressed* output socket, colored red. Connect it (click-and-drag) to the *Condition* input socket of the ``Print`` node and enter "Hello World" in the text box at the bottom, next to *Value* input socket (blue sockets are for *strings*). Also, if not already, look at the ``Key`` node and you'll see that it expects user to choose a key. Click the bottom field and press :kbd:`SPACE` key, which will set that key as selected one. It should look something like this now: .. figure:: /images/Tutorials/introducing_logic_nodes/09_nodes_connected.png + :figwidth: 100% Logic Nodes added and connected --------------------- Applying Logic Trees --------------------- +++++++++++++++++++++++++++++++ -Once done, all that's left is to apply the tree to an object. Logic trees work the -following way: +Once done, all that's left is to apply the tree to an object. Logic trees work the following way: * each tree can be applied to as many objects as you want; * meaning it is executed by each object it is applied to, separately. -Example: if this tree is attached to 4 objects and user presses :kbd:`SPACE` key **once**, -the message would be printed 4 times, once for each object. +Example: if this tree is attached to 4 objects and user presses :kbd:`SPACE` key **once**, the message would be printed 4 times, once for each object. To apply a tree to a cube, first a cube is added; select it and press :menuselection:`Apply To Selected` button, in the *Dashboard* tab of side *N-panel*. Press :kbd:`N` to toggle *N-panel*, if it is hidden. .. figure:: /images/Tutorials/introducing_logic_nodes/10_apply_to_selected.png + :figwidth: 100% Apply logic tree to selected object @@ -136,6 +139,7 @@ To apply a tree to a cube, first a cube is added; select it and press :menuselec To see which objects have been applied with a *Logic Node* tree, scroll down the *Dashboard* tab, and check the *Tree applied to:* sub-panel at the bottom. .. figure:: /images/Tutorials/introducing_logic_nodes/11_tree_applied_to.png + :figwidth: 100% Objects with applied Logic Node tree @@ -145,6 +149,7 @@ If needed, sub-panels can be rearranged: * click-and-drag top-right icon (4 by 2 dots) of sub-panel. .. figure:: /images/Tutorials/introducing_logic_nodes/12_rearange_n_sub_panel.png + :figwidth: 100% Collapsed and rearranged N-panel sub-panels @@ -154,6 +159,7 @@ What is left now is to run our example \'game\': * with \'game\' running, press :kbd:`SPACE` (or whichever keyboard key is assigned in ``Key`` node) once; .. figure:: /images/Tutorials/introducing_logic_nodes/13_embedded_start.png + :figwidth: 100% Start the game in Render panel @@ -164,6 +170,7 @@ Finally check the system console - it should have our message printed: * four times if logic tree was applied to two objects, and :kbd:`SPACE` was pressed twice etc. .. figure:: /images/Tutorials/introducing_logic_nodes/14_terminal_output.png + :figwidth: 100% System console/terminal output @@ -174,4 +181,3 @@ Finally check the system console - it should have our message printed: The ``Print`` node prints to the system console only, not to the Python interactive console. This is a feature of Blender and is not changable. Press :kbd:`ESC` key to end the \'game\'. - diff --git a/source/manual/tutorials/introducing_logic_nodes/index.rst b/source/manual/tutorials/introducing_logic_nodes/index.rst index 8c8ca487..be03cb92 100644 --- a/source/manual/tutorials/introducing_logic_nodes/index.rst +++ b/source/manual/tutorials/introducing_logic_nodes/index.rst @@ -8,3 +8,4 @@ Introducing Logic Nodes :maxdepth: 2 a_first_example + moving_cube diff --git a/source/manual/tutorials/introducing_logic_nodes/moving_cube.rst b/source/manual/tutorials/introducing_logic_nodes/moving_cube.rst new file mode 100644 index 00000000..0e9b484f --- /dev/null +++ b/source/manual/tutorials/introducing_logic_nodes/moving_cube.rst @@ -0,0 +1,34 @@ +.. _ln-moving_cube: + +============================== +Moving A Cube +============================== + +Moving an object requires input from user, processing this input, and applying movement to object. To run the game, a *Camera* object is also required. + +- Add 4 :ref:`ln-keyboard_key` nodes, and assign :kbd:`A` for left, :kbd:`D` for right, :kbd:`W` for forward, and :kbd:`S` for backward movement. +- Add 2 :ref:`ln-math` nodes, set both to ``Subtract``, and connect 2 above nodes to each *Math* node, i.e. :kbd:`A` and :kbd:`D` nodes to one *Math* node, :kbd:`W` and :kbd:`S` to the other *Math* node. +- Next add a :ref:`ln-combine_xy`, connect above *Math* nodes to ``X`` and ``Y`` input sockets. +- Connect to :ref:`ln-vector_math` ``Vector 1`` socket, set ``Normalize`` property from dropdown menu. +- Connect the ``Result`` output to another *Vector Math* node > ``Vector 1`` socket. Set property to ``Scale``. + + .. tip:: Either add new node, or select existing one > :kbd:`Shift-D` to duplicate > move with mouse > :kbd:`LMB` to 'land' it. Keep mouse cursor close to the node while duplicating. + +- Add :ref:`ln-float` node, set value to ``0.1``, and connect it to the last *Vector Math* node, ``Scale`` input. This will determine movement *speed* for the object. +- Add :ref:`ln-apply_movement` node; output from above *Vector Math* node goes into ``Vector`` input. Check ``Local`` box, and in the *Object* input select an object to move, i.e. *Cube*. +- Last, add :ref:`ln-on_update` node, and connect to above *Apply Movement* > ``Condition`` socket. + +Alright, now we apply this *logic tree* to an object. + +- Select (or add) any object, in *Logic Nodes Editor* select all nodes (:kbd:`A`), and in :menuselection:`N-panel > Dashboard > Administration` click :menuselection:`Apply To Selected` button. If the game does not run as expected, also click :menuselection:`Force Compile`. + +Logic tree should look like this: + +.. figure:: /images/Tutorials/introducing_logic_nodes/15_move_object.png + :figwidth: 100% + + Logic tree for moving an object with keyboard + +Run the game, use the keyboard keys we set in first step to move the Cube. + +If object is moving in wrong direction, either swap keys in *Keyboard Key* nodes (i.e. ``A`` > ``D`` and ``D`` > ``A``), or swap ``A`` and ``B`` inputs in *Math* node. diff --git a/source/manual/tutorials/introducing_python/basic_concepts.rst b/source/manual/tutorials/introducing_python/basic_concepts.rst index 152f0cf7..ebe18a3f 100644 --- a/source/manual/tutorials/introducing_python/basic_concepts.rst +++ b/source/manual/tutorials/introducing_python/basic_concepts.rst @@ -1,67 +1,59 @@ +.. _py-basic_concepts: + ============== Basic Concepts ============== -This tutorial will give you a quick introduction about how to use Python within the -Game Engine. Basically, it will enable you to start with Python scripting avoiding -typical errors and wrong paths. +This tutorial will give you a quick introduction about how to use Python within the Game Engine. Basically, it will enable you to start with Python scripting avoiding typical errors and wrong paths. + +When writing Python code for the UPBGE we recommend to keep the UPBGE Python API open as reference. You can find it here: `UPBGE Python API `__. -When writing Python code for the UPBGE we recommend to keep the UPBGE Python API -open as reference. You can find it here: `UPBGE Python API `__ +If you don't know enough Python to begin +++++++++++++++++++++++++++++++++++++++++ -------------------------------------------- -If you don't know enough Python to begin... -------------------------------------------- -This tutorial is not a tutorial to teach you Python. If you don't know enough Python -to begin with maybe worth trying to play with Python on the side, at least to cover the basics. +This tutorial is not a tutorial to teach you Python. If you don't know enough Python to begin, find an online Python beginner tutorial, and learn the basics. Some recommendations: -This one essentially looks amazing (make sure to go through the different chapters!) -`https://jakevdp.github.io/WhirlwindTourOfPython/02-basic-python-syntax.html `__ +This one essentially looks amazing (make sure to go through the different chapters!): + `jakevdp.github.io/WhirlwindTourOfPython `__. -Maybe a lot to read, but at least they explain a bunch of things, you don’t have -to rush... `https://www.techbeamers.com/python-tutorial-step-by-step `__ +Maybe a lot to read, but at least they explain a bunch of things, you don’t have to rush: + `techbeamers.com/python-tutorial-step-by-step `__. -And we mean, maybe Google explains better than us: -`https://developers.google.com/edu/python/set-up `__ +Another good one: + `developers.google.com/edu/python/set-up `__. -Just pick your poison. Take your time to read, really :-). -If you go through with it, you’ll be ready to try your new spells on the UPBGE! +Just pick your poison. Take your time and learn the basics :-). If you go through it, you’ll be ready to try your new spells on the UPBGE! ------------------------------- -Logic Brick: Python Controller ------------------------------- +Logic Bricks: Python Controller ++++++++++++++++++++++++++++++++ .. figure:: /images/Tutorials/Introducing_Python/tutorials-introducing-python-01.png - Controller brick at Logic Brick editor. + Controller brick at Logic Bricks editor A Python controller is basically a logic brick that you can program using Python scripts. -If you look at how a controller usually behaves, they do pretty simple things: +If you look at how a controllers usually behave, they do pretty simple things: - ``AND`` Controller: When all connected sensors are positive, activate all connected actuators. - ``OR`` Controller: When one of the connected sensors is positive, activate all connected actuators. - ``NAND`` Controller: When no connected sensor is positive, activate all connected actuators. - ``XOR`` Controller: When only one of the connected sensors is positive, activate all, etc. -These are all basic logic gates, but what if you want more control? What if you want to test -if a sensor is positive, and actually check some values from it? -That is when you use a Python controller: +These are all basic logic gates, but what if you want more control? What if you want to test if a sensor is positive, and actually check some values from it? + +This is when you use a Python controller: .. figure:: /images/Tutorials/Introducing_Python/tutorials-introducing-python-02.png - Python controller at Logic Brick editor. + Python controller at Logic Bricks editor .. note:: + You need at least one sensor connected to the controller in order to trigger it! It can be anything, but the trigger comes from a sensor. - You need at least one sensor connected to the controller in order to trigger it!. - It can be anything, but the trigger comes from a sensor… - -Now to write a script you just open Blender’s text editor, and you can start writing your first script. +Now to write a script, open UPBGE text editor, and start writing your first script. -So, little bit of disclaimer: When people see programs they usually go “that’s so hacker, it is too complex”. -But fear not: Programs are meant to be written using English words, a bit like a recipe! It is a simple -list of instructions to get from a state A to a state B. +So, little bit of disclaimer: When people see programming code, they usually go “that’s so hacker, it is too complex”. But fear not: Programs are written using English words, a bit like a recipe! It is a simple list of instructions to get from a state A to a state B. .. code-block:: python @@ -85,5 +77,4 @@ list of instructions to get from a state A to a state B. # Let's make it turn too owner.applyRotation([0, 0, 0.1]) # [x, y, z] -Lot of comments in this code, but if you read the code word by word, usually it is pretty easy -to understand what is going to happen once the Python controller will execute it! +Lot of comments in this code, but if you read the code word by word, it is pretty easy to understand what is going to happen once the Python controller will execute it!