public static void RenderAndDeleteTrajectory(IntPtr trajectory_iterator, UnityEngine.Color colour, Style style) { try { Vector3d?previous_point = null; UnityEngine.GL.Color(colour); int size = trajectory_iterator.IteratorSize(); for (int i = 0; !trajectory_iterator.IteratorAtEnd(); trajectory_iterator.IteratorIncrement(), ++i) { Vector3d current_point = (Vector3d)trajectory_iterator.IteratorGetXYZ(); if (previous_point.HasValue) { if (style == Style.FADED) { colour.a = (float)(4 * i + size) / (float)(5 * size); UnityEngine.GL.Color(colour); } if (style != Style.DASHED || i % 2 == 1) { AddSegment(previous_point.Value, current_point, hide_behind_bodies: true); } } previous_point = current_point; } } finally { Interface.IteratorDelete(ref trajectory_iterator); } }
public void RenderAndDeleteApsides(IntPtr apsis_iterator, CelestialBody celestial, MapObject.ObjectType type, NodeSource source) { for (; !apsis_iterator.IteratorAtEnd(); apsis_iterator.IteratorIncrement()) { Vector3d apsis = (Vector3d)apsis_iterator.IteratorGetXYZ(); MapNodeProperties node_properties; node_properties.object_type = type; node_properties.celestial = celestial; node_properties.world_position = apsis; node_properties.source = source; if (pool_index_ == nodes_.Count) { UnityEngine.Debug.LogWarning("Adding node to pool"); AddMapNodeToPool(); } properties_[nodes_[pool_index_++]] = node_properties; } Interface.IteratorDelete(ref apsis_iterator); }
public static void RenderAndDeleteTrajectory(IntPtr trajectory_iterator, UnityEngine.Color colour, Style style) { try { Vector3d? previous_point = null; UnityEngine.GL.Color(colour); int size = trajectory_iterator.IteratorSize(); for (int i = 0; !trajectory_iterator.IteratorAtEnd(); trajectory_iterator.IteratorIncrement(), ++i) { Vector3d current_point = (Vector3d)trajectory_iterator.IteratorGetXYZ(); if (previous_point.HasValue) { if (style == Style.FADED) { colour.a = (float)(4 * i + size) / (float)(5 * size); UnityEngine.GL.Color(colour); } if (style != Style.DASHED || i % 2 == 1) { AddSegment(previous_point.Value, current_point, hide_behind_bodies : true); } } previous_point = current_point; } } finally { Interface.IteratorDelete(ref trajectory_iterator); } }