Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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;
            }
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
            }
        }