aboutsummaryrefslogtreecommitdiff
path: root/advtrains/models
ModeNameSize
-rw-r--r--advtrains_across.obj13338logplain
-rw-r--r--advtrains_dtrack_bumper_st.b3d32927logplain
-rw-r--r--advtrains_dtrack_bumper_st_30.b3d48546logplain
-rw-r--r--advtrains_dtrack_bumper_st_45.b3d32926logplain
-rw-r--r--advtrains_dtrack_bumper_st_60.b3d48546logplain
-rw-r--r--advtrains_dtrack_cr.b3d28040logplain
-rw-r--r--advtrains_dtrack_cr_30.b3d28043logplain
-rw-r--r--advtrains_dtrack_cr_45.b3d34483logplain
-rw-r--r--advtrains_dtrack_cr_60.b3d34483logplain
-rw-r--r--advtrains_dtrack_st.b3d10712logplain
-rw-r--r--advtrains_dtrack_st_30.b3d20043logplain
-rw-r--r--advtrains_dtrack_st_45.b3d12235logplain
-rw-r--r--advtrains_dtrack_st_60.b3d20043logplain
-rw-r--r--advtrains_dtrack_swlcr.b3d36203logplain
-rw-r--r--advtrains_dtrack_swlcr_30.b3d39958logplain
-rw-r--r--advtrains_dtrack_swlcr_45.b3d41302logplain
-rw-r--r--advtrains_dtrack_swlcr_60.b3d46270logplain
-rw-r--r--advtrains_dtrack_swlst.b3d36203logplain
-rw-r--r--advtrains_dtrack_swlst_30.b3d39958logplain
-rw-r--r--advtrains_dtrack_swlst_45.b3d41302logplain
-rw-r--r--advtrains_dtrack_swlst_60.b3d46270logplain
-rw-r--r--advtrains_dtrack_swrcr.b3d36203logplain
-rw-r--r--advtrains_dtrack_swrcr_30.b3d46270logplain
-rw-r--r--advtrains_dtrack_swrcr_45.b3d41302logplain
-rw-r--r--advtrains_dtrack_swrcr_60.b3d39958logplain
-rw-r--r--advtrains_dtrack_swrst.b3d36203logplain
-rw-r--r--advtrains_dtrack_swrst_30.b3d46270logplain
-rw-r--r--advtrains_dtrack_swrst_45.b3d41302logplain
-rw-r--r--advtrains_dtrack_swrst_60.b3d39958logplain
-rw-r--r--advtrains_dtrack_vst1.obj8757logplain
-rw-r--r--advtrains_dtrack_vst1_45.obj10989logplain
-rw-r--r--advtrains_dtrack_vst2.obj9247logplain
-rw-r--r--advtrains_dtrack_vst2_45.obj11669logplain
-rw-r--r--advtrains_dtrack_vst31.obj8782logplain
-rw-r--r--advtrains_dtrack_vst32.obj9294logplain
-rw-r--r--advtrains_dtrack_vst33.obj9684logplain
-rw-r--r--advtrains_modernwagon.b3d172028logplain
-rw-r--r--advtrains_platform_diag.b3d1970logplain
-rw-r--r--advtrains_retrosignal_off.b3d13093logplain
-rw-r--r--advtrains_retrosignal_off_30.b3d13093logplain
-rw-r--r--advtrains_retrosignal_off_45.b3d13093logplain
-rw-r--r--advtrains_retrosignal_off_60.b3d13093logplain
-rw-r--r--advtrains_retrosignal_on.b3d13093logplain
-rw-r--r--advtrains_retrosignal_on_30.b3d13093logplain
-rw-r--r--advtrains_retrosignal_on_45.b3d13093logplain
-rw-r--r--advtrains_retrosignal_on_60.b3d13093logplain
-rw-r--r--advtrains_signal.b3d61544logplain
-rw-r--r--advtrains_signal_30.b3d61544logplain
-rw-r--r--advtrains_signal_45.b3d61544logplain
-rw-r--r--advtrains_signal_60.b3d61544logplain
-rw-r--r--advtrains_signal_wall_l.b3d40514logplain
-rw-r--r--advtrains_signal_wall_r.b3d40514logplain
-rw-r--r--advtrains_signal_wall_t.b3d40514logplain
-rw-r--r--advtrains_track_cr.b3d8023logplain
-rw-r--r--advtrains_track_st.b3d15831logplain
-rw-r--r--advtrains_track_st_45.b3d8935logplain
-rw-r--r--trackplane.b3d262logplain
com"> section_free = <boolean>, --this can be set by an exit node via mesecons or atlatc, -- or from the tc formspec. } } Track section [id] = { name = "Some human-readable name" tc_breaks = { <signal specifier>,... } -- Bounding TC's (signal specifiers) -- Can be direct ends (auto-detected), conflicting routes or TCBs that are too far away from each other route = { origin = <signal>, -- route origin entry = <sigd>, -- supposed train entry point rsn = <string>, first = <bool> } route_post = { locks = {[n] = <pts>} next = <sigd> } -- Set whenever a route has been set through this TC. It saves the origin tcb id and side -- (=the origin signal). rsn is some description to be shown to the user -- first says whether to clear the routesetting status from the origin signal. -- locks contains the positions where locks are held by this ts. -- 'route' is cleared when train enters the section, while 'route_post' cleared when train leaves section. trains = {<id>, ...} -- Set whenever a train (or more) reside in this TC } Signal specifier (sigd) (a pair of TCB/Side): {p = <pos>, s = <1/2>} Signal Assignments: reverse lookup of signals assigned to TCBs signal_assignments = { [<signal pts>] = <sigd> } ]] -- function ildb.create_tcb(pos) local new_tcb = { [1] = {}, [2] = {}, } local pts = advtrains.roundfloorpts(pos) if not track_circuit_breaks[pts] then track_circuit_breaks[pts] = new_tcb return true else return false end end function ildb.get_tcb(pos) local pts = advtrains.roundfloorpts(pos) return track_circuit_breaks[pts] end function ildb.get_tcbs(sigd) local tcb = ildb.get_tcb(sigd.p) if not tcb then return nil end return tcb[sigd.s] end function ildb.create_ts(sigd) local tcbs = ildb.get_tcbs(sigd) local id = advtrains.random_id() while track_sections[id] do id = advtrains.random_id() end track_sections[id] = { name = "Section "..id, tc_breaks = { sigd } } tcbs.ts_id = id end function ildb.get_ts(id) return track_sections[id] end -- various helper functions handling sigd's local sigd_equal = advtrains.interlocking.sigd_equal local function insert_sigd_nodouble(list, sigd) for idx, cmp in pairs(list) do if sigd_equal(sigd, cmp) then return end end table.insert(list, sigd) end -- This function will actually handle the node that is in connid direction from the node at pos -- so, this needs the conns of the node at pos, since these are already calculated local function traverser(found_tcbs, pos, conns, connid, count, brk_when_found_n) local adj_pos, adj_connid, conn_idx, nextrail_y, next_conns = advtrains.get_adjacent_rail(pos, conns, connid, advtrains.all_tracktypes) if not adj_pos then --atdebug("Traverser found end-of-track at",pos, connid) return end -- look whether there is a TCB here if #next_conns == 2 then --if not, don't even try! local tcb = ildb.get_tcb(adj_pos) if tcb then -- done with this branch --atdebug("Traverser found tcb at",adj_pos, adj_connid) insert_sigd_nodouble(found_tcbs, {p=adj_pos, s=adj_connid}) return end end -- recursion abort condition if count > TRAVERSER_LIMIT then --atdebug("Traverser hit counter at",adj_pos, adj_connid) return true end -- continue traversing local counter_hit = false for nconnid, nconn in ipairs(next_conns) do if adj_connid ~= nconnid then counter_hit = counter_hit or traverser(found_tcbs, adj_pos, next_conns, nconnid, count + 1, brk_when_found_n) if brk_when_found_n and #found_tcbs>=brk_when_found_n then break end end end return counter_hit end -- Merges the TS with merge_id into root_id and then deletes merge_id local function merge_ts(root_id, merge_id) local rts = ildb.get_ts(root_id) local mts = ildb.get_ts(merge_id)