x) Implement SizeOf

x) And clamp and PerlinToContinent
x) Optimize loaded scripts as Release
This commit is contained in:
Marc Hernandez 2022-10-04 09:34:23 -07:00
parent 82ab55c672
commit efe517abea
3 changed files with 42 additions and 6 deletions

View File

@ -144,7 +144,7 @@ namespace lib
[MethodImpl( MethodImplOptions.AggressiveInlining )]
public static int SizeOf<T>()
{
throw new NotImplementedException();
return System.Runtime.InteropServices.Marshal.SizeOf(typeof( T ));
}
public static unsafe void* Write<T>( void* pDest, ref T data ) where T : struct

View File

@ -32,6 +32,45 @@ namespace math
static public class fn
{
static public float Clamp( float v, float min, float max )
{
return v < min ? min : v > max ? max : v;
}
//Tracked these down in Desmos
static public float s_a = 0.0f;
static public float s_b = 0.155f;
static public float s_c = 1.03f;
static public float s_d = 6.13f;
static public float s_f = -10.2f;
static public float s_g = 4.06f;
static public float Quintic( float v )
{
var vv = v * v;
var vvv = vv * v;
var vvvv = vvv * v;
var vvvvv= vvvv * v;
var res = s_a + s_b*v + s_c*vv + s_d*vvv + s_f*vvvv + s_g * vvvvv;
return res;
}
static public float s_p = 0.37f;
static public float s_o = 0.15f;
static public float s_m = 2.11f;
static public float s_n = -0.57f;
static public float PerlinToContinent( float h )
{
var res = Quintic( s_m * h + s_n ) * s_o + s_p;
return res;
}
static public float SmoothStepCos( float v )
{
var dV = (double)v;

View File

@ -196,8 +196,6 @@ public static class scr
{
var fullpath = Path.GetFullPath( filename );
//string text = System.IO.File.ReadAllText( fullpath );
var stream = File.OpenRead( fullpath );
var sourceText = SourceText.From( stream );
@ -221,8 +219,6 @@ public static class scr
SyntaxTree syntaxTree = CSharpSyntaxTree.ParseText( sourceText, options, uniquePath );
//SyntaxTree syntaxTree = CSharpSyntaxTree.ParseText(sourceText, options, uniquePath, encoding: System.Text.Encoding.UTF8);
var memRef = new MemoryRefResolver();
@ -266,13 +262,14 @@ public static class scr
{
var memRef = new MemoryRefResolver();
// @@@@ TODO :: Config release / debug
CSharpCompilation compilation = CSharpCompilation.Create(
assemblyName,
syntaxTrees: syntaxTrees,
references: RefCache.References,
options: new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary,
sourceReferenceResolver: memRef,
optimizationLevel: OptimizationLevel.Debug,
optimizationLevel: OptimizationLevel.Release,
platform: platform,
specificDiagnosticOptions: new Dictionary<string, ReportDiagnostic>
{