9
internal static partial class Parser {
11
private static void Shear(MeshBuilder builder, OpenBveApi.Math.Vector3 direction, OpenBveApi.Math.Vector3 shift, double ratio) {
12
for (int i = 0; i < builder.Vertices.Length; i++) {
13
double factor = ratio * OpenBveApi.Math.Vector3.Dot(builder.Vertices[i].SpatialCoordinates, direction);
14
builder.Vertices[i].SpatialCoordinates += shift * factor;
15
if (!builder.Vertices[i].Normal.IsNullVector()) {
16
factor = ratio * OpenBveApi.Math.Vector3.Dot(builder.Vertices[i].Normal, shift);
17
builder.Vertices[i].Normal -= direction * factor;
18
if (!builder.Vertices[i].Normal.IsNullVector()) {
19
builder.Vertices[i].Normal.Normalize();
23
for (int i = 0; i < builder.FaceCount; i++) {
24
for (int j = 0; j < builder.Faces[i].Vertices.Length; j++) {
25
if (!builder.Faces[i].Vertices[j].Normal.IsNullVector()) {
26
double factor = ratio * OpenBveApi.Math.Vector3.Dot(builder.Faces[i].Vertices[j].Normal, shift);
27
builder.Faces[i].Vertices[j].Normal -= direction * factor;
28
if (!builder.Faces[i].Vertices[j].Normal.IsNullVector()) {
29
builder.Faces[i].Vertices[j].Normal.Normalize();
36
private static void Shear(OpenBveApi.Geometry.FaceVertexMesh mesh, OpenBveApi.Math.Vector3 direction, OpenBveApi.Math.Vector3 shift, double ratio) {
37
for (int i = 0; i < mesh.Vertices.Length; i++) {
38
double factor = ratio * OpenBveApi.Math.Vector3.Dot(mesh.Vertices[i].SpatialCoordinates, direction);
39
mesh.Vertices[i].SpatialCoordinates += shift * factor;
40
if (!mesh.Vertices[i].Normal.IsNullVector()) {
41
factor = ratio * OpenBveApi.Math.Vector3.Dot(mesh.Vertices[i].Normal, shift);
42
mesh.Vertices[i].Normal -= direction * factor;
43
if (mesh.Vertices[i].Normal.IsNullVector()) {
44
mesh.Vertices[i].Normal = OpenBveApi.Math.Vector3.Up;
46
mesh.Vertices[i].Normal.Normalize();
b'\\ No newline at end of file'