Commit Graph

11736 Commits (d6bd2cb1f054a19de4a23f847e30847e5a5ad3d5)

Author SHA1 Message Date
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%.
9 years ago
scrawl 984c455027 Fix Show Owned option affecting tooltips that are not objects (Fixes #3036) 9 years ago
scrawl 2ffcc2a2b4 Fix incorrect path encoding handling in debug message 9 years ago
scrawl bcca1beb69 Merge branch 'configwriter' into HEAD 9 years ago
scrawl d894d54e41 Improve path conversions 9 years ago
scrawl 84aceedfa2 Add comment 9 years ago
scrawl 325d208b4a Fix incorrect error message 9 years ago
scrawl 3747843c92 Use QString::toInt instead of atoi 9 years ago
cfcohen c26463fd91 Should have coded it the way scrawl said, since it's cleaner. 9 years ago
cfcohen a9c9cc5508 Remove unnecessary copy of mEngineSettings in mInitialSettings. 9 years ago
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.
9 years ago
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.
9 years ago
cfcohen 046538984c Fix duplicate filename in what() message. Use newly create cfgError
utility function consistently throughout code.
9 years ago
cfcohen 7605912ece Merge branch 'master' of https://github.com/OpenMW/openmw into config_writer_changes 9 years ago
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.
9 years ago
scrawl 8a3ec14bc6 Revert "Merge remote-tracking branch 'sandstranger/opengles'"
This reverts commit cc9cab6fd1, reversing
changes made to da856eed95.
9 years ago
Marc Zinnschlag ef68e2aec4 Merge remote-tracking branch 'origin/master' 9 years ago
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.
9 years ago
Marc Zinnschlag cc9cab6fd1 Merge remote-tracking branch 'sandstranger/opengles' 9 years ago
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.
9 years ago
Chris Robinson 8f08ca9cba Revert "Avoid unsafe sizeof(x)/sizeof(x[0]) constructs for array counting"
This reverts commit 0d4fea896c.
9 years ago
Chris Robinson 04f885d8cc Rename mReferences to mUses 9 years ago
Chris Robinson 0d4fea896c Avoid unsafe sizeof(x)/sizeof(x[0]) constructs for array counting 9 years ago
Chris Robinson a1bdb544db Avoid an unnecessary string copy 9 years ago
Chris Robinson aac903484c Remove a really unnecessary method 9 years ago
Chris Robinson 73448c72f6 Replace Play_NoTrack with playManualSound3D, and rename the latter 9 years ago
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.
9 years ago
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.
9 years ago
Chris Robinson ea70b0baee Don't store the buffer in the sound struct 9 years ago
Chris Robinson fd7d58fe7e Reset the sound handle back to null after unloading 9 years ago
Chris Robinson 4801661b34 Stop all sounds of the given id 9 years ago
Chris Robinson 8a69f676ec Remove some duplicate code 9 years ago
Chris Robinson 45628316f8 Remove an unnecessary check 9 years ago
Chris Robinson 574c1923fe Clear unused buffers after unloading them all 9 years ago
Chris Robinson 5ad772c3b3 Fix streaming sound time 9 years ago
Chris Robinson 3ce6aee98b Return a decoder from the loadVoice function 9 years ago
Chris Robinson 24f8c78fca Store sound buffer references by index instead of string 9 years ago
Chris Robinson f7218f5a25 Use proper mutex mechanisms and don't check al errors in the stream thread 9 years ago
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.
9 years ago
Chris Robinson 6c3953766e Use separate lists for the sound name and its buffer
This should make sound lookup a bit more efficient, especially when an integer
ID can be used.
9 years ago
Chris Robinson fbfcc4050f Stream voice clips
Voices tend to be a bit long, and not individually replayed often. So it's
better to stream them instead of loading theminto a sound buffer. The loudness
data is very small, though, so that can be kept buffered indefinitely.
9 years ago
Chris Robinson eee6a19e31 Add a method to stream sounds in 3D 9 years ago
Chris Robinson f1a1dc8408 Pass relevant sound parameters to the OpenAL_SoundStream constructor 9 years ago
Chris Robinson 83721092f2 Refactor the audio streaming code to be a bit saner 9 years ago
Chris Robinson 16f72886e9 Use separate lists for openal sounds and streams 9 years ago
Chris Robinson 0f33f41d8d Actually unload sounds when running over 9 years ago
Chris Robinson 22a6811425 Limit the sound buffer cache to 15MB 9 years ago
Chris Robinson 0b2747098c Keep track of unused sound buffers 9 years ago
Chris Robinson 4073495070 Add some missing sound handling 9 years ago
Chris Robinson e362896817 Combine some duplicate code 9 years ago
Chris Robinson febc7b510a Remove an unneeded method 9 years ago
Chris Robinson 3fdc3c4ea9 Use a separate map for say sounds
Also restores lip movement
9 years ago
Chris Robinson 9d0018e1bc Reorder active sound data to make lookup by Ptr better 9 years ago
Chris Robinson 495e138907 Load sound loudness and store it with the Sound_Buffer
Still not used for say yet, though
9 years ago
Chris Robinson f4c22ec49e Hold a separate list for voice sound buffers
This fixes say. Ideally voices would be streamed, but the loudness/"lip" buffer
extraction should be separated from the buffer loading code.
9 years ago
Chris Robinson 4571218827 Load the sound as needed and pass it directly to the play methods
This breaks say sounds, loudness handling, and the cache limit. Fixes are
forthcoming.
9 years ago
Chris Robinson e2beefd8b5 Store info calculated from the ESM::Sound record 9 years ago
scrawl edfcb45ad7 Fix crash when onPcEquip script removes the equipped item (Fixes #3016) 9 years ago
sandstranger 69acacefff openmw building on Android with Opengl es 9 years ago
Marc Zinnschlag da856eed95 Merge remote-tracking branch 'origin/master' 9 years ago
scrawl 3fe38e3556 Remove unused setting 9 years ago
scrawl 71cd57a3b5 Optimize World::getTimeStamp
World::getTimeStamp was searching through the globals store on every call. Not a big issue, but slow enough to show up in the profiler.
9 years ago
scrawl 62169a7039 Use a single-precision PositionAttitudeTransform in speed critical places 9 years ago
cfcohen b507d5da5d One more tooltip fix. This one in the review dialog with Socucius Ergalla. 9 years ago
Marc Zinnschlag 99500f4021 make initial size of script error panel configurable (Fixes #2996) 9 years ago
Marc Zinnschlag f5c61ee616 remember script error panel height per scriptsubview 9 years ago
Marc Zinnschlag 26640d17eb do not adjust error panel height if panal was already open 9 years ago
Marc Zinnschlag 1093a53cf9 hide script error list when there are no errors (Fixes #2867) 9 years ago
Marc Zinnschlag b74b274ac0 Removed validator for filenames in OpenMW-CS (Fixes #2918) 9 years ago
Marc Zinnschlag e0e9e7f8c2 adjusted startup warning message for recent improvements regarding loading/saving 9 years ago
Marc Zinnschlag 8da04bf76f Merge remote-tracking branch 'scrawl/master' 9 years ago
scrawl 1b1d9a7a9c Fixed another tooltip 9 years ago
cfcohen cf4f3d9ebc Correct tooltip for Magicka in stats window. 9 years ago
scrawl 43de13fa99 Do not allow resting on lava 9 years ago
scrawl 2d302aef99 Implement stayOutside script variable 9 years ago
scrawl 27617468c8 Fix the collision shape not updating when scaling an object via script 9 years ago
scrawl 5f143dee2d Fix lighting incontinuity at nightfall and sunrise 9 years ago
scrawl 61314e1db1 Fix bounding box of bullet debug drawer 9 years ago
scrawl 706b1d4c28 Disable culling of ClipNode 9 years ago
scrawl cbf344663f animateCollisionShape checks if the shape is really animated 9 years ago
scrawl 894477849a Store animated collision objects in a separate container 9 years ago
scrawl 8c268f239e Set the object node scale before inserting model
This fixes initWorldSpaceParticles not taking object scale into account. Still not taking into account object rotation or node animations. Ideally the initWorldSpaceParticles needs to run in an updateCallback.
9 years ago
scrawl ccc721ba3f Print the OpenMW version to the logfile 9 years ago
scrawl f08cfa19ea Fix SoundManager::isPlaying to consider multiple entries with the same Ptr/id
Now it returns true if *any* sounds matching the given Ptr and id are playing. The previous behaviour was causing problems with "zombie" sounds (sounds that have finished playing, but weren't removed from the map yet) making the isPlaying method return false even though there's another legitimately playing sound in the map.
9 years ago
scrawl a49058721e Use a contactTest for collision script functions
The previous method didn't work for stationary actors. This change fixes the grinder in "Sotha Sil, Dome of Kasia" not registering collisions if the player stands still. (Fixes #1934)
9 years ago
scrawl 9fce428929 ContactTestResultCallback: do not rely on col1 being the object tested against
Unsure why, but in some cases col0 and col1 are swapped.
9 years ago
scrawl 3453353091 AiCombat distance check takes into account collision box (Fixes #1699) 9 years ago
Marc Zinnschlag 020b3add94 Merge branch 'openmw-37' 9 years ago
Marc Zinnschlag 5de9a5e840 Merge remote-tracking branch 'origin/openmw-37' into openmw-37 9 years ago
scrawl e62470d674 Auto-generate the collision shape for native mesh formats 9 years ago
scrawl 8cf57ef6ac Move BulletShapeManager and BulletShape to resource/ 9 years ago
scrawl eb2f16d682 Support for loading .osg mesh format 9 years ago
scrawl 71d9e7dc52 Read Ambient Loop Sound ID and Rain Loop Sound ID from the INI file 9 years ago
scrawl e9e12d396d Merge remote-tracking branch 'upstream/openmw-37' into HEAD 9 years ago
scrawl 0f347eccbf Flip the origin of global map texture
Now it's consistent with the overlay texture.
9 years ago
scrawl 8b7bdcd127 Fix the global map overlay viewport (Bug #3018) 9 years ago
scrawl af4923577b Fix double writing of Dialogue NAME in OpenCS 9 years ago
scrawl 0220e82259 Remove unused SOUND_INPUT_INCLUDES cmake variable. 9 years ago
Alexander "Ace" Olofsson d2a4175804 Add FFMPEG to include path for OpenMW
I'm a bit confused; `mwsound/ffmpeg_decoder.hpp/cpp` requires FFMPEG headers to compile, how did this work in the first place?
9 years ago
Marc Zinnschlag de98ee0062 Merge remote-tracking branch 'scrawl/esm_rewrite' 9 years ago
Nikolay Kasyanov 014a2fc0e9 OS X: do not override Qt plugin path 9 years ago
Nikolay Kasyanov 4dcb1a1b17 OS X: remove QPlastiqueStyle usage 9 years ago
Nikolay Kasyanov 4e3bbe01b6 OS X: disable `glTexStorage2D` because of OSG/driver issue
See http://forum.openscenegraph.org/viewtopic.php?p=65276#65276 for the details.
9 years ago
scrawl 0ec56d321a Remove unneeded using namespace 9 years ago
scrawl 05498ad592 Refactor: InputManager no longer depends on Engine 9 years ago
scrawl aae1aa3708 Adjust tests to work with esm_rewrite branch. 9 years ago
scrawl f91aae2350 Tests: add record overwrite test 9 years ago
scrawl 1e817a976f Tests: add record deletion test 9 years ago
scrawl 771193bae8 Tests: add content_diagnostics_test (requires some data files) 9 years ago
scrawl 38c155c579 Tests: add dialogue_merging_test (requires some data files) 9 years ago
scrawl d0d8c2eded Delete empty test 9 years ago
scrawl 9116c701d5 esmtool fix 9 years ago
scrawl 1402a16702 SceneWidget: change the threading model to DrawThreadPerContext
Performs much better because we can break frame early, running cull in parallel with last frame's draw.
9 years ago
Marc Zinnschlag c312162b57 Merge branch 'openmw-37' 9 years ago
Marc Zinnschlag fa9ebc50a2 Merge remote-tracking branch 'origin/master' 9 years ago
Marc Zinnschlag b0d79ee790 Merge branch 'tooltip' 9 years ago
Marc Zinnschlag 63ee37d914 added 3D scene tooltips 9 years ago
scrawl b8e11cf197 Merge commit 'pull/upstream/678' into HEAD
Conflicts:
	apps/esmtool/record.cpp
	apps/opencs/model/doc/savingstages.cpp
	apps/opencs/model/world/land.cpp
	apps/opencs/model/world/land.hpp
	apps/opencs/model/world/landtexture.cpp
	apps/openmw/mwworld/store.cpp
	components/esm/loadland.cpp
	components/esm/loadland.hpp
9 years ago
scrawl 8cd41f0ed4 Increase the ray distance for dropObjectOnGround (Fixes #3010) 9 years ago
scrawl 9897400d97 Restore the previous key focus widget after playing video 9 years ago
Emmanuel Anne af7b5e636e improves InterpreterContext::updatePtr
This checks the update is really on the right pointer. It fixes the boat
disappearing in "fishing academy", and it allows scripts linked to objects
not to loose their default reference when using the object-> notation on
another object.
9 years ago
Bret Curtis 3ea3d07d44 really purge libav 9 years ago
Marc Zinnschlag 8b01f1f6fb added instance tooltips 9 years ago
Marc Zinnschlag 01f4b8a182 added scene tooltips system (tag based) 9 years ago
scrawl 19cd987208 Fix Ptr updates in PositionCell
This was not the proper way to get the updated Ptr, it will only work for the player which isn't owned by any cell. For other objects, moving between cells makes the object owned by that cell and thus the getBase() pointer will change.
9 years ago
scrawl 9e3eb8291f Rotations: fix the rotation order for doors 9 years ago
scrawl 90b6fa5ef1 PlaceItem, PlaceItemCell angle should be treated as degrees (Fixes #3007) 9 years ago
scrawl 3647af8d73 Rotations: use different rotation order when object is rotated via script (Fixes #2062) 9 years ago
scrawl b4ce73f179 Rotations: remove LocalRotation
This never existed in vanilla MW in the first place. The reason we got confused was because of a strange behaviour where the order of applying rotations changes as soon as a script touches the object's rotation.
9 years ago
scrawl 666fbba1e0 Rotations: World::rotateObject takes radians instead of degrees
Cuts down on the amount of redundant degree<->radians conversions in the codebase.
9 years ago
scrawl 6405049add Rotations: move doors via Rotation rather than LocalRotation
Now LocalRotation is unneeded, will remove in next commit.
9 years ago
scrawl 8aacbc398f Rotations: don't wrap the angle values for non-actors
It's not really necessary, and just complicates logic elsewhere. Neither does vanilla MW do it. As well, the question is if wrapping to [-PI, PI] or [0, 2*PI] would be the desired range.
9 years ago
scrawl a68fd791c8 Remove a stray method declaration 9 years ago
scrawl 79c44d0bfe Style fix 9 years ago
scrawl 02148a43f5 Node mask fix 9 years ago
scrawl 0a52ee17c3 Fix Drawable removal issues 9 years ago
scrawl afa590bddb Leak fix 9 years ago
scrawl c62c1693e9 Disable copy constructor and operator= in PartHolder 9 years ago
scrawl 2e9805fa0e Leak fix 9 years ago
scrawl b840c68f0c Do not create a depth buffer for the global map 2d rendering 9 years ago
scrawl 8e3bc981a2 Fix self-referencing camera 9 years ago
scrawl 0409e5a043 Use OSG_VERSION_GREATER_EQUAL / LESS_THAN rather than MIN_VERSION_REQUIRED (cosmetic change) 9 years ago
scrawl f1ac408f35 Place Drawables directly in the scene graph when built with OSG 3.4
OSG 3.4 adds the ability to place Drawables directly in the scene graph, without a Geode decorating them. Leveraging this should give a small performance boost, because the redundant Geodes increase culling overhead.

There is still an oustanding issue with the RemoveDrawableVisitor no longer working correctly, because Drawables can have multiple parents.
9 years ago
scrawl 35459f20d5 Refactor lighting mask 9 years ago
scrawl 91583fc027 Fix MWRender::Mask_ParticleSystem 9 years ago
scrawl 637cd3a628 Adjust the FirstPersonNeckController to follow the camera with a reduced factor (Fixes #1784) 9 years ago
scrawl 3c338b9da9 ObstacleCheck: tweak the stuck detection parameters
The netch_betty wander animation starts up so slowly that the creature thought it was stuck, even though it's not.
9 years ago
scrawl d233bc483d ObstacleCheck: fix evasion issue
The check if (samePosition... would not work as intended because actors do not move in every frame when the framerate is higher than the physics framerate. In that case the actor would change its evasion direction almost every frame.
9 years ago
scrawl caa523a959 ObstacleCheck: fix the framerate not being taken into account 9 years ago
scrawl 801dc8eee3 ObstacleCheck: fix weird distance calculation 9 years ago