Commit graph

189 commits

Author SHA1 Message Date
m4nu3lf
2e38b32e0f Fixed inertia tensor computation and center of mass 2017-01-09 00:13:54 +00:00
Ferenc Arn
6b1252cdfa Fix the order in which additional transformations are applied in Matrix3 and Transform.
This is a part of the breaking changes proposed in PR #6865, solving the issue regarding the order of affine transformations described in #2565. This PR also fixes the affected code within Godot codebase. Includes improvements to documentation too.

Another change is, Matrix3::get_scale() will now return negative scaling when the determinant of the matrix is negative. The rationale behind this is simple: when performing a polar decomposition on a basis matrix M = R.S, we have to ensure that the determinant of R is +1, such that it is a proper rotation matrix (with no reflections) which can be represented by Euler angles or a quaternion.

Also replaced the few instances of float with real_t in Matrix3 and Transform.

Furthermore, this PR fixes an issue introduced due to the API breakage in #6865. Namely Matrix3::get_euler() now only works with proper rotation matrices. As a result, the code that wants to get the rotation portion of a transform needs to use Matrix3::get_rotation() introduced in this commit, which complements Matrix3::get_scaled(), providing both parts of the polar decomposition.

Finally, it is now possible to construct a rotation matrix from Euler angles using the new constructor Matrix3::Matrix3(const Vector3 &p_euler).
2017-01-08 10:36:14 -06:00
Juan Linietsky
2ab83e1abb Memory pool vectors (DVector) have been enormously simplified in code, and renamed to PoolVector 2017-01-07 18:26:38 -03:00
Ferenc Arn
bd7ba0b664 Use right handed coordinate system for rotation matrices and quaternions. Also fixes Euler angles (XYZ convention, which is used as default by Blender).
Furthermore, functions which expect a rotation matrix will now give an error simply, rather than trying to orthonormalize such matrices. The documentation for such functions has be updated accordingly.

This commit breaks code using 3D rotations, and is a part of the breaking changes in 2.1 -> 3.0 transition. The code affected within Godot code base is fixed in this commit.
2017-01-03 17:41:04 -06:00
Juan Linietsky
118eed485e ObjectTypeDB was renamed to ClassDB. Types are meant to be more generic to Variant.
All usages of "type" to refer to classes were renamed to "class"
ClassDB has been exposed to GDScript.
OBJ_TYPE() macro is now GDCLASS()
2017-01-02 23:03:46 -03:00
Rémi Verschelde
3f3f5a5359 Merge remote-tracking branch 'origin/gles3' into gles3-on-master
Various merge conflicts have been fixed manually and some mistakes
might have been made - time will tell :)
2017-01-02 21:52:26 +01:00
Rémi Verschelde
c7bc44d5ad Welcome in 2017, dear changelog reader!
That year should bring the long-awaited OpenGL ES 3.0 compatible renderer
with state-of-the-art rendering techniques tuned to work as low as middle
end handheld devices - without compromising with the possibilities given
for higher end desktop games of course. Great times ahead for the Godot
community and the gamers that will play our games!
2017-01-01 22:03:33 +01:00
Juan Linietsky
22a90e8f2a DOF blur, near and far fields.. 2016-12-10 01:13:20 -03:00
Juan Linietsky
a299c3ebf1 Support for SSAO 2016-12-04 12:45:30 -03:00
Juan Linietsky
cacf9ebb7f all light types and shadows are working, pending a lot of clean-up 2016-11-09 23:55:06 -03:00
Rémi Verschelde
2ba1b58374 Merge pull request #7039 from RandomShaper/fix-triangulation
Clean/fix triangulation internals
2016-11-09 15:46:13 +01:00
SPTelur
df737ebb46 Some missing License notice has been added 2016-11-07 06:16:18 +06:00
Pedro J. Estébanez
0e1972aa51 Clean/fix triangulation internals
Drop unused variable
Remove commented-out code
Fix leak by using Vector instead of raw memory
2016-11-05 10:16:44 +01:00
Rémi Verschelde
d4c17700aa style: Fix PEP8 whitespace issues in Python files
Done with `autopep8 --select=E2,W2`, fixes:

- E201 - Remove extraneous whitespace.
- E202 - Remove extraneous whitespace.
- E203 - Remove extraneous whitespace.
- E211 - Remove extraneous whitespace.
- E221 - Fix extraneous whitespace around keywords.
- E222 - Fix extraneous whitespace around keywords.
- E223 - Fix extraneous whitespace around keywords.
- E224 - Remove extraneous whitespace around operator.
- E225 - Fix missing whitespace around operator.
- E226 - Fix missing whitespace around operator.
- E227 - Fix missing whitespace around operator.
- E228 - Fix missing whitespace around operator.
- E231 - Add missing whitespace.
- E231 - Fix various deprecated code (via lib2to3).
- E241 - Fix extraneous whitespace around keywords.
- E242 - Remove extraneous whitespace around operator.
- E251 - Remove whitespace around parameter '=' sign.
- E261 - Fix spacing after comment hash.
- E262 - Fix spacing after comment hash.
- E265 - Format block comments.
- E271 - Fix extraneous whitespace around keywords.
- E272 - Fix extraneous whitespace around keywords.
- E273 - Fix extraneous whitespace around keywords.
- E274 - Fix extraneous whitespace around keywords.
- W291 - Remove trailing whitespace.
- W293 - Remove trailing whitespace.
2016-11-01 00:35:16 +01:00
Rémi Verschelde
89001369e7 Merge pull request #6751 from SuperUserNameMan/new_PRNG_for_rand_from_seed
xorshift32 PRNG for Math::rand_from_seed()
2016-10-30 10:49:22 +01:00
Juan Linietsky
4428115916 Everything returning to normal in 3D, still a long way to go
-implemented the scene part of visual server and rasterizer, objects without lighting and material are rendererd only
2016-10-19 11:14:41 -03:00
Rémi Verschelde
fc8ccd5b8c SCsub: Add python shebang as a hint for syntax highlighting
Also switch existing shebangs to "better" /usr/bin/env python.
2016-10-17 20:10:46 +02:00
yg2f
a747c8ccee xorshift32 PRNG for Math::rand_from_seed()
should fixes #1043

PRNG adapted from : http://excamera.com/sphinx/article-xorshift.html
2016-10-10 20:41:36 +02:00
Mateusz Adamczyk
8671836b76 Added simple check to viewport, if matrix32 is invesile (https://github.com/godotengine/godot/issues/6296). 2016-10-08 12:33:10 +02:00
J08nY
deb36b44d1
Vector3: added angle_to(Vector3 other) 2016-10-03 13:41:59 +02:00
J08nY
f468cfc379
Vector3: format properly, fix indents 2016-10-03 13:41:45 +02:00
anneomcl
aa5ade834c Fix for #6158. Converting Vector2 to Size2 for scaling functions. 2016-09-19 23:31:45 -07:00
Juan Linietsky
827a9aa829 Added a generic AStar implementation to Godot.
It's pretty fast, use it for games where Navigation does not cut it.
2016-09-13 18:17:18 -03:00
Juan Linietsky
fc61eb37ce Merge pull request #5920 from 29jm/fix-warnings
Fix some more warnings
2016-09-10 12:21:02 -03:00
Juan Linietsky
23ababdcd5 Changed Vector3.snap from fmod to stepify, which makes more sense, fixes #6399 2016-09-06 19:14:47 -03:00
Ignacio Etcheverry
3578800230 Matrix32: Add constructor that takes six real_t params 2016-08-24 18:54:23 +02:00
Johan Manuel
67b29e3b9e Fix some warnings about misleading indentation 2016-08-13 13:21:35 +02:00
Ignacio Etcheverry
2d4c4b6ea9 Fix regression with str() improvements for math types 2016-07-28 14:58:12 +02:00
Rémi Verschelde
c6c9f29827 Merge pull request #5921 from neikeq/pr-issue-5919
Prettier str() for some math types
2016-07-27 17:23:17 +02:00
Ignacio Etcheverry
eefca1ada9 Prettier str() for some math types 2016-07-27 17:00:07 +02:00
Juan Linietsky
9151eb591d Changed the way the step decimals are computed to a safer way, fixes many issues. 2016-07-26 17:25:10 -03:00
Rémi Verschelde
308d405c31 Turn some prints to error logs, remove others
Fixes #5876 in passing.
2016-07-24 00:02:19 +02:00
Rémi Verschelde
f40f360a2c Remove unused variables (fourth pass) + dead code
Also fix a potential regression from 3fcb9b1ec1.
2016-07-08 16:47:55 +02:00
Juan Linietsky
d6225b1e00 Improved binding system (ObjectTypeDB::bind_method) to be friendlier to statically typed languages, should help in the Mono integration.
Disabled by default.
2016-06-22 23:13:41 -03:00
J08nY
449571b6cd
Remove USE_QUAD_VECTORS unused check 2016-06-19 00:41:52 +02:00
Rémi Verschelde
80727b6896 Drop empty .cpp files for header-only classes
Part of #5272
2016-06-18 20:00:08 +02:00
Rémi Verschelde
b7dbf9207a Drop empty files that are not used anywhere
Part of #5272
2016-06-18 19:46:30 +02:00
Juan Linietsky
a75f896338 First version of Profiler
It is now possible to profile GDScript as well as some parts of Godot
internals.
2016-05-21 21:18:16 -03:00
Rémi Verschelde
6883325f92 math: Fix rounding error for 0 in Math::round (#4495)
Thus revert the previous workaround in commit b123bc4a2a.
Fixes #3221.
2016-05-01 11:37:46 +02:00
Hubert Jarosz
4a4f247914
remove trailing whitespace 2016-03-09 00:00:52 +01:00
sheepandshepherd
c88c60d08e Correct octree's AABB intersect test, fixes #3576 and #3253 2016-02-17 20:06:40 +01:00
Juan Linietsky
7a931b4d3a Fixed the decimals function, it can't be perfect but it should be good enough. Closes #1955 2016-01-03 19:18:47 -03:00
George Marques
5be9ff7b67 Update copyright to 2016 in headers 2016-01-01 11:50:53 -02:00
reduz
555ad5f8b7 removed wron return types, fixes #2483
removed console, which was obsolete and unused sine long long ago
2015-12-29 18:46:21 -03:00
Juan Linietsky
1312df7fdc implement point cloud function using convex hull for ConvexPolygonShape2D, fixes #2848 2015-12-14 09:06:53 -03:00
Juan Linietsky
d3eb9e8c54 -remove Vector2.atan2() replaced by Vector2.angle(), fixes #2260 2015-11-19 10:41:20 -03:00
Juan Linietsky
0c3386b2ed Merge pull request #2707 from akien-mga/master
Cosmetic fixes to SCons buildsystem
2015-11-18 19:43:28 -03:00
Franklin Sobrinho
541812e999 Implement Quat multiply operator, and xform method 2015-11-11 11:30:55 -03:00
Rémi Verschelde
399b1b0474 Cosmetic fixes to SCons buildsystem
- Removed trailing spaces
- Made sure all indentation is done using tabs (fixes #39)
- Potentially fixed an identation issue for openssl check
2015-11-01 20:53:26 +01:00
Juan Linietsky
0bc6a8894c Merge pull request #2266 from MrGreenTea/master
added floor() and ceil() to Vector3
2015-10-17 12:10:32 -03:00
Rémi Verschelde
1e147c4945 Fix some copy-paste mistakes in linear/db volume functions 2015-09-26 21:06:12 +02:00
MrGreenTea
ec11762006 added floor() and ceil() to Vector3 2015-07-15 01:59:35 +02:00
James McLean
2e6d3b7fad Changed floats to 'real_t'. 2015-06-11 21:37:54 -04:00
James McLean
c2181285eb Changed 'scale' to 'scale_basis' in 'interpolate_with'. 2015-06-11 13:44:04 -04:00
James McLean
b19ed63eb6 Implemented interpolation for affine transformations (Matrix32::interpolate_with) 2015-06-11 10:43:48 -04:00
Juan Linietsky
9acab32daa new file dialog!
-ItemList control for easier lists/thumbnails
-New file dialog, with support for thumbnails, favorites, recent places,
etc
-Moved .fscache out of the project, no more bugs due to committed/pulled
.fscache!
-Dir dialog now sorts directories
2015-06-06 09:44:38 -03:00
ehriche
897a1aade5 optional formal changes 2015-05-06 01:22:31 +02:00
Juan Linietsky
4804462ee0 -Fixes from source code analyzizer, closes #1768 2015-05-01 10:44:08 -03:00
Juan Linietsky
7006fe3cc4 Corrected rectangle intersection, fixes #1731 2015-04-24 16:08:05 -03:00
Juan Linietsky
4661a6e126 -try to avoid errors when path using ".." is present in script include, fixes #1703 2015-04-18 16:17:33 -03:00
Juan Linietsky
fdaa2920eb Updated copyright year in all headers 2015-04-18 14:38:54 -03:00
Juan Linietsky
6b3cd13c8d -fix vector rotation, fixes #1705 2015-04-18 14:19:33 -03:00
Juan Linietsky
28304bc330 -Changed the cubic interpolator, improves situation with PathFollow in #1659 2015-04-13 09:47:03 -03:00
Juan Linietsky
f706e3e5d1 Merge pull request #1380 from ElectricSolstice/wparentheses_removal
Changed code to remove gcc -Wparentheses warnings.
2015-03-22 15:05:47 -03:00
Juan Linietsky
a1f715a4da support for 2D shadow casters
Added support for 2D shadow casters.

*DANGER* Shaders in CanvasItem CHANGED, if you are using shader in a
CanvasItem and pull this, you will lose them. Shaders now work through a
2D material system similar to 3D. If you don't want to lose the 2D
shader code, save the shader as a .shd, then create a material in
CanvasItem and re-assign the shader.
2015-03-02 00:54:43 -03:00
Juan Linietsky
5ef3f7392f support for light and normal mapping in 2D 2015-02-18 19:40:02 -03:00
ElectricSolstice
0e1f34b49d Changed code to remove gcc -Wparentheses warnings. 2015-02-16 18:58:41 -08:00
Juan Linietsky
2185c018f6 begin new serialization framework
also got rid of STL dependency on triangulator
2015-02-15 01:21:26 -03:00
Juan Linietsky
c5f509f238 New Navigation & Pathfinding support for 2D
-Added Navigation & NavigationPolygon nodes
-Added corresponding visual editor
-New pathfinding algorithm is modern and fast!
-Similar API to 3D Pathfinding (more coherent)
2015-02-14 12:10:15 -03:00
Juan Linietsky
a36a774897 Fixes
-=-=-=

-Added missing quaternion constructor
-code completion fixes
-winrt fixes
2014-12-20 15:30:06 -03:00
Juan Linietsky
089d7fa171 Small batch of fixes
-=-=-=-=-=-=-=-=-=-=
-Fixed looping error in AudioStreamResampled
-winrt port progress
-fixes in material in ambient light
2014-12-15 15:42:58 -03:00
Juan Linietsky
e82dc40205 -Much improvement to baked light baker
-Fixed many bugs in stretch mode
-Fixes to camera project and unproject as consequence of the above
-added setget to script (documented in script doc)
-more fixes to collada exporter for blender
2014-10-27 22:54:32 -03:00
Guy Rabiller
5f2222ee89 - Fix issue #802: randomize() now generate non-zero seed during the first hour of every days, the first minute of every hours and the first second of every minutes. 2014-10-27 09:58:12 +01:00
Juan Linietsky
948fd83cdd Little Bits
-=-=-=-=-=-

-fix duplicate function bug when creating script callback in editor
-fix bug where hiding lights does not work
-fix 2D audio listener bug (romulox_x reported)
-fix exported properties with inheritance bug
-fix timer autostart (make it not work on editor)
-reactivate first camara found if viewport runs out of active camera
-option to hide gizmos in viewport
-changed skeleton gizmo because it sucks
-Make convex shapes using CollisionShape visible (use quickhull class)
-fix up menu when editing a mesh, to export collision, navmesh, convex, etc. from it.
-make a menu option to show SRGB in 3D editor views by default
-make option to edit default light direction in viewport settings
-make option to edit default ambient light in viewport settings
-make software conversion of linear->RGB if hardware support not found
2014-10-12 02:13:22 -03:00
Juan Linietsky
0fa94a9690 Build System Changes
-=-=-=-=-=-=-=-=-=-=

Build System:
-Big clean up of SCons, changed how builds are done to a much cleaner method (check the Github Wiki for instructions).
-Deactivated BlackBerry10 (sorry), if no mantainer found (or BlackBerry does not send us a Passort ;), platform will be removed as we have no longer devices to test.

Engine:
-Removed deprecated object and scene format (was in there just for compatibility, not in use since a long time).
-Added ability to open scenes even if a node type was removed (will try to guess the closest type).
-Removed deprecated node types.
2014-10-07 01:31:49 -03:00
Juan Linietsky
b24fe3dd20 Huge Amount of BugFix
-=-=-=-=-=-=-=-=-=-=-

-Fixes to Collada Exporter (avoid crash situtions)
-Fixed to Collada Importer (Fixed Animation Optimizer Bugs)
-Fixes to RigidBody/RigidBody2D body_enter/body_exit, was buggy
-Fixed ability for RigidBody/RigidBody2D to get contacts reported and bodyin/out in Kinematic mode.
-Added proper trigger support for 3D Physics shapes
-Changed proper value for Z-Offset in OmniLight
-Fixed spot attenuation bug in SpotLight
-Fixed some 3D and 2D spatial soudn bugs related to distance attenuation.
-Fixed bugs in EventPlayer (channels were muted by default)
-Fix in ButtonGroup (get nodes in group are now returned in order)
-Fixed Linear->SRGB Conversion, previous algo sucked, new algo works OK
-Changed SRGB->Linear conversion to use hardware if supported, improves texture quality a lot
-Fixed options for Y-Fov and X-Fov in camera, should be more intuitive.
-Fixed bugs related to viewports and transparency

Huge Amount of New Stuff:
-=-=-=-=-=-=-=-==-=-=-=-

-Ability to manually advance an AnimationPlayer that is inactive (with advance() function)
-More work in WinRT platform
-Added XY normalmap support, imports on this format by default. Reduces normlmap size and enables much nice compression using LATC
-Added Anisotropic filter support to textures, can be specified on import
-Added support for Non-Square, Isometric and Hexagonal tilemaps in TileMap.
-Added Isometric Dungeon demo.
-Added simple hexagonal map demo.
-Added Truck-Town demo. Shows how most types of joints and vehicles are used. Please somebody make a nicer town, this one is too hardcore.
-Added an Object-Picking API to both RigidBody and Area! (and relevant demo)
2014-10-03 00:10:51 -03:00
Juan Linietsky
642c63319e Camera Fixes
-=-=-=-=-=-=

-Object Picking and orthogonal camera related functions fixed (i hope)
-Going to preview mode in the camera shows a frame with the correct game aspect ratio
-Changed Camera API and properties a little t make it more straightforward
-Fixed bug in shader compiler.

-Fixed bug in ShaderGL
2014-09-15 20:06:37 -03:00
Juan Linietsky
8cab401d08 3D Physics Rework, Other Stuff
-=-=-=-=-=-=-=-=-=-=-=-=-=-

3D Physics:
-Fixed "Bounce" parameter in 3D
-Fixed bug affecting Area (sometims it would not detect properly)
-Vehicle Body has seen heavy work
-Added Query API for doing space queries in 3D. Needs some docs though.
-Added JOINTS! Adapted Bullet Joints: and created easy gizmos for setting them up:
   -PinJoint
   -HingeJoint (with motor)
   -SliderJoint
   -ConeTwistJoint
   -Generic6DOFJoint
-Added OBJECT PICKING! based on the new query API. Any physics object now (Area or Body) has the following signals and virtual functions:
    -input_event (mouse or multitouch input over the body)
    -mouse_enter (mouse entered the body area)
    -mouse_exit (mouse exited body area)
   For Area it needs to be activated manually, as it isn't by default (ray goes thru).

Other:

-Begun working on Windows 8 (RT) port. Compiles but does not work yet.
-Added TheoraPlayer library for improved to-texture and portable video support.
-Fixed a few bugs in the renderer, collada importer, collada exporter, etc.
2014-09-15 11:33:30 -03:00
Juan Linietsky
1a2cb755e2 3D Physics and Other Stuff
-=-=-=-=-=-=-=-=-=-=-=-=-=

-New Vehicle (Based on Bullet's RaycastVehicle) - Vehiclebody/VehicleWheel. Demo will come soon, old vehicle (CarBody) will go away soon too.
-A lot of fixes to the 3D physics engine
-Added KinematicBody with demo
-Fixed the space query API for 2D (demo will come soon). 3D is WIP.
-Fixed long-standing bug with body_enter/body_exit for Area and Area2D
-Performance variables now includes physics (active bodies, collision pairs and islands)
-Ability to see what's inside of instanced scenes!
-Fixed Blend Shapes (no bs+skeleton yet)
-Added an Android JavaClassWrapper singleton for using Android native classes directly from GDScript. This is very Alpha!
2014-09-02 23:13:40 -03:00
Juan Linietsky
678948068b Small Issues & Maintenance
-=-=-=-=-=-=-=-=-=-=-=-=-=

-Begin work on Navigation Meshes (simple pathfinding for now, will improve soon)
-More doc on theme overriding
-Upgraded OpenSSL to version without bugs
-Misc bugfixes
2014-08-01 22:10:38 -03:00
Juan Linietsky
3d68949a1c 2D Animation Improvements
-=-=-=-=-=-=-=-=-=--=-=-=

-Ability to set 2D nodes as bones
-Abity to set 2D nodes as IK chains
-2D IK Solver
-Improvements in the UI for adding keyframes (separate loc,rot,scale buttons)
2014-07-06 11:49:27 -03:00
Juan Linietsky
9b8696d3dd Light Baker!
-=-=-=-=-=-=

-Support for lightmap baker, have fun figuring out how it works before tutorial is published.
2014-06-11 10:41:03 -03:00
Juan Linietsky
b324ff7ea5 A bit of everything:
-IMA-ADPCM support for samples, this means that sound effects can be compressed and use 4 timess less RAM.
-New 3D import workflow based on Wavefront OBJ. Import single objects as mesh resources instead of full scenes. Many people prefers to work this way. Just like the rest of the imported resources, these are updated in realtime if modified externally.
-Mesh resources now support naming surfaces. This helps reimporting to identify which user-created materials must be kept.
-Several fixes and improvements to SurfaceTool.
-Anti Aliasing added to WorldEnvironment effects (using FXAA)
-2D Physics bodies (RigidBody, KinematicBody, etc), Raycasts, Tilemap, etc support collision layers. This makes easy to group which objects collide against which.
-2D Trigger shapes can now also trigger collision reporting in other 2D bodies (it used to be in Area2D before)
-Viewport render target textures can now be filtered.
-Few fixes in GDscript make it easier to work with static functions and class members.
-Several and many bugfixes.
2014-05-14 01:22:15 -03:00
jonyrock
a49527540f text cursor in text editor & const in Rect2i 2014-04-17 15:30:40 +04:00
Juan Linietsky
31ce3c5fd0 -fix bug in cache for atlas import/export
-fix some menus
-fixed bug in out transition curves
-detect and remove file:/// in collada
-remove multiscript for now
-remove dependencies on mouse in OS, moved to Input
-avoid fscache from screwing up (fix might make it slower, but it works)
-funcref was missing, it's there now
2014-03-13 22:57:24 -03:00
Juan Linietsky
d7d65fa2f2 -improved physics ccd
-html5 exporter works again
-disable repeat on image loader by default
-can change shape offset en tileset, texture offset was broken
2014-02-19 11:57:14 -03:00
Juan Linietsky
9afdb3e0ad -fixed bug in Button now exporting font property
-made GUI Theme editor usable
-editor does not allow to export or create .pck in the same path as a project
-changed .pck format (lacked support for versioning so couldn't change it), previous was causing crashes and is now incompatible, just re-export.
-will not look for .pck files recursively, was causing unexpected behaviors
-fixed execution of Godot in paths with non unicode characters in Windows, OSX and Linux.
2014-02-15 02:02:41 -03:00
Matthew Casey
0bb71e723f Make math_funcs.h use lrint on msvc 2013 2014-02-11 14:19:52 -05:00
Juan Linietsky
0b806ee0fc GODOT IS OPEN SOURCE 2014-02-09 22:10:30 -03:00