Example #1
0
        public override void Tick()
        {
            DronePawn player = Local.Pawn as DronePawn;

            if (player.ActiveChild is not WeaponModule module)
            {
                return;
            }

            TraceResult trace = (module.Owner as DronePawn).GetTrace()
                                .Size(module.TraceSize)
                                .Run();

            PositionAtWorld(trace.EndPos);

            PanelTransform transform = new();

            transform.AddTranslateX(Length.Fraction(-0.5f));
            transform.AddTranslateY(Length.Fraction(-0.5f));

            float roll = player.Rotation.Angles().roll - CurrentView.Rotation.Angles().roll;

            transform.AddRotation(0, 0, roll);

            Style.Transform = transform;
            Style.Dirty();
        }
        public override void Tick()
        {
            DronePawn target = (Local.Pawn as DronePawn).Target;

            bool active = target != null;

            SetClass("active", active);

            if (active)
            {
                PositionAtWorld(target.Position);

                Vector3 start = target.Position;
                Vector3 lead  = target.Position + (target.Velocity * TimeToTarget(target.Position));

                Vector2 screen = lead.ToScreen() - start.ToScreen();

                Style.Width = Length.Fraction(screen.Length);

                float rot = MathF.Atan2(screen.y, screen.x).RadianToDegree();

                PanelTransform transform = new PanelTransform();

                transform.AddRotation(0, 0, rot);

                Style.Transform = transform;
                Style.Dirty();
            }
        }
        public override void Tick()
        {
            DronePawn target = (Local.Pawn as DronePawn).Target;

            bool active = target != null;

            SetClass("active", active);

            if (active)
            {
                PositionAtWorld(target.Position);

                BBox box = (target.GetActiveController() as DroneController).GetHull();

                List <Vector2> points = new()
                {
                    target.Transform.PointToWorld(new Vector3(box.Maxs.x, box.Maxs.y, box.Maxs.z)).ToScreen(),
                    target.Transform.PointToWorld(new Vector3(box.Maxs.x, box.Mins.y, box.Maxs.z)).ToScreen(),
                    target.Transform.PointToWorld(new Vector3(box.Maxs.x, box.Maxs.y, box.Mins.z)).ToScreen(),
                    target.Transform.PointToWorld(new Vector3(box.Maxs.x, box.Mins.y, box.Mins.z)).ToScreen(),
                    target.Transform.PointToWorld(new Vector3(box.Mins.x, box.Maxs.y, box.Maxs.z)).ToScreen(),
                    target.Transform.PointToWorld(new Vector3(box.Mins.x, box.Mins.y, box.Maxs.z)).ToScreen(),
                    target.Transform.PointToWorld(new Vector3(box.Mins.x, box.Maxs.y, box.Mins.z)).ToScreen(),
                    target.Transform.PointToWorld(new Vector3(box.Mins.x, box.Mins.y, box.Mins.z)).ToScreen()
                };

                Vector2 mins = new Vector2(points[1].x, points[1].y);
                Vector2 maxs = new Vector2(points[1].x, points[1].y);

                foreach (Vector2 point in points)
                {
                    mins.x = Math.Min(mins.x, point.x);
                    mins.y = Math.Min(mins.y, point.y);

                    maxs.x = Math.Max(maxs.x, point.x);
                    maxs.y = Math.Max(maxs.y, point.y);
                }

                Style.Width  = Length.Fraction(maxs.x - mins.x);
                Style.Height = Length.Fraction(maxs.y - mins.y);
                Style.Dirty();
            }
        }