geometry rewrite uncomplete

This commit is contained in:
Nitload
2023-04-17 03:25:02 +08:00
parent 06899dab7e
commit a58537a003
24 changed files with 172 additions and 255 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -5
View File
@@ -9,11 +9,7 @@ namespace StgSharp.Control
{ {
public static void Point(Point p) public static void Point(Point p)
{ {
StgSharp.ContainerNode<Point> _cache = p._id; GameTimeLine._currentPool.pointContainer.Remove(p);
_cache.Previous.Next = _cache.Next;
_cache.Next.Previous = _cache.Previous;
_cache.Next = default;
_cache.Previous = default;
} }
+9 -42
View File
@@ -1,5 +1,4 @@
using Steamworks; using StgSharp.Linear;
using StgSharp.Linear;
using StgSharp.Math; using StgSharp.Math;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
@@ -30,46 +29,14 @@ namespace StgSharp.Geometries
public override Point RefOrigin => _basePoint; public override Point RefOrigin => _basePoint;
public override Point RefPoint => _center; public override Point RefPoint01 => _center;
public override Point RefVec01 => _beginPoint; public override Point RefPoint02 => _beginPoint;
public override Point RefVec02 => _endPoint; public override Point RefPoint03 => _endPoint;
public override RenderMode renderMode => _renderMode; public override RenderMode renderMode => _renderMode;
internal sealed override void CalcVec01(uint tick)
{
_center._position = _basePoint._position + MoveCenter(tick);
}
internal sealed override void CalcVec02(vec3d vec, uint tick)
{
_beginPoint._position = vec + UpdateRadius(tick);
}
internal sealed override void CalcVec03(vec3d vec, uint tick)
{
_endPoint._position = vec + UpdateAngle(tick);
}
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 MoveCenter(uint tick) => default; public virtual vec3d MoveCenter(uint tick) => default;
public virtual vec3d UpdateRadius(uint tick) => default; public virtual vec3d UpdateRadius(uint tick) => default;
@@ -79,16 +46,16 @@ namespace StgSharp.Geometries
internal override void OnRender(uint tick) internal override void OnRender(uint tick)
{ {
tick-=bornTick; tick-=bornTick;
CalcVec01(tick); _center._position = _basePoint._position + MoveCenter(tick);
switch (_renderMode) switch (_renderMode)
{ {
case RenderMode.BasePoint: case RenderMode.BasePoint:
CalcVec02(_basePoint._position,tick); _beginPoint._position = _basePoint._position + UpdateRadius(tick);
CalcVec03(_basePoint._position,tick); _endPoint._position = _basePoint._position + UpdateAngle(tick);
break; break;
case RenderMode.RefPoint: case RenderMode.RefPoint:
CalcVec02(_center._position,tick); _beginPoint._position = _center._position + UpdateRadius(tick);
CalcVec03(_center._position, tick); _endPoint._position = _center._position + UpdateAngle(tick);
break; break;
default: default:
break; break;
+8 -37
View File
@@ -17,11 +17,11 @@ namespace StgSharp.Geometries
public override Point RefOrigin => _baseCenter; public override Point RefOrigin => _baseCenter;
public override Point RefPoint => _center; public override Point RefPoint01 => _center;
public override Point RefVec01 => _pointOnCircle; public override Point RefPoint02 => _pointOnCircle;
public override Point RefVec02 => _pointOnPlain; public override Point RefPoint03 => _pointOnPlain;
public override RenderMode renderMode => _renderMode; public override RenderMode renderMode => _renderMode;
@@ -35,35 +35,6 @@ namespace StgSharp.Geometries
bornTick = tickCounter._value; bornTick = tickCounter._value;
} }
internal override void CalcVec01(uint tick)
{
_center._position = _baseCenter._position + MoveCenter(tick);
}
internal override void CalcVec02(vec3d vec, uint tick)
{
_pointOnCircle._position = vec + UpdateRadius(tick);
}
internal override void CalcVec03(vec3d vec, uint tick)
{
_pointOnPlain._position = vec + UpdatePlain(tick);
}
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 MoveCenter(uint tick) => default; public virtual vec3d MoveCenter(uint tick) => default;
public virtual vec3d UpdateRadius(uint tick) => default; public virtual vec3d UpdateRadius(uint tick) => default;
@@ -88,16 +59,16 @@ namespace StgSharp.Geometries
internal override void OnRender(uint tick) internal override void OnRender(uint tick)
{ {
tick-=bornTick; tick-=bornTick;
CalcVec01(tick); _center._position = MoveCenter(tick);
switch (_renderMode) switch (_renderMode)
{ {
case RenderMode.BasePoint: case RenderMode.BasePoint:
CalcVec02(_baseCenter._position,tick); _pointOnCircle._position = _baseCenter._position + UpdateRadius(tick);
CalcVec03(_baseCenter._position,tick); _pointOnPlain._position = _baseCenter._position + UpdatePlain(tick);
break; break;
case RenderMode.RefPoint: case RenderMode.RefPoint:
CalcVec02(_center._position, tick); _pointOnCircle._position = _center._position + UpdateRadius(tick);
CalcVec03(_center._position, tick); _pointOnPlain._position = _center._position + UpdatePlain(tick);
break; break;
default: default:
break; break;
@@ -15,9 +15,9 @@ namespace StgSharp.Geometries
private readonly uint bornTick; private readonly uint bornTick;
public abstract Point RefOrigin { get; } public abstract Point RefOrigin { get; }
public abstract Point RefPoint{ get; } public abstract Point RefPoint01{ get; }
public abstract Point RefVec01{ get; } public abstract Point RefPoint02{ get; }
public abstract Point RefVec02{ get; } public abstract Point RefPoint03{ get; }
public uint BornTime => bornTick; public uint BornTime => bornTick;
public IPlainGeometry(uint bornTime) public IPlainGeometry(uint bornTime)
@@ -32,23 +32,6 @@ namespace StgSharp.Geometries
public IPlainGeometry() { } public IPlainGeometry() { }
internal abstract void CalcVec01(uint tick);
internal abstract void CalcVec02(vec3d vec, uint tick);
internal abstract void CalcVec03(vec3d vec, uint tick);
internal abstract void CalcVec04(vec3d vec, uint tick);
internal abstract void CalcVec05(vec3d vec, uint tick);
internal abstract void CalcVec06(vec3d vec, uint tick);
internal abstract void CalcVec07(vec3d vec, uint tick);
internal abstract void CalcVec08(vec3d vec, uint tick);
internal abstract void CalcVec09(vec3d vec, uint tick);
internal abstract void CalcVec10(vec3d vec, uint tick);
internal abstract void CalcVec11(vec3d vec, uint tick);
internal abstract void CalcVec12(vec3d vec, uint tick);
internal abstract void CalcVec13(vec3d vec, uint tick);
internal abstract void CalcVec14(vec3d vec, uint tick);
internal abstract void CalcVec15(vec3d vec, uint tick);
internal abstract void CalcVec16(vec3d vec, uint tick);
internal abstract void OnRender(uint tick); internal abstract void OnRender(uint tick);
-15
View File
@@ -65,21 +65,6 @@ namespace StgSharp.Geometries
_endPoint._position = vec + MoveEndPoint(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) public virtual vec3d MoveBeginPoint(uint tick)
=> movBegin.Invoke( GameTimeLine.tickCounter); => movBegin.Invoke( GameTimeLine.tickCounter);
-132
View File
@@ -1,132 +0,0 @@
using StgSharp.Linear;
using StgSharp.Math;
using System;
using System.Collections.Generic;
using System.Numerics;
using System.Text;
namespace StgSharp.Geometries
{
public class Polygon : IPlainGeometry
{
internal Point _refOrigin;
internal Point[] vertexArray ;
internal RenderMode _renderMode;
internal readonly int _vertexCount;
public override Point RefOrigin => _refOrigin;
public override Point RefPoint => vertexArray[0];
public override Point RefVec01 => throw new NotImplementedException();
public override Point RefVec02 => throw new NotImplementedException();
public override RenderMode renderMode => throw new NotImplementedException();
internal override void CalcVec01(uint tick)
{
throw new NotImplementedException();
}
internal override void CalcVec02(vec3d vec, uint tick)
{
throw new NotImplementedException();
}
internal override void CalcVec03(vec3d vec, uint tick)
{
throw new NotImplementedException();
}
internal override void CalcVec04(vec3d vec, uint tick)
{
throw new NotImplementedException();
}
internal override void CalcVec05(vec3d vec, uint tick)
{
throw new NotImplementedException();
}
internal override void CalcVec06(vec3d vec, uint tick)
{
throw new NotImplementedException();
}
internal override void CalcVec07(vec3d vec, uint tick)
{
throw new NotImplementedException();
}
internal override void CalcVec08(vec3d vec, uint tick)
{
throw new NotImplementedException();
}
internal override void CalcVec09(vec3d vec, uint tick)
{
throw new NotImplementedException();
}
internal override void CalcVec10(vec3d vec, uint tick)
{
throw new NotImplementedException();
}
internal override void CalcVec11(vec3d vec, uint tick)
{
throw new NotImplementedException();
}
internal override void CalcVec12(vec3d vec, uint tick)
{
throw new NotImplementedException();
}
internal override void CalcVec13(vec3d vec, uint tick)
{
throw new NotImplementedException();
}
internal override void CalcVec14(vec3d vec, uint tick)
{
throw new NotImplementedException();
}
internal override void CalcVec15(vec3d vec, uint tick)
{
throw new NotImplementedException();
}
internal override void CalcVec16(vec3d vec, uint tick)
{
throw new NotImplementedException();
}
internal override void OnRender(uint tick)
{
throw new NotImplementedException();
}
public override float SetArrayX()
{
throw new NotImplementedException();
}
public override float SetArrayY()
{
throw new NotImplementedException();
}
public override Line[] GetAllSides()
{
throw new NotImplementedException();
}
public override Plain GetPlain()
{
throw new NotImplementedException();
}
}
}
+93
View File
@@ -0,0 +1,93 @@
using Steamworks;
using StgSharp.Control;
using StgSharp.Linear;
using StgSharp.Math;
using System;
using System.Collections.Generic;
using System.Numerics;
using System.Text;
namespace StgSharp.Geometries
{
public class Polygon5 : IPlainGeometry
{
internal Point _refOrigin;
internal Point vertex1;
internal Point vertex2;
internal Point vertex3;
internal Point vertex4;
internal Point vertex5;
internal RenderMode _renderMode;
internal readonly int _vertexCount;
public override Point RefOrigin => _refOrigin;
public override Point RefPoint01 => vertex1;
public override Point RefPoint02 => vertex2;
public override Point RefPoint03 => vertex3;
public override RenderMode renderMode => throw new NotImplementedException();
public virtual vec3d movPoint01(uint tick)
{
return movP01Operation.Invoke(GameTimeLine.tickCounter);
}
internal GetLocationHandler movP01Operation = default;
public GetLocationHandler MovP01Operation { get => movP01Operation ; }
public virtual vec3d movPoint02(uint tick)
{
return movP02Operation.Invoke(GameTimeLine.tickCounter);
}
internal GetLocationHandler movP02Operation = default;
public GetLocationHandler MovP02Operation { get => movP02Operation ; }
public virtual vec3d movPoint03(uint tick)
{
return movP03Operation.Invoke(GameTimeLine.tickCounter);
}
internal GetLocationHandler movP03Operation = default;
public GetLocationHandler MovP03Operation { get => movP03Operation; }
public virtual vec3d movPoint04(uint tick)
{
return movP04Operation.Invoke(GameTimeLine.tickCounter);
}
internal GetLocationHandler movP04Operation = default;
public GetLocationHandler MovP04Operation { get => movP04Operation; }
public virtual vec3d movPoint05(uint tick)
{
return movP05Operation.Invoke(GameTimeLine.tickCounter);
}
internal GetLocationHandler movP05Operation = default;
public GetLocationHandler MovP05Operation { get => movP05Operation; }
internal override void OnRender(uint tick)
{
}
public override float SetArrayX()
{
throw new NotImplementedException();
}
public override float SetArrayY()
{
throw new NotImplementedException();
}
public override Line[] GetAllSides()
{
throw new NotImplementedException();
}
public override Plain GetPlain()
{
throw new NotImplementedException();
}
}
}
@@ -21,6 +21,14 @@ namespace StgSharp
_id = id; _id = id;
} }
} }
internal void SelfDestrcut()
{
_id._previous._next = _id._next;
_id._next._previous = _id._previous;
this._id = default;
}
} }
+12
View File
@@ -49,6 +49,18 @@ namespace StgSharp
} }
} }
public void Remove(T node)
{
foreach (INode<T> item in this)
{
if (item == node)
{
node.SelfDestrcut();
break;
}
}
}
public void RemoveTail() public void RemoveTail()
{ {
if (_tail==default(ContainerNode<T>)) if (_tail==default(ContainerNode<T>))
+37 -3
View File
@@ -40,10 +40,44 @@ namespace StgSharp
} }
public Pool( Geometries.Rectangle area) public Pool( Geometries.Rectangle area)
{ {
if (Calc.Abs(area._centerToCorner1.X) == Calc.Abs(area._centerToCorner2.X) vec3d vec = area._vertex1._position - area._vertex2._position;
&& Calc.Abs(area._centerToCorner1.Y) == Calc.Abs(area._centerToCorner2.Y)) if ((vec.X==0||vec.Y==0)&&vec.Z==0)
{ {
Line[] barders = area.GetAllSides();
if (area._vertex1.X>0)
{
if (area._vertex1.Y>0)
{
topBoader = barders[3];
rightBoader = barders[0];
bottomBoader = barders[1];
leftBoader = barders[2];
}
else
{
topBoader = barders[2];
rightBoader = barders[3];
bottomBoader = barders[0];
leftBoader = barders[1];
}
}
else
{
if (area._vertex1.Y > 0)
{
topBoader = barders[3];
rightBoader = barders[0];
bottomBoader = barders[1];
leftBoader = barders[2];
}
else
{
topBoader = barders[2];
rightBoader = barders[3];
bottomBoader = barders[0];
leftBoader = barders[1];
}
}
} }
} }
@@ -1 +1 @@
8c8a835e66daaf164fa2e6efae7c02f12143e5b9 b06fbbdaa0e28e28634094c37b24ee8c2c2f1201