using Steamworks; using StgSharp; using StgSharp.Control; using StgSharp.Linear; using StgSharp.Math; using System; using System.Collections.Generic; using System.Text; namespace StgSharp.Geometries { public class Line:IPlainGeometry { internal Point _basePoint = default ; internal Point _beginPoint = default ; internal Point _endPoint = default; internal GetLocationHandler movBegin; internal GetLocationHandler movEnd; internal RenderMode _renderMode; internal readonly uint bornTick; public override Point RefOrigin => _basePoint; public override Point RefPoint => _beginPoint; public override Point RefVec01 => _endPoint; public override Point RefVec02 => default; public override RenderMode renderMode => _renderMode; public Line(uint bornTime) : base(bornTime) { bornTick = bornTime; } public Line(Counter tickCounter) : base(tickCounter) { bornTick = tickCounter._value; } public Line(Point begin, Point end) { this._beginPoint = begin; this._endPoint = end; } public Line() { } public override float SetArrayX() { throw new NotImplementedException(); } public override float SetArrayY() { throw new NotImplementedException(); } internal sealed override void CalcVec01(uint tick) { _beginPoint._position = _basePoint._position + MoveBeginPoint(tick); } internal sealed override void CalcVec02(vec3d vec, uint tick) { _endPoint._position = vec + MoveEndPoint(tick); } internal sealed override void CalcVec03(vec3d vec, uint tick) => throw new UnusedVertexException(); internal sealed override void CalcVec04(vec3d vec, uint tick) => throw new UnusedVertexException(); internal sealed override void CalcVec05(vec3d vec, uint tick) => throw new UnusedVertexException(); internal sealed override void CalcVec06(vec3d vec, uint tick) => throw new UnusedVertexException(); internal sealed override void CalcVec07(vec3d vec, uint tick) => throw new UnusedVertexException(); internal sealed override void CalcVec08(vec3d vec, uint tick) => throw new UnusedVertexException(); internal sealed override void CalcVec09(vec3d vec, uint tick) => throw new UnusedVertexException(); internal sealed override void CalcVec10(vec3d vec, uint tick) => throw new UnusedVertexException(); internal sealed override void CalcVec11(vec3d vec, uint tick) => throw new UnusedVertexException(); internal sealed override void CalcVec12(vec3d vec, uint tick) => throw new UnusedVertexException(); internal sealed override void CalcVec13(vec3d vec, uint tick) => throw new UnusedVertexException(); internal sealed override void CalcVec14(vec3d vec, uint tick) => throw new UnusedVertexException(); internal sealed override void CalcVec15(vec3d vec, uint tick) => throw new UnusedVertexException(); internal sealed override void CalcVec16(vec3d vec, uint tick) => throw new UnusedVertexException(); //计算线起点的方法,通过对线的派生的重写实现功能 public virtual vec3d MoveBeginPoint(uint tick) => movBegin.Invoke( GameTimeLine.tickCounter); //计算线重点的方法,通过对线的派生的重写实现功能 public virtual vec3d MoveEndPoint(uint tick) => movEnd.Invoke( GameTimeLine.tickCounter); internal override void OnRender(uint tick) { tick -= bornTick; CalcVec01(tick); switch (_renderMode) { case RenderMode.BasePoint: CalcVec02(_basePoint._position, tick); break; case RenderMode.RefPoint: CalcVec02(_beginPoint._position, tick); break; default: break; } } public override Line[] GetAllSides() { throw new NotImplementedException(); } public override Plain GetPlain() { throw new ToUpperDimensionException(); } } }