]>
git.tdb.fi Git - r2c2.git/log
Mikko Rasa [Sun, 30 Mar 2014 17:22:31 +0000 (20:22 +0300)]
Add a distance metric to turn the routing into an A* search
The original straightforward implementation exploded in complexity much
sooner than I expected. The reasons are not entirely clear, but the
inability to converge states and drop those where the same position was
already reached through a faster path may have something to do with it.
Mikko Rasa [Sun, 30 Mar 2014 17:13:53 +0000 (20:13 +0300)]
Maintain a separate list of pending RoutingStates
Mikko Rasa [Sun, 30 Mar 2014 16:36:47 +0000 (19:36 +0300)]
Check that occupied_track is not null before accessing it
This could only happen if an exception is thrown from TrainRoutingState
constructor, but the resulting segfault can act as a red herring and
distract from the actual cause.
Mikko Rasa [Sun, 30 Mar 2014 13:46:53 +0000 (16:46 +0300)]
Rename is_occupied to is_occupying
This reflects the function's actual purpose better.
Mikko Rasa [Sun, 30 Mar 2014 13:43:54 +0000 (16:43 +0300)]
Make deadlock detection more robust
Deadlock cycles involving more than two trains can now be detected.
Mikko Rasa [Sun, 30 Mar 2014 13:34:03 +0000 (16:34 +0300)]
Be stricter with const qualifiers
Mikko Rasa [Sun, 30 Mar 2014 13:20:28 +0000 (16:20 +0300)]
Continue TrainRoutePlanner refactoring
This moves even more logic into the data structures, and cleans up step
management.
Mikko Rasa [Sun, 30 Mar 2014 12:35:34 +0000 (15:35 +0300)]
Start refactoring TrainRoutePlanner
OOP calls for the logic to be close to the data it uses, so let's put it
there.
Mikko Rasa [Sat, 29 Mar 2014 16:16:51 +0000 (18:16 +0200)]
Filter out non-viable routing steps before adding them to the list
Mikko Rasa [Sat, 29 Mar 2014 15:06:52 +0000 (17:06 +0200)]
Skip arrived trains when updating states in the route planner
Mikko Rasa [Sat, 29 Mar 2014 13:22:22 +0000 (15:22 +0200)]
Utilize maximum speed information in planning routes
Mikko Rasa [Sat, 29 Mar 2014 11:38:11 +0000 (13:38 +0200)]
Assign delay in TrainRoutingState copy-constructor
Mikko Rasa [Wed, 26 Mar 2014 20:44:31 +0000 (22:44 +0200)]
Support waypoints in Timetable
Mikko Rasa [Wed, 26 Mar 2014 20:36:37 +0000 (22:36 +0200)]
Generate an event for reaching each waypoint
Mikko Rasa [Wed, 26 Mar 2014 20:36:00 +0000 (22:36 +0200)]
Emit signal_route_changed when moving to the next route
Mikko Rasa [Wed, 26 Mar 2014 20:33:13 +0000 (22:33 +0200)]
Include destination pointer in the arrival signal
Mikko Rasa [Wed, 26 Mar 2014 20:32:30 +0000 (22:32 +0200)]
Drop waypoints once the train has fully covered them
Mikko Rasa [Wed, 26 Mar 2014 00:12:06 +0000 (02:12 +0200)]
Support routing through multiple waypoints
Currently the result must be valid as a single route. No crossing one's
own path or doubling back from a reversing loop.
Mikko Rasa [Tue, 25 Mar 2014 23:56:27 +0000 (01:56 +0200)]
Adjust terrain pick geometry so it's possible to pick tracks on top of it
Mikko Rasa [Tue, 25 Mar 2014 23:56:00 +0000 (01:56 +0200)]
Report the closest object when picking
Mikko Rasa [Tue, 25 Mar 2014 23:54:01 +0000 (01:54 +0200)]
Also use TrackChains as target locations in Timetable
Mikko Rasa [Tue, 25 Mar 2014 14:56:12 +0000 (16:56 +0200)]
Update zone name after loading
Mikko Rasa [Sun, 23 Mar 2014 16:48:47 +0000 (18:48 +0200)]
Use the TrackChain base class as destination in Router
There's no functional difference between Zones and blocks in this context.
Giving a Route as a destination does not really make sense and may give
unexpected results, but I see no particular reason to exclude them.
Mikko Rasa [Sun, 23 Mar 2014 15:47:44 +0000 (17:47 +0200)]
Add a missing protection specifier
Mikko Rasa [Sun, 23 Mar 2014 13:30:33 +0000 (15:30 +0200)]
Unify TrackChain names
Mikko Rasa [Sun, 23 Mar 2014 13:13:17 +0000 (15:13 +0200)]
Stuff created paths into the list so they can be cleared later
Mikko Rasa [Sat, 22 Mar 2014 08:49:09 +0000 (10:49 +0200)]
Only create a new highlight if the target actually changed
Mikko Rasa [Thu, 20 Mar 2014 22:33:59 +0000 (00:33 +0200)]
Clear destination when setting a null route
Mikko Rasa [Thu, 20 Mar 2014 22:33:13 +0000 (00:33 +0200)]
New timetable system, which works like an actual timetable
Mikko Rasa [Thu, 20 Mar 2014 22:28:50 +0000 (00:28 +0200)]
Add a maximum speed property for vehicle types
Mikko Rasa [Wed, 19 Mar 2014 20:18:37 +0000 (22:18 +0200)]
Implement a departure delay for TrainRouter
Mikko Rasa [Wed, 19 Mar 2014 20:15:57 +0000 (22:15 +0200)]
Set routes created by the planner as temporary
Mikko Rasa [Wed, 19 Mar 2014 17:00:26 +0000 (19:00 +0200)]
GL::Light no longer has a four-argument constructor
Mikko Rasa [Wed, 19 Mar 2014 16:56:01 +0000 (18:56 +0200)]
Save and load clock settings
Mikko Rasa [Wed, 19 Mar 2014 16:51:35 +0000 (18:51 +0200)]
Additional accessors for Clock
Mikko Rasa [Wed, 19 Mar 2014 16:46:42 +0000 (18:46 +0200)]
Display the current time in the main window
Mikko Rasa [Sun, 24 Nov 2013 21:54:30 +0000 (23:54 +0200)]
Render a sky in the upper hemisphere of a view's background
I'll have to do something about the lower hemisphere as well, but this
already makes train views look 46% better.
Mikko Rasa [Sun, 24 Nov 2013 21:45:33 +0000 (23:45 +0200)]
Correct direction of roof viewpoint
Mikko Rasa [Sun, 24 Nov 2013 21:43:13 +0000 (23:43 +0200)]
Pass catalogue reference to Object and Technique loaders
Mikko Rasa [Sun, 24 Nov 2013 21:40:32 +0000 (23:40 +0200)]
Layout3D::get_bounds was broken and not used anywhere, remove it
Mikko Rasa [Sat, 23 Nov 2013 15:36:22 +0000 (17:36 +0200)]
Render ties between rails on tracks
Mikko Rasa [Fri, 22 Nov 2013 19:43:36 +0000 (21:43 +0200)]
Move track appearance properties into a separate class
This will eventually enable tracks with different appearance (such as
Märklin C and K track) to coexist in the same catalogue.
Mikko Rasa [Fri, 22 Nov 2013 12:43:24 +0000 (14:43 +0200)]
Properly round negative elevations
Mikko Rasa [Fri, 22 Nov 2013 11:21:30 +0000 (13:21 +0200)]
Make BeamGate compile with older GCC versions
GCC 4.6 produces ambiguity errors despite the using directive in the class
declaration.
Mikko Rasa [Fri, 22 Nov 2013 11:09:36 +0000 (13:09 +0200)]
Add a terrain object to the catalogue layout
Mikko Rasa [Fri, 22 Nov 2013 11:09:16 +0000 (13:09 +0200)]
Produce more compact saves of terrains
Mikko Rasa [Fri, 22 Nov 2013 11:05:57 +0000 (13:05 +0200)]
Save terrain position and rotation
Mikko Rasa [Fri, 22 Nov 2013 11:05:30 +0000 (13:05 +0200)]
Improve tile axis calculation
Mikko Rasa [Fri, 22 Nov 2013 09:39:23 +0000 (11:39 +0200)]
Add property editing for terrain
Mikko Rasa [Thu, 21 Nov 2013 23:39:13 +0000 (01:39 +0200)]
Ignore beam gates and terrains in shoppinglist
Mikko Rasa [Thu, 21 Nov 2013 23:34:38 +0000 (01:34 +0200)]
Support editing multiple terrain tiles at once
Mikko Rasa [Thu, 21 Nov 2013 23:33:30 +0000 (01:33 +0200)]
Automatically adjust the secondary_axis flag when elevations are changed
Mikko Rasa [Thu, 21 Nov 2013 17:48:50 +0000 (19:48 +0200)]
Edit a single terrain node at a time if shift is held
Mikko Rasa [Thu, 21 Nov 2013 17:41:15 +0000 (19:41 +0200)]
More efficient picking of terrain nodes
Mikko Rasa [Thu, 21 Nov 2013 15:12:12 +0000 (17:12 +0200)]
Add editable terrain objects
These will soon replace the base object in layout. It's still a bit
rough along the edges, especially the editing tool. References to
surface materials are also just a hint of things to come.
Mikko Rasa [Thu, 21 Nov 2013 15:04:25 +0000 (17:04 +0200)]
Add button_release handler to Tool
Mikko Rasa [Thu, 21 Nov 2013 11:42:37 +0000 (13:42 +0200)]
Avoid crash if an object does not have a shape
Mikko Rasa [Wed, 20 Nov 2013 20:52:31 +0000 (22:52 +0200)]
Tweak some dialogs a bit
Mikko Rasa [Wed, 20 Nov 2013 20:23:37 +0000 (22:23 +0200)]
Avoid hogging the serial link with S88 read commands
Mikko Rasa [Wed, 20 Nov 2013 19:52:32 +0000 (21:52 +0200)]
Avoid inserting turnout address zero into routes
Mikko Rasa [Wed, 20 Nov 2013 19:25:11 +0000 (21:25 +0200)]
Avoid advancing to a pending block
This fixes a problem where a train would wait for a turnout to be freed,
then reserve it and immediately advance to it, triggering a false arrival
in the router.
Mikko Rasa [Wed, 20 Nov 2013 12:40:04 +0000 (14:40 +0200)]
Don't attempt to set a turnout to the already active path
Mikko Rasa [Wed, 20 Nov 2013 12:37:12 +0000 (14:37 +0200)]
Fix route choices in RouterPanel
Mikko Rasa [Wed, 20 Nov 2013 12:33:58 +0000 (14:33 +0200)]
Recreate the icons in Blender using faces instead of lines
The OpenGL specification gives implementors enough leeway with line
drawing that they cannot be used for this sort of pixel-scale graphics.
Mikko Rasa [Wed, 20 Nov 2013 11:19:03 +0000 (13:19 +0200)]
Display icons and addresses for signals and beam gates
Mikko Rasa [Wed, 20 Nov 2013 08:32:38 +0000 (10:32 +0200)]
Fix some uninitialized variables
Mikko Rasa [Wed, 20 Nov 2013 08:03:29 +0000 (10:03 +0200)]
Generalize TrackProperties to all object types
Mikko Rasa [Tue, 19 Nov 2013 13:59:06 +0000 (15:59 +0200)]
Make new and erase work on objects rather than just tracks
Mikko Rasa [Tue, 19 Nov 2013 13:56:04 +0000 (15:56 +0200)]
Use any snap nodes without links as boundaries
This makes signals snap to tracks again.
Mikko Rasa [Tue, 19 Nov 2013 06:43:54 +0000 (08:43 +0200)]
Add a missing function for the locomotive import UI
Mikko Rasa [Mon, 18 Nov 2013 18:46:25 +0000 (20:46 +0200)]
Populate the import list when TrainListDialog is created
Mikko Rasa [Mon, 18 Nov 2013 14:44:33 +0000 (16:44 +0200)]
Remember discovered MFX locomotives across runs
Mikko Rasa [Fri, 15 Nov 2013 23:26:27 +0000 (01:26 +0200)]
Use a common implementation for the three different queues
Mikko Rasa [Fri, 15 Nov 2013 23:21:41 +0000 (01:21 +0200)]
Terminate the control thread if ArduControl device is not found
Mikko Rasa [Fri, 15 Nov 2013 23:20:59 +0000 (01:20 +0200)]
Move the sleep in ArduControl baud rate logic to the correct place
Mikko Rasa [Fri, 15 Nov 2013 23:01:39 +0000 (01:01 +0200)]
Implement an UI for importing locomotives from the driver
Mikko Rasa [Fri, 15 Nov 2013 22:44:31 +0000 (00:44 +0200)]
Base the train list item on MultiColumnItem
Mikko Rasa [Thu, 14 Nov 2013 17:29:52 +0000 (19:29 +0200)]
Display protocol in the train list
Mikko Rasa [Wed, 13 Nov 2013 06:28:22 +0000 (08:28 +0200)]
Store and export information about detected MFX locomotives
Mikko Rasa [Wed, 13 Nov 2013 06:19:03 +0000 (08:19 +0200)]
Add interface for importing detected locomotives from the driver
Mikko Rasa [Tue, 12 Nov 2013 19:49:51 +0000 (21:49 +0200)]
Detect and set arducontrol baud rate on startup
Mikko Rasa [Fri, 8 Nov 2013 22:48:59 +0000 (00:48 +0200)]
Add two new locomotives
The 3D models are still rough drafts, especially the BR 96. I'll make
better ones as time permits.
Mikko Rasa [Fri, 8 Nov 2013 19:39:26 +0000 (21:39 +0200)]
Fix and improve logic in MfxSearchTask
Mikko Rasa [Fri, 8 Nov 2013 18:27:18 +0000 (20:27 +0200)]
Move further stuff from the ArduControl main class into Task classes
Mikko Rasa [Fri, 8 Nov 2013 13:06:30 +0000 (15:06 +0200)]
Restructure ArduControl driver into more manageable units
The control thread main function was getting a bit unwieldy at over 200
lines.
Mikko Rasa [Thu, 7 Nov 2013 23:55:29 +0000 (01:55 +0200)]
Add basic MFX support to arducontrol driver
A lot of polishing is still needed. Locomotive discovery in particular
has several deficiencies.
Mikko Rasa [Thu, 7 Nov 2013 22:38:20 +0000 (00:38 +0200)]
Read power state from arducontrol device on startup
Mikko Rasa [Thu, 7 Nov 2013 22:23:32 +0000 (00:23 +0200)]
Add some more range checks in ArduControl and improve existing ones
Mikko Rasa [Thu, 7 Nov 2013 22:01:03 +0000 (00:01 +0200)]
Refer to things in the driver with abstract ids instead of addresses
Since different protocols can and do have overlapping address spaces, the
address alone isn't sufficient to identify a thing. Passing both address
and protocol in every function and signal would make the interface too
complicated.
At the moment only locomotives can have a protocol specified, but there's
no technical reason why other types of things couldn't have different
protocols as well.
Mikko Rasa [Thu, 7 Nov 2013 20:31:50 +0000 (22:31 +0200)]
Rename turnout/sensor_id fields in Track and Block to *_addr
That's what they really are. The *_id names would get in the way of what
I'm going to do next.
Mikko Rasa [Thu, 7 Nov 2013 20:29:56 +0000 (22:29 +0200)]
Use simpler logic when dealing with routes in TrackOffsetIter
Mikko Rasa [Thu, 7 Nov 2013 19:42:24 +0000 (21:42 +0200)]
Break link from the target track too before re-linking
Mikko Rasa [Thu, 7 Nov 2013 18:57:45 +0000 (20:57 +0200)]
Fix a logic error in arducontrol accessory control
Mikko Rasa [Thu, 7 Nov 2013 13:13:01 +0000 (15:13 +0200)]
Use a GLtk::Layout with FloatingArrangement to manage dialogs
Mikko Rasa [Wed, 6 Nov 2013 12:59:45 +0000 (14:59 +0200)]
Consider the expander area's with when autosizing TrainDialog
Mikko Rasa [Wed, 6 Nov 2013 12:59:02 +0000 (14:59 +0200)]
Keep the train list dialog up to date whem trains are added or removed
Mikko Rasa [Thu, 31 Oct 2013 23:10:57 +0000 (01:10 +0200)]
Add driver for my custom Arduino-based control device
Mikko Rasa [Wed, 30 Oct 2013 22:24:08 +0000 (00:24 +0200)]
Some variable cleanup
Mikko Rasa [Wed, 30 Oct 2013 22:21:57 +0000 (00:21 +0200)]
Detect conflicting blocks and avoid creating duplicate sensors
Mikko Rasa [Wed, 30 Oct 2013 22:19:40 +0000 (00:19 +0200)]
Turnout handling fixes
Add the turnout to driver when acquiring automatic id to avoid a key_error
later when removing it. Don't bother connecting to turnout_event signal
if the track is not actually a turnout.