public RenderObject GetRenderObject(Table.Table table, string id, bool asRightHanded, Mesh preGeneratedMesh = null) { var mesh = preGeneratedMesh ?? GenerateMesh(table, id); switch (id) { case Side: return(new RenderObject( id, asRightHanded ? mesh.Transform(Matrix3D.RightHanded) : mesh, new PbrMaterial(table.GetMaterial(_data.SideMaterial), table.GetTexture(_data.SideImage)), _data.IsSideVisible )); case Top: return(new RenderObject( id, asRightHanded ? mesh.Transform(Matrix3D.RightHanded) : mesh, new PbrMaterial(table.GetMaterial(_data.TopMaterial), table.GetTexture(_data.Image)), _data.IsTopBottomVisible )); default: throw new ArgumentException($"Unknown mesh ID \"{id}\"."); } }
public RenderObject GetRenderObject(Table.Table table, string id, Origin origin, bool asRightHanded) { var(preMatrix, _) = GetPreMatrix(table, origin, asRightHanded); switch (id) { case Plate: return(new RenderObject( id, SpinnerPlateMesh.Clone().Transform(preMatrix), new PbrMaterial(table.GetMaterial(_data.Material), table.GetTexture(_data.Image)), _data.IsVisible )); case Bracket: return(new RenderObject( id, SpinnerBracketMesh.Clone().Transform(preMatrix), new PbrMaterial(GetBracketMaterial(), table.GetTexture(_data.Image)), _data.IsVisible && _data.ShowBracket )); default: throw new ArgumentException("Unknown spinner mesh \"" + id + "\"."); } }
public PbrMaterial GetMaterial(Table.Table table) { return(new PbrMaterial( table.GetMaterial(_data.Material), table.GetTexture(_data.Image), table.GetTexture(_data.NormalMap) )); }
public PbrMaterial GetMaterial(string id, Table.Table table, SurfaceData data) { switch (id) { case Top: return(new PbrMaterial(table.GetMaterial(data.TopMaterial), table.GetTexture(data.Image))); case Side: return(new PbrMaterial(table.GetMaterial(data.SideMaterial), table.GetTexture(data.SideImage))); } throw new ArgumentException($"Unknown mesh ID \"{id}\"."); }
public PbrMaterial GetMaterial(string id, Table.Table table) { switch (id) { case Plate: return(new PbrMaterial(table.GetMaterial(_data.Material), table.GetTexture(_data.Image))); case Bracket: return(new PbrMaterial(GetBracketMaterial(), table.GetTexture(_data.Image))); } throw new ArgumentException($"Invalid spinner mesh ID \"{id}\""); }
public RenderObject GetRenderObject(Table.Table table, Origin origin, bool asRightHanded) { return(new RenderObject( _data.Name, GetTransformedMesh(table, origin, asRightHanded), new PbrMaterial( table.GetMaterial(_data.Material), table.GetTexture(_data.Image), table.GetTexture(_data.NormalMap) ), _data.IsVisible )); }
public RenderObjectGroup GetRenderObjects(Table.Table table, Origin origin, bool asRightHanded = true) { var meshes = GenerateMeshes(table); var(preVertexMatrix, preNormalsMatrix) = GetPreMatrix(table, origin, asRightHanded); var postMatrix = GetPostMatrix(table, origin); var renderObjects = new List <RenderObject> { new RenderObject( Base, meshes[Base].Transform(preVertexMatrix, preNormalsMatrix), new PbrMaterial(table.GetMaterial(_data.Material), table.GetTexture(_data.Image)), _data.IsVisible ) }; if (meshes.ContainsKey(Rubber)) { renderObjects.Add(new RenderObject( Rubber, meshes[Rubber].Transform(preVertexMatrix, preNormalsMatrix), new PbrMaterial(table.GetMaterial(_data.RubberMaterial)), _data.IsVisible )); } return(new RenderObjectGroup(_data.Name, "Flippers", postMatrix, renderObjects.ToArray())); }
public RenderObject GetRenderObject(Table.Table table, string id, Origin origin, bool asRightHanded) { var meshes = GenerateMeshes(table); var(preVertexMatrix, preNormalsMatrix) = GetPreMatrix(table, origin, asRightHanded); switch (id) { case Base: return(new RenderObject( id, meshes[Base].Transform(preVertexMatrix, preNormalsMatrix), new PbrMaterial(table.GetMaterial(_data.Material), table.GetTexture(_data.Image)), _data.IsVisible )); case Rubber: if (meshes.ContainsKey(Rubber)) { return(new RenderObject( id, meshes[Rubber].Transform(preVertexMatrix, preNormalsMatrix), new PbrMaterial(table.GetMaterial(_data.RubberMaterial)), _data.IsVisible )); } break; } return(null); }
public RenderObjectGroup GetRenderObjects(Table.Table table, Origin origin, bool asRightHanded = true, string parent = null, PbrMaterial material = null) { var postMatrix = GetPostMatrix(table, origin); return(new RenderObjectGroup(_data.Name, parent ?? "Primitives", postMatrix, new RenderObject( _data.Name, GetTransformedMesh(table, origin, asRightHanded), material ?? new PbrMaterial( table.GetMaterial(_data.Material), table.GetTexture(_data.Image), table.GetTexture(_data.NormalMap) ), _data.IsVisible ))); }
private RenderObject GetRenderObject(Table.Table table, IReadOnlyDictionary <string, Mesh> meshes, string name, bool asRightHanded) { return(new RenderObject( name, asRightHanded ? meshes[name].Transform(Matrix3D.RightHanded) : meshes[name], new PbrMaterial(table.GetMaterial(_data.Material), table.GetTexture(_data.Image)), _data.IsVisible )); }
public RenderObject GetRenderObject(Table.Table table, string id, Origin origin, bool asRightHanded) { var mesh = new Mesh(); if (id == Wires) { var meshes = GenerateWireMeshes(table); for (var i = 1; i <= 4; i++) { var name = $"Wire{i}"; if (meshes.ContainsKey(name)) { mesh.Merge(meshes[name]); } } } else { var rv = GetRampVertex(table, -1, true); switch (id) { case Floor: mesh = GenerateFlatFloorMesh(table, rv); break; case Wall: if (_data.RightWallHeightVisible > 0.0) { mesh = mesh.Merge(GenerateFlatRightWall(table, rv)); } if (_data.LeftWallHeightVisible > 0.0) { mesh = mesh.Merge(GenerateFlatLeftWall(table, rv)); } break; } if (mesh.Vertices == null) { mesh.Vertices = new Vertex3DNoTex2[0]; mesh.Indices = new int[0]; } } return(new RenderObject( id, asRightHanded ? mesh.Transform(Matrix3D.RightHanded) : mesh, new PbrMaterial(table.GetMaterial(_data.Material), table.GetTexture(_data.Image)), _data.IsVisible )); }
public static PbrMaterial GetMaterial(string id, Table.Table table, FlipperData data) { switch (id) { case Base: return(new PbrMaterial(table.GetMaterial(data.Material), table.GetTexture(data.Image))); case Rubber: return(new PbrMaterial(table.GetMaterial(data.RubberMaterial))); } throw new ArgumentException($"Unknown flipper ID \"{id}\".", nameof(id)); }
public RenderObject GetRenderObject(Table.Table table, Origin origin, bool asRightHanded) { var mesh = GetMesh(table); var(preVertexMatrix, preNormalsMatrix) = GetPreMatrix(table, origin, asRightHanded); return(new RenderObject( _data.Name, mesh.Transform(preVertexMatrix, preNormalsMatrix), new PbrMaterial(table.GetMaterial(_data.Material), table.GetTexture(_data.Image)), _data.IsVisible )); }
public RenderObjectGroup GetRenderObjects(Table.Table table, Origin origin, bool asRightHanded) { var(preMatrix, _) = GetPreMatrix(table, origin, asRightHanded); var postMatrix = GetPostMatrix(table, origin); return(new RenderObjectGroup(_data.Name, "Spinners", postMatrix, new RenderObject( "Plate", SpinnerPlateMesh.Clone().Transform(preMatrix), new PbrMaterial(table.GetMaterial(_data.Material), table.GetTexture(_data.Image)), _data.IsVisible ), new RenderObject( "Bracket", SpinnerBracketMesh.Clone().Transform(preMatrix), new PbrMaterial(GetBracketMaterial(), table.GetTexture(_data.Image)), _data.IsVisible && _data.ShowBracket ) )); }
public RenderObject GetRenderObject(int frame, Table.Table table, string id, Origin origin, bool asRightHanded) { Init(table); var material = new PbrMaterial(table.GetMaterial(_data.Material), table.GetTexture(_data.Image)); switch (id) { case Flat: var flatMesh = BuildFlatMesh(frame); return(new RenderObject( id, asRightHanded ? flatMesh.Transform(Matrix3D.RightHanded) : flatMesh, material, true )); case Rod: CalculateArraySizes(); var rodMesh = BuildRodMesh(frame); return(new RenderObject( id, asRightHanded ? rodMesh.Transform(Matrix3D.RightHanded) : rodMesh, material, true )); case Spring: CalculateArraySizes(); var springMesh = BuildSpringMesh(frame); return(new RenderObject( id, asRightHanded ? springMesh.Transform(Matrix3D.RightHanded) : springMesh, material, true )); default: throw new ArgumentException("Unknown plunger mesh \"" + id + "\"."); } }
public PbrMaterial GetMaterial(Table.Table table, MetalWireGuideData metalWireGuideData) { return(new PbrMaterial(table.GetMaterial(metalWireGuideData.Material), table.GetTexture(metalWireGuideData.Image))); }
public PbrMaterial GetMaterial() { return(new PbrMaterial(_table.GetMaterial(_data.Material), _table.GetTexture(_data.Image))); }
public RenderObjectGroup GetRenderObjects(Table.Table table, bool asRightHanded = true) { var meshes = GenerateMeshes(table); var renderObjects = new List <RenderObject>(); if (meshes.ContainsKey("Side")) { renderObjects.Add(new RenderObject( "Side", asRightHanded ? meshes["Side"].Transform(Matrix3D.RightHanded) : meshes["Side"], new PbrMaterial(table.GetMaterial(_data.SideMaterial), table.GetTexture(_data.SideImage)), _data.IsSideVisible )); } if (meshes.ContainsKey("Top")) { renderObjects.Add(new RenderObject( "Top", asRightHanded ? meshes["Top"].Transform(Matrix3D.RightHanded) : meshes["Top"], new PbrMaterial(table.GetMaterial(_data.TopMaterial), table.GetTexture(_data.Image)), _data.IsTopBottomVisible )); } return(new RenderObjectGroup(_data.Name, "Surfaces", Matrix3D.Identity, renderObjects.ToArray())); }
public PbrMaterial GetMaterial(Table.Table table, RubberData rubberData) { return(new PbrMaterial(table.GetMaterial(rubberData.Material), table.GetTexture(rubberData.Image))); }
public RenderObjectGroup GetRenderObjects(int frame, Table.Table table, Origin origin, bool asRightHanded = true) { Init(table); // todo var translationMatrix = Matrix3D.Identity; var material = new PbrMaterial(table.GetMaterial(_data.Material), table.GetTexture(_data.Image)); // flat plunger if (_data.Type == PlungerType.PlungerTypeFlat) { var flatMesh = BuildFlatMesh(frame); return(new RenderObjectGroup(_data.Name, "Plungers", translationMatrix, new RenderObject( FlatName, asRightHanded ? flatMesh.Transform(Matrix3D.RightHanded) : flatMesh, material, true ) ) { ForceChild = true }); } CalculateArraySizes(); var rodMesh = BuildRodMesh(frame); // custom plunger if (_data.Type == PlungerType.PlungerTypeCustom) { var springMesh = BuildSpringMesh(frame); return(new RenderObjectGroup(_data.Name, "Plungers", translationMatrix, new RenderObject( RodName, asRightHanded ? rodMesh.Transform(Matrix3D.RightHanded) : rodMesh, material, true ), new RenderObject( SpringName, asRightHanded ? springMesh.Transform(Matrix3D.RightHanded) : springMesh, material, true ) )); } // modern plunger return(new RenderObjectGroup(_data.Name, "Plungers", translationMatrix, new RenderObject( RodName, asRightHanded ? rodMesh.Transform(Matrix3D.RightHanded) : rodMesh, material, true ) ) { ForceChild = true }); }
public RenderObjectGroup GetRenderObjects(Table.Table table, Origin origin, bool asRightHanded) { var mesh = GetBaseMesh(); var(preMatrix, _) = GetPreMatrix(table, origin, asRightHanded); var postMatrix = GetPostMatrix(table, origin); return(new RenderObjectGroup(_data.Name, "HitTargets", postMatrix, new RenderObject( _data.Name, mesh.Transform(preMatrix), new PbrMaterial(table.GetMaterial(_data.Material), table.GetTexture(_data.Image)), _data.IsVisible ))); }