scrawl
1f543b4d79
Apply the AiTravel maxRange to AiEscort as well ( Fixes #2697 )
2015-12-07 00:26:17 +01:00
scrawl
65b5cbe3f7
AiEscortCell complains if no cell was given or cell does not exist
2015-12-06 23:42:58 +01:00
scrawl
965bea45c0
AiEscort makes the actor side with target in fights (Bug #2697 )
...
Also will follow the player through teleport doors.
2015-12-06 23:38:51 +01:00
scrawl
4e678ce6b3
Handle mCellId in AiEscort
2015-12-06 23:38:51 +01:00
scrawl
45a609bc54
Improve PositionCell warning message
2015-12-06 22:37:04 +01:00
scrawl
4b0ecaa0a0
Fix physics bug
2015-12-06 22:10:01 +01:00
scrawl
51b892195b
Restore getReadOnlyDoors()
2015-12-06 21:58:25 +01:00
scrawl
abcf91be5b
Port over more game logic to the visitor pattern
2015-12-06 20:43:50 +01:00
scrawl
9ea475d00c
Port LocalScripts::addCell to new CellStore interfaces
2015-12-06 20:33:22 +01:00
scrawl
a517f4f9ba
Add CellStore::forEachType to help with porting over game logic to the new interfaces
2015-12-06 20:32:39 +01:00
scrawl
0af33b5abd
Throw exception if moveTo() is passed an object not part of *this
2015-12-06 20:05:13 +01:00
scrawl
176a3c16f4
Resolve moved references loaded from a save game
2015-12-06 20:00:24 +01:00
scrawl
671561ea37
Write moved references to the save game file (not resolved on loading yet)
2015-12-06 19:11:25 +01:00
scrawl
2219231230
Missing updateMergedRefs()
2015-12-06 18:46:49 +01:00
scrawl
138957c49a
Special case objects with no refnum
2015-12-06 18:43:52 +01:00
scrawl
5e99a3eda6
Rename CellStore Functor to Visitor
2015-12-06 18:13:04 +01:00
scrawl
2301080c63
Load CellStore when an object is moved there
2015-12-06 18:04:48 +01:00
scrawl
811df1e97b
Pass the ESM reader list to CellStore constructor
2015-12-06 18:03:55 +01:00
Paul Cercueil
0765ff3ba2
mwrender: Add missing includes
...
Those missing includes were causing the build to fail when compiled with
USE_GLES set.
Signed-off-by: Paul Cercueil <paul@crapouillou.net>
2015-12-06 16:01:21 +01:00
Marc Zinnschlag
b37a2ac09c
user settings categories
2015-12-06 12:06:28 +01:00
Marc Zinnschlag
36ce8f97d7
basic framework for new user settings system
2015-12-06 11:18:31 +01:00
Chris Robinson
91cd6be11b
Use the correct SoundId for NPC "land" sounds
2015-12-05 18:00:28 -08:00
Chris Robinson
c75303b652
Add an option to select and enable HRTF
2015-12-05 17:14:53 -08:00
Marc Zinnschlag
03a0b1fbfd
Merge remote-tracking branch 'origin/master'
2015-12-05 15:41:20 +01:00
scrawl
53158d29b1
stopSound crash fix
2015-12-05 01:54:16 +01:00
scrawl
66bcd2fd68
Write save games to a memory stream first
...
Two motivations for doing this:
- If the user chooses to overwrite existing save file, and there is an exception during the save process, the existing file will not be lost.
- Many small writes to a file are slow. Very slow. Writing to memory first then writing the completed file to disk appears to be ~500% faster.
2015-12-05 01:15:54 +01:00
scrawl
67a6a8f5d4
Make projectiles receive lighting
2015-12-05 00:44:18 +01:00
scrawl
6181594251
Disable freezeOnCull for magic projectile particles
2015-12-05 00:33:01 +01:00
scrawl
a8938589f6
Magic projectiles rotate during flight
2015-12-05 00:33:01 +01:00
scrawl
3f93af4181
Projectiles interact with the water surface ( Fixes #2986 )
2015-12-04 23:28:11 +01:00
scrawl
3dcefd17fc
Fix CellStore::count()
2015-12-04 20:03:14 +01:00
scrawl
3aa53f3cb4
Object cell movement tracker works. Savegame handling is still missing and some game functionality is still stubbed out.
2015-12-04 19:46:02 +01:00
scrawl
64b4926127
Add reference moving logic - untested
2015-12-04 18:29:41 +01:00
scrawl
7a983340bf
Add comment
2015-12-04 18:29:41 +01:00
scrawl
fc449233be
Restore support for inserting objects into a cell
2015-12-04 18:29:41 +01:00
scrawl
0975f60d59
Stub out CellStore::get<T> accessors in preparation of reference movement between cells
2015-12-04 18:29:41 +01:00
Marc Zinnschlag
49b37ce8bf
Merge remote-tracking branch 'scrawl/geteffect'
2015-12-04 10:42:22 +01:00
scrawl
8e9571d155
Double buffer the light StateAttributes and StateSets
...
Fixes a race condition where the position of a light could jump a frame ahead.
2015-12-04 00:06:22 +01:00
scrawl
f22982d251
Merge pull request #835 from sandstranger/opengles1
...
enable opengl es1
2015-12-03 21:25:00 +01:00
scrawl
5f349b9a6e
Support effects with attribute/skill argument in OpGetEffect
2015-12-03 21:12:58 +01:00
scrawl
1ec338f19d
Don't attempt to load external keyframes for non-NIF files
2015-12-03 20:11:28 +01:00
scrawl
795f6d77f2
Cache the Animation's Skeleton
2015-12-03 20:06:00 +01:00
Marc Zinnschlag
e0c9265148
Merge remote-tracking branch 'origin/master'
2015-12-03 15:56:24 +01:00
scrawl
389b168d5f
Restore OpGetWaterLevel to vanilla behaviour
2015-12-03 15:48:27 +01:00
scrawl
d0c6b407b4
Fix isUnderwater checks being off by one for exterior cells
2015-12-03 15:16:50 +01:00
scrawl
86881bcf39
In first person mode, attach sound listener to the camera
2015-12-03 15:16:20 +01:00
sandstranger
238a5824be
add custom new variable fot Qt
2015-12-03 08:54:14 +03:00
Chris Robinson
f19f1c47c8
Fix playing pending voices without a Ptr
2015-12-02 16:09:25 -08:00
Chris Robinson
2face3d0a9
Combine duplicate code
2015-12-02 16:09:25 -08:00
Chris Robinson
1407366e51
Use a premade SoundStream object for the output's streamSound functions
2015-12-02 16:09:25 -08:00
Chris Robinson
2ee3265b66
Use a premade Sound object for the output's playSound functions
2015-12-02 16:09:25 -08:00
Chris Robinson
53718a5ca0
Use a typedef for the sound instance handle
2015-12-02 16:09:25 -08:00
Chris Robinson
3a39a92b93
Keep track of audio tracks
2015-12-02 16:09:24 -08:00
Chris Robinson
2883cdba5c
Initialize the Sound object before modifying the pitch variable
2015-12-02 16:09:24 -08:00
Chris Robinson
a6db96b2d8
Update sound and stream parameters
2015-12-02 16:09:24 -08:00
Chris Robinson
4bd235284b
Rename a couple members to avoid confusion
2015-12-02 16:09:24 -08:00
Chris Robinson
1ce3e7f5b9
Use a separate type for streams
...
They're basically the same, but it's to help avoid accidents with passing non-
streaming sounds to the stream functions, or vice-versa.
2015-12-02 16:09:24 -08:00
Chris Robinson
816015d6e6
Avoid inheriting from Sound for sound types
2015-12-02 16:09:24 -08:00
sandstranger
b0b3192520
delete bad symbol
2015-12-02 22:50:54 +03:00
sandstranger
bd5057aa3c
enable opengl es1
2015-12-02 22:40:04 +03:00
scrawl
3d12b2ca9d
Add NifFileManager to avoid duplicate parsing of the NIFFile in SceneManager and BulletShapeManager.
2015-12-02 14:59:32 +01:00
scrawl
c912310c52
Don't add persuasion results to the journal
2015-12-01 16:16:21 +01:00
scrawl
2327a41826
Fix journal freeze
2015-12-01 16:09:05 +01:00
scrawl
ba5433391f
Merge pull request #831 from ace13/win-fix
...
Fix windows builds
2015-12-01 01:03:16 +01:00
Alexander "Ace" Olofsson
24340bff95
Add a space
2015-11-30 17:47:36 +01:00
Alexander "Ace" Olofsson
6823298516
Different way to solve the type deduction issue
2015-11-30 17:42:25 +01:00
Alexander "Ace" Olofsson
a69e751089
Revert "Fix windows builds"
...
This reverts commit b085c09f86
.
2015-11-30 17:38:46 +01:00
scrawl
f5f3d18b8e
Add comment
2015-11-30 17:19:27 +01:00
scrawl
576d5111a5
Prefer Intersector::PROJECTION over Intersector::WINDOW
2015-11-30 17:04:45 +01:00
scrawl
14b143231c
Don't crash OpGetTarget when the target disappeared ( Fixes #3048 )
2015-11-30 15:26:43 +01:00
Alexander "Ace" Olofsson
b085c09f86
Fix windows builds
...
Can't instantiate a container (at least with MSVC) without knowing the exact size of the object being stored, forward-declares only work with pointers.
I couldn't see a simple way to remove the forward declare, so pointers and memory management it is.
2015-11-30 13:36:15 +01:00
Marc Zinnschlag
3a81bed001
Merge remote-tracking branch 'origin/master'
2015-11-30 12:12:18 +01:00
Marc Zinnschlag
7cc8fbfb3c
Merge remote-tracking branch 'scrawl/dynamic_cast2'
2015-11-30 12:11:00 +01:00
scrawl
0655abcd8b
Fix some character preview raycasting issues (Bug #2769 )
2015-11-30 05:43:36 +01:00
scrawl
8fb328ef4f
Fix updating of character preview size in InventoryWindow::setGuiMode
2015-11-30 05:43:36 +01:00
scrawl
d2290a8183
Don't crash when Water_SurfaceFrameCount is 0
2015-11-30 00:41:26 +01:00
scrawl
d5a738bd39
Apply 27e669296e
(locale-unaware tolower) to more code
...
In particular, the one in VFS::normalizeFilename was affecting cell loading performance.
2015-11-30 00:38:52 +01:00
scrawl
f962ce0bbe
Don't link against unnecessary OSG libraries
2015-11-29 19:56:43 +01:00
scrawl
cd4a1ffd16
Fast version of dynamic_cast for MWClass
2015-11-29 14:26:52 +01:00
Marc Zinnschlag
20a076bdba
Merge remote-tracking branch 'origin/master'
2015-11-29 09:34:41 +01:00
Marc Zinnschlag
6df626ad71
Merge remote-tracking branch 'scrawl/crashcatcher'
2015-11-29 09:23:14 +01:00
scrawl
db71634a2d
Allow replacing of interactive message boxes ( Fixes #3040 )
2015-11-28 19:15:54 +01:00
scrawl
c9bfe01120
Fix applying of weather changes after serving a jail sentence
2015-11-28 17:57:35 +01:00
Marc Zinnschlag
6facce9d13
Merge remote-tracking branch 'origin/master'
2015-11-28 10:02:37 +01:00
Marc Zinnschlag
ff5582e318
Merge remote-tracking branch 'scrawl/ltex'
2015-11-28 09:51:57 +01:00
scrawl
a1fa1b2b2e
Don't attempt to open an empty texture
2015-11-28 06:01:24 +01:00
scrawl
d97dda05c9
Don't attempt to play unset weather sounds
2015-11-28 05:55:36 +01:00
scrawl
93a76e2f56
Revert debce0fb80
, use a sleep() to work around the X11 bug
...
Problem with debce0fb80
is the crashed process won't be killed until the user accepts the message box, and it's harder to get to the message box when the window is in full screen or the cursor is locked.
2015-11-28 05:42:05 +01:00
scrawl
debce0fb80
crashcatcher: show the message box before killing crashed process
...
This change fixes a random X server lock-up that I get about 1 in 10 times when a crash is caught. I'm presuming it's an X server bug since faulty applications shouldn't be able to crash or freeze the X server under any circumstances.
2015-11-28 05:14:30 +01:00
scrawl
35fa1f5865
Not found Land Textures are no longer a fatal error (Bug #3037 )
...
Log warning message and show the default texture when encountering invalid ESM::LandTexture references.
2015-11-27 21:57:24 +01:00
scrawl
4687c4baad
Do not assert() for invalid land data in plugins (Bug #3037 )
...
The resizing of LTEX store to the correct number of plugins was done in the load() method, but the load method won't be called if a plugin contains LAND records but doesn't contain LTEX records. For such plugins the Store<ESM::LandTexture>::search() function would then fail an assertion.
2015-11-27 21:57:15 +01:00
scrawl
5b8fd79b4b
Fix crash when exception is thrown in startNewGame()
2015-11-27 21:38:57 +01:00
scrawl
177a6f4a68
Launcher: ensure to clear previous settings when reloading settings
2015-11-27 20:52:29 +01:00
scrawl
ace4cfc0a8
Fix 'duplicate setting' errors when running installation wizard
2015-11-27 20:32:45 +01:00
scrawl
89783e047b
Fix typo
2015-11-27 19:40:31 +01:00
Chris Robinson
4ee409af84
Load loudness data asynchronously
...
Currently abuses the output audio streams' background processing thread to do
the work, since there's no generalized threaded processing mechanism.
2015-11-27 09:47:14 -08:00
Chris Robinson
0f05ccf72a
Use a non-recursive mutex and properly end the streaming thrread
2015-11-27 08:13:23 -08:00
Chris Robinson
b5ed2e65f8
Add a method to get the sound stream delay
...
This helps avoid a lock during the movie player's read method, since it needs
to sync with the current playback position which would otherwise need to get
the movie decoder's current position.
2015-11-27 06:01:50 -08:00
Chris Robinson
f3c035907c
Rename Sound::update to Sound::applyUpdates
2015-11-27 04:55:17 -08:00
Chris Robinson
9568aa6a84
Use a condition variable to wake up the audio stream thread
...
This should make starting streams a bit more responsive, and allows us to do
more in it that really shouldn't wait for its next wake up.
2015-11-27 04:30:09 -08:00
Chris Robinson
4a078725d4
Play player voices locally
2015-11-27 02:57:44 -08:00
Chris Robinson
449eca4fb4
Properly mark streams as 2D or 3D
2015-11-27 02:36:33 -08:00
Chris Robinson
21bb2e9314
Use a deque for loudness buffers with a map lookup
...
Similar to Sound_Buffer, this allows individual Sound_Loudness objects to
retain a constant pointer when new ones are inserted on to the end.
2015-11-27 02:01:18 -08:00
Chris Robinson
5f8a09df97
Play player sounds (except footsteps) local to the listener
2015-11-27 02:01:18 -08:00
Chris Robinson
82f3651f81
Treat the sound offset as the offset in seconds
2015-11-27 02:01:17 -08:00
Chris Robinson
8b7587f9a6
Track whether a sound is 3D
2015-11-27 02:01:17 -08:00
Chris Robinson
fc912b135f
Avoid unnecessarily friending classes
2015-11-27 02:01:17 -08:00
Marc Zinnschlag
7cc950ed64
Merge remote-tracking branch 'origin/master'
2015-11-27 10:34:22 +01:00
Marc Zinnschlag
b3532b6274
Merge remote-tracking branch 'scrawl/spells'
2015-11-27 10:21:17 +01:00
scrawl
44dd62067e
Remove some unnecessary per-frame store searches
2015-11-27 02:13:56 +01:00
scrawl
783594033a
Optimize MWMechanics::Spells
...
Use pointers as map keys instead of string IDs. Resolves a nasty performance bottleneck on functions like hasCommonDisease() that previously had to look up all contained spells from the ESM store on every call. hasCommonDisease() is called hundreds of times per frame by the AI target update since it's used to calculate target disposition.
The total cost of hasCommonDisease() was 2.7% of the frame loop, now it's negligible.
2015-11-27 01:07:15 +01:00
scrawl
fbee32729a
Cache CellId
...
ESM::Cell::getCellId() was allocating a string on every call. This caused functions dealing with cellIds to be unnecessarily expensive.
For example, World::moveObject spent almost as much time comparing CellIds as it did updating Bullet's AABB after the move. OpGetDistance was by far the most expensive script instruction because it has to compare cellIds.
The total cost of getCellId() relative to the frame loop was about 0.3%.
2015-11-26 23:56:32 +01:00
scrawl
984c455027
Fix Show Owned option affecting tooltips that are not objects ( Fixes #3036 )
2015-11-26 18:23:39 +01:00
scrawl
2ffcc2a2b4
Fix incorrect path encoding handling in debug message
2015-11-26 17:34:22 +01:00
scrawl
bcca1beb69
Merge branch 'configwriter' into HEAD
2015-11-26 17:17:26 +01:00
scrawl
d894d54e41
Improve path conversions
2015-11-26 17:15:28 +01:00
scrawl
84aceedfa2
Add comment
2015-11-26 17:15:12 +01:00
scrawl
325d208b4a
Fix incorrect error message
2015-11-26 17:13:13 +01:00
scrawl
3747843c92
Use QString::toInt instead of atoi
2015-11-26 17:07:20 +01:00
cfcohen
c26463fd91
Should have coded it the way scrawl said, since it's cleaner.
2015-11-26 10:52:20 -05:00
cfcohen
a9c9cc5508
Remove unnecessary copy of mEngineSettings in mInitialSettings.
2015-11-26 10:42:43 -05:00
Chris Robinson
d4238a6d91
Add config options for the sound buffer cache size
...
The cache size is specified with a min/max range, intended to avoid constant
unloading once the limit is reached. This way, buffers can be unloaded down to
a reasonable mimimum, allowing some more buffers to be subsequently loaded
without causing more unloading.
2015-11-26 02:13:37 -08:00
Chris Robinson
8715add72f
Store sound buffers in a deque that's filled in as needed
...
A deque allows existing Sound_Buffer references to remain valid as long as new
ones are back-inserted. These references can be used instead of indices.
2015-11-26 01:26:33 -08:00
cfcohen
046538984c
Fix duplicate filename in what() message. Use newly create cfgError
...
utility function consistently throughout code.
2015-11-26 01:49:14 -05:00
cfcohen
7605912ece
Merge branch 'master' of https://github.com/OpenMW/openmw into config_writer_changes
2015-11-26 00:57:21 -05:00
cfcohen
ad5eaaa705
Update the OpenMW Launcher so that it only writes changed values to
...
the user settings.cfg file. Add a helpful header to the top of new
settings.cfg files. Remove old code involve whitespace management
that didn't work correctly anayway, and doesn't matter since we're not
adding comments to the file. Remove "automatically generated"
comments.
2015-11-25 21:30:04 -05:00
scrawl
8a3ec14bc6
Revert "Merge remote-tracking branch 'sandstranger/opengles'"
...
This reverts commit cc9cab6fd1
, reversing
changes made to da856eed95
.
2015-11-25 19:22:48 +01:00
Marc Zinnschlag
ef68e2aec4
Merge remote-tracking branch 'origin/master'
2015-11-25 19:18:17 +01:00
cfcohen
67c4b17581
Commit files that I thought wre in the previous commit. :-[ I'm
...
accustomed to the hg behavior of commiting all modified files by
default.
2015-11-25 13:17:03 -05:00
Marc Zinnschlag
cc9cab6fd1
Merge remote-tracking branch 'sandstranger/opengles'
2015-11-25 19:15:53 +01:00
cfcohen
18da95e4f8
Make openmw-launcher pass comments through settings.cfg, and reuse the
...
Settings::Manager code to do most of the work. Stop loading both the
global settings-default.cfg and the one in the current directory,
while continuing to prefer the latter one. Cleanup paths slightly and
remove what appears to have been debugging in the launcher settings.
2015-11-25 13:08:53 -05:00
Chris Robinson
8f08ca9cba
Revert "Avoid unsafe sizeof(x)/sizeof(x[0]) constructs for array counting"
...
This reverts commit 0d4fea896c
.
2015-11-25 06:06:27 -08:00
Chris Robinson
04f885d8cc
Rename mReferences to mUses
2015-11-25 04:24:27 -08:00
Chris Robinson
0d4fea896c
Avoid unsafe sizeof(x)/sizeof(x[0]) constructs for array counting
2015-11-25 04:24:27 -08:00
Chris Robinson
a1bdb544db
Avoid an unnecessary string copy
2015-11-25 04:24:27 -08:00
Chris Robinson
aac903484c
Remove a really unnecessary method
2015-11-25 04:24:26 -08:00
Chris Robinson
73448c72f6
Replace Play_NoTrack with playManualSound3D, and rename the latter
2015-11-25 04:24:26 -08:00
Chris Robinson
caae305ddd
Use a sorted list for unused buffers
...
Helps ensure the buffers being unloaded due to cache limits are not likely to
be needed anytime soon.
2015-11-25 04:24:26 -08:00
Chris Robinson
669b7a2295
Batch update changes together, when possible
...
Certain OpenAL implementations, including Rapture3D, Creative's hardware
drivers, and more recent versions of OpenAL Soft, can batch together changes so
that they all occur at once, avoiding potential discontinuities with one sound
being changed before another, or the listeenr being changed before sounds are.
On other implementaitons, this is a no-op and maintains existing behavior.
2015-11-25 04:24:26 -08:00
Chris Robinson
ea70b0baee
Don't store the buffer in the sound struct
2015-11-25 04:24:25 -08:00
Chris Robinson
fd7d58fe7e
Reset the sound handle back to null after unloading
2015-11-25 04:24:25 -08:00
Chris Robinson
4801661b34
Stop all sounds of the given id
2015-11-25 04:24:25 -08:00
Chris Robinson
8a69f676ec
Remove some duplicate code
2015-11-25 04:24:25 -08:00
Chris Robinson
45628316f8
Remove an unnecessary check
2015-11-25 04:24:25 -08:00
Chris Robinson
574c1923fe
Clear unused buffers after unloading them all
2015-11-25 04:24:25 -08:00
Chris Robinson
5ad772c3b3
Fix streaming sound time
2015-11-25 04:24:25 -08:00
Chris Robinson
3ce6aee98b
Return a decoder from the loadVoice function
2015-11-25 04:24:25 -08:00
Chris Robinson
24f8c78fca
Store sound buffer references by index instead of string
2015-11-25 04:24:24 -08:00
Chris Robinson
f7218f5a25
Use proper mutex mechanisms and don't check al errors in the stream thread
2015-11-25 04:24:24 -08:00
Chris Robinson
f9e18cd966
Prepare all Sound_Buffer objects when one is needed
...
This simply sets up the Sound record data to be used by the sound output. The
actual audio buffers, stored in the Sound_Handle, are still loaded on-demand.
2015-11-25 04:24:24 -08:00