Skip to content

Commit 650089b

Browse files
committed
- added sitting pose reference objects
1 parent 0411a73 commit 650089b

17 files changed

+992
-231
lines changed
Lines changed: 38 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,38 @@
1-
namespace ParkitectAssetEditor.GizmoRenderers
2-
{
3-
/// <summary>
4-
/// Renders guests on a bench
5-
/// </summary>
6-
/// <seealso cref="IGizmoRenderer" />
7-
class SeatRenderer : IGizmoRenderer
8-
{
9-
/// <inheritdoc />
10-
/// <summary>
11-
/// Determines whether this instance can render the specified asset.
12-
/// </summary>
13-
/// <param name="asset">The asset.</param>
14-
/// <returns>
15-
/// <c>true</c> if this instance can render the specified asset; otherwise, <c>false</c>.
16-
/// </returns>
17-
public bool CanRender(Asset asset)
18-
{
19-
return asset.Type == AssetType.Bench || asset.Type == AssetType.FlatRide;
20-
}
21-
22-
/// <inheritdoc />
23-
/// <summary>
24-
/// Renders the specified asset.
25-
/// </summary>
26-
/// <param name="asset">The asset.</param>
27-
public void Render(Asset asset)
28-
{
29-
Utility.Utility.renderSeatGizmo(asset.GameObject);
30-
}
31-
}
32-
}
1+
namespace ParkitectAssetEditor.GizmoRenderers
2+
{
3+
/// <summary>
4+
/// Renders guests on a bench
5+
/// </summary>
6+
/// <seealso cref="IGizmoRenderer" />
7+
class SeatRenderer : IGizmoRenderer
8+
{
9+
/// <inheritdoc />
10+
/// <summary>
11+
/// Determines whether this instance can render the specified asset.
12+
/// </summary>
13+
/// <param name="asset">The asset.</param>
14+
/// <returns>
15+
/// <c>true</c> if this instance can render the specified asset; otherwise, <c>false</c>.
16+
/// </returns>
17+
public bool CanRender(Asset asset)
18+
{
19+
return asset.Type == AssetType.Bench || asset.Type == AssetType.FlatRide;
20+
}
21+
22+
/// <inheritdoc />
23+
/// <summary>
24+
/// Renders the specified asset.
25+
/// </summary>
26+
/// <param name="asset">The asset.</param>
27+
public void Render(Asset asset)
28+
{
29+
SittingType sittingType = SittingType.Bench;
30+
if (asset.Type != AssetType.Bench)
31+
{
32+
sittingType = asset.SittingType;
33+
}
34+
35+
Utility.Utility.renderSeatGizmo(asset.GameObject, sittingType);
36+
}
37+
}
38+
}
Lines changed: 140 additions & 140 deletions
Original file line numberDiff line numberDiff line change
@@ -1,140 +1,140 @@
1-
using System.Globalization;
2-
using System.Linq;
3-
using UnityEditor;
4-
using UnityEngine;
5-
6-
namespace ParkitectAssetEditor.GizmoRenderers
7-
{
8-
/// <summary>
9-
/// Renders a grid around decos and walls.
10-
/// </summary>
11-
/// <seealso cref="IGizmoRenderer" />
12-
class TrainRenderer : IGizmoRenderer
13-
{
14-
private Material sceneViewMaterial;
15-
16-
/// <summary>
17-
/// Determines whether this instance can render the specified asset.
18-
/// </summary>
19-
/// <param name="asset">The asset.</param>
20-
/// <returns>
21-
/// <c>true</c> if this instance can render the specified asset; otherwise, <c>false</c>.
22-
/// </returns>
23-
public bool CanRender(Asset asset)
24-
{
25-
return asset.Type == AssetType.Train;
26-
}
27-
28-
/// <summary>
29-
/// Renders the specified asset.
30-
/// </summary>
31-
/// <param name="asset">The asset.</param>
32-
public void Render(Asset asset)
33-
{
34-
if (sceneViewMaterial == null)
35-
{
36-
sceneViewMaterial = (Material)AssetDatabase.LoadAssetAtPath("Assets/Editor/SceneViewGhostMaterial.mat", typeof(Material));
37-
}
38-
39-
CoasterCar previousCar = asset.LeadCar;
40-
if (asset.Car != null && asset.Car.GameObject != null)
41-
{
42-
if (previousCar != null && previousCar.GameObject != null)
43-
{
44-
GameObject previousCarObject = previousCar.GameObject;
45-
GameObject car = asset.Car.GameObject;
46-
47-
float lengthAxis = 0;
48-
Transform backAxisMarker = previousCarObject.transform.Find("backAxis");
49-
if (backAxisMarker != null)
50-
{
51-
lengthAxis = Mathf.Abs(backAxisMarker.localPosition.z);
52-
}
53-
54-
car.transform.position = previousCarObject.transform.position - previousCarObject.transform.forward * (lengthAxis + previousCar.OffsetBack + asset.Car.OffsetFront);
55-
}
56-
57-
previousCar = asset.Car;
58-
}
59-
60-
if (asset.RearCar != null && asset.RearCar.GameObject != null)
61-
{
62-
if (previousCar != null && previousCar.GameObject != null)
63-
{
64-
GameObject previousCarObject = previousCar.GameObject;
65-
GameObject car = asset.RearCar.GameObject;
66-
67-
float lengthAxis = 0;
68-
Transform backAxisMarker = previousCarObject.transform.Find("backAxis");
69-
if (backAxisMarker != null)
70-
{
71-
lengthAxis = Mathf.Abs(backAxisMarker.localPosition.z);
72-
}
73-
74-
car.transform.position = previousCarObject.transform.position - previousCarObject.transform.forward * (lengthAxis + previousCar.OffsetBack + asset.RearCar.OffsetFront);
75-
}
76-
}
77-
78-
DrawCar(asset.LeadCar);
79-
DrawCar(asset.Car);
80-
DrawCar(asset.RearCar);
81-
}
82-
83-
private void DrawCar(CoasterCar car)
84-
{
85-
if (car == null || car.GameObject == null)
86-
{
87-
return;
88-
}
89-
90-
GameObject carGO = car.GameObject;
91-
92-
Utility.Utility.renderSeatGizmo(carGO);
93-
94-
Color gizmoColor = Gizmos.color;
95-
Gizmos.color = Color.red;
96-
var seats = carGO.
97-
GetComponentsInChildren<Transform>(true).Where(transform => transform.name.StartsWith("Seat", true, CultureInfo.InvariantCulture));
98-
99-
foreach (Transform seatTransform in seats)
100-
{
101-
Vector3 position = seatTransform.position + seatTransform.forward * car.SeatWaypointOffset - Vector3.up * 0.06f;
102-
Gizmos.DrawSphere(position, 0.01f);
103-
}
104-
Gizmos.color = gizmoColor;
105-
106-
Gizmos.color = Color.white;
107-
Vector3 frontPosition = carGO.transform.position + carGO.transform.forward * car.OffsetFront;
108-
Gizmos.DrawLine(frontPosition, frontPosition + Vector3.up * 0.5f);
109-
Handles.Label(frontPosition + Vector3.up * 0.5f + carGO.transform.forward * 0.1f, "Front");
110-
111-
Transform backAxis = carGO.transform.Find("backAxis");
112-
if (backAxis != null)
113-
{
114-
Vector3 backPosition = backAxis.position;
115-
backPosition -= carGO.transform.forward * car.OffsetBack;
116-
117-
Gizmos.DrawLine(backPosition, backPosition + Vector3.up * 0.5f);
118-
Handles.Label(backPosition - Vector3.up * 0.1f - carGO.transform.forward * 0.1f, "Back");
119-
}
120-
121-
foreach (CoasterRestraints restraints in car.Restraints)
122-
{
123-
var restraintTransforms = carGO.
124-
GetComponentsInChildren<Transform>(true).Where(transform => transform.name.StartsWith(restraints.TransformName, true, CultureInfo.InvariantCulture));
125-
126-
foreach (Transform restraintTransform in restraintTransforms)
127-
{
128-
MeshFilter meshFilter = restraintTransform.GetComponent<MeshFilter>();
129-
if (meshFilter != null)
130-
{
131-
sceneViewMaterial.SetPass(0);
132-
Graphics.DrawMeshNow(meshFilter.sharedMesh, restraintTransform.position, restraintTransform.rotation * Quaternion.Euler(restraints.ClosedAngle, 0, 0));
133-
sceneViewMaterial.SetPass(1);
134-
Graphics.DrawMeshNow(meshFilter.sharedMesh, restraintTransform.position, restraintTransform.rotation * Quaternion.Euler(restraints.ClosedAngle, 0, 0));
135-
}
136-
}
137-
}
138-
}
139-
}
140-
}
1+
using System.Globalization;
2+
using System.Linq;
3+
using UnityEditor;
4+
using UnityEngine;
5+
6+
namespace ParkitectAssetEditor.GizmoRenderers
7+
{
8+
/// <summary>
9+
/// Renders a grid around decos and walls.
10+
/// </summary>
11+
/// <seealso cref="IGizmoRenderer" />
12+
class TrainRenderer : IGizmoRenderer
13+
{
14+
private Material sceneViewMaterial;
15+
16+
/// <summary>
17+
/// Determines whether this instance can render the specified asset.
18+
/// </summary>
19+
/// <param name="asset">The asset.</param>
20+
/// <returns>
21+
/// <c>true</c> if this instance can render the specified asset; otherwise, <c>false</c>.
22+
/// </returns>
23+
public bool CanRender(Asset asset)
24+
{
25+
return asset.Type == AssetType.Train;
26+
}
27+
28+
/// <summary>
29+
/// Renders the specified asset.
30+
/// </summary>
31+
/// <param name="asset">The asset.</param>
32+
public void Render(Asset asset)
33+
{
34+
if (sceneViewMaterial == null)
35+
{
36+
sceneViewMaterial = (Material)AssetDatabase.LoadAssetAtPath("Assets/Editor/SceneViewGhostMaterial.mat", typeof(Material));
37+
}
38+
39+
CoasterCar previousCar = asset.LeadCar;
40+
if (asset.Car != null && asset.Car.GameObject != null)
41+
{
42+
if (previousCar != null && previousCar.GameObject != null)
43+
{
44+
GameObject previousCarObject = previousCar.GameObject;
45+
GameObject car = asset.Car.GameObject;
46+
47+
float lengthAxis = 0;
48+
Transform backAxisMarker = previousCarObject.transform.Find("backAxis");
49+
if (backAxisMarker != null)
50+
{
51+
lengthAxis = Mathf.Abs(backAxisMarker.localPosition.z);
52+
}
53+
54+
car.transform.position = previousCarObject.transform.position - previousCarObject.transform.forward * (lengthAxis + previousCar.OffsetBack + asset.Car.OffsetFront);
55+
}
56+
57+
previousCar = asset.Car;
58+
}
59+
60+
if (asset.RearCar != null && asset.RearCar.GameObject != null)
61+
{
62+
if (previousCar != null && previousCar.GameObject != null)
63+
{
64+
GameObject previousCarObject = previousCar.GameObject;
65+
GameObject car = asset.RearCar.GameObject;
66+
67+
float lengthAxis = 0;
68+
Transform backAxisMarker = previousCarObject.transform.Find("backAxis");
69+
if (backAxisMarker != null)
70+
{
71+
lengthAxis = Mathf.Abs(backAxisMarker.localPosition.z);
72+
}
73+
74+
car.transform.position = previousCarObject.transform.position - previousCarObject.transform.forward * (lengthAxis + previousCar.OffsetBack + asset.RearCar.OffsetFront);
75+
}
76+
}
77+
78+
DrawCar(asset, asset.LeadCar);
79+
DrawCar(asset, asset.Car);
80+
DrawCar(asset, asset.RearCar);
81+
}
82+
83+
private void DrawCar(Asset asset, CoasterCar car)
84+
{
85+
if (car == null || car.GameObject == null)
86+
{
87+
return;
88+
}
89+
90+
GameObject carGO = car.GameObject;
91+
92+
Utility.Utility.renderSeatGizmo(carGO, asset.SittingType);
93+
94+
Color gizmoColor = Gizmos.color;
95+
Gizmos.color = Color.red;
96+
var seats = carGO.
97+
GetComponentsInChildren<Transform>(true).Where(transform => transform.name.StartsWith("Seat", true, CultureInfo.InvariantCulture));
98+
99+
foreach (Transform seatTransform in seats)
100+
{
101+
Vector3 position = seatTransform.position + seatTransform.forward * car.SeatWaypointOffset - Vector3.up * 0.06f;
102+
Gizmos.DrawSphere(position, 0.01f);
103+
}
104+
Gizmos.color = gizmoColor;
105+
106+
Gizmos.color = Color.white;
107+
Vector3 frontPosition = carGO.transform.position + carGO.transform.forward * car.OffsetFront;
108+
Gizmos.DrawLine(frontPosition, frontPosition + Vector3.up * 0.5f);
109+
Handles.Label(frontPosition + Vector3.up * 0.5f + carGO.transform.forward * 0.1f, "Front");
110+
111+
Transform backAxis = carGO.transform.Find("backAxis");
112+
if (backAxis != null)
113+
{
114+
Vector3 backPosition = backAxis.position;
115+
backPosition -= carGO.transform.forward * car.OffsetBack;
116+
117+
Gizmos.DrawLine(backPosition, backPosition + Vector3.up * 0.5f);
118+
Handles.Label(backPosition - Vector3.up * 0.1f - carGO.transform.forward * 0.1f, "Back");
119+
}
120+
121+
foreach (CoasterRestraints restraints in car.Restraints)
122+
{
123+
var restraintTransforms = carGO.
124+
GetComponentsInChildren<Transform>(true).Where(transform => transform.name.StartsWith(restraints.TransformName, true, CultureInfo.InvariantCulture));
125+
126+
foreach (Transform restraintTransform in restraintTransforms)
127+
{
128+
MeshFilter meshFilter = restraintTransform.GetComponent<MeshFilter>();
129+
if (meshFilter != null)
130+
{
131+
sceneViewMaterial.SetPass(0);
132+
Graphics.DrawMeshNow(meshFilter.sharedMesh, restraintTransform.position, restraintTransform.rotation * Quaternion.Euler(restraints.ClosedAngle, 0, 0));
133+
sceneViewMaterial.SetPass(1);
134+
Graphics.DrawMeshNow(meshFilter.sharedMesh, restraintTransform.position, restraintTransform.rotation * Quaternion.Euler(restraints.ClosedAngle, 0, 0));
135+
}
136+
}
137+
}
138+
}
139+
}
140+
}

0 commit comments

Comments
 (0)