mimo
be9b6fa59c
improves performance of hierarchical pathFinder, refs #3588
...
This was SVN commit r17310.
2015-11-28 13:06:44 +00:00
Itms
229e850dba
Fix a compiler warning.
...
This was SVN commit r17296.
2015-11-20 20:42:45 +00:00
mimo
fc6af83c2a
cleanup 5b335442fb
...
This was SVN commit r17294.
2015-11-20 19:47:08 +00:00
mimo
5b335442fb
fix a bug in the HierarchicalPathfinder revealed by changes in 9b0ed97d05, patch by wraitii
...
This was SVN commit r17293.
2015-11-20 19:45:48 +00:00
mimo
0b2da13dea
never edit a patch before commiting !
...
This was SVN commit r17287.
2015-11-19 22:17:00 +00:00
mimo
9b0ed97d05
fixes and performance improvements in hierarchical pathfinder, fixes #3621
...
This was SVN commit r17284.
2015-11-19 22:02:25 +00:00
wraitii
9e35f7d68b
The over-rasterization of obstructions introduced in [17161] could in very rare cases lead to an OOS in the passability grid. Fixes #3612 .
...
This was SVN commit r17278.
2015-11-16 22:03:10 +00:00
wraitii
f1f0fa1f8f
Fix a typo. Thanks stan for noticing.
...
This was SVN commit r17260.
2015-11-14 21:46:05 +00:00
wraitii
3760891131
Fix the precedent fix. It turns out the code behaves in much weirder ways than I expected.
...
This was SVN commit r17255.
2015-11-14 19:03:20 +00:00
wraitii
e7fb75a680
Initialize new variables correctly.
...
This was SVN commit r17247.
2015-11-12 23:07:54 +00:00
wraitii
e9271025dc
Forgot to serialize a new unitMotion variable, resulting in OOS on rejoin.
...
This was SVN commit r17245.
2015-11-12 20:57:50 +00:00
wraitii
3febc387d5
Styling fixes.
...
This was SVN commit r17241.
2015-11-12 17:23:50 +00:00
wraitii
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
wraitii
f3b22e51a3
Optimize Geometry::PointIsInSquare, which is used quite often in performance hotspots.
...
Original patch by mimo. Refs #3588
This was SVN commit r17236.
2015-11-11 20:02:47 +00:00
wraitii
a138bed96b
Fix an issue where units did not notice other moving units with my latest commits.
...
This was SVN commit r17234.
2015-11-11 19:06:07 +00:00
wraitii
cc199c4cca
Fix a critical typo in the last commit and a debug message left in accidentally. Thanks fabio.
...
This was SVN commit r17232.
2015-11-11 13:55:36 +00:00
wraitii
06cb37ff74
Add PlanNextStep back to the unitMotion, in a completely different version. This basically anticipates where we'll probably move next, and checks if static units might block us. Makes paths look slightly better.
...
This was SVN commit r17229.
2015-11-11 13:29:06 +00:00
wraitii
607955489d
Check if units are in the world in UnitRenderer::PickAllEntitiesAtPoint. Probably fixes #3587 , though I'm not sure as it proved unreproducible.
...
This was SVN commit r17228.
2015-11-11 13:27:13 +00:00
wraitii
3b13fb7608
Improve unitMotion behavior. When a unit's path is obstructed, it will now try shortpathing around an increasingly large search range, to optimize behavior in trivial cases where it just needs to go around a unit.
...
Also stop trying too hard when we are close to the destination and our
only order is to move there.
This should result in a slight optimization of the behavior, as well as
slightly more sanity overall.
This was SVN commit r17226.
2015-11-11 12:49:24 +00:00
wraitii
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
wraitii
c42160ec10
Fix an issue where units could not go around large obstructions when short-pathing as it ran in the search-space "walls", reported by gamebot. Fixes #3593 .
...
This is also a very slight optimization.
This was SVN commit r17224.
2015-11-11 12:23:11 +00:00
Itms
2f6f0bd477
Serialize everything that is needed by UpdateVisibilityData instead of assuming everything as dirty.
...
Fixes #3271 .
This was SVN commit r17223.
2015-11-11 12:15:57 +00:00
wraitii
d3ff090ce7
Fix an OOS issue where, on ownership change, units affected by speed-modifying technologies did not update their speed.
...
This was SVN commit r17215.
2015-11-10 23:31:06 +00:00
mimo
51ec6f4728
improve function RasterizeRectWithClearance, about 40% faster, ref #3588
...
This was SVN commit r17212.
2015-11-09 21:16:46 +00:00
wraitii
0ba9fa1cc1
Optimize RasterizeRectWithClearance slightly further. Thanks mimo for noticing.
...
This was SVN commit r17209.
2015-11-08 18:08:49 +00:00
wraitii
313d324fac
Fix some cases of unit "dancing". Thanks to Elexis for nagging me.
...
This was SVN commit r17208.
2015-11-08 17:55:23 +00:00
wraitii
fe040c695f
Change the shape rasterization to not use DistanceToSquare, which often called sqrt. This apparently reduces total turn time by as much as 5% (!)
...
Refs #3368
This was SVN commit r17207.
2015-11-08 17:24:59 +00:00
wraitii
dd6d09521c
Not sure how but I messed up the previous commit.
...
This was SVN commit r17205.
2015-11-08 16:44:08 +00:00
wraitii
42d0e6d46e
Optimize the hierarchical pathfinder's "makeGoalReachable" slightly. Does not affect simulation results.
...
This was SVN commit r17204.
2015-11-08 16:39:43 +00:00
mimo
cd025b2069
fix typo
...
This was SVN commit r17203.
2015-11-08 13:09:49 +00:00
wraitii
c319ff062d
Partial fix to a formation "gliding" issue, unsure so far what is causing this.
...
This was SVN commit r17198.
2015-11-07 17:36:31 +00:00
wraitii
3163c9d4a2
Fix a rare issue with the short-range pathfinder where units took odd paths when the target was beyond the search zone.
...
This was SVN commit r17197.
2015-11-07 14:33:55 +00:00
wraitii
2d7074e8d6
Fix unused variables left behind.
...
This was SVN commit r17194.
2015-11-06 20:42:12 +00:00
wraitii
596025df71
Fix a bug in [17163] that could get units with a large passability class stuck.
...
This was SVN commit r17192.
2015-11-06 20:33:13 +00:00
wraitii
e26b59c917
Changes to unitMotion.
...
Make sure we do not treat as circles entities that we really should
treat as squares (such as trees). This fixes an issue reported by Stan.
Make sure we never forget about our destination if we are blocked by
unit obstructions. This makes sure that units in a group but not in
formation will not be blocked by the other units, and probably makes the
general behavior more sane. Helps following [17166]
Refs #3505 , #3471 , #3376
This was SVN commit r17191.
2015-11-06 20:09:18 +00:00
wraitii
9efd79e240
Fix an issue where square diagonals were incorrectly handled when checking the distance to the target. Fixes #3577 properly. Patch by mimo.
...
Decrease fishing ship gathering range in consequence (revert [17178]).
This was SVN commit r17190.
2015-11-06 19:56:52 +00:00
wraitii
1ed3761859
Fix style issues and redundant code in [17161] and [17163].
...
This was SVN commit r17189.
2015-11-06 19:48:08 +00:00
scythetwirler
2126b53b9d
Fixes interpolation of flying objects.
...
This was SVN commit r17187.
2015-11-06 16:56:39 +00:00
mimo
83bba7bdfc
revert e0771b98dd which was based on misunderstanding of the algo, and fix the inverted_circle case, refs #3577
...
This was SVN commit r17184.
2015-11-05 19:22:04 +00:00
wraitii
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
JoshuaJB
e527a5c321
Fix #3525 and #3399 by recalculating territories on request to GetTerritoryPercentage. Patch by elexis
...
This was SVN commit r17171.
2015-11-02 07:32:43 +00:00
mimo
d9e9345be2
fix some indentation of 6e05a00929
...
This was SVN commit r17164.
2015-11-01 16:47:53 +00:00
wraitii
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
wraitii
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
wraitii
6acfec0f44
Fix a logic error in the hierarchical pathfinder that resulted in it not updating all passability classes correctly. Fixes #3538 , refs #3292 (it fixes one of the cases, but not the examples).
...
Also features style fixes, thanks leper for noticing.
This was SVN commit r17158.
2015-10-31 20:47:47 +00:00
mimo
4d804cf26b
fix typo in 6e05a00929
...
This was SVN commit r17155.
2015-10-31 13:42:14 +00:00
mimo
6e05a00929
fix obstruction of target entity not taken into account in short pathfinder, closes #3539
...
This was SVN commit r17154.
2015-10-31 13:37:34 +00:00
wraitii
8494e36aa8
Revert the logic change in 9da482ead4. This commit removed the checks in UnitMotion against structures, which should have been fine except the short-range pathfinder and the long-range pathfinder are not entirely compatible (check out #3532 for details). This behavior was probably slightly optimized, but it was too clever for its own good in the current state of the pathfinder, might be reintroduced later.
...
This resulted in ALL "units inside obstructions" issues.
Thanks to elexis for the testing.
Fixes #3532 , #3450 .
Refs #3538 (still OOSes), #3410 (unitmotion remains buggy for
formations, but this is only aesthethic.)
Probably affects #3471 and #3505 , but those are not fixed.
This was SVN commit r17152.
2015-10-31 08:43:31 +00:00
mimo
e0771b98dd
fix switch between square or circle approximation in UnitMotion, refs #3539
...
This was SVN commit r17145.
2015-10-26 22:59:26 +00:00
mimo
f4cb822d9d
do the circle approximation also in INVERTED goals in UnitMotion, refs #3405
...
This was SVN commit r17143.
2015-10-18 20:23:02 +00:00
mimo
70d5e4e318
fix the INVERTED_CIRCLE and INVERTED_SQUARE PathGoal, fixes #3405
...
This was SVN commit r17142.
2015-10-18 20:21:20 +00:00
mimo
82590753d7
fix a moved function, fixes #3531
...
This was SVN commit r17137.
2015-10-16 17:14:39 +00:00
historic_bruno
c0b4e78801
Fixes stream serialization bug on OS X 10.8 and older, which caused instant OOS in multiplayer games, fixes #3108 .
...
Fixes test failures on OS X 10.7 and older, refs #3109
This was SVN commit r17133.
2015-10-15 03:31:30 +00:00
historic_bruno
4043c56518
Fixes global init order bug that caused OOS between OS X and other platforms, fixes #3499 . May improve pathfinding behavior in some cases, please test!
...
This was SVN commit r17132.
2015-10-15 02:51:12 +00:00
mimo
b0f267b61c
fix typo in UnitMotion, fixes #3474
...
This was SVN commit r17124.
2015-10-11 11:00:11 +00:00
sanderd17
f5348c6dd6
Introduce less rounding errors in the falloff to allow a more precise territory calculation. Fixes #3334 . Based on code by elexis.
...
This was SVN commit r17122.
2015-10-11 09:01:50 +00:00
historic_bruno
02628b8902
Removes unused pathfinder consts, patch by stanislas69. Fixes #3500
...
This was SVN commit r17115.
2015-10-10 06:48:42 +00:00
Itms
e0093c8ecc
Remove an unused function (it was used by the old pathfinder).
...
This was SVN commit r17103.
2015-10-04 18:02:16 +00:00
Itms
2505a2ec70
Remove a preprocessor ambiguity, fixes #3480 .
...
This was SVN commit r17101.
2015-10-04 17:21:36 +00:00
Itms
cfe4a2e568
Fix a cause of serialization problems. Fixes #3450 .
...
This was SVN commit r17097.
2015-10-03 11:02:12 +00:00
Itms
bb997f6cae
Fix previous commit.
...
This was SVN commit r17096.
2015-10-03 10:32:30 +00:00
Itms
d60940ac59
Code improvements and style fixes.
...
This was SVN commit r17095.
2015-10-03 08:27:19 +00:00
Itms
dc69aed954
Remove some old and unused code.
...
This was SVN commit r17094.
2015-10-02 18:27:10 +00:00
Itms
2132f868b8
Replace the rectangle rasterization algorithm by the original version from Philip's branch.
...
The current version is flawed (it doesn't handle the partially
obstructed cells as it should).
Refs #3410 .
This was SVN commit r17084.
2015-09-27 16:46:26 +00:00
mimo
a7e0dc1534
update attack and heal range queries, patch by leper, fixes #3080
...
This was SVN commit r17082.
2015-09-27 12:23:40 +00:00
Itms
dcf8e66aca
Update the goal serialization for 03d2c5e40b. Fixes #3425 .
...
This was SVN commit r17068.
2015-09-24 17:13:39 +00:00
Itms
b77ad821c2
Reenable formations and fix/improve the communication between UnitAI and UnitMotion. With the new pathfinder some path requests can be completed instantaneously, so UnitAI has to handle MoveStarted messages even in the IDLE state.
...
Please note that this commit makes #3410 really visible. Formation
members might pass through buildings.
Refs #3410 , #3337 .
This was SVN commit r17028.
2015-09-17 16:31:23 +00:00
Itms
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
Itms
03d2c5e40b
Support inverted goals with the long-range pathfinder. This allows units to flee and should fix problems with ranged units too close to their targets. Fixes #3405 , refs #3372 .
...
Now that units flee it's necessary to fix the unit chasing: this commit
reintroduces some code from 298115f4c5 that disappeared with the
committing of the new pathfinder. Refs #1537 .
Also includes some style improvements to the UnitMotion code.
This was SVN commit r17013.
2015-09-13 09:33:09 +00:00
leper
558695365d
Add some documentation about system components. Fixes #3315 .
...
This was SVN commit r17003.
2015-09-11 04:10:26 +00:00
leper
fc051d94cc
Add check for non-passable (likely water-only) maps to territory percentage calculation.
...
Patch by s0600204. Fixes #3407 .
This was SVN commit r17002.
2015-09-11 02:16:21 +00:00
Itms
9da482ead4
Based on previous experimental changes, major update to the unit motion.
...
With this change, units will not check their movement against all
obstructions when moving: terrain and static obstructions are assumed to
be handled by the long-range pathfinder.
However, when static obstructions are changed, the paths have to be
invalidated. In order to minimize the performance impact, units will
check for obstructions when they move after a passability change. If
they collide with something, they will recompute a path that will take
into account the new passability map.
Also includes some code cleanup. This patch should not change
performance a lot: the lower number of checks should give a small
performance improvement while using the message broadcasting system
should hurt it a bit.
Fixes #3376 , #3337 , #1914 .
This was SVN commit r16998.
2015-09-10 18:12:13 +00:00
leper
5a685b84ca
Recompute the cost grid in the TerritoryManager when needed. Patch by s0600204. Fixes #3399 , #3400 .
...
This was SVN commit r16990.
2015-09-06 22:35:38 +00:00
Itms
448b8248cf
Revert my experimental changes from the previous days. Hopefully I can design something that doesn't introduce a ton of new issues. Refs #3376
...
This was SVN commit r16986.
2015-09-05 18:20:08 +00:00
Itms
1d89d05956
Don't try to short-path to non-point goals, because the algorithm won't deal with connectivity. Fixes another bug reported in #3363 .
...
This was SVN commit r16985.
2015-09-04 20:43:05 +00:00
Itms
3005637370
Make a compromise between f240374b28 and f134ac63bb by making the filtering of pathfinding-blocking shapes conditional.
...
Those shapes need to be taken into account when computing a short path,
but they need to be discarded when checking movements or they will
create long/short inconsistencies.
This was SVN commit r16981.
2015-09-03 20:09:25 +00:00
Itms
8dde1cda94
Style cleanup, and remove a wrong TODO.
...
This was SVN commit r16974.
2015-09-02 17:40:31 +00:00
Itms
f134ac63bb
Revert most of f240374b28 which was actually bad. It caused units to get stuck because the obstructions won't block the same paths when rasterized on the grid and when directly tested for collisions.
...
As a general rule, pathfinding-blocking shapes should not be tested
against for movements. Only the passability grid should be considered.
As the algorithm which tests paths on this grid was fixed in 1c9ea56800 ,
it can be safely used.
Fixes #3376 .
This was SVN commit r16971.
2015-09-02 15:50:16 +00:00
Itms
f47cb2c711
Fix the OOS reported by elexis in #3335 , and clean some whitespace and style.
...
The list of modified entities was thrown out on global visibility
updates (those happen on rejoin) but only in-world entities were
actually updated then, causing problems with garrisoning.
Now the list of modified entities can happen to be large, so replace the
hacky check for infinite loops by a real check.
This was SVN commit r16962.
2015-08-30 17:42:10 +00:00
leper
2aef62d65f
Handle backrefs properly for maps and sets. Fixes #3374 .
...
Allocate the tag for the backreference before deserializing the content,
to match the order of serializing.
This was SVN commit r16959.
2015-08-30 04:51:16 +00:00
leper
c9893b3dd0
Test serialization of nested maps. Refs #3164 , #3374 .
...
This was SVN commit r16954.
2015-08-30 00:06:39 +00:00
leper
8217fa1a0e
Warn about range queries that can never return any results.
...
This was SVN commit r16951.
2015-08-29 22:49:49 +00:00
Itms
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
Itms
d129ae3cd8
Fix a special situation where map control percentage wasn't computed properly.
...
Also improve the code and fix a typo.
Based on patch by s0600204, fixes #3378 .
This was SVN commit r16941.
2015-08-27 16:26:32 +00:00
Itms
a63b7a0126
Add ability to query the map control percentage, and use this value in the summary screen. Patch by s0600204, fixes #3321
...
This was SVN commit r16933.
2015-08-23 17:44:37 +00:00
Itms
ba82743777
Some range-based for loops.
...
This was SVN commit r16926.
2015-08-20 12:58:41 +00:00
Itms
b2e8a241d2
Properly check loaded scripts in the second simulation instance of a serialization test. Fixes #3238
...
This was SVN commit r16925.
2015-08-20 12:52:29 +00:00
Itms
1ab3a4a02d
Fix 6506bc20cb, refs #3238
...
This was SVN commit r16924.
2015-08-20 12:49:43 +00:00
leper
558d43bac5
Replace some functor structs with lambdas, closures or range-based fors.
...
This was SVN commit r16923.
2015-08-19 03:33:04 +00:00
leper
36c6b50944
Revert emplace for associative containers. Fixes #3366 .
...
GCC < 4.8.0 does not support emplace for those.
See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=44436 .
This was SVN commit r16922.
2015-08-19 03:32:47 +00:00
Itms
1c9ea56800
Fix the CheckLineMovement algorithm. Added some comments and a test to avoid problems.
...
This addresses some "stuck units" cases.
This was SVN commit r16918.
2015-08-13 16:21:39 +00:00
Itms
01de76f4be
Code improvements for the hierarchical pathfinder: cache hits and variable initialization.
...
This was SVN commit r16917.
2015-08-11 15:21:11 +00:00
Itms
28ef270571
Enhance the MakeGoalReachable algorithm to handle better non-point goals.
...
Fixes #3363 , #3297 .
This was SVN commit r16915.
2015-08-11 09:47:08 +00:00
leper
8bfe16cac8
Use in-place construction.
...
This was SVN commit r16894.
2015-07-29 23:44:17 +00:00
leper
c5eb9b7bb7
Range-based for for VfsPath loops.
...
This was SVN commit r16893.
2015-07-29 23:44:12 +00:00
leper
da48c8c26f
Some const refs and one const function.
...
This was SVN commit r16882.
2015-07-27 01:08:25 +00:00
Itms
f240374b28
Fix a number of short/long range pathfinder inconsistencies revealed by 128a603287.
...
This was SVN commit r16869.
2015-07-18 12:33:40 +00:00
Itms
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
Itms
8fc4ecaa6b
Fix previous commit, stupid typo...
...
This was SVN commit r16859.
2015-07-15 16:57:23 +00:00
Itms
b58f8ab969
Serialize the activation flag of the scripted Visibility component.
...
Currently only preview entities are affected, and they are not
serialized, but it could break a lot of things in the future.
This was SVN commit r16858.
2015-07-15 16:55:05 +00:00