1
0
Fork 1
mirror of https://github.com/TES3MP/openmw-tes3mp.git synced 2025-01-15 23:19:56 +00:00
Commit graph

226 commits

Author SHA1 Message Date
mrcheko
a22fc43947 aiwander: reset path on cell change
remove redundant mIsWanderDestReady var
2016-09-05 15:18:34 +03:00
mrcheko
612c7f1a2f Revert "Revert "Merge pull request #993 from mrcheko/pathfinding""
This reverts commit 3732979eec.
2016-08-19 22:15:26 +03:00
scrawl
3732979eec Revert "Merge pull request #993 from mrcheko/pathfinding"
This reverts commit 5190275b37, reversing
changes made to d7845012bf.
2016-08-14 18:04:33 +02:00
scrawl
30b549124e Fix use-after-free 2016-08-14 16:42:29 +02:00
mrcheko
d2fe6fe857 Merge remote-tracking branch 'refs/remotes/origin/master' into pathfinding
# Conflicts:
#	apps/openmw/mwmechanics/aiactivate.cpp
#	apps/openmw/mwmechanics/aicombat.cpp
#	apps/openmw/mwmechanics/aicombat.hpp
#	apps/openmw/mwmechanics/aifollow.cpp
#	apps/openmw/mwmechanics/aipackage.cpp
#	apps/openmw/mwmechanics/aipackage.hpp
#	apps/openmw/mwmechanics/aiwander.cpp
#	apps/openmw/mwmechanics/aiwander.hpp
2016-07-09 22:59:54 +03:00
mrcheko
0793e4a80e refactor pathfinding code in AiWander: use AiPackage::pathTo, reuse AiPackage::ObstacleCheck 2016-07-05 21:38:41 +03:00
Allofich
c2b51112f2 AI package cleanups 2016-06-16 17:17:56 +09:00
Allofich
55ac1fab68 Change Wander duration to run on a counter 2016-06-10 04:36:18 +09:00
Allofich
bce66c629a Change editor-placed AI packages to cycle 2016-05-29 17:34:40 +09:00
scrawl
5edfe8c41c Reduce the wander fast forward overcrowding offset (Fixes #3370) 2016-04-23 22:47:42 +02:00
Austin Salgat
be16857f96 Fix wrong height being used for water detection 2016-04-17 10:46:09 -05:00
Austin Salgat
e9157e9200 Fix idle animation and Fix water creature manual wandering 2016-04-16 20:38:58 -05:00
Austin Salgat
3dec10c686 Update variable to prevent underflowing
While not an issue presently, the variable may be used in the future in a way that could create issues if it underflows.
2016-04-16 17:51:13 -05:00
Austin Salgat
84179c262f Update manual wandering to prevent actor from leaving/entering water
Water creatures will stay in the water, while land creatures will stay on land when wandering.
2016-04-16 16:39:13 -05:00
Austin Salgat
fc03216d48 Refactor to reuse existing obstacle detection 2016-04-16 12:14:00 -05:00
Austin Salgat
34726c24d9 Fix mDistance being reset prematurely
This was causing wandering without pathgrids to become disabled for most wandering units. Additionally, wandering now behaves the same for both NPCs and creatures.
2016-04-15 21:56:41 -05:00
Austin Salgat
92b352989a Add logic for NPC wandering without pathgrids 2016-04-13 20:48:08 -05:00
Austin Salgat
c02881a4f8 Fix creatures not wandering 2016-04-12 21:16:55 -05:00
Austin Salgat
38f5a225ea Refactor PathFinder functions to be useable by AiWander
This avoids having to duplicate the distanceSquared and getClosestPoint functions.
2016-04-10 20:44:08 -05:00
Austin Salgat
96231e17f0 Fix wandering NPCs going off pathgrid
If multiple pathgrids exist in the same cell, sometimes an NPC would port to a different pathgrid that was nearby. This is an issue since it allowed them to do things like travel through walls to inaccessible areas. Now they will only wander along the closest connected pathgrid.
2016-04-10 20:21:18 -05:00
scrawl
90a99991d1 Use empty() instead of !size() 2016-02-22 19:06:12 +01:00
scrawl
50ed061154 AiWander: reset mAllowedNodes on cell change (Fixes #3176, Fixes #3130) 2016-02-02 00:41:40 +01:00
mrcheko
d7d5cc6689 Merge remote-tracking branch 'upstream/master' into pathfinding
Conflicts:
	apps/openmw/mwmechanics/aicombat.cpp
	apps/openmw/mwmechanics/aifollow.cpp
	apps/openmw/mwmechanics/aipackage.cpp
	apps/openmw/mwmechanics/aipackage.hpp
	apps/openmw/mwmechanics/aiwander.cpp
	apps/openmw/mwmechanics/pathfinding.hpp

Ogre::Vector3->osg::Vec3f; REACTION_INTERVAL->AI_REACTION_TIME; MakeOgreVec3->MakeOsgVec3
2015-12-29 19:15:40 +03:00
dteviot
8e2fe1985d Fixed errors pointed out by Zini.
1. Removed "Actor" from name of function  isActorNearInactiveCell().
2. Corrected case of CoordinateConverter member function names.
2015-09-12 14:17:46 +12:00
dteviot
1dfe438a5d reduce "reset if stuck" AiWander timeout.
Now is about 14 seconds, instead of 300.
2015-08-30 16:43:35 +12:00
dteviot
f2c9b9351f Try going right and left to "unstick" actor. 2015-08-30 10:06:09 +12:00
dteviot
31d82b6b0c Unifiy evadeObstacles() logic between AiWander and AiPackage
Can't use same code, but logic is now same.
2015-08-30 08:32:47 +12:00
dteviot
f59e918a3b removed useless code.
zTurn ignores turns < 0.0087 radians.
2015-08-29 17:34:33 +12:00
Marc Zinnschlag
a52b947efe Merge remote-tracking branch 'dteviot/MagicEffectsRefactorDraft3' 2015-08-23 12:11:30 +02:00
dteviot
77a1d947cc extracted MWMechanics::getPlayer() 2015-08-21 21:12:39 +12:00
dteviot
85bc41dedb replaced FLT_MAX with numeric_limits. 2015-08-21 19:34:28 +12:00
dteviot
942a987d52 centralize the world/cell coordinate conversion logic. 2015-08-16 18:55:02 +12:00
Arthur Moore
08d5aaf0fc Remove more comments 2015-07-31 18:23:07 -04:00
Arthur Moore
6fce49bfb5 Don't warn twice when unable to play an idle animation 2015-07-31 18:01:02 -04:00
Arthur Moore
61c3835637 Don't try to play animations we know are bad
Prevents log spam
2015-07-31 18:01:02 -04:00
Arthur Moore
5ea596f38d Refactor onChooseActionStatePerFrameActions
This prevents playIdle errors from tyring to play idleAnimation 0
2015-07-30 08:15:45 -04:00
Arthur Moore
f69de1f263 Alert the user if trying to play a non-idle animation
Continue to propagate success/failure up the call stack.
2015-07-30 08:08:58 -04:00
dteviot
c7aacaee70 extracted function returnToStartLocation(). 2015-07-26 17:29:32 +12:00
dteviot
5e519ef550 extract function isPackageFinished(). 2015-07-26 17:29:01 +12:00
dteviot
ad0d807103 extracted function reactionTimeActions(). 2015-07-26 17:28:32 +12:00
dteviot
9c0e3d6c28 extracted functions doPerFrameActionsForState() and onChooseActionStatePerFrameActions(). 2015-07-26 17:25:44 +12:00
dteviot
76f95eafe7 extract function onWalkingStatePerFrameActions(). 2015-07-26 17:25:00 +12:00
dteviot
5ec310dfba extract function onIdleStatePerFrameActions(). 2015-07-26 17:24:33 +12:00
dteviot
00eef585af renamed mPlayedIdle to mIdleAnimation. 2015-07-19 18:04:42 +12:00
dteviot
22f49128cc replaced multiple booleans with single state variable. 2015-07-19 18:02:13 +12:00
dteviot
1ed6e95c07 Got rid of some radians to degrees to radians conversions. 2015-07-19 18:01:25 +12:00
dteviot
3ebe9fb34f renamed mRotate to mTurnActorGivingGreetingToFacePlayer 2015-07-19 18:00:49 +12:00
dteviot
e294cd95cd extracted function playIdleDialogueRandomly() 2015-07-12 17:15:14 +12:00
dteviot
22059d68f6 Remove duplicated code. 2015-07-12 17:14:48 +12:00
dteviot
0b089a5564 extracted function evadeObstacles() 2015-07-12 16:38:36 +12:00
dteviot
1ef78b1e56 extracted playGreetingIfPlayerGetsTooClose() 2015-07-12 16:37:31 +12:00
dteviot
df421fce92 extracted function setPathToAnAllowedNode() 2015-07-12 16:35:15 +12:00
dteviot
b508846a64 Renamed mStoredAvailableNodes to mPopulateAvailableNodes.
Don't call getAllowedNodes() needlessly.
2015-07-12 16:32:48 +12:00
dteviot
f1774ee7c3 Fixed compile failing on OSX and Linux. 2015-07-08 19:34:33 +12:00
dteviot
52cf8541f5 End point tolerance restored to 64 units.
Corrected problem pointed out by Scrawl.
Destination needs tolerance of 64 to avoid overcrowding.
2015-07-08 18:41:03 +12:00
dteviot
1239667cb4 AiWander uses points between PathGrid points (Fixes #1317)
When there is only on PathGrid point within a NPC's wander distance, expand possible wander destinations by using positions between PathGrid points.
2015-07-05 18:21:35 +12:00
dteviot
eb2aa965b9 Extracted function SetCurrentNodeToClosestAllowedNode() 2015-07-05 18:17:18 +12:00
dteviot
f942db2b27 Simplified code. 2015-07-05 18:08:09 +12:00
dteviot
9a02a85a24 Pulled duplicate code into function. 2015-07-05 18:07:14 +12:00
mrcheko
c773ed9f9a move checkWayIsClear to pathfinding; move shortcut logic to separate func (AiPackage::shortcutPath); rework AiPackage::pathTo 2015-07-04 18:00:16 +03:00
dteviot
fae93e3d82 Bugfix: was not resetting mStuckCount. 2015-07-04 19:00:27 +12:00
dteviot
46a654286b Remove fix for #1317
Expanding the AiWander distance for path grid nodes causes bigger problems than it solved.
2015-07-04 18:57:56 +12:00
dteviot
164994f3d3 Made PathFinder::buildPath() private.
Now all paths are built by calling PathFinder::buildSyncedPath().
Also removed useless comment.
2015-07-04 18:47:26 +12:00
scrawl
59db9664ba Pass the CharacterController to AiPackage::execute 2015-06-26 17:47:04 +02:00
scrawl
a5670b5133 Merge branch 'master' of https://github.com/OpenMW/openmw into osg
Conflicts:
	apps/opencs/CMakeLists.txt
	apps/opencs/main.cpp
	apps/openmw/mwworld/player.hpp
2015-06-22 20:09:02 +02:00
dteviot
c65e7a31e7 Aquatic creatures no longer try to get onto land.
AiWander for aquatic creatures no longer uses path grid points as they're usually on land.
2015-06-21 16:23:40 +12:00
scrawl
3663511cdb Merge branch 'master' of https://github.com/OpenMW/openmw into osg
Conflicts:
	apps/opencs/CMakeLists.txt
	extern/ogre-ffmpeg-videoplayer/CMakeLists.txt
2015-06-16 19:53:41 +02:00
scrawl
5347d407d8 Disallow AiWander fast-forward for water creatures
Pathgrid nodes are usually above the water level, so appearing at a random node would have the creature break out of the water level it's supposed to be constrained to.
2015-06-15 20:13:59 +02:00
scrawl
98a77f68a3 Fix AiWander::fastForward using incorrect pathgrid coordinates when actor recently moved to a new cell 2015-06-15 20:04:36 +02:00
scrawl
4bb3cbf0fb Remove last remains of Ogre 2015-06-03 23:04:35 +02:00
scrawl
7bacb9418d Various math code ported to osg 2015-06-03 19:41:19 +02:00
scrawl
fd50be0fb8 Restore various gameplay 2015-05-30 01:00:24 +02:00
scrawl
22f01b1232 Merge branch 'master' of https://github.com/OpenMW/openmw into osg
Conflicts:
	apps/launcher/graphicspage.cpp
	apps/opencs/editor.cpp
	apps/opencs/model/doc/document.cpp
	apps/opencs/view/render/cell.cpp
	apps/opencs/view/render/mousestate.cpp
	apps/opencs/view/render/textoverlay.cpp
	apps/opencs/view/render/worldspacewidget.cpp
	apps/openmw/mwclass/creature.cpp
	apps/openmw/mwclass/npc.cpp
	apps/openmw/mwgui/inventorywindow.cpp
	apps/openmw/mwgui/loadingscreen.cpp
	apps/openmw/mwgui/mapwindow.cpp
	apps/openmw/mwgui/pickpocketitemmodel.cpp
	apps/openmw/mwgui/waitdialog.cpp
	apps/openmw/mwmechanics/combat.cpp
	apps/openmw/mwmechanics/mechanicsmanagerimp.cpp
	apps/openmw/mwrender/globalmap.cpp
	apps/openmw/mwworld/physicssystem.cpp
	apps/openmw/mwworld/refdata.cpp
	apps/openmw/mwworld/scene.cpp
	apps/openmw/mwworld/worldimp.cpp
	components/sdlutil/sdlinputwrapper.cpp
	extern/shiny/Main/Factory.cpp
	extern/shiny/Main/MaterialInstance.cpp
	extern/shiny/Main/Platform.cpp
	extern/shiny/Main/ShaderSet.cpp
2015-05-23 20:33:44 +02:00
Rohit Nirmal
396fba7fa9 Silence -Wreorder warnings, and remove -Wno-reorder. 2015-05-21 22:46:44 -05:00
scrawl
8c810e3620 Move rng to components 2015-04-22 17:58:55 +02:00
scrawl
1699759d12 Merge branch 'master' of https://github.com/OpenMW/openmw into osg
Conflicts:
	apps/opencs/view/render/cell.cpp
2015-04-19 02:29:16 +02:00
scrawl
c92592493e OpenMW: create a window and render the starting cell(s) 2015-04-12 15:38:30 +02:00
dteviot
be6ee927b9 AiWander, use closest two points if distance is too small (Fixes #1317)
In AiWander, if wander distance is set too small to get two points, take the closest two points.
2015-03-28 20:05:54 +13:00
dteviot
63ab856024 Removed duplicated code. 2015-03-23 20:57:36 +13:00
dteviot
eb1090a1b6 Waypoint check only considers X & Y distance (Fixes #2423)
When pathfinder checks if actor has reached a waypoint, ignore actor's altitude.
2015-03-23 20:09:46 +13:00
dteviot
3f28634d1f consolidate random number logic
Note, I suspect Rng::rollClosedProbability() is not needed.  The only difference between it and rollProbability() is that one time in 37k (on Windows), it will give an output of 1.0.
On some versions of Linux, the value of 1.0 will occur about 1 time in 4 billion.
2015-03-15 14:07:47 +13:00
dteviot
ca8c8c6aa4 fixing MSVC 2013 warning C4244: & C4305
conversion from 'const float' to 'int', possible loss of data
conversion from 'double' to 'int', possible loss of data
conversion from 'float' to 'int', possible loss of data
2015-03-08 17:42:07 +13:00
dteviot
f2ac939e61 reverted mShouldRepeat back to unsigned char.
As recommended by Scrawl.
2015-03-07 11:04:54 +13:00
scrawl
bf915d929a Update idle voices according to research 2015-01-15 03:35:46 +01:00
scrawl
a3c861b7fa Idle voice fix 2015-01-14 00:07:14 +01:00
scrawl
871d59de6c Reduce Idle voice chance (Fixes #1964) 2015-01-12 23:29:58 +01:00
scrawl
b108fbe986 Remove incorrect implementation of fGreetDistanceReset
This can't be right. A reset distance of 512 is smaller than the maximum greeting distance for certain NPCs, which would then say greetings non-stop.
2015-01-11 17:04:58 +01:00
scrawl
4d9100091d Reduce default pathing arrival tolerance to 32 units (Fixes #1605) 2015-01-07 02:34:28 +01:00
scrawl
92e4a0669c Fix for AiWander state loading 2015-01-01 18:58:17 +01:00
scrawl
559ddbb480 Quick fix for Ai fast-forward crash in exteriors (Fixes #2241) 2015-01-01 18:18:46 +01:00
scrawl
01652bbcc5 Store original actor position in AiWander package (Fixes #2200) 2015-01-01 03:38:49 +01:00
scrawl
a8ae0dec52 Implement AiWander fast-forward (Feature #1125) 2014-12-31 18:41:57 +01:00
scrawl
a1226501fa AiWander: move idle animation handling to non-delayed section (Fixes #2073) 2014-12-01 23:09:46 +01:00
scrawl
61d1aa78ce Move AiWander path finder to temporary storage (Fixes #2082) 2014-12-01 23:09:46 +01:00
terrorfisch
4eb1668467 references now initialized when they are needed 2014-10-10 23:32:15 +02:00
terrorfisch
730abf6841 Moved all variables in temporary storage for AiCombat and some more for AiWander.
+Buxfix for previous AiWander changes
2014-10-10 00:16:17 +02:00
terrorfisch
4391c1fd00 Addded the parts of AiWander that I fully understand to the temporary storage.
The rest should be done by someone who has a clearer overview over the class.
2014-10-08 22:11:45 +02:00
terrorfisch
0871d45790 Draft how to move temporary package state to CharacterController.
Example for a few values shown in AiWander.
2014-10-08 10:58:52 +02:00
scrawl
7252cb63a6 Fix cppcheck issues 2014-09-26 17:48:14 +02:00
scrawl
780a48cd1e Don't greet dead actors in AiWander 2014-09-09 00:43:12 +02:00