Advertisement
klassekatze

SE HudProjection

May 2nd, 2023
982
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.44 KB | None | 0 0
  1. using Sandbox.Game.EntityComponents;
  2. using Sandbox.ModAPI.Ingame;
  3. using Sandbox.ModAPI.Interfaces;
  4. using SpaceEngineers.Game.ModAPI.Ingame;
  5. using System;
  6. using System.Collections;
  7. using System.Collections.Generic;
  8. using System.Collections.Immutable;
  9. using System.Linq;
  10. using System.Text;
  11. using VRage;
  12. using VRage.Collections;
  13. using VRage.Game;
  14. using VRage.Game.Components;
  15. using VRage.Game.GUI.TextPanel;
  16. using VRage.Game.ModAPI.Ingame;
  17. using VRage.Game.ModAPI.Ingame.Utilities;
  18. using VRage.Game.ObjectBuilders.Definitions;
  19. using VRageMath;
  20.  
  21. namespace IngameScript
  22. {
  23.     partial class Program : MyGridProgram
  24.     {
  25.         IMyTextPanel debug = null;
  26.  
  27.         IMyTextPanel render = null;
  28.         IMyCockpit cockpit = null;
  29.         public Program()
  30.         {
  31.             Runtime.UpdateFrequency = UpdateFrequency.Update10;
  32.             render = (IMyTextPanel)GridTerminalSystem.GetBlockWithName("render");
  33.             debug = (IMyTextPanel)GridTerminalSystem.GetBlockWithName("debug");
  34.             cockpit = (IMyCockpit)GridTerminalSystem.GetBlockWithName("Cockpit");
  35.         }
  36.         //GPS:TEST GPS:4559.53:2980.27:-2957.5:#FFB775F1:
  37.         Vector3D test = new Vector3D(4559.53, 2980.27, -2957.5);
  38.         public void Save()
  39.         {
  40.            
  41.         }
  42.         Vector2 testr;
  43.         public void Main(string argument, UpdateType updateSource)
  44.         {
  45.            
  46.  
  47.             Vector3D offset = test - cockpit.GetPosition();
  48.             debug.WriteText(offset.X + "," + offset.Y + "," + offset.Z+"\n");
  49.             Vector3D offset_local = Vector3D.TransformNormal(offset, Matrix.Transpose(cockpit.WorldMatrix));
  50.  
  51.             double dist_to_screen = Me.CubeGrid.GridSize * 1.5;//1.5 blocks ey
  52.             //Base6Directions.Direction
  53.             Vector3D offset_screen_space = offset_local.Normalized();
  54.             debug.WriteText(offset_screen_space.X + "," + offset_screen_space.Y + "," + offset_screen_space.Z + "\n", true);
  55.             offset_screen_space = offset_screen_space / Math.Abs(offset_screen_space.Z) * dist_to_screen;//normalize then project out to the screen
  56.  
  57.             testr = new Vector2((float)offset_screen_space.X, (float)offset_screen_space.Y);
  58.  
  59.             debug.WriteText(offset_screen_space.X + "," + offset_screen_space.Y + "," + offset_screen_space.Z + "\n",true);
  60.  
  61.             Draw(render);
  62.             Echo("" + t++);
  63.         }
  64.         int t = 0;
  65.  
  66.         float _textScale = 0.5f;
  67.         Vector2 _screenMarkerSize = new Vector2(40, 40);
  68.         void Draw(IMyTextSurface surface)
  69.         {
  70.             surface.ContentType = ContentType.SCRIPT;
  71.             surface.Script = "";
  72.             var textureSize = surface.TextureSize;
  73.             var surfaceSize = surface.SurfaceSize;
  74.             var center = textureSize * 0.5f;
  75.             var offset = (textureSize - surfaceSize) * 0.5f;
  76.  
  77.             var scrw = (textureSize - surfaceSize);
  78.  
  79.             var textSize = _textScale; // * 512f / surfaceSize.Y;
  80.  
  81.             using (var frame = surface.DrawFrame())
  82.             {
  83.                 MySprite sprite;
  84.                 Vector2 pos = new Vector2(testr.X * surfaceSize.X, -testr.Y * surfaceSize.Y) * 0.5f;
  85.                 // Draw corners
  86.                 sprite = MySprite.CreateSprite("SquareSimple",/* _screenMarkerSize * 0.5f + */center + pos, _screenMarkerSize);
  87.                 sprite.Color = Color.Red;
  88.                 frame.Add(sprite);
  89.  
  90.             }
  91.  
  92.            
  93.         }
  94.     }
  95. }
  96.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement