function data() return { boundingInfo = { bbMax = { 15.94, 1.1466519832611, 4.7869329452515, }, bbMin = { -15.94, -1.396271944046, -0.05799201130867 }, }, collider = { params = { }, type = "MESH", }, lods = { { animations = { }, children = { { id = "vehicle/tram/citadis302_lod_0_connector.grp", transf = { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 8.818, 0, 0, 1, }, type = "GROUP", }, { id = "vehicle/tram/citadis302_lod_0_connector.grp", transf = { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.3675, 0, 0, 1, }, type = "GROUP", }, { id = "vehicle/tram/citadis302_lod_0_connector.grp", transf = { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -2.3678, 0, 0, 1, }, type = "GROUP", }, { id = "vehicle/tram/citadis302_lod_0_connector.grp", transf = { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -8.84, 0, 0, 1, }, type = "GROUP", }, { id = "vehicle/tram/citadis302_lod_0_mid_back.grp", transf = { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -5.5752, 0, 0, 1, }, type = "GROUP", }, { id = "vehicle/tram/citadis302_lod_0_mid_front.grp", transf = { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 5.6225, 0, 0, 1, }, type = "GROUP", }, { id = "vehicle/tram/citadis302_lod_0_back.grp", transf = { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -12.39457, 0, 0, 1, }, type = "GROUP", }, { id = "vehicle/tram/citadis302_lod_0_mid.grp", transf = { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, }, type = "GROUP", }, { id = "vehicle/tram/citadis302_lod_0_front.grp", transf = { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 12.37118, 0, 0, 1, }, type = "GROUP", }, }, events = { open_all_doors = { [5] = { forward = true, name = "open_all_doors", }, [6] = { forward = true, name = "open_all_doors", }, [7] = { forward = true, name = "open_all_doors", }, [9] = { forward = true, name = "open_all_doors", }, }, close_all_doors = { [5] = { forward = false, name = "open_all_doors", }, [6] = { forward = false, name = "open_all_doors", }, [7] = { forward = false, name = "open_all_doors", }, [9] = { forward = false, name = "open_all_doors", }, }, matConfigs = { { 0, 0, 0, 0, 0, 0, 0, 0, 0, }, }, static = false, visibleFrom = 0, visibleTo = 1510, }, }, metadata = { description = { name = _("Citadis 302"), description = _("The Citadis is a family of low-floor trams (streetcars) and light rail vehicles built by Alstom. More than 1140 Citadis trams are in use in over 28 cities. Citadis 302 has five sections and 100% low floor.") }, }, railVehicle = { configs = { { axles = { "vehicle/tram/citadis302/lod_0_w1.msh", "vehicle/tram/citadis302/lod_0_w0.msh", }, fakeBogies = { { group = 1, offset = -2.0452001094818, position = 11.701299667358, }, { group = 1, offset = 1.8502999544144, position = 5.8449997901917, }, { group = 3, offset = -1.8006000518799, position = 5.8449997901917, }, { group = 3, offset = 2.0186998844147, position = 0, }, { group = 5, offset = -2.0269000530243, position = 0, }, { group = 5, offset = 1.8006000518799, position = -5.8449997901917, }, { group = 7, offset = -1.8502999544144, position = -5.8449997901917, }, { group = 7, offset = 2.039400100708, position = -11.701299667358, }, }, }, }, transportVehicle = { capacities = { { capacity = 192, type = "PASSENGERS", }, }, }, carrier = "RAIL", loadSpeed = 10, multipleUnitOnly = true }, seats = { -- Сидячие { group =42 , transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.12374, 0.85, 0.50)) }, { group =42 , transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.12374, 0.45, 0.50)) }, { group =42 , transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.12374, -0.45, 0.50)) }, { group =42 , transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.12374, -0.85, 0.50)) }, { group =42 , transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-0.73166, 0.85, 0.50)) }, { group =42 , transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-0.73166, 0.45, 0.50)) }, { group =42 , transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-0.73166, -0.45, 0.50)) }, { group =42 , transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-0.73166, -0.85, 0.50)) }, { group =42 , transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.54541, 0.85, 0.50)) }, { group =42 , transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.54541, 0.45, 0.50)) }, { group =42 , transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.54541, -0.45, 0.50)) }, { group =42 , transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.54541, -0.85, 0.50)) }, { group =42 , transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-2.34433, 0.85, 0.50)) }, { group =42 , transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-2.34433, 0.45, 0.50)) }, { group =42 , transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-2.34433, -0.45, 0.50)) }, { group =42 , transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-2.34433, -0.85, 0.50)) }, { group =42 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(0.84577, 0.83, 0.33)), standing=true }, { group =42 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(1.33323, 0.55, 0.33)), standing=true }, { group =42 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(1.14605, -0.35, 0.33)), standing=true }, { group =42 , transf = transf.rotZYXTransl(transf.degToRad(35.0, 0.0, 0.0), vec3.new(-1.2868, -0.09, 0.33)), standing=true }, { group =42 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(-3.04158, 0.27, 0.33)), standing=true }, { group =42 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(-3.04158, 0.27, 0.33)), standing=true }, -- mid front { group =19 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(-0.66, 0.85, 0.33)) }, { group =19 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(-0.21, 0.85, 0.33)) }, { group =19 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(0.21, 0.85, 0.33)) }, { group =19 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(0.66, 0.85, 0.33)) }, { group =19 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(-0.66, -0.85, 0.33)) }, { group =19 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(-0.21, -0.85, 0.33)) }, { group =19 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(0.21, -0.85, 0.33)) }, { group =19 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(0.66, -0.85, 0.33)) }, { group =19 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(-2.15459, 0.41, 0.33)), standing=true }, { group =19 , transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.26125, 0.72, 0.33)), standing=true }, { group =19 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(-1.74241, -0.21, 0.33)), standing=true }, { group =19 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(-0.68641, -0.20, 0.33)), standing=true }, { group =19 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(-0.68641, -0.20, 0.33)), standing=true }, { group =19 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(0.15977, -0.20, 0.33)), standing=true }, { group =19 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(0.7815, -0.20, 0.33)), standing=true }, { group =19 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(-0.29706, 0.31, 0.33)), standing=true }, { group =19 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(-0.45909, 0.31, 0.33)), standing=true }, { group =19 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(1.29393, 0.61, 0.33)), standing=true }, { group =19 , transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(2.07155, 0.41, 0.33)), standing=true }, { group =19 , transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(2.43085, -0.44, 0.33)), standing=true }, -- mid back { group =9 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(-0.66, 0.85, 0.33)) }, { group =9 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(-0.21, 0.85, 0.33)) }, { group =9 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(0.21, 0.85, 0.33)) }, { group =9 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(0.66, 0.85, 0.33)) }, { group =9 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(-0.66, -0.85, 0.33)) }, { group =9 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(-0.21, -0.85, 0.33)) }, { group =9 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(0.21, -0.85, 0.33)) }, { group =9 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(0.66, -0.85, 0.33)) }, { group =9 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(-2.15459, 0.41, 0.33)), standing=true }, { group =9 , transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.26125, 0.72, 0.33)), standing=true }, { group =9 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(-1.74241, -0.21, 0.33)), standing=true }, { group =9 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(-0.68641, -0.20, 0.33)), standing=true }, { group =9 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(-0.68641, -0.20, 0.33)), standing=true }, { group =9 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(0.15977, -0.20, 0.33)), standing=true }, { group =9 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(0.7815, -0.20, 0.33)), standing=true }, { group =9 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(-0.29706, 0.31, 0.33)), standing=true }, { group =9 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(-0.45909, 0.31, 0.33)), standing=true }, { group =9 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(1.29393, 0.61, 0.33)), standing=true }, { group =9 , transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(2.07155, 0.41, 0.33)), standing=true }, { group =9 , transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(2.43085, -0.44, 0.33)), standing=true }, --mid { group =37 , transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.17803, 0.85, 0.50)) }, { group =37 , transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.17803, 0.45, 0.50)) }, { group =37 , transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.17803, -0.45, 0.50)) }, { group =37 , transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.17803, -0.85, 0.50)) }, { group =37 , transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(0.34697, 0.85, 0.50)) }, { group =37 , transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(0.34697, 0.45, 0.50)) }, { group =37 , transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(0.34697, -0.45, 0.50)) }, { group =37 , transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(0.34697, -0.85, 0.50)) }, { group =37 , transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-0.45696, 0.85, 0.50)) }, { group =37 , transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-0.45696, 0.45, 0.50)) }, { group =37 , transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-0.45696, -0.45, 0.50)) }, { group =37 , transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-0.45696, -0.85, 0.50)) }, { group =37 , transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-1.25607, 0.85, 0.50)) }, { group =37 , transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-1.25607, 0.45, 0.50)) }, { group =37 , transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-1.25607, -0.45, 0.50)) }, { group =37 , transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-1.25607, -0.85, 0.50)) }, --back { group =29 , transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-0.09557, 0.85, 0.50)) }, { group =29 , transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-0.09557, 0.45, 0.50)) }, { group =29 , transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-0.09557, -0.45, 0.50)) }, { group =29 , transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-0.09557, -0.85, 0.50)) }, { group =29 , transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.75344, 0.85, 0.50)) }, { group =29 , transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.75344, 0.45, 0.50)) }, { group =29 , transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.75344, -0.45, 0.50)) }, { group =29 , transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.75344, -0.85, 0.50)) }, { group =29 , transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(1.53496, 0.85, 0.50)) }, { group =29 , transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(1.53496, 0.45, 0.50)) }, { group =29 , transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(1.53496, -0.45, 0.50)) }, { group =29 , transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(1.53496, -0.85, 0.50)) }, { group =29 , transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(2.36237, 0.85, 0.50)) }, { group =29 , transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(2.36237, 0.45, 0.50)) }, { group =29 , transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(2.36237, -0.45, 0.50)) }, { group =29 , transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(2.36237, -0.85, 0.50)) }, { group =29 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(-1.25286, -0.35, 0.33)), standing=true }, { group =29 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(-0.684, 0.19, 0.33)), standing=true }, { group =29 , transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.54055, 0.80, 0.33)), standing=true }, } }, availability = { yearFrom = 2005, -- yearTo = 0 }, cost = { price = -1 }, maintenance = { lifespan = 35, runningCosts = -1, }, }, } end