public override float GetBoundingRadius() { float radius = base.GetBoundingRadius(); if (m_liftControlMesh == null || Path == null) { return(radius); } var points = Path.GetPoints(); for (int pathPointIndex = 2; pathPointIndex < 4; pathPointIndex++) { if (pathPointIndex >= points.Count) { break; } PathPoint_v2 point = points[pathPointIndex]; float dist = (Transform.Position - point.Transform.Position).Length; if (dist > radius) { radius = dist; } } return(radius); }
public override float GetBoundingRadius() { float radius = base.GetBoundingRadius(); if (Type != TypeEnum.Laser_Barrier || LaserPath == null || m_actorMeshes.Count == 0) { return(radius); } var points = LaserPath.GetPoints(); if (points.Count < 2) { return(radius); } for (int pathPointIndex = 0; pathPointIndex < 2; pathPointIndex++) { if (pathPointIndex >= points.Count) { break; } PathPoint_v2 point = points[pathPointIndex]; float dist = (Transform.Position - point.Transform.Position).Length; if (dist > radius) { radius = dist; } } return(radius); }
public void SetNodes(List <WDOMNode> points) { int first_index = m_FirstEntryOffset / 16; if (first_index >= points.Count) { return; } FirstNode = (PathPoint_v2)points[first_index]; FirstNode.Name = Name + $"_{0}"; PathPoint_v2 cur_node = FirstNode; for (int i = 1; i < m_NumberofPoints; i++) { int next_index = first_index + i; if (next_index >= points.Count) { break; } cur_node.NextNode = (PathPoint_v2)points[next_index]; cur_node.NextNode.Name = Name + $"_{i}"; cur_node = cur_node.NextNode; } }
public List <PathPoint_v2> GetPoints() { List <PathPoint_v2> points = new List <PathPoint_v2>(); PathPoint_v2 nextPoint = FirstNode; while (nextPoint != null) { points.Add(nextPoint); nextPoint = nextPoint.NextNode; if (nextPoint == FirstNode) { break; // Prevent infinite loops } } return(points); }
public override void Draw(WSceneView view) { base.Draw(view); if (m_liftControlMesh == null || Path == null) { return; } for (int i = 0; i < 4; i++) { if (ColorOverrides.ColorsEnabled[i]) { m_liftControlMesh.SetTevColorOverride(i, ColorOverrides.Colors[i]); } if (ColorOverrides.ConstColorsEnabled[i]) { m_liftControlMesh.SetTevkColorOverride(i, ColorOverrides.ConstColors[i]); } } var points = Path.GetPoints(); for (int pathPointIndex = 2; pathPointIndex < 4; pathPointIndex++) { if (pathPointIndex >= points.Count) { break; } PathPoint_v2 point = points[pathPointIndex]; Matrix4 trs = Matrix4.CreateScale(point.Transform.LocalScale) * Matrix4.CreateFromQuaternion(point.Transform.Rotation) * Matrix4.CreateTranslation(point.Transform.Position); m_liftControlMesh.Render(view.ViewMatrix, view.ProjMatrix, trs); } }