1
0
forked from 0ad/0ad
Commit Graph

47 Commits

Author SHA1 Message Date
913545aa41 Mark several CFixedVector2D as const and passed by reference in Geometry and a few other places. Mark some functions (that probably already were) inline.
Also make sure we don't include Geometry.h where it's not necessary.

This was SVN commit r17238.
2015-11-11 20:50:02 +00:00
3ddd72c1a4 Fix a rare case where units might get stuck around other idle entities, and clarify a related comment.
Refs #3471

This was SVN commit r17225.
2015-11-11 12:28:38 +00:00
1ed3761859 Fix style issues and redundant code in [17161] and [17163].
This was SVN commit r17189.
2015-11-06 19:48:08 +00:00
f91478c730 Fix an oversight in the obstruction manager that lead to possibly the most insidious OOS error we've seen so far.
Fixes #3292 .

This was SVN commit r17176.
2015-11-04 18:51:47 +00:00
357203a90f Pathfinding changes: unit-unit collisions now allow for some overlap, so units can get closer to each other, which I found improved pathfinding considerably.
Also fix a potential issue I noticed in some cases, though that
particular fix implies scrapping waypoints, so if units seem to get
lost, please report so and I'll revert those changes.

I can't find any way to get units stuck with this patch.

This was SVN commit r17163.
2015-11-01 13:38:48 +00:00
14038d4cd8 Fix more pathfinding issues.
Change the way the long-range pathfinder rasterisation works slightly so
that we have a better compatibility with the short-range pathfinder.
Should fix the "stuck units" issues, though I am not sure so I am not
marking them as fixed so far. Refs #3471, #3505, and possibly #3292.

Caveat: I am now using clearance of 0.8 for "default" class, which might
have side-effects: please report anything weird.

Also fix leftover style issues.

This was SVN commit r17161.
2015-11-01 07:28:43 +00:00
bb997f6cae Fix previous commit.
This was SVN commit r17096.
2015-10-03 10:32:30 +00:00
d60940ac59 Code improvements and style fixes.
This was SVN commit r17095.
2015-10-03 08:27:19 +00:00
ae6475fcc0 Fix a typo, patch by godlikeldh.
This typo didn't have any influence since dirty unit shapes are usually
discarded during the rasterization (they don't block long-range
pathfinding). Switching the order of a check in RasterizeHelper prevents
performance problems to a really small extent.

This was SVN commit r17014.
2015-09-13 10:18:37 +00:00
8dde1cda94 Style cleanup, and remove a wrong TODO.
This was SVN commit r16974.
2015-09-02 17:40:31 +00:00
8e70140ec2 Handle properly static shapes that overlap the edge of the map (likely to happen with square maps).
This should fix #3364.

This was SVN commit r16944.
2015-08-28 11:38:14 +00:00
128a603287 Use the terrain-only grid for terrain edges in the short pathfinder algorithm. This grid is updated on each terrain change, whereas the passability grid is updated once a turn. This caused OOS on rejoin, fixes #3292.
However, using the terrain-only grid reveals one discrepancy between the
short pathfinder (which uses unit radii) and the long one (which uses
unit clearances). So I implemented the change proposed by sanderd17 in
#3294, which is removing unit radius and using only the pathfinder
clearance. Refs #3294
Now some tweaking has to be done in the templates, so that units get a
passability class suited to their apparent size. In the meantime the
unit motion is quite bugged.

This was SVN commit r16867.
2015-07-18 08:37:49 +00:00
152d39d8a6 Fix save/load games, and use the new code to enhance the tests.
This was SVN commit r16812.
2015-06-23 20:39:11 +00:00
9701a85554 Fix a possible problem with grid updates. Refs #3296.
This was SVN commit r16791.
2015-06-18 16:31:38 +00:00
1709353e2c Changes the general behavior of non-pathfinding passability classes, in order to make the handling of foundation obstructions less difficult. This will allow the AI to be fixed, as reported in #3295.
Also some cleanup and comments updates.

Refs #3295.

This was SVN commit r16784.
2015-06-17 20:19:53 +00:00
c8a5708654 Fix tests.
This was SVN commit r16777.
2015-06-15 19:48:42 +00:00
473b282265 Refactor the grid update code. Should give a significant performance boost to the simulation update.
Also fixes some bad code that could lead to hidden bugs.

Fixes #3296, thanks elexis for testing ;)

This was SVN commit r16764.
2015-06-14 19:22:07 +00:00
6581796103 New long-range pathfinder.
Based on Philip's work located at
http://git.wildfiregames.com/gitweb/?p=0ad.git;a=shortlog;h=refs/heads/projects/philip/pathfinder
Includes code by wraitii, sanderd17 and kanetaka.

An updated version of docs/pathfinder.pdf describing the changes in
detail will be committed ASAP.

Running update-workspaces is needed after this change.

Fixes #1756.
Fixes #930, #1259, #2908, #2960, #3097
Refs #1200, #1914, #1942, #2568, #2132, #2563

This was SVN commit r16751.
2015-06-12 18:58:24 +00:00
b1c4e29ac8 Fixes inconsistencies in spelling of colour/color by preferring "color" (only wxWidgets remains with some API that requires "colour"), fixes #1029.
NOTE: requires update-workspaces and may require correction of some
modded actors/scenarios

This was SVN commit r16438.
2015-03-15 23:59:48 +00:00
caf89fa04e Rename ps/Overlay(.h|.cpp) to ps/Shapes(.h|.cpp), fixes a TODO located in graphics/Overlay.h.
The file name did not match the content.

Also little cleanup of some unnecessary includes.

This was SVN commit r16431.
2015-03-15 18:06:32 +00:00
e865dc797d Revert RedFox's changes to Spatial subdivisions in the simplest possible way (hopefully won't cause OOS, but at least we'll get reports). Fixes #2573, Refs #2430 . There probably are opportunities to remove more things.
This was SVN commit r15617.
2014-08-06 09:21:00 +00:00
db39d742f0 Fix units falling off the edge of the world.
I guess changes to the map loading sequence caused the TerrainChanged
message to be sent before the map was switched from square to circular
instead of after. The pathfinder didn't notice the switch, so it
continued treating the map as if it were square, allowing units to walk
into the permanent map-corner SOD and vanish, and allowing territories
to expand into the SOD.

Tell the pathfinder explicitly when the map shape changes, so it can
discard its cached data correctly.

This was SVN commit r15277.
2014-06-03 22:35:40 +00:00
9694eec8b8 As per ticket #1707. Some minor improvements to spatial subdivision. Makes way for future changes in RangeManager.
Right now merely improves memory usage.

This was SVN commit r13854.
2013-09-15 14:03:53 +00:00
f72d820cd4 Added randomized arrow positions with hit detection when the missile lands and splash damage. Fixes #18.
This was SVN commit r11886.
2012-05-19 23:07:41 +00:00
vts
490182ddd0 Wall placement. Closes #786.
This was SVN commit r11760.
2012-05-05 19:22:22 +00:00
ce67dfd333 Rename CELL_SIZE to TERRAIN_TILE_SIZE, to free up the term "cell" for other concepts.
This was SVN commit r10902.
2012-01-12 12:51:10 +00:00
609f1643d5 Fix -Wconversion warnings in simulation code.
Cast to smaller integer types explicitly.
Generally avoid platform-dependent types (size_t) in simulation code.
Use float versions of math.h functions, not double.

This was SVN commit r10017.
2011-08-16 11:18:32 +00:00
4663ac0fe7 split debug_assert into ENSURE and ASSERT as discussed in a previous meeting.
the old debug_assert always ran and tested the expression, which slows
down release builds. wrapping them in #ifndef NDEBUG is clumsy. the new
ASSERT behaves like assert and ENSURE like the old debug_assert. Let's
change any time-critical but not-super-important ENSURE to ASSERT to
speed up release builds. (already done in bits.h and unique_range.h)

This was SVN commit r9362.
2011-04-30 13:01:45 +00:00
16a4eb36dd Various minor optimisations.
Enable SpiderMonkey method JIT in Release mode.
Add Engine.ProfileStart/Engine.ProfileStop functions for scripts.
Fix AI to clone initial entity data and shared metadata.

This was SVN commit r9003.
2011-03-03 00:16:14 +00:00
dbc6d27411 Optimise obstruction grid updates in the common case when terrain hasn't changed
This was SVN commit r9001.
2011-02-28 01:24:12 +00:00
b8925fbbc9 # Support AI construction of buildings.
Pass terrain passability data to AI scripts.
Expand pathfinder passability data to 16 bits per tile, to allow more
classes.
Support 16-bit ints in serializer.
Partially support JS typed arrays.
Allow foundations to be placed on top of units (fixes #499).
Stop farms and fishes blocking movement (fixes #534).
Add obstruction flags to allow finer control over what they block.
Associate entity IDs with obstruction shapes, to allow finding colliding
entities.
Support moving to the edge of a target entity with inactive obstruction.
Support foundation entities in AI.
Support playing as non-hele civs.

This was SVN commit r8899.
2011-02-10 16:06:28 +00:00
caad072347 Expand pathfinder boundaries to stop units disappearing off the edge of the visible map.
This was SVN commit r8887.
2011-02-03 19:40:41 +00:00
c3b734775b Simplify component interface: remove explicit context parameter, use GetSimContext() instead.
This was SVN commit r8867.
2011-01-16 14:08:38 +00:00
1840bb3507 Stop units walking outside the edges of circular maps.
Switch the GUI between square/circular minimap automatically.

This was SVN commit r8500.
2010-10-30 18:25:34 +00:00
e13196e7a2 Fix serialization of most components
This was SVN commit r8449.
2010-10-23 19:59:40 +00:00
3d8d354a18 # Optimise spatial queries.
This was SVN commit r8136.
2010-09-19 18:08:56 +00:00
2b57f4f998 # Initial support for formation movement.
Support asynchronous path queries.
Allow escaping when stuck in impassable terrain tiles.
Split Update message in multiple phases, to cope with ordering
requirements.
Support automatic walk/run animation switching.

This was SVN commit r8058.
2010-09-03 09:55:14 +00:00
4e1b6d08f4 Fix lithobolos size and projectile.
Fix projectiles launching from actors with no ammo prop.
Fix default camera location on maps with no civ centers.
Avoid units getting stuck on the edges of buildings.

This was SVN commit r7950.
2010-08-14 22:11:32 +00:00
423b31c130 Fix units trying to move outside themselves when ordered to their current location.
Remove redundant comparisons in pathfinder.
Simplify range query result ordering.
Avoid throwing exception on script errors in debug serializer.

This was SVN commit r7828.
2010-07-31 21:22:39 +00:00
96a73bb580 Discourage units from walking outside the map.
Improve pathfinder performance by avoiding unnecessary grid
recalculations.

This was SVN commit r7806.
2010-07-25 14:11:21 +00:00
dff694f0f0 Fix units spawning on top of each other.
Add type-safety to prevent that kind of bug happening again.

This was SVN commit r7691.
2010-07-04 17:19:38 +00:00
828400d82e # Support floating units in new simulation system.
Fix rendering of underwater lines.
Fix rendering of unit selection outlines in Atlas.
Remove some obsolete hotkeys.

This was SVN commit r7589.
2010-05-27 23:23:53 +00:00
f33706bf8b Switch everything to 15.16-bit precision fixeds, to allow more accurate unit vectors and angles.
This was SVN commit r7497.
2010-05-02 20:32:37 +00:00
cfae58928f # New unit movement system, which does a far better job of approaching targets and avoiding obstacles.
Add short-range vertex-based pathfinder.
Integrate new pathfinder into unit motion code.
Change obstruction system to get rid of circles, and differentiate
structures from units.
Make PositionChanged messages synchronous.
Try to prevent some accidental float->int conversions.

This was SVN commit r7484.
2010-04-29 23:36:05 +00:00
dd809f83e8 # Add documentation of the entity template XML file format.
Simplify the format a bit.
Use less <interleave> in the RNG so that error reports become
understandable.
Fixes #491.

This was SVN commit r7478.
2010-04-23 16:09:03 +00:00
a5b8ec6028 Add obstruction debug mode, with GUI toggle.
Make pathfinder debug mode off by default, with GUI toggle.

This was SVN commit r7377.
2010-03-20 19:18:01 +00:00
0f0a3774d0 Split collision detection out of pathfinder so it can be used more widely.
Support collision detection of footprints.

This was SVN commit r7359.
2010-03-17 23:01:12 +00:00