New IO structure, unexpexted error in C code
This commit is contained in:
@@ -66,14 +66,14 @@
|
||||
<Position X="19.75" Y="0.5" Width="1.5" />
|
||||
<TypeIdentifier>
|
||||
<HashCode>AgAAAAAAAAAAogAAAABAAAAAAACAAAAAAAAAAAAAAAA=</HashCode>
|
||||
<FileName>Logic\ContainerNode.cs</FileName>
|
||||
<FileName>Logic\LinkedListNode.cs</FileName>
|
||||
</TypeIdentifier>
|
||||
</Class>
|
||||
<Class Name="StgSharp.ContainerNode<T>" Collapsed="true" BaseTypeListCollapsed="true">
|
||||
<Class Name="StgSharp.LinkedListNode<T>" Collapsed="true" BaseTypeListCollapsed="true">
|
||||
<Position X="44.75" Y="0.5" Width="1.5" />
|
||||
<TypeIdentifier>
|
||||
<HashCode>BhAAAAAAAAAAAgAAAAAABAAAAAAAAAAoAAAgAAAAAAA=</HashCode>
|
||||
<FileName>Logic\ContainerNode.cs</FileName>
|
||||
<FileName>Logic\LinkedListNode.cs</FileName>
|
||||
</TypeIdentifier>
|
||||
<Lollipop Position="0.2" Collapsed="true" />
|
||||
</Class>
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
using StgSharp.Control;
|
||||
using StgSharp.Geometries;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp
|
||||
{
|
||||
@@ -21,8 +17,8 @@ namespace StgSharp
|
||||
|
||||
public static void AddPool(Pool pool)
|
||||
{
|
||||
ProgramTimeLine.allPool.Add(pool);
|
||||
ProgramTimeLine._currentPool = pool;
|
||||
TimeLine.allPool.Add(pool);
|
||||
TimeLine._currentPool = pool;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,16 +1,10 @@
|
||||
using System;
|
||||
using StgSharp.Control;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp
|
||||
namespace StgSharp
|
||||
{
|
||||
|
||||
public static partial class Instruction
|
||||
{
|
||||
//method used for chaging the value of paameters will be listed here
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,22 +1,19 @@
|
||||
using StgSharp.Geometries;
|
||||
using StgSharp.Math;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp
|
||||
{
|
||||
public static unsafe partial class Geometry
|
||||
public static unsafe partial class Geometry
|
||||
{
|
||||
public static unsafe Triangle InitTriagnle<T>(
|
||||
vec3d vertex1,
|
||||
vec3d vertex2,
|
||||
vec3d vertex3
|
||||
)where T:Triangle
|
||||
) where T : Triangle
|
||||
{
|
||||
Triangle t = new Triangle();
|
||||
|
||||
|
||||
|
||||
|
||||
return t;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,25 +1,22 @@
|
||||
using StgSharp.Geometries;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp
|
||||
{
|
||||
internal static unsafe partial class internalIO
|
||||
{
|
||||
[DllImport("StgSharpGraphics.dll", EntryPoint = "initTriangle")]
|
||||
internal static unsafe extern triangleVertexArray initTriangleVertex();
|
||||
internal static extern unsafe triangleVertexArray initTriangleVertex();
|
||||
|
||||
[DllImport("StgSharpGraphics.dll", EntryPoint = "initPolygon4")]
|
||||
internal static unsafe extern Polygon4VertexArray initPolygon4Vertex();
|
||||
internal static extern unsafe Polygon4VertexArray initPolygon4Vertex();
|
||||
|
||||
[DllImport("StgSharpGraphics.dll", EntryPoint = "initPolygon5")]
|
||||
internal static unsafe extern Polygon5VertexArray initPolygon5Vertex();
|
||||
internal static extern unsafe Polygon5VertexArray initPolygon5Vertex();
|
||||
|
||||
[DllImport("StgSharpGraphics.dll", EntryPoint = "inputTriangle")]
|
||||
internal static unsafe extern void internalLoadTriangle(triangleVertexArray triangle);
|
||||
internal static extern unsafe void internalLoadTriangle(triangleVertexArray triangle);
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,35 +1,47 @@
|
||||
using StgSharp.Graphics;
|
||||
using StgSharp.Control;
|
||||
using StgSharp.Graphics;
|
||||
using StgSharp.Graphics.GL;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp
|
||||
{
|
||||
internal static partial class internalIO
|
||||
{
|
||||
[DllImport("StgSharpGraphics.dll", EntryPoint = "InitGL")]
|
||||
[DllImport("StgSharpGraphics.dll",
|
||||
EntryPoint = "loadGLApi", CallingConvention = CallingConvention.Cdecl)]
|
||||
internal static extern GraphicIOPack InternalInitGraphicApi();
|
||||
|
||||
[DllImport("StgSharpGraphics.dll",
|
||||
EntryPoint = "InitGL", CallingConvention = CallingConvention.Cdecl)]
|
||||
internal static extern unsafe void InternalInitGL();
|
||||
|
||||
[DllImport("StgSharpGraphics.dll", EntryPoint = "InitWindow")]
|
||||
[DllImport("StgSharpGraphics.dll",
|
||||
EntryPoint = "InitWindow", CallingConvention = CallingConvention.Cdecl)]
|
||||
internal static extern unsafe IntPtr InternalInitWindow(formInfo win);
|
||||
|
||||
[DllImport("StgSharpGraphics.dll", EntryPoint = "CompileShader")]
|
||||
internal static unsafe extern void InternalCompileShader
|
||||
[DllImport("StgSharpGraphics.dll",
|
||||
EntryPoint = "CompileShader", CallingConvention = CallingConvention.Cdecl)]
|
||||
internal static extern unsafe void InternalCompileShader
|
||||
(
|
||||
shaderObject* shaderObj
|
||||
);
|
||||
|
||||
[DllImport("StgSharpGraphics.dll", EntryPoint = "RenderWindow")]
|
||||
internal static unsafe extern void InternalRenderWindow
|
||||
[DllImport("StgSharpGraphics.dll", EntryPoint = "SSGraphicShouldWindowClose",
|
||||
CallingConvention = CallingConvention.Cdecl)]
|
||||
internal static extern unsafe int InternalShouldFormClose(IntPtr formPtr);
|
||||
|
||||
[DllImport("StgSharpGraphics.dll",
|
||||
EntryPoint = "RenderWindow", CallingConvention = CallingConvention.Cdecl)]
|
||||
internal static extern unsafe void InternalRenderWindow
|
||||
(
|
||||
IntPtr window,
|
||||
IntPtr window,
|
||||
formInfo info,
|
||||
shaderObject* shaderObj
|
||||
);
|
||||
|
||||
[DllImport("StgSharpGraphics.dll", EntryPoint = "TerminateWindow")]
|
||||
internal static unsafe extern void TerminateWindow(shaderObject* shaderObj);
|
||||
[DllImport("StgSharpGraphics.dll", EntryPoint = "TerminateWindow"
|
||||
, CallingConvention = CallingConvention.Cdecl)]
|
||||
internal static extern unsafe void TerminateWindow(shaderObject* shaderObj);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace StgSharp.Control
|
||||
{
|
||||
internal delegate void InternalInitGLDelegate();
|
||||
internal delegate IntPtr InternalGLcreateWindowDelegate
|
||||
(int width, int height, char[] tittle, IntPtr monitor, IntPtr share);
|
||||
internal delegate void InternalGLmakeContextCurrent(IntPtr window);
|
||||
internal delegate void InternalGLswapInterval(int interval);
|
||||
internal delegate void InternalGLclearColorDelegate
|
||||
(float red, float green, float blue, float alpha);
|
||||
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
internal struct GraphicIOPack
|
||||
{
|
||||
internal InternalInitGLDelegate InternalLoadGL;
|
||||
internal InternalGLcreateWindowDelegate InternalGLcreatWindow;
|
||||
internal InternalGLmakeContextCurrent InternalGLmakeContextCurrent;
|
||||
internal InternalGLswapInterval InternalGLswapInterval;
|
||||
internal InternalGLclearColorDelegate InternalGLclearColor;
|
||||
}
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Control
|
||||
{
|
||||
|
||||
public delegate int InitWindow(int width, int height);
|
||||
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct GraphicIOPack
|
||||
{
|
||||
public InitWindow initWindowPtr = default;
|
||||
|
||||
|
||||
|
||||
public GraphicIOPack()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,4 @@
|
||||
using StgSharp.Geometries;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Control
|
||||
{
|
||||
@@ -9,10 +6,10 @@ namespace StgSharp.Control
|
||||
{
|
||||
public static void Point(Point p)
|
||||
{
|
||||
ProgramTimeLine._currentPool._pointContainer.Remove(p);
|
||||
TimeLine._currentPool._pointContainer.Remove(p);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
using StgSharp.Entities;
|
||||
using StgSharp.Graphics;
|
||||
using StgSharp.Graphics.GL;
|
||||
using System;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Control
|
||||
{
|
||||
public static class ProgramTimeLine
|
||||
public static class TimeLine
|
||||
{
|
||||
[AllowNull]
|
||||
internal static Pool _currentPool = default;
|
||||
@@ -16,18 +16,18 @@ namespace StgSharp.Control
|
||||
/// <summary>
|
||||
/// Tick counter count the frames passed since the program start.
|
||||
/// </summary>
|
||||
public readonly static Counter<uint> tickCounter = new Counter<uint>(0,1,1);
|
||||
public static readonly Counter<uint> tickCounter = new Counter<uint>(0, 1, 1);
|
||||
|
||||
[AllowNull]
|
||||
internal static TimelineBlock currentOperation ;
|
||||
internal static TimelineBlock currentOperation;
|
||||
private static bool isPaused = false;
|
||||
|
||||
static ProgramTimeLine()
|
||||
static TimeLine()
|
||||
{
|
||||
allForm = new LinkedList<Form>();
|
||||
allPool = new LinkedList<Pool>();
|
||||
#if DEBUG
|
||||
Console.WriteLine("Timeline init OK!") ;
|
||||
Console.WriteLine("Timeline init OK!");
|
||||
#endif
|
||||
internalIO.InternalInitGL();
|
||||
}
|
||||
@@ -52,9 +52,22 @@ namespace StgSharp.Control
|
||||
|
||||
public static void InitProgram()
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
public static unsafe void StartProgram()
|
||||
{
|
||||
foreach (Form form in allForm)
|
||||
{
|
||||
if (Graphic.ShouldFormClose(form))
|
||||
{
|
||||
internalIO.InternalRenderWindow(
|
||||
form.windowPtr,
|
||||
form.info,
|
||||
(shaderObject*)form.shader);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Control
|
||||
namespace StgSharp.Control
|
||||
{
|
||||
public abstract class TimelineBlock : INode<TimelineBlock>
|
||||
public abstract class TimelineBlock
|
||||
{
|
||||
|
||||
public abstract void OnUpdating();
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Entities
|
||||
namespace StgSharp.Entities
|
||||
{
|
||||
public abstract class BehaviorArgs
|
||||
{
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using StgSharp.Control;
|
||||
using System;
|
||||
|
||||
namespace StgSharp.Entities
|
||||
{
|
||||
public class EliteEnemy:IEntity
|
||||
public class EliteEnemy : IEntity
|
||||
{
|
||||
public bool _selectalbe;
|
||||
|
||||
@@ -20,7 +19,7 @@ namespace StgSharp.Entities
|
||||
{
|
||||
_dieBulletLauncher.Launch();
|
||||
_awardLauncher.Launch();
|
||||
this._id.Remove();
|
||||
TimeLine._currentPool._enemyContainer.Remove(this);
|
||||
}
|
||||
|
||||
internal override void OnRenderFrame()
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using StgSharp.Control;
|
||||
|
||||
namespace StgSharp.Entities
|
||||
{
|
||||
@@ -20,7 +18,7 @@ namespace StgSharp.Entities
|
||||
{
|
||||
_dieBulletLauncher.Launch();
|
||||
_awardLauncher.Launch();
|
||||
this._id.Remove();
|
||||
TimeLine._currentPool._enemyContainer.Remove(this);
|
||||
}
|
||||
|
||||
internal override void OnRenderFrame()
|
||||
|
||||
@@ -1,11 +1,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Entities
|
||||
namespace StgSharp.Entities
|
||||
{
|
||||
public abstract class EntityPartical : IEntity
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,9 @@
|
||||
using StgSharp.Math;
|
||||
using StgSharp.Geometries;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using StgSharp.Geometries;
|
||||
using StgSharp.Math;
|
||||
|
||||
namespace StgSharp
|
||||
{
|
||||
public abstract class IEntity:INode<IEntity>
|
||||
public abstract class IEntity
|
||||
{
|
||||
internal Point _pos;
|
||||
internal LinkedList<IPlainGeometry> _collisionBox;
|
||||
@@ -17,7 +14,7 @@ namespace StgSharp
|
||||
internal GetLocationHandler _movHandler;
|
||||
protected uint _bornTick;
|
||||
|
||||
public LinkedList<IPlainGeometry> CollisionBox
|
||||
public LinkedList<IPlainGeometry> CollisionBox
|
||||
{
|
||||
get { return _collisionBox; }
|
||||
set { _collisionBox = value; }
|
||||
@@ -26,10 +23,10 @@ namespace StgSharp
|
||||
/// <summary>
|
||||
/// A sensor used for cheking out if a bullet hit a player or something else
|
||||
/// </summary>
|
||||
public Sensor<IPlainGeometry> CollisionSensor
|
||||
public Sensor<IPlainGeometry> CollisionSensor
|
||||
{
|
||||
get { return _collisionSensor; }
|
||||
set { _collisionSensor = value; }
|
||||
set { _collisionSensor = value; }
|
||||
}
|
||||
|
||||
public string Texture { get; set; }
|
||||
|
||||
@@ -1,12 +1,9 @@
|
||||
using StgSharp.Entities;
|
||||
using StgSharp.Math;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp
|
||||
{
|
||||
public class Launcher<T>:INode<Launcher<T>> where T : IEntity
|
||||
public class Launcher<T> where T : IEntity
|
||||
{
|
||||
/*
|
||||
*用于发射其他的实体,主要是子弹 和 掉落物
|
||||
@@ -23,12 +20,12 @@ namespace StgSharp
|
||||
set { _bulletSample = value; }
|
||||
}
|
||||
|
||||
internal virtual void Launch( )
|
||||
internal virtual void Launch()
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
using StgSharp.Math;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System;
|
||||
|
||||
namespace StgSharp
|
||||
{
|
||||
|
||||
@@ -1,10 +1,4 @@
|
||||
using StgSharp.Math;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp
|
||||
namespace StgSharp
|
||||
{
|
||||
public abstract class Player : IEntity
|
||||
{
|
||||
|
||||
@@ -1,8 +1,5 @@
|
||||
using StgSharp.Math;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Geometries
|
||||
{
|
||||
|
||||
@@ -1,8 +1,5 @@
|
||||
using StgSharp.Math;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Geometries
|
||||
{
|
||||
|
||||
@@ -1,8 +1,5 @@
|
||||
using StgSharp.Math;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Geometries
|
||||
{
|
||||
|
||||
@@ -1,9 +1,5 @@
|
||||
using StgSharp.Math;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Geometries
|
||||
{
|
||||
@@ -30,7 +26,7 @@ namespace StgSharp.Geometries
|
||||
|
||||
internal override void OnRender(uint tick)
|
||||
{
|
||||
tick-= bornTick;
|
||||
tick -= bornTick;
|
||||
center.Position = refOrigin.Position + MoveCenter(tick);
|
||||
beginPoint.Position = refOrigin.Position + MovBegin(tick);
|
||||
endPoint.Position = refOrigin.Position + MovEnd(tick);
|
||||
@@ -40,7 +36,7 @@ namespace StgSharp.Geometries
|
||||
|
||||
public override Plain GetPlain()
|
||||
{
|
||||
return new Plain(this.center,this.beginPoint,this.endPoint);
|
||||
return new Plain(this.center, this.beginPoint, this.endPoint);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
using StgSharp.Math;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Geometries
|
||||
{
|
||||
@@ -34,7 +32,7 @@ namespace StgSharp.Geometries
|
||||
|
||||
internal override void OnRender(uint tick)
|
||||
{
|
||||
tick-=bornTick;
|
||||
tick -= bornTick;
|
||||
center.Position = refOrigin.Position + MoveCenter(tick);
|
||||
pointOnCircle.Position = refOrigin.Position + UpdateRadius(tick);
|
||||
pointOnPlain.Position = refOrigin.Position + UpdatePlain(tick);
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Geometries
|
||||
namespace StgSharp.Geometries
|
||||
{
|
||||
public delegate float ExpressionHandler
|
||||
(
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.Serialization;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Geometries
|
||||
{
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
using StgSharp;
|
||||
using StgSharp.Math;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using StgSharp.Math;
|
||||
|
||||
namespace StgSharp.Geometries
|
||||
{
|
||||
|
||||
@@ -1,15 +1,10 @@
|
||||
using StgSharp.Math;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Geometries
|
||||
namespace StgSharp.Geometries
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// 平面几何体。包含三角形,对称四边形,自由多边形等。最多可由16个点参数定义。
|
||||
/// </summary>
|
||||
public abstract class IPlainGeometry:INode<IPlainGeometry>
|
||||
public abstract class IPlainGeometry
|
||||
{
|
||||
protected readonly uint bornTick;
|
||||
internal readonly Point refOrigin;
|
||||
@@ -17,16 +12,16 @@ namespace StgSharp.Geometries
|
||||
public Point RefOrigin { get { return refOrigin; } }
|
||||
|
||||
public abstract Point RefPoint01
|
||||
{
|
||||
{
|
||||
get;
|
||||
}
|
||||
public abstract Point RefPoint02{ get; }
|
||||
public abstract Point RefPoint03{ get; }
|
||||
public abstract Point RefPoint02 { get; }
|
||||
public abstract Point RefPoint03 { get; }
|
||||
public uint BornTime => bornTick;
|
||||
|
||||
public IPlainGeometry(uint bornTime)
|
||||
{
|
||||
bornTick=bornTime;
|
||||
bornTick = bornTime;
|
||||
}
|
||||
|
||||
public IPlainGeometry(Counter<uint> MainTimer)
|
||||
|
||||
@@ -1,17 +1,12 @@
|
||||
using Steamworks;
|
||||
using StgSharp;
|
||||
using StgSharp.Control;
|
||||
using StgSharp.Math;
|
||||
using StgSharp.Math;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Geometries
|
||||
{
|
||||
public class Line:IPlainGeometry
|
||||
public class Line : IPlainGeometry
|
||||
{
|
||||
internal Point basePoint = default ;
|
||||
internal Point beginPoint = default ;
|
||||
internal Point basePoint = default;
|
||||
internal Point beginPoint = default;
|
||||
internal Point endPoint = default;
|
||||
internal GetLocationHandler movBegin;
|
||||
internal GetLocationHandler movEnd;
|
||||
@@ -29,11 +24,11 @@ namespace StgSharp.Geometries
|
||||
public Line() { }
|
||||
|
||||
//计算线起点的方法,通过对线的派生的重写实现功能
|
||||
public virtual vec3d MoveBeginPoint(uint tick)
|
||||
public virtual vec3d MoveBeginPoint(uint tick)
|
||||
=> movBegin.Invoke(tick);
|
||||
|
||||
//计算线重点的方法,通过对线的派生的重写实现功能
|
||||
public virtual vec3d MoveEndPoint(uint tick)
|
||||
public virtual vec3d MoveEndPoint(uint tick)
|
||||
=> movEnd.Invoke(tick);
|
||||
|
||||
internal override void OnRender(uint tick)
|
||||
|
||||
@@ -1,8 +1,5 @@
|
||||
using StgSharp.Control;
|
||||
using StgSharp.Math;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Geometries
|
||||
{
|
||||
@@ -10,7 +7,7 @@ namespace StgSharp.Geometries
|
||||
{
|
||||
internal Point center;
|
||||
|
||||
public override sealed Point RefPoint01 => center;
|
||||
public sealed override Point RefPoint01 => center;
|
||||
public sealed override Point RefPoint02 => vertex01;
|
||||
public sealed override Point RefPoint03 => vertex02;
|
||||
|
||||
@@ -41,9 +38,9 @@ namespace StgSharp.Geometries
|
||||
throw new UnusedVertexException();
|
||||
}
|
||||
|
||||
internal override sealed void OnRender(uint tick)
|
||||
internal sealed override void OnRender(uint tick)
|
||||
{
|
||||
uint nowTick = ProgramTimeLine.tickCounter._value;
|
||||
uint nowTick = TimeLine.tickCounter._value;
|
||||
this.vertex01.Position = RefOrigin.Position + movVertex01Operation(nowTick);
|
||||
this.vertex02.Position = RefOrigin.Position + movVertex02Operation(nowTick);
|
||||
this.vertex03.Position = 2 * center.Position - vertex01.Position;
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
using StgSharp.Math;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Geometries
|
||||
{
|
||||
@@ -52,4 +49,5 @@ namespace StgSharp.Geometries
|
||||
plainParameter.Z = 1 / plainParameter.Z;
|
||||
}
|
||||
|
||||
}}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,16 +1,11 @@
|
||||
using StgSharp;
|
||||
using StgSharp.Math;
|
||||
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<Point>, INullable
|
||||
public unsafe class Point
|
||||
{
|
||||
internal vec3d* positionPtr;
|
||||
internal readonly bool isVertex;
|
||||
@@ -59,7 +54,6 @@ namespace StgSharp.Geometries
|
||||
|
||||
public bool IsVertex => isVertex;
|
||||
|
||||
bool INullable.IsNull { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Update the coordinate of the point. If this is a moving point,
|
||||
@@ -67,7 +61,7 @@ namespace StgSharp.Geometries
|
||||
/// please do not define any motion here, codes will be ignored by program
|
||||
/// </summary>
|
||||
/// <param name="tick">Time passes since the program begin, counted by frames</param>
|
||||
public virtual void Update(uint tick) {}
|
||||
public virtual void Update(uint tick) { }
|
||||
|
||||
public bool IsInGeometry(IPlainGeometry geo)
|
||||
{
|
||||
|
||||
@@ -1,8 +1,5 @@
|
||||
using StgSharp.Control;
|
||||
using StgSharp.Math;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Geometries
|
||||
{
|
||||
@@ -58,7 +55,7 @@ namespace StgSharp.Geometries
|
||||
return new Plain(this.RefPoint01, this.RefPoint02, this.RefPoint03);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public virtual vec3d MovVertex01(uint tick) => movVertex01Operation.Invoke(tick);
|
||||
|
||||
public virtual vec3d MovVertex02(uint tick) => movVertex01Operation.Invoke(tick);
|
||||
@@ -70,7 +67,7 @@ namespace StgSharp.Geometries
|
||||
|
||||
internal override void OnRender(uint tick)
|
||||
{
|
||||
uint nowTick = ProgramTimeLine.tickCounter._value;
|
||||
uint nowTick = TimeLine.tickCounter._value;
|
||||
this.vertex01.Position = RefOrigin.Position + movVertex01Operation(nowTick);
|
||||
this.vertex02.Position = RefOrigin.Position + movVertex02Operation(nowTick);
|
||||
this.vertex03.Position = RefOrigin.Position + movVertex03Operation(nowTick);
|
||||
|
||||
@@ -1 +1,12 @@
|
||||
using Steamworks;
using StgSharp.Control;
using StgSharp.Math;
using System;
using System.Collections.Generic;
using System.Numerics;
using System.Text;
namespace StgSharp.Geometries
{
public unsafe class Polygon5 : IPlainGeometry
{
internal Polygon5VertexArray vertexPtrAyyar;
internal Point _refOrigin;
internal readonly Point vertex1;
internal readonly Point vertex2;
internal readonly Point vertex3;
internal readonly Point vertex4;
internal readonly Point vertex5;
internal readonly int _vertexCount;
public override Point RefPoint01 => vertex1;
public override Point RefPoint02 => vertex2;
public override Point RefPoint03 => vertex3;
internal GetLocationHandler movP01Operation = default;
internal GetLocationHandler movP02Operation = default;
internal GetLocationHandler movP03Operation = default;
internal GetLocationHandler movP04Operation = default;
internal GetLocationHandler movP05Operation = default;
public GetLocationHandler MovP01Operation { get => movP01Operation; }
public GetLocationHandler MovP02Operation { get => movP02Operation; }
public GetLocationHandler MovP03Operation { get => movP03Operation; }
public GetLocationHandler MovP04Operation { get => movP04Operation; }
public GetLocationHandler MovP05Operation { get => movP05Operation; }
public unsafe Polygon5()
{
vertexPtrAyyar = internalIO.initPolygon5Vertex();
vertex1 = new Point(vertexPtrAyyar.vertex1);
vertex2 = new Point(vertexPtrAyyar.vertex2);
vertex3 = new Point(vertexPtrAyyar.vertex3);
vertex4 = new Point(vertexPtrAyyar.vertex4);
vertex5 = new Point(vertexPtrAyyar.vertex5);
}
public virtual vec3d movPoint01(uint tick)=> movP01Operation.Invoke(ProgramTimeLine.tickCounter._value);
public virtual vec3d movPoint02(uint tick)=> movP02Operation.Invoke(ProgramTimeLine.tickCounter._value);
public virtual vec3d movPoint03(uint tick)=> movP03Operation.Invoke(ProgramTimeLine.tickCounter._value);
public virtual vec3d movPoint04(uint tick)=> movP04Operation.Invoke(ProgramTimeLine.tickCounter._value);
public virtual vec3d movPoint05(uint tick)=> movP05Operation.Invoke(ProgramTimeLine.tickCounter._value);
internal override void OnRender(uint tick)
{
uint nowTick = tick - BornTime;
vertex1.Position = RefOrigin.Position + movPoint01(nowTick);
vertex2.Position = RefOrigin.Position + movPoint02(nowTick);
vertex3.Position = RefOrigin.Position + movPoint03(nowTick);
vertex4.Position = RefOrigin.Position + movPoint04(nowTick);
vertex5.Position = RefOrigin.Position + movPoint05(nowTick);
}
public override Line[] GetAllSides()
{
return new Line[5]
{
new Line(vertex1,vertex2),
new Line(vertex2,vertex3),
new Line(vertex3,vertex4),
new Line(vertex4,vertex5),
new Line(vertex5,vertex1)
};
}
public override Plain GetPlain()
{
return new Plain(vertex1,vertex2,vertex3);
}
}
}
|
||||
using StgSharp.Control;
using StgSharp.Math;
namespace StgSharp.Geometries
{
public unsafe class Polygon5 : IPlainGeometry
{
internal Polygon5VertexArray vertexPtrAyyar;
internal Point _refOrigin;
internal readonly Point vertex1;
internal readonly Point vertex2;
internal readonly Point vertex3;
internal readonly Point vertex4;
internal readonly Point vertex5;
internal readonly int _vertexCount;
public override Point RefPoint01 => vertex1;
public override Point RefPoint02 => vertex2;
public override Point RefPoint03 => vertex3;
internal GetLocationHandler movP01Operation = default;
internal GetLocationHandler movP02Operation = default;
internal GetLocationHandler movP03Operation = default;
internal GetLocationHandler movP04Operation = default;
internal GetLocationHandler movP05Operation = default;
public GetLocationHandler MovP01Operation { get => movP01Operation; }
public GetLocationHandler MovP02Operation { get => movP02Operation; }
public GetLocationHandler MovP03Operation { get => movP03Operation; }
public GetLocationHandler MovP04Operation { get => movP04Operation; }
public GetLocationHandler MovP05Operation { get => movP05Operation; }
public unsafe Polygon5()
{
vertexPtrAyyar = internalIO.initPolygon5Vertex();
vertex1 = new Point(vertexPtrAyyar.vertex1);
vertex2 = new Point(vertexPtrAyyar.vertex2);
vertex3 = new Point(vertexPtrAyyar.vertex3);
vertex4 = new Point(vertexPtrAyyar.vertex4);
vertex5 = new Point(vertexPtrAyyar.vertex5);
}
public virtual vec3d movPoint01(uint tick) => movP01Operation.Invoke(TimeLine.tickCounter._value);
|
||||
|
||||
public virtual vec3d movPoint02(uint tick) => movP02Operation.Invoke(TimeLine.tickCounter._value);
|
||||
|
||||
public virtual vec3d movPoint03(uint tick) => movP03Operation.Invoke(TimeLine.tickCounter._value);
|
||||
|
||||
public virtual vec3d movPoint04(uint tick) => movP04Operation.Invoke(TimeLine.tickCounter._value);
|
||||
|
||||
public virtual vec3d movPoint05(uint tick) => movP05Operation.Invoke(TimeLine.tickCounter._value);
|
||||
|
||||
|
||||
internal override void OnRender(uint tick)
{
uint nowTick = tick - BornTime;
vertex1.Position = RefOrigin.Position + movPoint01(nowTick);
vertex2.Position = RefOrigin.Position + movPoint02(nowTick);
vertex3.Position = RefOrigin.Position + movPoint03(nowTick);
vertex4.Position = RefOrigin.Position + movPoint04(nowTick);
vertex5.Position = RefOrigin.Position + movPoint05(nowTick);
}
public override Line[] GetAllSides()
{
return new Line[5]
{
new Line(vertex1,vertex2),
new Line(vertex2,vertex3),
new Line(vertex3,vertex4),
new Line(vertex4,vertex5),
new Line(vertex5,vertex1)
};
}
public override Plain GetPlain()
{
return new Plain(vertex1, vertex2, vertex3);
}
}
}
|
||||
@@ -1,10 +1,5 @@
|
||||
using Steamworks;
|
||||
using StgSharp.Control;
|
||||
using StgSharp.Control;
|
||||
using StgSharp.Math;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Numerics;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Geometries
|
||||
{
|
||||
@@ -42,32 +37,32 @@ namespace StgSharp.Geometries
|
||||
|
||||
public virtual vec3d movPoint01(uint tick)
|
||||
{
|
||||
return movP01Operation.Invoke(ProgramTimeLine.tickCounter._value);
|
||||
return movP01Operation.Invoke(TimeLine.tickCounter._value);
|
||||
}
|
||||
|
||||
public virtual vec3d movPoint02(uint tick)
|
||||
{
|
||||
return movP02Operation.Invoke(ProgramTimeLine.tickCounter._value);
|
||||
return movP02Operation.Invoke(TimeLine.tickCounter._value);
|
||||
}
|
||||
|
||||
public virtual vec3d movPoint03(uint tick)
|
||||
{
|
||||
return movP03Operation.Invoke(ProgramTimeLine.tickCounter._value);
|
||||
return movP03Operation.Invoke(TimeLine.tickCounter._value);
|
||||
}
|
||||
|
||||
public virtual vec3d movPoint04(uint tick)
|
||||
{
|
||||
return movP04Operation.Invoke(ProgramTimeLine.tickCounter._value);
|
||||
return movP04Operation.Invoke(TimeLine.tickCounter._value);
|
||||
}
|
||||
|
||||
public virtual vec3d movPoint05(uint tick)
|
||||
{
|
||||
return movP05Operation.Invoke(ProgramTimeLine.tickCounter._value);
|
||||
return movP05Operation.Invoke(TimeLine.tickCounter._value);
|
||||
}
|
||||
|
||||
public virtual vec3d movPoint06(uint tick)
|
||||
{
|
||||
return movP06Operation.Invoke(ProgramTimeLine.tickCounter._value);
|
||||
return movP06Operation.Invoke(TimeLine.tickCounter._value);
|
||||
}
|
||||
|
||||
internal override void OnRender(uint tick)
|
||||
@@ -96,7 +91,7 @@ namespace StgSharp.Geometries
|
||||
|
||||
public override Plain GetPlain()
|
||||
{
|
||||
return new Plain(vertex1,vertex2,vertex3);
|
||||
return new Plain(vertex1, vertex2, vertex3);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
using StgSharp.Control;
|
||||
using StgSharp.Math;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using StgSharp.Math;
|
||||
|
||||
namespace StgSharp.Geometries
|
||||
{
|
||||
@@ -10,13 +6,13 @@ namespace StgSharp.Geometries
|
||||
{
|
||||
internal Point center;
|
||||
|
||||
public override sealed Point RefPoint01=>center;
|
||||
public sealed override Point RefPoint01 => center;
|
||||
|
||||
public override sealed Point RefPoint02 => vertex01;
|
||||
public sealed override Point RefPoint02 => vertex01;
|
||||
|
||||
public sealed override Point RefPoint03 => vertex02;
|
||||
|
||||
public override sealed Point RefPoint03 => vertex02;
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 计算中心点相对于参考原点的位移
|
||||
@@ -35,9 +31,9 @@ namespace StgSharp.Geometries
|
||||
return this.center.Position * 2 - this.vertex02.Position;
|
||||
}
|
||||
|
||||
internal override sealed void OnRender(uint tick)
|
||||
internal sealed override void OnRender(uint tick)
|
||||
{
|
||||
tick-=bornTick;
|
||||
tick -= bornTick;
|
||||
this.MovCenter(tick);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
using StgSharp.Math;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Geometries
|
||||
{
|
||||
@@ -9,7 +6,7 @@ namespace StgSharp.Geometries
|
||||
/// <summary>
|
||||
/// A square
|
||||
/// </summary>
|
||||
public class Square:Rectangle
|
||||
public class Square : Rectangle
|
||||
{
|
||||
public sealed override vec3d MovVertex02(uint tick)
|
||||
{
|
||||
|
||||
@@ -1,16 +1,11 @@
|
||||
using StgSharp;
|
||||
using StgSharp.Control;
|
||||
using StgSharp.Control;
|
||||
using StgSharp.Math;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Geometries
|
||||
{
|
||||
|
||||
|
||||
public unsafe class Triangle :IPlainGeometry
|
||||
|
||||
public unsafe class Triangle : IPlainGeometry
|
||||
{
|
||||
internal triangleVertexArray vertexArray;
|
||||
|
||||
@@ -21,9 +16,9 @@ namespace StgSharp.Geometries
|
||||
internal GetLocationHandler movVertex02Opearion = new GetLocationHandler(GeometryOperation.DefualtMotion);
|
||||
internal GetLocationHandler movVertex03Opearion = new GetLocationHandler(GeometryOperation.DefualtMotion);
|
||||
|
||||
public override sealed Point RefPoint01 => vertex1;
|
||||
public override sealed Point RefPoint02 => vertex2;
|
||||
public override sealed Point RefPoint03 => vertex3;
|
||||
public sealed override Point RefPoint01 => vertex1;
|
||||
public sealed override Point RefPoint02 => vertex2;
|
||||
public sealed override Point RefPoint03 => vertex3;
|
||||
|
||||
public GetLocationHandler MovVertex01Operation => this.movVertex01Opearion;
|
||||
public GetLocationHandler MovVertex02Operation => this.movVertex02Opearion;
|
||||
@@ -48,9 +43,9 @@ namespace StgSharp.Geometries
|
||||
vertexArray.vertex3Ptr = this.vertex1.positionPtr;
|
||||
|
||||
/**/
|
||||
ProgramTimeLine._currentPool._pointContainer.Add(vertex1);
|
||||
ProgramTimeLine._currentPool._pointContainer.Add(vertex2);
|
||||
ProgramTimeLine._currentPool._pointContainer.Add(vertex3);
|
||||
TimeLine._currentPool._pointContainer.Add(vertex1);
|
||||
TimeLine._currentPool._pointContainer.Add(vertex2);
|
||||
TimeLine._currentPool._pointContainer.Add(vertex3);
|
||||
/**/
|
||||
|
||||
|
||||
@@ -67,7 +62,7 @@ namespace StgSharp.Geometries
|
||||
vertex1.Position = vertex01;
|
||||
}
|
||||
|
||||
internal override sealed void OnRender(uint tick)
|
||||
internal sealed override void OnRender(uint tick)
|
||||
{
|
||||
tick -= this.bornTick;
|
||||
vertex1.Position = RefOrigin.Position + MovVertex01(tick);
|
||||
@@ -89,7 +84,7 @@ namespace StgSharp.Geometries
|
||||
|
||||
public override Plain GetPlain()
|
||||
{
|
||||
return new Plain(this.vertex1,this.vertex2,this.vertex3);
|
||||
return new Plain(this.vertex1, this.vertex2, this.vertex3);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,11 +1,7 @@
|
||||
using StgSharp.Graphics.GL;
|
||||
using StgSharp.Math;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
|
||||
namespace StgSharp.Graphics
|
||||
{
|
||||
@@ -18,18 +14,18 @@ namespace StgSharp.Graphics
|
||||
public string name;
|
||||
}
|
||||
|
||||
public unsafe class Form:INode<Form>
|
||||
public unsafe class Form
|
||||
{
|
||||
internal IntPtr windowPtr;
|
||||
internal formInfo info;
|
||||
internal shaderObject shader;
|
||||
internal IntPtr shader;
|
||||
internal LinkedList<Pool> allControl;
|
||||
|
||||
public vec2d Size
|
||||
{
|
||||
get { return new vec2d(info.width,info.height); }
|
||||
set
|
||||
{
|
||||
get { return new vec2d(info.width, info.height); }
|
||||
set
|
||||
{
|
||||
info.width = (int)value.X;
|
||||
info.height = (int)value.Y;
|
||||
}
|
||||
@@ -41,7 +37,7 @@ namespace StgSharp.Graphics
|
||||
set => info.width = value;
|
||||
}
|
||||
|
||||
public int Height
|
||||
public int Height
|
||||
{
|
||||
get => info.height;
|
||||
set => info.height = value;
|
||||
@@ -69,18 +65,16 @@ namespace StgSharp.Graphics
|
||||
//used for internal control purpose
|
||||
internal Form(int instruction)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
internal unsafe void defualtInit()
|
||||
{
|
||||
fixed (shaderObject* shaderObj = &this.shader)
|
||||
{
|
||||
IntPtr windowPtr = Graphic.InitWindow(this);
|
||||
internalIO.InternalCompileShader(shaderObj);
|
||||
internalIO.InternalRenderWindow(windowPtr, this.info, shaderObj);
|
||||
internalIO.TerminateWindow(shaderObj);
|
||||
}
|
||||
IntPtr windowPtr = Graphic.InitWindow(this);
|
||||
internalIO.InternalCompileShader((shaderObject*)this.shader);
|
||||
internalIO.InternalRenderWindow(windowPtr, this.info, (shaderObject*)this.shader);
|
||||
internalIO.TerminateWindow((shaderObject*)shader);
|
||||
|
||||
}
|
||||
|
||||
public virtual void Init()
|
||||
@@ -93,12 +87,9 @@ namespace StgSharp.Graphics
|
||||
|
||||
public void Show()
|
||||
{
|
||||
fixed (shaderObject* shaderObj = &this.shader)
|
||||
{
|
||||
internalIO.InternalCompileShader(shaderObj);
|
||||
internalIO.InternalRenderWindow(this.windowPtr, this.info, shaderObj);
|
||||
internalIO.TerminateWindow(shaderObj);
|
||||
}
|
||||
internalIO.InternalCompileShader((shaderObject*)shader);
|
||||
internalIO.InternalRenderWindow(this.windowPtr, this.info, (shaderObject*)shader);
|
||||
internalIO.TerminateWindow((shaderObject*)shader);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,16 +1,12 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Graphics
|
||||
{
|
||||
//rename types in style of GLFW
|
||||
|
||||
using GLFWbool = Boolean;
|
||||
using _glfw = _GLFWlibrary;
|
||||
|
||||
public unsafe static partial class GLFW
|
||||
public static unsafe partial class GLFW
|
||||
{
|
||||
internal static _glfw glfw = new _glfw();
|
||||
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Graphics
|
||||
namespace StgSharp.Graphics
|
||||
{
|
||||
internal enum VkStructureType:uint
|
||||
internal enum VkStructureType : uint
|
||||
{
|
||||
VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = 1000004000,
|
||||
VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000,
|
||||
|
||||
@@ -1,15 +1,11 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Graphics
|
||||
{
|
||||
//rename types in style of GLFW
|
||||
|
||||
using GLFWbool = Boolean;
|
||||
using _glfw = _GLFWlibrary;
|
||||
|
||||
//strucs defined in glfw3.h
|
||||
|
||||
@@ -96,7 +92,7 @@ namespace StgSharp.Graphics
|
||||
int refreshRate;
|
||||
}
|
||||
|
||||
public unsafe struct GLFWgammaramp
|
||||
public unsafe struct GLFWgammaramp
|
||||
{
|
||||
|
||||
/*! An array of value describing the response of the red channel.
|
||||
@@ -113,7 +109,7 @@ namespace StgSharp.Graphics
|
||||
uint size;
|
||||
}
|
||||
|
||||
public unsafe struct GLFWimage
|
||||
public unsafe struct GLFWimage
|
||||
{
|
||||
|
||||
/*! The width, in pixels, of this image.
|
||||
@@ -127,7 +123,7 @@ namespace StgSharp.Graphics
|
||||
byte* pixels;
|
||||
}
|
||||
|
||||
public struct GLFWgamepadstate
|
||||
public struct GLFWgamepadstate
|
||||
{
|
||||
|
||||
/*! The states of each [gamepad button](@ref gamepad_buttons), `GLFW_PRESS`
|
||||
@@ -144,7 +140,7 @@ namespace StgSharp.Graphics
|
||||
}
|
||||
}
|
||||
|
||||
public unsafe struct GLFWallocator
|
||||
public unsafe struct GLFWallocator
|
||||
{
|
||||
//GLFWallocatefun allocate;
|
||||
IntPtr allocate;
|
||||
@@ -233,7 +229,7 @@ namespace StgSharp.Graphics
|
||||
// GLFW_PLATFORM_CURSOR_STATE;
|
||||
}
|
||||
|
||||
public unsafe struct GLFWerror
|
||||
public unsafe struct GLFWerror
|
||||
{
|
||||
|
||||
//_GLFWerror* next;
|
||||
@@ -356,7 +352,7 @@ namespace StgSharp.Graphics
|
||||
}
|
||||
}
|
||||
|
||||
public unsafe struct GLFWfbconfig
|
||||
public unsafe struct GLFWfbconfig
|
||||
{
|
||||
|
||||
int redBits;
|
||||
@@ -767,7 +763,7 @@ namespace StgSharp.Graphics
|
||||
}
|
||||
|
||||
|
||||
[StructLayout(LayoutKind.Explicit,Size = 16)]
|
||||
[StructLayout(LayoutKind.Explicit, Size = 16)]
|
||||
public struct uintptr_t
|
||||
{
|
||||
[FieldOffset(0)]
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace StgSharp.Graphics.GL
|
||||
{
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp
|
||||
{
|
||||
public static unsafe partial class Graphic
|
||||
{
|
||||
public static void InitGL()
|
||||
{
|
||||
InternalInitGL();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
using StgSharp.Control;
|
||||
|
||||
namespace StgSharp
|
||||
{
|
||||
public static unsafe partial class Graphic
|
||||
{
|
||||
internal static InternalInitGLDelegate InternalInitGL;
|
||||
internal static InternalGLcreateWindowDelegate InternalGLcreatWindow;
|
||||
internal static InternalGLmakeContextCurrent InternalGLmakeContextCurrent;
|
||||
internal static InternalGLswapInterval InternalGLswapInterval;
|
||||
internal static InternalGLclearColorDelegate InternalGLclearColor;
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,17 +1,31 @@
|
||||
using StgSharp.Control;
|
||||
using StgSharp.Graphics;
|
||||
using StgSharp.Graphics.GL;
|
||||
using StgSharp.Math;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp
|
||||
{
|
||||
public static unsafe class Graphic
|
||||
public static unsafe partial class Graphic
|
||||
{
|
||||
public static unsafe void LoadGL()
|
||||
{
|
||||
GraphicIOPack GLpack = internalIO.InternalInitGraphicApi();
|
||||
}
|
||||
|
||||
internal static byte[] loadShaderCodeStr(string str)
|
||||
{
|
||||
byte[] cahrStr;
|
||||
try
|
||||
{
|
||||
cahrStr = System.Text.Encoding.ASCII.GetBytes(str);
|
||||
return cahrStr;
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Init a form, attach its data to GLFW program,
|
||||
/// and return the pointer of the GLFW package of the form.
|
||||
@@ -22,7 +36,7 @@ namespace StgSharp
|
||||
/// or GLAD program fail to init</exception>
|
||||
public static unsafe IntPtr InitWindow(Form form)
|
||||
{
|
||||
IntPtr a= internalIO.InternalInitWindow(form.info);
|
||||
IntPtr a = internalIO.InternalInitWindow(form.info);
|
||||
if ((long)a == -1)
|
||||
{
|
||||
throw new Exception("Failed to init form.");
|
||||
@@ -39,9 +53,14 @@ namespace StgSharp
|
||||
|
||||
public static unsafe void LoadForm(Form form)
|
||||
{
|
||||
ProgramTimeLine.allForm.Add(form);
|
||||
TimeLine.allForm.Add(form);
|
||||
}
|
||||
|
||||
public static unsafe bool ShouldFormClose(Form form)
|
||||
{
|
||||
int a = internalIO.InternalShouldFormClose(form.windowPtr);
|
||||
return a != 0;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,107 +0,0 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data.SqlTypes;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp
|
||||
{
|
||||
public abstract class INode<T> where T : INode<T>
|
||||
{
|
||||
[NotNull]
|
||||
protected ContainerNode<T> _id;
|
||||
|
||||
internal ContainerNode<T> ID
|
||||
{
|
||||
get { return _id; }
|
||||
}
|
||||
|
||||
internal ContainerNode<T> Previous
|
||||
{
|
||||
get { return _id._previous; }
|
||||
set { _id._previous = value; }
|
||||
}
|
||||
|
||||
internal ContainerNode<T> Next
|
||||
{
|
||||
get { return _id._next; }
|
||||
set { _id._next = value; }
|
||||
}
|
||||
|
||||
public INode()
|
||||
{
|
||||
_id = new ContainerNode<T>(this as T);
|
||||
}
|
||||
|
||||
internal void SetId(ContainerNode<T> tContainer)
|
||||
{
|
||||
_id = tContainer;
|
||||
}
|
||||
|
||||
internal void SelfDestrcut()
|
||||
{
|
||||
_id._previous._next = _id._next;
|
||||
_id._next._previous = _id._previous;
|
||||
_id._next = null;
|
||||
_id._previous = null;
|
||||
GC.Collect();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
public class ContainerNode<T> : INullable where T : INode<T>
|
||||
{
|
||||
internal readonly T _value;
|
||||
|
||||
[AllowNull]
|
||||
internal ContainerNode<T> _previous;
|
||||
[AllowNull]
|
||||
internal ContainerNode<T> _next;
|
||||
|
||||
internal ContainerNode()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
public ContainerNode(T t)
|
||||
{
|
||||
_value = t;
|
||||
_previous = new ContainerNode<T>();
|
||||
_next = new ContainerNode<T>();
|
||||
}
|
||||
|
||||
public virtual ContainerNode<T> Previous
|
||||
{
|
||||
get { return _previous; }
|
||||
set { _previous = value; }
|
||||
}
|
||||
|
||||
public ContainerNode<T> Next
|
||||
{
|
||||
get { return _next; }
|
||||
set { _next = value; }
|
||||
}
|
||||
|
||||
public T Value
|
||||
{
|
||||
get { return _value; }
|
||||
}
|
||||
|
||||
public bool IsNull
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
public void Remove()
|
||||
{
|
||||
_previous.Next = _next;
|
||||
_next.Previous = _previous;
|
||||
_next = default(ContainerNode<T>);
|
||||
_previous = default(ContainerNode<T>);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,8 @@
|
||||
using Microsoft.CSharp;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System;
|
||||
|
||||
namespace StgSharp
|
||||
{
|
||||
public class Counter<T> where T:struct, IConvertible, IFormattable, IComparable
|
||||
public class Counter<T> where T : struct, IConvertible, IFormattable, IComparable
|
||||
{
|
||||
internal readonly dynamic _defualtValue;
|
||||
internal readonly dynamic _defualtAddValue;
|
||||
@@ -19,7 +16,7 @@ namespace StgSharp
|
||||
set { _value = value; }
|
||||
}
|
||||
|
||||
public Counter(T defualtValue,T defualtAddValue,T defualtSubValue)
|
||||
public Counter(T defualtValue, T defualtAddValue, T defualtSubValue)
|
||||
{
|
||||
var type = Type.GetTypeCode(defualtValue.GetType());
|
||||
switch (type)
|
||||
@@ -53,7 +50,7 @@ namespace StgSharp
|
||||
_defualtSubValue = defualtSubValue;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void Add(T value)
|
||||
{
|
||||
_value += value;
|
||||
@@ -78,5 +75,17 @@ namespace StgSharp
|
||||
{
|
||||
_value = _defualtValue;
|
||||
}
|
||||
|
||||
public static Counter<T> operator ++(Counter<T> counter)
|
||||
{
|
||||
counter.QuickAdd();
|
||||
return counter;
|
||||
}
|
||||
|
||||
public static Counter<T> operator --(Counter<T> counter)
|
||||
{
|
||||
counter.QuickSub();
|
||||
return counter;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,34 +1,41 @@
|
||||
using StgSharp.Graphics;
|
||||
using StgSharp.Logic;
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp
|
||||
{
|
||||
public class LinkedList<T>:INode<LinkedList<T>>,IEnumerable where T: INode<T>
|
||||
public class LinkedList<T> : IEnumerable
|
||||
{
|
||||
internal readonly ContainerNode<T> _heading;
|
||||
private ContainerNode<T> _cache;
|
||||
internal readonly LinkedListNode<T> _heading;
|
||||
private LinkedListNode<T> _cache;
|
||||
private bool isEmpty;
|
||||
public Counter<uint> count = new Counter<uint>(0, 1, 1);
|
||||
|
||||
public LinkedList()
|
||||
{
|
||||
_heading = new ContainerNode<T>(null);
|
||||
_heading = new LinkedListNode<T>();
|
||||
isEmpty = true;
|
||||
}
|
||||
|
||||
public T First
|
||||
{
|
||||
get { return _heading._next._value; }
|
||||
private set { _heading._next = value.ID; }
|
||||
/*
|
||||
* This setter is ued to reset the First node,
|
||||
* be careful when use this setter to avoid
|
||||
* unexpected risk of this List lose all nodes.
|
||||
*/
|
||||
private set { _heading._next = default; }
|
||||
}
|
||||
|
||||
public T Tail
|
||||
{
|
||||
get { return _heading._previous._value; }
|
||||
private set { _heading._previous = value.ID; }
|
||||
/*
|
||||
* This setter is ued to reset the Last node,
|
||||
* be careful when use this setter to avoid
|
||||
* unexpected risk of this List lose all nodes.
|
||||
*/
|
||||
private set { _heading._previous = default; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -40,54 +47,101 @@ namespace StgSharp
|
||||
//checkout if the linkedlist is null
|
||||
if (isEmpty)
|
||||
{
|
||||
_heading._next = t.ID;
|
||||
_heading._previous = t.ID;
|
||||
t.Next = _heading;
|
||||
t.Previous = _heading;
|
||||
LinkedListNode<T> node = new LinkedListNode<T>(t);
|
||||
_heading._next = node;
|
||||
_heading._previous = node;
|
||||
node.Next = _heading;
|
||||
node.Previous = _heading;
|
||||
isEmpty = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
t.Next = _heading;
|
||||
t.Previous = _heading.Previous;
|
||||
_heading._previous._next = t.ID;
|
||||
_heading._previous = t.ID;
|
||||
|
||||
LinkedListNode<T> node = new LinkedListNode<T>(t);
|
||||
node.Next = _heading;
|
||||
node.Previous = _heading.Previous;
|
||||
_heading._previous._next = node;
|
||||
_heading._previous = node;
|
||||
|
||||
}
|
||||
count++;
|
||||
}
|
||||
|
||||
public void Remove(T node)
|
||||
public void Remove(T value)
|
||||
{
|
||||
foreach (INode<T> item in this)
|
||||
{
|
||||
if (item == node)
|
||||
{
|
||||
node.SelfDestrcut();
|
||||
break;
|
||||
}
|
||||
}
|
||||
LinkedListNode<T> node = Find(value);
|
||||
node._next._previous = node._previous;
|
||||
node._previous._next = node._next;
|
||||
node._previous = null;
|
||||
node._next = null;
|
||||
count--;
|
||||
}
|
||||
|
||||
public void RemoveTail()
|
||||
{
|
||||
//check out if the list has only one member
|
||||
if (Tail == First)
|
||||
if (count._value == 1)
|
||||
{
|
||||
First = default;
|
||||
|
||||
|
||||
isEmpty = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
Tail.Previous.Next = _heading;
|
||||
Tail.Next = null;
|
||||
_heading.Previous.Next = _heading;
|
||||
}
|
||||
count--;
|
||||
}
|
||||
|
||||
internal LinkedListNode<T> Find(T value)
|
||||
{
|
||||
foreach (LinkedListNode<T> node in this)
|
||||
{
|
||||
if (node._value.Equals(value))
|
||||
{
|
||||
return node;
|
||||
}
|
||||
}
|
||||
throw new Exception("Value not found in this LinkedList");
|
||||
}
|
||||
|
||||
public void Clear()
|
||||
{
|
||||
_heading._previous = null;
|
||||
_heading._next = null;
|
||||
count.Reset();
|
||||
}
|
||||
|
||||
IEnumerator IEnumerable.GetEnumerator()
|
||||
{
|
||||
return new LinkedListEnumrator<T>(this);
|
||||
}
|
||||
|
||||
internal struct LinkedListEnumrator<T> : IEnumerator
|
||||
{
|
||||
private LinkedList<T> _target;
|
||||
LinkedListNode<T> enumrator;
|
||||
|
||||
public LinkedListEnumrator(LinkedList<T> target)
|
||||
{
|
||||
_target = target;
|
||||
enumrator = target._heading;
|
||||
}
|
||||
|
||||
object IEnumerator.Current
|
||||
{
|
||||
get { return enumrator._value; }
|
||||
}
|
||||
|
||||
bool IEnumerator.MoveNext()
|
||||
{
|
||||
enumrator = enumrator._next;
|
||||
return enumrator == default(LinkedListNode<T>);
|
||||
}
|
||||
|
||||
void IEnumerator.Reset()
|
||||
{
|
||||
enumrator = _target._heading;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Logic
|
||||
{
|
||||
internal class LinkedListEnumrator<T> : IEnumerator where T : INode<T>
|
||||
{
|
||||
private LinkedList<T> _target;
|
||||
ContainerNode<T> enumrator;
|
||||
|
||||
public LinkedListEnumrator(LinkedList<T> target)
|
||||
{
|
||||
_target = target;
|
||||
enumrator = target._heading;
|
||||
}
|
||||
|
||||
object IEnumerator.Current
|
||||
{
|
||||
get { return enumrator._value; }
|
||||
}
|
||||
|
||||
bool IEnumerator.MoveNext()
|
||||
{
|
||||
enumrator = enumrator._next;
|
||||
return enumrator == default(ContainerNode<T>);
|
||||
}
|
||||
|
||||
void IEnumerator.Reset()
|
||||
{
|
||||
enumrator = _target._heading;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
|
||||
namespace StgSharp
|
||||
{
|
||||
internal class LinkedListNode<T>
|
||||
{
|
||||
internal readonly T _value;
|
||||
|
||||
[AllowNull]
|
||||
internal LinkedListNode<T> _previous;
|
||||
[AllowNull]
|
||||
internal LinkedListNode<T> _next;
|
||||
internal LinkedList<T> list;
|
||||
|
||||
internal LinkedListNode()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
public LinkedListNode(T t)
|
||||
{
|
||||
_value = t;
|
||||
_previous = new LinkedListNode<T>();
|
||||
_next = new LinkedListNode<T>();
|
||||
}
|
||||
|
||||
public virtual LinkedListNode<T> Previous
|
||||
{
|
||||
get { return _previous; }
|
||||
set { _previous = value; }
|
||||
}
|
||||
|
||||
public LinkedListNode<T> Next
|
||||
{
|
||||
get { return _next; }
|
||||
set { _next = value; }
|
||||
}
|
||||
|
||||
public T Value
|
||||
{
|
||||
get { return _value; }
|
||||
}
|
||||
|
||||
public void Remove()
|
||||
{
|
||||
_previous.Next = _next;
|
||||
_next.Previous = _previous;
|
||||
_next = default(LinkedListNode<T>);
|
||||
_previous = default(LinkedListNode<T>);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,15 +1,9 @@
|
||||
using Steamworks;
|
||||
using StgSharp.Math;
|
||||
using StgSharp.Entities;
|
||||
using StgSharp.Entities;
|
||||
using StgSharp.Geometries;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Net.Http.Headers;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp
|
||||
{
|
||||
public class Pool:INode<Pool>
|
||||
public class Pool
|
||||
{
|
||||
internal LinkedList<Point> _pointContainer;
|
||||
internal LinkedList<IPlainGeometry> geometryContainer;
|
||||
@@ -27,14 +21,13 @@ namespace StgSharp
|
||||
public Line TopBoarder => topBoader;
|
||||
public Line BottomBoarder => bottomBoader;
|
||||
|
||||
internal Pool()
|
||||
internal Pool()
|
||||
{
|
||||
initContainers();
|
||||
}
|
||||
|
||||
private void initContainers()
|
||||
{
|
||||
_id = new ContainerNode<Pool>(this);
|
||||
_pointContainer = new LinkedList<Point>();
|
||||
_bulletContainer = new LinkedList<IEntity>();
|
||||
_awardContainer = new LinkedList<IEntity>();
|
||||
@@ -46,11 +39,11 @@ namespace StgSharp
|
||||
{
|
||||
foreach (Enemy e in _enemyContainer)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
namespace StgSharp.Logic
|
||||
{
|
||||
public abstract class QuickClearNode<T> where T : QuickClearNode<T>
|
||||
{
|
||||
internal LinkedList<LinkedListNode<T>> _idList
|
||||
= new LinkedList<LinkedListNode<T>>();
|
||||
|
||||
internal void QuickDestruct(LinkedList<T> list)
|
||||
{
|
||||
foreach (LinkedListNode<T> id in _idList)
|
||||
{
|
||||
if (id.list == list)
|
||||
{
|
||||
RecycleBin.Add(id);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
internal static LinkedList<LinkedListNode<T>> RecycleBin
|
||||
= new LinkedList<LinkedListNode<T>>();
|
||||
}
|
||||
}
|
||||
@@ -1,21 +1,16 @@
|
||||
using StgSharp.Geometries;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp
|
||||
{
|
||||
|
||||
public delegate bool SensorRuleHandler(IPlainGeometry target, IPlainGeometry boarder);
|
||||
|
||||
public class Sensor<T>
|
||||
public class Sensor<T>
|
||||
{
|
||||
internal IPlainGeometry _boarder;
|
||||
internal IPlainGeometry _target;
|
||||
internal SensorRuleHandler _rule;
|
||||
|
||||
|
||||
|
||||
public IPlainGeometry boarder
|
||||
{
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Math
|
||||
namespace StgSharp.Math
|
||||
{
|
||||
|
||||
internal class Cordination
|
||||
|
||||
@@ -1,15 +1,11 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Math
|
||||
namespace StgSharp.Math
|
||||
{
|
||||
public static unsafe partial class Vector
|
||||
{
|
||||
|
||||
public static float Det(matrix2x2 array)
|
||||
{
|
||||
return Cross(array.row1,array.row2);
|
||||
return Cross(array.row1, array.row2);
|
||||
}
|
||||
|
||||
public static unsafe float Det(matrix3x3 array)
|
||||
@@ -29,7 +25,7 @@ namespace StgSharp.Math
|
||||
*(p + 6), *(p + 7)
|
||||
);
|
||||
|
||||
return
|
||||
return
|
||||
*p * Det(matrix1)
|
||||
- *(p + 1) * Det(matrix2)
|
||||
+ *(p + 2) * Det(matrix3)
|
||||
|
||||
@@ -1,15 +1,11 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Math
|
||||
namespace StgSharp.Math
|
||||
{
|
||||
public static unsafe partial class Vector
|
||||
{
|
||||
public static float GetAngle(vec2d vec1, vec2d vec2)
|
||||
{
|
||||
return Calc.ACos(
|
||||
vec1 .multiple(vec2)
|
||||
vec1.multiple(vec2)
|
||||
/ (vec1.GetLength() * vec2.GetLength())
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Math
|
||||
namespace StgSharp.Math
|
||||
{
|
||||
public static unsafe partial class Vector
|
||||
{
|
||||
@@ -18,7 +14,7 @@ namespace StgSharp.Math
|
||||
public static float GetLength(this vec2d vec)
|
||||
{
|
||||
return Calc.Sqrt(
|
||||
vec.X * vec.X +
|
||||
vec.X * vec.X +
|
||||
vec.Y * vec.Y
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Math
|
||||
namespace StgSharp.Math
|
||||
{
|
||||
public static unsafe partial class Vector
|
||||
{
|
||||
|
||||
@@ -1,9 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Security.Cryptography.X509Certificates;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Math
|
||||
namespace StgSharp.Math
|
||||
{
|
||||
public static unsafe partial class VectorCalc
|
||||
{
|
||||
@@ -131,7 +126,7 @@ namespace StgSharp.Math
|
||||
*(p1 + 2) * *(p2 + 0) + *(p1 + 3) * *(p2 + 1)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
@@ -373,8 +368,8 @@ namespace StgSharp.Math
|
||||
var c2 = a1.multiple(b12) + a2.multiple(b22);
|
||||
|
||||
return new matrix2x4(
|
||||
new vec4d(c1.row1,c2.row1),
|
||||
new vec4d(c1.row2,c2.row2)
|
||||
new vec4d(c1.row1, c2.row1),
|
||||
new vec4d(c1.row2, c2.row2)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -448,11 +443,11 @@ namespace StgSharp.Math
|
||||
float* p2 = &matrix2.row1.X;
|
||||
|
||||
return new matrix2x3(
|
||||
getMatrixMember(p1,p2), getMatrixMember(p1, p2+1), getMatrixMember(p1, p2+2),
|
||||
getMatrixMember(p1+4, p2), getMatrixMember(p1+4, p2+1), getMatrixMember(p1+4, p2 + 2)
|
||||
getMatrixMember(p1, p2), getMatrixMember(p1, p2 + 1), getMatrixMember(p1, p2 + 2),
|
||||
getMatrixMember(p1 + 4, p2), getMatrixMember(p1 + 4, p2 + 1), getMatrixMember(p1 + 4, p2 + 2)
|
||||
);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -464,19 +459,19 @@ namespace StgSharp.Math
|
||||
public static unsafe matrix2x4 multiple(this matrix2x4 matrix1, matrix4x4 matrix2)
|
||||
{
|
||||
|
||||
matrix2x2 a1 = new matrix2x2(matrix1.row1.Point1,matrix1.row2.Point1);
|
||||
matrix2x2 a1 = new matrix2x2(matrix1.row1.Point1, matrix1.row2.Point1);
|
||||
matrix2x2 a2 = new matrix2x2(matrix1.row1.Point2, matrix1.row2.Point2);
|
||||
|
||||
matrix2x2 b11 = new matrix2x2(matrix2.row1.Point1, matrix2.row2.Point1);
|
||||
matrix2x2 b12 = new matrix2x2(matrix2.row1.Point2, matrix2.row2.Point2);
|
||||
matrix2x2 b21 = new matrix2x2(matrix2.row3.Point1, matrix2.row4.Point1);
|
||||
matrix2x2 b22 = new matrix2x2(matrix2.row3.Point2, matrix2.row4.Point2);
|
||||
|
||||
|
||||
var c1 = a1.multiple(b11) + a2.multiple(b21);
|
||||
var c2 = a1.multiple(b12) + a2.multiple(b22);
|
||||
|
||||
return new matrix2x4(
|
||||
new vec4d(c1.row1, c2.row1),
|
||||
new vec4d(c1.row1, c2.row1),
|
||||
new vec4d(c1.row2, c2.row2));
|
||||
}
|
||||
|
||||
@@ -533,9 +528,9 @@ namespace StgSharp.Math
|
||||
float* p3 = &m11.row1.X;
|
||||
|
||||
return new matrix3x3(
|
||||
*(p3 + 0), *(p3 + 1),m12.X,
|
||||
*(p3 + 2), *(p3 + 3),m12.Y,
|
||||
m21.X, m21.Y, m22
|
||||
*(p3 + 0), *(p3 + 1), m12.X,
|
||||
*(p3 + 2), *(p3 + 3), m12.Y,
|
||||
m21.X, m21.Y, m22
|
||||
);
|
||||
}
|
||||
|
||||
@@ -547,7 +542,7 @@ namespace StgSharp.Math
|
||||
/// <returns></returns>
|
||||
public static unsafe matrix3x4 multiple(this matrix3x2 matrix1, matrix2x4 matrix2)
|
||||
{
|
||||
var a1 = new matrix2x2(matrix1.row1,matrix1.row2);
|
||||
var a1 = new matrix2x2(matrix1.row1, matrix1.row2);
|
||||
var a2 = matrix1.row3;
|
||||
|
||||
var b1 = new matrix2x2(matrix2.row1.Point1, matrix2.row2.Point1);
|
||||
@@ -589,13 +584,13 @@ namespace StgSharp.Math
|
||||
var a21 = new vec2d(*(p1 + 6), *(p1 + 7));
|
||||
var a22 = *(p1 + 8);
|
||||
|
||||
var b1 = new matrix2x2(matrix2.row1,matrix2.row2);
|
||||
var b1 = new matrix2x2(matrix2.row1, matrix2.row2);
|
||||
var b2 = matrix2.row3;
|
||||
|
||||
var c1 = a11.multiple(b1) + a12.multiple(b2);
|
||||
var c2 = a21.multiple(b1) + b2 * a22;
|
||||
|
||||
return new matrix3x2(c1.row1,c1.row2,c2);
|
||||
return new matrix3x2(c1.row1, c1.row2, c2);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -655,9 +650,9 @@ namespace StgSharp.Math
|
||||
|
||||
|
||||
return new matrix3x4(
|
||||
new vec4d(c11.row1,c12.row1),
|
||||
new vec4d(c11.row2,c12.row2),
|
||||
new vec4d(c21,c22)
|
||||
new vec4d(c11.row1, c12.row1),
|
||||
new vec4d(c11.row2, c12.row2),
|
||||
new vec4d(c21, c22)
|
||||
);
|
||||
|
||||
}
|
||||
@@ -693,7 +688,7 @@ namespace StgSharp.Math
|
||||
var c1 = a11.multiple(b1) + a12.multiple(b2);
|
||||
var c2 = a21.multiple(b1) + a22.multiple(b2);
|
||||
|
||||
return new matrix3x2(c1.row1,c1.row2,c2);
|
||||
return new matrix3x2(c1.row1, c1.row2, c2);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -750,8 +745,8 @@ namespace StgSharp.Math
|
||||
float* p1 = &matrix1.row1.X;
|
||||
float* p2 = &matrix2.row1.X;
|
||||
|
||||
var a11 = new matrix2x2(matrix1.row1.Point1,matrix1.row2.Point1);
|
||||
var a12 = new matrix2x2(matrix1.row1.Point2,matrix1.row2.Point2);
|
||||
var a11 = new matrix2x2(matrix1.row1.Point1, matrix1.row2.Point1);
|
||||
var a12 = new matrix2x2(matrix1.row1.Point2, matrix1.row2.Point2);
|
||||
var a21 = matrix1.row3.Point1;
|
||||
var a22 = matrix1.row3.Point2;
|
||||
|
||||
@@ -766,10 +761,10 @@ namespace StgSharp.Math
|
||||
var c4 = a21.multiple(b12) + a22.multiple(b22);
|
||||
|
||||
return new matrix3x4(
|
||||
new vec4d(c1.row1,c2.row1),
|
||||
new vec4d(c1.row2,c2.row2),
|
||||
new vec4d(c3,c4)
|
||||
) ;
|
||||
new vec4d(c1.row1, c2.row1),
|
||||
new vec4d(c1.row2, c2.row2),
|
||||
new vec4d(c3, c4)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -813,10 +808,10 @@ namespace StgSharp.Math
|
||||
var u7 = u3 + m5;
|
||||
|
||||
return new matrix4x2(
|
||||
new vec2d(u1.X,u5.X),
|
||||
new vec2d(u1.Y,u5.Y),
|
||||
new vec2d(u6.X,u7.X),
|
||||
new vec2d(u6.Y,u7.Y)
|
||||
new vec2d(u1.X, u5.X),
|
||||
new vec2d(u1.Y, u5.Y),
|
||||
new vec2d(u6.X, u7.X),
|
||||
new vec2d(u6.Y, u7.Y)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -839,10 +834,10 @@ namespace StgSharp.Math
|
||||
float* pc2 = &c21.row1.X;
|
||||
|
||||
return new matrix4x3(
|
||||
*(pc1 + 0), *(pc1 + 1),c12.X,
|
||||
*(pc1 + 2), *(pc1 + 3),c12.Y,
|
||||
*(pc2 + 0), *(pc2 + 1),c22.X,
|
||||
*(pc2 + 2), *(pc2 + 3),c22.Y
|
||||
*(pc1 + 0), *(pc1 + 1), c12.X,
|
||||
*(pc1 + 2), *(pc1 + 3), c12.Y,
|
||||
*(pc2 + 0), *(pc2 + 1), c22.X,
|
||||
*(pc2 + 2), *(pc2 + 3), c22.Y
|
||||
);
|
||||
}
|
||||
|
||||
@@ -917,7 +912,7 @@ namespace StgSharp.Math
|
||||
var c1 = a11.multiple(b1) + a12.multiple(b2);
|
||||
var c2 = a21.multiple(b1) + a22.multiple(b2);
|
||||
|
||||
return new matrix4x2(c1.row1,c1.row2,c2.row1,c2.row2);
|
||||
return new matrix4x2(c1.row1, c1.row2, c2.row1, c2.row2);
|
||||
|
||||
}
|
||||
|
||||
@@ -945,10 +940,10 @@ namespace StgSharp.Math
|
||||
float* p4 = &c21.row1.X;
|
||||
|
||||
return new matrix4x3(
|
||||
*(p3 + 0), *(p3 + 1),c12.X,
|
||||
*(p3 + 2), *(p3 + 3),c12.Y,
|
||||
*(p4 + 0), *(p4 + 1),c22.X,
|
||||
*(p4 + 2), *(p4 + 3),c22.Y
|
||||
*(p3 + 0), *(p3 + 1), c12.X,
|
||||
*(p3 + 2), *(p3 + 3), c12.Y,
|
||||
*(p4 + 0), *(p4 + 1), c22.X,
|
||||
*(p4 + 2), *(p4 + 3), c22.Y
|
||||
);
|
||||
}
|
||||
|
||||
@@ -962,7 +957,7 @@ namespace StgSharp.Math
|
||||
var a21 = new matrix2x2(*(p1 + 6), *(p1 + 7), *(p1 + 9), *(p1 + 10));
|
||||
var a22 = new colum2(*(p1 + 8), *(p1 + 11));
|
||||
|
||||
var b11 = new matrix2x2 (*(p2 + 0), *(p2 + 1), *(p2 + 4), *(p2 + 5));
|
||||
var b11 = new matrix2x2(*(p2 + 0), *(p2 + 1), *(p2 + 4), *(p2 + 5));
|
||||
var b12 = new matrix2x2(*(p2 + 2), *(p2 + 3), *(p2 + 6), *(p2 + 7));
|
||||
var b21 = matrix2.row3.Point1;
|
||||
var b22 = matrix2.row3.Point2;
|
||||
|
||||
@@ -1,9 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Math
|
||||
namespace StgSharp.Math
|
||||
{
|
||||
public static unsafe partial class Vector
|
||||
{
|
||||
@@ -12,14 +7,14 @@ namespace StgSharp.Math
|
||||
return new vec3d(vec.X, vec.Y, 0.0f);
|
||||
}
|
||||
|
||||
public static vec4d To4D(this vec2d Vec)
|
||||
public static vec4d To4D(this vec2d Vec)
|
||||
{
|
||||
return new vec4d(Vec.X, Vec.Y, 0, 0);
|
||||
return new vec4d(Vec.X, Vec.Y, 0, 0);
|
||||
}
|
||||
|
||||
public static vec4d To4D(this vec3d vec)
|
||||
public static vec4d To4D(this vec3d vec)
|
||||
{
|
||||
return new vec4d(vec.X, vec.Y, vec.Z, 0);
|
||||
return new vec4d(vec.X, vec.Y, vec.Z, 0);
|
||||
}
|
||||
|
||||
public static vec2d To2D(vec3d vec, CordinatePlain plain)
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Math
|
||||
namespace StgSharp.Math
|
||||
{
|
||||
public static unsafe partial class Vector
|
||||
{
|
||||
|
||||
@@ -1,22 +1,20 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Math
|
||||
{
|
||||
[StructLayout(LayoutKind.Explicit)]
|
||||
public struct colum2:IEquatable<colum2>
|
||||
public struct colum2 : IEquatable<colum2>
|
||||
{
|
||||
[FieldOffset(0)]
|
||||
public float X;
|
||||
[FieldOffset(4)]
|
||||
public float Y;
|
||||
|
||||
public colum2(float x,float y)
|
||||
public colum2(float x, float y)
|
||||
{
|
||||
X= x;
|
||||
Y= y;
|
||||
X = x;
|
||||
Y = y;
|
||||
}
|
||||
|
||||
public override bool Equals(object obj)
|
||||
@@ -49,7 +47,7 @@ namespace StgSharp.Math
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return HashCode.Combine(X,Y);
|
||||
return HashCode.Combine(X, Y);
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
@@ -57,7 +55,7 @@ namespace StgSharp.Math
|
||||
return $"{X}\n{Y}";
|
||||
}
|
||||
|
||||
public static colum2 operator +(colum2 c1,colum2 c2)
|
||||
public static colum2 operator +(colum2 c1, colum2 c2)
|
||||
{
|
||||
return new colum2(
|
||||
c1.X + c2.X,
|
||||
@@ -75,7 +73,7 @@ namespace StgSharp.Math
|
||||
|
||||
public static colum2 operator *(colum2 colum, float x)
|
||||
{
|
||||
return new colum2(colum.X * x,colum.Y * x);
|
||||
return new colum2(colum.X * x, colum.Y * x);
|
||||
}
|
||||
|
||||
public static colum2 operator /(colum2 colum, float x)
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Math
|
||||
{
|
||||
|
||||
@@ -1,13 +1,10 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics.Contracts;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Math
|
||||
{
|
||||
[StructLayout(LayoutKind.Explicit)]
|
||||
public struct colum4:IEquatable<colum4>
|
||||
public struct colum4 : IEquatable<colum4>
|
||||
{
|
||||
[FieldOffset(0)]
|
||||
public float X;
|
||||
|
||||
@@ -1,13 +1,10 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO.Compression;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Math
|
||||
{
|
||||
[StructLayout(LayoutKind.Explicit)]
|
||||
public struct matrix2x2:IEquatable<matrix2x2>
|
||||
public struct matrix2x2 : IEquatable<matrix2x2>
|
||||
{
|
||||
[FieldOffset(0)]
|
||||
public vec2d row1;
|
||||
@@ -64,7 +61,7 @@ namespace StgSharp.Math
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return HashCode.Combine(row1,row2);
|
||||
return HashCode.Combine(row1, row2);
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
@@ -72,7 +69,7 @@ namespace StgSharp.Math
|
||||
return $"{row1}\n{row2}";
|
||||
}
|
||||
|
||||
public static matrix2x2 operator +(matrix2x2 matrix1 , matrix2x2 matrix2)
|
||||
public static matrix2x2 operator +(matrix2x2 matrix1, matrix2x2 matrix2)
|
||||
{
|
||||
return new matrix2x2(
|
||||
matrix1.row1 + matrix2.row1,
|
||||
@@ -88,9 +85,9 @@ namespace StgSharp.Math
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,13 +1,10 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Security.Cryptography.X509Certificates;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Math
|
||||
{
|
||||
[StructLayout(LayoutKind.Explicit)]
|
||||
public struct matrix2x3:IEquatable<matrix2x3>
|
||||
public struct matrix2x3 : IEquatable<matrix2x3>
|
||||
{
|
||||
[FieldOffset(0)]
|
||||
public vec3d row1;
|
||||
@@ -63,7 +60,7 @@ namespace StgSharp.Math
|
||||
}
|
||||
else
|
||||
{
|
||||
return
|
||||
return
|
||||
this.row1 == other.row1
|
||||
&& this.row2 == other.row2;
|
||||
}
|
||||
@@ -90,7 +87,7 @@ namespace StgSharp.Math
|
||||
return new matrix2x3(
|
||||
array.row1 * x,
|
||||
array.row2 * x
|
||||
) ;
|
||||
);
|
||||
}
|
||||
|
||||
public static matrix2x3 operator /(matrix2x3 array, float x)
|
||||
@@ -101,7 +98,7 @@ namespace StgSharp.Math
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Math
|
||||
{
|
||||
@@ -14,7 +12,7 @@ namespace StgSharp.Math
|
||||
[FieldOffset(16)]
|
||||
public vec4d row2;
|
||||
|
||||
public matrix2x4( vec4d r1, vec4d r2)
|
||||
public matrix2x4(vec4d r1, vec4d r2)
|
||||
{
|
||||
row1 = r1;
|
||||
row2 = r2;
|
||||
@@ -25,8 +23,8 @@ namespace StgSharp.Math
|
||||
float a21, float a22, float a23, float a24
|
||||
)
|
||||
{
|
||||
row1 = new vec4d(a11,a12,a13,a14);
|
||||
row2 = new vec4d(a21,a22,a23,a24);
|
||||
row1 = new vec4d(a11, a12, a13, a14);
|
||||
row2 = new vec4d(a21, a22, a23, a24);
|
||||
}
|
||||
|
||||
public bool Equals(matrix2x4 other)
|
||||
@@ -68,12 +66,12 @@ namespace StgSharp.Math
|
||||
return $"{this.row1}\n{this.row2}";
|
||||
}
|
||||
|
||||
public static matrix2x4 operator +(matrix2x4 matrix1 ,matrix2x4 matrix2)
|
||||
public static matrix2x4 operator +(matrix2x4 matrix1, matrix2x4 matrix2)
|
||||
{
|
||||
return new matrix2x4(
|
||||
matrix1.row1 + matrix2.row1,
|
||||
matrix1.row2 + matrix2.row2
|
||||
) ;
|
||||
);
|
||||
}
|
||||
|
||||
public static matrix2x4 operator -(matrix2x4 matrix1, matrix2x4 matrix2)
|
||||
@@ -100,6 +98,6 @@ namespace StgSharp.Math
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Math
|
||||
{
|
||||
[StructLayout(LayoutKind.Explicit)]
|
||||
public struct matrix3x2:IEquatable<matrix3x2>
|
||||
public struct matrix3x2 : IEquatable<matrix3x2>
|
||||
{
|
||||
[FieldOffset(0)]
|
||||
public vec2d row1;
|
||||
@@ -15,11 +13,11 @@ namespace StgSharp.Math
|
||||
[FieldOffset(16)]
|
||||
public vec2d row3;
|
||||
|
||||
public matrix3x2(vec2d r1,vec2d r2,vec2d r3)
|
||||
public matrix3x2(vec2d r1, vec2d r2, vec2d r3)
|
||||
{
|
||||
row1= r1;
|
||||
row2= r2;
|
||||
row3= r3;
|
||||
row1 = r1;
|
||||
row2 = r2;
|
||||
row3 = r3;
|
||||
}
|
||||
|
||||
public matrix3x2(
|
||||
|
||||
@@ -1,13 +1,10 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Math
|
||||
{
|
||||
[StructLayout(LayoutKind.Explicit)]
|
||||
public struct matrix3x3:IEquatable<matrix3x3>
|
||||
public struct matrix3x3 : IEquatable<matrix3x3>
|
||||
{
|
||||
[FieldOffset(0)]
|
||||
public vec3d row1;
|
||||
@@ -16,7 +13,7 @@ namespace StgSharp.Math
|
||||
[FieldOffset(24)]
|
||||
public vec3d row3;
|
||||
|
||||
public matrix3x3(vec3d r0,vec3d r1,vec3d r2)
|
||||
public matrix3x3(vec3d r0, vec3d r1, vec3d r2)
|
||||
{
|
||||
row1 = r0;
|
||||
row2 = r1;
|
||||
@@ -24,9 +21,9 @@ namespace StgSharp.Math
|
||||
}
|
||||
|
||||
public matrix3x3(
|
||||
float a11,float a12,float a13,
|
||||
float a21,float a22,float a23,
|
||||
float a31,float a32,float a33
|
||||
float a11, float a12, float a13,
|
||||
float a21, float a22, float a23,
|
||||
float a31, float a32, float a33
|
||||
)
|
||||
{
|
||||
row1 = new vec3d(a11, a12, a13);
|
||||
@@ -36,12 +33,12 @@ namespace StgSharp.Math
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return HashCode.Combine(row1,row2,row3);
|
||||
return HashCode.Combine(row1, row2, row3);
|
||||
}
|
||||
|
||||
bool IEquatable<matrix3x3>.Equals(matrix3x3 other)
|
||||
{
|
||||
if (this.GetHashCode()!=other.GetHashCode())
|
||||
if (this.GetHashCode() != other.GetHashCode())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -75,7 +72,7 @@ namespace StgSharp.Math
|
||||
return $"{row1}\n{row2}\n{row3}";
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public static bool operator ==(matrix3x3 matrix1, matrix3x3 matrix2)
|
||||
{
|
||||
@@ -90,16 +87,16 @@ namespace StgSharp.Math
|
||||
public static matrix3x3 operator +(matrix3x3 matrix1, matrix3x3 matrix2)
|
||||
{
|
||||
return new matrix3x3(
|
||||
matrix1.row1.X + matrix2.row1.X,
|
||||
matrix1.row1.Y + matrix2.row1.Y,
|
||||
matrix1.row1.X + matrix2.row1.X,
|
||||
matrix1.row1.Y + matrix2.row1.Y,
|
||||
matrix1.row1.Z + matrix2.row1.Z,
|
||||
|
||||
matrix1.row2.X + matrix2.row2.X,
|
||||
matrix1.row2.Y + matrix2.row2.Y,
|
||||
matrix1.row2.X + matrix2.row2.X,
|
||||
matrix1.row2.Y + matrix2.row2.Y,
|
||||
matrix1.row2.Z + matrix2.row2.Z,
|
||||
|
||||
matrix1.row3.X + matrix2.row3.X,
|
||||
matrix1.row3.Y + matrix2.row3.Y,
|
||||
matrix1.row3.X + matrix2.row3.X,
|
||||
matrix1.row3.Y + matrix2.row3.Y,
|
||||
matrix1.row3.Z + matrix2.row3.Z
|
||||
);
|
||||
}
|
||||
@@ -121,7 +118,7 @@ namespace StgSharp.Math
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public static matrix3x3 operator *(matrix3x3 array, float x)
|
||||
{
|
||||
@@ -129,15 +126,15 @@ namespace StgSharp.Math
|
||||
array.row1 * x,
|
||||
array.row2 * x,
|
||||
array.row3 * x
|
||||
);
|
||||
);
|
||||
}
|
||||
|
||||
public static matrix3x3 operator /(matrix3x3 array, float x)
|
||||
{
|
||||
return new matrix3x3(
|
||||
array.row1/x,
|
||||
array.row2/x,
|
||||
array.row3/x
|
||||
array.row1 / x,
|
||||
array.row2 / x,
|
||||
array.row3 / x
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,14 +1,10 @@
|
||||
using StgSharp.Math;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Security.Cryptography.X509Certificates;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Math
|
||||
{
|
||||
[StructLayout(LayoutKind.Explicit)]
|
||||
public struct matrix3x4:IEquatable<matrix3x4>
|
||||
public struct matrix3x4 : IEquatable<matrix3x4>
|
||||
{
|
||||
[FieldOffset(0)]
|
||||
public vec4d row1;
|
||||
@@ -18,7 +14,7 @@ namespace StgSharp.Math
|
||||
public vec4d row3;
|
||||
|
||||
public matrix3x4(
|
||||
vec4d r1,vec4d r2,vec4d r3
|
||||
vec4d r1, vec4d r2, vec4d r3
|
||||
)
|
||||
{
|
||||
this.row1 = r1;
|
||||
@@ -32,9 +28,9 @@ namespace StgSharp.Math
|
||||
float a31, float a32, float a33, float a34
|
||||
)
|
||||
{
|
||||
row1 = new vec4d(a11,a12,a13,a14);
|
||||
row2 = new vec4d(a21,a22,a23,a24);
|
||||
row3 = new vec4d(a31,a32,a33,a34);
|
||||
row1 = new vec4d(a11, a12, a13, a14);
|
||||
row2 = new vec4d(a21, a22, a23, a24);
|
||||
row3 = new vec4d(a31, a32, a33, a34);
|
||||
}
|
||||
|
||||
public override bool Equals(object obj)
|
||||
@@ -69,7 +65,7 @@ namespace StgSharp.Math
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return HashCode.Combine(this.row1,this.row2,this.row3);
|
||||
return HashCode.Combine(this.row1, this.row2, this.row3);
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
@@ -77,7 +73,7 @@ namespace StgSharp.Math
|
||||
return $"{this.row1}\n{this.row2}\n{this.row3}";
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Math
|
||||
{
|
||||
[StructLayout(LayoutKind.Explicit)]
|
||||
public struct matrix4x2:IEquatable<matrix4x2>
|
||||
public struct matrix4x2 : IEquatable<matrix4x2>
|
||||
{
|
||||
[FieldOffset(0)]
|
||||
public vec2d row1;
|
||||
@@ -79,6 +77,6 @@ namespace StgSharp.Math
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,13 +1,11 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Math
|
||||
{
|
||||
|
||||
[StructLayout(LayoutKind.Explicit)]
|
||||
public struct matrix4x3:IEquatable<matrix4x3>
|
||||
public struct matrix4x3 : IEquatable<matrix4x3>
|
||||
{
|
||||
[FieldOffset(0)]
|
||||
public vec3d row1;
|
||||
@@ -41,7 +39,7 @@ namespace StgSharp.Math
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
return this.Equals((matrix4x3)obj);
|
||||
}
|
||||
@@ -72,6 +70,6 @@ namespace StgSharp.Math
|
||||
return base.ToString();
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Math
|
||||
{
|
||||
[StructLayout(LayoutKind.Explicit)]
|
||||
public struct matrix4x4:IEquatable<matrix4x4>
|
||||
public struct matrix4x4 : IEquatable<matrix4x4>
|
||||
{
|
||||
[FieldOffset(0)]
|
||||
public vec4d row1;
|
||||
@@ -17,7 +15,7 @@ namespace StgSharp.Math
|
||||
[FieldOffset(48)]
|
||||
public vec4d row4;
|
||||
|
||||
public matrix4x4( vec4d r1,vec4d r2,vec4d r3,vec4d r4)
|
||||
public matrix4x4(vec4d r1, vec4d r2, vec4d r3, vec4d r4)
|
||||
{
|
||||
row1 = r1;
|
||||
row2 = r2;
|
||||
@@ -98,10 +96,10 @@ namespace StgSharp.Math
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1,22 +1,18 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.Common;
|
||||
using System.Runtime;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Math
|
||||
{
|
||||
|
||||
[StructLayout(LayoutKind.Explicit)]
|
||||
public struct vec2d:IEquatable<vec2d>
|
||||
public struct vec2d : IEquatable<vec2d>
|
||||
{
|
||||
[FieldOffset(0)]
|
||||
public float X;
|
||||
[FieldOffset(sizeof(float))]
|
||||
public float Y;
|
||||
|
||||
public vec2d(float x,float y)
|
||||
public vec2d(float x, float y)
|
||||
{
|
||||
X = x;
|
||||
Y = y;
|
||||
@@ -62,7 +58,7 @@ namespace StgSharp.Math
|
||||
|
||||
public static bool operator ==(vec2d vec1, vec2d vec2)
|
||||
{
|
||||
return vec1.X==vec2.X && vec1.Y==vec2.Y;
|
||||
return vec1.X == vec2.X && vec1.Y == vec2.Y;
|
||||
}
|
||||
|
||||
public static bool operator !=(vec2d vec1, vec2d vec2)
|
||||
@@ -87,13 +83,13 @@ namespace StgSharp.Math
|
||||
|
||||
public static vec2d operator /(vec2d vec, float x)
|
||||
{
|
||||
return new vec2d(vec.X/x, vec.Y/x);
|
||||
return new vec2d(vec.X / x, vec.Y / x);
|
||||
}
|
||||
|
||||
public static implicit operator float[](vec2d vec)
|
||||
{
|
||||
return new float[2] {vec.X,vec.Y };
|
||||
return new float[2] { vec.X, vec.Y };
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,9 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.Common;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Math
|
||||
{
|
||||
[StructLayout(LayoutKind.Explicit,Size =12,Pack =16)]
|
||||
[StructLayout(LayoutKind.Explicit, Size = 12, Pack = 16)]
|
||||
public struct vec3d : IEquatable<vec3d>
|
||||
{
|
||||
[FieldOffset(0)]
|
||||
@@ -31,7 +28,7 @@ namespace StgSharp.Math
|
||||
}
|
||||
else
|
||||
{
|
||||
return this.X == other.X
|
||||
return this.X == other.X
|
||||
&& this.Y == other.Y
|
||||
&& this.Z == other.Z;
|
||||
}
|
||||
@@ -63,17 +60,17 @@ namespace StgSharp.Math
|
||||
return $"{X}\t{Y}\t{Z}";
|
||||
}
|
||||
|
||||
public static bool operator ==(vec3d vec1,vec3d vec2)
|
||||
public static bool operator ==(vec3d vec1, vec3d vec2)
|
||||
{
|
||||
return vec1.X == vec2.X
|
||||
&& vec1.Y == vec2.Y
|
||||
return vec1.X == vec2.X
|
||||
&& vec1.Y == vec2.Y
|
||||
&& vec1.Z == vec2.Z;
|
||||
}
|
||||
|
||||
public static bool operator !=(vec3d vec1, vec3d vec2)
|
||||
{
|
||||
return !(vec1.X == vec2.X
|
||||
&& vec1.Y == vec2.Y
|
||||
return !(vec1.X == vec2.X
|
||||
&& vec1.Y == vec2.Y
|
||||
&& vec1.Z == vec2.Z);
|
||||
}
|
||||
|
||||
@@ -97,7 +94,7 @@ namespace StgSharp.Math
|
||||
|
||||
public static float operator *(vec3d vec1, vec3d vec2)
|
||||
{
|
||||
return
|
||||
return
|
||||
vec1.X * vec2.X
|
||||
+ vec1.Y + vec2.Y
|
||||
+ vec1.Z + vec2.Z;
|
||||
@@ -112,7 +109,7 @@ namespace StgSharp.Math
|
||||
);
|
||||
}
|
||||
|
||||
public static vec3d operator *( float x, vec3d vec)
|
||||
public static vec3d operator *(float x, vec3d vec)
|
||||
{
|
||||
return new vec3d(
|
||||
vec.X * x,
|
||||
|
||||
@@ -1,15 +1,10 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.Common;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Security.Cryptography.X509Certificates;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Math
|
||||
{
|
||||
[StructLayout(LayoutKind.Explicit)]
|
||||
public struct vec4d:IEquatable< vec4d>
|
||||
public struct vec4d : IEquatable<vec4d>
|
||||
{
|
||||
[FieldOffset(0)]
|
||||
public float X;
|
||||
@@ -20,16 +15,16 @@ namespace StgSharp.Math
|
||||
[FieldOffset(12)]
|
||||
public float W;
|
||||
|
||||
|
||||
|
||||
[FieldOffset(0)]
|
||||
public vec2d Point1;
|
||||
[FieldOffset(8)]
|
||||
public vec2d Point2;
|
||||
|
||||
public vec4d(float a1,float a2,float a3,float a4)
|
||||
|
||||
public vec4d(float a1, float a2, float a3, float a4)
|
||||
{
|
||||
Point1= default(vec2d);
|
||||
Point2= default(vec2d);
|
||||
Point1 = default(vec2d);
|
||||
Point2 = default(vec2d);
|
||||
|
||||
X = a1;
|
||||
Y = a2;
|
||||
@@ -48,34 +43,34 @@ namespace StgSharp.Math
|
||||
W = (float)a4;
|
||||
}
|
||||
|
||||
public vec4d(vec2d p1,vec2d p2)
|
||||
public vec4d(vec2d p1, vec2d p2)
|
||||
{
|
||||
X= 0;
|
||||
Y= 0;
|
||||
X = 0;
|
||||
Y = 0;
|
||||
Z = 0;
|
||||
W = 0;
|
||||
|
||||
Point1= p1;
|
||||
|
||||
Point1 = p1;
|
||||
Point2 = p2;
|
||||
}
|
||||
|
||||
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
if (obj == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else if(obj.GetType() != typeof( vec4d))
|
||||
else if (obj.GetType() != typeof(vec4d))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
return this == ( vec4d)obj;
|
||||
return this == (vec4d)obj;
|
||||
}
|
||||
}
|
||||
|
||||
bool IEquatable< vec4d>.Equals( vec4d other)
|
||||
bool IEquatable<vec4d>.Equals(vec4d other)
|
||||
{
|
||||
if (this.GetHashCode() != other.GetHashCode())
|
||||
{
|
||||
@@ -100,19 +95,19 @@ namespace StgSharp.Math
|
||||
return $"{X}\t{Y}\t{Z}\t{W}";
|
||||
}
|
||||
|
||||
public static bool operator ==( vec4d vec1, vec4d vec2)
|
||||
public static bool operator ==(vec4d vec1, vec4d vec2)
|
||||
{
|
||||
return vec1.Equals(vec2);
|
||||
}
|
||||
|
||||
public static bool operator !=( vec4d vec1, vec4d vec2)
|
||||
public static bool operator !=(vec4d vec1, vec4d vec2)
|
||||
{
|
||||
return !vec1.Equals(vec2);
|
||||
}
|
||||
|
||||
public static vec4d operator +( vec4d vec1, vec4d vec2)
|
||||
public static vec4d operator +(vec4d vec1, vec4d vec2)
|
||||
{
|
||||
return new vec4d(
|
||||
return new vec4d(
|
||||
vec1.X + vec2.X,
|
||||
vec1.Y + vec2.Y,
|
||||
vec1.Z + vec2.Z,
|
||||
@@ -120,9 +115,9 @@ namespace StgSharp.Math
|
||||
);
|
||||
}
|
||||
|
||||
public static vec4d operator -( vec4d vec1, vec4d vec2)
|
||||
public static vec4d operator -(vec4d vec1, vec4d vec2)
|
||||
{
|
||||
return new vec4d(
|
||||
return new vec4d(
|
||||
vec1.X - vec2.X,
|
||||
vec1.Y - vec2.Y,
|
||||
vec1.Z - vec2.Z,
|
||||
@@ -130,7 +125,7 @@ namespace StgSharp.Math
|
||||
);
|
||||
}
|
||||
|
||||
public static float operator *( vec4d vec1, vec4d vec2)
|
||||
public static float operator *(vec4d vec1, vec4d vec2)
|
||||
{
|
||||
return
|
||||
vec1.X * vec2.X
|
||||
@@ -139,14 +134,14 @@ namespace StgSharp.Math
|
||||
+ vec1.W * vec2.W;
|
||||
}
|
||||
|
||||
public static vec4d operator *( vec4d vec, float x)
|
||||
public static vec4d operator *(vec4d vec, float x)
|
||||
{
|
||||
return new vec4d(vec.X * x, vec.Y * x, vec.Z * x, vec.W * x ) ;
|
||||
return new vec4d(vec.X * x, vec.Y * x, vec.Z * x, vec.W * x);
|
||||
}
|
||||
|
||||
public static vec4d operator /( vec4d vec, float x)
|
||||
public static vec4d operator /(vec4d vec, float x)
|
||||
{
|
||||
return new vec4d(vec.X / x, vec.Y / x, vec.Z / x, vec.W / x);
|
||||
return new vec4d(vec.X / x, vec.Y / x, vec.Z / x, vec.W / x);
|
||||
}
|
||||
|
||||
public static implicit operator float[](vec4d vec)
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Math
|
||||
{
|
||||
@@ -69,7 +67,7 @@ namespace StgSharp.Math
|
||||
v = y + y * u;
|
||||
}/**/
|
||||
|
||||
v = sign * v ;
|
||||
v = sign * v;
|
||||
|
||||
return piby2 - v;
|
||||
}
|
||||
|
||||
@@ -5,8 +5,6 @@
|
||||
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
|
||||
namespace StgSharp.Math
|
||||
@@ -26,13 +24,13 @@ namespace StgSharp.Math
|
||||
/// <param name="x">The sine value of the angle</param>
|
||||
/// <returns></returns>
|
||||
/// <exception cref="ArgumentException"></exception>
|
||||
public static float ASin(float x )
|
||||
public static float ASin(float x)
|
||||
{
|
||||
|
||||
int sign = 1;
|
||||
float y ;
|
||||
|
||||
if (x<0)
|
||||
int sign = 1;
|
||||
float y;
|
||||
|
||||
if (x < 0)
|
||||
{
|
||||
sign = -1;
|
||||
y = -x;
|
||||
@@ -42,14 +40,14 @@ namespace StgSharp.Math
|
||||
y = x;
|
||||
}
|
||||
|
||||
if ( x>1)
|
||||
if (x > 1)
|
||||
{
|
||||
throw new ArgumentException();
|
||||
}
|
||||
|
||||
float r, s, u, v = 0.0f;
|
||||
bool transform = (y >= 0.5f);
|
||||
|
||||
|
||||
if (transform)
|
||||
{
|
||||
r = 0.5f * (1.0f - y);
|
||||
@@ -60,7 +58,7 @@ namespace StgSharp.Math
|
||||
{
|
||||
r = y * y;
|
||||
}
|
||||
u= r * (0.184161606965100694821398249421F +
|
||||
u = r * (0.184161606965100694821398249421F +
|
||||
(-0.0565298683201845211985026327361F +
|
||||
(-0.0133819288943925804214011424456F -
|
||||
0.00396137437848476485201154797087F * r) * r) * r) /
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Math
|
||||
namespace StgSharp.Math
|
||||
{
|
||||
public static unsafe partial class Calc
|
||||
{
|
||||
@@ -30,7 +26,7 @@ namespace StgSharp.Math
|
||||
angle = 0.7853981634f;
|
||||
}
|
||||
|
||||
float v = 0.7853981634f * x + x * (1 - x) * (0.2447f+0.0663f * x);
|
||||
float v = 0.7853981634f * x + x * (1 - x) * (0.2447f + 0.0663f * x);
|
||||
v += angle;
|
||||
v *= sign;
|
||||
|
||||
@@ -46,10 +42,10 @@ namespace StgSharp.Math
|
||||
|
||||
float z = y / x;
|
||||
|
||||
float sign = 1, angle = 0,angle2 = 0;
|
||||
if (x<0)
|
||||
float sign = 1, angle = 0, angle2 = 0;
|
||||
if (x < 0)
|
||||
{
|
||||
angle = -3.1415926535f ;
|
||||
angle = -3.1415926535f;
|
||||
}
|
||||
if (z < 0)
|
||||
{
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Text;
|
||||
using System.Numerics;
|
||||
using System.Globalization;
|
||||
|
||||
namespace StgSharp.Math
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Math
|
||||
namespace StgSharp.Math
|
||||
{
|
||||
public static partial class Calc
|
||||
{
|
||||
|
||||
@@ -1,13 +1,11 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Math
|
||||
{
|
||||
public unsafe delegate float ScalarCalcHandler(float* x);
|
||||
|
||||
public static unsafe partial class Calc
|
||||
public static unsafe partial class Calc
|
||||
{
|
||||
[DllImport("Kernel32.dll", EntryPoint = "VirtualAlloc")]
|
||||
private static extern IntPtr VirtualAlloc(IntPtr address, int size, uint allocType, uint protect);
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Math
|
||||
namespace StgSharp.Math
|
||||
{
|
||||
public static unsafe partial class Calc
|
||||
{
|
||||
@@ -25,14 +21,14 @@ namespace StgSharp.Math
|
||||
}
|
||||
|
||||
bool sign = false;
|
||||
if (x<0)
|
||||
if (x < 0)
|
||||
{
|
||||
sign = true;
|
||||
x = -x;
|
||||
}
|
||||
|
||||
float z = x , t;
|
||||
if (x<0.5f)
|
||||
float z = x, t;
|
||||
if (x < 0.5f)
|
||||
{
|
||||
t = 1.0f + x * (
|
||||
1.0f + x * (
|
||||
|
||||
@@ -1,12 +1,8 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Math
|
||||
namespace StgSharp.Math
|
||||
{
|
||||
public class Function
|
||||
{
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,15 +1,11 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Net.Sockets;
|
||||
using System.Text;
|
||||
using static System.Net.WebRequestMethods;
|
||||
|
||||
namespace StgSharp.Math
|
||||
{
|
||||
public static partial class Calc
|
||||
{
|
||||
|
||||
static private readonly float[] logArray =
|
||||
private static readonly float[] logArray =
|
||||
{
|
||||
0f, 0.00995033085316809f, 0.0198026272961797f, 0.0295588022415444f, 0.0392207131532813f, 0.048790164169432f, 0.0582689081239758f, 0.0676586484738149f, 0.0769610411361284f, 0.0861776962410524f,
|
||||
0.0953101798043249f, 0.104360015324243f, 0.113328685307003f, 0.122217632724249f, 0.131028262406404f, 0.139761942375159f, 0.148420005118273f, 0.157003748809665f, 0.165514438477573f, 0.173953307123438f,
|
||||
@@ -30,9 +26,9 @@ namespace StgSharp.Math
|
||||
/// <returns>
|
||||
/// Returns the value of ln(x).
|
||||
/// </returns>
|
||||
public unsafe static float Log(float x)
|
||||
public static unsafe float Log(float x)
|
||||
{
|
||||
if (x<0)
|
||||
if (x < 0)
|
||||
{
|
||||
throw new ArgumentOutOfRangeException();
|
||||
}
|
||||
@@ -45,24 +41,24 @@ namespace StgSharp.Math
|
||||
input >>= 9;
|
||||
input += 0b_0011_1111_1000_0000_0000_0000_0000_0000;
|
||||
float result = *(float*)&input;
|
||||
int order = (int)(result * 100)-100;
|
||||
int order = (int)(result * 100) - 100;
|
||||
|
||||
float cache = (result) / (1f + 0.01f * order) -1 ;
|
||||
float cache = (result) / (1f + 0.01f * order) - 1;
|
||||
result = cache * -0.25f + 0.3333333333333f;
|
||||
result = result * cache - 0.5f;
|
||||
result = result * cache + 1.0f;
|
||||
result *= cache;
|
||||
|
||||
return
|
||||
f*0.6931471806f +
|
||||
result +
|
||||
return
|
||||
f * 0.6931471806f +
|
||||
result +
|
||||
logArray[order];
|
||||
}
|
||||
|
||||
|
||||
public static float Log(float x, float y)
|
||||
{
|
||||
return Log(x)/Log(y);
|
||||
return Log(x) / Log(y);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,9 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Math
|
||||
{
|
||||
namespace StgSharp.Math
|
||||
{
|
||||
public static unsafe partial class Calc
|
||||
{
|
||||
/// <summary>
|
||||
@@ -31,7 +27,7 @@ namespace StgSharp.Math
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
if (x==1&&y==0)
|
||||
if (x == 1 && y == 0)
|
||||
{
|
||||
return 1.0f / 0;
|
||||
}
|
||||
@@ -44,7 +40,7 @@ namespace StgSharp.Math
|
||||
z = -z;
|
||||
}
|
||||
|
||||
if (z<0.5f)
|
||||
if (z < 0.5f)
|
||||
{
|
||||
t = 1.0f + z * (
|
||||
1.0f + z * (
|
||||
@@ -77,7 +73,7 @@ namespace StgSharp.Math
|
||||
t = t * t;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
if (sign)
|
||||
{
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Math
|
||||
namespace StgSharp.Math
|
||||
{
|
||||
public static partial class Calc
|
||||
{
|
||||
@@ -45,7 +41,7 @@ namespace StgSharp.Math
|
||||
float refer2 = refer * refer;
|
||||
|
||||
|
||||
return sinData[a]*(1 - 0.0123370055f * refer2 + 2.536695709e-5f * refer2 * refer2 )
|
||||
return sinData[a] * (1 - 0.0123370055f * refer2 + 2.536695709e-5f * refer2 * refer2)
|
||||
+ cosData[a] * (0.1570796327f * refer - 6.459640975e-4f * refer * refer2);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace StgSharp.Math
|
||||
{
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Math
|
||||
namespace StgSharp.Math
|
||||
{
|
||||
public static partial class Calc
|
||||
{
|
||||
@@ -21,8 +17,8 @@ namespace StgSharp.Math
|
||||
float sin = (0.1570796327f * refer - 6.459640975e-4f * refer * refer2);
|
||||
float cos = (1 - 0.0123370055f * refer2 + 2.536695709e-5f * refer2 * refer2);
|
||||
|
||||
return ( sinData[a] * cos + cosData[a] * sin )
|
||||
/ ( cosData[a] * cos - sinData[a] * sin );
|
||||
return (sinData[a] * cos + cosData[a] * sin)
|
||||
/ (cosData[a] * cos - sinData[a] * sin);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -10,7 +10,7 @@
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="F:StgSharp.Control.ProgramTimeLine.tickCounter">
|
||||
<member name="F:StgSharp.Control.TimeLine.tickCounter">
|
||||
<summary>
|
||||
Tick counter count the frames passed since the program start.
|
||||
</summary>
|
||||
|
||||
Binary file not shown.
@@ -74,7 +74,7 @@
|
||||
"privateAssets": "all"
|
||||
}
|
||||
},
|
||||
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\7.0.104\\RuntimeIdentifierGraph.json"
|
||||
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\7.0.107\\RuntimeIdentifierGraph.json"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -238,7 +238,7 @@
|
||||
"privateAssets": "all"
|
||||
}
|
||||
},
|
||||
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\7.0.104\\RuntimeIdentifierGraph.json"
|
||||
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\7.0.107\\RuntimeIdentifierGraph.json"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 2,
|
||||
"dgSpecHash": "U++b0+W5tMtw1u5DBNDrBYs2Nkja20yFxBaZIIle31wC4/jhdzSOL4qsXL/5pIuOvVZUYWhKpDakTR5UwddXEw==",
|
||||
"dgSpecHash": "0wLiERtqIl+07/qyrsOmTBfKZIQqYkUcCkrrFH+nIatbQb87AlMw0u1ibcBVNP/tKys5m4Ciw+5WO8b8hgcJbw==",
|
||||
"success": true,
|
||||
"projectFilePath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\源代码\\StgSharp\\StgSharp.csproj",
|
||||
"expectedPackageFiles": [
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user