Commit Graph

826 Commits

Author SHA1 Message Date
Wei Tjong Yao
9bfb0019e3 Added logic to filter UI-style and implicit attributes from UI serialization result. Added logic to let Attribute Inspector to recognize derived values from UI-style file (so, only user modified and programmatically modified attributes are displayed using 'modified color'). Enhanced UI style file processing to support derived 'style' (see how 'ListView' style is derived from 'ScrollView' style and 'CloseButton' derived from 'Button' in file 'DefaultStyle.xml' as examples). Enhanced Serializable class to support instance-level default values (used in XML serialization filtering and also in Editor app). Enhanced Context class to support update of class-level default values during object registration in UIElement's descendant classes. Verified and fixed the attribute default values in RegisterObject() method for all UIElement's descendant classes. Added new method in XMLElement to remove attribute. Exposed new methods to Script API accordingly. 2013-04-21 14:14:30 +00:00
Lasse Öörni
56fbf5a1e9 Added attributes to Text3D.
Limit font face size to 96 pixels for now to prevent crash when rendering font to texture.
Added font resource picking support to editor.
2013-04-15 21:42:37 +00:00
Lasse Öörni
5bd757850f Added functionality to Text3D. Attributes yet missing.
Added missing MarkNetworkUpdate() calls to NavigationMesh.
Removed unused parameter from Text::UpdateText().
2013-04-15 00:23:00 +00:00
Lasse Öörni
9132ea611c Removed shadow bias adjustment according to shadow map resolution, as it causes the amount of "peter panning" to change.
Instead, added bias adjustment factor according to far clip of directional light cascade splits.
Slightly adjusted ninja offset to physics shape to align better with the ground.
Ensure same memory layout of CascadeParameter on desktop and mobile, though mobile uses only 2 of the cascades.
2013-04-14 14:50:25 +00:00
Wei Tjong Yao
832ef7ddfd Fixed XPath query result integration with existing XMLElement class (XMLElement constructed from XPath query result should be abled to traverse up/down document tree as if it is a 'normal' XMLElement). Added feature to auto-add variable into XPath variables set based on pre-formatted variable string. Modified 3rd-party PugiXML library to have a proper xpath_node copy-constructor. Fixed UI.h to build under GCC. 2013-04-14 14:03:43 +00:00
Lasse Öörni
379d786da4 Fixed NinjaSnowWar assets to use 1m world unit.
Added GetDistanceToWall() function to NavigationMesh.
NavigationMesh code cleanup.
2013-04-13 13:20:43 +00:00
Wei Tjong Yao
342db6f72b Fixed indentation calculation for vertically layout UI-element parent. Fixed LineEdit indentation handling on internal objects. Added and exposed functions to determine whether UI-element size is fixed. 2013-04-13 09:59:32 +00:00
Wei Tjong Yao
21a2a008fa Fixed UI-element debug draw being clipped by clip-border. 2013-04-13 03:50:46 +00:00
Wei Tjong Yao
5d698d9ad1 Turned on XPath feature in pugixml thirdparty library. Added new XPath query and resultset wrapper classes and exposed them to Script. Reimplemented UI-element serialization filtering function using XPath query. 2013-04-12 12:20:07 +00:00
Lasse Öörni
362e6a6f95 Added functionality to NavigationMesh. 2013-04-11 07:15:49 +00:00
Wei Tjong Yao
17714cb198 Further fine tuning on the UI subsystem. 2013-04-10 08:38:51 +00:00
Lasse Öörni
606d374936 Added GetWorldBoundingBox() to CollisionShape.
Prefer physics geometry (trimesh, convex hull, box supported) when generating navigation mesh.
2013-04-09 19:02:26 +00:00
Wei Tjong Yao
05fd7419a7 Fixed UI-element debug draw overdrawing the modal element and menu popup. Refactored UI subsystem to support multiple modal elements and auto-dismissal of modal elements when ESC is pressed. The 'Is Modal' attribute of Window UI-element type can be tested in Editor. 2013-04-09 10:32:16 +00:00
Lasse Öörni
3fac48401a Added support for partial navmesh rebuild.
Added navmesh properties (bounding box, number of tiles) to the script API.
Serialize navmesh tiles directly from Detour data, do not keep a duplicate.
2013-04-08 23:14:47 +00:00
Wei Tjong Yao
712de11c99 Debug draw UI-elements in Editor. 2013-04-08 03:51:54 +00:00
Lasse Öörni
be3b304836 Added batch files to start the navigation example.
Added recursive flag to Navigable to optionally disable recursive collection of geometries.
Check that Navigable is enabled before collecting navigation geometry.
2013-04-07 22:49:06 +00:00
Lasse Öörni
c11f65dfea Added FindPath() function to NavigationMesh.
Added navigation test script.
2013-04-07 19:12:29 +00:00
Lasse Öörni
03dce6b988 Serialize navigation data along with the scene.
Added icons for Navigable & NavigationMesh.
2013-04-07 11:56:14 +00:00
Wei Tjong Yao
1c38290e77 Added functionality to select UI-elements by using cursor (Only enabled elements at this moment). Changed implementation of creating new component so that it also works for multi-edit nodes. 2013-04-07 06:12:57 +00:00
Lasse Öörni
0e713bd509 Generate Recast/Detour data. 2013-04-06 23:28:37 +00:00
Wei Tjong Yao
1230087620 Implemented all the common edit functionalities under 'Edit' menu for UI-element with undo/redo support. Exposed Variant's SetUInt() and GetUInt() to script. Enhanced UIElement's CreateChild() and LoadXML() to insert newly created child at the request child index, added new FindChild() method and exposed it. Added new XMLElement's SetUInt() and GetUInt() methods and exposed them. Simplified the Menu's hover logic to resolve stability issue. 2013-04-06 08:56:41 +00:00
Lasse Öörni
b45fac020f Applied AssetImporter & MathAPI patch from primitivewaste. 2013-04-05 06:44:47 +00:00
Wei Tjong Yao
d5ddc3b3d6 Implemented 'Create new UI Element' functionality in the editor with undo/redo support. Some cosmetic changes in editor. Enhanced UI Script API to be able to define element event sender. Enhanced Menu to auto popup child menu when parent menu item is being hovered. 2013-04-04 18:00:52 +00:00
Lasse Öörni
5375254f0b Exposed functions to create nodes & components with specified IDs. This should make it unnecessary to handle ID rewriting in undo/redo. 2013-04-02 16:55:08 +00:00
Wei Tjong Yao
a76a3b1ab7 Reordered UIElement's attributes, common attributes got registered first. Enhanced Attribute Inspector to show UIElement's attributes for single selection case. Multiple selection is still WIP. 2013-04-02 14:19:35 +00:00
Wei Tjong Yao
276bbb1590 Updated documentation. 2013-04-02 03:49:55 +00:00
Wei Tjong Yao
2bf7facaa7 Laying the groundwork in the Attribute Inspector for showing the UIElement's attributes (still need more work). Enhanced UI subsystem to support modal element, currently only support modal Window. Exposed a new Variant readonly property to test for 'empty' variant. New UIElement's method to get a child by matching the child's user-defined variant map and exposed it to script, also exposed the existing GetVar() method to script. 2013-04-01 16:04:41 +00:00
Lasse Öörni
6a7ffdcd19 Updated to newest AssImp from git repository.
Fixed File::GetChecksum() logging numerous errors if file open in write mode. This prevented AssetImporter scene mode from working properly.
Fixed DocConverter asserting in debug mode. Added safe IsAlpha() & IsDigit() functions to StringUtils and exposed them to script.
2013-03-30 22:35:11 +00:00
Wei Tjong Yao
75df330fe3 Started work on UI element editor, pardon the dust. Added 'traversalMode' property to UIElement and exposed it to ScriptAPI to control the children UI batches generation. Enhanced Scene to safe keep the filename used in last serialization, fixed to perform a Clear() before Load()/LoadXML(). Exposed String's Clear() method to Script API. Fixed ListView to insert multiple top-level items in hierarchy mode correctly. 2013-03-30 13:59:47 +00:00
Wei Tjong Yao
06f3580948 Enhanced the Attribute Inspector to show the 'Is Enabled' check box on the node/component 'title bar' instead of in the attribute list; and small refactoring to reduce the number of parameters being passed in a number of functions. Refactored to modify AttributeInfo's name to become a String. Exposed 'internal' property of UIElement to Script API. Enhanced Text class so that it renders the selected text being hovered by mouse a little differently than those without. 2013-03-28 11:00:18 +00:00
Lasse Öörni
f226c4bc4a Added equality operators for Matrix classes. 2013-03-27 21:27:51 +00:00
Lasse Öörni
d35f3b5035 Removed duplicate error message from ScriptCompiler when script compilation fails.
Removed the "None" constraint & collision shape type for editing convenience. Note: Either the SetBox() etc. functions or ApplyAttributes() needs to be called to create the initial shape. This is to prevent a dummy shape first being created on scene load, then immediately being destroyed.
Do not debug draw disabled components.
Fixed music cutting off in networked NinjaSnowWar.
Fixed signed/unsigned mismatch in LightTest script code.
2013-03-26 22:23:39 +00:00
Lasse Öörni
f5b837f460 Exposed recursive SetEnabled() differently, to match convention of the rest of recursive Node functions and eliminate code duplication.
Added Ctrl+E in editor to toggle enabled/disabled state of selected node hierarchies and components.
2013-03-26 21:23:15 +00:00
Lasse Öörni
5830f0e5d1 Convention change: prefer Enabled instead of Active where possible.
Do not transmit hover to input-disabled UI elements.
Documented the node/component enable/disable mechanism.
2013-03-26 00:37:02 +00:00
Lasse Öörni
af8825047a Started work on node/component enable & disable.
Converted Drawable components to use the Enabled flag (replaces Visible attribute.) 
Converted ScriptInstance to use the Enabled flag.
Converted SoundSource & SoundSource3D to use the Enabled flag.
Show disabled node/component icons in red.
2013-03-25 21:02:35 +00:00
Lasse Öörni
a3c66ca360 Detect sRGB capability also on Direct3D9.
Detect sRGB sampling & writing capability separately.
2013-03-24 23:56:19 +00:00
Lasse Öörni
6fe17dd966 Documentation and wiki update. 2013-03-24 23:07:58 +00:00
Wei Tjong Yao
25372fafd8 Added new ListView attribute to control the root base indent in hierarchy mode. Enhanced the Hierarchy window in Editor to show icon for each item. Need better and more assets for the icons though. 2013-03-24 19:00:19 +00:00
Lasse Öörni
5160610e25 Refactored freely rotating / scaling UIElements into a separate Sprite class; removed rotation from the base class as it would not work correctly with element hierarchies in most cases. 2013-03-23 17:50:11 +00:00
Wei Tjong Yao
d7f6b4d0b6 Enhanced UIElement to be able to set a default style file for later reference by children elements, added horizontal indentation feature, and added new E_LAYOUTUPDATED event. Enhanced ListView to better support hierarchy mode and added feature to show 'expansion triangle' in hierarchy mode. Fixed a bug in ScrollView to update view size correctly when resizing content element. Fixed a bug in Log's WriteRaw() method so it sends error message to stderr even in quite mode. Refactored Editor to take advantage of the enhancement. 2013-03-23 12:53:47 +00:00
Lasse Öörni
9ef8625e33 Fixed BorderImage attributes (tiled, blendmode) missing from script API.
Added possibility to rotate UI element contents around a pivot point. Note: UI::GetElementAt(), child elements and child element scissoring do not currently respect rotation.
2013-03-21 23:31:36 +00:00
Wei Tjong Yao
741badfade Fixed the ScriptFile to prevent it from amending the path for include file unnecessarily and added a new error log to help identifying script file that have problematic include. Refactored ListView to support persistent expand/collapse state at each parent item in hierarchy mode, the exposed API is slightly changed. Renamed 'Scene Hierarchy' window to just 'Hierarchy' in the Editor app in preparation for future work, also created new function to differentiate between scene creation and scene reset. 2013-03-18 00:18:48 +00:00
Wei Tjong Yao
44d663ba41 Added new Print() variant in script API to print a Variant. Fixed StringUtils from erroneously converting numerical string to int/uint using base 8 or base 16 when the string is started with '0' or '0x'. Fixed the same/diff value evaluation for ResourceRefList, VariantVector, and VariantMap. 2013-03-16 08:17:26 +00:00
Wei Tjong Yao
990428ca4d Changed Append() methods implementation in String class so they can be chained together in a statement. Added new Join() methods and exposed it to Script API. Refactored Attribute Inspector to take advantage of the new exposed Join() method. 2013-03-15 16:36:23 +00:00
Wei Tjong Yao
9ed0c43919 Exposed math objects construction from an array of float/int and methods to get back the array buffer to the Script API. Enhanced the Attribute Inspector to multi-edit same value at coordinate level for attributes that have multiple coordinates, e.g. Vector3, Color, etc. Different value at coordinate level is non-editable as before. 2013-03-14 19:00:09 +00:00
Wei Tjong Yao
5544602c9e Enhance Font class to support saving of font (TTF or bitmap type) as another bitmap font resource in xml format. For bitmap font type, saving yet to another bitmap font is only meaningful when called with the optional parameter turned on to save only used glyphs. Refactored UIBatch class to enable better performance in Text class UI batch generation in relation to multi-pages/textures font. 2013-03-14 08:14:38 +00:00
Lasse Öörni
5e443328ac Added recursive -parameter to Node::GetComponents() to get components of specific type also from child nodes. 2013-03-12 17:08:07 +00:00
Lasse Öörni
07c0f7228a Added flag to ScrollView / ListView whether to set scrollbar visibility automatically. Default true. Calling SetScrollBarsVisible() disables this. 2013-03-10 19:31:34 +00:00
Wei Tjong Yao
14c06b3dc5 Added ability to edit attributes of multiple selected nodes, only mutual attribute values are editable. Modify script API for VariantMap's Erase() method to return bool. Fixed one of the Print() function in IOAPI to use the 'error' parameter. 2013-03-10 17:54:20 +00:00
Wei Tjong Yao
4d72b5a609 ScriptAPIDumper dumps to console when output file is not provided. Removed caveat from have to compile with ENABLE_LOGGING. Exposed variants to print to stderr to script. Added shell script for calling ConvertDocsToWiki executable. Fixed Editor application to handle exit on error gracefully. Updated documentation and wiki accordingly. 2013-03-10 06:16:12 +00:00
Wei Tjong Yao
38d12c122c Added functionality to show multiple components in the atribute editor when a node or nodes are selected in the hierarchy window. Remove 'editable' parameter in the attribute creation functions as now whether an attribute is editable or not is dynamically set when loading the attribute value and not at the time of its editor creation. Exposed to all the UIElement-derived class a new function to load (partial) UI layout. 2013-03-09 18:25:35 +00:00
Wei Tjong Yao
4efdfc87dc Tidied up AttributeEditor.as, better way to handle attribute that has multiple components. Exposed a few more math constants to script. 2013-03-09 12:39:01 +00:00
Wei Tjong Yao
34a849e00e Speed up TTF loading time. Tidied up code for loading/getting bitmap font. 2013-03-08 15:08:14 +00:00
Lasse Öörni
c55c9cf064 Exposed AnimationTriggerPoint to script.
Exposed Material::SetTechnique() to script.
Added camera functions from Magic.Lixin.
2013-03-06 19:50:42 +00:00
Lasse Öörni
cbc5ccbe58 Fixed wrong signature for ReplaceExtension() function in script.
Fixed initial scene resource path in editor.
Fixed loading of editor UI configuration.
Allow casting AnimatedModel & Skybox to StaticModel in script.
Warn and redirect if StaticModel::SetModel() called on AnimatedModel().
Always output material list in AssetImporter model mode.
Editor reads imported model's material list when choosing model via component edit (Configurable, can be disabled from settings dialog.)
Simplified editor config file structure.
2013-03-06 12:31:51 +00:00
Lasse Öörni
12bddee240 Whether to use derived opacity can be configured per UI element. By default true, except for Text.
Added note of d3dcompiler_46.dll when compiling with the Windows 8 SDK.
2013-03-05 21:07:59 +00:00
Lasse Öörni
da243eb31b Applied UI & editor related patch from weitjong.
Changelog:
- Urho3D engine returns proper exit code, supports window resizing and quite mode, supports setting of any log level regardless of built type.
- Change the default graphic resolution in windowed mode from 800x600 to 1024x768 which I believe should be more common now.
- Log subsystem distinguishes between standard output and standard error streams. Error log entries are sent to stderr, so even in quite mode which stops sending to stdout, the error entries would still be shown on console. This is handy to weed out mundane entries from error entries during debugging/development.
- For UI elements, only save attribute values that are different than default attribute values during save serialization.
- Misc. UI enhancement: slider supports paging on 'empty' area along the slider; scrollbar responds to the slider hover and click on 'paging' area; menu supports passing the popup state to its sibling when mouse hovering pass the sibling; (bug fix) prevent button to generate release event erroneously (click outside, drag, hover inside, then release), plus now it should behave correctly on other situation (e.g. click inside, drag outside, then drag inside again); file-selector, list view, and line edit accept keypad 'Enter' as well; cursor supports defining shape for OS mouse too when it is set to visible, new busy cursor shape; (bug fix) fix the text default attribute values for selection and hover color to match the color assigned by constructor; line edit supports double-click to select all; scrollview hides the horizontal and vertical scrollbars automatically if not needed (still does not hide correctly on a few cases though :-).
- Refactoring the scripts in Editor application to take advantage of the Urho3D UI potential and other small improvements, like: fade out the UI when moving or rotating the scene; relayout the UI element when main window resize in windowed mode; demo the usage of busy cursor when loading scene from file; modified node/component attribute values are shown with different text label color; store the configuration file in hidden folder under user home folder as per normal practice for applications runs on MacOSX and Linux platforms; use the OS mouse so the it can move freely between Editor in windowed mode and other graphical apps.
The UI attributes in *.xml files are adjusted accordingly. The most important change is, the cursor shape now uses Image resourceref instead of Texture2D.
- Refactoring to replace code constructing the empty instance with reference to static const 'empty' instance whenever it is available; refactoring to remove redefinition of VariantMap and VariantVector in Serializer.h.
- Bug fixes: prevent double posting of error messages in the log on MacOSX and Linux platforms when Urho3D exits on error; fix DumpAPI() from erroneously substituting 'doubleClickInterval' to 'floatClickInterval'.
- Added a new tool to make dumping of the Script API even easier. I have managed to initialize a minimalist engine's subsystems to start the DumpAPI() function.
2013-03-05 08:01:29 +00:00
Lasse Öörni
3002776ea4 Fixed incorrect octree insertion of drawables in some cases (eg. large terrain.)
Added ToString() to BoundingBox.
Removed unnecessary defined_ variable from Frustum.
2013-02-19 13:55:17 +00:00
Lasse Öörni
14fa3b3d6e Added SavePNG() function to Image. 2013-02-09 23:16:13 +00:00
Lasse Öörni
9d82a32c9e Added constraint & collision shape type "none" as default value to avoid unnecessary creation of shapes on scene load, before proper attribute values are deserialized. Do not create shape/constraint in OnNodeSet(), as the type is always "none" at that time.
Reactivate a rigid body when any constraint is removed from it.
2013-02-01 13:37:31 +00:00
Lasse Öörni
b51fd39bcc Applied CustomGeometry script API patch from weitjong. 2013-01-13 12:16:41 +00:00
Lasse Öörni
0891aa62dc Applied DebugHud app stats patch from weitjong. 2013-01-08 07:59:55 +00:00
Lasse Öörni
53adf6fc5b Expose UnsubscribeFromAllEventsExcept() to script. 2013-01-04 20:06:12 +00:00
Lasse Öörni
9d759300fe Added possibility to disable the litbase pass optimization in RenderPath, if an ambient-only pass is needed. 2013-01-02 23:38:39 +00:00
Lasse Öörni
09b716f0b8 Added scripting interface for RenderPath. 2013-01-02 16:05:55 +00:00
Lasse Öörni
1ce5a632bd Removed the PassType enum in favor of hashed pass names, to prepare for freeform/redefinable render pipeline. 2012-12-27 18:11:32 +00:00
Lasse Öörni
7d8558a51f Applied massive patch from weitjong.
Changes:

I. Build environment
1. Added new cmake definition to disable/enable Log subsystem in main's CMakeLists.txt.
2. Added setting in main's CMakeLists.txt to pass the "-D_DEBUG" compiler flags for Debug configuration build on non-MSVC compiler. At least it is needed on XCode to get verbose debug log. I assume MSVC does not have this problem.
3. Added '../Engine. to include directories in Input's CMakeLists.txt to allow Input to reference Engine class for handling of SDL_QUIT event (see V.5 and VII.1).
4. Changed cmake_gcc.sh to sed Doxyfile to exclude Direct3D9 and include OpenGL variants of the classes, assuming gcc is only for Mac OS X and Linux.
5. Changed cmake_ios.sh to sed Doxyfile to exclude Direct3D9 and include OpenGL variants of the classes.
6. Added new cmake_macosx.sh shell script to prepare cmake for Xcode in Mac OS X environment.
7. Updated Docs/Reference.dox to correct the URL to AMD's Compressonator.
8. Updated Docs/ScriptAPI.dox to reflect API changes in UI.
9. Added *.sh scripts in the Bin folder to invoke the respective demos.

II. Audio
1. Minor refactoring on Audio class: removed redundant header include, removed redundant call.
2. Corrected minor documentation typo error in Sound.h.

III. Container
1. HashMap minor optimisation: operator [] implementation would not traverse the container twice before node insertion, refactored Clear() and Sort() implementation, changed to static_cast instead of reinterpret_cast, etc.
2. HashSet minor optimisation: refactored Clear() and Sort() implementation, changed to static_cast instead of reinterpret_cast, etc.
3. List minor optimisation: refactored Clear() implementation and changed to static_cast instead of reinterpret_cast.
4. Corrected documentation error for operator > in Pair class.
5. Added new Contains() methods and renamed Print()/PrintArgs() to AppendWithFormat()/AppendWithFormatArgs (while they are still new :-) in String class. Added ToString() global function in StringUtils class to take advantage of new append methods (useful in constructing a formatted string for logging in one liner; becomes no-ops when logging not enabled).
6. Added new Remove() method in Vector and PODVector classes.

IV. Core
1. Enhanced ProcessUtils class to add native approach to detect number of Physical and Logical CPUs for iOS platform.
   BUG FIX: Previous ParseArguments(int, char**) implementation assumed there were no space in the pathname which causes parsing error when it does. Fixed by enclosed the argument in quotes before appending into command line. With this fix, Ninja War demo is runable in iPhoneSimulator.
2. In StringUtils added new convenient global function to construct a formatted string, see III.6.
3. In Variant added MAX_VAR_TYPES enum for guarding a while loop.

V. Engine
1. Added pragma to suppress LLVM/Clang erroneous warnings on unused functions in APITemplates.h.
2. Minor refactoring on Console class: removed redundant call, renamed current_Row to currentRow_.
3. In CoreAPI refactored code to replace map's Find() method call with the newly added Contains() method, added call to reserve container capacity.
4. Refactored DebugHUD class to use the String's new append method instead of a series of strings concatenation.
5. Enhanced Engine class to make Logging an optional feature that can be turned on/off like Profiler subsystem (see I.1), only unpause the audio when it was pause by the Engine previously, no need to check for uninitialized graphics due to window was closed (see VII.1) as engine's exiting_ flag should be set when SDL quits (even by quitting the process externally).
6. GraphicsAPI minor optimisation: Add call to reserve vector to the required known size.
7. Enhanced IOAPI to add preprocessor directive to no-ops the logging functions when Logging not enabled, see I.1.
8. Enhanced UIAPI to reflect changes in UI: mainly, exposed nonFocusedMouseWheel property (see XV.12).

VI. Graphics
1. AnimatedModel optimisation: refactored ProcessRayQuery() implementation, added call to reserve container capacity, removed copy-pasta comment.
   BUG FIX: Infinite while loop in SetMorphsAttr() as the index was never incremented.
2. Changed Animation constructor to also initialize length_.
3. Refactored AnimationController class: only mark for network update when necessary, corrected minor documentation error, added call to reserve container capacity, prevent out-of-bound index access in SetAnimationAttr() implementation, use the StringHash instead of plain name to find the animation state.
4. Refactored AnimationState to avoid redundant call.
5. Refactored BillboardSet class: removed redundant class forward, changed to use the revised Drawable's constructor (see VI.9), added call to reserve container capacity.
6. Refactored Camera class to remove redundant construct. 
7. Refactored DebugRenderer to reuse code. 
8. Refactored DecalSet class: changed to use the revised Drawable's constructor (see VI.9), added call to reserve container capacity, added new flag to track the event subscription.
9. Refactored Drawable to change its constructor to take additional drawableFlags parameter.
10. Enhanced Light class: changed to use the revised Drawable's constructor (see VI.9), refactored ProcessRayQuery() implementation, added implementation to debug draw the directional light.
    BUG FIX: On mobile devices, the CSM only has two splits. Use preprocessor directive to define the attribute as VAR_VECTOR2 instead of VAR_VECTOR4, accordingly.
    BUG FIX: Previous implementation used local ray against world bounding box for RAY_OBB. Fixed by first transformed the world bounding box to local coordinate.
11. Refactored Material class to set or unset the specular_ flag without traversing the shader parameters each time.
12. Refactored Model class: added call to reserve container capacity, removed redundant call to set the number of vertex buffer to 1 (which is Geometry's default).
13. Modified OcclusionBuffer Clear() method to use post decrement.
14. Refactored Octant and Octree classes: changed to use the new PODVector Remove() method, added index_ instance variable to facilitate child octant deletion, simplified the conditional check in the Release() but still achieving the same result.
15. Refactored OctreeQuery class to reorder the condition and to use post increment.
16. Refactored ParticleEmitter class: removed redundant class forward, changed to use the other ColorFade constructor that inits both color and time, added call to reserve container capacity.
17. Refactored Renderer class: removed unused static constants, amended the documentation text for HandleGraphicsFeatures(), delayed event subscription until object is initialized, moved logic to validate the shadow cascades from getter to setter, changed to use String's Contains() method instead of Find(), and a few more code changes (that make no difference :-).
18. Refactored ShaderParser class to change the method signature of GetCombination() method, removed redundant include.
19. Refactored Skeleton class to add call to reserver container capacity.
20. Refactored StaticModel class: changed to use the revised Drawable's constructor (see VI.9), changed the ProcessRayQuery() implementation.
21. Enhanced Tangent class to use pointer arithmetic instead of array indexing.
22. Refactored Terrain class: reordered instance variable initialization in constructor to keep compiler happy, added call to reserve the container capacity.
23. Refactored TerrainPatch class: changed to use the revised Drawable's constructor (see VI.9), changed ProcessRayQuery() implementation.
24. Refactored View class: removed unused method declarations (did not have implementation), changed to reuse existing Vector3 constants, changed octree query base class to FrustumOctreeQuery instead (no additional penalty as the methods are already virtualized anyway), moved constant to outside the loop in CheckVisibilityWork() implementation, reordered logical statement to take advantage of short circuit evaluation, and more.
25. Refactored Viewport class to use the more common way to insert into container.
26. Refactored Zone class: changed to use the revised Drawable's constructor (see VI.9), reordered logical statement to take advantage of short circuit evaluation.
27. Enhanced OGLGraphics class: added code to prevent unnecessary call to get OGL extensions, changed to use new String's Contains() method, added flag to speed up the Release() method, removed redundant code.
28. Changed OGLGraphicsImpl to remove unused include.
29. Changed OGLIndexBuffer to remove unnecessary override. Probably it was copy pasta from Direct3D9 version.
30. Refactored OGLShader class to use the modified ShaderParser's GetCombination() method, see VI.18.
31. Refactored OGLShaderProgram class to use reuse the index for the second string Find() call.
32. Refactored OGLShaderVariation class to the string Insert() method instead to insert all the defines.
33. Refactored OGLTexture class to use the enum instead of hardcoded value.
34. Refactored OGLTexture2D class to simplify the boolean assignment.
35. Refactored OGLTextureCube class to simplify the boolean assignment.
36. Refactored OGLVertexBuffer class to remove unnecessary override and to simplify the for loop condition check in GetElementOffset() method.
37. Refactored CustomGeometry class: changed to use the revised Drawable's constructor (see VI.9), changed ProcessRayQuery() implementation.

VII. Input
1. Enhanced Input class: added call to Engine::Exit() to properly setting the exiting flag instead of just closing the graphics (see V.5), refactored constructor to initialize the mouse related instance variables, delayed event subscription until object is initialized, and other minor refactoring.

VIII. IO
1. Enhanced FileSystem class: added Mac OS X implementation for SystemOpen() method, changed to use new String's Contains() method instead of Find().
   BUG FIX: On non-Win32 platform, files (including dirs) having name starts with '.' were being returned in the result although SCAN_HIDDEN flag is not set. The fix now excludes them.
2. Enhanced Log class: added preprocessor directive to no-ops the logging macros when Logging not enabled (see I.1), removed "XCODE_DEBUG_CONFIGURATION" as it is not effective (at least on my Xcode). Also replaced "XCODE_DEBUG_CONFIGURATION" with "_DEBUG" in SDL_uikitappdelegate.m.
3. Minor changed in Serializer.cpp to suppress compiler warning.

IX. Math
1. Refactored BoundingBox class to reuse code.
2. Enhanced MathDefs.h: better PI, added new constant M_DEGTORAD_2 which is M_DEGTORAD / 2.f (same as M_PI_2, M_PI_4 convention used in math.h).
3. Refactored Frustum class to use the new M_DEGTORAD_2 constant.
4. Refactored Plane.h to reuse code.
   BUG FIX: Copy constructor did not initialize the absNormal_ properly.
5. Enhanced Quaternion class: added multiply-assign operator with a scalar, added Conjugate() method, refactored to reuse code as much as possible, returned conjugate as inverse for unit quaternion, refactored code to use the new M_DEGTORAD_2 constant.
6. Refactored Rect class to reuse code.
7. Refactored Sphere to use post increment.

X. Network
1. Refactored Connection class: changed to hide the detail of the message processing from the caller, added preprocessor directive to exclude statistics when logging is disabled, changed the code to reflect the change done in Node::CreateComponent() method signature (see XIII.2).
2. Refactored Controls class: removed redundant class forward, changed the way default constructor initialize the instance variables.
3. Refactored Network class: removed redundant class forward, changed to reflect changes done in X.1 to process messages, changed the GetConnection() implementation to avoid traversing of the clientConnections_ unnecessarily.

XI. Physics
1. Enhanced CollisionShape class to add preprocessor directive to no-ops the logging calls when Logging not enabled, see I.1. Refactored the HeightfieldData() method to eliminate if statement in the loop.
2. Minor changed in Constraint.cpp to suppress compiler warning.
3. Refactored PhysicsWorld class: removed redundant call in destructor, changed to use the new PODVector Remove() method.
4. Refactored RigidBody class to use the new PODVector Remove() method.

XII. Resource
1. Minor changed in Image.cpp to suppress compiler warning.
2. Enhanced ResourceCache class: changed code to subscribe to event only when auto reload is enabled, refactored to use HashMap's Find() instead of traversing through container manually, changed to use new String's Contains() method.
3. Minor changed in XMLElement class to define an EMPTY element constant.

XIII. Scene
1. Refactored Component class: removed redundant include, reordered logical evaluation.
2. Refactored Node class: changed the CreateComponent() to accept optional ID parameter (combined previously two methods into one), refactored to reuse code as much as possible, added new method to reset scene called by Scene class, moved protected section to correct place adhering to code convention, added new private convenient method to remove component. 
3. Refactored Scene class: changed destructor and in NodeAdded() method to use the new Node::ResetScene() method (see XIII.2), changed the GetVarNamesAttr() implementation to avoid if in the loop, instead of using XMLElement and String default constructor, changed to reference new EMPTY XMLElement constant (see XII.3) and String's Clear() method, respectively.
4. Enhanced SceneResolver class to add preprocessor directive to no-ops the logging calls when Logging not enabled, see I.1.
   BUG FIX: The missing 'else' statement in Resolve() method might cause component ID not resolved correctly. Fixed by adding the else statement.
5. Enhanced Serializable class: refactored code to suppress compiler warning, added new feature to read/write new optional "enum" XML element.

XIV. Script
1. Enhanced Addons class: removed redundant include, changed code to suppress compiler warning, exposed new String's Contains() methods to script enginei (see III.6).
   BUG FIX: The Find() and FindLast() were erroneously exposed as returning integer value. Changed it to returning unsigned instead.
2. Enhanced Script class: added preprocessor directive to no-ops the logging calls when Logging not enabled (see I.1), changed to use new String's Contains() method instead of Find(), removed redundant call in destructor.
   BUG FIX: The logMode_ instance variable was not initialized properly in the constructor (although documentation says it should be defaulted to immediate mode). Initialized it according to documentation.
3. Refactored ScriptFile class to remove redundant call.
   BUG FIX: Previous implementation in Load() assumed script log mode. The fix saves the old mode and use it to revert back the mode.
4. Enhanced ScriptInstance class: refactored ClearDelayedExecute() method to avoid unnecessary vector traversal, simplified code that tracks the execution of METHOD_DELAYEDSTART, refactored to code reuse.

XV. UI
1. Refactored UIQuad and UIBatch: Added new constructor that initialize instance variables, moved GetInterpolatedColor() method between the two, modified the UIBatch methods to take in const UIElement reference, changed the implementation to code reuse as much as possible.
2. Refactored BorderImage class to use the new UIBatch constructor, see XV.1.
3. Very minor changed in Button.cpp to simplify the logical statement.
4. Refactored DropDownList class: Changed to call Menu::GetBatches() instead of Button::GetBatches(), changed for code reuse.
5. Refactored FileSelector class: added call to reserve container capacity, changed for code reuse.
6. Refacotred Font class: added call to reserve container capacity, removed redundant call. 
   BUG FIX: Corrected a typo in GetKerning() implementation causing the kerning information not being applied correctly between adjacent characters.
7. Refactored LineEdit class: Changed to call BorderImage::ApplyAttributes() instead of UIElement::Attributes(), removed redundant construct, changed to reuse code as much as possible, initialized variable in the setter method instead of during update.
8. Enhanced ListView class: added optional index parameter for RemoveItem() method, subscribed to the defocused event only when it is needed, changed to reuse code as much as possible (page up/down and home/end now support additive multi-select as the positive side effect), removed redundant construct.
9. Very minor change in Menu.cpp to use Variant::EMPTY instead of constructing an empty Variant instance.
10. Refactored ScrollView class to reuse code.
11. Refactored Text class to use the new UIBatch constructor, see XV.1.
12. Enhanced UI class: Added support to enable non-focused mouse wheel behaviour similar to Mac OS X and Linux, delayed post-update and render-update event subscription until object is initialized, removed redundant construct.
13. Enhanced UIElement class: added optional index parameter for RemoveChild() method, refactor the code to use the right constness, renamed method from GetUintColor() to GetDerivedColor(), added new private Detach() method, added mutable keyword as necessary to support const getter, refactored destructor method, added call to reserve container capacity, and more.
14. Minor change in Window.cpp to suppress compiler warning.

XVI. Third Party
1. FreeType: Included zutil.c as source in the CMakeLists.txt and fixed the problem when compiling with _DEBUG set.
2. kNet: Removed std::cout statement in the UDPMessageConnection.cpp.
3. SDL: Changed XCODE_DEBUG_CONFIGURATION to _DEBUG in SDL_uikitappdelegate.m, see VIII.2.
   BUG FIX: The touch focus was always zero causing the touch event from touchpad in Mac OS X platform was not handled correctly by Input class because the GetInputInstance() method returns 0 when windowID is 0. Assign the touch's focus with current focus window ID. NOT SURE THIS IS THE CORRECT FIX THOUGH.

XVII. Demos
1. BUG FIX: TestScene.as and TestSceneOld.as assert in the btAlignedObjectArray.h. It was caused by the script trying to remove the RigidBody and/or CollisionShape while in the middle of physics collision event handling. The Bullet's assert could be observed when build using _DEBUG. Fixed by postponinig the removal to post step.
2. Enhanced the NinjaSnowWar to support no-background-music (nobgm) option.
   BUG FIX: BGM was purposely not played on multiplayer mode assuming testing is done on a same test machine, however, this has caused the BGM not to be played on the genuinue multiplayer mode using different machines. Re-enable BGM on multiplayer mode. Instead, added comments in the demo shell/batch script on how to avoid multiple BGM played on a same test machine.
2012-12-25 20:56:05 +00:00
Lasse Öörni
14b78585fc Added CustomGeometry component, which is similar to OGRE ManualObject.
Support also non-indexed geometry for raycasts, occlusion and decals.
2012-12-24 11:56:30 +00:00
Lasse Öörni
21811bc13f Explicitly mention that DirectX June 2010 SDK needs to be installed.
Moved the Log timestamp functionality to Time subsystem, so that it can also be called by the user.
2012-12-22 16:42:01 +00:00
Lasse Öörni
411ab13883 Applied jpeg save and system time patches from Alex Fuller. 2012-12-20 23:23:07 +00:00
Lasse Öörni
21a2fee4a7 Added script API Object::SendEvent() patch from Magic.Lixin. 2012-12-17 11:00:41 +00:00
Lasse Öörni
dde21f587e Added WeakHandle to script, which is a WeakPtr<Object>.
Exposed strong & weak refcount of all classes derived from RefCounted to script.
2012-10-23 17:29:41 +00:00
Lasse Öörni
88896fe805 Added GetCollidingBodies() function to RigidBody which returns collisions from last physics step.
The iterator versions of HashMap & HashSet Erase() return an iterator to next element.
2012-10-17 18:54:48 +00:00
Lasse Öörni
0cd53cdee3 Added 16 & 32-bit texture formats. 2012-09-02 23:05:40 +00:00
Lasse Öörni
053c1f3e6a Added convenience overloads for LoadLayout().
Added DropDownList selection attribute.
Removed duplicated code from UIElement.
2012-08-30 12:37:36 +00:00
Lasse Öörni
4cef5395f5 Completed the UI element refactoring. Removed hardcoded SetStyle() functions which would read UI element attributes from XML.
Added SaveLayout() function to UI.
Fixed serialization & deserialization of IntRect & IntVector2 variants.
Fixed crash when querying a BorderImage's texture in script.
2012-08-28 20:22:51 +00:00
Lasse Öörni
0a16099532 UIElement serialization / deserialization.
Fixed XML serialization of IntVector2.
2012-08-27 06:15:29 +00:00
Lasse Öörni
83e90ae61c Started work on UI element attributes. 2012-08-26 21:19:02 +00:00
Lasse Öörni
e586349114 Added UIElement::CreateChild().
Added internal flag to UI elements, meaning a child element has been programmatically created (for example the slider of a scroll bar.)
2012-08-25 09:22:43 +00:00
Lasse Öörni
948590623d Added IntVector2 Variant type. 2012-08-24 18:52:05 +00:00
Lasse Öörni
683aa3c5fb Added script bindings for Variant IntRect operations. 2012-08-23 22:13:42 +00:00
Lasse Öörni
5aeebaa3bf Added Rect & IntRect Variant types.
Added Rect::Equals().
2012-08-23 21:49:50 +00:00
Lasse Öörni
7813601540 Added scene timescale attribute. 2012-08-22 19:22:13 +00:00
Lasse Öörni
ba890672dd Added Size(), Width() and Height() to IntRect. 2012-08-20 15:30:22 +00:00
Lasse Öörni
f0b6d55b28 Enclosed Urho3D classes inside Urho3D namespace to avoid clashes with external libraries. 2012-08-15 22:57:52 +00:00
Lasse Öörni
c64dfb114e Added back polygon fill mode. 2012-08-08 17:15:13 +00:00
Lasse Öörni
312ddc0242 Added repeat flag to delayed method calls.
Added possibility to remove delayed method calls selectively.
Documented delayed method calls.
2012-08-06 10:51:43 +00:00
Lasse Öörni
3d4eb6bdc8 Event refactoring. Removed the concept of targeted events and a Node forwarding a targeted event to all components, which was used only for physics node collision events. Now the node will instead send the collision event, and it can be explicitly subscribed to.
Remote node events specify a sender node instead of a receiver node. The sender connection is always available as an event parameter.
2012-08-03 09:03:02 +00:00
Lasse Öörni
3b67320a49 Added animation trigger event system.
Added ReplaceExtension() utility function to simplify filename manipulation code.
Cleaned up NinjaSnowWar script code. Added particle effect on ninja's footsteps and landing from jump.
2012-08-02 21:19:57 +00:00
Lasse Öörni
6dac86e2e7 Added option to disable log timestamps. 2012-08-01 22:27:32 +00:00
Lasse Öörni
481fbfa220 Added visible OS mouse cursor mode. When used with an external window, this is the only supported mode, as SDL does not control the cursor visibility of an external window. 2012-07-28 10:38:04 +00:00
Lasse Öörni
1ca858cc2a Changed ListView to use PODVector for the selections, and explicitly sort them when necessary.
Circumvented ListView selections set accessor not working by defining it as a method instead.
2012-07-27 12:06:34 +00:00
Lasse Öörni
8fe755e7e6 Do not release resource if it has weak refs.
Exposed function to explicitly reload shaders.
Set a default resource path in the editor (Bin/Data/) so that scene/model import works even without setting a resource path.
2012-07-22 16:46:32 +00:00
Lasse Öörni
30c21a3789 Added terrain blend shader and terrain example.
Added function to get terrain normal at point.
Always update terrain patch stitching.
Fixed material texture indexing & setting.
2012-07-20 21:49:24 +00:00
Lasse Öörni
ec8394b3de Initial terrain LOD. No stitching yet.
Limit DebugRenderer total vertices to prevent possible crash.
Perform coarse culling in DebugRenderer to avoid rendering lines outside the view.
2012-07-19 13:28:05 +00:00
Lasse Öörni
42b9cbc158 Cleaned up terrain code.
Updated script API documentation.
2012-07-18 23:19:52 +00:00
Lasse Öörni
debcc38bb0 Allow configuring DecalSet max. vertices and indices separately.
Serialize DecalSet geometry as a byte buffer for reduced file size.
2012-07-11 16:42:08 +00:00
Lasse Öörni
92510672f7 Serialize also skinned decals.
Fixed flicker of billboards & decals on first frame after loading.
2012-07-09 21:27:47 +00:00
Lasse Öörni
06371a62ed Wrap decal around static geometry.
Changed OcclusionBuffer clipping to produce less degenerate triangles.
Exposed more Frustum functions to script.
Moved StaticModel software LOD (raycast / occlusion) determination into a function.
2012-07-08 15:49:48 +00:00
Lasse Öörni
91c7374e28 Started work on decals.
Geometry can now define a non-indexed draw range.
Do not queue empty batches (with empty draw range) for rendering.
2012-07-07 23:54:29 +00:00
Lasse Öörni
38fd976aa9 Fixed potential infinite loop when setting morphs.
Added script API function to query morph names.
Unified AssetImporter & OgreImporter command line options regarding animations.
2012-07-05 10:57:51 +00:00
Lasse Öörni
c9bdf9eb35 Added function to redetect joysticks. 2012-07-02 10:26:01 +00:00
Lasse Öörni
18e8cb6334 Removed need for anisotropic filter OpenGL extension.
Removed redundant hires shadow map support flag.
2012-06-28 19:17:59 +00:00
Lasse Öörni
7d39dd0c58 Joystick events and joystick button pressed state. 2012-06-28 07:49:23 +00:00
Lasse Öörni
4a463176ab Added joystick support.
Cleaned up reading touch input.
2012-06-27 23:03:25 +00:00
Lasse Öörni
d23803e285 Added memory debug dump (MSVC debug mode only.) 2012-06-26 05:58:48 +00:00
Lasse Öörni
5507b006be Shader load/compile refactoring. Removed shader source code from the SourceAssets directory and moved to Bin/CoreData/Shaders.
Changed ShaderCompiler command line options.
Changed FileSystem::SystemRun() to use CreateProcess() and to hide the window of the spawned program.
Removed GLShaderProcessor.
2012-06-24 00:11:43 +00:00
Lasse Öörni
d7d599be7b Added loading of ETC1 compressed textures on mobile devices. These need to be stored inside .ktx files.
Removed unneeded texture.
2012-06-16 23:59:54 +00:00
Lasse Öörni
ba7049bb30 Use empty default name for cloned material in the script API. 2012-06-14 21:16:26 +00:00
Lasse Öörni
5d55c0959d Re-added the alpha masking hint to give priority to fully opaque materials. 2012-06-03 23:30:58 +00:00
Lasse Öörni
4070e61e78 Added option to automatically pause updates & audio when minimized. 2012-05-30 23:17:16 +00:00
Lasse Öörni
0706ae397f Touch input on Android.
Run NinjaSnowWar by default on Android.
Rudimentary touch controls (virtual on-screen joystick) in NinjaSnowWar.
Improved OpenGL ES depth bias.
Support GetUserDocumentsDir() on Android (return the getFilesDir() path.)
Fixed OpenGL ES mode erroneously attempting to use shadowed point lights.
Added .bat file to copy Data & CoreData directories as Android assets.
2012-05-27 00:27:23 +00:00
Lasse Öörni
5bb39d77c4 Added function to return a runtime platform identifier string. 2012-05-20 11:29:18 +00:00
Lasse Öörni
354f04e6f2 Added Texture::IsCompressed().
OpenGL ES fixes.
2012-05-19 12:17:58 +00:00
Lasse Öörni
4666520d0b Improved ragdoll stability in TestScene.
Create ragdolls when hit by the boxes (both TestScene & TestSceneOld.)
Fixed component ID clash when creating ragdolls in networked TestScene.
Constraints can specify rotation frame directly. Specifying the axis is still provided for convenience, but does not give exact control over the orientation.
Constraint adjusts static world position automatically when the own body position is edited.
Optimized away redundant Constraint recreation when deserializing attributes.
Added RemoveComponent by component type to Node.
Show also write-only properties in the generated scripting API documentation.
2012-05-07 19:44:43 +00:00
Lasse Öörni
70c58f43d9 Added SetWorldPosition() to Constraint.
Initial ragdoll test in TestScene.
2012-05-07 07:30:40 +00:00
Lasse Öörni
9f331e56db Changed Constraint API to specify the other body position / axis explicitly, and to specify limits as Vector2.
Fixed bugs in assigning parented RigidBody transforms after simulation step.
Optimized Constraint SetPosition() / SetAxis() to not recreate the constraint.
2012-05-07 00:15:20 +00:00
Lasse Öörni
b01fc7b60b Added rigid body queries to PhysicsWorld. 2012-05-06 20:29:03 +00:00
Lasse Öörni
8cdc6f69d2 Properly clean up event handlers referring to a deleted object.
Added cone twist constraint.
Added angular motion limits to the slider constraint.
Improved batch group hashing.
2012-05-06 11:59:47 +00:00
Lasse Öörni
5c4904288a Fixed hinge constraint breaking.
Fixed constraint not being created if rigid body did not initially exist.
Changed constraint position & axis to be serialized in world space for reliability.
2012-05-02 22:13:09 +00:00
Lasse Öörni
ef421ef32d Initial Bullet constraint implementation.
Changed DrawDebugGeometry() to be a virtual function in Component.
2012-05-01 19:26:29 +00:00
Lasse Öörni
31e027b354 Maximum amount of sorted instances can be configured in Renderer. By default 1000.
Moved the NetworkState pointer back to Serializable, as there was not much practical benefit.
2012-04-29 16:20:23 +00:00
Lasse Öörni
e6fe0d6cf0 Removed convenience GetWorldTransform() from Component to make it explicit that an indirection to the parent node is being made.
Added inverse transform caching to Zone.
Added light nullcheck to Batch.
2012-04-29 12:01:37 +00:00
Lasse Öörni
d8eb85b9b4 Added SphereCast function to PhysicsWorld.
Applied kNet bugfix.
Restored custom kNet UDP flow control mechanism.
2012-04-26 20:03:54 +00:00
Lasse Öörni
40709f2d63 Added GetCompressedTextureSupport() to Graphics. Always true on Direct3D9. 2012-04-25 21:23:37 +00:00
Lasse Öörni
5bc2c61d88 Reorganized Node, Component, Drawable & Camera member variables for more optimal access.
Several Camera getter functions changed to const.
2012-04-23 18:41:38 +00:00
Lasse Öörni
5640824c9a Fixed Camera not properly notified of node transform changes.
Added caching of camera view matrix.
2012-04-23 17:47:29 +00:00
Lasse Öörni
91f6f87472 Explicitly mark changed nodes to avoid going through the whole scene in PrepareNetworkUpdate(). 2012-04-22 18:48:09 +00:00
Lasse Öörni
e0571d46eb Removed kNet message priority sorting to improve CPU performance when sending a high volume of network messages. 2012-04-20 22:55:50 +00:00
Lasse Öörni
66a860144a Added separate Equals() function to Vector & Quaternion classes to perform comparison with epsilon. Equality operator does not use epsilon. This optimizes network sync somewhat. 2012-04-18 11:05:57 +00:00
Lasse Öörni
08ac95dbf7 Fixed continuous collision detection to work with the compound shape.
Added CCD radius & motion threshold attributes to RigidBody. 
Use CCD for NinjaSnowWar snowballs to prevent their tunneling through the ground.
2012-04-16 21:45:40 +00:00
Lasse Öörni
32fa940130 Handle world transform update of parented RigidBodies correctly.
Updated physics documentation.
2012-04-15 11:42:02 +00:00
Lasse Öörni
a85817a355 Reverted to joint world space positioning for reliability.
Added debug geometry visualization for joints.
Added nullchecks to prevent crash by calling DrawDebugGeometry() from script with a null debug renderer pointer.
2012-04-06 17:23:45 +00:00
Lasse Öörni
566489e1fa Updated the script API documentation. 2012-04-01 18:09:52 +00:00
Lasse Öörni
ff950d7dca Refactored joint attributes. Now the joint should be created into a node with a rigidbody, and only the connected body needs to be specified. 2012-03-30 23:02:33 +00:00
Lasse Öörni
bea4b8d60b Allow per-rigidbody disabling of gravity. 2012-03-25 12:57:45 +00:00
Lasse Öörni
c0273f35ca Removed deprecated SuppressNextChar() function. 2012-03-23 11:45:46 +00:00
Lasse Öörni
72794673d1 Fixed crash if a window message was received before the Input subsystem had initialized itself.
Fixed profiler output indent off by one.
Updated script API.
2012-03-11 13:49:01 +00:00
Lasse Öörni
9d15b80fc4 Audio::IsInterpolated() -> Audio::GetInterpolation().
Fixed comments in the audio library.
2012-02-28 22:58:25 +00:00
Lasse Öörni
26e2ebca26 Fixed enemy motion bugs in networked NinjaSnowWar.
Added possibility to disable physics interpolation. This is useful on a network server to ensure clients do not receive interpolated (and possibly non-physical) node transforms.
Changed default network update FPS to 30 (half of the default physics FPS.)
2012-02-28 21:03:42 +00:00
Lasse Öörni
911f9e4c5b Removed the "flush GPU" feature as it was causing erratic timing. The downside is increased input lag when vsync is on.
Increased NinjaSnowWar physics FPS to 100Hz for less likely snowball tunnelling.
Set the player yaw from mouse movement each frame also in singleplayer NinjaSnowWar.
When a physical Node's rotation only changes, do not force the rendering position automatically as the new physics position.
2012-02-26 16:00:52 +00:00
Lasse Öörni
ff9df846d1 Fixed physics transform interpolation when physics timestep is lower than framerate.
Use high resolution timer for frame timestep to avoid jitter at vsync frequency.
Rewrote frame limiting.
Elapsed time API changed.
2012-02-26 13:07:52 +00:00
Lasse Öörni
50226cfdb0 Started work toward Unicode compatibility. 2012-02-24 00:05:06 +00:00
Lasse Öörni
7ec5ec4f6e Added FileWatcher class (for now Windows only) & live resource reloading. 2012-02-22 21:27:16 +00:00
Lasse Öörni
9b89a1540d Added resource name sanitation to prevent creation of duplicate resources. 2012-01-15 09:55:50 +00:00
Lasse Öörni
88645ee31b Updated script API. 2011-12-31 21:03:31 +00:00
Lasse Öörni
d34a73bfb9 Added full deferred rendering in addition to light pre-pass.
Added missing vertex colored light pre-pass material shader permutation.
2011-12-31 14:20:29 +00:00
Lasse Öörni
a1c70a3476 Added bloom post-process effect.
Added global shader parameters to PostProcess.
Added possibility to specify texture units by number instead of name in materials and postprocesses.
2011-12-28 01:43:48 +00:00
Lasse Öörni
9fc3d48c12 Changed Viewport to be a reference-counted object.
Changed the Viewport API to allow easier manipulation of the post-process chain.
Added PostProcess::Clone().
2011-12-27 12:57:03 +00:00
Lasse Öörni
55ce257a9c Initial postprocessing implementation. Reimplemented the FXAA edge filter using it. 2011-12-26 01:07:37 +00:00
Lasse Öörni
510c606b3d Removed the redundant GetString() functions from XMLElement. 2011-12-24 20:04:52 +00:00
Lasse Öörni
762085c443 Updated script API. 2011-12-24 00:25:02 +00:00
Lasse Öörni
86608f6ba5 Changed PostProcess class to not allocate rendertargets beforehand. 2011-12-23 00:35:42 +00:00
Lasse Öörni
75beda5f3a Removed the "unculled drawable" mechanism. Instead added occludee-flag to Drawable.
Added missing attributes to ParticleEmitter.
2011-12-20 23:25:22 +00:00
Lasse Öörni
d449b946bd Additions to the PostProcess API.
Exposed PostProcess to script.
Code cleanup.
2011-12-19 23:44:28 +00:00
Lasse Öörni
a341b9ea4f Cleaned up Menu code.
Added Node::Clone().
2011-12-18 17:45:11 +00:00
Lasse Öörni
f58e2595bf Rewrite node & component IDs when instantiating content from file.
Added choice to instantiate content as either replicated or local.
Fixed popup menu & editor hierarchy window update bugs.
2011-12-18 13:44:03 +00:00
Lasse Öörni
7f2f278c58 Added Scene::Instantiate() & Scene::InstantiateXML(), which load a partial scene from binary or XML.
Added editor functions Load node & Save node, which use the above functionality.
Fixed threading crash with multiple shadowed directional lights.
2011-12-18 00:57:50 +00:00
Lasse Öörni
1e1496e7d4 Refactored setting variants from strings.
Refactored nodes and components to write their type & ID when saving, instead of the parent node doing that.
Do not save attribute types into the XML format scene, as they are known.
When loading a node hierarchy, store also the root node reference into the SceneResolver.
Fixed bugs in async binary scene loading.
Removed the redundant .dat file extension filter from the editor. Instead .bin should be always used for binary scenes.
2011-12-17 18:37:23 +00:00
Lasse Öörni
a3c6e580c3 Added Graphics::GetFloatFormat(). 2011-12-15 21:06:00 +00:00
Lasse Öörni
35c21f06d7 Removed the fallback shadow code, as GPUs that actually need it are also too low-performance to render shadows acceptably. 2011-12-13 22:22:46 +00:00
Lasse Öörni
a207ec96c1 Updated script API documentation. 2011-12-13 21:32:15 +00:00
Lasse Öörni
9e4a9362cb Node::SetParent() retains the world transform.
Added GetDerivedComponent() to Node.
Added SetWorldPosition() and related functions to Node.
Added unparent command (Ctrl+U) to the editor.
2011-12-12 22:12:05 +00:00
Lasse Öörni
51cf76b99a Renamed SetLinkedDepthBuffer() -> SetLinkedDepthStencil(). 2011-12-10 16:36:59 +00:00
Lasse Öörni
c334b471e0 Exposed texture formats to script.
Fixed directional lights in light pre-pass mode when using the same camera for multiple views with different aspect ratios.
2011-12-09 23:57:10 +00:00
Lasse Öörni
b2fae0ccb4 Added FXAA edge filter.
Updated readme for upcoming release.
2011-12-08 23:19:04 +00:00
Lasse Öörni
8f882f8225 Rewrote the zone ambient color gradient system. Now zones only define one ambient color, but look for neighbor zones' ambient colors when gradient mode is enabled.
Fixed missing script bindings to the zone ambient gradient & camera override flags.
Added a default bounding box size for newly created zones.
Added documentation on zones.
2011-12-06 14:48:53 +00:00
Lasse Öörni
644c37a099 Mark light masks to G-buffer stencil for light culling.
Fixed OpenGL forward rendering.
Documentation fixes.
2011-12-03 17:51:18 +00:00
Lasse Öörni
f9bfd4948f Shader refactoring.
Removed ambient + lit pass combining for less shader permutations, and to prime the Z-buffer with a lightweight pass in case there is a large amount of overdraw.
Moved ambient light calculation to the ambient pass vertex shader.
Added render mode toggle to the editor settings.
Note: OpenGL rendering is currently broken.
2011-12-03 14:06:35 +00:00
Lasse Öörni
471d3ec5ff Added libcpuid for improved CPU detection.
Added separate functions for querying logical & physical CPU count.
2011-11-27 17:45:03 +00:00
Lasse Öörni
a51afb0631 Initial vertex lighting support. 2011-11-21 00:17:52 +00:00
Lasse Öörni
a48c7ccdfb Migrated to new scriptarray add-on. 2011-11-19 13:14:15 +00:00
Lasse Öörni
5cf7e09324 Added Octree raycast that returns only a single drawable result.
Fixed conditions in raycast code.
2011-11-18 00:16:01 +00:00
Lasse Öörni
75c33d8b5c Changed the global script property arguments to GetArguments() function, as it performs an expensive vector to array conversion on each call. 2011-11-17 18:34:49 +00:00
Lasse Öörni
3313a7a66b Updated script API. 2011-11-12 21:53:41 +00:00
Lasse Öörni
8a52455faa Added shadow mask feature, which allows selective shadow casting by different lights.
Documented multithreading.
2011-11-07 20:11:20 +00:00
Lasse Öörni
d5c42e8c2c Added Node::LookAt().
Added Quaternion::FromAxes().
2011-10-25 22:04:11 +00:00
Lasse Öörni
6e51dffdeb Updated readme.
Allow to switch force SM2 / force fallback modes at runtime.
2011-10-23 18:18:47 +00:00
Lasse Öörni
bdc29caebd Reverted to AngelScript 2.21.1 because of crash with VariantMap.
Find the zone at far clip plane and use it for the background color.
Added zone mask for drawables, allowing to select which zones they can belong to.
When zone moves or changes its bounding box, clear the cached zone from all drawables that were inside.
2011-10-22 18:49:15 +00:00
Lasse Öörni
4ca9035ba5 Reimplemented the MSVC random number generator to produce same random number output on all platforms. 2011-10-21 19:12:20 +00:00
Lasse Öörni
2b57762508 Added zone property for Drawables in the script API where applicable.
Removed the viewmask attribute from Zone as it is not currently used.
2011-10-21 07:13:44 +00:00
Lasse Öörni
15e8c14623 Separated SetIntensitySortValue() into two separate functions.
Use the drawable's bounding box in light sort value calculations, instead of just the bounding box center.
Added Rect::Clip().
2011-10-19 23:03:36 +00:00
Lasse Öörni
eba23029c0 Fixed maxLights not exposed to script.
Added maxLights setting to TestSceneOld animated models as a test.
Improved drawable light sorting.
2011-10-19 07:27:36 +00:00
Lasse Öörni
0e6b9508b9 Gizmo improvements.
Reduced node transform edit related code duplication in the editor.
Exposed Plane class to script.
2011-10-17 18:55:55 +00:00
Lasse Öörni
b11b0f8de1 Initial gizmo-based node transform editing.
Fixed material assignments in the axes model.
Possibility to add unculled drawables to the octree.
2011-10-16 23:59:53 +00:00
Lasse Öörni
4a34382798 Fixed clicking on UI elements clearing the scene node selection in the editor. 2011-10-16 17:52:27 +00:00
Lasse Öörni
a32f0f1c26 Fixed rotation of the axes model.
Added ray-frustum intersection test.
Added accurate raycasts for point and spot lights. Directional light now never returns a raycast result, as it has an "infinite" bounding box.
Added better debug visualization of a point light.
Reorganization of the editor script code.
2011-10-16 14:53:14 +00:00
Lasse Öörni
bad42bcc5f Take node parenting into account when moving nodes in the editor.
Added LocalToWorld() & WorldToLocal() functions to Node.
2011-10-15 18:37:55 +00:00
Lasse Öörni
83dbac20fc Fixed Camera's view override flags not exposed to script. 2011-10-15 13:28:28 +00:00
Lasse Öörni
dd131fbd66 Added missing file.
Updated script API.
2011-10-14 17:43:54 +00:00
Lasse Öörni
58843be1fa Initial multiselection in the editor. 2011-10-12 13:17:04 +00:00
Lasse Öörni
589c0ee141 Expanded the lit base pass optimization to cover also the first spot or point light affecting a drawable.
Do not render light to stencil if camera is inside the light volume.
Added optimization for directional light shadow casters that are fully occluded by another shadow caster: do not render the lit pass for them.
Removed the alpha masking hint. Alpha test no longer gives the batch a lower priority.
2011-09-29 22:53:16 +00:00
Lasse Öörni
80a6948b22 Large rendering architecture refactoring.
Optimized shaders to do more work in the vertex shader.
Deferred rendering removed, at least for now.
Switched to RGB normal maps, with specular intensity in the alpha channel. Removed NormalMapTool.
Optimization of light influence on objects by stencil masking.
Split shadowed lights are now rendered in one pass. A virtual shadow depth cube texture is used for point lights.
Refactored shadow map allocation. Allow to use lower resolution shadow maps than quarter size.
Added the Polyhedron math object, used for improved shadow map focusing.
Reversed the convention for the plane intercept parameter.
Math-related code cleanup.
2011-09-26 21:56:31 +00:00
Lasse Öörni
fe495f6bcc Added deferred fallback mode, which renders the G-buffer in 2 passes.
Made the OpenGL extensions mandatory to unify expected functionality with Direct3D9 mode.
2011-09-10 19:28:59 +00:00
Lasse Öörni
d6a3f89393 Added low-quality (1-sample) shadow filtering option.
Refactored fallback shaders so that they are compiled as variations into the SM2 directory.
2011-09-09 20:41:56 +00:00
Lasse Öörni
514ef8966d Fixed OpenGL path.
Documentation update.
2011-09-09 07:51:13 +00:00
Lasse Öörni
fc3896fe02 Added configurable instancing group minimum size and maximum triangles per instanced object. 2011-09-05 06:39:28 +00:00
Lasse Öörni
40c8306691 Added triple buffering option. On OpenGL it is a no-op.
Removed the pass HashMap from Technique. Now it is just a static array.
2011-08-29 17:45:48 +00:00
Lasse Öörni
f0ecda9785 Fixed numerical stability in Quaternion matrix constructor.
Fixed spotlight wrong size in deferred rendering.
Removed "first light" optimization pass due to buggy interactions with alpha blending.
Fixed morphWeights property naming on AnimatedModel.
Fixed missing shader combinations.
Ported the GraphicsTest example from Urho3D 1.0.
2011-08-24 03:52:41 +00:00
Lasse Öörni
b6e09d2655 Renamed FinishUpdate() to ApplyAttributes() to be more descriptive, and to not confuse with frame updates. 2011-08-23 06:43:18 +00:00
Lasse Öörni
47eae408b5 Updated script API reference. 2011-08-22 22:25:32 +00:00
Lasse Öörni
6f5f3c252b Specify diameter instead of radius for sphere, capsule and cylinder CollisionShapes so that switching between shape types is more intuitive.
Capsule and cylinder shapes are now upright by default.
Fixed geometry offset staying if it was first set, but then zeroed after assigning the rigid body.
Fixed geometry offset not updating after the rigid body is assigned.
2011-08-22 21:35:23 +00:00
Lasse Öörni
3f7fffbf49 Some renames. CollisionGroup -> CollisionLayer, Scene::GetNodeByID() -> GetNode(), Ray::Distance() -> HitDistance().
Moved all hit distance tests to Ray.
Tundra scene physics import.
2011-08-22 20:06:27 +00:00
Lasse Öörni
906b528cc5 Adding and removing of node user variables in the editor. 2011-08-21 18:57:59 +00:00
Lasse Öörni
10ad7a3dd2 Added phantom attribute to CollisionShape. Phantom shapes create collision events, but do not generate contact joints to the physics simulation.
Fixed opening resources externally in the editor.
2011-08-21 12:39:28 +00:00
Lasse Öörni
23d51b853e Pick resource functionality in editor.
Editor script code cleanup.
Added missing functions to the script API.
2011-08-21 10:06:52 +00:00
Lasse Öörni
3576a81993 Initial node/component attribute editing.
Attributes reorganized for editing. Accessor attributes used more for verifying correct value ranges.
More editor settings, including rendering quality.
PhysicsWorld raycast returns CollisionShapes instead of Nodes.
Fixed LineEdit cursor not showing when at text start.
Script API fixes.
2011-08-21 08:15:21 +00:00
Lasse Öörni
5e2682d3e5 Cut/copy/paste in editor.
Exposed Serializable::FinishUpdate() to script.
2011-08-18 21:52:59 +00:00
Lasse Öörni
16911eab63 Added delete support to the editor.
Fixed erroneous script API bindings.
2011-08-18 18:46:12 +00:00
Lasse Öörni
e22483e482 Added viewmask parameter to octree queries to avoid manual viewmask checking in View and to allow partial scene queries for logic.
Reordered ray query parameters; added default query parameters to script.
Renamed BeginRender & EndRender events to BeginRendering & EndRendering.
2011-08-09 15:48:32 +00:00
Lasse Öörni
57e8e910af Fixed missing alwaysUpdateOwner script property in NetworkPriority. 2011-07-31 17:22:27 +00:00
Lasse Öörni
b694ad047e Refactored interest management into the NetworkPriority component.
Fixed setter functions referring to the Set class in Doxygen comments.
2011-07-31 17:19:00 +00:00
Lasse Öörni
6d552a8193 Use fixed size 24 bit network object IDs for more deterministic bandwidth use.
ReadID() / WriteID() renamed to ReadFileID() / WriteFileID().
2011-07-30 20:57:28 +00:00
Lasse Öörni
7b254df85d Added simple distance-based interest management for networking. 2011-07-29 12:24:22 +00:00
Lasse Öörni
38fe1554ba Initial multiplayer NinjaSnowWar.
Various networking and script API bugfixes.
Fixed kNet profiling compile errors due to STL -> Container library conversion.
Fixed loading of textures failing in headless mode (just return success without doing anything.)
The E_CLIENTCONNECTED and E_CLIENTDISCONNECTED events now also come from the Connection in question, to allow using GetSender() for convenience, instead of looking up the connection from event data.
Added simple network traffic statistics logging to Connection.
2011-07-29 00:04:52 +00:00
Lasse Öörni
1c154ef17e Uncommented the package file download test from TestScene.as.
Fixed missing default arguments in the script API.
Fixed crash if a script file is unloaded while executing a script function.
Fixed Urho3D.exe not correcting the script file name to internal format (slashes instead of backslashes.)
Use black default background for the Direct3D9 window.
2011-07-28 11:41:56 +00:00
Lasse Öörni
43671aa66f Fixed up to one second delay in starting UDP datagram sends.
Refactored SendMessage API in Connection & Network, allowing the user to specify message priority.
Split Network library internal messages into 3 priority categories.
2011-07-28 09:01:33 +00:00
Lasse Öörni
f70cc35815 Added package file download support to the network protocol.
Added commented out package download test code to TestScene.as.
Increased kNet's UDP send rate upper limit and aggressiveness in increasing the send rate.
Fixed being unable to do sparse seeks in files when writing.
Container library bugfixes.
2011-07-27 22:41:12 +00:00
Lasse Öörni
40d04b377b Added Compare function to String, which is optionally case-insensitive.
Added registration of allowed remote events.
2011-07-25 23:15:04 +00:00
Lasse Öörni
ffad4ba005 Fixed UI related crashes in headless mode.
Fixed loading of materials in headless mode (just return success while doing nothing.)
Fixed EventType parameter of SendRemoteEvent() / BroadcastRemoteEvent() in the script API, should be a string.
Added smoothed motion for nodes in network client scene.
Added enum CreateMode to CreateChild() & CreateComponent() which replaces the "local" bool parameter.
Added possibility for client to spawn physics boxes in networked TestScene.
2011-07-23 23:33:57 +00:00
Lasse Öörni
4c3dd57980 Added more networking functionality, including remote events and client's controls update.
Added Append functions to String.
Removed networking mode from Scene, as it seems to be unnecessary.
2011-07-15 14:52:43 +00:00
Lasse Öörni
f28728b3e2 Send identity VariantMap on connecting to server.
Fixed possible bug in WriteString/ReadString if the string contains zeroes in the middle.
2011-07-14 13:11:39 +00:00
Lasse Öörni
71603ae52e Initial kNet-based networking implementation.
Renamed SharedPtr::Ptr() to RawPtr() to avoid conflicts with kNet's Ptr macro.
Added chat test program.
2011-07-13 23:32:57 +00:00
Lasse Öörni
af2b4311dc Function name unification and cleanup. ChildElement -> Child. RootElement -> Root. ScriptedChildren -> ChildrenWithScript. 2011-07-12 09:08:17 +00:00
Lasse Öörni
5a6c8f6d27 Removed global properties related to the script object's ScriptInstance. The ScriptInstance is available as the global property "self" instead.
Documentation update.
2011-07-05 08:46:45 +00:00
Lasse Öörni
180da947fa Added generated scripting API reference.
Modified Script::DumpAPI() to output in Doxygen format.
2011-07-05 08:25:04 +00:00