public void Place(HUDStandardItem hudItem, float dx, float dy) { Frame3f initFrame = hudItem.GetObjectFrame(); Frame3f hudFrame = HUDUtil.GetSphereFrame(Radius, dx, dy); hudItem.SetObjectFrame( initFrame.Translated(hudFrame.Origin) .Rotated(Quaternionf.FromTo(initFrame.Z, hudFrame.Z))); }
public static void PlaceInSphereWithNormal(HUDStandardItem hudItem, float fHUDRadius, float fAngleHorz, float fAngleVert, Vector3f vPointDir) { Frame3f initFrame = hudItem.GetObjectFrame(); Frame3f hudFrame = GetSphereFrame(fHUDRadius, fAngleHorz, fAngleVert); hudItem.SetObjectFrame( initFrame.Translated(hudFrame.Origin) .Rotated(Quaternionf.FromTo(initFrame.Z, vPointDir))); }
public static void PlaceInSphere(HUDStandardItem hudItem, float fHUDRadius, Vector3f vHUDCenter, Vector3f vPlaceAt) { Frame3f initFrame = hudItem.GetObjectFrame(); Frame3f hudFrame = GetSphereFrame(fHUDRadius, vHUDCenter, vPlaceAt); hudItem.SetObjectFrame( initFrame.Translated(hudFrame.Origin) .Rotated(Quaternionf.FromTo(initFrame.Z, hudFrame.Z))); }
public static void PlaceInSphere(HUDStandardItem hudItem, float fHUDRadius, float fAngleHorz, float fAngleVert) { Frame3f initFrame = hudItem.GetObjectFrame(); Frame3f hudFrame = GetSphereFrame(fHUDRadius, fAngleHorz, fAngleVert); hudItem.SetObjectFrame( initFrame.Translated(hudFrame.Origin) .Rotated(Quaternion.FromToRotation(initFrame.Z, hudFrame.Z))); }
public static void PlaceInScene(HUDStandardItem hudItem, Vector3f vHUDCenter, Vector3f vPlaceAt) { Frame3f initFrame = hudItem.GetObjectFrame(); Vector3f n = (vPlaceAt - vHUDCenter).Normalized; Frame3f frame = new Frame3f(vPlaceAt, n); hudItem.SetObjectFrame( initFrame.Translated(frame.Origin) .Rotated(Quaternionf.FromTo(initFrame.Z, frame.Z))); }
public void Place(HUDStandardItem hudItem, float dx, float dy) { Frame3f initFrame = hudItem.GetObjectFrame(); Frame3f hudFrame = VerticalCoordIsAngle ? HUDUtil.GetCylinderFrameFromAngles(Radius, dx, dy) : HUDUtil.GetCylinderFrameFromAngleHeight(Radius, dx, dy); hudItem.SetObjectFrame( initFrame.Translated(hudFrame.Origin) .Rotated(Quaternionf.FromTo(initFrame.Z, hudFrame.Z))); }
void add(HUDStandardItem element, LayoutOptions options) { if (element.IsVisible == false) { element.IsVisible = true; } IBoxModelElement elemBoxModel = element as IBoxModelElement; // for 2D view (but doesn't matter if we are doing a layout anyway!) Frame3f viewFrame = Cockpit.GetViewFrame2D(); // with 3D view we should use this... //Frame3f viewFrame = Frame3f.Identity; element.SetObjectFrame(Frame3f.Identity); HUDUtil.PlaceInViewPlane(element, viewFrame); Cockpit.AddUIElement(element); Func <Vector2f> pinSourceF = options.PinSourcePoint2D; if (pinSourceF == null) { pinSourceF = LayoutUtil.BoxPointF(elemBoxModel, BoxPosition.Center); } Func <Vector2f> pinTargetF = options.PinTargetPoint2D; if (pinTargetF == null) { pinTargetF = LayoutUtil.BoxPointF(Solver.Container, BoxPosition.Center); } Solver.AddLayoutItem(element, pinSourceF, pinTargetF, this.StandardDepth + options.DepthShift); // if we want to shift result in its layout frame, do that via a post-transform if (options.FrameAxesShift != Vector3f.Zero) { Solver.AddPostTransform(element, (e) => { Frame3f f = (e as IElementFrame).GetObjectFrame(); f.Translate(options.FrameAxesShift.x * f.X + options.FrameAxesShift.y * f.Y + options.FrameAxesShift.z * f.Z); (e as IElementFrame).SetObjectFrame(f); }); } // auto-show if ((options.Flags & LayoutFlags.AnimatedShow) != 0) { HUDUtil.AnimatedShow(element); } }
// kind of feeling like this should maybe go somewhere else... public static void SetObjectPosition(IBoxModelElement element, BoxPosition objectPos, Vector2f pos, float z = 0) { // [RMS] this is true for now...need to rethink though HUDStandardItem item = element as HUDStandardItem; Vector2f corner_offset = GetBoxOffset(element, objectPos); Vector2f new_pos = pos - corner_offset; Frame3f f = new Frame3f(new Vector3f(new_pos.x, new_pos.y, z)); item.SetObjectFrame(f); }
// kind of feeling like this should maybe go somewhere else... public static void SetObjectPosition(IBoxModelElement element, Vector2f vObjectPoint, Vector2f vTargetPoint, float z = 0) { // [RMS] this is true for now...need to rethink though HUDStandardItem item = element as HUDStandardItem; Vector2f vOffset = GetRelativeOffset(element, vObjectPoint); Vector2f vNewPos = vTargetPoint - vOffset; Frame3f f = new Frame3f(new Vector3f(vNewPos.x, vNewPos.y, z)); item.SetObjectFrame(f); }
void add(HUDStandardItem element, LayoutOptions options) { if (element.IsVisible == false) { element.IsVisible = true; } IBoxModelElement elemBoxModel = element as IBoxModelElement; // for 2D view (but doesn't matter if we are doing a layout anyway!) Frame3f viewFrame = Cockpit.GetViewFrame2D(); // with 3D view we should use this... //Frame3f viewFrame = Frame3f.Identity; element.SetObjectFrame(Frame3f.Identity); HUDUtil.PlaceInViewPlane(element, viewFrame); Cockpit.AddUIElement(element); Func <Vector2f> pinSourceF = options.PinSourcePoint2D; if (pinSourceF == null) { pinSourceF = LayoutUtil.BoxPointF(elemBoxModel, BoxPosition.Center); } Func <Vector2f> pinTargetF = options.PinTargetPoint2D; if (pinTargetF == null) { pinTargetF = LayoutUtil.BoxPointF(Solver.Container, BoxPosition.Center); } Solver.AddLayoutItem(element, pinSourceF, pinTargetF, this.StandardDepth + options.DepthShift); // auto-show if ((options.Flags & LayoutFlags.AnimatedShow) != 0) { HUDUtil.AnimatedShow(element); } }
public static void PlaceInViewPlane(HUDStandardItem hudItem, Vector3f vPosition, Frame3f viewFrame) { Frame3f objFrame = hudItem.GetObjectFrame().Translated(vPosition); hudItem.SetObjectFrame(viewFrame.FromFrame(objFrame)); }