{"id":548,"date":"2020-09-14T16:00:21","date_gmt":"2020-09-14T14:00:21","guid":{"rendered":"https:\/\/dragondreams.ch\/?page_id=548"},"modified":"2025-10-09T15:51:51","modified_gmt":"2025-10-09T15:51:51","slug":"changelog-release-1-2","status":"publish","type":"page","link":"https:\/\/dragondreams.ch\/index.php\/changelog-release-1-2\/","title":{"rendered":"Changelog Release 1.2"},"content":{"rendered":"<div id=\"pl-548\"  class=\"panel-layout\" ><div id=\"pg-548-0\"  class=\"panel-grid panel-no-style\" ><div id=\"pgc-548-0-0\"  class=\"panel-grid-cell\" ><div id=\"panel-548-0-0-0\" class=\"so-panel widget widget_sow-image panel-first-child panel-last-child\" data-index=\"0\" ><div\n\t\t\t\n\t\t\tclass=\"so-widget-sow-image so-widget-sow-image-default-c67d20f9f743-548\"\n\t\t\t\n\t\t>\n<div class=\"sow-image-container\">\n\t\t<img \n\tsrc=\"https:\/\/dragondreams.ch\/wp-content\/uploads\/2020\/07\/dragengine-release-1-2-1.png\" width=\"1000\" height=\"350\" srcset=\"https:\/\/dragondreams.ch\/wp-content\/uploads\/2020\/07\/dragengine-release-1-2-1.png 1000w, https:\/\/dragondreams.ch\/wp-content\/uploads\/2020\/07\/dragengine-release-1-2-1-300x105.png 300w, https:\/\/dragondreams.ch\/wp-content\/uploads\/2020\/07\/dragengine-release-1-2-1-768x269.png 768w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" title=\"dragengine-release-1-2\" alt=\"\" \t\tclass=\"so-widget-image\"\/>\n\t<\/div>\n\n<\/div><\/div><\/div><\/div><div id=\"pg-548-1\"  class=\"panel-grid panel-no-style\" ><div id=\"pgc-548-1-0\"  class=\"panel-grid-cell\" ><div id=\"panel-548-1-0-0\" class=\"so-panel widget widget_sow-editor panel-first-child\" data-index=\"1\" ><div\n\t\t\t\n\t\t\tclass=\"so-widget-sow-editor so-widget-sow-editor-base\"\n\t\t\t\n\t\t>\n<div class=\"siteorigin-widget-tinymce textwidget\">\n\t<p style=\"text-align: center;\">Changelog of the 1.2 Drag[en]gine Game Engine and IGDE release.<\/p>\n<p style=\"text-align: center;\"><em>Released: 2020-07-18<\/em><\/p>\n<\/div>\n<\/div><\/div><div id=\"panel-548-1-0-1\" class=\"so-panel widget widget_sow-editor panel-last-child\" data-index=\"2\" ><div\n\t\t\t\n\t\t\tclass=\"so-widget-sow-editor so-widget-sow-editor-base\"\n\t\t\t\n\t\t>\n<div class=\"siteorigin-widget-tinymce textwidget\">\n\t<h1>Drag[en]gine Release 1.2<\/h1>\n<h2 style=\"margin-top: 1em;\"><span style=\"color: #0000ff;\">Features Added<\/span><\/h2>\n<h3 style=\"margin-top: 1em;\"><span style=\"color: #008000;\">DragonScript Script Module<\/span><\/h3>\n<ul>\n<li>Modified BehaviorElement.enterFrame() to remember if attachToParent has been done already. Avoids re-attach exceptions if elements move between game worlds. Not a problem if stub.setAttachTo(null) is called.<\/li>\n<li>Added support for <a href=\"https:\/\/youtu.be\/XEGm5uL2zyc\">Listener Factories<\/a>. For use in situations where <span class=\"style-scope yt-formatted-string\" dir=\"auto\">you do not want to write custom behaviors to add reusable small actions to BehaviorElement subclass (<a href=\"https:\/\/github.com\/LordOfDragons\/deexamples\/blob\/master\/exampleApp\/data\/scripts\/ListenerFactoryExampleClass.ds\">example class<\/a>).<\/span><\/li>\n<li>Added <strong>ImagePixels<\/strong> script class allowing to read pixels colors from loaded image resources.<\/li>\n<li>Added <strong>EditableImage<\/strong> script class allowing to create editable in-memory image resources for example for dynamic height terrains or pixel-precise dynamic in-game images not using CanvasView.<\/li>\n<li>Modified <strong>ImageBorderCanvasCreator<\/strong> to support <a href=\"https:\/\/developer.dragondreams.ch\/wiki\/doku.php\/dragengine:modules:dragonscript:canvascreators?s[]=imagebordercanvascreator#border_image_canvas_creator\">attachments on sides<\/a>.<\/li>\n<li>Added <strong>PanelHud<\/strong> class providing typical 10-area HUD support (9 areas surrounding center area). BaseGameApp creates now such a PanelHud by default.<\/li>\n<li>Added <strong>ForwardKeyPressListener<\/strong> to handle enter-accept-button situations and improved WindowDialog with support to set accept-widget used if enter key is pressed.<\/li>\n<li>Added normalize() method to all matrix classes. Removes scaling from matrix ensuring getEulerAngles() and toQuaternion() returns the correct result when scaled matrices are used.<\/li>\n<li>Added Rig.save(String) method allowing to save rigs build with RigBuilder to file. This allows creating dynamic rigs caching them for reuse during future runs of the game.<\/li>\n<\/ul>\n<h3 style=\"margin-top: 1em;\"><span style=\"color: #008000;\">OpenGL Graphic Module<\/span><\/h3>\n<ul>\n<li>Added rim.* Texture Properties.<\/li>\n<\/ul>\n<h3 style=\"margin-top: 1em;\"><span style=\"color: #008000;\">FBX Modules<\/span><\/h3>\n<ul>\n<li>Added FBX modules to load FBX files as <strong>model resource<\/strong>, <strong>rig resource<\/strong> and <strong>animator resource<\/strong>.<\/li>\n<\/ul>\n<h3 style=\"margin-top: 1em;\"><span style=\"color: #008000;\">IGDE Project Editor<br \/>\n<\/span><\/h3>\n<ul>\n<li>Improved button icons and grouping to improve clarity.<\/li>\n<li>Added actions to browse project content, run-time config and run-time overlay directory as well as quick opening run-time log file.<\/li>\n<\/ul>\n<h3 style=\"margin-top: 1em;\"><span style=\"color: #008000;\">Launchers + IGDE<\/span><\/h3>\n<ul>\n<li>Added Linux Man Pages<\/li>\n<\/ul>\n<h3 style=\"margin-top: 1em;\"><span style=\"color: #008000;\">IGDE Shared Libraries<\/span><\/h3>\n<ul>\n<li>Full separation of ToolKit code. It is now possible to change ToolKit to use OS native ToolKits.<\/li>\n<\/ul>\n<h2 style=\"margin-top: 2em;\"><span style=\"color: #0000ff;\">Bug Fixes<\/span><\/h2>\n<h3 style=\"margin-top: 1em;\"><span style=\"color: #008000;\">OpenAL Audio Module<\/span><\/h3>\n<ul>\n<li>Fixed potential segfault in doalSpeaker if no active microphone is set.<\/li>\n<\/ul>\n<h3 style=\"margin-top: 1em;\"><span style=\"color: #008000;\">DragonScript Script Module<\/span><\/h3>\n<ul>\n<li>Fixed ECBehaviorPlayerInputMove not respecting setCanMove(false) correctly.<\/li>\n<li>Fixed key-repeat-listener being started on widget without focus.<\/li>\n<li>Fixed RigBuilder replacing addShapeProperty functions with setShapeProperties functions. Former is not possible with the game engine checking property count matches shape count.<\/li>\n<\/ul>\n<h3 style=\"margin-top: 1em;\"><span style=\"color: #008000;\">OpenGL Graphic Module<\/span><\/h3>\n<ul>\n<li>Fixed spot light shadow rendering trying to use non-existing shadow-map due to a wrong check verifying cube-map presence instead of shadow-map presence.<\/li>\n<li>Fixed problem in SSR shader not marking non-calculatable results 0 causing streaks to appear.<\/li>\n<\/ul>\n<h3 style=\"margin-top: 1em;\"><span style=\"color: #008000;\">Animator Editor<\/span><\/h3>\n<ul>\n<li>Fixed exception\/segfault potentially caused by AnimatorInstance.Apply() being called fast enough.<\/li>\n<li>Fixed problems with loading sub animators and missing connections.<\/li>\n<li>Fixed attach camera relative position value entered.<\/li>\n<li>Fixed Rule Target Link List Remove Action incorrectly using ComboBox selection instead of ListBox selection.<\/li>\n<\/ul>\n<h3 style=\"margin-top: 1em;\"><span style=\"color: #008000;\">World Editor<br \/>\n<\/span><\/h3>\n<ul>\n<li>Fixed problems with decals vanishing on reloading game-definition. Decals now also properly recalculate if objects move, rotate or scale.<\/li>\n<\/ul>\n<h3 style=\"margin-top: 1em;\"><span style=\"color: #008000;\">IGDE Shared Libraries \/ Editors<br \/>\n<\/span><\/h3>\n<ul>\n<li>Fixed recent files of the current project spilling over to newly created project.<\/li>\n<li>Fixed igdeTreeList::RemoveItem() behavior to select next possible action in a logical way instead of clearing the selection altogether<\/li>\n<\/ul>\n<h3 style=\"margin-top: 1em;\"><span style=\"color: #008000;\">Conversation Editor<\/span><\/h3>\n<ul>\n<li>Fixed topic action tree handling to solve multiple problems with shifting action selection in responsive to various possible actions<\/li>\n<\/ul>\n<\/div>\n<\/div><\/div><\/div><\/div><div id=\"pg-548-2\"  class=\"panel-grid panel-no-style\" ><div id=\"pgc-548-2-0\"  class=\"panel-grid-cell\" ><div id=\"panel-548-2-0-0\" class=\"so-panel widget widget_sow-editor panel-first-child panel-last-child\" data-index=\"3\" ><div\n\t\t\t\n\t\t\tclass=\"so-widget-sow-editor so-widget-sow-editor-base\"\n\t\t\t\n\t\t>\n<div class=\"siteorigin-widget-tinymce textwidget\">\n\t<h1>Changelogs Previous Releases<\/h1>\n<ul>\n<li><a href=\"https:\/\/dragondreams.ch\/?page_id=438\">Changelog Release 1.1<\/a><\/li>\n<li><a href=\"https:\/\/dragondreams.ch\/?page_id=353\">Changelog Release 1.0<\/a><\/li>\n<\/ul>\n<\/div>\n<\/div><\/div><\/div><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>Changelog of the 1.2 Drag[en]gine Game Engine and IGDE release. Released: 2020-07-18 Drag[en]gine Release 1.2 Features Added DragonScript Script Module Modified BehaviorElement.enterFrame() to remember if attachToParent has been done already. Avoids re-attach exceptions if elements move between game worlds. Not a problem if stub.setAttachTo(null) is called. Added support for Listener Factories. For use in situations [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"footnotes":""},"page-category":[10],"class_list":["post-548","page","type-page","status-publish","hentry","page-category-dragengine-change-log","post"],"_links":{"self":[{"href":"https:\/\/dragondreams.ch\/index.php\/wp-json\/wp\/v2\/pages\/548","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dragondreams.ch\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/dragondreams.ch\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/dragondreams.ch\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dragondreams.ch\/index.php\/wp-json\/wp\/v2\/comments?post=548"}],"version-history":[{"count":2,"href":"https:\/\/dragondreams.ch\/index.php\/wp-json\/wp\/v2\/pages\/548\/revisions"}],"predecessor-version":[{"id":1835,"href":"https:\/\/dragondreams.ch\/index.php\/wp-json\/wp\/v2\/pages\/548\/revisions\/1835"}],"wp:attachment":[{"href":"https:\/\/dragondreams.ch\/index.php\/wp-json\/wp\/v2\/media?parent=548"}],"wp:term":[{"taxonomy":"page-category","embeddable":true,"href":"https:\/\/dragondreams.ch\/index.php\/wp-json\/wp\/v2\/page-category?post=548"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}