Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using Sandbox.Game.EntityComponents;
- using Sandbox.ModAPI.Ingame;
- using Sandbox.ModAPI.Interfaces;
- using SpaceEngineers.Game.ModAPI.Ingame;
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.Collections.Immutable;
- using System.Linq;
- using System.Text;
- using VRage;
- using VRage.Collections;
- using VRage.Game;
- using VRage.Game.Components;
- using VRage.Game.GUI.TextPanel;
- using VRage.Game.ModAPI.Ingame;
- using VRage.Game.ModAPI.Ingame.Utilities;
- using VRage.Game.ObjectBuilders.Definitions;
- using VRageMath;
- namespace IngameScript
- {
- partial class Program : MyGridProgram
- {
- IMyTextPanel debug = null;
- IMyTextPanel render = null;
- IMyCockpit cockpit = null;
- public Program()
- {
- Runtime.UpdateFrequency = UpdateFrequency.Update10;
- render = (IMyTextPanel)GridTerminalSystem.GetBlockWithName("render");
- debug = (IMyTextPanel)GridTerminalSystem.GetBlockWithName("debug");
- cockpit = (IMyCockpit)GridTerminalSystem.GetBlockWithName("Cockpit");
- }
- //GPS:TEST GPS:4559.53:2980.27:-2957.5:#FFB775F1:
- Vector3D test = new Vector3D(4559.53, 2980.27, -2957.5);
- public void Save()
- {
- }
- Vector2 testr;
- public void Main(string argument, UpdateType updateSource)
- {
- Vector3D offset = test - cockpit.GetPosition();
- debug.WriteText(offset.X + "," + offset.Y + "," + offset.Z+"\n");
- Vector3D offset_local = Vector3D.TransformNormal(offset, Matrix.Transpose(cockpit.WorldMatrix));
- double dist_to_screen = Me.CubeGrid.GridSize * 1.5;//1.5 blocks ey
- //Base6Directions.Direction
- Vector3D offset_screen_space = offset_local.Normalized();
- debug.WriteText(offset_screen_space.X + "," + offset_screen_space.Y + "," + offset_screen_space.Z + "\n", true);
- offset_screen_space = offset_screen_space / Math.Abs(offset_screen_space.Z) * dist_to_screen;//normalize then project out to the screen
- testr = new Vector2((float)offset_screen_space.X, (float)offset_screen_space.Y);
- debug.WriteText(offset_screen_space.X + "," + offset_screen_space.Y + "," + offset_screen_space.Z + "\n",true);
- Draw(render);
- Echo("" + t++);
- }
- int t = 0;
- float _textScale = 0.5f;
- Vector2 _screenMarkerSize = new Vector2(40, 40);
- void Draw(IMyTextSurface surface)
- {
- surface.ContentType = ContentType.SCRIPT;
- surface.Script = "";
- var textureSize = surface.TextureSize;
- var surfaceSize = surface.SurfaceSize;
- var center = textureSize * 0.5f;
- var offset = (textureSize - surfaceSize) * 0.5f;
- var scrw = (textureSize - surfaceSize);
- var textSize = _textScale; // * 512f / surfaceSize.Y;
- using (var frame = surface.DrawFrame())
- {
- MySprite sprite;
- Vector2 pos = new Vector2(testr.X * surfaceSize.X, -testr.Y * surfaceSize.Y) * 0.5f;
- // Draw corners
- sprite = MySprite.CreateSprite("SquareSimple",/* _screenMarkerSize * 0.5f + */center + pos, _screenMarkerSize);
- sprite.Color = Color.Red;
- frame.Add(sprite);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement