public override void OnMouseUpClient(MouseEvent args, GuiElementMap mapElem) { foreach (var val in wayPointComponents) { val.OnMouseUpOnElement(args, mapElem); } }
public override void OnMouseMoveClient(MouseEvent args, GuiElementMap mapElem, StringBuilder hoverText) { foreach (var val in wayPointComponents) { val.OnMouseMove(args, mapElem, hoverText); } }
public override void OnMouseUpOnElement(MouseEvent args, GuiElementMap mapElem) { if (args.Button == EnumMouseButton.Right) { Vec2f viewPos = new Vec2f(); mapElem.TranslateWorldPosToViewPos(waypoint.Position, ref viewPos); double x = viewPos.X + mapElem.Bounds.renderX; double y = viewPos.Y + mapElem.Bounds.renderY; if (waypoint.Pinned) { x = (float)GameMath.Clamp(x, mapElem.Bounds.renderX + 2, mapElem.Bounds.renderX + mapElem.Bounds.InnerWidth - 2); y = (float)GameMath.Clamp(y, mapElem.Bounds.renderY + 2, mapElem.Bounds.renderY + mapElem.Bounds.InnerHeight - 2); } double dX = args.X - x; double dY = args.Y - y; if (Math.Abs(dX) < 7 && Math.Abs(dY) < 7) { if (editWpDlg != null) { editWpDlg.TryClose(); editWpDlg.Dispose(); } editWpDlg = new GuiDialogEditWayPoint(capi, waypoint, waypointIndex); editWpDlg.TryOpen(); args.Handled = true; } } }
public override void Render(GuiElementMap mapElem, float dt) { foreach (var val in wayPointComponents) { val.Render(mapElem, dt); } }
public override void Render(GuiElementMap map, float dt) { map.TranslateWorldPosToViewPos(waypoint.Position, ref viewPos); float x = (float)(map.Bounds.renderX + viewPos.X); float y = (float)(map.Bounds.renderY + viewPos.Y); ICoreClientAPI api = map.Api; IShaderProgram prog = api.Render.GetEngineShader(EnumShaderProgram.Gui); prog.Uniform("rgbaIn", color); prog.Uniform("extraGlow", 0); prog.Uniform("applyColor", 0); prog.Uniform("noTexture", 0f); prog.BindTexture2D("tex2d", Texture.TextureId, 0); api.Render.GlPushMatrix(); api.Render.GlTranslate(x, y, 60); api.Render.GlScale(Texture.Width, Texture.Height, 0); api.Render.GlScale(0.5f, 0.5f, 0); prog.UniformMatrix("projectionMatrix", api.Render.CurrentProjectionMatrix); prog.UniformMatrix("modelViewMatrix", api.Render.CurrentModelviewMatrix); api.Render.RenderMesh(quadModel); api.Render.GlPopMatrix(); }
public override void OnMouseUpClient(MouseEvent args, GuiElementMap mapElem) { foreach (var val in MapComps) { val.Value.OnMouseUpOnElement(args, mapElem); } }
public override void Render(GuiElementMap map, float dt) { map.TranslateWorldPosToViewPos(entity.Pos.XYZ, ref viewPos); float x = (float)(map.Bounds.renderX + viewPos.X); float y = (float)(map.Bounds.renderY + viewPos.Y); //api.Render.GlToggleBlend(true, EnumBlendMode.PremultipliedAlpha); ICoreClientAPI api = map.Api; IShaderProgram prog = api.Render.GetEngineShader(EnumShaderProgram.Gui); prog.Uniform("rgbaIn", ColorUtil.WhiteArgbVec); prog.Uniform("extraGlow", 0); prog.Uniform("applyColor", 0); prog.Uniform("noTexture", 0f); prog.BindTexture2D("tex2d", Texture.TextureId, 0); api.Render.GlPushMatrix(); api.Render.GlTranslate(x, y, 60); api.Render.GlScale(Texture.Width, Texture.Height, 0); api.Render.GlScale(0.5f, 0.5f, 0); //api.Render.GlTranslate(1f, 1f, 0); api.Render.GlRotate(-entity.Pos.Yaw * GameMath.RAD2DEG + 90, 0, 0, 1); prog.UniformMatrix("projectionMatrix", api.Render.CurrentProjectionMatrix); prog.UniformMatrix("modelViewMatrix", api.Render.CurrentModelviewMatrix); api.Render.RenderMesh(quadModel); api.Render.GlPopMatrix(); }
public override void OnMouseMove(MouseEvent args, GuiElementMap mapElem, StringBuilder hoverText) { Vec2f viewPos = new Vec2f(); mapElem.TranslateWorldPosToViewPos(waypoint.Position, ref viewPos); double x = viewPos.X + mapElem.Bounds.renderX; double y = viewPos.Y + mapElem.Bounds.renderY; if (waypoint.Pinned) { mapElem.ClampButPreserveAngle(ref viewPos, 2); x = viewPos.X + mapElem.Bounds.renderX; y = viewPos.Y + mapElem.Bounds.renderY; x = (float)GameMath.Clamp(x, mapElem.Bounds.renderX + 2, mapElem.Bounds.renderX + mapElem.Bounds.InnerWidth - 2); y = (float)GameMath.Clamp(y, mapElem.Bounds.renderY + 2, mapElem.Bounds.renderY + mapElem.Bounds.InnerHeight - 2); } double dX = args.X - x; double dY = args.Y - y; if (mouseOver = Math.Abs(dX) < 8 && Math.Abs(dY) < 8) { string text = Lang.Get("Waypoint {0}", waypointIndex) + "\n" + waypoint.Title; hoverText.AppendLine(text); } }
public override void Render(GuiElementMap mapElem, float dt) { foreach (var val in MapComps) { val.Value.Render(mapElem, dt); } }
public override void OnMouseMoveClient(MouseEvent args, GuiElementMap mapElem, StringBuilder hoverText) { foreach (var val in MapComps) { val.Value.OnMouseMove(args, mapElem, hoverText); } }
public override void Render(GuiElementMap mapElem, float dt) { foreach (var val in loadedMapData) { val.Value.Render(mapElem, dt); } }
public override void Render(GuiElementMap map, float dt) { //if (Texture.Disposed) throw new Exception("Fatal. Trying to render a disposed texture"); if (quadModel == null || quadModel.Disposed) { throw new Exception("Fatal. Trying to render a disposed meshref"); } map.TranslateWorldPosToViewPos(waypoint.Position, ref viewPos); float x = (float)(map.Bounds.renderX + viewPos.X); float y = (float)(map.Bounds.renderY + viewPos.Y); if (waypoint.Pinned) { map.Api.Render.PushScissor(null); x = (float)GameMath.Clamp(x, map.Bounds.renderX + 2, map.Bounds.renderX + map.Bounds.InnerWidth - 2); y = (float)GameMath.Clamp(y, map.Bounds.renderY + 2, map.Bounds.renderY + map.Bounds.InnerHeight - 2); } ICoreClientAPI api = map.Api; IShaderProgram prog = api.Render.GetEngineShader(EnumShaderProgram.Gui); prog.Uniform("rgbaIn", color); prog.Uniform("extraGlow", 0); prog.Uniform("applyColor", 0); prog.Uniform("noTexture", 0f); LoadedTexture tex; float hover = (mouseOver ? 6 : 0) - 1.5f * Math.Max(1, 1 / map.ZoomLevel); if (wpLayer.texturesByIcon.TryGetValue(waypoint.Icon, out tex)) { prog.BindTexture2D("tex2d", wpLayer.texturesByIcon[waypoint.Icon].TextureId, 0); mvMat .Set(api.Render.CurrentModelviewMatrix) .Translate(x, y, 60) .Scale(tex.Width + hover, tex.Height + hover, 0) .Scale(0.5f, 0.5f, 0) ; prog.UniformMatrix("projectionMatrix", api.Render.CurrentProjectionMatrix); prog.UniformMatrix("modelViewMatrix", mvMat.Values); api.Render.RenderMesh(quadModel); } if (waypoint.Pinned) { map.Api.Render.PopScissor(); } }
public override void Render(GuiElementMap map, float dt) { map.TranslateWorldPosToViewPos(waypoint.Position, ref viewPos); if (waypoint.Pinned) { map.Api.Render.PushScissor(null); map.ClampButPreserveAngle(ref viewPos, 2); } else { if (viewPos.X < -10 || viewPos.Y < -10 || viewPos.X > map.Bounds.OuterWidth + 10 || viewPos.Y > map.Bounds.OuterHeight + 10) { return; } } float x = (float)(map.Bounds.renderX + viewPos.X); float y = (float)(map.Bounds.renderY + viewPos.Y); ICoreClientAPI api = map.Api; IShaderProgram prog = api.Render.GetEngineShader(EnumShaderProgram.Gui); prog.Uniform("rgbaIn", color); prog.Uniform("extraGlow", 0); prog.Uniform("applyColor", 0); prog.Uniform("noTexture", 0f); LoadedTexture tex; float hover = (mouseOver ? 6 : 0) - 1.5f * Math.Max(1, 1 / map.ZoomLevel); if (wpLayer.texturesByIcon.TryGetValue(waypoint.Icon, out tex)) { prog.BindTexture2D("tex2d", wpLayer.texturesByIcon[waypoint.Icon].TextureId, 0); mvMat .Set(api.Render.CurrentModelviewMatrix) .Translate(x, y, 60) .Scale(tex.Width + hover, tex.Height + hover, 0) .Scale(0.5f, 0.5f, 0) ; prog.UniformMatrix("projectionMatrix", api.Render.CurrentProjectionMatrix); prog.UniformMatrix("modelViewMatrix", mvMat.Values); api.Render.RenderMesh(wpLayer.quadModel); } if (waypoint.Pinned) { map.Api.Render.PopScissor(); } }
public override void Render(GuiElementMap map, float dt) { map.TranslateWorldPosToViewPos(worldPos, ref viewPos); capi.Render.Render2DTexture( Texture.TextureId, (int)(map.Bounds.renderX + viewPos.X), (int)(map.Bounds.renderY + viewPos.Y), (int)(Texture.Width * map.ZoomLevel), (int)(Texture.Height * map.ZoomLevel), renderZ ); }
public override void OnMouseMove(MouseEvent args, GuiElementMap mapElem, StringBuilder hoverText) { Vec2f viewPos = new Vec2f(); mapElem.TranslateWorldPosToViewPos(waypoint.Position, ref viewPos); double mouseX = args.X - mapElem.Bounds.renderX; double mouseY = args.Y - mapElem.Bounds.renderY; if (Math.Abs(viewPos.X - mouseX) < 5 && Math.Abs(viewPos.Y - mouseY) < 5) { hoverText.Append("Waypoint '" + waypoint.Title + "'"); } }
public override void OnMouseMove(MouseEvent args, GuiElementMap mapElem, StringBuilder hoverText) { Vec2f viewPos = new Vec2f(); mapElem.TranslateWorldPosToViewPos(waypoint.Position, ref viewPos); double mouseX = args.X - mapElem.Bounds.renderX; double mouseY = args.Y - mapElem.Bounds.renderY; if (mouseOver = Math.Abs(viewPos.X - mouseX) < 8 && Math.Abs(viewPos.Y - mouseY) < 8) { string text = Lang.Get("Waypoint {0}", waypointIndex) + "\n" + waypoint.Title; hoverText.AppendLine(text); } }
public override void Render(GuiElementMap map, float dt) { if ((entity as EntityPlayer)?.Player?.WorldData?.CurrentGameMode == EnumGameMode.Spectator == true) { return; } map.TranslateWorldPosToViewPos(entity.Pos.XYZ, ref viewPos); float x = (float)(map.Bounds.renderX + viewPos.X); float y = (float)(map.Bounds.renderY + viewPos.Y); ICoreClientAPI api = map.Api; if (Texture.Disposed) { throw new Exception("Fatal. Trying to render a disposed texture"); } if (quadModel.Disposed) { throw new Exception("Fatal. Trying to render a disposed texture"); } capi.Render.GlToggleBlend(true); IShaderProgram prog = api.Render.GetEngineShader(EnumShaderProgram.Gui); prog.Uniform("rgbaIn", ColorUtil.WhiteArgbVec); prog.Uniform("extraGlow", 0); prog.Uniform("applyColor", 0); prog.Uniform("noTexture", 0f); prog.BindTexture2D("tex2d", Texture.TextureId, 0); mvMat .Set(api.Render.CurrentModelviewMatrix) .Translate(x, y, 60) .Scale(Texture.Width, Texture.Height, 0) .Scale(0.5f, 0.5f, 0) .RotateZ(-entity.Pos.Yaw + 90 * GameMath.DEG2RAD) ; prog.UniformMatrix("projectionMatrix", api.Render.CurrentProjectionMatrix); prog.UniformMatrix("modelViewMatrix", mvMat.Values); api.Render.RenderMesh(quadModel); }
public override void OnMouseMove(MouseEvent args, GuiElementMap mapElem, StringBuilder hoverText) { Vec2f viewPos = new Vec2f(); mapElem.TranslateWorldPosToViewPos(entity.Pos.XYZ, ref viewPos); double mouseX = args.X - mapElem.Bounds.renderX; double mouseY = args.Y - mapElem.Bounds.renderY; if (Math.Abs(viewPos.X - mouseX) < 5 && Math.Abs(viewPos.Y - mouseY) < 5) { EntityPlayer eplr = entity as EntityPlayer; if (eplr != null) { hoverText.AppendLine("Player " + capi.World.PlayerByUid(eplr.PlayerUID).PlayerName); } } }
public override void Render(GuiElementMap map, float dt) { map.TranslateWorldPosToViewPos(worldPos, ref viewPos); if (Texture.Disposed) { throw new Exception("Fatal. Trying to render a disposed texture"); } capi.Render.Render2DTexture( Texture.TextureId, (int)(map.Bounds.renderX + viewPos.X), (int)(map.Bounds.renderY + viewPos.Y), (int)(Texture.Width * map.ZoomLevel), (int)(Texture.Height * map.ZoomLevel), renderZ ); }
public override void OnGuiOpened() { base.OnGuiOpened(); if (dialogType == EnumDialogType.HUD) { SingleComposer = hudDialog; } else { SingleComposer = fullDialog; } GuiElementMap mapElem = SingleComposer.GetElement("mapElem") as GuiElementMap; if (mapElem != null) { mapElem.chunkViewBoundsBefore = new Cuboidi(); } OnMouseMove(new MouseEvent(capi.Input.MouseX, capi.Input.MouseY)); }
public override void OnMouseUpOnElement(MouseEvent args, GuiElementMap mapElem) { if (args.Button == EnumMouseButton.Right) { Vec2f viewPos = new Vec2f(); mapElem.TranslateWorldPosToViewPos(waypoint.Position, ref viewPos); double x = viewPos.X + mapElem.Bounds.renderX; double y = viewPos.Y + mapElem.Bounds.renderY; if (waypoint.Pinned) { mapElem.ClampButPreserveAngle(ref viewPos, 2); x = viewPos.X + mapElem.Bounds.renderX; y = viewPos.Y + mapElem.Bounds.renderY; x = (float)GameMath.Clamp(x, mapElem.Bounds.renderX + 2, mapElem.Bounds.renderX + mapElem.Bounds.InnerWidth - 2); y = (float)GameMath.Clamp(y, mapElem.Bounds.renderY + 2, mapElem.Bounds.renderY + mapElem.Bounds.InnerHeight - 2); } double dX = args.X - x; double dY = args.Y - y; if (Math.Abs(dX) < 7 && Math.Abs(dY) < 7) { if (editWpDlg != null) { editWpDlg.TryClose(); editWpDlg.Dispose(); } editWpDlg = new GuiDialogEditWayPoint(capi, waypoint, waypointIndex); editWpDlg.TryOpen(); editWpDlg.OnClosed += () => capi.Gui.RequestFocus(capi.ModLoader.GetModSystem <WorldMapManager>().worldMapDlg); args.Handled = true; } } }
public override void OnMouseUpOnElement(MouseEvent args, GuiElementMap mapElem) { if (args.Button == EnumMouseButton.Right) { Vec2f viewPos = new Vec2f(); mapElem.TranslateWorldPosToViewPos(waypoint.Position, ref viewPos); double mouseX = args.X - mapElem.Bounds.renderX; double mouseY = args.Y - mapElem.Bounds.renderY; if (Math.Abs(viewPos.X - mouseX) < 5 && Math.Abs(viewPos.Y - mouseY) < 5) { if (editWpDlg != null) { editWpDlg.TryClose(); editWpDlg.Dispose(); } editWpDlg = new GuiDialogEditWayPoint(capi, waypoint, waypointIndex); editWpDlg.TryOpen(); args.Handled = true; } } }
public virtual void OnMouseUpClient(MouseEvent args, GuiElementMap mapElem) { }
public virtual void OnMouseMoveClient(MouseEvent args, GuiElementMap mapElem, StringBuilder hoverText) { }
public virtual void Render(GuiElementMap mapElem, float dt) { }
private void ComposeDialog() { ElementBounds mapBounds = ElementBounds.Fixed(0, 28, 1200, 800); ElementBounds layerList = mapBounds.RightCopy().WithFixedSize(1, 350); ElementBounds bgBounds = ElementBounds.Fill.WithFixedPadding(3); bgBounds.BothSizing = ElementSizing.FitToChildren; bgBounds.WithChildren(mapBounds, layerList); ElementBounds dialogBounds = ElementStdBounds.AutosizedMainDialog .WithAlignment(EnumDialogArea.CenterMiddle) .WithFixedAlignmentOffset(-GuiStyle.DialogToScreenPadding, 0); if (dialogType == EnumDialogType.HUD) { mapBounds = ElementBounds.Fixed(0, 0, 250, 250); bgBounds = ElementBounds.Fill.WithFixedPadding(2); bgBounds.BothSizing = ElementSizing.FitToChildren; bgBounds.WithChildren(mapBounds); dialogBounds = ElementStdBounds.AutosizedMainDialog .WithAlignment(EnumDialogArea.RightTop) .WithFixedAlignmentOffset(-GuiStyle.DialogToScreenPadding, GuiStyle.DialogToScreenPadding); } Vec3d centerPos = capi.World.Player.Entity.Pos.XYZ; if (SingleComposer != null) { SingleComposer.Dispose(); } SingleComposer = capi.Gui .CreateCompo("worldmap", dialogBounds) .AddShadedDialogBG(bgBounds, false) .AddIf(dialogType == EnumDialogType.Dialog) .AddDialogTitleBar("World Map", OnTitleBarClose) .AddInset(mapBounds, 2) .EndIf() .BeginChildElements(bgBounds) .AddHoverText("", CairoFont.WhiteDetailText(), 350, mapBounds.FlatCopy(), "hoverText") .AddInteractiveElement(new GuiElementMap(mapComponents, centerPos, capi, mapBounds), "mapElem") .EndChildElements() .Compose() ; SingleComposer.OnRecomposed += SingleComposer_OnRecomposed; mapElem = SingleComposer.GetElement("mapElem") as GuiElementMap; mapElem.viewChanged = viewChanged; mapElem.ZoomAdd(1, 0.5f, 0.5f); hoverTextElem = SingleComposer.GetHoverText("hoverText"); hoverTextElem.SetAutoWidth(true); if (listenerId != 0) { capi.Event.UnregisterGameTickListener(listenerId); } listenerId = capi.Event.RegisterGameTickListener( (dt) => { mapElem.EnsureMapFullyLoaded(); if (requireRecompose) { TryClose(); TryOpen(); requireRecompose = false; } } , 100); }
private GuiComposer ComposeDialog(EnumDialogType dlgType) { GuiComposer compo; ElementBounds mapBounds = ElementBounds.Fixed(0, 28, mapWidth, mapHeight); ElementBounds layerList = mapBounds.RightCopy().WithFixedSize(1, 350); ElementBounds bgBounds = ElementBounds.Fill.WithFixedPadding(3); bgBounds.BothSizing = ElementSizing.FitToChildren; bgBounds.WithChildren(mapBounds, layerList); ElementBounds dialogBounds = ElementStdBounds.AutosizedMainDialog .WithAlignment(EnumDialogArea.CenterMiddle) .WithFixedAlignmentOffset(-GuiStyle.DialogToScreenPadding, 0); if (dlgType == EnumDialogType.HUD) { mapBounds = ElementBounds.Fixed(0, 0, 250, 250); bgBounds = ElementBounds.Fill.WithFixedPadding(2); bgBounds.BothSizing = ElementSizing.FitToChildren; bgBounds.WithChildren(mapBounds); dialogBounds = ElementStdBounds.AutosizedMainDialog .WithAlignment(EnumDialogArea.RightTop) .WithFixedAlignmentOffset(-GuiStyle.DialogToScreenPadding, GuiStyle.DialogToScreenPadding); compo = hudDialog; } else { compo = fullDialog; } Cuboidd beforeBounds = null; if (compo != null) { beforeBounds = (compo.GetElement("mapElem") as GuiElementMap)?.CurrentBlockViewBounds; compo.Dispose(); } compo = capi.Gui .CreateCompo("worldmap" + dlgType, dialogBounds) .AddShadedDialogBG(bgBounds, false) .AddIf(dlgType == EnumDialogType.Dialog) .AddDialogTitleBar("World Map", OnTitleBarClose) .AddInset(mapBounds, 2) .EndIf() .BeginChildElements(bgBounds) .AddHoverText("", CairoFont.WhiteDetailText(), 350, mapBounds.FlatCopy(), "hoverText") .AddInteractiveElement(new GuiElementMap(capi.ModLoader.GetModSystem <WorldMapManager>().MapLayers, capi, mapBounds, dlgType == EnumDialogType.HUD), "mapElem") .EndChildElements() .Compose() ; compo.OnRecomposed += SingleComposer_OnRecomposed; GuiElementMap mapElem = compo.GetElement("mapElem") as GuiElementMap; if (beforeBounds != null) { mapElem.chunkViewBoundsBefore = beforeBounds.ToCuboidi().Div(capi.World.BlockAccessor.ChunkSize); } mapElem.viewChanged = viewChanged; mapElem.ZoomAdd(1, 0.5f, 0.5f); var hoverTextElem = compo.GetHoverText("hoverText"); hoverTextElem.SetAutoWidth(true); if (listenerId == 0) { listenerId = capi.Event.RegisterGameTickListener( (dt) => { if (!IsOpened()) { return; } GuiElementMap singlec = SingleComposer.GetElement("mapElem") as GuiElementMap; singlec?.EnsureMapFullyLoaded(); if (requireRecompose) { var dlgtype = dialogType; capi.ModLoader.GetModSystem <WorldMapManager>().ToggleMap(dlgtype); capi.ModLoader.GetModSystem <WorldMapManager>().ToggleMap(dlgtype); requireRecompose = false; } } , 100); } capi.World.FrameProfiler.Mark("composeworldmap"); return(compo); }