using StgSharp; using StgSharp.Math; using System; using System.Collections.Generic; using System.Data.SqlTypes; using System.Drawing; using System.Runtime.InteropServices; using System.Text; namespace StgSharp.Geometries { public unsafe class Point : INode, INullable { internal vec3d* positionPtr; internal Point(vec3d* ptr) { positionPtr = ptr; } public vec3d Position { get { return *positionPtr; } set { *positionPtr = value; } } public float X { get { return (*this.positionPtr).X; } set { (*this.positionPtr).X = value; } } public float Y { get { return (*this.positionPtr).Y; } set { (*this.positionPtr).Y = value; } } public float Z { get { return (*this.positionPtr).Z; } set { (*this.positionPtr).Z = value; } } internal readonly bool isVertex; public bool IsVertex => isVertex; bool INullable.IsNull { get; } /// /// Update the coordinate of the point. If this is a moving point, /// (Points on sides or surface if other geometry items) /// please do not define any motion here, codes will be ignored by program /// /// Time passes since the program begin, counted by frames public virtual void Update(uint tick) {} public bool IsInGeometry(IPlainGeometry geo) { throw new NotImplementedException(); } public bool IsOnPlain(IPlainGeometry geo) { return (*this.positionPtr) * geo.GetPlain().plainParameter == 1; } } }