Files
vr-configurator/vr-configurator/Assets/Scripts/Models/ModelList.cs
FlorianSpeicher 976ee74b94 Fix name
2025-07-21 00:20:29 +02:00

451 lines
39 KiB
C#

using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// This class holds all Model Definitions that will be used in the ModelManager
/// Is Planned to be replaced with a JSON Serializer
/// </summary>
public class ModelList
{
public static readonly List<BaseModel> BaseModels = new List<BaseModel>()
{
new BaseModel(
"Bike",
"bike",
new Mesh(),
Resources.Load<Material>($"Material/AluminiumPolished"),
new Vector3(0, -1.065f, 1f),
Quaternion.Euler(0, 90f, 0),
new Vector3(1.5f, 1.5f, 1.5f), // scale up the model
new List<Port>
{
Port.Choosable("Back Frame", PortDef.BIKE_FRAME, "idBikeAttachments", Vector3.zero),
Port.Choosable("Frame", PortDef.BIKE_FRAME2, "idBikeFrame", Vector3.zero),
Port.Hidden(PortDef.BIKE_SPROCKET, "idBikeSprocket", new Vector3(0.007933f, 0.444f, -0.1614f), Quaternion.identity, 1f, new Vector3(0.5f, 0f, 0f)),
Port.Hidden(PortDef.BIKE_PEDAL_L, "idBikePedalL", new Vector3(-0.1252177f, 0.5490288f, -0.312027f), Quaternion.identity, 1f, new Vector3(-0.5f, 0f, 0f)),
Port.Hidden(PortDef.BIKE_PEDAL_R, "idBikePedalR", new Vector3(0.1410843f, 0.3393247f, -0.01154391f), Quaternion.identity, 1f, new Vector3(0.5f, 0f, 0f)),
Port.Choosable("Handlebars", PortDef.BIKE_STEER, "idBikeHandlebars", new Vector3(0.002989591f, 1.214713f, 0.4860705f), Quaternion.Euler(-30f, 0f, 0f), 1f, new Vector3(0f, 0.5f, 1f)),
Port.Choosable("Back Rim", PortDef.BIKE_RIM, "idBikeRim_Back", new Vector3(-0.01431298f, 0.4673222f, -0.7874681f), Quaternion.identity, 1f, new Vector3(0f, 0f, -0.6f)),
Port.Hidden(PortDef.BIKE_TIRE, "idBikeTire_Back", new Vector3(-0.01431298f, 0.4673222f, -0.7874681f), Quaternion.identity, 1f, new Vector3(0f, 0f, -0.6f)),
Port.Choosable("Front Rim", PortDef.BIKE_RIM_FRONT, "idBikeRim_Front", new Vector3(0.01984263f, 0.4673225f, 0.9462124f), Quaternion.identity, 1f, new Vector3(0f, 0f, 0.6f)),
Port.Hidden(PortDef.BIKE_TIRE_FRONT, "idBikeTire_Front", new Vector3(0.01984263f, 0.4673225f, 0.9462124f), Quaternion.identity, 1f, new Vector3(0f, 0f, 0.6f)),
}
),
new BaseModel(
"ERL-Bach",
"erlbach",
Resources.Load<Mesh>("Model/ERLbach/ERLBach_mit_Fenster"),
Resources.Load<Material>($"Material/PVC"),
new Vector3(0, 0, 4f), //big car needs big space
Quaternion.Euler(-90f, 0, 0f), //rotate correctly
new Vector3(0.03f,0.03f,0.03f), //because model is too big in space
new List<Port>
{
Port.Hidden(PortDef.ERL_CAP_3, "idErlbachPart3", Vector3.zero, Quaternion.identity, 1f, new Vector3(0f, 0f, 20f)),
Port.Hidden(PortDef.ERL_CAP_4, "idErlbachPart4", Vector3.zero, Quaternion.identity, 1f, new Vector3(0f, 0f, 20f)),
Port.Hidden(PortDef.ERL_CAP_5, "idErlbachPart5", Vector3.zero, Quaternion.identity, 1f, new Vector3(0f, 0f, 20f)),
Port.Hidden(PortDef.ERL_CAP_6, "idErlbachPart6", Vector3.zero, Quaternion.identity, 1f, new Vector3(0f, 0f, 20f)),
Port.Hidden(PortDef.ERL_CAP_7, "idErlbachPart7", Vector3.zero, Quaternion.identity, 1f, new Vector3(0f, 0f, 20f)),
Port.Hidden(PortDef.ERL_CAP_8, "idErlbachPart8", Vector3.zero, Quaternion.identity, 1f, new Vector3(0f, 0f, 20f)),
Port.Hidden(PortDef.ERL_CAP_9, "idErlbachPart9", Vector3.zero, Quaternion.identity, 1f, new Vector3(0f, 0f, 20f)),
Port.Hidden(PortDef.ERL_CAP_10, "idErlbachPart10", Vector3.zero, Quaternion.identity, 1f, new Vector3(0f, 0f, 20f)),
Port.Hidden(PortDef.ERL_CAP_11, "idErlbachPart11", Vector3.zero, Quaternion.identity, 1f, new Vector3(0f, 0f, 20f)),
Port.Hidden(PortDef.ERL_CAP_12, "idErlbachPart12", Vector3.zero, Quaternion.identity, 1f, new Vector3(0f, 0f, 20f)),
Port.Hidden(PortDef.ERL_CAP_13, "idErlbachPart13", Vector3.zero, Quaternion.identity, 1f, new Vector3(0f, 0f, 20f)),
Port.Hidden(PortDef.ERL_CAP_14, "idErlbachPart14", Vector3.zero, Quaternion.identity, 1f, new Vector3(0f, 0f, 20f)),
Port.Hidden(PortDef.ERL_CAP_15, "idErlbachPart15", Vector3.zero, Quaternion.identity, 1f, new Vector3(0f, 0f, 20f)),
Port.Hidden(PortDef.ERL_CAP_16, "idErlbachPart16", Vector3.zero, Quaternion.identity, 1f, new Vector3(0f, 0f, 20f)),
Port.Hidden(PortDef.ERL_CAP_17, "idErlbachPart17", Vector3.zero, Quaternion.identity, 1f, new Vector3(0f, 0f, 20f)),
Port.Choosable("Cables", PortDef.ERL_CABLES, "erlCables_1", Vector3.zero, Quaternion.identity),
Port.Hidden(PortDef.ERL_CAP_39, "idErlbachPart39", Vector3.zero, Quaternion.identity, 1f, new Vector3(0f, 0f, 20f)),
Port.Hidden(PortDef.ERL_CAP_40, "idErlbachPart40", Vector3.zero, Quaternion.identity, 1f, new Vector3(0f, 0f, 20f)),
Port.Hidden(PortDef.ERL_BASEPLATE, "idErlbachBody_BasePlate", Vector3.zero, Quaternion.identity, 1f, Vector3.zero),
Port.Hidden(PortDef.ERL_BASEPLATE_FRONT, "idErlbachPart75", Vector3.zero, Quaternion.identity, 1f, new Vector3(0f, 0f, 0f)),
Port.Choosable("Battery",PortDef.ERL_BATBOX, "idErlbachBatBox_Big", Vector3.zero, Quaternion.identity, 1f, new Vector3(0f, 0f, 50f)),
Port.Hidden(PortDef.ERL_PLATINE, "idErlbachPart77", Vector3.zero, Quaternion.identity, 1f, new Vector3(0f, 0f, 30f)),
Port.Hidden(PortDef.ERL_ROD_78, "idErlbachPart78", Vector3.zero),
Port.Hidden(PortDef.ERL_ROD_79, "idErlbachPart79", Vector3.zero),
Port.Hidden(PortDef.ERL_TIRE_LH, "erlTire1_LH", Vector3.zero, Quaternion.identity, 1f, new Vector3(0f, -30f, 0f)),
Port.Hidden(PortDef.ERL_TIRE_LV, "erlTire1_LV", Vector3.zero, Quaternion.identity, 1f, new Vector3(0f, -30f, 0f)),
Port.Hidden(PortDef.ERL_TIRE_RH, "erlTire1_RH", Vector3.zero, Quaternion.identity, 1f, new Vector3(0f, 30f, 0f)),
Port.Hidden(PortDef.ERL_TIRE_RV, "erlTire1_RV", Vector3.zero, Quaternion.identity, 1f, new Vector3(0f, 30f, 0f)),
Port.Choosable("Rims", PortDef.ERL_RIMS, "erlRims_1", Vector3.zero, Quaternion.identity, 1f),
Port.Choosable("Body", PortDef.ERL_BODY, "idErlbachPart84", Vector3.zero, Quaternion.identity, 1f, new Vector3(0f, 0f, 100f)),
Port.Choosable("Rear Bumper", PortDef.ERL_BUMPER_BACK, "idErlbachPart85", Vector3.zero, Quaternion.identity, 1f, new Vector3(20f, 0f, 0f)),
Port.Choosable("Front Bumper", PortDef.ERL_DRL_OUTLINE, "idErlbachPart86", new Vector3(2.1f, 0f, 0f), Quaternion.identity, 1f, new Vector3(-10f, 0f, 0f)),
Port.Hidden(PortDef.ERL_BADGE, "idErlbachPart87", Vector3.zero, Quaternion.identity, 1f, new Vector3(50f, 0f, 0f)),
Port.Hidden(PortDef.ERL_LP_BASE, "idErlbachPart88", Vector3.zero, Quaternion.identity, 1f, new Vector3(20f, 0f, 0f)),
Port.Choosable("License Plate", PortDef.ERL_LP_TC, "erlLP", Vector3.zero, Quaternion.identity, 1f, new Vector3(20f, 0f, 0f)),
Port.Choosable("Grill", PortDef.ERL_GRILL, "erlGrill_1", Vector3.zero, Quaternion.identity, 1f, new Vector3(-20f, 0f, 0f)),
Port.Choosable("Headlight Cover", PortDef.ERL_BUMPER_FRONT, "idErlbachPart92", new Vector3(2.4f, 0f, -5.1f), Quaternion.identity, 1f, new Vector3(-20f, 0f, 0f)),
Port.Hidden(PortDef.ERL_DRL_PLATE, "idErlbachPart93", new Vector3(2.1f, 0f, -5.3f), Quaternion.identity, 1f, new Vector3(-20f, 0f, 0f)),
Port.Choosable("Window", PortDef.ERL_WINDOW, "idErlbachWindow", Vector3.zero, Quaternion.identity, 1f, new Vector3(0f, 0f, 100f)),
}
)
};
public static readonly List<ChildModel> ChildModels = new List<ChildModel>()
{
//Felgensets
new ChildModel(
PortDef.ERL_RIMS,
"Normal Rims",
"erlRims_1",
Resources.Load<Material>($"Material/AluminiumScratched"),
Vector3.zero, // offset to the port
Quaternion.identity,
Vector3.one,
new List<Port>
{
Port.Hidden(PortDef.ERL_RIM_LH, "erlRim1_LH", Vector3.zero, Quaternion.identity, 1f, new Vector3(0f, -30f, 0f)),
Port.Hidden(PortDef.ERL_RIM_LV, "erlRim1_LV", Vector3.zero, Quaternion.identity, 1f, new Vector3(0f, -30f, 0f)),
Port.Hidden(PortDef.ERL_RIM_RH, "erlRim1_RH", Vector3.zero, Quaternion.identity, 1f, new Vector3(0f, 30f, 0f)),
Port.Hidden(PortDef.ERL_RIM_RV, "erlRim1_RV", Vector3.zero, Quaternion.identity, 1f, new Vector3(0f, 30f, 0f)),
},
ModelListHelper.ColorAluminiumScratched,
true
),
new ChildModel(
PortDef.ERL_RIMS,
"Sport Rims",
"erlRims_2",
Resources.Load<Material>($"Material/AluminiumScratched"),
Vector3.zero, // offset to the port
Quaternion.identity,
Vector3.one,
new List<Port>
{
Port.Hidden(PortDef.ERL_RIM_LH, "erlRim2_LH", Vector3.zero, Quaternion.identity, 1f, new Vector3(0f, -30f, 0f)),
Port.Hidden(PortDef.ERL_RIM_LV, "erlRim2_LV", Vector3.zero, Quaternion.identity, 1f, new Vector3(0f, -30f, 0f)),
Port.Hidden(PortDef.ERL_RIM_RH, "erlRim2_RH", Vector3.zero, Quaternion.identity, 1f, new Vector3(0f, 30f, 0f)),
Port.Hidden(PortDef.ERL_RIM_RV, "erlRim2_RV", Vector3.zero, Quaternion.identity, 1f, new Vector3(0f, 30f, 0f)),
},
ModelListHelper.ColorAluminiumScratched,
true
),
new ChildModel(
PortDef.ERL_RIMS,
"Elegance Rims",
"erlRims_3",
Resources.Load<Material>($"Material/AluminiumScratched"),
Vector3.zero, // offset to the port
Quaternion.identity,
Vector3.one,
new List<Port>
{
Port.Hidden(PortDef.ERL_RIM_LH, "erlRim3_LH", Vector3.zero, Quaternion.identity, 1f, new Vector3(0f, -30f, 0f)),
Port.Hidden(PortDef.ERL_RIM_LV, "erlRim3_LV", Vector3.zero, Quaternion.identity, 1f, new Vector3(0f, -30f, 0f)),
Port.Hidden(PortDef.ERL_RIM_RH, "erlRim3_RH", Vector3.zero, Quaternion.identity, 1f, new Vector3(0f, 30f, 0f)),
Port.Hidden(PortDef.ERL_RIM_RV, "erlRim3_RV", Vector3.zero, Quaternion.identity, 1f, new Vector3(0f, 30f, 0f)),
},
ModelListHelper.ColorAluminiumScratched,
true
),
// Sport
new ChildModel(
PortDef.ERL_RIM_RH,
"Sport Rim",
"erlRim2_RH",
Resources.Load<Mesh>($"Model/ERLbach/Felge1"),
Resources.Load<Material>($"Material/AluminiumScratched"),
new Vector3(59.25f, 65f, -14f), // offset to the port
Quaternion.Euler(-180, 0, 0),
new Vector3(1f, 1f, 1f),
null,
ModelListHelper.ColorAluminiumScratched
),
new ChildModel(
PortDef.ERL_RIM_RV,
"Sport Rim",
"erlRim2_RV",
Resources.Load<Mesh>($"Model/ERLbach/Felge1"),
Resources.Load<Material>($"Material/AluminiumScratched"),
new Vector3(-104.75f, 65f, -14.3f), // offset to the port
Quaternion.Euler(-180, 0, 0),
new Vector3(1f, 1f, 1f),
null,
ModelListHelper.ColorAluminiumScratched
),
new ChildModel(
PortDef.ERL_RIM_LV,
"Sport Rim",
"erlRim2_LV",
Resources.Load<Mesh>($"Model/ERLbach/Felge1"),
Resources.Load<Material>($"Material/AluminiumScratched"),
new Vector3(-105.32f, -44f, -14f), // offset to the port
Quaternion.Euler(0, 0, 0),
new Vector3(1f, 1f, 1f),
null,
ModelListHelper.ColorAluminiumScratched
),
new ChildModel(
PortDef.ERL_RIM_LH,
"Sport Rim",
"erlRim2_LH",
Resources.Load<Mesh>($"Model/ERLbach/Felge1"),
Resources.Load<Material>($"Material/AluminiumScratched"),
new Vector3(59.4f, -43.07f, -14.09f), // offset to the port
Quaternion.Euler(0, 0, 0),
new Vector3(1f, 1f, 1f),
null,
ModelListHelper.ColorAluminiumScratched
),
// Elegance
new ChildModel(
PortDef.ERL_RIM_RH,
"Elegance Rim",
"erlRim3_RH",
Resources.Load<Mesh>($"Model/ERLbach/Felge3"),
Resources.Load<Material>($"Material/AluminiumScratched"),
new Vector3(59.25f, 65f, -14f), // offset to the port
Quaternion.Euler(-180, 0, 0),
new Vector3(1f, 1f, 1f),
null,
ModelListHelper.ColorAluminiumScratched
),
new ChildModel(
PortDef.ERL_RIM_RV,
"Elegance Rim",
"erlRim3_RV",
Resources.Load<Mesh>($"Model/ERLbach/Felge3"),
Resources.Load<Material>($"Material/AluminiumScratched"),
new Vector3(-105f, 65f, -14f), // offset to the port
Quaternion.Euler(-180, 0, 0),
new Vector3(1f, 1f, 1f),
null,
ModelListHelper.ColorAluminiumScratched
),
new ChildModel(
PortDef.ERL_RIM_LV,
"Elegance Rim",
"erlRim3_LV",
Resources.Load<Mesh>($"Model/ERLbach/Felge3"),
Resources.Load<Material>($"Material/AluminiumScratched"),
new Vector3(-105.5f, -44f, -14f), // offset to the port
Quaternion.Euler(0, 0, 0),
new Vector3(1f, 1f, 1f),
null,
ModelListHelper.ColorAluminiumScratched
),
new ChildModel(
PortDef.ERL_RIM_LH,
"Elegance Rim",
"erlRim3_LH",
Resources.Load<Mesh>($"Model/ERLbach/Felge3"),
Resources.Load<Material>($"Material/AluminiumScratched"),
new Vector3(59f, -45.5f, -14f), // offset to the port
Quaternion.Euler(-180, 0, 0),
new Vector3(1f, 1f, 1f),
null,
ModelListHelper.ColorAluminiumScratched
),
// GRILL
new ChildModel(
PortDef.ERL_GRILL,
"Elegance Grill",
"erlGrill_2",
Resources.Load<Mesh>("Model/ERLbach/Grill1"),
Resources.Load<Material>("Material/AluminiumBrushed"),
new Vector3(-142.5f, -34.3f, 24f), // offset to the port new Vector3(2.5f, 0f, -0.5f)
Quaternion.Euler(0f, 180f, -90f), // no rotation
new Vector3(1f, 1f, 1f), // scale
null, // no children
ModelListHelper.ColorAluminiumBrushed // default colors
),
new ChildModel(
PortDef.ERL_LP_TC,
"License Plate",
"erlLP",
Resources.Load<Material>("Material/Universal"),
Vector3.zero,
Quaternion.Euler(0f, 0f, 0f), // no rotation
new Vector3(1f, 1f, 1f),
new List<Port>
{
Port.Hidden(PortDef.ERL_LP_TEXT, "idErlbachPart89", Vector3.zero, Quaternion.identity),
Port.Hidden(PortDef.ERL_LP_COUNTRY, "idErlbachPart90", Vector3.zero, Quaternion.identity),
},
ModelListHelper.ColorLicensePlate,
true
),
new ChildModel(
PortDef.ERL_CABLES,
"Plastic Cables",
"erlCables_1",
Resources.Load<Material>("Material/PlasticCable"),
Vector3.zero,
Quaternion.Euler(0f, 0f, 0f), // no rotation
new Vector3(1f, 1f, 1f),
ModelListHelper.PortsErlCables,
null, //no color
true
),
new ChildModel(
PortDef.ERL_CABLES,
"Metal Cables",
"erlCables_2",
Resources.Load<Material>("Material/AluminiumBrushed"),
Vector3.zero,
Quaternion.Euler(0f, 0f, 0f), // no rotation
new Vector3(1f, 1f, 1f),
ModelListHelper.PortsErlCables,
null, //no color
true
),
new ChildModel(
PortDef.ERL_BATBOX,
"Small Battery",
"erlBatBox_2",
Resources.Load<Mesh>("Model/ERLbach/BatteryBox_0.5"),
Resources.Load<Material>("Material/PVC"),
new Vector3(-1f, 2f, 0f), // offset to the port
Quaternion.Euler(0f, 0f, 0f), // no rotation
new Vector3(1.1f, 2f, 0.7f), // scale
null, // ports
null
),
};
static ModelList()
{
/*
* ██████ ██ ██ ██ ███████
* ██ ██ ██ ██ ██ ██
* ██████ ██ █████ █████
* ██ ██ ██ ██ ██ ██
* ██████ ██ ██ ██ ███████
*/
ModelLoader.LoadChildFromPackedModel(ChildModels,
new List<ModelElement>
{
new ModelElement(PortDef.BIKE_FRAME, "Back Frame", "idBikeAttachments", Resources.Load<Material>($"Material/AluminiumPolished"), Vector3.zero, Quaternion.identity, Vector3.one, null, ModelListHelper.ColorAluminiumPolished),
new ModelElement(PortDef.BIKE_FRAME2, "Frame", "idBikeFrame", Resources.Load<Material>($"Material/AluminiumPolished"), Vector3.zero, Quaternion.identity, Vector3.one, null, ModelListHelper.ColorAluminiumPolished),
new ModelElement(PortDef.BIKE_SPROCKET, "Sprocket", "idBikeSprocket", Resources.Load<Material>($"Material/AluminiumBrushed"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.BIKE_PEDAL_L, "Left Pedal", "idBikePedalL", Resources.Load<Material>($"Material/PVC"), Vector3.zero, Quaternion.identity, Vector3.one, null, ModelListHelper.ColorPVC),
new ModelElement(PortDef.BIKE_PEDAL_R, "Right Pedal", "idBikePedalR", Resources.Load<Material>($"Material/PVC"), Vector3.zero, Quaternion.identity, Vector3.one, null, ModelListHelper.ColorPVC),
new ModelElement(PortDef.BIKE_STEER, "Handlebars", "idBikeHandlebars", Resources.Load<Material>($"Material/AluminiumScratched"), Vector3.zero, Quaternion.identity, Vector3.one, null, ModelListHelper.ColorAluminiumScratched),
new ModelElement(PortDef.BIKE_RIM, "Back Rim", "idBikeRim_Back", Resources.Load<Material>($"Material/AluminiumPolished"), Vector3.zero, Quaternion.identity, Vector3.one, null, ModelListHelper.ColorAluminiumPolished),
new ModelElement(PortDef.BIKE_TIRE, "Back Tire", "idBikeTire_Back", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.BIKE_RIM_FRONT, "Front Rim", "idBikeRim_Front", Resources.Load<Material>($"Material/AluminiumPolished"), Vector3.zero, Quaternion.identity, Vector3.one, null, ModelListHelper.ColorAluminiumPolished),
new ModelElement(PortDef.BIKE_TIRE_FRONT, "Front Tire", "idBikeTire_Front", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null)
},
Resources.LoadAll<Mesh>($"Model/Bicycle/Models/Low-Poly Bicycle"),
0);
/*
* ███████ ██████ ██ ██████ █████ ██████ ██ ██
* ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
* █████ ██████ ██ █████ ██████ ███████ ██ ███████
* ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
* ███████ ██ ██ ███████ ██████ ██ ██ ██████ ██ ██
*/
ModelLoader.LoadChildFromPackedModel(ChildModels,
new List<ModelElement>
{
new ModelElement(PortDef.ERL_CABLE_1, "Erlbach Part 1", "idErlbachPart1", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_2, "Erlbach Part 2", "idErlbachPart2", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CAP_3, "Erlbach Part 3", "idErlbachPart3", Resources.Load<Material>($"Material/AluminiumBrushed"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CAP_4, "Erlbach Part 4", "idErlbachPart4", Resources.Load<Material>($"Material/AluminiumBrushed"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CAP_5, "Erlbach Part 5", "idErlbachPart5", Resources.Load<Material>($"Material/AluminiumBrushed"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CAP_6, "Erlbach Part 6", "idErlbachPart6", Resources.Load<Material>($"Material/AluminiumBrushed"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CAP_7, "Erlbach Part 7", "idErlbachPart7", Resources.Load<Material>($"Material/AluminiumBrushed"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CAP_8, "Erlbach Part 8", "idErlbachPart8", Resources.Load<Material>($"Material/AluminiumBrushed"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CAP_9, "Erlbach Part 9", "idErlbachPart9", Resources.Load<Material>($"Material/AluminiumBrushed"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CAP_10, "Erlbach Part 10", "idErlbachPart10", Resources.Load<Material>($"Material/AluminiumBrushed"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CAP_11, "Erlbach Part 11", "idErlbachPart11", Resources.Load<Material>($"Material/AluminiumBrushed"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CAP_12, "Erlbach Part 12", "idErlbachPart12", Resources.Load<Material>($"Material/AluminiumBrushed"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CAP_13, "Erlbach Part 13", "idErlbachPart13", Resources.Load<Material>($"Material/AluminiumBrushed"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CAP_14, "Erlbach Part 14", "idErlbachPart14", Resources.Load<Material>($"Material/AluminiumBrushed"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CAP_15, "Erlbach Part 15", "idErlbachPart15", Resources.Load<Material>($"Material/AluminiumBrushed"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CAP_16, "Erlbach Part 16", "idErlbachPart16", Resources.Load<Material>($"Material/AluminiumBrushed"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CAP_17, "Erlbach Part 17", "idErlbachPart17", Resources.Load<Material>($"Material/AluminiumBrushed"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_18, "Erlbach Part 18", "idErlbachPart18", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_19, "Erlbach Part 19", "idErlbachPart19", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_20, "Erlbach Part 20", "idErlbachPart20", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_21, "Erlbach Part 21", "idErlbachPart21", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_22, "Erlbach Part 22", "idErlbachPart22", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_23, "Erlbach Part 23", "idErlbachPart23", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_24, "Erlbach Part 24", "idErlbachPart24", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_25, "Erlbach Part 25", "idErlbachPart25", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_26, "Erlbach Part 26", "idErlbachPart26", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_27, "Erlbach Part 27", "idErlbachPart27", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_28, "Erlbach Part 28", "idErlbachPart28", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_29, "Erlbach Part 29", "idErlbachPart29", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_30, "Erlbach Part 30", "idErlbachPart30", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_31, "Erlbach Part 31", "idErlbachPart31", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_32, "Erlbach Part 32", "idErlbachPart32", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_33, "Erlbach Part 33", "idErlbachPart33", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_34, "Erlbach Part 34", "idErlbachPart34", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_35, "Erlbach Part 35", "idErlbachPart35", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_36, "Erlbach Part 36", "idErlbachPart36", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_37, "Erlbach Part 37", "idErlbachPart37", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_38, "Erlbach Part 38", "idErlbachPart38", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CAP_39, "Erlbach Part 39", "idErlbachPart39", Resources.Load<Material>($"Material/AluminiumBrushed"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CAP_40, "Erlbach Part 40", "idErlbachPart40", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_41, "Erlbach Part 41", "idErlbachPart41", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_42, "Erlbach Part 42", "idErlbachPart42", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_43, "Erlbach Part 43", "idErlbachPart43", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_44, "Erlbach Part 44", "idErlbachPart44", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_45, "Erlbach Part 45", "idErlbachPart45", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_46, "Erlbach Part 46", "idErlbachPart46", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_47, "Erlbach Part 47", "idErlbachPart47", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_48, "Erlbach Part 48", "idErlbachPart48", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_49, "Erlbach Part 49", "idErlbachPart49", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_50, "Erlbach Part 50", "idErlbachPart50", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_51, "Erlbach Part 51", "idErlbachPart51", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_52, "Erlbach Part 52", "idErlbachPart52", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_53, "Erlbach Part 53", "idErlbachPart53", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_54, "Erlbach Part 54", "idErlbachPart54", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_55, "Erlbach Part 55", "idErlbachPart55", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_56, "Erlbach Part 56", "idErlbachPart56", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_57, "Erlbach Part 57", "idErlbachPart57", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_58, "Erlbach Part 58", "idErlbachPart58", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_59, "Erlbach Part 59", "idErlbachPart59", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_60, "Erlbach Part 60", "idErlbachPart60", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_61, "Erlbach Part 61", "idErlbachPart61", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_62, "Erlbach Part 62", "idErlbachPart62", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_63, "Erlbach Part 63", "idErlbachPart63", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_64, "Erlbach Part 64", "idErlbachPart64", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_65, "Erlbach Part 65", "idErlbachPart65", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_66, "Erlbach Part 66", "idErlbachPart66", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_67, "Erlbach Part 67", "idErlbachPart67", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_68, "Erlbach Part 68", "idErlbachPart68", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_69, "Erlbach Part 69", "idErlbachPart69", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_70, "Erlbach Part 70", "idErlbachPart70", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_71, "Erlbach Part 71", "idErlbachPart71", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_72, "Erlbach Part 72", "idErlbachPart72", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_CABLE_73, "Erlbach Part 73", "idErlbachPart73", Resources.Load<Material>($"Material/PlasticCable"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_BASEPLATE, "Frame", "idErlbachBody_BasePlate", Resources.Load<Material>($"Material/AluminiumScratched"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_BASEPLATE_FRONT, "Front Axle", "idErlbachPart75", Resources.Load<Material>($"Material/AluminiumScratched"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_BATBOX, "Big Battery", "idErlbachBatBox_Big", Resources.Load<Material>($"Material/PVC"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_PLATINE, "Erlbach Part 77", "idErlbachPart77", Resources.Load<Material>($"Material/PVC"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_ROD_78, "Erlbach Part 78", "idErlbachPart78", Resources.Load<Material>($"Material/PVC"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_ROD_79, "Erlbach Part 79", "idErlbachPart79", Resources.Load<Material>($"Material/PVC"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_TIRE_LH, "Tire LH", "erlTire1_LH", Resources.Load<Material>($"Material/CarTire"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_RIM_LH, "Standard Rim", "erlRim1_LH", Resources.Load<Material>($"Material/AluminiumScratched"), Vector3.zero, Quaternion.identity, Vector3.one, null, ModelListHelper.ColorAluminiumScratched),
new ModelElement(PortDef.ERL_TIRE_LV, "Tire LV", "erlTire1_LV", Resources.Load<Material>($"Material/CarTire"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_RIM_LV, "Standard Rim", "erlRim1_LV", Resources.Load<Material>($"Material/AluminiumScratched"), new Vector3(0f, -0.25f, 0f), Quaternion.identity, Vector3.one, null, ModelListHelper.ColorAluminiumScratched),
new ModelElement(PortDef.ERL_TIRE_RH, "Tire RH", "erlTire1_RH", Resources.Load<Material>($"Material/CarTire"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_RIM_RH, "Standard Rim", "erlRim1_RH", Resources.Load<Material>($"Material/AluminiumScratched"), Vector3.zero, Quaternion.identity, Vector3.one, null, ModelListHelper.ColorAluminiumScratched),
new ModelElement(PortDef.ERL_TIRE_RV, "Tire RV", "erlTire1_RV", Resources.Load<Material>($"Material/CarTire"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_RIM_RV, "Standard Rim", "erlRim1_RV", Resources.Load<Material>($"Material/AluminiumScratched"), new Vector3(0f, 0.25f, 0f), Quaternion.identity, Vector3.one, null, ModelListHelper.ColorAluminiumScratched),
new ModelElement(PortDef.ERL_BODY, "Body", "idErlbachPart84", Resources.Load<Material>($"Material/AluminiumPolished"), Vector3.zero, Quaternion.identity, Vector3.one, null, ModelListHelper.ColorAluminiumPolished),
new ModelElement(PortDef.ERL_BUMPER_BACK, "Rear Bumper", "idErlbachPart85", Resources.Load<Material>($"Material/AluminiumPolished"), Vector3.zero, Quaternion.identity, Vector3.one, null, ModelListHelper.ColorAluminiumPolished),
new ModelElement(PortDef.ERL_DRL_OUTLINE, "Front Bumper", "idErlbachPart86", Resources.Load<Material>($"Material/AluminiumPolished"), Vector3.zero, Quaternion.identity, Vector3.one, null, ModelListHelper.ColorAluminiumPolished),
new ModelElement(PortDef.ERL_BADGE, "Number", "idErlbachPart87", Resources.Load<Material>($"Material/AluminiumScratched"), Vector3.zero, Quaternion.identity, Vector3.one, null, ModelListHelper.ColorAluminiumScratched),
new ModelElement(PortDef.ERL_LP_BASE, "License Plate", "idErlbachPart88", Resources.Load<Material>($"Material/AluminiumPolished"), Vector3.zero, Quaternion.identity, Vector3.one, null, ModelListHelper.ColorAluminiumPolished),
new ModelElement(PortDef.ERL_LP_TEXT, "License Plate Content", "idErlbachPart89", Resources.Load<Material>($"Material/Universal"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_LP_COUNTRY, "Erlbach Part 90", "idErlbachPart90", Resources.Load<Material>($"Material/Universal"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_GRILL, "Standard Grill", "erlGrill_1", Resources.Load<Material>($"Material/AluminiumBrushed"), new Vector3(2.5f, 0f, -0.5f), Quaternion.identity, Vector3.one, null, ModelListHelper.ColorAluminiumBrushed),
new ModelElement(PortDef.ERL_BUMPER_FRONT, "Headlight Cover", "idErlbachPart92", Resources.Load<Material>($"Material/AluminiumBrushed"), Vector3.zero, Quaternion.identity, Vector3.one, null, ModelListHelper.ColorAluminiumBrushed),
new ModelElement(PortDef.ERL_DRL_PLATE, "Headlight", "idErlbachPart93", Resources.Load<Material>($"Material/MetalMesh"), Vector3.zero, Quaternion.identity, Vector3.one, null, null),
new ModelElement(PortDef.ERL_WINDOW, "Window", "idErlbachWindow", Resources.Load<Material>($"Material/Glas"), Vector3.zero, Quaternion.identity, Vector3.one, null, ModelListHelper.ColorGlass),
},
Resources.LoadAll<Mesh>($"Model/ERLbach/ERLBach_mit_Fenster"),
1 //skip basemodel
);
}
}