public void RenderScore(DeviceContext graphics, Matrix4F matrix, Vector3D renderOrigin, Entity entity, AvatarController avatarController, Timestep renderTimestep, RenderMode renderMode) { if (renderMode != RenderMode.Normal) { return; } var logic = entity.TileStateEntityLogic as SoccerTotemTileStateEntityLogic; if (logic == null || !logic.HasGameStarted()) { return; } var delta = (logic.GetTileCenter() - renderOrigin).ToVector3F(); var m1 = Matrix4F.CreateTranslation(logic.Component.BlueTeamScorePos.ToVector3F()) .RotateUnitY(logic.GetRotationInRadians()) .Translate(delta); logic.Component.BlueNumbers[logic.BlueTeamScore].Render(graphics, m1.Multiply(matrix)); var m2 = Matrix4F.CreateTranslation(logic.Component.RedTeamScorePos.ToVector3F()) .RotateUnitY(logic.GetRotationInRadians()) .Translate(delta); logic.Component.RedNumbers[logic.RedTeamScore].Render(graphics, m2.Multiply(matrix)); }
public override void Render(object opaqueContext, ViewControl vc) { Matrix4F normWorld = GetManipulatorMatrix(); if (normWorld == null) { return; } var context = opaqueContext as GUILayer.SimpleRenderingContext; if (context == null) { return; } Vec3F pos = normWorld.Translation; float s = Util.CalcAxisScale(vc.Camera, pos, AxisLength, vc.Height); bool highlight = m_hitRegion == HitRegion.XYSquare; Color centerCubeColor = highlight ? Color.Gold : Color.White; Vec3F sv = new Vec3F(s, s, s); Vec3F centerCubeScale = sv * CenterCubeSize; Matrix4F scale = new Matrix4F(); scale.Scale(centerCubeScale); Matrix4F centerCubeXform = scale * normWorld; Util3D.DrawCube(context, centerCubeXform, centerCubeColor); Matrix4F arrowScale = new Matrix4F(); arrowScale.Scale(0.75f); Util3D.DrawArrowCap( context, arrowScale * Matrix4F.CreateTranslation(new Vec3F(1.0f, 0.0f, -0.5f)) * centerCubeXform, highlight ? Color.Gold : Color.Red); Util3D.DrawArrowCap( context, arrowScale * Matrix4F.RotAxisRH(Vec3F.ZAxis, Math.PI) * Matrix4F.CreateTranslation(new Vec3F(-1.0f, 0.0f, -0.5f)) * centerCubeXform, highlight ? Color.Gold : Color.Red); Util3D.DrawArrowCap( context, arrowScale * Matrix4F.RotAxisRH(Vec3F.ZAxis, .5 * Math.PI) * Matrix4F.CreateTranslation(new Vec3F(0.0f, 1.0f, -0.5f)) * centerCubeXform, highlight ? Color.Gold : Color.Green); Util3D.DrawArrowCap( context, arrowScale * Matrix4F.RotAxisRH(Vec3F.ZAxis, 1.5f * Math.PI) * Matrix4F.CreateTranslation(new Vec3F(0.0f, -1.0f, -0.5f)) * centerCubeXform, highlight ? Color.Gold : Color.Green); }
/// <summary> /// Render the item icons /// </summary> /// <param name="graphics"></param> /// <param name="matrix"></param> /// <param name="renderOrigin"></param> /// <param name="avatar"></param> /// <param name="avatarPainter"></param> /// <param name="universe"></param> public void DrawItemVoxels(DeviceContext graphics, Matrix4F matrix, Entity avatar) { if (!this.IsShowing) { return; } graphics.PushRenderState(); Matrix4F projectionMatrix = graphics.GetProjectionMatrix(); Matrix4F overlayMatrix = graphics.GetOverlayMatrix(); graphics.PushShader(); graphics.SetShader(graphics.GetShader("VoxelOverlayStipple")); double rotation = ClientContext.OverlayController.IsMenuOpen() ? 0 : (DateTime.UtcNow - new DateTime(0L)).TotalMilliseconds * 0.001 % 6.2831853071795862; int activeIndex = avatar.Inventory.ActiveItemIndex(); for (int i = 0; i < 10; i++) { ItemStack item = avatar.Inventory.GetHotbarItem(i); if (item.Item != Item.NullItem) { Vector2F p = HotbarManager.Instance.Controller.GetSlotPosition(i); p *= Constants.UIZoomFactor; Vector2F pp = graphics.ScreenPosToProjectionPos(p); Matrix4F movedMatrix2 = Matrix4F.CreateTranslation(new Vector3F(pp.X, pp.Y, 0f)); movedMatrix2 = Matrix4F.Multiply(overlayMatrix, movedMatrix2); graphics.SetProjectionMatrix(movedMatrix2); Vector2I viewPortSize = graphics.GetViewPortSize(); float itemScale = Constants.ItemRenderingScale; itemScale *= Constants.UIZoomFactor / ((float)viewPortSize.Y / Constants.ViewPortScaleThreshold.Y); if (i == activeIndex) { graphics.SetShader(graphics.GetShader("VoxelOverlay")); } ClientContext.ItemRendererManager.RenderIcon(item.Item, graphics, Matrix4F.CreateScale(itemScale).Rotate((float)rotation, Vector3F.Up).Rotate(-0.35f, Vector3F.Left) .Translate(new Vector3F(0f, 0f, -0.2f)) .Multiply(matrix)); if (i == activeIndex) { graphics.SetShader(graphics.GetShader("VoxelOverlayStipple")); } } } graphics.PopShader(); graphics.SetProjectionMatrix(projectionMatrix); graphics.PopRenderState(); }
public override void Render(DeviceContext graphics, Matrix4F matrix, Vector3D renderOrigin, Entity entity, AvatarController avatarController, Timestep renderTimestep, RenderMode renderMode) { if (renderMode != RenderMode.Normal) { return; } var logic = entity.TileStateEntityLogic as CenterTileStateEntityLogic; if (logic == null || _numberToDraw < 0) { return; } var delta = (logic.GetSpawningPosition() - renderOrigin).ToVector3F(); var m = Matrix4F.CreateTranslation(delta); logic.Component.Numbers[_numberToDraw].Render(graphics, m.Multiply(matrix)); }
public override ItemRenderer ReadyRenderer(Item item) { _inHandMatrix = Matrix4F.CreateTranslation(item.Configuration.UsageOffset).Multiply(item.Configuration.RotationMatrix); return(this); }