public override void Update() { if (Enabled) { MouseState M = Mouse.GetState(); if (Engaged) { pAtlasCoordinates.X = 2; Camera MyCam = new Camera(""); Vector2 FullyAdjustedMouseCoords = new Vector2(); if (UsePseudoMouse) { FullyAdjustedMouseCoords = PseudoMouse; } else { FullyAdjustedMouseCoords = Shell.CoordNormalize(VNFUtils.ConvertPoint(M.Position)); } if (!CameraImmune) { if (CustomCamera != null) { MyCam = CustomCamera; } else if (Shell.AutoCamera != null) { MyCam = Shell.AutoCamera; } FullyAdjustedMouseCoords = MyCam.TranslateCoordsToEquivalent(FullyAdjustedMouseCoords); } Vector2 MouseDerived = CalculatePerpendicularIntersection(EndpointA, EndpointB, FullyAdjustedMouseCoords); float GreatestX = EndpointB.X >= EndpointA.X ? EndpointB.X : EndpointA.X; float LeastX = EndpointB.X >= EndpointA.X ? EndpointA.X : EndpointB.X; float GreatestY = EndpointB.Y >= EndpointA.Y ? EndpointB.Y : EndpointA.Y; float LeastY = EndpointB.Y >= EndpointA.Y ? EndpointA.Y : EndpointB.Y; if (MouseDerived.X > GreatestX) { MouseDerived.X = GreatestX; } if (MouseDerived.X < LeastX) { MouseDerived.X = LeastX; } if (MouseDerived.Y > GreatestY) { MouseDerived.Y = GreatestY; } if (MouseDerived.Y < LeastY) { MouseDerived.Y = LeastY; } pDrawCoords = MouseDerived; if (M.LeftButton != ButtonState.Pressed) { Engaged = false; } } else { if (MouseInBounds()) { pAtlasCoordinates.X = 1; } else { pAtlasCoordinates.X = 0; } } } else { pAtlasCoordinates.X = 0; Enabled = false; } base.Update(); }
public EssenseGlow(String Name, Vector2 Location, TAtlasInfo?Atlas, float Depth) : base(Name, Location, Atlas, Depth) { pOrigin = (VNFUtils.ConvertPoint(HitBox.Size) / 2) + SCDist; FindSofia(); }
public void UpdateFunctionality(WorldEntity BehaviourOwner) { IScrollBar SB = (IScrollBar)BehaviourOwner; if (!SB.HideBar) { MouseState M = Mouse.GetState(); if (SB.Enabled) { Vector2 COffsetV = new Vector2(); Vector2 CZoomFactor = new Vector2(1, 1); if (!((WorldEntity)SB).CameraImmune) { if (((WorldEntity)SB).CustomCamera != null) { COffsetV = ((WorldEntity)SB).CustomCamera.OffsetVector; CZoomFactor = ((WorldEntity)SB).CustomCamera.ZoomFactor; } else if (Shell.AutoCamera != null) { COffsetV = Shell.AutoCamera.OffsetVector; CZoomFactor = Shell.AutoCamera.ZoomFactor; } } Vector2 FullyAdjustedMouseCoords = new Vector2(); if (BehaviourOwner.UsePseudoMouse) { FullyAdjustedMouseCoords = BehaviourOwner.PseudoMouse - COffsetV; } else { FullyAdjustedMouseCoords = ((Shell.CoordNormalize(VNFUtils.ConvertPoint(M.Position) / CZoomFactor) - COffsetV)); } int MY = (int)FullyAdjustedMouseCoords.Y; if (M.ScrollWheelValue != LastMouseScroll && SB.DetectScrollRectangle.Contains(FullyAdjustedMouseCoords) && !SB.Engaged) { if (((WorldEntity)SB).DrawCoords.Y >= SB.MinHeight && ((WorldEntity)SB).DrawCoords.Y <= SB.MaxHeight) { ((WorldEntity)SB).QuickMoveTo(new Vector2(((WorldEntity)SB).DrawCoords.X, ((WorldEntity)SB).DrawCoords.Y + -(int)(((float)(M.ScrollWheelValue - LastMouseScroll) * (float)(SB.ScrollFrameHeight)) / (2 * (float)SB.TotalScrollHeight)))); } if (((WorldEntity)SB).DrawCoords.Y < SB.MinHeight) { ((WorldEntity)SB).QuickMoveTo(new Vector2(((WorldEntity)SB).DrawCoords.X, SB.MinHeight)); } else if (((WorldEntity)SB).DrawCoords.Y > SB.MaxHeight) { ((WorldEntity)SB).QuickMoveTo(new Vector2(((WorldEntity)SB).DrawCoords.X, SB.MaxHeight)); } } LastMouseScroll = M.ScrollWheelValue; if (SB.Engaged) { ((WorldEntity)SB).SetAtlasFrame(new Point(2, ((WorldEntity)SB).AtlasCoordinates.Y)); if (MY < SB.MinHeight) { ((WorldEntity)SB).QuickMoveTo(new Vector2(((WorldEntity)SB).DrawCoords.X, SB.MinHeight)); } else if (MY > SB.MaxHeight) { ((WorldEntity)SB).QuickMoveTo(new Vector2(((WorldEntity)SB).DrawCoords.X, SB.MaxHeight)); } else if (MY >= SB.MinHeight && MY <= SB.MaxHeight) { ((WorldEntity)SB).QuickMoveTo(new Vector2(((WorldEntity)SB).DrawCoords.X, MY)); } if (M.LeftButton != ButtonState.Pressed) { SB.Engaged = false; } } else { if (((WorldEntity)SB).MouseInBounds()) { ((WorldEntity)SB).SetAtlasFrame(new Point(1, ((WorldEntity)SB).AtlasCoordinates.Y)); } else { ((WorldEntity)SB).SetAtlasFrame(new Point(0, ((WorldEntity)SB).AtlasCoordinates.Y)); } } } else { ((WorldEntity)SB).SetAtlasFrame(new Point(0, ((WorldEntity)SB).AtlasCoordinates.Y)); SB.Engaged = false; LastMouseScroll = M.ScrollWheelValue; } } }