scrawl
5b972ee777
Move texture filtering settings to SceneManager
...
Practical benefits:
- Filter settings are now applied to native OSG format models. These models do not use TextureManager::getTexture2D since the model itself specifies a Texture.
- The GUI render manager will be able to use its own separate textures, making it easier to turn off filtering for them.
2016-02-05 21:03:10 +01:00
scrawl
cc3563359e
Refactor local script iteration ( Fixes #2806 , Fixes #3108 )
...
This should be much safer. Don't use recursion. Don't fail if mIgnore happens to be in the list twice. Don't rely on preconditions / assertions.
2016-02-03 16:16:20 +01:00
scrawl
7f7e8c63bf
Correct path to gamecontrollerdb.txt ( Fixes #3112 )
2015-12-31 00:37:47 +01:00
Chris Robinson
f1faeeae3a
Use separate config options for min and mag texture filters
2015-12-13 17:05:19 -08:00
Chris Robinson
5c0a847eaf
Combine some duplicate code
2015-12-13 16:51:27 -08:00
Chris Robinson
b830a413d3
Rename the texture filter options
...
To avoid compatibility issues with upgrading from or downgrading to older
builds.
2015-12-13 16:02:09 -08:00
Chris Robinson
646092ce3a
Add warnings when loading unknown texture options
2015-12-13 15:20:59 -08:00
Chris Robinson
76bde5ee13
Separate and expand texture filtering options
2015-12-13 11:25:01 -08:00
scrawl
05f1fbf593
WindowManager: explicitely pass the ESMStore
...
Fixes potential crash when the loading screen layout tries to retrieve a GMST value via #{GMST} syntax before the World has been created.
Possibly related to Bug #2854 .
2015-12-09 01:09:09 +01:00
scrawl
d894d54e41
Improve path conversions
2015-11-26 17:15:28 +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
scrawl
05498ad592
Refactor: InputManager no longer depends on Engine
2015-11-14 03:01:24 +01:00
scrawl
13c7235b6b
Remove old FPS setting code
2015-11-07 00:13:13 +01:00
scrawl
e13eb625d3
New water WIP
...
Changes compared to old (Ogre) water:
- Uses depth-texture readback to handle the underwater fog in the water shader, instead of handling it in the object shader
- Different clipping mechanism (glClipPlane instead of a skewed viewing frustum)
- Fixed bug where the reflection camera would look strange when the viewer was very close to the water surface
- Toned down light scattering, made the waterColor a bit darker at night
- Fixed flipped water normals and strange resulting logic in the shader
Still to do: see comments...
2015-10-29 00:25:23 +01:00
scrawl
481f23d955
Implement framerate limit setting
...
The framerate limit can be used to reduce strain on the CPU and GPU, in a way similar to VSync, but without the increased input lag that is typical with VSync.
2015-09-07 16:05:51 +02:00
scrawl
d11952c48a
Stop rendering when the window is minimized
2015-09-04 03:44:14 +02:00
slothlife
4fd00a75d5
Merge advanceTime and advanceTimeByFrame
2015-08-27 14:53:52 -05:00
slothlife
54fa5273dc
Refactor weather transitions to act more like MW
...
Fixed several issues:
* Waiting/jail time/training all now properly skip remaining transitions
* ChangeWeather no longer permanently sets the region's weather
* ChangeWeather being called during a transition now correctly queues up
another transition
* Corrected transition delta and factor calculations
* ModRegion settings are now saved
2015-08-26 22:59:21 -05:00
Marc Zinnschlag
a52b947efe
Merge remote-tracking branch 'dteviot/MagicEffectsRefactorDraft3'
2015-08-23 12:11:30 +02:00
scrawl
af3b0cd883
Improve some error messages
2015-08-21 00:31:43 +02:00
dteviot
ff5ef7055e
extracted function CreatureStats::isParalyzed()
2015-08-20 18:12:37 +12:00
Jordan Ayers
be7bd9529d
Classes shouldn't use MWBase::Environment to access their own members.
2015-08-16 16:56:44 -05:00
scrawl
b01abe4d19
Stop title music when the game starts ( Fixes #2468 )
2015-07-19 02:08:24 +02:00
Marc Zinnschlag
b3ad983f1f
Merge remote-tracking branch 'scrawl/version'
...
Conflicts:
apps/openmw/mwgui/windowmanagerimp.cpp
2015-07-18 12:22:37 +02:00
slothlife
f8f0380413
Fix for loading window icon on Windows
2015-07-17 21:41:53 -05:00
scrawl
f09e4620b6
Move OpenMW version information to a textfile instead of compiling it in
...
Now we don't need to recompile 3 .cpp files and re-link whenever the current git HEAD changes.
2015-07-18 03:09:04 +02:00
scrawl
9fc2c2e8ee
Don't advertise an alpha channel in GraphicsContext::traits (Bug #2677 )
2015-06-14 16:32:34 +02:00
scrawl
195e1a8410
Fix the Viewer's FrameStamp not being set correctly during Engine::frame
2015-06-14 15:28:22 +02:00
scrawl
7407bbdac9
Add a function for SDL error handling
2015-06-12 01:08:58 +02:00
scrawl
800bd511f6
Set a sensible value for SDL_GL_DEPTH_SIZE (Bug #2649 )
2015-06-12 00:12:12 +02:00
scrawl
700000cbca
Error handling fix
2015-06-05 02:57:50 +02:00
scrawl
403ce30a35
Graceful handling for failing to create SDL window
2015-06-05 02:53:10 +02:00
scrawl
e642f20a65
Restore screenshot key functionality
2015-06-03 17:25:18 +02:00
scrawl
9ee63dc3f4
Change stats viewer key to f3
2015-05-28 16:28:48 +02:00
scrawl
3dcb167066
Map rendering
2015-05-26 16:40:44 +02:00
scrawl
da24e298ee
Fix -Wreorder warnings
2015-05-23 22:44:00 +02:00
scrawl
9b8e2e9db3
Port MWRender::Camera
2015-05-22 00:29:27 +02:00
scrawl
737c2114dc
Change viewer stats keybinding to F9
2015-05-15 19:43:48 +02:00
scrawl
b7fa645530
Don't destroy a NULL window
2015-05-15 19:34:18 +02:00
scrawl
24bb2e152c
Apply texture filter setting changes
2015-05-14 21:42:04 +02:00
scrawl
e3b1707bbd
Pause simulationTime when the GUI is up
2015-05-14 02:26:19 +02:00
scrawl
9ea416b852
Readded HW cursor manager (no image rotation yet)
2015-05-13 18:56:14 +02:00
scrawl
39fb46601a
Readded input & event handling
2015-05-13 16:50:47 +02:00
scrawl
298b3ed2ef
Create the GraphicsWindowSDL2 directly
2015-05-13 15:08:47 +02:00
scrawl
0498e6e5f0
Readded window icon
2015-05-13 15:03:21 +02:00
scrawl
36e0cfbc9d
Cleanup
2015-05-13 03:36:20 +02:00
scrawl
375b736e74
Use SDL to create the window
...
No input nor event loop handling yet, so the window will "stop responding" after a few seconds.
Thanks to KittyCat for the GraphicsWindowSDL2 code.
2015-05-13 02:53:09 +02:00
scrawl
c843cfc8e2
Physics stub in preparation for rewrite
2015-05-10 00:28:51 +02:00
scrawl
c8eb77c557
Move StatsHandler construction to allow profiling of loading screen
2015-05-08 16:22:42 +02:00
scrawl
77f733362c
Add stats graphs for Script, Mechanics and Physics timings
2015-05-07 21:57:02 +02:00
scrawl
c1edc30ad7
Dead code removal
2015-05-04 03:29:12 +02:00
scrawl
e1f4a7f647
Merge branch 'master' of https://github.com/OpenMW/openmw into osg
...
Conflicts:
apps/openmw/engine.cpp
apps/openmw/mwgui/mainmenu.cpp
apps/openmw/mwgui/windowmanagerimp.cpp
apps/openmw/mwinput/inputmanagerimp.cpp
apps/openmw/mwrender/animation.cpp
apps/openmw/mwrender/debugging.cpp
apps/openmw/mwrender/npcanimation.cpp
apps/openmw/mwrender/renderingmanager.cpp
apps/openmw/mwrender/sky.cpp
components/nif/nifkey.hpp
components/nif/nifstream.hpp
components/nifbullet/bulletnifloader.cpp
components/nifogre/ogrenifloader.hpp
libs/openengine/bullet/physic.cpp
libs/openengine/gui/manager.cpp
2015-05-04 02:41:50 +02:00
scrawl
9de575ad42
Use IncrementalCompileOperation to incrementally upload OpenGL objects during the loading screen
...
For now, not much difference, but should result in a sizable speed up once MyGUI no longer needs the DYNAMIC flag (i.e. the loading screen truly renders in the background).
2015-05-03 18:16:54 +02:00
scrawl
283b252142
Stub InputManager
2015-05-03 17:24:35 +02:00
scrawl
1a5407af98
Reduce texture memory usage in OpenMW
2015-05-02 19:36:36 +02:00
scrawl
8817f44d63
Remove advanced FPS counter (obsoleted by the OSG stats viewer)
2015-05-02 17:48:24 +02:00
scrawl
b0804734e5
Port VideoWidget
2015-05-01 03:03:44 +02:00
scrawl
a59940a2c7
Move MyGUI platform to components
2015-05-01 01:44:21 +02:00
scrawl
62847f0489
Use node masks to separate Scene and GUI
2015-05-01 01:44:21 +02:00
Rohit Nirmal
997347b01e
Silence -Wreorder warnings.
2015-04-28 18:48:02 -05:00
scrawl
0ff7b2ff11
MechanicsManager, frame update
2015-04-25 15:19:17 +02:00
scrawl
15164e20f7
Cleanup fix
2015-04-24 23:30:30 +02:00
scrawl
42d6c6140c
Add mygui backend by chris
2015-04-24 21:55:30 +02:00
scrawl
8c810e3620
Move rng to components
2015-04-22 17:58:55 +02:00
scrawl
26766b8e0a
Dead code removal
2015-04-21 23:36:36 +02:00
scrawl
9c4b2ea61a
CreatureAnimation compiles
2015-04-19 03:05:47 +02:00
scrawl
083c41c950
Environment map for enchanted objects
2015-04-17 01:23:37 +02:00
scrawl
13a1ba0aab
Moon rendering
2015-04-15 18:50:50 +02:00
scrawl
5dd1ab24fe
More efficient StateSetController, beginnings of sky rendering
2015-04-14 15:58:16 +02:00
scrawl
8c7c89a4aa
Port SoundManager
2015-04-13 22:48:37 +02:00
scrawl
c92592493e
OpenMW: create a window and render the starting cell(s)
2015-04-12 15:38:30 +02:00
scrawl
4e69e7cc0f
OpenMW compiles and runs w/o render window
2015-04-01 17:02:15 +02: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
scrawl
457c135097
Remove old workaround
2015-03-09 03:15:11 +01:00
dteviot
e197f5318b
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 13:07:29 +13:00
scrawl
2b7287cbd2
Merge branch 'master' of https://github.com/OpenMW/openmw into joystick
...
Conflicts:
CMakeLists.txt
2015-02-27 22:37:22 +01:00
Digmaster
84ff11d0ab
check if v2 exists before attemping to copy it
2015-02-27 22:21:33 +01:00
Digmaster
464bbe4d6f
if v2 doesn't exist, don't erroneously set keyboardUserExists to true.
2015-02-27 22:21:07 +01:00
Digmaster
5d77ebdc60
If v3 doesn't exist, copy from v2
2015-02-27 22:21:07 +01:00
scrawl
97cc2522c0
Merge remote-tracking branch 'upstream/master'
...
Conflicts:
apps/openmw/mwgui/settingswindow.cpp
extern/oics/ICSInputControlSystem_joystick.cpp
files/mygui/openmw_settings_window.layout
2015-02-27 22:21:02 +01:00
Digmaster
df5513da7c
uses v3 input bindings, not v2
2015-02-27 22:19:13 +01:00
Digmaster
a192836582
(hopefully) correct gamecontrollerdb.txt behavior
2015-02-27 22:19:13 +01:00
scrawl
3ccf4642b4
Implement ToggleScripts
2015-02-10 20:25:57 +01:00
scrawl
c27c20a859
Merge remote-tracking branch 'upstream/openmw-35' into HEAD
...
Conflicts:
files/materials/water.shader
2015-02-09 19:40:59 +01:00
scrawl
dbd4abd6fe
Fix ripples for D3D - added simpler effect ( Fixes #1649 )
2015-02-09 19:30:11 +01:00
scrawl
955505c167
Remove unused function
2015-02-05 04:18:43 +01:00
scrawl
27dc49a135
Rewrite game settings manager
...
Removes the abhorrent dependency on Ogre for this code and improves the error handling.
2015-02-05 04:18:42 +01:00
Marc Zinnschlag
38a413a483
Merge remote-tracking branch 'scrawl/master'
2015-01-07 20:22:15 +01:00
scrawl
4e92f6ab48
Add commandline option to load a save game on startup
2015-01-07 03:27:24 +01:00
scrawl
157438460b
Fix being able to activate objects when paralyzed
2015-01-07 02:34:29 +01:00
scrawl
de12c96a46
Fix crash on exit if the window wasn't created ( Fixes #2249 )
2015-01-04 19:23:31 +01:00
Marc Zinnschlag
ec1df719fe
Merge remote-tracking branch 'mrcheko/master'
2015-01-02 18:08:47 +01:00
mrcheko
60a74d5eb8
increase robustness for gamma to persist in the system;
...
use GMST strings for gamma interface
2014-12-31 18:40:01 +03:00
scrawl
363d1f9207
Merge remote-tracking branch 'upstream/master'
2014-12-30 23:01:45 +01:00
mrcheko
04d95810d1
gamma/contrast system reworked
2014-12-30 18:33:11 +03:00
scrawl
e73e975291
Fix player being able to activate objects when knocked out
2014-12-24 15:45:13 +01:00
Sebastian Wick
e85df00158
change setting "borderless" to "window border"
...
set window border on setting changes
disable window border checkbox in the launcher if fullscreen is enabled
2014-12-24 15:09:50 +01:00
Sebastian Wick
639fbfad0b
make borderless setting available to the UI
2014-12-22 02:44:20 +01:00
Marc Zinnschlag
057d0913d6
Merge branch 'scriptfixes'
2014-12-18 10:22:07 +01:00
Marc Zinnschlag
a6d30bc2e3
consider --script-warn when running with --script-all-dialogue
2014-12-18 10:20:15 +01:00
Nik Dyonin
80c92789c2
Fix issue when killed NPC cannot be looted if it was in combat mode before killing.
2014-12-14 02:58:42 +03:00
Marc Zinnschlag
1f74d8cca5
Merge remote-tracking branch 'scrawl/scripttest'
2014-12-13 12:49:33 +01:00
scrawl
ba65c6cc7f
Add --script-all-dialogue switch to compile all dialogue scripts ( Fixes #1659 )
2014-12-13 02:51:18 +01:00
scrawl
ed6face4aa
Disable activation scripts for actors in combat
2014-12-12 22:21:57 +01:00
Digmaster
c37881ead1
Joystick Support
2014-12-08 21:57:32 -06:00
scrawl
d36dfbe779
Apply the frame time cap to Ogre's ControllerManager ( Fixes #2154 )
...
This fixes particle systems getting out of whack due to a particularly long frame time, e.g. after a loading screen.
2014-11-25 02:44:11 +01:00
Jordan Ayers
aac2de270e
Cleanup: Don't call <environment obj>.get().
...
mEnvironment.get() is redundant. Switch the call to resemble the
surrounding environment get() calls, instead.
2014-10-05 18:12:55 -05:00
scrawl
9c0649c11d
Add basic framework to retrieve font colors from fallback settings (Feature #704 )
2014-09-19 11:53:35 +02:00
scrawl
54dac1460c
Run global scripts after running local scripts
...
Turns out to be a compatibility problem with Calvus Horatius contract scripts. The local script needs to be run first, otherwise the cleanup when he quits as result of negative profit does not work properly.
2014-09-18 04:33:49 +02:00
Marc Zinnschlag
19f469c7db
Merge remote-tracking branch 'scrawl/master'
2014-09-14 12:00:14 +02:00
Marc Zinnschlag
d1d861e1be
Merge branch 'run'
...
Conflicts:
apps/opencs/model/world/columns.cpp
apps/opencs/model/world/columns.hpp
apps/opencs/model/world/data.cpp
components/CMakeLists.txt
2014-09-14 11:59:54 +02:00
scrawl
4426b03fa4
Remove some garbage
2014-09-13 22:21:37 +02:00
scrawl
0c273568f2
Increment version number for input configuration
...
Old files are broken by keycode->scancode switch (319f4e0547
)
2014-09-13 21:45:03 +02:00
scrawl
36a90198e2
Add option to change screenshot image format
2014-09-11 04:32:31 +02:00
scrawl
2379c0ada7
Pause frame updates when the window is minimized ( Fixes #1868 )
2014-09-03 04:54:07 +02:00
Marc Zinnschlag
a9df3b53fd
restored --new-game switch
2014-09-01 11:55:12 +02:00
scrawl
2b407a9995
Refactor NIF cache
...
- Remove broken cache locking mechanism
This was supposed to unload NIFFiles after a cell transition completes, but it was never working due to a mistake on the line if (--sLockLevel), should have been if (--sLockLevel == 0). Repairing this would increase load times (NIF files would have to be reloaded more frequently), so just removed it for now.
- Decouple cache from NIFFile (now a new nifcache component)
- Add API for future background loading
- Provide a reliable way (SharedPtr) to hold on to loaded NIFFiles. This will be useful to avoid deep copies of keyframe and text key data, which is currently a performance bottleneck.
2014-08-24 02:37:50 +02:00
scrawl
63cb91db2e
Add --export-fonts command line option
2014-08-11 20:40:02 +02:00
Marc Zinnschlag
d0654f3ade
move starting of startup scripts from engine startup to new game start; also restart all startup scripts on saved game load
2014-07-25 12:17:15 +02:00
Marc Zinnschlag
a3c4000198
moved call to Globalscripts::addStartup out of the constructor because at the time of construction the environment may not be set up yet to perform this operation
2014-07-25 09:36:02 +02:00
Marc Zinnschlag
d87630b41a
blacklisting for scripts in OpenMW
2014-07-21 09:34:10 +02:00
scrawl
326c747508
Don't run scripts when in pause menu ( Fixes #1495 )
2014-06-15 14:18:16 +02:00
scrawl
797134aa51
Handle activation scripts in AiActivate ( Fixes #1478 )
2014-06-13 02:26:52 +02:00
scrawl
41ab7329a8
Store keybindings as keycode, not keyname. Also use SDL_GetKeyName instead of a manually created map. Fixes #1202
...
Note: breaks compatibility with input.xml, so the filename was changed.
2014-06-11 19:47:42 +02:00
scrawl
3b3b53d665
Support animated main menus (menu_background.bik)
...
Closes #1362
2014-05-29 17:24:25 +02:00
scrawl
e68600eda2
Make Activate instruction work properly even when onActivate was not called in the same frame.
...
There are two major differences to the old implementation:
- Activate can now be called on its own, e.g. in the console. In Vanilla this appears to be a no-op, so it is unlikely to be used and the potential for breakage is low.
- The Action to execute is now determined when Activate is called, not when OnActivate is called. This however makes sense, since there may be a time difference between the two, and the object (or the player) could have changed in the meantime, requiring a different Action.
Fixes #1166 and #1346 .
2014-05-28 19:23:50 +02:00
Marc Zinnschlag
6ac700a501
Merge remote-tracking branch 'potatoesmaster/getClass'
2014-05-23 08:00:52 +02:00
Marc Zinnschlag
244eb11651
Merge remote-tracking branch 'greye/widechar'
2014-05-23 07:48:26 +02:00
Emanuel Guevel
1e4a854433
Remove static method MWWorld::Class::get(&Ptr)
...
It was just adding a level of indirection to Ptr.getClass().
All the call were replaced by that instead. The number of lines changed
is important, but the change itself is trivial, so everything should be
fine. :)
2014-05-22 20:50:00 +02:00
greye
8b94e31062
try to set relative path to resources
2014-05-21 15:39:58 +04:00
scrawl
b39b572c5a
Moved mStartupScript to World, so that it is executed for a New game
2014-05-21 09:25:45 +02:00
scrawl
9fe505c8fa
Only run --script-run commands when bypassing the menu
...
Running them while no game is started yet is dangerous, and also leaves bits and pieces of state (e.g. in LocalScripts for scripted items added to inventory) that will not get cleaned up properly when a game is loaded (since when no game was previously running, no cleanup is performed). As a result, dangling MWWorld::Ptrs were left in LocalScripts.
2014-05-20 18:35:17 +02:00
scrawl
d70306382e
Don't create the player object until the game starts
...
Fixes a crash introduced in e591d23
when using --skip-menu=0.
2014-05-16 00:58:12 +02:00
scrawl
6eca5ac4bb
Fixes #1296 : Streamlined cellChanged detection
2014-04-26 07:46:19 +02:00
scrawl
4f852daf45
Don't play company logo when using --skip-menu
2014-03-27 19:59:33 +01:00
scrawl
f2cd37edd0
Play company logo movie
2014-03-27 19:51:48 +01:00
scrawl
5906d795c0
Refactored video player (now a MyGUI widget)
2014-03-27 19:10:15 +01:00
scrawl
2e4ef93b28
Add proper main menu (background image, logo animation, title music)
2014-03-27 15:25:01 +01:00
Marek Kochanowicz
6416ae90d2
Merge branch 'preview' of https://github.com/zinnschlag/openmw into Editor-Dialog
...
Conflicts:
apps/opencs/CMakeLists.txt
apps/opencs/view/world/subviews.cpp
2014-03-19 10:23:15 +01:00
Marc Zinnschlag
7bc97fb8b8
reworked code for player positioning on startup and new game
2014-03-13 13:19:32 +01:00
Marc Zinnschlag
2de862126a
moved resources group creation from Engine to bsa component
2014-03-09 11:42:39 +01:00
scrawl
edb5a54092
Include some more required Ogre headers explicitely.
2014-03-05 21:46:37 +01:00
scrawl
a99aa15d14
Fix a copy&paste mistake leaving start rotation uninitialized
2014-02-28 17:23:58 +01:00
Marc Zinnschlag
4ee43612f6
added new switch: --script-warn
2014-02-02 14:09:59 +01:00
scrawl
49e26415be
Don't call loadGame() from within the MWMechanics::Actors update sequence
2014-02-01 18:42:00 +01:00
Marc Zinnschlag
1b5301eec0
Merge branch 'savedgame'
...
Conflicts:
apps/openmw/mwbase/mechanicsmanager.hpp
apps/openmw/mwbase/soundmanager.hpp
apps/openmw/mwgui/mapwindow.hpp
apps/openmw/mwmechanics/actors.cpp
apps/openmw/mwmechanics/mechanicsmanagerimp.hpp
apps/openmw/mwsound/soundmanagerimp.hpp
components/esm/loadcell.cpp
2014-02-01 18:16:32 +01:00
Marc Zinnschlag
29c3a288e3
load and save of reference in cells (without CustomData state)
2014-01-27 13:27:42 +01:00
scrawl
28185e2017
Death/godmode fixes: Revive player *after* character update, since there might be fall damage.
2014-01-25 15:54:24 +01:00
scrawl
03cf383be7
Merge branch 'master' of https://github.com/zinnschlag/openmw into savedgame
...
Conflicts:
apps/openmw/mwgui/referenceinterface.cpp
apps/openmw/mwmechanics/actors.cpp
apps/openmw/mwmechanics/mechanicsmanagerimp.cpp
apps/openmw/mwmechanics/mechanicsmanagerimp.hpp
apps/openmw/mwscript/cellextensions.cpp
apps/openmw/mwworld/cells.cpp
apps/openmw/mwworld/cells.hpp
apps/openmw/mwworld/cellstore.cpp
apps/openmw/mwworld/store.cpp
apps/openmw/mwworld/worldimp.cpp
2014-01-24 18:28:35 +01:00
scrawl
9b9c39af7a
Fix being able to activate magic bolts mid-flight
2014-01-24 13:22:39 +01:00