mirror of
https://gitee.com/jisol/jisol-game/
synced 2026-06-15 13:37:12 +00:00
临时提交
This commit is contained in:
@@ -125,6 +125,7 @@
|
||||
<None Include="Assets\Packages\TouchSocket.Http.2.0.16\lib\netstandard2.1\TouchSocket.Http.xml" />
|
||||
<None Include="Assets\Packages\System.Text.Encodings.Web.6.0.0\useSharedDesignerContext.txt" />
|
||||
<None Include="Assets\Resources\Samples\map1.json" />
|
||||
<None Include="Assets\Resources\Samples\Battle\Map\NavMesh\map1.json" />
|
||||
<None Include="Assets\Packages\System.Text.Encodings.Web.6.0.0\lib\netstandard2.0\System.Text.Encodings.Web.xml" />
|
||||
<None Include="Assets\Samples\Cinemachine\2.10.1\Cinemachine Example Scenes\Scenes\FadeOutNearbyObjects\FadeOut.shader" />
|
||||
<None Include="Assets\Scripts\BehaviorTreeSlayer\Examples\6 break running node\SampleIdleConfig.txt" />
|
||||
|
||||
@@ -0,0 +1,307 @@
|
||||
/*
|
||||
* @FileName: EditorCreateLUT.cs
|
||||
* @Date: 2024-04-20 20:06:14
|
||||
* @LastEditTime: 2024-04-22 22:15:46
|
||||
* @Description: 生成三角函数速查表代码
|
||||
*/
|
||||
|
||||
#if UNITY_EDITOR
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
namespace JNGame.Math
|
||||
{
|
||||
/// <summary>
|
||||
/// 编辑模式下生成三角函数速查表代码
|
||||
/// </summary>
|
||||
public static class EditorCreateLUT
|
||||
{
|
||||
#region Unit Test
|
||||
|
||||
//[MenuItem("LockstepEngine/Math/TestAllLut")]
|
||||
private static void TestAllLut()
|
||||
{
|
||||
TestSqrt(10000);
|
||||
TestSqrt(65535);
|
||||
TestSqrt(65536);
|
||||
TestSqrt(0xffffffff);
|
||||
TestSqrt(1000002L * 1000001L);
|
||||
TestLutATan();
|
||||
TestATan2();
|
||||
TestLutASin();
|
||||
TestLutACos();
|
||||
TestLutSin();
|
||||
TestLutCos();
|
||||
}
|
||||
|
||||
private static void TestSqrt(ulong t)
|
||||
{
|
||||
var val = LMath.Sqrt(t);
|
||||
UnityEngine.Debug.Log($"sqrt({t}) = {val}");
|
||||
return;
|
||||
}
|
||||
|
||||
//[MenuItem("LockstepEngine/Math/TestLutATan")]
|
||||
private static void TestLutATan()
|
||||
{
|
||||
TestLut((i) => i, (i) => Mathf.Atan(i), (i) => LMath.Atan(i.ToLFloat()));
|
||||
}
|
||||
|
||||
private static void TestLutASin()
|
||||
{
|
||||
TestLut((i) => i * 0.001f, (p) => Mathf.Asin(p), (p) => LMath.Asin(p.ToLFloat()));
|
||||
}
|
||||
|
||||
private static void TestLutACos()
|
||||
{
|
||||
TestLut((i) => i * 0.001f, (p) => Mathf.Acos(p), (p) => LMath.Acos(p.ToLFloat()));
|
||||
}
|
||||
|
||||
private static void TestLutSin()
|
||||
{
|
||||
TestLut((i) => i * 0.001f * Mathf.PI * 2 - Mathf.PI, (p) => Mathf.Sin(p), (p) => LMath.Sin(p.ToLFloat()));
|
||||
}
|
||||
|
||||
private static void TestLutCos()
|
||||
{
|
||||
TestLut((i) => i * 0.001f * Mathf.PI * 2 - Mathf.PI, (p) => Mathf.Cos(p), (p) => LMath.Cos(p.ToLFloat()));
|
||||
}
|
||||
|
||||
private static void TestLut(Func<int, float> funcPar, Func<float, float> rawFunc, Func<float, LFloat> lFunc)
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
int testSize1 = 1000;
|
||||
for (int i = 1; i < testSize1; i++)
|
||||
{
|
||||
var par = funcPar(i);
|
||||
var rawVal = rawFunc(par);
|
||||
var myVal = lFunc(par).ToFloat();
|
||||
var diff = rawVal - myVal;
|
||||
if (diff > 0.01f)
|
||||
{
|
||||
sb.AppendLine($"i:{i} diff:{diff}");
|
||||
}
|
||||
}
|
||||
|
||||
UnityEngine.Debug.Log(sb.ToString());
|
||||
}
|
||||
|
||||
//[MenuItem("LockstepEngine/Math/TestATan2")]
|
||||
private static void TestATan2()
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
var v1 = Mathf.Atan2(1, 1);
|
||||
var v2 = Mathf.Atan2(1, -1);
|
||||
var v3 = Mathf.Atan2(-1, -1);
|
||||
var v4 = Mathf.Atan2(-1, 1);
|
||||
|
||||
int testSize = 100;
|
||||
for (int y = -testSize; y < testSize; y++)
|
||||
{
|
||||
for (int x = -testSize; x < testSize; x++)
|
||||
{
|
||||
var rawVal = Mathf.Atan2(y, x);
|
||||
var myVal = LMath.Atan2(y, x); // new LFloat(true, LMath._Atan2(y, x)).ToFloat();
|
||||
var diff = rawVal - myVal;
|
||||
if (diff > 0.01f)
|
||||
{
|
||||
sb.AppendLine($"y:{y} x:{x} diff:{diff}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
UnityEngine.Debug.Log(sb.ToString());
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Code Generator
|
||||
/// <summary>
|
||||
/// 代码生成路径
|
||||
/// </summary>
|
||||
private static readonly string s_LUTDir = Application.dataPath + "/HotScripts/JNGame/Root/Math/LUT/";
|
||||
|
||||
/// <summary>
|
||||
/// 生成三角函数速查表代码文件
|
||||
/// </summary>
|
||||
[MenuItem("LockstepEngine/Math/CreateAllLUT")]
|
||||
static void CreateAllLUT()
|
||||
{
|
||||
CreateLutAtan2();
|
||||
CreateLUTASinCos();
|
||||
}
|
||||
|
||||
private static readonly string s_FilePrefixStr = @"
|
||||
//#define DONT_USE_GENERATE_CODE
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by JNGame.CodeGenerator
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
";
|
||||
private static void CreateLutAtan2()
|
||||
{
|
||||
var fileName = s_LUTDir + "LUTAtan2.cs";
|
||||
string content = @"
|
||||
using System;
|
||||
using JNGame.Math;
|
||||
namespace JNGame.Math
|
||||
{
|
||||
public static class LUTAtan2
|
||||
{
|
||||
public const int MaxQueryIdx = $MAX_QUERY_IDX;//Abs(y/x)from 1 to MaxQueryIdx
|
||||
|
||||
public static int[] _startIdx;
|
||||
public static int[] _arySize;
|
||||
public static int[] _tblTbl;
|
||||
|
||||
static LUTAtan2()
|
||||
{
|
||||
_startIdx = new int[MaxQueryIdx +1]{
|
||||
$START_IDX
|
||||
};
|
||||
_arySize = new int[MaxQueryIdx +1]{
|
||||
$ARY_SIZE
|
||||
};
|
||||
_tblTbl = new int[]{
|
||||
$ALL_VALUES
|
||||
};
|
||||
}
|
||||
}
|
||||
}";
|
||||
const int MaxQueryIdx = 1000;
|
||||
const int interval = 1000;
|
||||
// UnityEngine.Debug.LogError("tan Pi/4 = " + Mathf.Tan(Mathf.PI / 4));
|
||||
// UnityEngine.Debug.LogError("atan 1 = " + Mathf.Atan(1) * Mathf.Rad2Deg);
|
||||
StringBuilder ssb = new StringBuilder();
|
||||
StringBuilder aryLne = new StringBuilder();
|
||||
int sum = 0;
|
||||
StringBuilder tblSb = new StringBuilder();
|
||||
StringBuilder startSb = new StringBuilder();
|
||||
StringBuilder arySizeSb = new StringBuilder();
|
||||
string sprefix = "\t\t\t\t";
|
||||
tblSb.Append(sprefix);
|
||||
startSb.Append(sprefix);
|
||||
arySizeSb.Append(sprefix);
|
||||
for (int i = 0; i < MaxQueryIdx; i++)
|
||||
{
|
||||
var val = Mathf.Atan(i + 1) * Mathf.Rad2Deg;
|
||||
var val2 = Mathf.Atan(i + 2) * Mathf.Rad2Deg;
|
||||
var arryLen = (int)((val2 - val) * interval);
|
||||
if (arryLen == 0)
|
||||
{
|
||||
arryLen = 1;
|
||||
}
|
||||
|
||||
startSb.Append(sum + ", ");
|
||||
arySizeSb.Append(arryLen + ", ");
|
||||
for (int j = 0; j < arryLen; j++)
|
||||
{
|
||||
var rad = Mathf.Atan(i + 1 + (j * 1.0f / arryLen));
|
||||
tblSb.Append((int)(rad * LFloat.Precision) + ", ");
|
||||
sum++;
|
||||
if (sum % 100 == 0)
|
||||
{
|
||||
tblSb.AppendLine();
|
||||
tblSb.Append(sprefix);
|
||||
}
|
||||
}
|
||||
|
||||
if (i % 100 == 99)
|
||||
{
|
||||
startSb.AppendLine();
|
||||
arySizeSb.AppendLine();
|
||||
startSb.Append(sprefix);
|
||||
arySizeSb.Append(sprefix);
|
||||
}
|
||||
}
|
||||
|
||||
startSb.Append("" + (sum + 1));
|
||||
arySizeSb.Append("" + 1);
|
||||
tblSb.Append("" + (int)(Mathf.PI / 4 * LFloat.Precision));
|
||||
content = content
|
||||
.Replace("$MAX_QUERY_IDX", MaxQueryIdx.ToString())
|
||||
.Replace("$START_IDX", startSb.ToString())
|
||||
.Replace("$ARY_SIZE", arySizeSb.ToString())
|
||||
.Replace("$ALL_VALUES", tblSb.ToString());
|
||||
|
||||
//save to files
|
||||
File.WriteAllText(fileName, s_FilePrefixStr + content);
|
||||
AssetDatabase.Refresh();
|
||||
return;
|
||||
}
|
||||
|
||||
private static void CreateLUTASinCos()
|
||||
{
|
||||
int ACount = 4000;
|
||||
CreateLUTA("LUTAsin", ACount, (i) =>
|
||||
Mathf.Asin(Mathf.Clamp(-1.0f + i * 2.0f / ACount, -1f, 1f))
|
||||
);
|
||||
CreateLUTA("LUTAcos", ACount, (i) =>
|
||||
Mathf.Acos(Mathf.Clamp(-1.0f + i * 2.0f / ACount, -1f, 1f))
|
||||
);
|
||||
int CCount = 7200;
|
||||
CreateLUTA("LUTCos", CCount, (i) =>
|
||||
Mathf.Cos(i * Mathf.PI * 2 / CCount)
|
||||
);
|
||||
CreateLUTA("LUTSin", CCount, (i) =>
|
||||
Mathf.Sin(i * Mathf.PI * 2 / CCount)
|
||||
);
|
||||
}
|
||||
|
||||
private static void CreateLUTA(string clsName, int nLutAryCount, Func<int, float> itemCallBack)
|
||||
{
|
||||
var fileName = s_LUTDir + clsName + ".cs";
|
||||
string content = @"using System;
|
||||
using JNGame.Math;
|
||||
namespace JNGame.Math
|
||||
{
|
||||
public static class $CLS_NAME
|
||||
{
|
||||
public static readonly int COUNT;
|
||||
public static readonly int HALF_COUNT;
|
||||
public static readonly int[] table;
|
||||
static $CLS_NAME()
|
||||
{
|
||||
COUNT = $COUNT_VAL;
|
||||
HALF_COUNT = COUNT >> 1;
|
||||
table = new int[]
|
||||
{
|
||||
$ALL_VALUES
|
||||
};
|
||||
}
|
||||
}
|
||||
}";
|
||||
StringBuilder sb = new StringBuilder();
|
||||
string prefix = "\t\t\t\t";
|
||||
sb.Append(prefix);
|
||||
for (int i = 0; i <= nLutAryCount; i++)
|
||||
{
|
||||
int val = (int)(itemCallBack(i) * LFloat.Precision);
|
||||
sb.Append(val.ToString() + ",");
|
||||
if (i % 100 == 99)
|
||||
{
|
||||
sb.AppendLine();
|
||||
sb.Append(prefix);
|
||||
}
|
||||
}
|
||||
|
||||
content = content
|
||||
.Replace("$CLS_NAME", clsName.ToString())
|
||||
.Replace("$COUNT_VAL", nLutAryCount.ToString())
|
||||
.Replace("$ALL_VALUES", sb.ToString());
|
||||
//save to files
|
||||
File.WriteAllText(fileName, s_FilePrefixStr + content);
|
||||
AssetDatabase.Refresh();
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5eb54a96f1904df2a6494a7d56f65aa5
|
||||
timeCreated: 1732460759
|
||||
+1
-1
@@ -445,7 +445,7 @@ namespace JNGame.PathFinding
|
||||
{
|
||||
GeometryUtil.GetClosestPointOnTriangle(ret.vertexA, ret.vertexB, ret.vertexC, point, ref pointOnTriangle);
|
||||
// 稍微向三角形方向内部一点,避免严格在边上,三角形落位判断问题
|
||||
pointOnTriangle = point + (pointOnTriangle - point) * new LFloat(true, 1010000);
|
||||
pointOnTriangle = point + (pointOnTriangle - point) * new LFloat("", 1010);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
@@ -12,7 +12,7 @@ using JNGame.Math;
|
||||
using UnityEngine;
|
||||
using UnityEngine.AI;
|
||||
|
||||
namespace JNGame.Map.DotRecast
|
||||
namespace JNGame.Map.DotRecast.Editor
|
||||
{
|
||||
public class DotRecastController : MonoBehaviour
|
||||
{
|
||||
|
||||
+4
@@ -12,6 +12,8 @@ namespace JNGame.Map.DotRecast.Util
|
||||
|
||||
public MeshData() { }
|
||||
|
||||
|
||||
#if UNITY_EDITOR
|
||||
public MeshData(UnityEngine.Mesh mesh)
|
||||
{
|
||||
vertexCount = mesh.vertexCount;
|
||||
@@ -23,5 +25,7 @@ namespace JNGame.Map.DotRecast.Util
|
||||
vertices[i] = new LVector3((LFloat)vertice.x,(LFloat)vertice.y,(LFloat)vertice.z);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -34,7 +34,7 @@ namespace DotRecast.Core.Buffers
|
||||
if (0 >= source.Length)
|
||||
return 0;
|
||||
|
||||
return source.Sum() / (LFloat)source.Length;
|
||||
return source.Sum().ToLFloat() / source.Length;
|
||||
}
|
||||
|
||||
private static long Min(this ReadOnlySpan<long> source)
|
||||
@@ -96,7 +96,7 @@ namespace DotRecast.Core.Buffers
|
||||
|
||||
public static LFloat Average(this RcCyclicBuffer<long> source)
|
||||
{
|
||||
return Sum(source) / (LFloat)source.Size;
|
||||
return Sum(source).ToLFloat() / source.Size;
|
||||
}
|
||||
|
||||
public static long Min(this RcCyclicBuffer<long> source)
|
||||
|
||||
+1
-1
@@ -657,7 +657,7 @@ namespace DotRecast.Core.Compression
|
||||
|
||||
public static long EstimateCompressedSize(long size)
|
||||
{
|
||||
long estimatedSize = (long)LMath.Ceiling(size * (LFloat)1.06f);
|
||||
long estimatedSize = (long)LMath.Ceiling(size * (new LFloat("",1060)));
|
||||
return LMath.Max(estimatedSize, 66);
|
||||
}
|
||||
}
|
||||
|
||||
+10
-10
@@ -8,10 +8,10 @@ namespace DotRecast.Core.Numerics
|
||||
{
|
||||
private static readonly RcMatrix4x4f _identity = new RcMatrix4x4f
|
||||
(
|
||||
(LFloat)1f, (LFloat)0f, (LFloat)0f, (LFloat)0f,
|
||||
(LFloat)0f, (LFloat)1f, (LFloat)0f, (LFloat)0f,
|
||||
(LFloat)0f, (LFloat)0f, (LFloat)1f, (LFloat)0f,
|
||||
(LFloat)0f, (LFloat)0f, (LFloat)0f, (LFloat)1f
|
||||
LFloat.L1, LFloat.L0, LFloat.L0, LFloat.L0,
|
||||
LFloat.L0, LFloat.L1, LFloat.L0, LFloat.L0,
|
||||
LFloat.L0, LFloat.L0, LFloat.L1, LFloat.L0,
|
||||
LFloat.L0, LFloat.L0, LFloat.L0, LFloat.L1
|
||||
);
|
||||
|
||||
public LFloat M11; // 0
|
||||
@@ -104,10 +104,10 @@ namespace DotRecast.Core.Numerics
|
||||
|
||||
public readonly bool IsIdentity =>
|
||||
M11.Equals(1f) && M22.Equals(1f) && M33.Equals(1f) && M44.Equals(1f) &&
|
||||
M12 == 0f && M13 == 0f && M14 == 0f &&
|
||||
M21 == 0f && M23 == 0f && M24 == 0f &&
|
||||
M31 == 0f && M32 == 0f && M34 == 0f &&
|
||||
M41 == 0f && M42 == 0f && M43 == 0f;
|
||||
M12 == LFloat.L0 && M13 == LFloat.L0 && M14 == LFloat.L0 &&
|
||||
M21 == LFloat.L0 && M23 == LFloat.L0 && M24 == LFloat.L0 &&
|
||||
M31 == LFloat.L0 && M32 == LFloat.L0 && M34 == LFloat.L0 &&
|
||||
M41 == LFloat.L0 && M42 == LFloat.L0 && M43 == LFloat.L0;
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public static RcMatrix4x4f Mul(ref RcMatrix4x4f left, ref RcMatrix4x4f right)
|
||||
@@ -182,10 +182,10 @@ namespace DotRecast.Core.Numerics
|
||||
public static RcMatrix4x4f CreateFromRotate(LFloat a, LFloat x, LFloat y, LFloat z)
|
||||
{
|
||||
var matrix = new RcMatrix4x4f();
|
||||
a = (LFloat)(a * LMath.PI / 180.0); // convert to radians
|
||||
a = (a * LMath.PI / 180); // convert to radians
|
||||
LFloat s = LMath.Sin(a);
|
||||
LFloat c = LMath.Cos(a);
|
||||
LFloat t = (LFloat)1.0f - c;
|
||||
LFloat t = LFloat.L1 - c;
|
||||
|
||||
LFloat tx = t * x;
|
||||
LFloat ty = t * y;
|
||||
|
||||
+6
-6
@@ -28,11 +28,11 @@ namespace DotRecast.Core.Numerics
|
||||
public LFloat Y;
|
||||
public LFloat Z;
|
||||
|
||||
public static readonly RcVec3f Zero = new RcVec3f((LFloat)0.0f, (LFloat)0.0f, (LFloat)0.0f);
|
||||
public static readonly RcVec3f One = new RcVec3f((LFloat)1.0f);
|
||||
public static readonly RcVec3f UnitX = new RcVec3f((LFloat)1.0f, (LFloat)0.0f, (LFloat)0.0f);
|
||||
public static readonly RcVec3f UnitY = new RcVec3f((LFloat)0.0f, (LFloat)1.0f, (LFloat)0.0f);
|
||||
public static readonly RcVec3f UnitZ = new RcVec3f((LFloat)0.0f, (LFloat)0.0f, (LFloat)1.0f);
|
||||
public static readonly RcVec3f Zero = new RcVec3f(LFloat.L0, LFloat.L0, LFloat.L0);
|
||||
public static readonly RcVec3f One = new RcVec3f(LFloat.L1);
|
||||
public static readonly RcVec3f UnitX = new RcVec3f(LFloat.L1, LFloat.L0, LFloat.L0);
|
||||
public static readonly RcVec3f UnitY = new RcVec3f(LFloat.L0, LFloat.L1, LFloat.L0);
|
||||
public static readonly RcVec3f UnitZ = new RcVec3f(LFloat.L0, LFloat.L0, LFloat.L1);
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public RcVec3f(LFloat x, LFloat y, LFloat z)
|
||||
@@ -186,7 +186,7 @@ namespace DotRecast.Core.Numerics
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public static RcVec3f Lerp(RcVec3f value1, RcVec3f value2, LFloat amount)
|
||||
{
|
||||
return (value1 * ((LFloat)1f - amount)) + (value2 * amount);
|
||||
return (value1 * (LFloat.L1 - amount)) + (value2 * amount);
|
||||
// return new RcVec3f(
|
||||
// value1.X + (value2.X - value1.X) * amount,
|
||||
// value1.Y + (value2.Y - value1.Y) * amount,
|
||||
|
||||
+2
-2
@@ -157,7 +157,7 @@ namespace DotRecast.Core.Numerics
|
||||
LFloat sqMag = RcMath.Sqr(v.X) + RcMath.Sqr(v.Y) + RcMath.Sqr(v.Z);
|
||||
if (sqMag > Epsilon)
|
||||
{
|
||||
LFloat inverseMag = (LFloat)1.0f / LMath.Sqrt(sqMag);
|
||||
LFloat inverseMag = LFloat.L1 / LMath.Sqrt(sqMag);
|
||||
return new RcVec3f(
|
||||
v.X *= inverseMag,
|
||||
v.Y *= inverseMag,
|
||||
@@ -200,7 +200,7 @@ namespace DotRecast.Core.Numerics
|
||||
{
|
||||
LFloat dx = v2.X - v1.X;
|
||||
LFloat dz = v2.Z - v1.Z;
|
||||
return (LFloat)LMath.Sqrt(dx * dx + dz * dz);
|
||||
return LMath.Sqrt(dx * dx + dz * dz);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
|
||||
+3
-1
@@ -105,7 +105,9 @@ namespace DotRecast.Core
|
||||
span.Reverse();
|
||||
}
|
||||
|
||||
return (LFloat)BitConverter.ToSingle(span);
|
||||
// @TODO 临时写死
|
||||
// return (LFloat)BitConverter.ToSingle(span);
|
||||
return LFloat.L0;
|
||||
}
|
||||
|
||||
public long GetLong()
|
||||
|
||||
+5
-2
@@ -6,7 +6,10 @@ namespace DotRecast.Core
|
||||
{
|
||||
public static class RcFrequency
|
||||
{
|
||||
public static readonly LFloat Frequency = (LFloat)TimeSpan.TicksPerSecond / Stopwatch.Frequency;
|
||||
public static long Ticks => unchecked((long)(Stopwatch.GetTimestamp() * Frequency));
|
||||
//@TODO 临时写死
|
||||
// public static readonly LFloat Frequency = (LFloat)TimeSpan.TicksPerSecond / Stopwatch.Frequency;
|
||||
// public static long Ticks => unchecked((long)(Stopwatch.GetTimestamp() * Frequency));
|
||||
public static readonly LFloat Frequency = LFloat.L1;
|
||||
public static long Ticks => 1;
|
||||
}
|
||||
}
|
||||
+6
-6
@@ -41,7 +41,7 @@ namespace DotRecast.Core
|
||||
// Compute denominator d. If d <= 0, segment is parallel to or points
|
||||
// away from triangle, so exit early
|
||||
LFloat d = RcVec3f.Dot(qp, norm);
|
||||
if (d <= 0.0f)
|
||||
if (d <= LFloat.L0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -51,7 +51,7 @@ namespace DotRecast.Core
|
||||
// dividing by d until intersection has been found to pierce triangle
|
||||
RcVec3f ap = RcVec3f.Subtract(sp, a);
|
||||
t = RcVec3f.Dot(ap, norm);
|
||||
if (t < 0.0f)
|
||||
if (t < LFloat.L0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -64,13 +64,13 @@ namespace DotRecast.Core
|
||||
// Compute barycentric coordinate components and test if within bounds
|
||||
RcVec3f e = RcVec3f.Cross(qp, ap);
|
||||
v = RcVec3f.Dot(ac, e);
|
||||
if (v < 0.0f || v > d)
|
||||
if (v < LFloat.L0 || v > d)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
w = -RcVec3f.Dot(ab, e);
|
||||
if (w < 0.0f || v + w > d)
|
||||
if (w < LFloat.L0 || v + w > d)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -89,7 +89,7 @@ namespace DotRecast.Core
|
||||
d.X = sq.X - sp.X;
|
||||
d.Y = sq.Y - sp.Y;
|
||||
d.Z = sq.Z - sp.Z;
|
||||
tmin = (LFloat)0.0f;
|
||||
tmin = LFloat.L0;
|
||||
tmax = LFloat.MaxValue;
|
||||
|
||||
for (int i = 0; i < 3; i++)
|
||||
@@ -103,7 +103,7 @@ namespace DotRecast.Core
|
||||
}
|
||||
else
|
||||
{
|
||||
LFloat ood = (LFloat)1.0f / d.Get(i);
|
||||
LFloat ood = LFloat.L1 / d.Get(i);
|
||||
LFloat t1 = (amin.Get(i) - sp.Get(i)) * ood;
|
||||
LFloat t2 = (amax.Get(i) - sp.Get(i)) * ood;
|
||||
|
||||
|
||||
@@ -17,12 +17,12 @@ namespace DotRecast.Core
|
||||
|
||||
public LFloat Next()
|
||||
{
|
||||
return _random.Range((LFloat)0f,(LFloat)1f);
|
||||
return _random.Range(LFloat.L0,LFloat.L1);
|
||||
}
|
||||
|
||||
public LFloat NextDouble()
|
||||
{
|
||||
return _random.Range((LFloat)0f,(LFloat)1f);
|
||||
return _random.Range(LFloat.L0,LFloat.L1);
|
||||
}
|
||||
|
||||
public int NextInt32()
|
||||
|
||||
+2
-2
@@ -34,8 +34,8 @@ namespace DotRecast.Core
|
||||
var array_2_8_1 = RcStackArray2<RcStackArray8<LFloat>>.Empty; // 2 * 8 = 16
|
||||
var array_2_4_1 = RcStackArray2<RcStackArray2<LFloat>>.Empty; // 2 * 2 = 4
|
||||
|
||||
LFloat f1 = (LFloat)0.0f; // 1
|
||||
//LFloat f2 = 0.0f; // my system stack overflow!
|
||||
LFloat f1 = LFloat.L0; // 1
|
||||
//LFloat f2 = (LFloat.L0); // my system stack overflow!
|
||||
}
|
||||
|
||||
|
||||
|
||||
+30
-22
@@ -150,7 +150,7 @@ namespace DotRecast.Detour.Crowd
|
||||
public DtCrowd(DtCrowdConfig config, DtNavMesh nav, Func<int, IDtQueryFilter> queryFilterFactory)
|
||||
{
|
||||
_config = config;
|
||||
_agentPlacementHalfExtents = new RcVec3f(config.maxAgentRadius * (LFloat)2.0f, config.maxAgentRadius * (LFloat)1.5f, config.maxAgentRadius * (LFloat)2.0f);
|
||||
_agentPlacementHalfExtents = new RcVec3f(config.maxAgentRadius * LFloat.L2, config.maxAgentRadius * new LFloat("",1500), config.maxAgentRadius * LFloat.L2);
|
||||
|
||||
_obstacleQuery = new DtObstacleAvoidanceQuery(config.maxObstacleAvoidanceCircles, config.maxObstacleAvoidanceSegments);
|
||||
|
||||
@@ -877,7 +877,7 @@ namespace DotRecast.Detour.Crowd
|
||||
|
||||
// Update the collision boundary after certain distance has been passed or
|
||||
// if it has become invalid.
|
||||
LFloat updateThr = ag.option.collisionQueryRange * (LFloat)0.25f;
|
||||
LFloat updateThr = ag.option.collisionQueryRange * new LFloat("",250);
|
||||
if (RcVecUtils.Dist2DSqr(ag.npos, ag.boundary.GetCenter()) > RcMath.Sqr(updateThr)
|
||||
|| !ag.boundary.IsValid(_navQuery, _filters[ag.option.queryFilterType]))
|
||||
{
|
||||
@@ -908,7 +908,7 @@ namespace DotRecast.Detour.Crowd
|
||||
|
||||
// Check for overlap.
|
||||
RcVec3f diff = RcVec3f.Subtract(pos, ag.npos);
|
||||
if (LMath.Abs(diff.Y) >= (height + ag.option.height) / 2.0f)
|
||||
if (LMath.Abs(diff.Y) >= (height + ag.option.height) / LFloat.L2)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@@ -995,7 +995,7 @@ namespace DotRecast.Detour.Crowd
|
||||
}
|
||||
|
||||
// Check
|
||||
LFloat triggerRadius = ag.option.radius * (LFloat)2.25f;
|
||||
LFloat triggerRadius = ag.option.radius * new LFloat("",2250);
|
||||
if (ag.OverOffmeshConnection(triggerRadius))
|
||||
{
|
||||
// Prepare to off-mesh connection.
|
||||
@@ -1009,8 +1009,8 @@ namespace DotRecast.Detour.Crowd
|
||||
anim.initPos = ag.npos;
|
||||
anim.polyRef = refs[1];
|
||||
anim.active = true;
|
||||
anim.t = (LFloat)0.0f;
|
||||
anim.tmax = (RcVecUtils.Dist2D(anim.startPos, anim.endPos) / ag.option.maxSpeed) * (LFloat)0.5f;
|
||||
anim.t = LFloat.L0;
|
||||
anim.tmax = (RcVecUtils.Dist2D(anim.startPos, anim.endPos) / ag.option.maxSpeed) * LFloat.L0D5;
|
||||
|
||||
ag.state = DtCrowdAgentState.DT_CROWDAGENT_STATE_OFFMESH;
|
||||
ag.corners.Clear();
|
||||
@@ -1073,7 +1073,7 @@ namespace DotRecast.Detour.Crowd
|
||||
if ((ag.option.updateFlags & DtCrowdAgentUpdateFlags.DT_CROWD_SEPARATION) != 0)
|
||||
{
|
||||
LFloat separationDist = ag.option.collisionQueryRange;
|
||||
LFloat invSeparationDist = (LFloat)1.0f / separationDist;
|
||||
LFloat invSeparationDist = LFloat.L1 / separationDist;
|
||||
LFloat separationWeight = ag.option.separationWeight;
|
||||
|
||||
LFloat w = 0;
|
||||
@@ -1087,7 +1087,9 @@ namespace DotRecast.Detour.Crowd
|
||||
diff.Y = 0;
|
||||
|
||||
LFloat distSqr = diff.LengthSquared();
|
||||
if (distSqr < (LFloat)0.0001f)
|
||||
//@TODO 临时解决 这里可能出现闪现
|
||||
// if (distSqr < (LFloat)0.0001f)
|
||||
if (distSqr < new LFloat("",1))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@@ -1098,16 +1100,18 @@ namespace DotRecast.Detour.Crowd
|
||||
}
|
||||
|
||||
LFloat dist = LMath.Sqrt(distSqr);
|
||||
LFloat weight = separationWeight * ((LFloat)1.0f - RcMath.Sqr(dist * invSeparationDist));
|
||||
LFloat weight = separationWeight * (LFloat.L1 - RcMath.Sqr(dist * invSeparationDist));
|
||||
|
||||
disp = RcVecUtils.Mad(disp, diff, weight / dist);
|
||||
w += (LFloat)1.0f;
|
||||
w += LFloat.L1;
|
||||
}
|
||||
|
||||
if (w > (LFloat)0.0001f)
|
||||
//@TODO 临时解决 这里可能出现闪现
|
||||
// if (w > (LFloat)0.0001f)
|
||||
if (w > new LFloat("",1))
|
||||
{
|
||||
// Adjust desired velocity.
|
||||
dvel = RcVecUtils.Mad(dvel, disp, (LFloat)1.0f / w);
|
||||
dvel = RcVecUtils.Mad(dvel, disp, LFloat.L1 / w);
|
||||
// Clamp desired velocity to desired speed.
|
||||
LFloat speedSqr = dvel.LengthSquared();
|
||||
LFloat desiredSqr = RcMath.Sqr(ag.desiredSpeed);
|
||||
@@ -1153,7 +1157,7 @@ namespace DotRecast.Detour.Crowd
|
||||
RcVec3f[] s = ag.boundary.GetSegment(j);
|
||||
RcVec3f s3 = s[1];
|
||||
//RcArrays.Copy(s, 3, s3, 0, 3);
|
||||
if (DtUtils.TriArea2D(ag.npos, s[0], s3) < 0.0f)
|
||||
if (DtUtils.TriArea2D(ag.npos, s[0], s3) < LFloat.L0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@@ -1244,7 +1248,9 @@ namespace DotRecast.Detour.Crowd
|
||||
|
||||
dist = LMath.Sqrt(dist);
|
||||
LFloat pen = (ag.option.radius + nei.option.radius) - dist;
|
||||
if (dist < (LFloat)0.0001f)
|
||||
//@TODO 临时解决 这里可能出现闪现
|
||||
// if (dist < (LFloat)0.0001f)
|
||||
if (dist < new LFloat("",1))
|
||||
{
|
||||
// Agents on top of each other, try to choose diverging separation directions.
|
||||
if (idx0 > idx1)
|
||||
@@ -1256,21 +1262,23 @@ namespace DotRecast.Detour.Crowd
|
||||
diff = new RcVec3f(ag.dvel.Z, 0, -ag.dvel.X);
|
||||
}
|
||||
|
||||
pen = (LFloat)0.01f;
|
||||
pen = (new LFloat("",10));
|
||||
}
|
||||
else
|
||||
{
|
||||
pen = ((LFloat)1.0f / dist) * (pen * (LFloat)0.5f) * _config.collisionResolveFactor;
|
||||
pen = (LFloat.L1 / dist) * (pen * LFloat.L0D5) * _config.collisionResolveFactor;
|
||||
}
|
||||
|
||||
ag.disp = RcVecUtils.Mad(ag.disp, diff, pen);
|
||||
|
||||
w += (LFloat)1.0f;
|
||||
w += LFloat.L1;
|
||||
}
|
||||
|
||||
if (w > (LFloat)0.0001f)
|
||||
//@TODO 临时解决 这里可能出现闪现
|
||||
// if (w > (LFloat)0.0001f)
|
||||
if (w > new LFloat("",1))
|
||||
{
|
||||
LFloat iw = (LFloat)1.0f / w;
|
||||
LFloat iw = LFloat.L1 / w;
|
||||
ag.disp = ag.disp.Scale(iw);
|
||||
}
|
||||
}
|
||||
@@ -1339,11 +1347,11 @@ namespace DotRecast.Detour.Crowd
|
||||
}
|
||||
|
||||
// Update position
|
||||
LFloat ta = anim.tmax * (LFloat)0.15f;
|
||||
LFloat ta = anim.tmax * new LFloat("",150);
|
||||
LFloat tb = anim.tmax;
|
||||
if (anim.t < ta)
|
||||
{
|
||||
LFloat u = Tween(anim.t, (LFloat)0.0f, ta);
|
||||
LFloat u = Tween(anim.t, LFloat.L0, ta);
|
||||
ag.npos = RcVec3f.Lerp(anim.initPos, anim.startPos, u);
|
||||
}
|
||||
else
|
||||
@@ -1360,7 +1368,7 @@ namespace DotRecast.Detour.Crowd
|
||||
|
||||
private LFloat Tween(LFloat t, LFloat t0, LFloat t1)
|
||||
{
|
||||
return LMath.Clamp((t - t0) / (t1 - t0), (LFloat)0.0f, (LFloat)1.0f);
|
||||
return LMath.Clamp((t - t0) / (t1 - t0), LFloat.L0, LFloat.L1);
|
||||
}
|
||||
}
|
||||
}
|
||||
+7
-5
@@ -98,7 +98,9 @@ namespace DotRecast.Detour.Crowd
|
||||
vel = RcVec3f.Add(vel, dv);
|
||||
|
||||
// Integrate
|
||||
if (vel.Length() > (LFloat)0.0001f)
|
||||
// @TODO 可能会闪现
|
||||
// if (vel.Length() > (LFloat)0.0001f)
|
||||
if (vel.Length() > new LFloat("",1))
|
||||
npos = RcVecUtils.Mad(npos, vel, dt);
|
||||
else
|
||||
vel = RcVec3f.Zero;
|
||||
@@ -152,12 +154,12 @@ namespace DotRecast.Detour.Crowd
|
||||
|
||||
LFloat len0 = dir0.Length();
|
||||
LFloat len1 = dir1.Length();
|
||||
if (len1 > (LFloat)0.001f)
|
||||
dir1 = dir1.Scale((LFloat)1.0f / len1);
|
||||
if (len1 > new LFloat("",1))
|
||||
dir1 = dir1.Scale(LFloat.L1 / len1);
|
||||
|
||||
dir.X = dir0.X - dir1.X * len0 * (LFloat)0.5f;
|
||||
dir.X = dir0.X - dir1.X * len0 * LFloat.L0D5;
|
||||
dir.Y = 0;
|
||||
dir.Z = dir0.Z - dir1.Z * len0 * (LFloat)0.5f;
|
||||
dir.Z = dir0.Z - dir1.Z * len0 * LFloat.L0D5;
|
||||
dir = RcVec3f.Normalize(dir);
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@ namespace DotRecast.Detour.Crowd
|
||||
public bool obstacleAvoidance = true;
|
||||
public int obstacleAvoidanceType = 3;
|
||||
public bool separation;
|
||||
public LFloat separationWeight = (LFloat)2f;
|
||||
public LFloat separationWeight = LFloat.L2;
|
||||
|
||||
public int GetUpdateFlags()
|
||||
{
|
||||
|
||||
+3
-3
@@ -28,11 +28,11 @@ namespace DotRecast.Detour.Crowd
|
||||
public int pathQueueSize = 32; // Max number of path requests in the queue
|
||||
public int maxFindPathIterations = 100; // Max number of sliced path finding iterations executed per update (used to handle longer paths and replans)
|
||||
public int maxTargetFindPathIterations = 20; // Max number of sliced path finding iterations executed per agent to find the initial path to target
|
||||
public LFloat topologyOptimizationTimeThreshold = (LFloat)0.5f; // Min time between topology optimizations (in seconds)
|
||||
public LFloat topologyOptimizationTimeThreshold = LFloat.L0D5; // Min time between topology optimizations (in seconds)
|
||||
public int checkLookAhead = 10; // The number of polygons from the beginning of the corridor to check to ensure path validity
|
||||
public LFloat targetReplanDelay = (LFloat)1.0f; // Min time between target re-planning (in seconds)
|
||||
public LFloat targetReplanDelay = LFloat.L1; // Min time between target re-planning (in seconds)
|
||||
public int maxTopologyOptimizationIterations = 32; // Max number of sliced path finding iterations executed per topology optimization per agent
|
||||
public LFloat collisionResolveFactor = (LFloat)0.7f;
|
||||
public LFloat collisionResolveFactor = LFloat.L0D7;
|
||||
public int maxObstacleAvoidanceCircles = 6; // Max number of neighbour agents to consider in obstacle avoidance processing
|
||||
public int maxObstacleAvoidanceSegments = 8; // Max number of neighbour segments to consider in obstacle avoidance processing
|
||||
|
||||
|
||||
+2
-2
@@ -65,9 +65,9 @@ namespace DotRecast.Detour.Crowd
|
||||
}
|
||||
|
||||
LFloat penRange = maxPen - minPen;
|
||||
LFloat s = penRange > (LFloat)0.001f ? ((LFloat)1.0f / penRange) : 1;
|
||||
LFloat s = penRange > new LFloat("",1) ? (LFloat.L1 / penRange) : 1;
|
||||
for (int i = 0; i < n; ++i)
|
||||
arr[i] = LMath.Clamp((arr[i] - minPen) * s, (LFloat)0.0f, (LFloat)1.0f);
|
||||
arr[i] = LMath.Clamp((arr[i] - minPen) * s, LFloat.L0, LFloat.L1);
|
||||
}
|
||||
|
||||
public void NormalizeSamples()
|
||||
|
||||
+6
-6
@@ -30,12 +30,12 @@ namespace DotRecast.Detour.Crowd
|
||||
/// < adaptive
|
||||
public DtObstacleAvoidanceParams()
|
||||
{
|
||||
velBias = (LFloat)0.4f;
|
||||
weightDesVel = (LFloat)2.0f;
|
||||
weightCurVel = (LFloat)0.75f;
|
||||
weightSide = (LFloat)0.75f;
|
||||
weightToi = (LFloat)2.5f;
|
||||
horizTime = (LFloat)2.5f;
|
||||
velBias = LFloat.L0D4;
|
||||
weightDesVel = LFloat.L2;
|
||||
weightCurVel = (new LFloat("",750));
|
||||
weightSide = (new LFloat("",750));
|
||||
weightToi = (new LFloat("",2500));
|
||||
horizTime = (new LFloat("",2500));
|
||||
gridSize = 33;
|
||||
adaptiveDivs = 7;
|
||||
adaptiveRings = 2;
|
||||
|
||||
+32
-30
@@ -31,7 +31,7 @@ namespace DotRecast.Detour.Crowd
|
||||
{
|
||||
public const int DT_MAX_PATTERN_DIVS = 32; // < Max numver of adaptive divs.
|
||||
public const int DT_MAX_PATTERN_RINGS = 4;
|
||||
public LFloat DT_PI = (LFloat)3.14159265f;
|
||||
public LFloat DT_PI = LMath.PI;
|
||||
|
||||
private DtObstacleAvoidanceParams m_params;
|
||||
private LFloat m_invHorizTime;
|
||||
@@ -131,7 +131,7 @@ namespace DotRecast.Detour.Crowd
|
||||
dv = RcVec3f.Subtract(cir.dvel, dvel);
|
||||
|
||||
LFloat a = DtUtils.TriArea2D(orig, cir.dp, dv);
|
||||
if (a < 0.01f)
|
||||
if (a < LFloat.L0)
|
||||
{
|
||||
cir.np.X = -cir.dp.Z;
|
||||
cir.np.Z = cir.dp.X;
|
||||
@@ -148,7 +148,7 @@ namespace DotRecast.Detour.Crowd
|
||||
DtObstacleSegment seg = m_segments[i];
|
||||
|
||||
// Precalc if the agent is really close to the segment.
|
||||
LFloat r = (LFloat)0.01f;
|
||||
LFloat r = (new LFloat("",10));
|
||||
var distSqr = DtUtils.DistancePtSegSqr2D(pos, seg.p, seg.q, out var t);
|
||||
seg.touch = distSqr < RcMath.Sqr(r);
|
||||
}
|
||||
@@ -156,7 +156,9 @@ namespace DotRecast.Detour.Crowd
|
||||
|
||||
private bool SweepCircleCircle(RcVec3f c0, LFloat r0, RcVec3f v, RcVec3f c1, LFloat r1, out LFloat tmin, out LFloat tmax)
|
||||
{
|
||||
LFloat EPS = (LFloat)0.0001f;
|
||||
// TODO 闪现
|
||||
// LFloat EPS = (LFloat)0.0001f;
|
||||
LFloat EPS = LFloat.EPS_1MS;
|
||||
|
||||
tmin = 0;
|
||||
tmax = 0;
|
||||
@@ -171,10 +173,10 @@ namespace DotRecast.Detour.Crowd
|
||||
// Overlap, calc time to exit.
|
||||
LFloat b = v.Dot2D(s);
|
||||
LFloat d = b * b - a * c;
|
||||
if (d < 0.0f)
|
||||
if (d < LFloat.L0)
|
||||
return false; // no intersection.
|
||||
|
||||
a = (LFloat)1.0f / a;
|
||||
a = LFloat.L1 / a;
|
||||
LFloat rd = LMath.Sqrt(d);
|
||||
|
||||
tmin = (b - rd) * a;
|
||||
@@ -191,7 +193,7 @@ namespace DotRecast.Detour.Crowd
|
||||
if (LMath.Abs(d) < 1e-6f)
|
||||
return false;
|
||||
|
||||
d = (LFloat)1.0f / d;
|
||||
d = LFloat.L1 / d;
|
||||
t = RcVecUtils.Perp2D(v, w) * d;
|
||||
if (t < 0 || t > 1)
|
||||
return false;
|
||||
@@ -223,7 +225,7 @@ namespace DotRecast.Detour.Crowd
|
||||
// find the threshold hit time to bail out based on the early out penalty
|
||||
// (see how the penalty is calculated below to understand)
|
||||
LFloat minPen = minPenalty - vpen - vcpen;
|
||||
LFloat tThresold = (m_params.weightToi / minPen - (LFloat)0.1f) * m_params.horizTime;
|
||||
LFloat tThresold = (m_params.weightToi / minPen - LFloat.L0D1) * m_params.horizTime;
|
||||
if (tThresold - m_params.horizTime > -LFloat.MinValue)
|
||||
return minPenalty; // already too much
|
||||
|
||||
@@ -242,20 +244,20 @@ namespace DotRecast.Detour.Crowd
|
||||
vab = RcVec3f.Subtract(vab, cir.vel);
|
||||
|
||||
// Side
|
||||
side += LMath.Clamp(LMath.Min(cir.dp.Dot2D(vab) * (LFloat)0.5f + (LFloat)0.5f, cir.np.Dot2D(vab) * 2), (LFloat)0.0f, (LFloat)1.0f);
|
||||
side += LMath.Clamp(LMath.Min(cir.dp.Dot2D(vab) * LFloat.L0D5 + LFloat.L0D5, cir.np.Dot2D(vab) * 2), LFloat.L0, LFloat.L1);
|
||||
nside++;
|
||||
|
||||
if (!SweepCircleCircle(pos, rad, vab, cir.p, cir.rad, out var htmin, out var htmax))
|
||||
continue;
|
||||
|
||||
// Handle overlapping obstacles.
|
||||
if (htmin < 0.0f && htmax > 0.0f)
|
||||
if (htmin < LFloat.L0 && htmax > LFloat.L0)
|
||||
{
|
||||
// Avoid more when overlapped.
|
||||
htmin = -htmin * (LFloat)0.5f;
|
||||
htmin = -htmin * LFloat.L0D5;
|
||||
}
|
||||
|
||||
if (htmin >= 0.0f)
|
||||
if (htmin >= LFloat.L0)
|
||||
{
|
||||
// The closest obstacle is somewhere ahead of us, keep track of nearest obstacle.
|
||||
if (htmin < tmin)
|
||||
@@ -280,10 +282,10 @@ namespace DotRecast.Detour.Crowd
|
||||
snorm.X = -sdir.Z;
|
||||
snorm.Z = sdir.X;
|
||||
// If the velocity is pointing towards the segment, no collision.
|
||||
if (snorm.Dot2D(vcand) < 0.0f)
|
||||
if (snorm.Dot2D(vcand) < LFloat.L0)
|
||||
continue;
|
||||
// Else immediate collision.
|
||||
htmin = (LFloat)0.0f;
|
||||
htmin = LFloat.L0;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -292,7 +294,7 @@ namespace DotRecast.Detour.Crowd
|
||||
}
|
||||
|
||||
// Avoid less when facing walls.
|
||||
htmin *= (LFloat)2.0f;
|
||||
htmin *= LFloat.L2;
|
||||
|
||||
// The closest obstacle is somewhere ahead of us, keep track of nearest obstacle.
|
||||
if (htmin < tmin)
|
||||
@@ -308,7 +310,7 @@ namespace DotRecast.Detour.Crowd
|
||||
side /= nside;
|
||||
|
||||
LFloat spen = m_params.weightSide * side;
|
||||
LFloat tpen = m_params.weightToi * ((LFloat)1.0f / ((LFloat)0.1f + tmin * m_invHorizTime));
|
||||
LFloat tpen = m_params.weightToi * (LFloat.L1 / (LFloat.L0D1 + tmin * m_invHorizTime));
|
||||
|
||||
LFloat penalty = vpen + vcpen + spen + tpen;
|
||||
// Store different penalties for debug viewing
|
||||
@@ -323,9 +325,9 @@ namespace DotRecast.Detour.Crowd
|
||||
{
|
||||
Prepare(pos, dvel);
|
||||
m_params = option;
|
||||
m_invHorizTime = (LFloat)1.0f / m_params.horizTime;
|
||||
m_invHorizTime = LFloat.L1 / m_params.horizTime;
|
||||
m_vmax = vmax;
|
||||
m_invVmax = vmax > 0 ? (LFloat)1.0f / vmax : LFloat.MaxValue;
|
||||
m_invVmax = vmax > 0 ? LFloat.L1 / vmax : LFloat.MaxValue;
|
||||
|
||||
nvel = RcVec3f.Zero;
|
||||
|
||||
@@ -335,7 +337,7 @@ namespace DotRecast.Detour.Crowd
|
||||
LFloat cvx = dvel.X * m_params.velBias;
|
||||
LFloat cvz = dvel.Z * m_params.velBias;
|
||||
LFloat cs = vmax * 2 * (1 - m_params.velBias) / (m_params.gridSize - 1);
|
||||
LFloat half = (m_params.gridSize - 1) * cs * (LFloat)0.5f;
|
||||
LFloat half = (m_params.gridSize - 1) * cs * LFloat.L0D5;
|
||||
|
||||
LFloat minPenalty = LFloat.MaxValue;
|
||||
int ns = 0;
|
||||
@@ -344,7 +346,7 @@ namespace DotRecast.Detour.Crowd
|
||||
{
|
||||
for (int x = 0; x < m_params.gridSize; ++x)
|
||||
{
|
||||
RcVec3f vcand = new RcVec3f(cvx + x * cs - half, (LFloat)0f, cvz + y * cs - half);
|
||||
RcVec3f vcand = new RcVec3f(cvx + x * cs - half, LFloat.L0, cvz + y * cs - half);
|
||||
if (RcMath.Sqr(vcand.X) + RcMath.Sqr(vcand.Z) > RcMath.Sqr(vmax + cs / 2))
|
||||
continue;
|
||||
|
||||
@@ -368,7 +370,7 @@ namespace DotRecast.Detour.Crowd
|
||||
LFloat d = LMath.Sqrt(v[0] * v[0] + v[2] * v[2]);
|
||||
if (d == 0)
|
||||
return;
|
||||
d = (LFloat)1.0f / d;
|
||||
d = LFloat.L1 / d;
|
||||
v[0] *= d;
|
||||
v[2] *= d;
|
||||
}
|
||||
@@ -393,9 +395,9 @@ namespace DotRecast.Detour.Crowd
|
||||
{
|
||||
Prepare(pos, dvel);
|
||||
m_params = option;
|
||||
m_invHorizTime = (LFloat)1.0f / m_params.horizTime;
|
||||
m_invHorizTime = LFloat.L1 / m_params.horizTime;
|
||||
m_vmax = vmax;
|
||||
m_invVmax = vmax > 0 ? (LFloat)1.0f / vmax : LFloat.MaxValue;
|
||||
m_invVmax = vmax > 0 ? LFloat.L1 / vmax : LFloat.MaxValue;
|
||||
|
||||
nvel = RcVec3f.Zero;
|
||||
|
||||
@@ -412,7 +414,7 @@ namespace DotRecast.Detour.Crowd
|
||||
|
||||
int nd = LMath.Clamp(ndivs, 1, DT_MAX_PATTERN_DIVS);
|
||||
int nr = LMath.Clamp(nrings, 1, DT_MAX_PATTERN_RINGS);
|
||||
LFloat da = ((LFloat)1.0f / nd) * DT_PI * 2;
|
||||
LFloat da = (LFloat.L1 / nd) * DT_PI * 2;
|
||||
LFloat ca = LMath.Cos(da);
|
||||
LFloat sa = LMath.Sin(da);
|
||||
|
||||
@@ -422,7 +424,7 @@ namespace DotRecast.Detour.Crowd
|
||||
ddir[1] = dvel.Y;
|
||||
ddir[2] = dvel.Z;
|
||||
DtNormalize2D(ddir);
|
||||
RcVec3f rotated = DtRotate2D(ddir, da * (LFloat)0.5f); // rotated by da/2
|
||||
RcVec3f rotated = DtRotate2D(ddir, da * LFloat.L0D5); // rotated by da/2
|
||||
ddir[3] = rotated.X;
|
||||
ddir[4] = rotated.Y;
|
||||
ddir[5] = rotated.Z;
|
||||
@@ -434,7 +436,7 @@ namespace DotRecast.Detour.Crowd
|
||||
|
||||
for (int j = 0; j < nr; ++j)
|
||||
{
|
||||
LFloat r = (LFloat)(nr - j) / (LFloat)nr;
|
||||
LFloat r = (nr - j) / nr;
|
||||
pat[npat * 2 + 0] = ddir[(j % 2) * 3] * r;
|
||||
pat[npat * 2 + 1] = ddir[(j % 2) * 3 + 2] * r;
|
||||
int last1 = npat * 2;
|
||||
@@ -464,7 +466,7 @@ namespace DotRecast.Detour.Crowd
|
||||
}
|
||||
|
||||
// Start sampling.
|
||||
LFloat cr = vmax * ((LFloat)1.0f - m_params.velBias);
|
||||
LFloat cr = vmax * (LFloat.L1 - m_params.velBias);
|
||||
RcVec3f res = new RcVec3f(dvel.X * m_params.velBias, 0, dvel.Z * m_params.velBias);
|
||||
int ns = 0;
|
||||
for (int k = 0; k < depth; ++k)
|
||||
@@ -475,8 +477,8 @@ namespace DotRecast.Detour.Crowd
|
||||
|
||||
for (int i = 0; i < npat; ++i)
|
||||
{
|
||||
RcVec3f vcand = new RcVec3f(res.X + pat[i * 2 + 0] * cr, (LFloat)0f, res.Z + pat[i * 2 + 1] * cr);
|
||||
if (RcMath.Sqr(vcand.X) + RcMath.Sqr(vcand.Z) > RcMath.Sqr(vmax + (LFloat)0.001f))
|
||||
RcVec3f vcand = new RcVec3f(res.X + pat[i * 2 + 0] * cr, LFloat.L0, res.Z + pat[i * 2 + 1] * cr);
|
||||
if (RcMath.Sqr(vcand.X) + RcMath.Sqr(vcand.Z) > RcMath.Sqr(vmax + LFloat.EPS_1MS))
|
||||
continue;
|
||||
|
||||
LFloat penalty = ProcessSample(vcand, cr / 10, pos, rad, vel, dvel, minPenalty, debug);
|
||||
@@ -490,7 +492,7 @@ namespace DotRecast.Detour.Crowd
|
||||
|
||||
res = bvel;
|
||||
|
||||
cr *= (LFloat)0.5f;
|
||||
cr *= LFloat.L0D5;
|
||||
}
|
||||
|
||||
nvel = res;
|
||||
|
||||
+4
-4
@@ -136,7 +136,7 @@ namespace DotRecast.Detour.Crowd
|
||||
/// @return The number of corners returned in the corner buffers. [0 <= value <= @p maxCorners]
|
||||
public int FindCorners(ref List<DtStraightPath> corners, int maxCorners, DtNavMeshQuery navquery, IDtQueryFilter filter)
|
||||
{
|
||||
LFloat MIN_TARGET_DIST = (LFloat)0.01f;
|
||||
LFloat MIN_TARGET_DIST = (new LFloat("",10));
|
||||
|
||||
var result = navquery.FindStraightPath(m_pos, m_target, m_path, m_npath, ref corners, maxCorners, 0);
|
||||
if (result.Succeeded())
|
||||
@@ -201,13 +201,13 @@ namespace DotRecast.Detour.Crowd
|
||||
LFloat dist = RcVecUtils.Dist2D(m_pos, next);
|
||||
|
||||
// If too close to the goal, do not try to optimize.
|
||||
if (dist < 0.01f)
|
||||
if (dist < LFloat.L0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Overshoot a little. This helps to optimize open fields in tiled meshes.
|
||||
dist = LMath.Min(dist + (LFloat)0.01f, pathOptimizationRange);
|
||||
dist = LMath.Min(dist + (new LFloat("",10)), pathOptimizationRange);
|
||||
|
||||
// Adjust ray length.
|
||||
var delta = RcVec3f.Subtract(next, m_pos);
|
||||
@@ -217,7 +217,7 @@ namespace DotRecast.Detour.Crowd
|
||||
var status = navquery.Raycast(m_path[0], m_pos, goal, filter, out var t, out var norm, ref res);
|
||||
if (status.Succeeded())
|
||||
{
|
||||
if (res.Count > 1 && t > 0.99f)
|
||||
if (res.Count > 1 && t > new LFloat("",990))
|
||||
{
|
||||
m_npath = DtPathUtils.MergeCorridorStartShortcut(ref m_path, m_npath, m_maxPath, res, res.Count);
|
||||
}
|
||||
|
||||
+1
-1
@@ -35,7 +35,7 @@ namespace DotRecast.Detour.Crowd
|
||||
public DtProximityGrid(LFloat cellSize)
|
||||
{
|
||||
_cellSize = cellSize;
|
||||
_invCellSize = (LFloat)1.0f / cellSize;
|
||||
_invCellSize = LFloat.L1 / cellSize;
|
||||
_items = new Dictionary<long, List<DtCrowdAgent>>();
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -46,9 +46,9 @@ namespace DotRecast.Detour.Dynamic.Colliders
|
||||
};
|
||||
for (int i = 0; i < 8; ++i)
|
||||
{
|
||||
LFloat s0 = (i & 1) != 0 ? (LFloat)1f : -(LFloat)1f;
|
||||
LFloat s1 = (i & 2) != 0 ? (LFloat)1f : -(LFloat)1f;
|
||||
LFloat s2 = (i & 4) != 0 ? (LFloat)1f : -(LFloat)1f;
|
||||
LFloat s0 = (i & 1) != 0 ? LFloat.L1 : -LFloat.L1;
|
||||
LFloat s1 = (i & 2) != 0 ? LFloat.L1 : -LFloat.L1;
|
||||
LFloat s2 = (i & 4) != 0 ? LFloat.L1 : -LFloat.L1;
|
||||
LFloat vx = center.X + s0 * halfEdges[0].X + s1 * halfEdges[1].X + s2 * halfEdges[2].X;
|
||||
LFloat vy = center.Y + s0 * halfEdges[0].Y + s1 * halfEdges[1].Y + s2 * halfEdges[2].Y;
|
||||
LFloat vz = center.Z + s0 * halfEdges[0].Z + s1 * halfEdges[1].Z + s2 * halfEdges[2].Z;
|
||||
|
||||
+1
-1
@@ -181,7 +181,7 @@ namespace DotRecast.Detour.Dynamic
|
||||
}
|
||||
}
|
||||
|
||||
hit = (LFloat)0.0f;
|
||||
hit = LFloat.L0;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
+5
-5
@@ -74,8 +74,8 @@ namespace DotRecast.Detour.Dynamic.Io
|
||||
file.regionMergeArea = 6 * file.minRegionArea;
|
||||
file.vertsPerPoly = 6;
|
||||
file.buildMeshDetail = true;
|
||||
file.detailSampleDistance = file.maxEdgeLen * (LFloat)0.5f;
|
||||
file.detailSampleMaxError = file.maxSimplificationError * (LFloat)0.8f;
|
||||
file.detailSampleDistance = file.maxEdgeLen * LFloat.L0D5;
|
||||
file.detailSampleMaxError = file.maxSimplificationError * LFloat.L0D8;
|
||||
}
|
||||
|
||||
file.useTiles = buf.Get() != 0;
|
||||
@@ -93,9 +93,9 @@ namespace DotRecast.Detour.Dynamic.Io
|
||||
if (isExportedFromAstar)
|
||||
{
|
||||
// bounds are saved as center + size
|
||||
file.bounds[0] -= (LFloat)0.5f * file.bounds[3];
|
||||
file.bounds[1] -= (LFloat)0.5f * file.bounds[4];
|
||||
file.bounds[2] -= (LFloat)0.5f * file.bounds[5];
|
||||
file.bounds[0] -= LFloat.L0D5 * file.bounds[3];
|
||||
file.bounds[1] -= LFloat.L0D5 * file.bounds[4];
|
||||
file.bounds[2] -= LFloat.L0D5 * file.bounds[5];
|
||||
file.bounds[3] += file.bounds[0];
|
||||
file.bounds[4] += file.bounds[1];
|
||||
file.bounds[5] += file.bounds[2];
|
||||
|
||||
+2
-1
@@ -30,7 +30,8 @@ namespace DotRecast.Detour.Extras.Jumplink
|
||||
|
||||
for (int i = 0; i < nsamples; ++i)
|
||||
{
|
||||
LFloat u = i / (LFloat)(nsamples - 1);
|
||||
// TODO
|
||||
LFloat u = i.ToLFloat() / (nsamples.ToLFloat() - 1);
|
||||
|
||||
GroundSample s = new GroundSample();
|
||||
seg.gsamples[i] = s;
|
||||
|
||||
+3
-3
@@ -10,9 +10,9 @@ namespace DotRecast.Detour.Extras.Jumplink
|
||||
{
|
||||
return new RcVec3f()
|
||||
{
|
||||
X = Lerp(start.X, end.X, LMath.Min((LFloat)2f * u, (LFloat)1f)),
|
||||
Y = Lerp(start.Y, end.Y, LMath.Max((LFloat)0f, (LFloat)2f * u - (LFloat)1f)),
|
||||
Z = Lerp(start.Z, end.Z, LMath.Min((LFloat)2f * u, (LFloat)1f))
|
||||
X = Lerp(start.X, end.X, LMath.Min(LFloat.L2 * u, LFloat.L1)),
|
||||
Y = Lerp(start.Y, end.Y, LMath.Max(LFloat.L0, LFloat.L2 * u - LFloat.L1)),
|
||||
Z = Lerp(start.Z, end.Z, LMath.Min(LFloat.L2 * u, LFloat.L1))
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -41,7 +41,7 @@ namespace DotRecast.Detour.Extras.Jumplink
|
||||
|
||||
for (int j = 0; j < nsamples; ++j)
|
||||
{
|
||||
LFloat v = (LFloat)j / (LFloat)(nsamples - 1);
|
||||
LFloat v = j.ToLFloat() / (nsamples.ToLFloat() - 1);
|
||||
LFloat ox = 2 * acfg.agentRadius + dx * v;
|
||||
Trans2d(ref offset, es.az, es.ay, new RcVec2f { X = ox, Y = acfg.minHeight });
|
||||
GroundSegment end = new GroundSegment();
|
||||
|
||||
+1
-1
@@ -72,7 +72,7 @@ namespace DotRecast.Detour.Extras.Jumplink
|
||||
link.trajectory = es.trajectory;
|
||||
for (int j = 0; j < link.nspine; ++j)
|
||||
{
|
||||
LFloat u = ((LFloat)j) / (link.nspine - 1);
|
||||
LFloat u = j.ToLFloat() / (link.nspine - 1);
|
||||
RcVec3f p = es.trajectory.Apply(sp, ep, u);
|
||||
link.spine0[j * 3] = p.X;
|
||||
link.spine0[j * 3 + 1] = p.Y;
|
||||
|
||||
+5
-5
@@ -25,11 +25,11 @@ namespace DotRecast.Detour.Extras.Jumplink
|
||||
|
||||
private LFloat InterpolateHeight(LFloat ys, LFloat ye, LFloat u)
|
||||
{
|
||||
if (u == 0f)
|
||||
if (u == LFloat.L0)
|
||||
{
|
||||
return ys;
|
||||
}
|
||||
else if (u == 1.0f)
|
||||
else if (u == LFloat.L1)
|
||||
{
|
||||
return ye;
|
||||
}
|
||||
@@ -48,14 +48,14 @@ namespace DotRecast.Detour.Extras.Jumplink
|
||||
h2 = jumpHeight;
|
||||
}
|
||||
|
||||
LFloat t = (LFloat)(LMath.Sqrt(h1) / (LMath.Sqrt(h2) + LMath.Sqrt(h1)));
|
||||
LFloat t = (LMath.Sqrt(h1) / (LMath.Sqrt(h2) + LMath.Sqrt(h1)));
|
||||
if (u <= t)
|
||||
{
|
||||
LFloat v1 = (LFloat)1.0f - (u / t);
|
||||
LFloat v1 = LFloat.L1 - (u / t);
|
||||
return ys + h1 - h1 * v1 * v1;
|
||||
}
|
||||
|
||||
LFloat v = (u - t) / ((LFloat)1.0f - t);
|
||||
LFloat v = (u - t) / (LFloat.L1 - t);
|
||||
return ys + h1 - h2 * v * v;
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@ namespace DotRecast.Detour.Extras.Jumplink
|
||||
{
|
||||
public LFloat Lerp(LFloat f, LFloat g, LFloat u)
|
||||
{
|
||||
return u * g + ((LFloat)1f - u) * f;
|
||||
return u * g + (LFloat.L1 - u) * f;
|
||||
}
|
||||
|
||||
public virtual RcVec3f Apply(RcVec3f start, RcVec3f end, LFloat u)
|
||||
|
||||
+1
-1
@@ -40,7 +40,7 @@ namespace DotRecast.Detour.Extras.Jumplink
|
||||
int nsamples = LMath.Max(2, (int)LMath.Ceiling(d / cs));
|
||||
for (int i = 0; i < nsamples; ++i)
|
||||
{
|
||||
LFloat u = (LFloat)i / (LFloat)(nsamples - 1);
|
||||
LFloat u = i.ToLFloat() / (nsamples - 1);
|
||||
RcVec3f p = tra.Apply(pa, pb, u);
|
||||
if (CheckHeightfieldCollision(solid, p.X, p.Y + acfg.groundTolerance, p.Y + acfg.agentHeight, p.Z))
|
||||
{
|
||||
|
||||
+6
-6
@@ -25,7 +25,7 @@ namespace DotRecast.Detour.Extras.Unity.Astar
|
||||
{
|
||||
public class GraphMeshDataReader : ZipBinaryReader
|
||||
{
|
||||
public LFloat INT_PRECISION_FACTOR = (LFloat)1000f;
|
||||
public LFloat INT_PRECISION_FACTOR = LFloat.L1000;
|
||||
|
||||
public GraphMeshData Read(ZipArchive file, string filename, GraphMeta meta, int maxVertPerPoly)
|
||||
{
|
||||
@@ -126,17 +126,17 @@ namespace DotRecast.Detour.Extras.Unity.Astar
|
||||
header.detailMeshCount = nodeCount;
|
||||
header.detailTriCount = nodeCount;
|
||||
header.maxLinkCount = nodeCount * 3 * 2; // XXX: Needed by Recast, not needed by recast4j
|
||||
header.bmin.X = meta.forcedBoundsCenter.x - (LFloat)0.5f * meta.forcedBoundsSize.x +
|
||||
header.bmin.X = meta.forcedBoundsCenter.x - LFloat.L0D5 * meta.forcedBoundsSize.x +
|
||||
meta.cellSize * meta.tileSizeX * x;
|
||||
header.bmin.Y = ymin;
|
||||
header.bmin.Z = meta.forcedBoundsCenter.z - (LFloat)0.5f * meta.forcedBoundsSize.z +
|
||||
header.bmin.Z = meta.forcedBoundsCenter.z - LFloat.L0D5 * meta.forcedBoundsSize.z +
|
||||
meta.cellSize * meta.tileSizeZ * z;
|
||||
header.bmax.X = meta.forcedBoundsCenter.x - (LFloat)0.5f * meta.forcedBoundsSize.x +
|
||||
header.bmax.X = meta.forcedBoundsCenter.x - LFloat.L0D5 * meta.forcedBoundsSize.x +
|
||||
meta.cellSize * meta.tileSizeX * (x + 1);
|
||||
header.bmax.Y = ymax;
|
||||
header.bmax.Z = meta.forcedBoundsCenter.z - (LFloat)0.5f * meta.forcedBoundsSize.z +
|
||||
header.bmax.Z = meta.forcedBoundsCenter.z - LFloat.L0D5 * meta.forcedBoundsSize.z +
|
||||
meta.cellSize * meta.tileSizeZ * (z + 1);
|
||||
header.bvQuantFactor = (LFloat)1.0f / meta.cellSize;
|
||||
header.bvQuantFactor = LFloat.L1 / meta.cellSize;
|
||||
header.offMeshBase = nodeCount;
|
||||
header.walkableClimb = meta.walkableClimb;
|
||||
header.walkableHeight = meta.walkableHeight;
|
||||
|
||||
+1
-1
@@ -53,7 +53,7 @@ namespace DotRecast.Detour.Extras.Unity.Astar
|
||||
{
|
||||
l.clamped1, l.clamped2
|
||||
};
|
||||
connection.rad = (LFloat)0.1f;
|
||||
connection.rad = LFloat.L0D1;
|
||||
connection.side = startTile == endTile
|
||||
? 0xFF
|
||||
: DtNavMeshBuilder.ClassifyOffMeshPoint(connection.pos[1], startTile.header.bmin, startTile.header.bmax);
|
||||
|
||||
+3
-3
@@ -63,9 +63,9 @@ namespace DotRecast.Detour.Extras.Unity.Astar
|
||||
option.maxPolys = 32768;
|
||||
option.tileWidth = graphMeta.tileSizeX * graphMeta.cellSize;
|
||||
option.tileHeight = graphMeta.tileSizeZ * graphMeta.cellSize;
|
||||
option.orig.X = -(LFloat)0.5f * graphMeta.forcedBoundsSize.x + graphMeta.forcedBoundsCenter.x;
|
||||
option.orig.Y = -(LFloat)0.5f * graphMeta.forcedBoundsSize.y + graphMeta.forcedBoundsCenter.y;
|
||||
option.orig.Z = -(LFloat)0.5f * graphMeta.forcedBoundsSize.z + graphMeta.forcedBoundsCenter.z;
|
||||
option.orig.X = -LFloat.L0D5 * graphMeta.forcedBoundsSize.x + graphMeta.forcedBoundsCenter.x;
|
||||
option.orig.Y = -LFloat.L0D5 * graphMeta.forcedBoundsSize.y + graphMeta.forcedBoundsCenter.y;
|
||||
option.orig.Z = -LFloat.L0D5 * graphMeta.forcedBoundsSize.z + graphMeta.forcedBoundsCenter.z;
|
||||
DtNavMesh mesh = new DtNavMesh(option, 3);
|
||||
foreach (DtMeshData t in graphMeshData.tiles)
|
||||
{
|
||||
|
||||
+4
-4
@@ -378,10 +378,10 @@ namespace DotRecast.Detour.TileCache
|
||||
ob.type = DtTileCacheObstacleType.ORIENTED_BOX;
|
||||
ob.center = center;
|
||||
ob.extents = extents;
|
||||
LFloat coshalf = LMath.Cos((LFloat)0.5f * yRadians);
|
||||
LFloat sinhalf = LMath.Sin(-(LFloat)0.5f * yRadians);
|
||||
LFloat coshalf = LMath.Cos(LFloat.L0D5 * yRadians);
|
||||
LFloat sinhalf = LMath.Sin(-LFloat.L0D5 * yRadians);
|
||||
ob.rotAux[0] = coshalf * sinhalf;
|
||||
ob.rotAux[1] = coshalf * coshalf - (LFloat)0.5f;
|
||||
ob.rotAux[1] = coshalf * coshalf - LFloat.L0D5;
|
||||
return AddObstacleRequest(ob).refs;
|
||||
}
|
||||
|
||||
@@ -710,7 +710,7 @@ namespace DotRecast.Detour.TileCache
|
||||
}
|
||||
else if (ob.type == DtTileCacheObstacleType.ORIENTED_BOX)
|
||||
{
|
||||
LFloat maxr = (LFloat)1.41f * LMath.Max(ob.extents.X, ob.extents.Z);
|
||||
LFloat maxr = new LFloat("",1410) * LMath.Max(ob.extents.X, ob.extents.Z);
|
||||
bmin.X = ob.center.X - maxr;
|
||||
bmax.X = ob.center.X + maxr;
|
||||
bmin.Y = ob.center.Y - ob.extents.Y;
|
||||
|
||||
+15
-15
@@ -609,7 +609,7 @@ namespace DotRecast.Detour.TileCache
|
||||
int lh = layer.heights[idx];
|
||||
if (LMath.Abs(lh - y) <= walkableClimb && layer.areas[idx] != DT_TILECACHE_NULL_AREA)
|
||||
{
|
||||
height = LMath.Max(height, (LFloat)(char)lh);
|
||||
height = LMath.Max(height, lh);
|
||||
portal &= (layer.cons[idx] >> 4);
|
||||
if (preg != 0xff && preg != layer.regs[idx])
|
||||
allSameReg = false;
|
||||
@@ -1812,12 +1812,12 @@ namespace DotRecast.Detour.TileCache
|
||||
bmax.X = pos.X + radius;
|
||||
bmax.Y = pos.Y + height;
|
||||
bmax.Z = pos.Z + radius;
|
||||
LFloat r2 = RcMath.Sqr(radius / cs + (LFloat)0.5f);
|
||||
LFloat r2 = RcMath.Sqr(radius / cs + LFloat.L0D5);
|
||||
|
||||
int w = layer.header.width;
|
||||
int h = layer.header.height;
|
||||
LFloat ics = (LFloat)1.0f / cs;
|
||||
LFloat ich = (LFloat)1.0f / ch;
|
||||
LFloat ics = LFloat.L1 / cs;
|
||||
LFloat ich = LFloat.L1 / ch;
|
||||
|
||||
LFloat px = (pos.X - orig.X) * ics;
|
||||
LFloat pz = (pos.Z - orig.Z) * ics;
|
||||
@@ -1851,8 +1851,8 @@ namespace DotRecast.Detour.TileCache
|
||||
{
|
||||
for (int x = minx; x <= maxx; ++x)
|
||||
{
|
||||
LFloat dx = x + (LFloat)0.5f - px;
|
||||
LFloat dz = z + (LFloat)0.5f - pz;
|
||||
LFloat dx = x + LFloat.L0D5 - px;
|
||||
LFloat dz = z + LFloat.L0D5 - pz;
|
||||
if (dx * dx + dz * dz > r2)
|
||||
continue;
|
||||
int y = layer.heights[x + z * w];
|
||||
@@ -1867,8 +1867,8 @@ namespace DotRecast.Detour.TileCache
|
||||
{
|
||||
int w = layer.header.width;
|
||||
int h = layer.header.height;
|
||||
LFloat ics = (LFloat)1.0f / cs;
|
||||
LFloat ich = (LFloat)1.0f / ch;
|
||||
LFloat ics = LFloat.L1 / cs;
|
||||
LFloat ich = LFloat.L1 / ch;
|
||||
|
||||
int minx = (int)LMath.Floor((bmin.X - orig.X) * ics);
|
||||
int miny = (int)LMath.Floor((bmin.Y - orig.Y) * ich);
|
||||
@@ -1996,13 +1996,13 @@ namespace DotRecast.Detour.TileCache
|
||||
{
|
||||
int w = layer.header.width;
|
||||
int h = layer.header.height;
|
||||
LFloat ics = (LFloat)1.0f / cs;
|
||||
LFloat ich = (LFloat)1.0f / ch;
|
||||
LFloat ics = LFloat.L1 / cs;
|
||||
LFloat ich = LFloat.L1 / ch;
|
||||
|
||||
LFloat cx = (center.X - orig.X) * ics;
|
||||
LFloat cz = (center.Z - orig.Z) * ics;
|
||||
|
||||
LFloat maxr = (LFloat)1.41f * LMath.Max(extents.X, extents.Z);
|
||||
LFloat maxr = new LFloat("",1410) * LMath.Max(extents.X, extents.Z);
|
||||
int minx = (int)LMath.Floor(cx - maxr * ics);
|
||||
int maxx = (int)LMath.Floor(cx + maxr * ics);
|
||||
int minz = (int)LMath.Floor(cz - maxr * ics);
|
||||
@@ -2028,14 +2028,14 @@ namespace DotRecast.Detour.TileCache
|
||||
if (maxz >= h)
|
||||
maxz = h - 1;
|
||||
|
||||
LFloat xhalf = extents.X * ics + (LFloat)0.5f;
|
||||
LFloat zhalf = extents.Z * ics + (LFloat)0.5f;
|
||||
LFloat xhalf = extents.X * ics + LFloat.L0D5;
|
||||
LFloat zhalf = extents.Z * ics + LFloat.L0D5;
|
||||
for (int z = minz; z <= maxz; ++z)
|
||||
{
|
||||
for (int x = minx; x <= maxx; ++x)
|
||||
{
|
||||
LFloat x2 = (LFloat)2.0f * (x - cx);
|
||||
LFloat z2 = (LFloat)2.0f * (z - cz);
|
||||
LFloat x2 = LFloat.L2 * (x - cx);
|
||||
LFloat z2 = LFloat.L2 * (z - cz);
|
||||
LFloat xrot = rotAux[1] * x2 + rotAux[0] * z2;
|
||||
if (xrot > xhalf || xrot < -xhalf)
|
||||
continue;
|
||||
|
||||
+1
-1
@@ -34,7 +34,7 @@ namespace DotRecast.Detour.TileCache
|
||||
public LFloat radius, height;
|
||||
public RcVec3f center = new RcVec3f();
|
||||
public RcVec3f extents = new RcVec3f();
|
||||
public readonly LFloat[] rotAux = new LFloat[2]; // { Cos(0.5f*angle)*Sin(-0.5f*angle); Cos(0.5f*angle)*Cos(0.5f*angle) - 0.5 }
|
||||
public readonly LFloat[] rotAux = new LFloat[2]; // { Cos(LFloat.L0D5*angle)*Sin(-LFloat.L0D5*angle); Cos(LFloat.L0D5*angle)*Cos(LFloat.L0D5*angle) - 0.5 }
|
||||
|
||||
public List<long> touched = new List<long>();
|
||||
public readonly List<long> pending = new List<long>();
|
||||
|
||||
+5
-5
@@ -29,7 +29,7 @@ namespace DotRecast.Detour
|
||||
*/
|
||||
public static class DtConvexConvexIntersections
|
||||
{
|
||||
private static LFloat EPSILON = (LFloat)0.0001f;
|
||||
private static LFloat EPSILON = LFloat.EPS_1MS;
|
||||
|
||||
public static LFloat[] Intersect(LFloat[] p, LFloat[] q)
|
||||
{
|
||||
@@ -68,10 +68,10 @@ namespace DotRecast.Detour
|
||||
LFloat bHA = DtUtils.TriArea2D(a1, a, b);
|
||||
if (LMath.Abs(cross) < EPSILON)
|
||||
{
|
||||
cross = (LFloat)0f;
|
||||
cross = LFloat.L0;
|
||||
}
|
||||
|
||||
bool parallel = cross == 0f;
|
||||
bool parallel = cross == LFloat.L0;
|
||||
DtConvexConvexIntersection code = parallel ? ParallelInt(a1, a, b1, b, ref ip, ref iq) : SegSegInt(a1, a, b1, b, ref ip, ref iq);
|
||||
|
||||
if (code == DtConvexConvexIntersection.Single)
|
||||
@@ -97,7 +97,7 @@ namespace DotRecast.Detour
|
||||
}
|
||||
|
||||
/* Special case: A & B parallel and separated. */
|
||||
if (parallel && aHB < 0f && bHA < 0f)
|
||||
if (parallel && aHB < LFloat.L0 && bHA < LFloat.L0)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
@@ -217,7 +217,7 @@ namespace DotRecast.Detour
|
||||
{
|
||||
if (DtUtils.IntersectSegSeg2D(a, b, c, d, out var s, out var t))
|
||||
{
|
||||
if (s >= 0.0f && s <= 1.0f && t >= 0.0f && t <= 1.0f)
|
||||
if (s >= LFloat.L0 && s <= LFloat.L1 && t >= LFloat.L0 && t <= LFloat.L1)
|
||||
{
|
||||
p.X = a.X + (b.X - a.X) * s;
|
||||
p.Y = a.Y + (b.Y - a.Y) * s;
|
||||
|
||||
+1
-1
@@ -25,7 +25,7 @@ namespace DotRecast.Detour
|
||||
{
|
||||
public class DtDefaultQueryHeuristic : IDtQueryHeuristic
|
||||
{
|
||||
public static LFloat H_SCALE = (LFloat)0.999f; // Search heuristic scale.
|
||||
public static LFloat H_SCALE = new LFloat("",999); // Search heuristic scale.
|
||||
public static readonly DtDefaultQueryHeuristic Default = new DtDefaultQueryHeuristic(H_SCALE);
|
||||
|
||||
private readonly LFloat scale;
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@ namespace DotRecast.Detour
|
||||
public static readonly DtFindPathOption NoOption = new DtFindPathOption(DtDefaultQueryHeuristic.Default, 0, 0);
|
||||
|
||||
public static readonly DtFindPathOption AnyAngle = new DtFindPathOption(DtDefaultQueryHeuristic.Default, DtFindPathOptions.DT_FINDPATH_ANY_ANGLE, LFloat.MaxValue);
|
||||
public static readonly DtFindPathOption ZeroScale = new DtFindPathOption(new DtDefaultQueryHeuristic((LFloat)0.0f), 0, 0);
|
||||
public static readonly DtFindPathOption ZeroScale = new DtFindPathOption(new DtDefaultQueryHeuristic(LFloat.L0), 0, 0);
|
||||
|
||||
public readonly IDtQueryHeuristic heuristic;
|
||||
public readonly int options;
|
||||
|
||||
+8
-8
@@ -67,7 +67,7 @@ namespace DotRecast.Detour
|
||||
|
||||
/// Limit raycasting during any angle pahfinding
|
||||
/// The limit is given as a multiple of the character radius
|
||||
public static LFloat DT_RAY_CAST_LIMIT_PROPORTIONS = (LFloat)50.0f;
|
||||
public static LFloat DT_RAY_CAST_LIMIT_PROPORTIONS = LFloat.L50;
|
||||
|
||||
private readonly DtNavMeshParams m_params; // < Current initialization params. TODO: do not store this info twice.
|
||||
private readonly RcVec3f m_orig; // < Origin of the tile (0,0)
|
||||
@@ -823,8 +823,8 @@ namespace DotRecast.Detour
|
||||
tmax = temp;
|
||||
}
|
||||
|
||||
link.bmin = (int)LMath.Round(LMath.Clamp(tmin, (LFloat)0.0f, (LFloat)1.0f) * (LFloat)255.0f);
|
||||
link.bmax = (int)LMath.Round(LMath.Clamp(tmax, (LFloat)0.0f, (LFloat)1.0f) * (LFloat)255.0f);
|
||||
link.bmin = (int)LMath.Round(LMath.Clamp(tmin, LFloat.L0, LFloat.L1) * LFloat.L255);
|
||||
link.bmax = (int)LMath.Round(LMath.Clamp(tmax, LFloat.L0, LFloat.L1) * LFloat.L255);
|
||||
}
|
||||
else if (dir == 2 || dir == 6)
|
||||
{
|
||||
@@ -839,8 +839,8 @@ namespace DotRecast.Detour
|
||||
tmax = temp;
|
||||
}
|
||||
|
||||
link.bmin = (int)LMath.Round(LMath.Clamp(tmin, (LFloat)0.0f, (LFloat)1.0f) * (LFloat)255.0f);
|
||||
link.bmax = (int)LMath.Round(LMath.Clamp(tmax, (LFloat)0.0f, (LFloat)1.0f) * (LFloat)255.0f);
|
||||
link.bmin = (int)LMath.Round(LMath.Clamp(tmin, LFloat.L0, LFloat.L1) * LFloat.L255);
|
||||
link.bmax = (int)LMath.Round(LMath.Clamp(tmax, LFloat.L0, LFloat.L1) * LFloat.L255);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -968,7 +968,7 @@ namespace DotRecast.Detour
|
||||
int vd = poly.verts[(j + 1) % nv] * 3;
|
||||
LFloat bpos = GetSlabCoord(tile.data.verts, vc, side);
|
||||
// Segments are not close enough.
|
||||
if (LMath.Abs(apos - bpos) > 0.01f)
|
||||
if (LMath.Abs(apos - bpos) > new LFloat("",10))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@@ -976,7 +976,7 @@ namespace DotRecast.Detour
|
||||
// Check if the segments touch.
|
||||
CalcSlabEndPoints(tile.data.verts, vc, vd, ref bmin, ref bmax, side);
|
||||
|
||||
if (!OverlapSlabs(amin, amax, bmin, bmax, (LFloat)0.01f, tile.data.header.walkableClimb))
|
||||
if (!OverlapSlabs(amin, amax, bmin, bmax, (new LFloat("",10)), tile.data.header.walkableClimb))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@@ -1774,7 +1774,7 @@ namespace DotRecast.Detour
|
||||
center.Z += tile.data.verts[v + 2];
|
||||
}
|
||||
|
||||
LFloat s = (LFloat)1.0f / poly.vertCount;
|
||||
LFloat s = LFloat.L1 / poly.vertCount;
|
||||
center.X *= s;
|
||||
center.Y *= s;
|
||||
center.Z *= s;
|
||||
|
||||
+1
-1
@@ -439,7 +439,7 @@ namespace DotRecast.Detour
|
||||
header.detailMeshCount = option.polyCount;
|
||||
header.detailVertCount = uniqueDetailVertCount;
|
||||
header.detailTriCount = detailTriCount;
|
||||
header.bvQuantFactor = (LFloat)1.0f / option.cs;
|
||||
header.bvQuantFactor = LFloat.L1 / option.cs;
|
||||
header.offMeshBase = option.polyCount;
|
||||
header.walkableHeight = option.walkableHeight;
|
||||
header.walkableRadius = option.walkableRadius;
|
||||
|
||||
+35
-35
@@ -66,7 +66,7 @@ namespace DotRecast.Detour
|
||||
|
||||
// Randomly pick one tile. Assume that all tiles cover roughly the same area.
|
||||
DtMeshTile tile = null;
|
||||
LFloat tsum = (LFloat)0.0f;
|
||||
LFloat tsum = LFloat.L0;
|
||||
for (int i = 0; i < m_nav.GetMaxTiles(); i++)
|
||||
{
|
||||
DtMeshTile mt = m_nav.GetTile(i);
|
||||
@@ -76,7 +76,7 @@ namespace DotRecast.Detour
|
||||
}
|
||||
|
||||
// Choose random tile using reservoir sampling.
|
||||
LFloat area = (LFloat)1.0f; // Could be tile area too.
|
||||
LFloat area = LFloat.L1; // Could be tile area too.
|
||||
tsum += area;
|
||||
LFloat u = frand.Next();
|
||||
if (u * tsum <= area)
|
||||
@@ -95,7 +95,7 @@ namespace DotRecast.Detour
|
||||
long polyRef = 0;
|
||||
long @base = m_nav.GetPolyRefBase(tile);
|
||||
|
||||
LFloat areaSum = (LFloat)0.0f;
|
||||
LFloat areaSum = LFloat.L0;
|
||||
for (int i = 0; i < tile.data.header.polyCount; ++i)
|
||||
{
|
||||
DtPoly p = tile.data.polys[i];
|
||||
@@ -113,7 +113,7 @@ namespace DotRecast.Detour
|
||||
}
|
||||
|
||||
// Calc area of the polygon.
|
||||
LFloat polyArea = (LFloat)0.0f;
|
||||
LFloat polyArea = LFloat.L0;
|
||||
for (int j = 2; j < p.vertCount; ++j)
|
||||
{
|
||||
int va = p.verts[0] * 3;
|
||||
@@ -243,7 +243,7 @@ namespace DotRecast.Detour
|
||||
DtStatus status = DtStatus.DT_SUCCESS;
|
||||
|
||||
LFloat radiusSqr = maxRadius * maxRadius;
|
||||
LFloat areaSum = (LFloat)0.0f;
|
||||
LFloat areaSum = LFloat.L0;
|
||||
|
||||
DtPoly randomPoly = null;
|
||||
long randomPolyRef = 0;
|
||||
@@ -263,7 +263,7 @@ namespace DotRecast.Detour
|
||||
if (bestPoly.GetPolyType() == DtPolyTypes.DT_POLYTYPE_GROUND)
|
||||
{
|
||||
// Calc area of the polygon.
|
||||
LFloat polyArea = (LFloat)0.0f;
|
||||
LFloat polyArea = LFloat.L0;
|
||||
LFloat[] polyVerts = new LFloat[bestPoly.vertCount * 3];
|
||||
for (int j = 0; j < bestPoly.vertCount; ++j)
|
||||
{
|
||||
@@ -350,7 +350,7 @@ namespace DotRecast.Detour
|
||||
// Cost
|
||||
if (neighbourNode.flags == 0)
|
||||
{
|
||||
neighbourNode.pos = RcVec3f.Lerp(va, vb, (LFloat)0.5f);
|
||||
neighbourNode.pos = RcVec3f.Lerp(va, vb, LFloat.L0D5);
|
||||
}
|
||||
|
||||
LFloat total = bestNode.total + RcVec3f.Distance(bestNode.pos, neighbourNode.pos);
|
||||
@@ -770,7 +770,7 @@ namespace DotRecast.Detour
|
||||
LFloat raycastLimitSqr = RcMath.Sqr(raycastLimit);
|
||||
|
||||
// trade quality with performance?
|
||||
if ((options & DtFindPathOptions.DT_FINDPATH_ANY_ANGLE) != 0 && raycastLimit < 0f)
|
||||
if ((options & DtFindPathOptions.DT_FINDPATH_ANY_ANGLE) != 0 && raycastLimit < LFloat.L0)
|
||||
{
|
||||
// limiting to several times the character radius yields nice results. It is not sensitive
|
||||
// so it is enough to compute it from the first tile.
|
||||
@@ -904,7 +904,7 @@ namespace DotRecast.Detour
|
||||
DtRaycastOptions.DT_RAYCAST_USE_COSTS, ref rayHit, grandpaRef);
|
||||
if (rayStatus.Succeeded())
|
||||
{
|
||||
foundShortCut = rayHit.t >= 1.0f;
|
||||
foundShortCut = rayHit.t >= LFloat.L1;
|
||||
if (foundShortCut)
|
||||
{
|
||||
shortcut = new List<long>(rayHit.path);
|
||||
@@ -1012,7 +1012,7 @@ namespace DotRecast.Detour
|
||||
*/
|
||||
public DtStatus InitSlicedFindPath(long startRef, long endRef, RcVec3f startPos, RcVec3f endPos, IDtQueryFilter filter, int options)
|
||||
{
|
||||
return InitSlicedFindPath(startRef, endRef, startPos, endPos, filter, options, DtDefaultQueryHeuristic.Default, -(LFloat)1.0f);
|
||||
return InitSlicedFindPath(startRef, endRef, startPos, endPos, filter, options, DtDefaultQueryHeuristic.Default, -LFloat.L1);
|
||||
}
|
||||
|
||||
public DtStatus InitSlicedFindPath(long startRef, long endRef, RcVec3f startPos, RcVec3f endPos, IDtQueryFilter filter, int options, LFloat raycastLimit)
|
||||
@@ -1041,7 +1041,7 @@ namespace DotRecast.Detour
|
||||
}
|
||||
|
||||
// trade quality with performance?
|
||||
if ((options & DtFindPathOptions.DT_FINDPATH_ANY_ANGLE) != 0 && raycastLimit < 0f)
|
||||
if ((options & DtFindPathOptions.DT_FINDPATH_ANY_ANGLE) != 0 && raycastLimit < LFloat.L0)
|
||||
{
|
||||
// limiting to several times the character radius yields nice results. It is not sensitive
|
||||
// so it is enough to compute it from the first tile.
|
||||
@@ -1228,7 +1228,7 @@ namespace DotRecast.Detour
|
||||
DtRaycastOptions.DT_RAYCAST_USE_COSTS, ref rayHit, grandpaRef);
|
||||
if (status.Succeeded())
|
||||
{
|
||||
foundShortCut = rayHit.t >= 1.0f;
|
||||
foundShortCut = rayHit.t >= LFloat.L1;
|
||||
if (foundShortCut)
|
||||
{
|
||||
shortcut = new List<long>(rayHit.path);
|
||||
@@ -1616,7 +1616,7 @@ namespace DotRecast.Detour
|
||||
if (i == 0)
|
||||
{
|
||||
var distSqr = DtUtils.DistancePtSegSqr2D(portalApex, left, right, out var t);
|
||||
if (distSqr < RcMath.Sqr((LFloat)0.001f))
|
||||
if (distSqr < RcMath.Sqr(LFloat.EPS_1MS))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@@ -1631,9 +1631,9 @@ namespace DotRecast.Detour
|
||||
}
|
||||
|
||||
// Right vertex.
|
||||
if (DtUtils.TriArea2D(portalApex, portalRight, right) <= 0.0f)
|
||||
if (DtUtils.TriArea2D(portalApex, portalRight, right) <= (LFloat.L0))
|
||||
{
|
||||
if (DtUtils.VEqual(portalApex, portalRight) || DtUtils.TriArea2D(portalApex, portalLeft, right) > 0.0f)
|
||||
if (DtUtils.VEqual(portalApex, portalRight) || DtUtils.TriArea2D(portalApex, portalLeft, right) > (LFloat.L0))
|
||||
{
|
||||
portalRight = right;
|
||||
rightPolyRef = (i + 1 < pathSize) ? path[i + 1] : 0;
|
||||
@@ -1687,9 +1687,9 @@ namespace DotRecast.Detour
|
||||
}
|
||||
|
||||
// Left vertex.
|
||||
if (DtUtils.TriArea2D(portalApex, portalLeft, left) >= 0.0f)
|
||||
if (DtUtils.TriArea2D(portalApex, portalLeft, left) >= (LFloat.L0))
|
||||
{
|
||||
if (DtUtils.VEqual(portalApex, portalLeft) || DtUtils.TriArea2D(portalApex, portalRight, left) < 0.0f)
|
||||
if (DtUtils.VEqual(portalApex, portalLeft) || DtUtils.TriArea2D(portalApex, portalRight, left) < (LFloat.L0))
|
||||
{
|
||||
portalLeft = left;
|
||||
leftPolyRef = (i + 1 < pathSize) ? path[i + 1] : 0;
|
||||
@@ -1823,8 +1823,8 @@ namespace DotRecast.Detour
|
||||
bestPos = startPos;
|
||||
|
||||
// Search constraints
|
||||
var searchPos = RcVec3f.Lerp(startPos, endPos, (LFloat)0.5f);
|
||||
LFloat searchRadSqr = RcMath.Sqr(RcVec3f.Distance(startPos, endPos) / (LFloat)2.0f + (LFloat)0.001f);
|
||||
var searchPos = RcVec3f.Lerp(startPos, endPos, LFloat.L0D5);
|
||||
LFloat searchRadSqr = RcMath.Sqr(RcVec3f.Distance(startPos, endPos) / LFloat.L2 + LFloat.EPS_1MS);
|
||||
|
||||
Span<LFloat> verts = stackalloc LFloat[m_nav.GetMaxVertsPerPoly() * 3];
|
||||
|
||||
@@ -2089,7 +2089,7 @@ namespace DotRecast.Detour
|
||||
// Unpack portal limits.
|
||||
if (link.bmin != 0 || link.bmax != 255)
|
||||
{
|
||||
LFloat s = (LFloat)1.0f / (LFloat)255.0f;
|
||||
LFloat s = LFloat.L1 / LFloat.L255;
|
||||
LFloat tmin = link.bmin * s;
|
||||
LFloat tmax = link.bmax * s;
|
||||
left = RcVecUtils.Lerp(fromTile.data.verts, v0 * 3, v1 * 3, tmin);
|
||||
@@ -2109,9 +2109,9 @@ namespace DotRecast.Detour
|
||||
return DtStatus.DT_FAILURE | DtStatus.DT_INVALID_PARAM;
|
||||
}
|
||||
|
||||
mid.X = (left.X + right.X) * (LFloat)0.5f;
|
||||
mid.Y = (left.Y + right.Y) * (LFloat)0.5f;
|
||||
mid.Z = (left.Z + right.Z) * (LFloat)0.5f;
|
||||
mid.X = (left.X + right.X) * LFloat.L0D5;
|
||||
mid.Y = (left.Y + right.Y) * LFloat.L0D5;
|
||||
mid.Z = (left.Z + right.Z) * LFloat.L0D5;
|
||||
|
||||
return DtStatus.DT_SUCCESS;
|
||||
}
|
||||
@@ -2126,10 +2126,10 @@ namespace DotRecast.Detour
|
||||
return DtStatus.DT_FAILURE;
|
||||
}
|
||||
|
||||
LFloat t = (LFloat)0.5f;
|
||||
LFloat t = LFloat.L0D5;
|
||||
if (DtUtils.IntersectSegSeg2D(fromPos, toPos, left, right, out var _, out var t2))
|
||||
{
|
||||
t = LMath.Clamp(t2, (LFloat)0.1f, (LFloat)0.9f);
|
||||
t = LMath.Clamp(t2, LFloat.L0D1, LFloat.L0D9);
|
||||
}
|
||||
|
||||
pt = RcVec3f.Lerp(left, right, t);
|
||||
@@ -2378,7 +2378,7 @@ namespace DotRecast.Detour
|
||||
if (link.side == 0 || link.side == 4)
|
||||
{
|
||||
// Calculate link size.
|
||||
LFloat s = (LFloat)1.0f / (LFloat)255.0f;
|
||||
LFloat s = LFloat.L1 / LFloat.L255;
|
||||
LFloat lmin = tile.data.verts[left + 2]
|
||||
+ (tile.data.verts[right + 2] - tile.data.verts[left + 2]) * (link.bmin * s);
|
||||
LFloat lmax = tile.data.verts[left + 2]
|
||||
@@ -2399,7 +2399,7 @@ namespace DotRecast.Detour
|
||||
else if (link.side == 2 || link.side == 6)
|
||||
{
|
||||
// Calculate link size.
|
||||
LFloat s = (LFloat)1.0f / (LFloat)255.0f;
|
||||
LFloat s = LFloat.L1 / LFloat.L255;
|
||||
LFloat lmin = tile.data.verts[left]
|
||||
+ (tile.data.verts[right] - tile.data.verts[left]) * (link.bmin * s);
|
||||
LFloat lmax = tile.data.verts[left]
|
||||
@@ -2612,7 +2612,7 @@ namespace DotRecast.Detour
|
||||
// Cost
|
||||
if (neighbourNode.flags == 0)
|
||||
{
|
||||
neighbourNode.pos = RcVec3f.Lerp(va, vb, (LFloat)0.5f);
|
||||
neighbourNode.pos = RcVec3f.Lerp(va, vb, LFloat.L0D5);
|
||||
}
|
||||
|
||||
LFloat cost = filter.GetCost(bestNode.pos, neighbourNode.pos, parentRef, parentTile, parentPoly, bestRef,
|
||||
@@ -2702,7 +2702,7 @@ namespace DotRecast.Detour
|
||||
centerPos += verts[i];
|
||||
}
|
||||
|
||||
LFloat scale = (LFloat)1.0f / nverts;
|
||||
LFloat scale = LFloat.L1 / nverts;
|
||||
centerPos.X *= scale;
|
||||
centerPos.Y *= scale;
|
||||
centerPos.Z *= scale;
|
||||
@@ -2779,7 +2779,7 @@ namespace DotRecast.Detour
|
||||
continue;
|
||||
}
|
||||
|
||||
if (tmin > 1.0f || tmax < 0.0f)
|
||||
if (tmin > LFloat.L1 || tmax < (LFloat.L0))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@@ -2794,7 +2794,7 @@ namespace DotRecast.Detour
|
||||
// Cost
|
||||
if (neighbourNode.flags == 0)
|
||||
{
|
||||
neighbourNode.pos = RcVec3f.Lerp(va, vb, (LFloat)0.5f);
|
||||
neighbourNode.pos = RcVec3f.Lerp(va, vb, LFloat.L0D5);
|
||||
}
|
||||
|
||||
LFloat cost = filter.GetCost(bestNode.pos, neighbourNode.pos, parentRef, parentTile, parentPoly, bestRef,
|
||||
@@ -3137,8 +3137,8 @@ namespace DotRecast.Detour
|
||||
// Portal segment.
|
||||
if (storePortals && ints[k].refs != 0)
|
||||
{
|
||||
LFloat tmin = ints[k].tmin / (LFloat)255.0f;
|
||||
LFloat tmax = ints[k].tmax / (LFloat)255.0f;
|
||||
LFloat tmin = ints[k].tmin / LFloat.L255;
|
||||
LFloat tmax = ints[k].tmax / LFloat.L255;
|
||||
var seg = new RcSegmentVert();
|
||||
seg.vmin = RcVecUtils.Lerp(tile.data.verts, vj, vi, tmin);
|
||||
seg.vmax = RcVecUtils.Lerp(tile.data.verts, vj, vi, tmax);
|
||||
@@ -3151,8 +3151,8 @@ namespace DotRecast.Detour
|
||||
int imax = ints[k].tmin;
|
||||
if (imin != imax)
|
||||
{
|
||||
LFloat tmin = imin / (LFloat)255.0f;
|
||||
LFloat tmax = imax / (LFloat)255.0f;
|
||||
LFloat tmin = imin / LFloat.L255;
|
||||
LFloat tmax = imax / LFloat.L255;
|
||||
var seg = new RcSegmentVert();
|
||||
seg.vmin = RcVecUtils.Lerp(tile.data.verts, vj, vi, tmin);
|
||||
seg.vmax = RcVecUtils.Lerp(tile.data.verts, vj, vi, tmax);
|
||||
|
||||
+2
-2
@@ -30,7 +30,7 @@ namespace DotRecast.Detour
|
||||
{
|
||||
public static bool Raycast(DtNavMesh mesh, RcVec3f src, RcVec3f dst, out LFloat hitTime)
|
||||
{
|
||||
hitTime = (LFloat)0.0f;
|
||||
hitTime = LFloat.L0;
|
||||
for (int t = 0; t < mesh.GetMaxTiles(); ++t)
|
||||
{
|
||||
DtMeshTile tile = mesh.GetTile(t);
|
||||
@@ -48,7 +48,7 @@ namespace DotRecast.Detour
|
||||
|
||||
private static bool Raycast(DtMeshTile tile, RcVec3f sp, RcVec3f sq, out LFloat hitTime)
|
||||
{
|
||||
hitTime = (LFloat)0.0f;
|
||||
hitTime = LFloat.L0;
|
||||
for (int i = 0; i < tile.data.header.polyCount; ++i)
|
||||
{
|
||||
DtPoly p = tile.data.polys[i];
|
||||
|
||||
+1
-1
@@ -52,7 +52,7 @@ namespace DotRecast.Detour
|
||||
{
|
||||
// Stop at Off-Mesh link or when point is further than slop away.
|
||||
if (((straightPath[ns].flags & DtStraightPathFlags.DT_STRAIGHTPATH_OFFMESH_CONNECTION) != 0)
|
||||
|| !InRange(straightPath[ns].pos, startPos, minTargetDist, (LFloat)1000.0f))
|
||||
|| !InRange(straightPath[ns].pos, startPos, minTargetDist, LFloat.L1000))
|
||||
break;
|
||||
ns++;
|
||||
}
|
||||
|
||||
+2
-2
@@ -61,7 +61,7 @@ namespace DotRecast.Detour
|
||||
m_excludeFlags = 0;
|
||||
for (int i = 0; i < DtNavMesh.DT_MAX_AREAS; ++i)
|
||||
{
|
||||
m_areaCost[i] = (LFloat)1.0f;
|
||||
m_areaCost[i] = LFloat.L1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -76,7 +76,7 @@ namespace DotRecast.Detour
|
||||
|
||||
for (int i = areaCost.Length; i < DtNavMesh.DT_MAX_AREAS; ++i)
|
||||
{
|
||||
m_areaCost[i] = (LFloat)1.0f;
|
||||
m_areaCost[i] = LFloat.L1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+7
-7
@@ -7,7 +7,7 @@ namespace DotRecast.Detour
|
||||
{
|
||||
public static class DtUtils
|
||||
{
|
||||
private static readonly LFloat EQUAL_THRESHOLD = (LFloat)0.0001f;
|
||||
private static readonly LFloat EQUAL_THRESHOLD = LFloat.EPS_1MS;
|
||||
|
||||
public static int NextPow2(int v)
|
||||
{
|
||||
@@ -169,17 +169,17 @@ namespace DotRecast.Detour
|
||||
public static RcVec3f RandomPointInConvexPoly(Span<LFloat> pts, int npts, Span<LFloat> areas, LFloat s, LFloat t)
|
||||
{
|
||||
// Calc triangle araes
|
||||
LFloat areasum = (LFloat)0.0f;
|
||||
LFloat areasum = LFloat.L0;
|
||||
for (int i = 2; i < npts; i++)
|
||||
{
|
||||
areas[i] = TriArea2D(pts, 0, (i - 1) * 3, i * 3);
|
||||
areasum += LMath.Max((LFloat)0.001f, areas[i]);
|
||||
areasum += LMath.Max(LFloat.EPS_1MS, areas[i]);
|
||||
}
|
||||
|
||||
// Find sub triangle weighted by area.
|
||||
LFloat thr = s * areasum;
|
||||
LFloat acc = (LFloat)0.0f;
|
||||
LFloat u = (LFloat)1.0f;
|
||||
LFloat acc = LFloat.L0;
|
||||
LFloat u = LFloat.L1;
|
||||
int tri = npts - 1;
|
||||
for (int i = 2; i < npts; i++)
|
||||
{
|
||||
@@ -238,7 +238,7 @@ namespace DotRecast.Detour
|
||||
}
|
||||
|
||||
// If point lies inside the triangle, return interpolated ycoord.
|
||||
if (u >= 0.0f && v >= 0.0f && (u + v) <= denom)
|
||||
if (u >= LFloat.L0 && v >= LFloat.L0 && (u + v) <= denom)
|
||||
{
|
||||
h = a.Y + (v0.Y * u + v1.Y * v) / denom;
|
||||
return true;
|
||||
@@ -347,7 +347,7 @@ namespace DotRecast.Detour
|
||||
out LFloat tmin, out LFloat tmax,
|
||||
out int segMin, out int segMax)
|
||||
{
|
||||
LFloat EPS = (LFloat)0.0001f;
|
||||
LFloat EPS = LFloat.EPS_1MS;
|
||||
|
||||
tmin = 0;
|
||||
tmax = 1;
|
||||
|
||||
+3
-3
@@ -100,7 +100,7 @@ namespace DotRecast.Recast.Toolset.Geom
|
||||
LFloat d = LMath.Sqrt(normals[i] * normals[i] + normals[i + 1] * normals[i + 1] + normals[i + 2] * normals[i + 2]);
|
||||
if (d > 0)
|
||||
{
|
||||
d = (LFloat)1.0f / d;
|
||||
d = LFloat.L1 / d;
|
||||
normals[i] *= d;
|
||||
normals[i + 1] *= d;
|
||||
normals[i + 2] *= d;
|
||||
@@ -136,7 +136,7 @@ namespace DotRecast.Recast.Toolset.Geom
|
||||
|
||||
public bool RaycastMesh(RcVec3f src, RcVec3f dst, out LFloat tmin)
|
||||
{
|
||||
tmin = (LFloat)1.0f;
|
||||
tmin = LFloat.L1;
|
||||
|
||||
// Prune hit ray.
|
||||
if (!RcIntersections.IsectSegAABB(src, dst, bmin, bmax, out var btmin, out var btmax))
|
||||
@@ -157,7 +157,7 @@ namespace DotRecast.Recast.Toolset.Geom
|
||||
return false;
|
||||
}
|
||||
|
||||
tmin = (LFloat)1.0f;
|
||||
tmin = LFloat.L1;
|
||||
bool hit = false;
|
||||
foreach (RcChunkyTriMeshNode chunk in chunks)
|
||||
{
|
||||
|
||||
+11
-11
@@ -14,14 +14,14 @@ namespace DotRecast.Recast.Toolset.Gizmos
|
||||
|
||||
public static readonly RcVec3f[] VERTS =
|
||||
{
|
||||
new RcVec3f(-(LFloat)1f, -(LFloat)1f, -(LFloat)1f),
|
||||
new RcVec3f((LFloat)1f, -(LFloat)1f, -(LFloat)1f),
|
||||
new RcVec3f((LFloat)1f, -(LFloat)1f, (LFloat)1f),
|
||||
new RcVec3f(-(LFloat)1f, -(LFloat)1f, (LFloat)1f),
|
||||
new RcVec3f(-(LFloat)1f, (LFloat)1f, -(LFloat)1f),
|
||||
new RcVec3f((LFloat)1f, (LFloat)1f, -(LFloat)1f),
|
||||
new RcVec3f((LFloat)1f, (LFloat)1f, (LFloat)1f),
|
||||
new RcVec3f(-(LFloat)1f, (LFloat)1f, (LFloat)1f),
|
||||
new RcVec3f(-LFloat.L1, -LFloat.L1, -LFloat.L1),
|
||||
new RcVec3f(LFloat.L1, -LFloat.L1, -LFloat.L1),
|
||||
new RcVec3f(LFloat.L1, -LFloat.L1, LFloat.L1),
|
||||
new RcVec3f(-LFloat.L1, -LFloat.L1, LFloat.L1),
|
||||
new RcVec3f(-LFloat.L1, LFloat.L1, -LFloat.L1),
|
||||
new RcVec3f(LFloat.L1, LFloat.L1, -LFloat.L1),
|
||||
new RcVec3f(LFloat.L1, LFloat.L1, LFloat.L1),
|
||||
new RcVec3f(-LFloat.L1, LFloat.L1, LFloat.L1),
|
||||
};
|
||||
|
||||
public readonly LFloat[] vertices = new LFloat[8 * 3];
|
||||
@@ -39,9 +39,9 @@ namespace DotRecast.Recast.Toolset.Gizmos
|
||||
this.halfEdges = halfEdges;
|
||||
for (int i = 0; i < 8; ++i)
|
||||
{
|
||||
LFloat s0 = (i & 1) != 0 ? (LFloat)1f : -(LFloat)1f;
|
||||
LFloat s1 = (i & 2) != 0 ? (LFloat)1f : -(LFloat)1f;
|
||||
LFloat s2 = (i & 4) != 0 ? (LFloat)1f : -(LFloat)1f;
|
||||
LFloat s0 = (i & 1) != 0 ? LFloat.L1 : -LFloat.L1;
|
||||
LFloat s1 = (i & 2) != 0 ? LFloat.L1 : -LFloat.L1;
|
||||
LFloat s2 = (i & 4) != 0 ? LFloat.L1 : -LFloat.L1;
|
||||
vertices[i * 3 + 0] = center.X + s0 * halfEdges[0].X + s1 * halfEdges[1].X + s2 * halfEdges[2].X;
|
||||
vertices[i * 3 + 1] = center.Y + s0 * halfEdges[0].Y + s1 * halfEdges[1].Y + s2 * halfEdges[2].Y;
|
||||
vertices[i * 3 + 2] = center.Z + s0 * halfEdges[0].Z + s1 * halfEdges[1].Z + s2 * halfEdges[2].Z;
|
||||
|
||||
+5
-5
@@ -16,8 +16,8 @@ namespace DotRecast.Recast.Toolset.Gizmos
|
||||
{
|
||||
center = new LFloat[]
|
||||
{
|
||||
(LFloat)0.5f * (start.X + end.X), (LFloat)0.5f * (start.Y + end.Y),
|
||||
(LFloat)0.5f * (start.Z + end.Z)
|
||||
LFloat.L0D5 * (start.X + end.X), LFloat.L0D5 * (start.Y + end.Y),
|
||||
LFloat.L0D5 * (start.Z + end.Z)
|
||||
};
|
||||
RcVec3f axis = new RcVec3f(end.X - start.X, end.Y - start.Y, end.Z - start.Z);
|
||||
RcVec3f[] normals = new RcVec3f[3];
|
||||
@@ -32,7 +32,7 @@ namespace DotRecast.Recast.Toolset.Gizmos
|
||||
var trY = new RcVec3f(normals[0].Y, normals[1].Y, normals[2].Y);
|
||||
var trZ = new RcVec3f(normals[0].Z, normals[1].Z, normals[2].Z);
|
||||
LFloat[] spVertices = GenerateSphericalVertices();
|
||||
LFloat halfLength = (LFloat)0.5f * axis.Length();
|
||||
LFloat halfLength = LFloat.L0D5 * axis.Length();
|
||||
vertices = new LFloat[spVertices.Length];
|
||||
gradient = new LFloat[spVertices.Length / 3];
|
||||
RcVec3f v = new RcVec3f();
|
||||
@@ -49,14 +49,14 @@ namespace DotRecast.Recast.Toolset.Gizmos
|
||||
v.Y = vertices[i + 1] - center[1];
|
||||
v.Z = vertices[i + 2] - center[2];
|
||||
v = RcVec3f.Normalize(v);
|
||||
gradient[i / 3] = LMath.Clamp((LFloat)0.57735026f * (v.X + v.Y + v.Z), -(LFloat)1, (LFloat)1);
|
||||
gradient[i / 3] = LMath.Clamp(new LFloat("",577) * (v.X + v.Y + v.Z), -LFloat.L1, LFloat.L1);
|
||||
}
|
||||
}
|
||||
|
||||
private RcVec3f GetSideVector(RcVec3f axis)
|
||||
{
|
||||
var side = new RcVec3f(1, 0, 0);
|
||||
if (axis.X > 0.8)
|
||||
if (axis.X > LFloat.L0D8)
|
||||
{
|
||||
side = new RcVec3f(0, 0, 1);
|
||||
}
|
||||
|
||||
+5
-5
@@ -16,8 +16,8 @@ namespace DotRecast.Recast.Toolset.Gizmos
|
||||
public RcCylinderGizmo(RcVec3f start, RcVec3f end, LFloat radius)
|
||||
{
|
||||
center = new RcVec3f(
|
||||
(LFloat)0.5f * (start.X + end.X), (LFloat)0.5f * (start.Y + end.Y),
|
||||
(LFloat)0.5f * (start.Z + end.Z)
|
||||
LFloat.L0D5 * (start.X + end.X), LFloat.L0D5 * (start.Y + end.Y),
|
||||
LFloat.L0D5 * (start.Z + end.Z)
|
||||
);
|
||||
RcVec3f axis = new RcVec3f(end.X - start.X, end.Y - start.Y, end.Z - start.Z);
|
||||
RcVec3f[] normals = new RcVec3f[3];
|
||||
@@ -32,7 +32,7 @@ namespace DotRecast.Recast.Toolset.Gizmos
|
||||
RcVec3f trY = new RcVec3f(normals[0].Y, normals[1].Y, normals[2].Y);
|
||||
RcVec3f trZ = new RcVec3f(normals[0].Z, normals[1].Z, normals[2].Z);
|
||||
vertices = GenerateCylindricalVertices();
|
||||
LFloat halfLength = (LFloat)0.5f * axis.Length();
|
||||
LFloat halfLength = LFloat.L0D5 * axis.Length();
|
||||
gradient = new LFloat[vertices.Length / 3];
|
||||
RcVec3f v = new RcVec3f();
|
||||
for (int i = 0; i < vertices.Length; i += 3)
|
||||
@@ -54,7 +54,7 @@ namespace DotRecast.Recast.Toolset.Gizmos
|
||||
v.Y = vertices[i + 1] - center.Y;
|
||||
v.Z = vertices[i + 2] - center.Z;
|
||||
v = RcVec3f.Normalize(v);
|
||||
gradient[i / 3] = LMath.Clamp((LFloat)0.57735026f * (v.X + v.Y + v.Z), -(LFloat)1, (LFloat)1);
|
||||
gradient[i / 3] = LMath.Clamp(new LFloat("",577) * (v.X + v.Y + v.Z), -LFloat.L1, LFloat.L1);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -62,7 +62,7 @@ namespace DotRecast.Recast.Toolset.Gizmos
|
||||
private RcVec3f GetSideVector(RcVec3f axis)
|
||||
{
|
||||
RcVec3f side = new RcVec3f(1, 0, 0);
|
||||
if (axis.X > 0.8)
|
||||
if (axis.X > LFloat.L0D8)
|
||||
{
|
||||
side = new RcVec3f(0, 0, 1);
|
||||
}
|
||||
|
||||
+4
-4
@@ -52,7 +52,7 @@ namespace DotRecast.Recast.Toolset.Gizmos
|
||||
int vi = 0;
|
||||
for (int r = 0; r < 4; r++)
|
||||
{
|
||||
vi = GenerateRingVertices(segments, vertices, vi, LMath.PI * (LFloat)0.5f);
|
||||
vi = GenerateRingVertices(segments, vertices, vi, LMath.PI * LFloat.L0D5);
|
||||
}
|
||||
|
||||
return vertices;
|
||||
@@ -67,9 +67,9 @@ namespace DotRecast.Recast.Toolset.Gizmos
|
||||
LFloat phi = 2 * LMath.PI * p / segments;
|
||||
LFloat cosPhi = LMath.Cos(phi);
|
||||
LFloat sinPhi = LMath.Sin(phi);
|
||||
vertices[vi++] = (LFloat)(sinTheta * cosPhi);
|
||||
vertices[vi++] = (LFloat)cosTheta;
|
||||
vertices[vi++] = (LFloat)(sinTheta * sinPhi);
|
||||
vertices[vi++] = (sinTheta * cosPhi);
|
||||
vertices[vi++] = cosTheta;
|
||||
vertices[vi++] = (sinTheta * sinPhi);
|
||||
}
|
||||
|
||||
return vi;
|
||||
|
||||
+12
-12
@@ -4,16 +4,16 @@ namespace DotRecast.Recast.Toolset
|
||||
{
|
||||
public class RcNavMeshBuildSettings
|
||||
{
|
||||
public LFloat cellSize = (LFloat)0.3f;
|
||||
public LFloat cellHeight = (LFloat)0.2f;
|
||||
public LFloat cellSize = LFloat.L0D3;
|
||||
public LFloat cellHeight = LFloat.L0D2;
|
||||
|
||||
public LFloat agentHeight = (LFloat)2.0f;
|
||||
public LFloat agentRadius = (LFloat)0.6f;
|
||||
public LFloat agentMaxClimb = (LFloat)0.9f;
|
||||
public LFloat agentMaxSlope = (LFloat)45f;
|
||||
public LFloat agentHeight = LFloat.L2;
|
||||
public LFloat agentRadius = LFloat.L0D6;
|
||||
public LFloat agentMaxClimb = LFloat.L0D9;
|
||||
public LFloat agentMaxSlope = new LFloat("",45000);
|
||||
|
||||
public LFloat agentMaxAcceleration = (LFloat)8.0f;
|
||||
public LFloat agentMaxSpeed = (LFloat)3.5f;
|
||||
public LFloat agentMaxAcceleration = LFloat.L8;
|
||||
public LFloat agentMaxSpeed = new LFloat("",3500);
|
||||
|
||||
public int minRegionSize = 8;
|
||||
public int mergedRegionSize = 20;
|
||||
@@ -24,12 +24,12 @@ namespace DotRecast.Recast.Toolset
|
||||
public bool filterLedgeSpans = true;
|
||||
public bool filterWalkableLowHeightSpans = true;
|
||||
|
||||
public LFloat edgeMaxLen = (LFloat)12f;
|
||||
public LFloat edgeMaxError = (LFloat)1.3f;
|
||||
public LFloat edgeMaxLen = (new LFloat("",12000));
|
||||
public LFloat edgeMaxError = (new LFloat("",1300));
|
||||
public int vertsPerPoly = 6;
|
||||
|
||||
public LFloat detailSampleDist = (LFloat)6f;
|
||||
public LFloat detailSampleMaxError = (LFloat)1f;
|
||||
public LFloat detailSampleDist = LFloat.L6;
|
||||
public LFloat detailSampleMaxError = LFloat.L1;
|
||||
|
||||
public bool tiled = false;
|
||||
public int tileSize = 32;
|
||||
|
||||
+3
-3
@@ -46,7 +46,7 @@ namespace DotRecast.Recast.Toolset.Tools
|
||||
|
||||
// Create
|
||||
// If clicked on that last pt, create the shape.
|
||||
if (_pts.Count > 0 && RcVec3f.DistanceSquared(p, _pts[_pts.Count - 1]) < 0.2f * 0.2f)
|
||||
if (_pts.Count > 0 && RcVec3f.DistanceSquared(p, _pts[_pts.Count - 1]) < LFloat.L0D2 * LFloat.L0D2)
|
||||
{
|
||||
pts = new List<RcVec3f>(_pts);
|
||||
hull = new List<int>(_hull);
|
||||
@@ -107,7 +107,7 @@ namespace DotRecast.Recast.Toolset.Tools
|
||||
// Create
|
||||
|
||||
// If clicked on that last pt, create the shape.
|
||||
if (_pts.Count > 0 && RcVec3f.DistanceSquared(p, _pts[^1]) < 0.2f * 0.2f)
|
||||
if (_pts.Count > 0 && RcVec3f.DistanceSquared(p, _pts[^1]) < LFloat.L0D2 * LFloat.L0D2)
|
||||
{
|
||||
//
|
||||
if (_hull.Count > 2)
|
||||
@@ -160,7 +160,7 @@ namespace DotRecast.Recast.Toolset.Tools
|
||||
minh -= boxDescent;
|
||||
maxh = minh + boxHeight;
|
||||
|
||||
if (polyOffset > 0.01f)
|
||||
if (polyOffset > new LFloat("",10))
|
||||
{
|
||||
LFloat[] offset = new LFloat[verts.Length * 2];
|
||||
int noffset = RcAreas.OffsetPoly(verts, hull.Count, polyOffset, offset, offset.Length);
|
||||
|
||||
+12
-12
@@ -78,8 +78,8 @@ namespace DotRecast.Recast.Toolset.Tools
|
||||
ap.height = agentHeight;
|
||||
ap.maxAcceleration = agentMaxAcceleration;
|
||||
ap.maxSpeed = agentMaxSpeed;
|
||||
ap.collisionQueryRange = ap.radius * (LFloat)12.0f;
|
||||
ap.pathOptimizationRange = ap.radius * (LFloat)30.0f;
|
||||
ap.collisionQueryRange = ap.radius * new LFloat("",12000);
|
||||
ap.pathOptimizationRange = ap.radius * new LFloat("",30000);
|
||||
ap.updateFlags = _agCfg.GetUpdateFlags();
|
||||
ap.obstacleAvoidanceType = _agCfg.obstacleAvoidanceType;
|
||||
ap.separationWeight = _agCfg.separationWeight;
|
||||
@@ -141,30 +141,30 @@ namespace DotRecast.Recast.Toolset.Tools
|
||||
_crowd = new DtCrowd(_crowdCfg, _navMesh, __ => new DtQueryDefaultFilter(
|
||||
SampleAreaModifications.SAMPLE_POLYFLAGS_ALL,
|
||||
SampleAreaModifications.SAMPLE_POLYFLAGS_DISABLED,
|
||||
new LFloat[] { (LFloat)1f, (LFloat)10f, (LFloat)1f, (LFloat)1f, (LFloat)2f, (LFloat)1.5f })
|
||||
new LFloat[] { LFloat.L1, LFloat.L10, LFloat.L1, LFloat.L1, LFloat.L2, new LFloat("",1500) })
|
||||
);
|
||||
|
||||
DtObstacleAvoidanceParams option = new DtObstacleAvoidanceParams(_crowd.GetObstacleAvoidanceParams(0));
|
||||
// Low (11)
|
||||
option.velBias = (LFloat)0.5f;
|
||||
option.velBias = LFloat.L0D5;
|
||||
option.adaptiveDivs = 5;
|
||||
option.adaptiveRings = 2;
|
||||
option.adaptiveDepth = 1;
|
||||
_crowd.SetObstacleAvoidanceParams(0, option);
|
||||
// Medium (22)
|
||||
option.velBias = (LFloat)0.5f;
|
||||
option.velBias = LFloat.L0D5;
|
||||
option.adaptiveDivs = 5;
|
||||
option.adaptiveRings = 2;
|
||||
option.adaptiveDepth = 2;
|
||||
_crowd.SetObstacleAvoidanceParams(1, option);
|
||||
// Good (45)
|
||||
option.velBias = (LFloat)0.5f;
|
||||
option.velBias = LFloat.L0D5;
|
||||
option.adaptiveDivs = 7;
|
||||
option.adaptiveRings = 2;
|
||||
option.adaptiveDepth = 3;
|
||||
_crowd.SetObstacleAvoidanceParams(2, option);
|
||||
// High (66)
|
||||
option.velBias = (LFloat)0.5f;
|
||||
option.velBias = LFloat.L0D5;
|
||||
option.adaptiveDivs = 7;
|
||||
option.adaptiveRings = 3;
|
||||
option.adaptiveDepth = 3;
|
||||
@@ -193,11 +193,11 @@ namespace DotRecast.Recast.Toolset.Tools
|
||||
{
|
||||
LFloat tr = _rand.Next();
|
||||
RcCrowdAgentType type = RcCrowdAgentType.MOB;
|
||||
LFloat mobsPcnt = _cfg.percentMobs / (LFloat)100f;
|
||||
LFloat mobsPcnt = _cfg.percentMobs / LFloat.L100;
|
||||
if (tr > mobsPcnt)
|
||||
{
|
||||
tr = _rand.Next();
|
||||
LFloat travellerPcnt = _cfg.percentTravellers / (LFloat)100f;
|
||||
LFloat travellerPcnt = _cfg.percentTravellers / LFloat.L100;
|
||||
if (tr > travellerPcnt)
|
||||
{
|
||||
type = RcCrowdAgentType.VILLAGER;
|
||||
@@ -283,7 +283,7 @@ namespace DotRecast.Recast.Toolset.Tools
|
||||
var status = navquery.FindNearestPoly(ag.npos, _crowd.GetQueryExtents(), filter, out var nearestRef, out var nearestPt, out var _);
|
||||
if (status.Succeeded())
|
||||
{
|
||||
status = navquery.FindRandomPointAroundCircle(nearestRef, crowAgentData.home, _cfg.zoneRadius * (LFloat)2f, filter, _rand,
|
||||
status = navquery.FindRandomPointAroundCircle(nearestRef, crowAgentData.home, _cfg.zoneRadius * LFloat.L2, filter, _rand,
|
||||
out var randomRef, out var randomPt);
|
||||
if (status.Succeeded())
|
||||
{
|
||||
@@ -298,7 +298,7 @@ namespace DotRecast.Recast.Toolset.Tools
|
||||
var status = navquery.FindNearestPoly(ag.npos, _crowd.GetQueryExtents(), filter, out var nearestRef, out var nearestPt, out var _);
|
||||
if (status.Succeeded())
|
||||
{
|
||||
status = navquery.FindRandomPointAroundCircle(nearestRef, crowAgentData.home, _cfg.zoneRadius * (LFloat)0.2f, filter, _rand,
|
||||
status = navquery.FindRandomPointAroundCircle(nearestRef, crowAgentData.home, _cfg.zoneRadius * LFloat.L0D2, filter, _rand,
|
||||
out var randomRef, out var randomPt);
|
||||
if (status.Succeeded())
|
||||
{
|
||||
@@ -339,7 +339,7 @@ namespace DotRecast.Recast.Toolset.Tools
|
||||
LFloat dx = ag.targetPos.X - ag.npos.X;
|
||||
LFloat dy = ag.targetPos.Y - ag.npos.Y;
|
||||
LFloat dz = ag.targetPos.Z - ag.npos.Z;
|
||||
return dx * dx + dy * dy + dz * dz < 0.3f;
|
||||
return dx * dx + dy * dy + dz * dz < LFloat.L0D3;
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
+3
-3
@@ -9,9 +9,9 @@ namespace DotRecast.Recast.Toolset.Tools
|
||||
public int agents = 1000;
|
||||
public int randomSeed = 270;
|
||||
public int numberOfZones = 4;
|
||||
public LFloat zoneRadius = (LFloat)20f;
|
||||
public LFloat percentMobs = (LFloat)80f;
|
||||
public LFloat percentTravellers = (LFloat)15f;
|
||||
public LFloat zoneRadius = LFloat.L20;
|
||||
public LFloat percentMobs = LFloat.L80;
|
||||
public LFloat percentTravellers = new("",15000);
|
||||
public int pathQueueSize = 32;
|
||||
public int maxIterations = 300;
|
||||
}
|
||||
|
||||
+8
-8
@@ -64,7 +64,7 @@ namespace DotRecast.Recast.Toolset.Tools
|
||||
crowd = new DtCrowd(config, navMesh, __ => new DtQueryDefaultFilter(
|
||||
SampleAreaModifications.SAMPLE_POLYFLAGS_ALL,
|
||||
SampleAreaModifications.SAMPLE_POLYFLAGS_DISABLED,
|
||||
new LFloat[] { (LFloat)1f, (LFloat)10f, (LFloat)1f, (LFloat)1f, (LFloat)2f, (LFloat)1.5f })
|
||||
new LFloat[] { LFloat.L1, LFloat.L10, LFloat.L1, LFloat.L1, LFloat.L2, new LFloat("",1500) })
|
||||
);
|
||||
|
||||
// Setup local avoidance option to different qualities.
|
||||
@@ -72,28 +72,28 @@ namespace DotRecast.Recast.Toolset.Tools
|
||||
DtObstacleAvoidanceParams option = new DtObstacleAvoidanceParams(crowd.GetObstacleAvoidanceParams(0));
|
||||
|
||||
// Low (11)
|
||||
option.velBias = (LFloat)0.5f;
|
||||
option.velBias = LFloat.L0D5;
|
||||
option.adaptiveDivs = 5;
|
||||
option.adaptiveRings = 2;
|
||||
option.adaptiveDepth = 1;
|
||||
crowd.SetObstacleAvoidanceParams(0, option);
|
||||
|
||||
// Medium (22)
|
||||
option.velBias = (LFloat)0.5f;
|
||||
option.velBias = LFloat.L0D5;
|
||||
option.adaptiveDivs = 5;
|
||||
option.adaptiveRings = 2;
|
||||
option.adaptiveDepth = 2;
|
||||
crowd.SetObstacleAvoidanceParams(1, option);
|
||||
|
||||
// Good (45)
|
||||
option.velBias = (LFloat)0.5f;
|
||||
option.velBias = LFloat.L0D5;
|
||||
option.adaptiveDivs = 7;
|
||||
option.adaptiveRings = 2;
|
||||
option.adaptiveDepth = 3;
|
||||
crowd.SetObstacleAvoidanceParams(2, option);
|
||||
|
||||
// High (66)
|
||||
option.velBias = (LFloat)0.5f;
|
||||
option.velBias = LFloat.L0D5;
|
||||
option.adaptiveDivs = 7;
|
||||
option.adaptiveRings = 3;
|
||||
option.adaptiveDepth = 3;
|
||||
@@ -205,8 +205,8 @@ namespace DotRecast.Recast.Toolset.Tools
|
||||
ap.height = agentHeight;
|
||||
ap.maxAcceleration = agentMaxAcceleration;
|
||||
ap.maxSpeed = agentMaxSpeed;
|
||||
ap.collisionQueryRange = ap.radius * (LFloat)12.0f;
|
||||
ap.pathOptimizationRange = ap.radius * (LFloat)30.0f;
|
||||
ap.collisionQueryRange = ap.radius * new LFloat("",12000);
|
||||
ap.pathOptimizationRange = ap.radius * new LFloat("",30000);
|
||||
ap.updateFlags = _agCfg.GetUpdateFlags();
|
||||
ap.obstacleAvoidanceType = _agCfg.obstacleAvoidanceType;
|
||||
ap.separationWeight = _agCfg.separationWeight;
|
||||
@@ -296,7 +296,7 @@ namespace DotRecast.Recast.Toolset.Tools
|
||||
private RcVec3f CalcVel(RcVec3f pos, RcVec3f tgt, LFloat speed)
|
||||
{
|
||||
RcVec3f vel = RcVec3f.Subtract(tgt, pos);
|
||||
vel.Y = (LFloat)0.0f;
|
||||
vel.Y = LFloat.L0;
|
||||
vel = RcVec3f.Normalize(vel);
|
||||
return vel.Scale(speed);
|
||||
}
|
||||
|
||||
+34
-34
@@ -62,30 +62,30 @@ namespace DotRecast.Recast.Toolset.Tools
|
||||
|
||||
private bool Hit(RcVec3f point, RcVec3f dir, LFloat[] bounds)
|
||||
{
|
||||
LFloat cx = (LFloat)0.5f * (bounds[0] + bounds[3]);
|
||||
LFloat cy = (LFloat)0.5f * (bounds[1] + bounds[4]);
|
||||
LFloat cz = (LFloat)0.5f * (bounds[2] + bounds[5]);
|
||||
LFloat dx = (LFloat)0.5f * (bounds[3] - bounds[0]);
|
||||
LFloat dy = (LFloat)0.5f * (bounds[4] - bounds[1]);
|
||||
LFloat dz = (LFloat)0.5f * (bounds[5] - bounds[2]);
|
||||
LFloat cx = LFloat.L0D5 * (bounds[0] + bounds[3]);
|
||||
LFloat cy = LFloat.L0D5 * (bounds[1] + bounds[4]);
|
||||
LFloat cz = LFloat.L0D5 * (bounds[2] + bounds[5]);
|
||||
LFloat dx = LFloat.L0D5 * (bounds[3] - bounds[0]);
|
||||
LFloat dy = LFloat.L0D5 * (bounds[4] - bounds[1]);
|
||||
LFloat dz = LFloat.L0D5 * (bounds[5] - bounds[2]);
|
||||
LFloat rSqr = dx * dx + dy * dy + dz * dz;
|
||||
LFloat mx = point.X - cx;
|
||||
LFloat my = point.Y - cy;
|
||||
LFloat mz = point.Z - cz;
|
||||
LFloat c = mx * mx + my * my + mz * mz - rSqr;
|
||||
if (c <= 0.0f)
|
||||
if (c <= LFloat.L0)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
LFloat b = mx * dir.X + my * dir.Y + mz * dir.Z;
|
||||
if (b > 0.0f)
|
||||
if (b > LFloat.L0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
LFloat disc = b * b - c;
|
||||
return disc >= 0.0f;
|
||||
return disc >= (LFloat.L0);
|
||||
}
|
||||
|
||||
|
||||
@@ -168,7 +168,7 @@ namespace DotRecast.Recast.Toolset.Tools
|
||||
|
||||
public RcGizmo SphereCollider(RcVec3f p, LFloat walkableClimb)
|
||||
{
|
||||
LFloat radius = 1 + (LFloat)random.NextDouble() * 10;
|
||||
LFloat radius = 1 + random.NextDouble() * 10;
|
||||
var collider = new DtSphereCollider(p, radius, SampleAreaModifications.SAMPLE_POLYAREA_TYPE_WATER, walkableClimb);
|
||||
var gizmo = RcGizmoFactory.Sphere(p, radius);
|
||||
|
||||
@@ -177,15 +177,15 @@ namespace DotRecast.Recast.Toolset.Tools
|
||||
|
||||
public RcGizmo CapsuleCollider(RcVec3f p, LFloat walkableClimb)
|
||||
{
|
||||
LFloat radius = (LFloat)0.4f + random.NextDouble() * (LFloat)4f;
|
||||
LFloat radius = LFloat.L0D4 + random.NextDouble() * LFloat.L4;
|
||||
RcVec3f a = new RcVec3f(
|
||||
((LFloat)1f - (LFloat)2f * random.NextDouble()),
|
||||
(LFloat)0.01f + random.NextDouble(),
|
||||
((LFloat)1f - 2 * random.NextDouble())
|
||||
(LFloat.L1 - LFloat.L2 * random.NextDouble()),
|
||||
(new LFloat("",10)) + random.NextDouble(),
|
||||
(LFloat.L1 - 2 * random.NextDouble())
|
||||
);
|
||||
a = RcVec3f.Normalize(a);
|
||||
|
||||
LFloat len = (LFloat)1f + random.NextDouble() * (LFloat)20f;
|
||||
LFloat len = LFloat.L1 + random.NextDouble() * LFloat.L20;
|
||||
a.X *= len;
|
||||
a.Y *= len;
|
||||
a.Z *= len;
|
||||
@@ -199,12 +199,12 @@ namespace DotRecast.Recast.Toolset.Tools
|
||||
public RcGizmo BoxCollider(RcVec3f p, LFloat walkableClimb)
|
||||
{
|
||||
RcVec3f extent = new RcVec3f(
|
||||
(LFloat)0.5f + random.NextDouble() * (LFloat)6f,
|
||||
(LFloat)0.5f + random.NextDouble() * (LFloat)6f,
|
||||
(LFloat)0.5f + random.NextDouble() * (LFloat)6f
|
||||
LFloat.L0D5 + random.NextDouble() * LFloat.L6,
|
||||
LFloat.L0D5 + random.NextDouble() * LFloat.L6,
|
||||
LFloat.L0D5 + random.NextDouble() * LFloat.L6
|
||||
);
|
||||
RcVec3f forward = new RcVec3f(((LFloat)1f - 2 * (LFloat)random.NextDouble()), 0, ((LFloat)1f - 2 * (LFloat)random.NextDouble()));
|
||||
RcVec3f up = new RcVec3f(((LFloat)1f - 2 * (LFloat)random.NextDouble()), (LFloat)0.01f + (LFloat)random.NextDouble(), ((LFloat)1f - 2 * (LFloat)random.NextDouble()));
|
||||
RcVec3f forward = new RcVec3f((LFloat.L1 - 2 * random.NextDouble()), 0, (LFloat.L1 - 2 * random.NextDouble()));
|
||||
RcVec3f up = new RcVec3f((LFloat.L1 - 2 * random.NextDouble()), (new LFloat("",10)) + random.NextDouble(), (LFloat.L1 - 2 * random.NextDouble()));
|
||||
RcVec3f[] halfEdges = Detour.Dynamic.Colliders.DtBoxCollider.GetHalfEdges(up, forward, extent);
|
||||
var collider = new DtBoxCollider(p, halfEdges, SampleAreaModifications.SAMPLE_POLYAREA_TYPE_WATER, walkableClimb);
|
||||
var gizmo = RcGizmoFactory.Box(p, halfEdges);
|
||||
@@ -213,10 +213,10 @@ namespace DotRecast.Recast.Toolset.Tools
|
||||
|
||||
public RcGizmo CylinderCollider(RcVec3f p, LFloat walkableClimb)
|
||||
{
|
||||
LFloat radius = (LFloat)0.7f + (LFloat)random.NextDouble() * (LFloat)4f;
|
||||
RcVec3f a = new RcVec3f((LFloat)1f - 2 * (LFloat)random.NextDouble(), (LFloat)0.01f + (LFloat)random.NextDouble(), (LFloat)1f - 2 * (LFloat)random.NextDouble());
|
||||
LFloat radius = LFloat.L0D7 + random.NextDouble() * LFloat.L4;
|
||||
RcVec3f a = new RcVec3f(LFloat.L1 - 2 * random.NextDouble(), (new LFloat("",10)) + random.NextDouble(), LFloat.L1 - 2 * random.NextDouble());
|
||||
a = RcVec3f.Normalize(a);
|
||||
LFloat len = (LFloat)2f + (LFloat)random.NextDouble() * (LFloat)20f;
|
||||
LFloat len = LFloat.L2 + random.NextDouble() * LFloat.L20;
|
||||
a.X *= len;
|
||||
a.Y *= len;
|
||||
a.Z *= len;
|
||||
@@ -233,14 +233,14 @@ namespace DotRecast.Recast.Toolset.Tools
|
||||
RcVec3f baseExtent = new RcVec3f(5, 3, 8);
|
||||
RcVec3f baseCenter = new RcVec3f(p.X, p.Y + 3, p.Z);
|
||||
RcVec3f baseUp = new RcVec3f(0, 1, 0);
|
||||
RcVec3f forward = new RcVec3f(((LFloat)1f - 2 * random.NextDouble()), 0, ((LFloat)1f - 2 * random.NextDouble()));
|
||||
RcVec3f forward = new RcVec3f((LFloat.L1 - 2 * random.NextDouble()), 0, (LFloat.L1 - 2 * random.NextDouble()));
|
||||
forward = RcVec3f.Normalize(forward);
|
||||
|
||||
RcVec3f side = RcVec3f.Cross(forward, baseUp);
|
||||
DtBoxCollider @base = new DtBoxCollider(baseCenter, Detour.Dynamic.Colliders.DtBoxCollider.GetHalfEdges(baseUp, forward, baseExtent),
|
||||
SampleAreaModifications.SAMPLE_POLYAREA_TYPE_ROAD, walkableClimb);
|
||||
var roofUp = RcVec3f.Zero;
|
||||
RcVec3f roofExtent = new RcVec3f((LFloat)4.5f, (LFloat)4.5f, (LFloat)8f);
|
||||
RcVec3f roofExtent = new RcVec3f((new LFloat("",4500)), (new LFloat("",4500)), LFloat.L8);
|
||||
var rx = RcMatrix4x4f.CreateFromRotate(45, forward.X, forward.Y, forward.Z);
|
||||
roofUp = MulMatrixVector(ref roofUp, rx, baseUp);
|
||||
RcVec3f roofCenter = new RcVec3f(p.X, p.Y + 6, p.Z);
|
||||
@@ -252,19 +252,19 @@ namespace DotRecast.Recast.Toolset.Tools
|
||||
baseCenter.Z - forward.Z * 15 + side.Z * 6
|
||||
);
|
||||
RcVec3f trunkEnd = new RcVec3f(trunkStart.X, trunkStart.Y + 10, trunkStart.Z);
|
||||
DtCapsuleCollider trunk = new DtCapsuleCollider(trunkStart, trunkEnd, (LFloat)0.5f, SampleAreaModifications.SAMPLE_POLYAREA_TYPE_ROAD,
|
||||
DtCapsuleCollider trunk = new DtCapsuleCollider(trunkStart, trunkEnd, LFloat.L0D5, SampleAreaModifications.SAMPLE_POLYAREA_TYPE_ROAD,
|
||||
walkableClimb);
|
||||
RcVec3f crownCenter = new RcVec3f(
|
||||
baseCenter.X - forward.X * 15 + side.X * 6, p.Y + 10,
|
||||
baseCenter.Z - forward.Z * 15 + side.Z * 6
|
||||
);
|
||||
DtSphereCollider crown = new DtSphereCollider(crownCenter, (LFloat)4f, SampleAreaModifications.SAMPLE_POLYAREA_TYPE_GRASS,
|
||||
DtSphereCollider crown = new DtSphereCollider(crownCenter, LFloat.L4, SampleAreaModifications.SAMPLE_POLYAREA_TYPE_GRASS,
|
||||
walkableClimb);
|
||||
DtCompositeCollider collider = new DtCompositeCollider(@base, roof, trunk, crown);
|
||||
IRcGizmoMeshFilter baseGizmo = RcGizmoFactory.Box(baseCenter, Detour.Dynamic.Colliders.DtBoxCollider.GetHalfEdges(baseUp, forward, baseExtent));
|
||||
IRcGizmoMeshFilter roofGizmo = RcGizmoFactory.Box(roofCenter, Detour.Dynamic.Colliders.DtBoxCollider.GetHalfEdges(roofUp, forward, roofExtent));
|
||||
IRcGizmoMeshFilter trunkGizmo = RcGizmoFactory.Capsule(trunkStart, trunkEnd, (LFloat)0.5f);
|
||||
IRcGizmoMeshFilter crownGizmo = RcGizmoFactory.Sphere(crownCenter, (LFloat)4f);
|
||||
IRcGizmoMeshFilter trunkGizmo = RcGizmoFactory.Capsule(trunkStart, trunkEnd, LFloat.L0D5);
|
||||
IRcGizmoMeshFilter crownGizmo = RcGizmoFactory.Sphere(crownCenter, LFloat.L4);
|
||||
IRcGizmoMeshFilter gizmo = RcGizmoFactory.Composite(baseGizmo, roofGizmo, trunkGizmo, crownGizmo);
|
||||
return new RcGizmo(collider, gizmo);
|
||||
}
|
||||
@@ -300,8 +300,8 @@ namespace DotRecast.Recast.Toolset.Tools
|
||||
|
||||
private LFloat[] TransformVertices(RcVec3f p, DemoInputGeomProvider geom, LFloat ax)
|
||||
{
|
||||
var rx = RcMatrix4x4f.CreateFromRotate((LFloat)random.NextDouble() * ax, 1, 0, 0);
|
||||
var ry = RcMatrix4x4f.CreateFromRotate((LFloat)random.NextDouble() * 360, 0, 1, 0);
|
||||
var rx = RcMatrix4x4f.CreateFromRotate(random.NextDouble() * ax, 1, 0, 0);
|
||||
var ry = RcMatrix4x4f.CreateFromRotate(random.NextDouble() * 360, 0, 1, 0);
|
||||
var m = RcMatrix4x4f.Mul(ref rx, ref ry);
|
||||
LFloat[] verts = new LFloat[geom.vertices.Length];
|
||||
RcVec3f v = new RcVec3f();
|
||||
@@ -313,7 +313,7 @@ namespace DotRecast.Recast.Toolset.Tools
|
||||
v.Z = geom.vertices[i + 2];
|
||||
MulMatrixVector(ref vr, m, v);
|
||||
vr.X += p.X;
|
||||
vr.Y += p.Y - (LFloat)0.1f;
|
||||
vr.Y += p.Y - LFloat.L0D1;
|
||||
vr.Z += p.Z;
|
||||
verts[i] = vr.X;
|
||||
verts[i + 1] = vr.Y;
|
||||
@@ -351,8 +351,8 @@ namespace DotRecast.Recast.Toolset.Tools
|
||||
|
||||
public bool Raycast(RcVec3f spos, RcVec3f epos, out LFloat hitPos, out RcVec3f raycastHitPos)
|
||||
{
|
||||
RcVec3f sp = new RcVec3f(spos.X, spos.Y + (LFloat)1.3f, spos.Z);
|
||||
RcVec3f ep = new RcVec3f(epos.X, epos.Y + (LFloat)1.3f, epos.Z);
|
||||
RcVec3f sp = new RcVec3f(spos.X, spos.Y + (new LFloat("",1300)), spos.Z);
|
||||
RcVec3f ep = new RcVec3f(epos.X, epos.Y + (new LFloat("",1300)), epos.Z);
|
||||
|
||||
bool hasHit = dynaMesh.VoxelQuery().Raycast(sp, ep, out hitPos);
|
||||
raycastHitPos = hasHit
|
||||
|
||||
+2
-2
@@ -72,7 +72,7 @@ namespace DotRecast.Recast.Toolset.Tools
|
||||
agentHeight,
|
||||
agentClimb,
|
||||
cfg.groundTolerance,
|
||||
-agentRadius * (LFloat)0.2f,
|
||||
-agentRadius * LFloat.L0D2,
|
||||
cellSize + 2 * agentRadius + cfg.climbDownDistance,
|
||||
-cfg.climbDownMaxHeight,
|
||||
-cfg.climbDownMinHeight,
|
||||
@@ -90,7 +90,7 @@ namespace DotRecast.Recast.Toolset.Tools
|
||||
agentHeight,
|
||||
agentClimb,
|
||||
cfg.groundTolerance,
|
||||
-agentRadius * (LFloat)0.2f,
|
||||
-agentRadius * LFloat.L0D2,
|
||||
cfg.edgeJumpEndDistance,
|
||||
-cfg.edgeJumpDownMaxHeight,
|
||||
cfg.edgeJumpUpMaxHeight,
|
||||
|
||||
+8
-8
@@ -26,13 +26,13 @@ namespace DotRecast.Recast.Toolset.Tools
|
||||
public int buildTypes = JumpLinkType.EDGE_CLIMB_DOWN.Bit | JumpLinkType.EDGE_JUMP.Bit;
|
||||
public bool buildOffMeshConnections = false;
|
||||
|
||||
public LFloat groundTolerance = (LFloat)0.3f;
|
||||
public LFloat climbDownDistance = (LFloat)0.4f;
|
||||
public LFloat climbDownMaxHeight = (LFloat)3.2f;
|
||||
public LFloat climbDownMinHeight = (LFloat)1.5f;
|
||||
public LFloat edgeJumpEndDistance = (LFloat)2f;
|
||||
public LFloat edgeJumpHeight = (LFloat)0.4f;
|
||||
public LFloat edgeJumpDownMaxHeight = (LFloat)2.5f;
|
||||
public LFloat edgeJumpUpMaxHeight = (LFloat)0.3f;
|
||||
public LFloat groundTolerance = LFloat.L0D3;
|
||||
public LFloat climbDownDistance = LFloat.L0D4;
|
||||
public LFloat climbDownMaxHeight = new("",3200);
|
||||
public LFloat climbDownMinHeight = new("",1500);
|
||||
public LFloat edgeJumpEndDistance = LFloat.L2;
|
||||
public LFloat edgeJumpHeight = LFloat.L0D4;
|
||||
public LFloat edgeJumpDownMaxHeight = new("",2500);
|
||||
public LFloat edgeJumpUpMaxHeight = LFloat.L0D3;
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -111,8 +111,8 @@ namespace DotRecast.Recast.Toolset.Tools
|
||||
if (null == _tc)
|
||||
return 0;
|
||||
|
||||
p.Y -= (LFloat)0.5f;
|
||||
return _tc.AddObstacle(p, (LFloat)1.0f, (LFloat)2.0f);
|
||||
p.Y -= LFloat.L0D5;
|
||||
return _tc.AddObstacle(p, LFloat.L1, LFloat.L2);
|
||||
}
|
||||
|
||||
public DtTileCache GetTileCache()
|
||||
|
||||
+12
-12
@@ -52,8 +52,8 @@ namespace DotRecast.Recast.Toolset.Tools
|
||||
navQuery.ClosestPointOnPoly(startRef, startPt, out var iterPos, out var _);
|
||||
navQuery.ClosestPointOnPoly(pathIterPolys[pathIterPolys.Count - 1], endPt, out var targetPos, out var _);
|
||||
|
||||
LFloat STEP_SIZE = (LFloat)0.5f;
|
||||
LFloat SLOP = (LFloat)0.01f;
|
||||
LFloat STEP_SIZE = LFloat.L0D5;
|
||||
LFloat SLOP = new LFloat("",10);
|
||||
|
||||
smoothPath.Clear();
|
||||
smoothPath.Add(iterPos);
|
||||
@@ -110,7 +110,7 @@ namespace DotRecast.Recast.Toolset.Tools
|
||||
}
|
||||
|
||||
// Handle end of path and off-mesh links when close enough.
|
||||
if (endOfPath && DtPathUtils.InRange(iterPos, steerPos, SLOP, (LFloat)1.0f))
|
||||
if (endOfPath && DtPathUtils.InRange(iterPos, steerPos, SLOP, LFloat.L1))
|
||||
{
|
||||
// Reached end of path.
|
||||
iterPos = targetPos;
|
||||
@@ -121,7 +121,7 @@ namespace DotRecast.Recast.Toolset.Tools
|
||||
|
||||
break;
|
||||
}
|
||||
else if (offMeshConnection && DtPathUtils.InRange(iterPos, steerPos, SLOP, (LFloat)1.0f))
|
||||
else if (offMeshConnection && DtPathUtils.InRange(iterPos, steerPos, SLOP, LFloat.L1))
|
||||
{
|
||||
// Reached off-mesh connection.
|
||||
RcVec3f startPos = RcVec3f.Zero;
|
||||
@@ -383,21 +383,21 @@ namespace DotRecast.Recast.Toolset.Tools
|
||||
return DtStatus.DT_FAILURE;
|
||||
}
|
||||
|
||||
LFloat nx = (epos.Z - spos.Z) * (LFloat)0.25f;
|
||||
LFloat nz = -(epos.X - spos.X) * (LFloat)0.25f;
|
||||
LFloat nx = (epos.Z - spos.Z) * new LFloat("",250);
|
||||
LFloat nz = -(epos.X - spos.X) * new LFloat("",250);
|
||||
|
||||
var tempQueryPoly = new RcVec3f[4];
|
||||
tempQueryPoly[0].X = spos.X + nx * (LFloat)1.2f;
|
||||
tempQueryPoly[0].X = spos.X + nx * (new LFloat("",1200));
|
||||
tempQueryPoly[0].Y = spos.Y + agentHeight / 2;
|
||||
tempQueryPoly[0].Z = spos.Z + nz * (LFloat)1.2f;
|
||||
tempQueryPoly[0].Z = spos.Z + nz * (new LFloat("",1200));
|
||||
|
||||
tempQueryPoly[1].X = spos.X - nx * (LFloat)1.3f;
|
||||
tempQueryPoly[1].X = spos.X - nx * (new LFloat("",1300));
|
||||
tempQueryPoly[1].Y = spos.Y + agentHeight / 2;
|
||||
tempQueryPoly[1].Z = spos.Z - nz * (LFloat)1.3f;
|
||||
tempQueryPoly[1].Z = spos.Z - nz * (new LFloat("",1300));
|
||||
|
||||
tempQueryPoly[2].X = epos.X - nx * (LFloat)0.8f;
|
||||
tempQueryPoly[2].X = epos.X - nx * LFloat.L0D8;
|
||||
tempQueryPoly[2].Y = epos.Y + agentHeight / 2;
|
||||
tempQueryPoly[2].Z = epos.Z - nz * (LFloat)0.8f;
|
||||
tempQueryPoly[2].Z = epos.Z - nz * LFloat.L0D8;
|
||||
|
||||
tempQueryPoly[3].X = epos.X + nx;
|
||||
tempQueryPoly[3].Y = epos.Y + agentHeight / 2;
|
||||
|
||||
+3
-3
@@ -80,7 +80,7 @@ namespace DotRecast.Recast.Geom
|
||||
LFloat d = LMath.Sqrt(normals[i] * normals[i] + normals[i + 1] * normals[i + 1] + normals[i + 2] * normals[i + 2]);
|
||||
if (d > 0)
|
||||
{
|
||||
d = (LFloat)1.0f / d;
|
||||
d = LFloat.L1 / d;
|
||||
normals[i] *= d;
|
||||
normals[i + 1] *= d;
|
||||
normals[i + 2] *= d;
|
||||
@@ -116,7 +116,7 @@ namespace DotRecast.Recast.Geom
|
||||
|
||||
public bool RaycastMesh(RcVec3f src, RcVec3f dst, out LFloat tmin)
|
||||
{
|
||||
tmin = (LFloat)1.0f;
|
||||
tmin = LFloat.L1;
|
||||
|
||||
// Prune hit ray.
|
||||
if (!RcIntersections.IsectSegAABB(src, dst, bmin, bmax, out var btmin, out var btmax))
|
||||
@@ -137,7 +137,7 @@ namespace DotRecast.Recast.Geom
|
||||
return false;
|
||||
}
|
||||
|
||||
tmin = (LFloat)1.0f;
|
||||
tmin = LFloat.L1;
|
||||
bool hit = false;
|
||||
foreach (RcChunkyTriMeshNode chunk in chunks)
|
||||
{
|
||||
|
||||
+1
-1
@@ -273,7 +273,7 @@ namespace DotRecast.Recast.Geom
|
||||
else
|
||||
{
|
||||
// Compute intersection t value of ray with near and far plane of slab
|
||||
LFloat ood = (LFloat)1.0f / d.Get(i);
|
||||
LFloat ood = LFloat.L1 / d.Get(i);
|
||||
LFloat t1 = (bmin.Get(i) - p.Get(i)) * ood;
|
||||
LFloat t2 = (bmax.Get(i) - p.Get(i)) * ood;
|
||||
if (t1 > t2)
|
||||
|
||||
+1
-1
@@ -167,7 +167,7 @@ namespace DotRecast.Recast.Geom
|
||||
LFloat d = LMath.Sqrt(normals[i] * normals[i] + normals[i + 1] * normals[i + 1] + normals[i + 2] * normals[i + 2]);
|
||||
if (d > 0)
|
||||
{
|
||||
d = (LFloat)1.0f / d;
|
||||
d = LFloat.L1 / d;
|
||||
normals[i] *= d;
|
||||
normals[i + 1] *= d;
|
||||
normals[i + 2] *= d;
|
||||
|
||||
+11
-11
@@ -541,9 +541,9 @@ namespace DotRecast.Recast
|
||||
}
|
||||
|
||||
RcVec3f point = new RcVec3f(
|
||||
compactHeightfield.bmin.X + (x + (LFloat)0.5f) * compactHeightfield.cs,
|
||||
compactHeightfield.bmin.X + (x + LFloat.L0D5) * compactHeightfield.cs,
|
||||
0,
|
||||
compactHeightfield.bmin.Z + (z + (LFloat)0.5f) * compactHeightfield.cs
|
||||
compactHeightfield.bmin.Z + (z + LFloat.L0D5) * compactHeightfield.cs
|
||||
);
|
||||
|
||||
if (PointInPoly(verts, point))
|
||||
@@ -648,8 +648,8 @@ namespace DotRecast.Recast
|
||||
ref RcCompactCell cell = ref compactHeightfield.cells[x + z * zStride];
|
||||
int maxSpanIndex = cell.index + cell.count;
|
||||
|
||||
LFloat cellX = compactHeightfield.bmin.X + ((LFloat)x + (LFloat)0.5f) * compactHeightfield.cs;
|
||||
LFloat cellZ = compactHeightfield.bmin.Z + ((LFloat)z + (LFloat)0.5f) * compactHeightfield.cs;
|
||||
LFloat cellX = compactHeightfield.bmin.X + (x.ToLFloat() + LFloat.L0D5) * compactHeightfield.cs;
|
||||
LFloat cellZ = compactHeightfield.bmin.Z + (z.ToLFloat() + LFloat.L0D5) * compactHeightfield.cs;
|
||||
LFloat deltaX = cellX - position[0];
|
||||
LFloat deltaZ = cellZ - position[2];
|
||||
|
||||
@@ -744,7 +744,7 @@ namespace DotRecast.Recast
|
||||
{
|
||||
// Defines the limit at which a miter becomes a bevel.
|
||||
// Similar in behavior to https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-miterlimit
|
||||
LFloat MITER_LIMIT = (LFloat)1.20f;
|
||||
LFloat MITER_LIMIT = new LFloat("",1200);
|
||||
|
||||
int numOutVerts = 0;
|
||||
|
||||
@@ -784,23 +784,23 @@ namespace DotRecast.Recast
|
||||
// Average the two segment normals to get the proportional miter offset for B.
|
||||
// This isn't normalized because it's defining the distance and direction the corner will need to be
|
||||
// adjusted proportionally to the edge offsets to properly miter the adjoining edges.
|
||||
LFloat cornerMiterX = (prevSegmentNormX + currSegmentNormX) * (LFloat)0.5f;
|
||||
LFloat cornerMiterZ = (prevSegmentNormZ + currSegmentNormZ) * (LFloat)0.5f;
|
||||
LFloat cornerMiterX = (prevSegmentNormX + currSegmentNormX) * LFloat.L0D5;
|
||||
LFloat cornerMiterZ = (prevSegmentNormZ + currSegmentNormZ) * LFloat.L0D5;
|
||||
LFloat cornerMiterSqMag = RcMath.Sqr(cornerMiterX) + RcMath.Sqr(cornerMiterZ);
|
||||
|
||||
// If the magnitude of the segment normal average is less than about .69444,
|
||||
// the corner is an acute enough angle that the result should be beveled.
|
||||
bool bevel = cornerMiterSqMag * MITER_LIMIT * MITER_LIMIT < 1.0f;
|
||||
bool bevel = cornerMiterSqMag * MITER_LIMIT * MITER_LIMIT < LFloat.L1;
|
||||
|
||||
// Scale the corner miter so it's proportional to how much the corner should be offset compared to the edges.
|
||||
if (cornerMiterSqMag > RcVecUtils.Epsilon)
|
||||
{
|
||||
LFloat scale = (LFloat)1.0f / cornerMiterSqMag;
|
||||
LFloat scale = LFloat.L1 / cornerMiterSqMag;
|
||||
cornerMiterX *= scale;
|
||||
cornerMiterZ *= scale;
|
||||
}
|
||||
|
||||
if (bevel && cross < 0.0f) // If the corner is convex and an acute enough angle, generate a bevel.
|
||||
if (bevel && cross < (LFloat.L0)) // If the corner is convex and an acute enough angle, generate a bevel.
|
||||
{
|
||||
if (numOutVerts + 2 > maxOutVerts)
|
||||
{
|
||||
@@ -809,7 +809,7 @@ namespace DotRecast.Recast
|
||||
|
||||
// Generate two bevel vertices at a distances from B proportional to the angle between the two segments.
|
||||
// Move each bevel vertex out proportional to the given offset.
|
||||
LFloat d = ((LFloat)1.0f - (prevSegmentDir.X * currSegmentDir.X + prevSegmentDir.Z * currSegmentDir.Z)) * (LFloat)0.5f;
|
||||
LFloat d = (LFloat.L1 - (prevSegmentDir.X * currSegmentDir.X + prevSegmentDir.Z * currSegmentDir.Z)) * LFloat.L0D5;
|
||||
|
||||
outVerts[numOutVerts * 3 + 0] = vertB.X + (-prevSegmentNormX + prevSegmentDir.X * d) * offset;
|
||||
outVerts[numOutVerts * 3 + 1] = vertB.Y;
|
||||
|
||||
+4
-4
@@ -101,8 +101,8 @@ namespace DotRecast.Recast
|
||||
|
||||
public static void CalcGridSize(RcVec3f bmin, RcVec3f bmax, LFloat cs, out int sizeX, out int sizeZ)
|
||||
{
|
||||
sizeX = (int)((bmax.X - bmin.X) / cs + 0.5f);
|
||||
sizeZ = (int)((bmax.Z - bmin.Z) / cs + 0.5f);
|
||||
sizeX = (int)((bmax.X - bmin.X) / cs + LFloat.L0D5);
|
||||
sizeZ = (int)((bmax.Z - bmin.Z) / cs + LFloat.L0D5);
|
||||
}
|
||||
|
||||
|
||||
@@ -123,7 +123,7 @@ namespace DotRecast.Recast
|
||||
public static int[] MarkWalkableTriangles(RcContext ctx, LFloat walkableSlopeAngle, LFloat[] verts, int[] tris, int nt, RcAreaModification areaMod)
|
||||
{
|
||||
int[] areas = new int[nt];
|
||||
LFloat walkableThr = LMath.Cos(walkableSlopeAngle / (LFloat)180.0f * LMath.PI);
|
||||
LFloat walkableThr = LMath.Cos(walkableSlopeAngle / LFloat.L180 * LMath.PI);
|
||||
RcVec3f norm = new RcVec3f();
|
||||
for (int i = 0; i < nt; ++i)
|
||||
{
|
||||
@@ -156,7 +156,7 @@ namespace DotRecast.Recast
|
||||
/// @see rcHeightfield, rcClearUnwalkableTriangles, rcRasterizeTriangles
|
||||
public static void ClearUnwalkableTriangles(RcContext ctx, LFloat walkableSlopeAngle, LFloat[] verts, int nv, int[] tris, int nt, int[] areas)
|
||||
{
|
||||
LFloat walkableThr = LMath.Cos(walkableSlopeAngle / (LFloat)180.0f * LMath.PI);
|
||||
LFloat walkableThr = LMath.Cos(walkableSlopeAngle / LFloat.L180 * LMath.PI);
|
||||
|
||||
RcVec3f norm = new RcVec3f();
|
||||
|
||||
|
||||
+1
-1
@@ -175,7 +175,7 @@ namespace DotRecast.Recast
|
||||
MaxEdgeLenWorld = edgeMaxLen;
|
||||
MaxSimplificationError = edgeMaxError;
|
||||
MaxVertsPerPoly = vertsPerPoly;
|
||||
DetailSampleDist = detailSampleDist < 0.9f ? 0 : cellSize * detailSampleDist;
|
||||
DetailSampleDist = detailSampleDist < LFloat.L0D9 ? 0 : cellSize * detailSampleDist;
|
||||
DetailSampleMaxError = cellHeight * detailSampleMaxError;
|
||||
WalkableAreaMod = walkableAreaMod;
|
||||
FilterLowHangingObstacles = filterLowHangingObstacles;
|
||||
|
||||
+27
-27
@@ -28,7 +28,7 @@ namespace DotRecast.Recast
|
||||
{
|
||||
public static class RcFilledVolumeRasterization
|
||||
{
|
||||
private static LFloat EPSILON = (LFloat)0.0001f;
|
||||
private static LFloat EPSILON = LFloat.EPS_1MS;
|
||||
private static readonly int[] BOX_EDGES = new[] { 0, 1, 0, 2, 0, 4, 1, 3, 1, 5, 2, 3, 2, 6, 3, 7, 4, 5, 4, 6, 5, 7, 6, 7 };
|
||||
|
||||
public static void RasterizeSphere(RcHeightfield hf, RcVec3f center, LFloat radius, int area, int flagMergeThr, RcContext ctx)
|
||||
@@ -92,9 +92,9 @@ namespace DotRecast.Recast
|
||||
};
|
||||
for (int i = 0; i < 8; ++i)
|
||||
{
|
||||
LFloat s0 = (i & 1) != 0 ? (LFloat)1f : -(LFloat)1f;
|
||||
LFloat s1 = (i & 2) != 0 ? (LFloat)1f : -(LFloat)1f;
|
||||
LFloat s2 = (i & 4) != 0 ? (LFloat)1f : -(LFloat)1f;
|
||||
LFloat s0 = (i & 1) != 0 ? LFloat.L1 : -LFloat.L1;
|
||||
LFloat s1 = (i & 2) != 0 ? LFloat.L1 : -LFloat.L1;
|
||||
LFloat s2 = (i & 4) != 0 ? LFloat.L1 : -LFloat.L1;
|
||||
vertices[i * 3 + 0] = center.X + s0 * halfEdges[0].X + s1 * halfEdges[1].X + s2 * halfEdges[2].X;
|
||||
vertices[i * 3 + 1] = center.Y + s0 * halfEdges[0].Y + s1 * halfEdges[1].Y + s2 * halfEdges[2].Y;
|
||||
vertices[i * 3 + 2] = center.Z + s0 * halfEdges[0].Z + s1 * halfEdges[1].Z + s2 * halfEdges[2].Z;
|
||||
@@ -151,14 +151,14 @@ namespace DotRecast.Recast
|
||||
Plane(planes, i + 1, planes[i], bc, vertices, b);
|
||||
Plane(planes, i + 2, planes[i], ca, vertices, c);
|
||||
|
||||
LFloat s = (LFloat)1.0f / (vertices[a] * planes[i + 1][0] + vertices[a + 1] * planes[i + 1][1]
|
||||
LFloat s = LFloat.L1 / (vertices[a] * planes[i + 1][0] + vertices[a + 1] * planes[i + 1][1]
|
||||
+ vertices[a + 2] * planes[i + 1][2] - planes[i + 1][3]);
|
||||
planes[i + 1][0] *= s;
|
||||
planes[i + 1][1] *= s;
|
||||
planes[i + 1][2] *= s;
|
||||
planes[i + 1][3] *= s;
|
||||
|
||||
s = (LFloat)1.0f / (vertices[b] * planes[i + 2][0] + vertices[b + 1] * planes[i + 2][1] + vertices[b + 2] * planes[i + 2][2]
|
||||
s = LFloat.L1 / (vertices[b] * planes[i + 2][0] + vertices[b + 1] * planes[i + 2][1] + vertices[b + 2] * planes[i + 2][2]
|
||||
- planes[i + 2][3]);
|
||||
planes[i + 2][0] *= s;
|
||||
planes[i + 2][1] *= s;
|
||||
@@ -199,8 +199,8 @@ namespace DotRecast.Recast
|
||||
return;
|
||||
}
|
||||
|
||||
LFloat ics = (LFloat)1.0f / hf.cs;
|
||||
LFloat ich = (LFloat)1.0f / hf.ch;
|
||||
LFloat ics = LFloat.L1 / hf.cs;
|
||||
LFloat ich = LFloat.L1 / hf.ch;
|
||||
int xMin = (int)((bounds[0] - hf.bmin.X) * ics);
|
||||
int zMin = (int)((bounds[2] - hf.bmin.Z) * ics);
|
||||
int xMax = LMath.Min(hf.width - 1, (int)((bounds[3] - hf.bmin.X) * ics));
|
||||
@@ -243,13 +243,13 @@ namespace DotRecast.Recast
|
||||
|
||||
LFloat b = my; // Dot(m, d) d = (0, 1, 0)
|
||||
LFloat c = LenSqr(mx, my, mz) - radiusSqr;
|
||||
if (c > 0.0f && b > 0.0f)
|
||||
if (c > (LFloat.L0) && b > (LFloat.L0))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
LFloat discr = b * b - c;
|
||||
if (discr < 0.0f)
|
||||
if (discr < (LFloat.L0))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
@@ -258,9 +258,9 @@ namespace DotRecast.Recast
|
||||
LFloat tmin = -b - discrSqrt;
|
||||
LFloat tmax = -b + discrSqrt;
|
||||
|
||||
if (tmin < 0.0f)
|
||||
if (tmin < (LFloat.L0))
|
||||
{
|
||||
tmin = (LFloat)0.0f;
|
||||
tmin = LFloat.L0;
|
||||
}
|
||||
|
||||
return new LFloat[] { y + tmin, y + tmax };
|
||||
@@ -437,7 +437,7 @@ namespace DotRecast.Recast
|
||||
if (LMath.Abs(a) < EPSILON)
|
||||
{
|
||||
// Segment runs parallel to cylinder axis
|
||||
if (c > 0.0f)
|
||||
if (c > (LFloat.L0))
|
||||
{
|
||||
return null; // ’a’ and thus the segment lie outside cylinder
|
||||
}
|
||||
@@ -450,7 +450,7 @@ namespace DotRecast.Recast
|
||||
|
||||
LFloat b = dd * mn - nd * md;
|
||||
LFloat discr = b * b - a * c;
|
||||
if (discr < 0.0f)
|
||||
if (discr < (LFloat.L0))
|
||||
{
|
||||
return null; // No real roots; no intersection
|
||||
}
|
||||
@@ -459,11 +459,11 @@ namespace DotRecast.Recast
|
||||
LFloat t1 = (-b - discSqrt) / a;
|
||||
LFloat t2 = (-b + discSqrt) / a;
|
||||
|
||||
if (md + t1 * nd < 0.0f)
|
||||
if (md + t1 * nd < (LFloat.L0))
|
||||
{
|
||||
// Intersection outside cylinder on ’p’ side
|
||||
t1 = -md / nd;
|
||||
if (k + t1 * (2 * mn + t1 * nn) > 0.0f)
|
||||
if (k + t1 * (2 * mn + t1 * nn) > (LFloat.L0))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
@@ -472,17 +472,17 @@ namespace DotRecast.Recast
|
||||
{
|
||||
// Intersection outside cylinder on ’q’ side
|
||||
t1 = (dd - md) / nd;
|
||||
if (k + dd - 2 * md + t1 * (2 * (mn - nd) + t1 * nn) > 0.0f)
|
||||
if (k + dd - 2 * md + t1 * (2 * (mn - nd) + t1 * nn) > (LFloat.L0))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
if (md + t2 * nd < 0.0f)
|
||||
if (md + t2 * nd < (LFloat.L0))
|
||||
{
|
||||
// Intersection outside cylinder on ’p’ side
|
||||
t2 = -md / nd;
|
||||
if (k + t2 * (2 * mn + t2 * nn) > 0.0f)
|
||||
if (k + t2 * (2 * mn + t2 * nn) > (LFloat.L0))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
@@ -491,7 +491,7 @@ namespace DotRecast.Recast
|
||||
{
|
||||
// Intersection outside cylinder on ’q’ side
|
||||
t2 = (dd - md) / nd;
|
||||
if (k + dd - 2 * md + t2 * (2 * (mn - nd) + t2 * nn) > 0.0f)
|
||||
if (k + dd - 2 * md + t2 * (2 * (mn - nd) + t2 * nn) > (LFloat.L0))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
@@ -705,7 +705,7 @@ namespace DotRecast.Recast
|
||||
}
|
||||
}
|
||||
|
||||
iy = (LFloat)0.0f;
|
||||
iy = LFloat.L0;
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -723,29 +723,29 @@ namespace DotRecast.Recast
|
||||
}
|
||||
}
|
||||
|
||||
iy = (LFloat)0.0f;
|
||||
iy = LFloat.L0;
|
||||
return false;
|
||||
}
|
||||
|
||||
private static bool RayTriangleIntersection(RcVec3f point, int plane, LFloat[][] planes, out LFloat y)
|
||||
{
|
||||
y = (LFloat)0.0f;
|
||||
y = LFloat.L0;
|
||||
LFloat t = (planes[plane][3] - RcVecUtils.Dot(planes[plane], point)) / planes[plane][1];
|
||||
LFloat[] s = { point.X, point.Y + t, point.Z };
|
||||
LFloat u = RcVecUtils.Dot(s, planes[plane + 1]) - planes[plane + 1][3];
|
||||
if (u < 0.0f || u > 1.0f)
|
||||
if (u < (LFloat.L0) || u > LFloat.L1)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
LFloat v = RcVecUtils.Dot(s, planes[plane + 2]) - planes[plane + 2][3];
|
||||
if (v < 0.0f)
|
||||
if (v < (LFloat.L0))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
LFloat w = (LFloat)1f - u - v;
|
||||
if (w < 0.0f)
|
||||
LFloat w = LFloat.L1 - u - v;
|
||||
if (w < (LFloat.L0))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
+1
-1
@@ -551,7 +551,7 @@ namespace DotRecast.Recast
|
||||
// Update height so that it matches on both sides of the portal.
|
||||
ref RcCompactSpan @as = ref chf.spans[ai];
|
||||
if (@as.y > hmin)
|
||||
layer.heights[idx] = LMath.Max(layer.heights[idx], (LFloat)(char)(@as.y - hmin));
|
||||
layer.heights[idx] = LMath.Max(layer.heights[idx], (@as.y - hmin).ToLFloat());
|
||||
}
|
||||
|
||||
// Valid connection mask
|
||||
|
||||
+16
-16
@@ -180,7 +180,7 @@ namespace DotRecast.Recast
|
||||
}
|
||||
|
||||
c = RcVecUtils.Create(verts, p1);
|
||||
r.Exchange((LFloat)0f);
|
||||
r.Exchange(LFloat.L0);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -197,7 +197,7 @@ namespace DotRecast.Recast
|
||||
LFloat dot12 = Vdot2(v1, v2);
|
||||
|
||||
// Compute barycentric coordinates
|
||||
LFloat invDenom = (LFloat)1.0f / (dot00 * dot11 - dot01 * dot01);
|
||||
LFloat invDenom = LFloat.L1 / (dot00 * dot11 - dot01 * dot01);
|
||||
LFloat u = (dot11 * dot02 - dot01 * dot12) * invDenom;
|
||||
LFloat v = (dot00 * dot12 - dot01 * dot02) * invDenom;
|
||||
|
||||
@@ -346,8 +346,8 @@ namespace DotRecast.Recast
|
||||
private static int GetHeight(LFloat fx, LFloat fy, LFloat fz, LFloat cs, LFloat ics, LFloat ch, int radius,
|
||||
RcHeightPatch hp)
|
||||
{
|
||||
int ix = (int)LMath.Floor(fx * ics + (LFloat)0.01f);
|
||||
int iz = (int)LMath.Floor(fz * ics + (LFloat)0.01f);
|
||||
int ix = (int)LMath.Floor(fx * ics + (new LFloat("",10)));
|
||||
int iz = (int)LMath.Floor(fz * ics + (new LFloat("",10)));
|
||||
ix = LMath.Clamp(ix - hp.xmin, 0, hp.width - 1);
|
||||
iz = LMath.Clamp(iz - hp.ymin, 0, hp.height - 1);
|
||||
int h = hp.data[ix + iz * hp.width];
|
||||
@@ -474,11 +474,11 @@ namespace DotRecast.Recast
|
||||
{
|
||||
LFloat a1 = Vcross2(verts, a, b, d);
|
||||
LFloat a2 = Vcross2(verts, a, b, c);
|
||||
if (a1 * a2 < 0.0f)
|
||||
if (a1 * a2 < (LFloat.L0))
|
||||
{
|
||||
LFloat a3 = Vcross2(verts, c, d, a);
|
||||
LFloat a4 = a3 + a2 - a1;
|
||||
if (a3 * a4 < 0.0f)
|
||||
if (a3 * a4 < (LFloat.L0))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
@@ -535,7 +535,7 @@ namespace DotRecast.Recast
|
||||
// Find best point on left of edge.
|
||||
int pt = npts;
|
||||
RcVec3f c = new RcVec3f();
|
||||
RcAtomicFloat r = new RcAtomicFloat(-(LFloat)1f);
|
||||
RcAtomicFloat r = new RcAtomicFloat(-LFloat.L1);
|
||||
for (int u = 0; u < npts; ++u)
|
||||
{
|
||||
if (u == s || u == t)
|
||||
@@ -554,7 +554,7 @@ namespace DotRecast.Recast
|
||||
}
|
||||
|
||||
LFloat d = Vdist2(c, pts, u * 3);
|
||||
LFloat tol = (LFloat)0.001f;
|
||||
LFloat tol = LFloat.EPS_1MS;
|
||||
if (d > r.Get() * (1 + tol))
|
||||
{
|
||||
// Outside current circumcircle, skip.
|
||||
@@ -821,12 +821,12 @@ namespace DotRecast.Recast
|
||||
|
||||
private static LFloat GetJitterX(int i)
|
||||
{
|
||||
return (((i * 0x8da6b343) & 0xffff) / (LFloat)65535.0f * (LFloat)2.0f) - (LFloat)1.0f;
|
||||
return (((i * 0x8da6b343) & 0xffff) / 65535.ToLFloat() * LFloat.L2) - LFloat.L1;
|
||||
}
|
||||
|
||||
private static LFloat GetJitterY(int i)
|
||||
{
|
||||
return (((i * 0xd8163841) & 0xffff) / (LFloat)65535.0f * (LFloat)2.0f) - (LFloat)1.0f;
|
||||
return (((i * 0xd8163841) & 0xffff) / 65535.ToLFloat() * LFloat.L2) - LFloat.L1;
|
||||
}
|
||||
|
||||
static int BuildPolyDetail(RcContext ctx, LFloat[] @in, int nin, LFloat sampleDist, LFloat sampleMaxError,
|
||||
@@ -849,7 +849,7 @@ namespace DotRecast.Recast
|
||||
tris.Clear();
|
||||
|
||||
LFloat cs = chf.cs;
|
||||
LFloat ics = (LFloat)1.0f / cs;
|
||||
LFloat ics = LFloat.L1 / cs;
|
||||
|
||||
// Calculate minimum extents of the polygon based on input data.
|
||||
LFloat minExtent = PolyMinExtent(verts, nverts);
|
||||
@@ -901,7 +901,7 @@ namespace DotRecast.Recast
|
||||
|
||||
for (int k = 0; k <= nn; ++k)
|
||||
{
|
||||
LFloat u = (LFloat)k / (LFloat)nn;
|
||||
LFloat u = k.ToLFloat() / nn.ToLFloat();
|
||||
int pos = k * 3;
|
||||
edge[pos + 0] = @in[vj + 0] + dx * u;
|
||||
edge[pos + 1] = @in[vj + 1] + dy * u;
|
||||
@@ -1017,7 +1017,7 @@ namespace DotRecast.Recast
|
||||
{
|
||||
RcVec3f pt = new RcVec3f();
|
||||
pt.X = x * sampleDist;
|
||||
pt.Y = (bmax.Y + bmin.Y) * (LFloat)0.5f;
|
||||
pt.Y = (bmax.Y + bmin.Y) * LFloat.L0D5;
|
||||
pt.Z = z * sampleDist;
|
||||
// Make sure the samples are not too close to the edges.
|
||||
if (DistToPoly(nin, @in, pt) > -sampleDist / 2)
|
||||
@@ -1058,9 +1058,9 @@ namespace DotRecast.Recast
|
||||
RcVec3f pt = new RcVec3f();
|
||||
// The sample location is jittered to get rid of some bad triangulations
|
||||
// which are cause by symmetrical data from the grid structure.
|
||||
pt.X = samples[s + 0] * sampleDist + GetJitterX(i) * cs * (LFloat)0.1f;
|
||||
pt.X = samples[s + 0] * sampleDist + GetJitterX(i) * cs * LFloat.L0D1;
|
||||
pt.Y = samples[s + 1] * chf.ch;
|
||||
pt.Z = samples[s + 2] * sampleDist + GetJitterY(i) * cs * (LFloat)0.1f;
|
||||
pt.Z = samples[s + 2] * sampleDist + GetJitterY(i) * cs * LFloat.L0D1;
|
||||
LFloat d = DistToTriMesh(pt, verts, nverts, tris, tris.Count / 4);
|
||||
if (d < 0)
|
||||
{
|
||||
@@ -1440,7 +1440,7 @@ namespace DotRecast.Recast
|
||||
LFloat ch = mesh.ch;
|
||||
RcVec3f orig = mesh.bmin;
|
||||
int borderSize = mesh.borderSize;
|
||||
int heightSearchRadius = (int)LMath.Max((LFloat)1, LMath.Ceiling(mesh.maxEdgeError));
|
||||
int heightSearchRadius = (int)LMath.Max(LFloat.L1, LMath.Ceiling(mesh.maxEdgeError));
|
||||
|
||||
List<int> tris = new List<int>(512);
|
||||
LFloat[] verts = new LFloat[256 * 3];
|
||||
|
||||
+4
-4
@@ -1261,13 +1261,13 @@ namespace DotRecast.Recast
|
||||
{
|
||||
RcPolyMesh pmesh = meshes[i];
|
||||
|
||||
int ox = (int)LMath.Floor((pmesh.bmin.X - mesh.bmin.X) / mesh.cs + (LFloat)0.5f);
|
||||
int oz = (int)LMath.Floor((pmesh.bmin.Z - mesh.bmin.Z) / mesh.cs + (LFloat)0.5f);
|
||||
int ox = (int)LMath.Floor((pmesh.bmin.X - mesh.bmin.X) / mesh.cs + LFloat.L0D5);
|
||||
int oz = (int)LMath.Floor((pmesh.bmin.Z - mesh.bmin.Z) / mesh.cs + LFloat.L0D5);
|
||||
|
||||
bool isMinX = (ox == 0);
|
||||
bool isMinZ = (oz == 0);
|
||||
bool isMaxX = (LMath.Floor((mesh.bmax.X - pmesh.bmax.X) / mesh.cs + (LFloat)0.5f)) == 0;
|
||||
bool isMaxZ = (LMath.Floor((mesh.bmax.Z - pmesh.bmax.Z) / mesh.cs + (LFloat)0.5f)) == 0;
|
||||
bool isMaxX = (LMath.Floor((mesh.bmax.X - pmesh.bmax.X) / mesh.cs + LFloat.L0D5)) == 0;
|
||||
bool isMaxZ = (LMath.Floor((mesh.bmax.Z - pmesh.bmax.Z) / mesh.cs + LFloat.L0D5)) == 0;
|
||||
bool isOnBorder = (isMinX || isMinZ || isMaxX || isMaxZ);
|
||||
|
||||
for (int j = 0; j < pmesh.nverts; ++j)
|
||||
|
||||
+1
-1
@@ -28,7 +28,7 @@ namespace DotRecast.Recast
|
||||
{
|
||||
public static bool Raycast(IList<RcBuilderResult> results, RcVec3f src, RcVec3f dst, out LFloat hitTime)
|
||||
{
|
||||
hitTime = (LFloat)0.0f;
|
||||
hitTime = LFloat.L0;
|
||||
foreach (RcBuilderResult result in results)
|
||||
{
|
||||
if (result.MeshDetail != null)
|
||||
|
||||
+8
-8
@@ -402,7 +402,7 @@ namespace DotRecast.Recast
|
||||
spanMax -= heightfieldBBMin.Y;
|
||||
|
||||
// Skip the span if it is outside the heightfield bbox
|
||||
if (spanMax < 0.0f)
|
||||
if (spanMax < (LFloat.L0))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@@ -413,7 +413,7 @@ namespace DotRecast.Recast
|
||||
}
|
||||
|
||||
// Clamp the span to the heightfield bbox.
|
||||
if (spanMin < 0.0f)
|
||||
if (spanMin < (LFloat.L0))
|
||||
{
|
||||
spanMin = 0;
|
||||
}
|
||||
@@ -457,8 +457,8 @@ namespace DotRecast.Recast
|
||||
using var timer = context.ScopedTimer(RcTimerLabel.RC_TIMER_RASTERIZE_TRIANGLES);
|
||||
|
||||
// Rasterize the single triangle.
|
||||
LFloat inverseCellSize = (LFloat)1.0f / heightfield.cs;
|
||||
LFloat inverseCellHeight = (LFloat)1.0f / heightfield.ch;
|
||||
LFloat inverseCellSize = LFloat.L1 / heightfield.cs;
|
||||
LFloat inverseCellHeight = LFloat.L1 / heightfield.ch;
|
||||
RasterizeTri(verts, v0, v1, v2, areaID, heightfield, heightfield.bmin, heightfield.bmax, heightfield.cs, inverseCellSize,
|
||||
inverseCellHeight, flagMergeThreshold);
|
||||
}
|
||||
@@ -484,8 +484,8 @@ namespace DotRecast.Recast
|
||||
{
|
||||
using var timer = context.ScopedTimer(RcTimerLabel.RC_TIMER_RASTERIZE_TRIANGLES);
|
||||
|
||||
LFloat inverseCellSize = (LFloat)1.0f / heightfield.cs;
|
||||
LFloat inverseCellHeight = (LFloat)1.0f / heightfield.ch;
|
||||
LFloat inverseCellSize = LFloat.L1 / heightfield.cs;
|
||||
LFloat inverseCellHeight = LFloat.L1 / heightfield.ch;
|
||||
for (int triIndex = 0; triIndex < numTris; ++triIndex)
|
||||
{
|
||||
int v0 = tris[triIndex * 3 + 0];
|
||||
@@ -516,8 +516,8 @@ namespace DotRecast.Recast
|
||||
{
|
||||
using var timer = context.ScopedTimer(RcTimerLabel.RC_TIMER_RASTERIZE_TRIANGLES);
|
||||
|
||||
LFloat inverseCellSize = (LFloat)1.0f / heightfield.cs;
|
||||
LFloat inverseCellHeight = (LFloat)1.0f / heightfield.ch;
|
||||
LFloat inverseCellSize = LFloat.L1 / heightfield.cs;
|
||||
LFloat inverseCellHeight = LFloat.L1 / heightfield.ch;
|
||||
for (int triIndex = 0; triIndex < numTris; ++triIndex)
|
||||
{
|
||||
int v0 = (triIndex * 3 + 0);
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 77439ffa9cec4759849d22cb0349256d
|
||||
timeCreated: 1715343409
|
||||
@@ -27,9 +27,5 @@ namespace JNGame.Math
|
||||
return new LFloat(true, (long)(value * LFloat.Precision));
|
||||
}
|
||||
|
||||
public static LFloat Abs(this LFloat val)
|
||||
{
|
||||
return LMath.Abs(val);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -23,8 +23,9 @@ namespace JNGame.Math
|
||||
/// 定点数精度
|
||||
/// </summary>
|
||||
public const long Precision = 1000000L;
|
||||
|
||||
/// <summary>
|
||||
/// 精度缩小1000倍
|
||||
/// 精度缩小10倍
|
||||
/// </summary>
|
||||
public const int RateOfOldPrecision = (int)(Precision / 1000L);
|
||||
/// <summary>
|
||||
@@ -183,8 +184,43 @@ namespace JNGame.Math
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public static LFloat operator *(in LFloat a, in LFloat b)
|
||||
{
|
||||
long val = a.rawValue * b.rawValue;
|
||||
return new LFloat(true, val / LFloat.Precision);
|
||||
|
||||
// ------------------- 这个会越界 -------------------
|
||||
// // 安全地进行乘法
|
||||
// long val = a.rawValue * b.rawValue;
|
||||
// return new LFloat(true, val / Precision);
|
||||
|
||||
// ------------------- 这个精度差 -------------------
|
||||
// long scaleDownFactor = 100;
|
||||
//
|
||||
// // 将 a 和 b 的值除以缩放因子,得到缩放后的值
|
||||
// long scaledA = a.rawValue / scaleDownFactor;
|
||||
// long scaledB = b.rawValue / scaleDownFactor;
|
||||
//
|
||||
// // 计算缩放后值的乘积
|
||||
// long scaledProduct = scaledA * scaledB;
|
||||
//
|
||||
// // 返回计算得到的定点数结果
|
||||
// return new LFloat(true, scaledProduct / 100);
|
||||
|
||||
// ------------------- 这个性能差 -------------------
|
||||
// 分解 a 和 b 的值为高位和低位
|
||||
long aHigh = a.rawValue / Precision; // a 的整数部分
|
||||
long aLow = a.rawValue % Precision; // a 的小数部分
|
||||
long bHigh = b.rawValue / Precision; // b 的整数部分
|
||||
long bLow = b.rawValue % Precision; // b 的小数部分
|
||||
|
||||
// 计算各部分的乘积,避免直接相乘导致溢出
|
||||
long highHigh = aHigh * bHigh * Precision; // 整数部分
|
||||
long lowHigh = aLow * bHigh; // a 的小数部分 × b 的整数部分
|
||||
long highLow = aHigh * bLow; // a 的整数部分 × b 的小数部分
|
||||
long lowLow = aLow * bLow / Precision; // 小数部分的乘积再缩放
|
||||
|
||||
// 合并所有部分,得到最终结果
|
||||
long result = highHigh + lowHigh + highLow + lowLow;
|
||||
|
||||
// 返回结果
|
||||
return new LFloat(true, result);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
@@ -463,7 +499,8 @@ namespace JNGame.Math
|
||||
#if DEBUG_DUMP
|
||||
return _val.ToString();
|
||||
#else
|
||||
var val = (rawValue * LFloat.PrecisionFactor);
|
||||
// var val = (rawValue * LFloat.PrecisionFactor);
|
||||
var val = (rawValue * 0.000001f);
|
||||
// 限制4位小数
|
||||
// val = (int)System.Math.Round((double)val * 10000) / 10000f;
|
||||
return val.ToString("f4");
|
||||
@@ -620,7 +657,7 @@ namespace JNGame.Math
|
||||
/// <summary>
|
||||
/// 毫秒单位时间 = 0.001f
|
||||
/// </summary>
|
||||
public static readonly LFloat EPS_1MS = new LFloat(null, 1L);
|
||||
public static readonly LFloat EPS_1MS = new LFloat("", 1L);
|
||||
|
||||
|
||||
/// <summary>
|
||||
@@ -628,11 +665,51 @@ namespace JNGame.Math
|
||||
/// </summary>
|
||||
public static LFloat L0 => 0.ToLFloat();
|
||||
|
||||
/// <summary>
|
||||
/// 0.1
|
||||
/// </summary>
|
||||
public static LFloat L0D1 => new("",100);
|
||||
|
||||
/// <summary>
|
||||
/// 0.2
|
||||
/// </summary>
|
||||
public static LFloat L0D2 => new("",200);
|
||||
|
||||
/// <summary>
|
||||
/// 0.3
|
||||
/// </summary>
|
||||
public static LFloat L0D3 => new("",300);
|
||||
|
||||
/// <summary>
|
||||
/// 0.4
|
||||
/// </summary>
|
||||
public static LFloat L0D4 => new("",400);
|
||||
|
||||
/// <summary>
|
||||
/// 0.5
|
||||
/// </summary>
|
||||
public static LFloat L0D5 => new("",500);
|
||||
|
||||
/// <summary>
|
||||
/// 0.6
|
||||
/// </summary>
|
||||
public static LFloat L0D6 => new("",600);
|
||||
|
||||
/// <summary>
|
||||
/// 0.7
|
||||
/// </summary>
|
||||
public static LFloat L0D7 => new("",700);
|
||||
|
||||
/// <summary>
|
||||
/// 0.8
|
||||
/// </summary>
|
||||
public static LFloat L0D8 => new("",800);
|
||||
|
||||
/// <summary>
|
||||
/// 0.9
|
||||
/// </summary>
|
||||
public static LFloat L0D9 => new("",900);
|
||||
|
||||
/// <summary>
|
||||
/// 1
|
||||
/// </summary>
|
||||
@@ -643,11 +720,41 @@ namespace JNGame.Math
|
||||
/// </summary>
|
||||
public static readonly LFloat L2 = 2.ToLFloat();
|
||||
|
||||
/// <summary>
|
||||
/// 3
|
||||
/// </summary>
|
||||
public static readonly LFloat L3 = 3.ToLFloat();
|
||||
|
||||
/// <summary>
|
||||
/// 4
|
||||
/// </summary>
|
||||
public static readonly LFloat L4 = 4.ToLFloat();
|
||||
|
||||
/// <summary>
|
||||
/// 5
|
||||
/// </summary>
|
||||
public static readonly LFloat L5 = 5.ToLFloat();
|
||||
|
||||
/// <summary>
|
||||
/// 6
|
||||
/// </summary>
|
||||
public static readonly LFloat L6 = 6.ToLFloat();
|
||||
|
||||
/// <summary>
|
||||
/// 7
|
||||
/// </summary>
|
||||
public static readonly LFloat L7 = 7.ToLFloat();
|
||||
|
||||
/// <summary>
|
||||
/// 8
|
||||
/// </summary>
|
||||
public static readonly LFloat L8 = 8.ToLFloat();
|
||||
|
||||
/// <summary>
|
||||
/// 9
|
||||
/// </summary>
|
||||
public static readonly LFloat L9 = 9.ToLFloat();
|
||||
|
||||
/// <summary>
|
||||
/// 10
|
||||
/// </summary>
|
||||
@@ -658,11 +765,31 @@ namespace JNGame.Math
|
||||
/// </summary>
|
||||
public static readonly LFloat L20 = 20.ToLFloat();
|
||||
|
||||
/// <summary>
|
||||
/// 50
|
||||
/// </summary>
|
||||
public static readonly LFloat L50 = 50.ToLFloat();
|
||||
|
||||
/// <summary>
|
||||
/// 20
|
||||
/// </summary>
|
||||
public static readonly LFloat L80 = 80.ToLFloat();
|
||||
|
||||
/// <summary>
|
||||
/// 100
|
||||
/// </summary>
|
||||
public static readonly LFloat L100 = 100.ToLFloat();
|
||||
|
||||
/// <summary>
|
||||
/// 180
|
||||
/// </summary>
|
||||
public static readonly LFloat L180 = 180.ToLFloat();
|
||||
|
||||
/// <summary>
|
||||
/// 255
|
||||
/// </summary>
|
||||
public static readonly LFloat L255 = 255.ToLFloat();
|
||||
|
||||
/// <summary>
|
||||
/// 1000
|
||||
/// </summary>
|
||||
|
||||
@@ -47,10 +47,10 @@ namespace JNGame.Math
|
||||
/// <param name="w"></param>
|
||||
public LQuaternion(bool isRawValue, long x, long y, long z, long w)
|
||||
{
|
||||
this.x = (LFloat)0f;
|
||||
this.y = (LFloat)0f;
|
||||
this.z = (LFloat)0f;
|
||||
this.w = (LFloat)0f;
|
||||
this.x = LFloat.L0;
|
||||
this.y = LFloat.L0;
|
||||
this.z = LFloat.L0;
|
||||
this.w = LFloat.L0;
|
||||
this.x.rawValue = x;
|
||||
this.y.rawValue = y;
|
||||
this.z.rawValue = z;
|
||||
|
||||
@@ -37,8 +37,8 @@ namespace JNGame.Math
|
||||
/// <param name="y"></param>
|
||||
public LVector2(bool isUseRawVal, int x, int y)
|
||||
{
|
||||
this.x = (LFloat)0f;
|
||||
this.y = (LFloat)0f;
|
||||
this.x = LFloat.L0;
|
||||
this.y = LFloat.L0;
|
||||
this.x.rawValue = x;
|
||||
this.y.rawValue = y;
|
||||
}
|
||||
@@ -51,8 +51,8 @@ namespace JNGame.Math
|
||||
/// <param name="y"></param>
|
||||
public LVector2(bool isUseRawVal, long x, long y)
|
||||
{
|
||||
this.x = (LFloat)0f;
|
||||
this.y = (LFloat)0f;
|
||||
this.x = LFloat.L0;
|
||||
this.y = LFloat.L0;
|
||||
this.x.rawValue = x;
|
||||
this.y.rawValue = y;
|
||||
}
|
||||
@@ -64,8 +64,8 @@ namespace JNGame.Math
|
||||
/// <param name="y"></param>
|
||||
public LVector2(int x, int y)
|
||||
{
|
||||
this.x = (LFloat)0f;
|
||||
this.y = (LFloat)0f;
|
||||
this.x = LFloat.L0;
|
||||
this.y = LFloat.L0;
|
||||
this.x.rawValue = x * LFloat.Precision;
|
||||
this.y.rawValue = y * LFloat.Precision;
|
||||
}
|
||||
@@ -77,8 +77,8 @@ namespace JNGame.Math
|
||||
/// <param name="y"></param>
|
||||
public LVector2(long x, long y)
|
||||
{
|
||||
this.x = (LFloat)0f;
|
||||
this.y = (LFloat)0f;
|
||||
this.x = LFloat.L0;
|
||||
this.y = LFloat.L0;
|
||||
this.x.rawValue = x * LFloat.Precision;
|
||||
this.y.rawValue = y * LFloat.Precision;
|
||||
}
|
||||
@@ -90,8 +90,8 @@ namespace JNGame.Math
|
||||
/// <param name="y"></param>
|
||||
public LVector2(LFloat x, LFloat y)
|
||||
{
|
||||
this.x = (LFloat)0f;
|
||||
this.y = (LFloat)0f;
|
||||
this.x = LFloat.L0;
|
||||
this.y = LFloat.L0;
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
}
|
||||
@@ -105,8 +105,8 @@ namespace JNGame.Math
|
||||
/// <param name="y"></param>
|
||||
public LVector2(bool shouldOnlyUseInEditor, float x, float y)
|
||||
{
|
||||
this.x = (LFloat)0f;
|
||||
this.y = (LFloat)0f;
|
||||
this.x = LFloat.L0;
|
||||
this.y = LFloat.L0;
|
||||
this.x.rawValue = (long)(x * LFloat.Precision);
|
||||
this.y.rawValue = (long)(y * LFloat.Precision);
|
||||
}
|
||||
|
||||
@@ -45,9 +45,9 @@ namespace JNGame.Math
|
||||
/// <param name="z"></param>
|
||||
public LVector3(bool isUseRawVal, int x, int y, int z)
|
||||
{
|
||||
this.x = (LFloat)0f;
|
||||
this.y = (LFloat)0f;
|
||||
this.z = (LFloat)0f;
|
||||
this.x = 0.ToLFloat();
|
||||
this.y = 0.ToLFloat();
|
||||
this.z = 0.ToLFloat();
|
||||
this.x.rawValue = x;
|
||||
this.y.rawValue = y;
|
||||
this.z.rawValue = z;
|
||||
@@ -62,9 +62,9 @@ namespace JNGame.Math
|
||||
/// <param name="z"></param>
|
||||
public LVector3(bool isUseRawVal, long x, long y, long z)
|
||||
{
|
||||
this.x = (LFloat)0f;
|
||||
this.y = (LFloat)0f;
|
||||
this.z = (LFloat)0f;
|
||||
this.x = 0.ToLFloat();
|
||||
this.y = 0.ToLFloat();
|
||||
this.z = 0.ToLFloat();
|
||||
this.x.rawValue = x;
|
||||
this.y.rawValue = y;
|
||||
this.z.rawValue = z;
|
||||
@@ -78,9 +78,9 @@ namespace JNGame.Math
|
||||
/// <param name="z"></param>
|
||||
public LVector3(int x, int y, int z)
|
||||
{
|
||||
this.x = (LFloat)0f;
|
||||
this.y = (LFloat)0f;
|
||||
this.z = (LFloat)0f;
|
||||
this.x = 0.ToLFloat();
|
||||
this.y = 0.ToLFloat();
|
||||
this.z = 0.ToLFloat();
|
||||
this.x.rawValue = x * LFloat.Precision;
|
||||
this.y.rawValue = y * LFloat.Precision;
|
||||
this.z.rawValue = z * LFloat.Precision;
|
||||
@@ -94,9 +94,9 @@ namespace JNGame.Math
|
||||
/// <param name="z"></param>
|
||||
public LVector3(long x, long y, long z)
|
||||
{
|
||||
this.x = (LFloat)0f;
|
||||
this.y = (LFloat)0f;
|
||||
this.z = (LFloat)0f;
|
||||
this.x = 0.ToLFloat();
|
||||
this.y = 0.ToLFloat();
|
||||
this.z = 0.ToLFloat();
|
||||
this.x.rawValue = x * LFloat.Precision;
|
||||
this.y.rawValue = y * LFloat.Precision;
|
||||
this.z.rawValue = z * LFloat.Precision;
|
||||
@@ -138,9 +138,9 @@ namespace JNGame.Math
|
||||
/// <param name="z"></param>
|
||||
public LVector3(bool shouldOnlyUseInEditor, float x, float y, float z)
|
||||
{
|
||||
this.x = (LFloat)0f;
|
||||
this.y = (LFloat)0f;
|
||||
this.z = (LFloat)0f;
|
||||
this.x = 0.ToLFloat();
|
||||
this.y = 0.ToLFloat();
|
||||
this.z = 0.ToLFloat();
|
||||
this.x.rawValue = (int)(x * LFloat.Precision);
|
||||
this.y.rawValue = (int)(y * LFloat.Precision);
|
||||
this.z.rawValue = (int)(z * LFloat.Precision);
|
||||
@@ -220,13 +220,13 @@ namespace JNGame.Math
|
||||
/// </summary>
|
||||
public void Normalize()
|
||||
{
|
||||
long sqr = RawSqrMagnitude;
|
||||
if (sqr == 0L) { return; }
|
||||
|
||||
long d = LMath.Sqrt(sqr);
|
||||
x.rawValue = RawX * LFloat.Precision / d;
|
||||
y.rawValue = RawY * LFloat.Precision / d;
|
||||
z.rawValue = RawZ * LFloat.Precision / d;
|
||||
LFloat sqr = (x * x + y * y + z * z); // 计算平方大小
|
||||
if (sqr == LFloat.L0) { return; } // 检查零向量
|
||||
LFloat length = LMath.Sqrt(sqr); // 计算长度
|
||||
// 归一化分量
|
||||
x.rawValue = (x.rawValue * LFloat.Precision) / length.rawValue;
|
||||
y.rawValue = (y.rawValue * LFloat.Precision) / length.rawValue;
|
||||
z.rawValue = (z.rawValue * LFloat.Precision) / length.rawValue;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -264,16 +264,16 @@ namespace JNGame.Math
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 向量定点数真实值模长平方
|
||||
/// </summary>
|
||||
public readonly long RawSqrMagnitude
|
||||
{
|
||||
get
|
||||
{
|
||||
return RawX * RawX + RawY * RawY + RawZ * RawZ;
|
||||
}
|
||||
}
|
||||
// /// <summary>
|
||||
// /// 向量定点数真实值模长平方
|
||||
// /// </summary>
|
||||
// public readonly long RawSqrMagnitude
|
||||
// {
|
||||
// get
|
||||
// {
|
||||
// return (x * x + y * y + z * z).rawValue;
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -816,7 +816,7 @@ namespace JNGame.Math
|
||||
/// <summary>
|
||||
/// PI定点数真实值
|
||||
/// </summary>
|
||||
private const long kRawLPI = 3141593L; //3.1415926
|
||||
private const long kRawLPI = 3141592L; //3.1415926
|
||||
/// <summary>
|
||||
/// 2PI定点数真实值
|
||||
/// </summary>
|
||||
@@ -824,7 +824,7 @@ namespace JNGame.Math
|
||||
/// <summary>
|
||||
/// 弧度转角度的算术因子定点数真实值
|
||||
/// </summary>
|
||||
private const long kRawLRad2Deg = 57295780L; //57.2957795
|
||||
private const long kRawLRad2Deg = 57295779L; //57.2957795
|
||||
/// <summary>
|
||||
/// 角度转弧度的算术因子定点数真实值
|
||||
/// </summary>
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
//#define DONT_USE_GENERATE_CODE
|
||||
|
||||
//#define DONT_USE_GENERATE_CODE
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by Lockstep.CodeGenerator
|
||||
// This code was generated by JNGame.CodeGenerator
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using JNGame.Math;
|
||||
namespace JNGame.Math
|
||||
{
|
||||
public static class LUTAcos
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
|
||||
//#define DONT_USE_GENERATE_CODE
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by Lockstep.CodeGenerator
|
||||
// This code was generated by JNGame.CodeGenerator
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using JNGame.Math;
|
||||
namespace JNGame.Math
|
||||
{
|
||||
public static class LUTAsin
|
||||
|
||||
@@ -1,12 +1,15 @@
|
||||
//#define DONT_USE_GENERATE_CODE
|
||||
|
||||
//#define DONT_USE_GENERATE_CODE
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by Lockstep.CodeGenerator
|
||||
// This code was generated by JNGame.CodeGenerator
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using JNGame.Math;
|
||||
namespace JNGame.Math
|
||||
{
|
||||
public static class LUTAtan2
|
||||
@@ -20,20 +23,20 @@ namespace JNGame.Math
|
||||
static LUTAtan2()
|
||||
{
|
||||
_startIdx = new int[MaxQueryIdx +1]{
|
||||
0, 18434, 26564, 30962, 33688, 35535, 36867, 37872, 38656, 39285, 39801, 40231, 40595, 40908, 41179, 41416, 41625, 41811, 41978, 42128, 42264, 42387, 42499, 42602, 42697, 42785, 42866, 42941, 43011, 43076, 43137, 43194, 43248, 43299, 43347, 43392, 43434, 43474, 43512, 43548, 43582, 43615, 43646, 43676, 43704, 43731, 43757, 43782, 43806, 43829, 43851, 43872, 43892, 43912, 43931, 43949, 43966, 43983, 43999, 44015, 44030, 44045, 44059, 44073, 44086, 44099, 44111, 44123, 44135, 44146, 44157, 44168, 44178, 44188, 44198, 44208, 44217, 44226, 44235, 44244, 44252, 44260, 44268, 44276, 44284, 44291, 44298, 44305, 44312, 44319, 44325, 44331, 44337, 44343, 44349, 44355, 44361, 44367, 44372, 44377,
|
||||
44382, 44387, 44392, 44397, 44402, 44407, 44412, 44416, 44420, 44424, 44428, 44432, 44436, 44440, 44444, 44448, 44452, 44456, 44460, 44464, 44467, 44470, 44473, 44476, 44479, 44482, 44485, 44488, 44491, 44494, 44497, 44500, 44503, 44506, 44509, 44512, 44515, 44518, 44520, 44522, 44524, 44526, 44528, 44530, 44532, 44534, 44536, 44538, 44540, 44542, 44544, 44546, 44548, 44550, 44552, 44554, 44556, 44558, 44560, 44562, 44564, 44566, 44568, 44570, 44572, 44574, 44576, 44578, 44580, 44581, 44582, 44583, 44584, 44585, 44586, 44587, 44588, 44589, 44590, 44591, 44592, 44593, 44594, 44595, 44596, 44597, 44598, 44599, 44600, 44601, 44602, 44603, 44604, 44605, 44606, 44607, 44608, 44609, 44610, 44611,
|
||||
44612, 44613, 44614, 44615, 44616, 44617, 44618, 44619, 44620, 44621, 44622, 44623, 44624, 44625, 44626, 44627, 44628, 44629, 44630, 44631, 44632, 44633, 44634, 44635, 44636, 44637, 44638, 44639, 44640, 44641, 44642, 44643, 44644, 44645, 44646, 44647, 44648, 44649, 44650, 44651, 44652, 44653, 44654, 44655, 44656, 44657, 44658, 44659, 44660, 44661, 44662, 44663, 44664, 44665, 44666, 44667, 44668, 44669, 44670, 44671, 44672, 44673, 44674, 44675, 44676, 44677, 44678, 44679, 44680, 44681, 44682, 44683, 44684, 44685, 44686, 44687, 44688, 44689, 44690, 44691, 44692, 44693, 44694, 44695, 44696, 44697, 44698, 44699, 44700, 44701, 44702, 44703, 44704, 44705, 44706, 44707, 44708, 44709, 44710, 44711,
|
||||
44712, 44713, 44714, 44715, 44716, 44717, 44718, 44719, 44720, 44721, 44722, 44723, 44724, 44725, 44726, 44727, 44728, 44729, 44730, 44731, 44732, 44733, 44734, 44735, 44736, 44737, 44738, 44739, 44740, 44741, 44742, 44743, 44744, 44745, 44746, 44747, 44748, 44749, 44750, 44751, 44752, 44753, 44754, 44755, 44756, 44757, 44758, 44759, 44760, 44761, 44762, 44763, 44764, 44765, 44766, 44767, 44768, 44769, 44770, 44771, 44772, 44773, 44774, 44775, 44776, 44777, 44778, 44779, 44780, 44781, 44782, 44783, 44784, 44785, 44786, 44787, 44788, 44789, 44790, 44791, 44792, 44793, 44794, 44795, 44796, 44797, 44798, 44799, 44800, 44801, 44802, 44803, 44804, 44805, 44806, 44807, 44808, 44809, 44810, 44811,
|
||||
44812, 44813, 44814, 44815, 44816, 44817, 44818, 44819, 44820, 44821, 44822, 44823, 44824, 44825, 44826, 44827, 44828, 44829, 44830, 44831, 44832, 44833, 44834, 44835, 44836, 44837, 44838, 44839, 44840, 44841, 44842, 44843, 44844, 44845, 44846, 44847, 44848, 44849, 44850, 44851, 44852, 44853, 44854, 44855, 44856, 44857, 44858, 44859, 44860, 44861, 44862, 44863, 44864, 44865, 44866, 44867, 44868, 44869, 44870, 44871, 44872, 44873, 44874, 44875, 44876, 44877, 44878, 44879, 44880, 44881, 44882, 44883, 44884, 44885, 44886, 44887, 44888, 44889, 44890, 44891, 44892, 44893, 44894, 44895, 44896, 44897, 44898, 44899, 44900, 44901, 44902, 44903, 44904, 44905, 44906, 44907, 44908, 44909, 44910, 44911,
|
||||
44912, 44913, 44914, 44915, 44916, 44917, 44918, 44919, 44920, 44921, 44922, 44923, 44924, 44925, 44926, 44927, 44928, 44929, 44930, 44931, 44932, 44933, 44934, 44935, 44936, 44937, 44938, 44939, 44940, 44941, 44942, 44943, 44944, 44945, 44946, 44947, 44948, 44949, 44950, 44951, 44952, 44953, 44954, 44955, 44956, 44957, 44958, 44959, 44960, 44961, 44962, 44963, 44964, 44965, 44966, 44967, 44968, 44969, 44970, 44971, 44972, 44973, 44974, 44975, 44976, 44977, 44978, 44979, 44980, 44981, 44982, 44983, 44984, 44985, 44986, 44987, 44988, 44989, 44990, 44991, 44992, 44993, 44994, 44995, 44996, 44997, 44998, 44999, 45000, 45001, 45002, 45003, 45004, 45005, 45006, 45007, 45008, 45009, 45010, 45011,
|
||||
45012, 45013, 45014, 45015, 45016, 45017, 45018, 45019, 45020, 45021, 45022, 45023, 45024, 45025, 45026, 45027, 45028, 45029, 45030, 45031, 45032, 45033, 45034, 45035, 45036, 45037, 45038, 45039, 45040, 45041, 45042, 45043, 45044, 45045, 45046, 45047, 45048, 45049, 45050, 45051, 45052, 45053, 45054, 45055, 45056, 45057, 45058, 45059, 45060, 45061, 45062, 45063, 45064, 45065, 45066, 45067, 45068, 45069, 45070, 45071, 45072, 45073, 45074, 45075, 45076, 45077, 45078, 45079, 45080, 45081, 45082, 45083, 45084, 45085, 45086, 45087, 45088, 45089, 45090, 45091, 45092, 45093, 45094, 45095, 45096, 45097, 45098, 45099, 45100, 45101, 45102, 45103, 45104, 45105, 45106, 45107, 45108, 45109, 45110, 45111,
|
||||
45112, 45113, 45114, 45115, 45116, 45117, 45118, 45119, 45120, 45121, 45122, 45123, 45124, 45125, 45126, 45127, 45128, 45129, 45130, 45131, 45132, 45133, 45134, 45135, 45136, 45137, 45138, 45139, 45140, 45141, 45142, 45143, 45144, 45145, 45146, 45147, 45148, 45149, 45150, 45151, 45152, 45153, 45154, 45155, 45156, 45157, 45158, 45159, 45160, 45161, 45162, 45163, 45164, 45165, 45166, 45167, 45168, 45169, 45170, 45171, 45172, 45173, 45174, 45175, 45176, 45177, 45178, 45179, 45180, 45181, 45182, 45183, 45184, 45185, 45186, 45187, 45188, 45189, 45190, 45191, 45192, 45193, 45194, 45195, 45196, 45197, 45198, 45199, 45200, 45201, 45202, 45203, 45204, 45205, 45206, 45207, 45208, 45209, 45210, 45211,
|
||||
45212, 45213, 45214, 45215, 45216, 45217, 45218, 45219, 45220, 45221, 45222, 45223, 45224, 45225, 45226, 45227, 45228, 45229, 45230, 45231, 45232, 45233, 45234, 45235, 45236, 45237, 45238, 45239, 45240, 45241, 45242, 45243, 45244, 45245, 45246, 45247, 45248, 45249, 45250, 45251, 45252, 45253, 45254, 45255, 45256, 45257, 45258, 45259, 45260, 45261, 45262, 45263, 45264, 45265, 45266, 45267, 45268, 45269, 45270, 45271, 45272, 45273, 45274, 45275, 45276, 45277, 45278, 45279, 45280, 45281, 45282, 45283, 45284, 45285, 45286, 45287, 45288, 45289, 45290, 45291, 45292, 45293, 45294, 45295, 45296, 45297, 45298, 45299, 45300, 45301, 45302, 45303, 45304, 45305, 45306, 45307, 45308, 45309, 45310, 45311,
|
||||
45312, 45313, 45314, 45315, 45316, 45317, 45318, 45319, 45320, 45321, 45322, 45323, 45324, 45325, 45326, 45327, 45328, 45329, 45330, 45331, 45332, 45333, 45334, 45335, 45336, 45337, 45338, 45339, 45340, 45341, 45342, 45343, 45344, 45345, 45346, 45347, 45348, 45349, 45350, 45351, 45352, 45353, 45354, 45355, 45356, 45357, 45358, 45359, 45360, 45361, 45362, 45363, 45364, 45365, 45366, 45367, 45368, 45369, 45370, 45371, 45372, 45373, 45374, 45375, 45376, 45377, 45378, 45379, 45380, 45381, 45382, 45383, 45384, 45385, 45386, 45387, 45388, 45389, 45390, 45391, 45392, 45393, 45394, 45395, 45396, 45397, 45398, 45399, 45400, 45401, 45402, 45403, 45404, 45405, 45406, 45407, 45408, 45409, 45410, 45411,
|
||||
45413
|
||||
0, 18434, 26564, 30962, 33688, 35535, 36867, 37872, 38656, 39285, 39801, 40231, 40595, 40908, 41179, 41416, 41625, 41811, 41978, 42128, 42264, 42387, 42500, 42603, 42698, 42786, 42867, 42942, 43012, 43077, 43138, 43195, 43249, 43300, 43348, 43393, 43435, 43475, 43513, 43549, 43583, 43616, 43647, 43677, 43705, 43732, 43758, 43783, 43807, 43830, 43852, 43873, 43893, 43913, 43932, 43950, 43967, 43984, 44000, 44016, 44031, 44046, 44060, 44074, 44087, 44100, 44112, 44124, 44136, 44147, 44158, 44169, 44179, 44189, 44199, 44209, 44218, 44227, 44236, 44245, 44253, 44261, 44269, 44277, 44285, 44292, 44299, 44306, 44313, 44320, 44326, 44332, 44338, 44344, 44350, 44356, 44362, 44368, 44373, 44378,
|
||||
44383, 44388, 44393, 44398, 44403, 44408, 44413, 44417, 44421, 44425, 44429, 44433, 44437, 44441, 44445, 44449, 44453, 44457, 44461, 44465, 44468, 44471, 44474, 44477, 44480, 44483, 44486, 44489, 44492, 44495, 44498, 44501, 44504, 44507, 44510, 44513, 44516, 44519, 44521, 44523, 44525, 44527, 44529, 44531, 44533, 44535, 44537, 44539, 44541, 44543, 44545, 44547, 44549, 44551, 44553, 44555, 44557, 44559, 44561, 44563, 44565, 44567, 44569, 44571, 44573, 44575, 44577, 44579, 44581, 44582, 44583, 44584, 44585, 44586, 44587, 44588, 44589, 44590, 44591, 44592, 44593, 44594, 44595, 44596, 44597, 44598, 44599, 44600, 44601, 44602, 44603, 44604, 44605, 44606, 44607, 44608, 44609, 44610, 44611, 44612,
|
||||
44613, 44614, 44615, 44616, 44617, 44618, 44619, 44620, 44621, 44622, 44623, 44624, 44625, 44626, 44627, 44628, 44629, 44630, 44631, 44632, 44633, 44634, 44635, 44636, 44637, 44638, 44639, 44640, 44641, 44642, 44643, 44644, 44645, 44646, 44647, 44648, 44649, 44650, 44651, 44652, 44653, 44654, 44655, 44656, 44657, 44658, 44659, 44660, 44661, 44662, 44663, 44664, 44665, 44666, 44667, 44668, 44669, 44670, 44671, 44672, 44673, 44674, 44675, 44676, 44677, 44678, 44679, 44680, 44681, 44682, 44683, 44684, 44685, 44686, 44687, 44688, 44689, 44690, 44691, 44692, 44693, 44694, 44695, 44696, 44697, 44698, 44699, 44700, 44701, 44702, 44703, 44704, 44705, 44706, 44707, 44708, 44709, 44710, 44711, 44712,
|
||||
44713, 44714, 44715, 44716, 44717, 44718, 44719, 44720, 44721, 44722, 44723, 44724, 44725, 44726, 44727, 44728, 44729, 44730, 44731, 44732, 44733, 44734, 44735, 44736, 44737, 44738, 44739, 44740, 44741, 44742, 44743, 44744, 44745, 44746, 44747, 44748, 44749, 44750, 44751, 44752, 44753, 44754, 44755, 44756, 44757, 44758, 44759, 44760, 44761, 44762, 44763, 44764, 44765, 44766, 44767, 44768, 44769, 44770, 44771, 44772, 44773, 44774, 44775, 44776, 44777, 44778, 44779, 44780, 44781, 44782, 44783, 44784, 44785, 44786, 44787, 44788, 44789, 44790, 44791, 44792, 44793, 44794, 44795, 44796, 44797, 44798, 44799, 44800, 44801, 44802, 44803, 44804, 44805, 44806, 44807, 44808, 44809, 44810, 44811, 44812,
|
||||
44813, 44814, 44815, 44816, 44817, 44818, 44819, 44820, 44821, 44822, 44823, 44824, 44825, 44826, 44827, 44828, 44829, 44830, 44831, 44832, 44833, 44834, 44835, 44836, 44837, 44838, 44839, 44840, 44841, 44842, 44843, 44844, 44845, 44846, 44847, 44848, 44849, 44850, 44851, 44852, 44853, 44854, 44855, 44856, 44857, 44858, 44859, 44860, 44861, 44862, 44863, 44864, 44865, 44866, 44867, 44868, 44869, 44870, 44871, 44872, 44873, 44874, 44875, 44876, 44877, 44878, 44879, 44880, 44881, 44882, 44883, 44884, 44885, 44886, 44887, 44888, 44889, 44890, 44891, 44892, 44893, 44894, 44895, 44896, 44897, 44898, 44899, 44900, 44901, 44902, 44903, 44904, 44905, 44906, 44907, 44908, 44909, 44910, 44911, 44912,
|
||||
44913, 44914, 44915, 44916, 44917, 44918, 44919, 44920, 44921, 44922, 44923, 44924, 44925, 44926, 44927, 44928, 44929, 44930, 44931, 44932, 44933, 44934, 44935, 44936, 44937, 44938, 44939, 44940, 44941, 44942, 44943, 44944, 44945, 44946, 44947, 44948, 44949, 44950, 44951, 44952, 44953, 44954, 44955, 44956, 44957, 44958, 44959, 44960, 44961, 44962, 44963, 44964, 44965, 44966, 44967, 44968, 44969, 44970, 44971, 44972, 44973, 44974, 44975, 44976, 44977, 44978, 44979, 44980, 44981, 44982, 44983, 44984, 44985, 44986, 44987, 44988, 44989, 44990, 44991, 44992, 44993, 44994, 44995, 44996, 44997, 44998, 44999, 45000, 45001, 45002, 45003, 45004, 45005, 45006, 45007, 45008, 45009, 45010, 45011, 45012,
|
||||
45013, 45014, 45015, 45016, 45017, 45018, 45019, 45020, 45021, 45022, 45023, 45024, 45025, 45026, 45027, 45028, 45029, 45030, 45031, 45032, 45033, 45034, 45035, 45036, 45037, 45038, 45039, 45040, 45041, 45042, 45043, 45044, 45045, 45046, 45047, 45048, 45049, 45050, 45051, 45052, 45053, 45054, 45055, 45056, 45057, 45058, 45059, 45060, 45061, 45062, 45063, 45064, 45065, 45066, 45067, 45068, 45069, 45070, 45071, 45072, 45073, 45074, 45075, 45076, 45077, 45078, 45079, 45080, 45081, 45082, 45083, 45084, 45085, 45086, 45087, 45088, 45089, 45090, 45091, 45092, 45093, 45094, 45095, 45096, 45097, 45098, 45099, 45100, 45101, 45102, 45103, 45104, 45105, 45106, 45107, 45108, 45109, 45110, 45111, 45112,
|
||||
45113, 45114, 45115, 45116, 45117, 45118, 45119, 45120, 45121, 45122, 45123, 45124, 45125, 45126, 45127, 45128, 45129, 45130, 45131, 45132, 45133, 45134, 45135, 45136, 45137, 45138, 45139, 45140, 45141, 45142, 45143, 45144, 45145, 45146, 45147, 45148, 45149, 45150, 45151, 45152, 45153, 45154, 45155, 45156, 45157, 45158, 45159, 45160, 45161, 45162, 45163, 45164, 45165, 45166, 45167, 45168, 45169, 45170, 45171, 45172, 45173, 45174, 45175, 45176, 45177, 45178, 45179, 45180, 45181, 45182, 45183, 45184, 45185, 45186, 45187, 45188, 45189, 45190, 45191, 45192, 45193, 45194, 45195, 45196, 45197, 45198, 45199, 45200, 45201, 45202, 45203, 45204, 45205, 45206, 45207, 45208, 45209, 45210, 45211, 45212,
|
||||
45213, 45214, 45215, 45216, 45217, 45218, 45219, 45220, 45221, 45222, 45223, 45224, 45225, 45226, 45227, 45228, 45229, 45230, 45231, 45232, 45233, 45234, 45235, 45236, 45237, 45238, 45239, 45240, 45241, 45242, 45243, 45244, 45245, 45246, 45247, 45248, 45249, 45250, 45251, 45252, 45253, 45254, 45255, 45256, 45257, 45258, 45259, 45260, 45261, 45262, 45263, 45264, 45265, 45266, 45267, 45268, 45269, 45270, 45271, 45272, 45273, 45274, 45275, 45276, 45277, 45278, 45279, 45280, 45281, 45282, 45283, 45284, 45285, 45286, 45287, 45288, 45289, 45290, 45291, 45292, 45293, 45294, 45295, 45296, 45297, 45298, 45299, 45300, 45301, 45302, 45303, 45304, 45305, 45306, 45307, 45308, 45309, 45310, 45311, 45312,
|
||||
45313, 45314, 45315, 45316, 45317, 45318, 45319, 45320, 45321, 45322, 45323, 45324, 45325, 45326, 45327, 45328, 45329, 45330, 45331, 45332, 45333, 45334, 45335, 45336, 45337, 45338, 45339, 45340, 45341, 45342, 45343, 45344, 45345, 45346, 45347, 45348, 45349, 45350, 45351, 45352, 45353, 45354, 45355, 45356, 45357, 45358, 45359, 45360, 45361, 45362, 45363, 45364, 45365, 45366, 45367, 45368, 45369, 45370, 45371, 45372, 45373, 45374, 45375, 45376, 45377, 45378, 45379, 45380, 45381, 45382, 45383, 45384, 45385, 45386, 45387, 45388, 45389, 45390, 45391, 45392, 45393, 45394, 45395, 45396, 45397, 45398, 45399, 45400, 45401, 45402, 45403, 45404, 45405, 45406, 45407, 45408, 45409, 45410, 45411, 45412,
|
||||
45414
|
||||
};
|
||||
_arySize = new int[MaxQueryIdx +1]{
|
||||
18434, 8130, 4398, 2726, 1847, 1332, 1005, 784, 629, 516, 430, 364, 313, 271, 237, 209, 186, 167, 150, 136, 123, 112, 103, 95, 88, 81, 75, 70, 65, 61, 57, 54, 51, 48, 45, 42, 40, 38, 36, 34, 33, 31, 30, 28, 27, 26, 25, 24, 23, 22, 21, 20, 20, 19, 18, 17, 17, 16, 16, 15, 15, 14, 14, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 10, 9, 9, 9, 9, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5,
|
||||
18434, 8130, 4398, 2726, 1847, 1332, 1005, 784, 629, 516, 430, 364, 313, 271, 237, 209, 186, 167, 150, 136, 123, 113, 103, 95, 88, 81, 75, 70, 65, 61, 57, 54, 51, 48, 45, 42, 40, 38, 36, 34, 33, 31, 30, 28, 27, 26, 25, 24, 23, 22, 21, 20, 20, 19, 18, 17, 17, 16, 16, 15, 15, 14, 14, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 10, 9, 9, 9, 9, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5,
|
||||
5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
@@ -469,38 +472,38 @@ namespace JNGame.Math
|
||||
1518615, 1518633, 1518651, 1518669, 1518687, 1518705, 1518723, 1518741, 1518759, 1518778, 1518796, 1518814, 1518832, 1518850, 1518867, 1518885, 1518903, 1518921, 1518939, 1518957, 1518975, 1518993, 1519011, 1519029, 1519047, 1519064, 1519082, 1519100, 1519118, 1519136, 1519153, 1519171, 1519189, 1519207, 1519224, 1519242, 1519260, 1519277, 1519295, 1519313, 1519330, 1519348, 1519366, 1519383, 1519401, 1519418, 1519436, 1519454, 1519471, 1519489, 1519506, 1519524, 1519541, 1519559, 1519576, 1519594, 1519611, 1519629, 1519646, 1519663, 1519681, 1519698, 1519716, 1519733, 1519750, 1519768, 1519785, 1519802, 1519820, 1519837, 1519854, 1519871, 1519889, 1519906, 1519923, 1519940, 1519958, 1519975, 1519992, 1520009, 1520027, 1520044, 1520061, 1520078, 1520095, 1520112, 1520129, 1520146, 1520164, 1520181, 1520198, 1520215, 1520232, 1520249, 1520266, 1520283, 1520300, 1520317, 1520334, 1520351,
|
||||
1520368, 1520385, 1520401, 1520418, 1520435, 1520452, 1520469, 1520486, 1520503, 1520520, 1520536, 1520553, 1520570, 1520587, 1520604, 1520620, 1520637, 1520654, 1520671, 1520687, 1520704, 1520721, 1520738, 1520754, 1520771, 1520787, 1520804, 1520821, 1520837, 1520856, 1520874, 1520892, 1520911, 1520929, 1520947, 1520965, 1520984, 1521002, 1521020, 1521038, 1521057, 1521075, 1521093, 1521111, 1521129, 1521147, 1521165, 1521183, 1521201, 1521220, 1521238, 1521256, 1521274, 1521292, 1521310, 1521328, 1521346, 1521364, 1521382, 1521399, 1521417, 1521435, 1521453, 1521471, 1521489, 1521507, 1521525, 1521543, 1521560, 1521578, 1521596, 1521614, 1521631, 1521649, 1521667, 1521685, 1521702, 1521720, 1521738, 1521755, 1521773, 1521791, 1521808, 1521826, 1521844, 1521861, 1521879, 1521896, 1521914, 1521932, 1521949, 1521967, 1521984, 1522002, 1522019, 1522037, 1522054, 1522071, 1522089, 1522106,
|
||||
1522124, 1522141, 1522158, 1522176, 1522193, 1522211, 1522228, 1522245, 1522263, 1522280, 1522297, 1522314, 1522332, 1522349, 1522366, 1522383, 1522401, 1522418, 1522435, 1522452, 1522469, 1522486, 1522504, 1522521, 1522538, 1522555, 1522572, 1522589, 1522606, 1522623, 1522640, 1522657, 1522674, 1522691, 1522708, 1522725, 1522742, 1522759, 1522776, 1522793, 1522810, 1522827, 1522844, 1522861, 1522878, 1522894, 1522911, 1522928, 1522945, 1522962, 1522979, 1522995, 1523012, 1523029, 1523046, 1523063, 1523079, 1523096, 1523113, 1523129, 1523146, 1523163, 1523179, 1523196, 1523213, 1523231, 1523249, 1523268, 1523286, 1523305, 1523323, 1523341, 1523359, 1523378, 1523396, 1523414, 1523432, 1523451, 1523469, 1523487, 1523505, 1523523, 1523542, 1523560, 1523578, 1523596, 1523614, 1523632, 1523650, 1523668, 1523686, 1523704, 1523722, 1523740, 1523758, 1523776, 1523794, 1523812, 1523830, 1523848,
|
||||
1523866, 1523884, 1523902, 1523919, 1523937, 1523955, 1523973, 1523991, 1524008, 1524026, 1524044, 1524062, 1524080, 1524097, 1524115, 1524133, 1524150, 1524168, 1524186, 1524203, 1524221, 1524239, 1524256, 1524274, 1524291, 1524309, 1524326, 1524344, 1524362, 1524379, 1524397, 1524414, 1524431, 1524449, 1524466, 1524484, 1524501, 1524519, 1524536, 1524553, 1524571, 1524588, 1524605, 1524623, 1524640, 1524657, 1524675, 1524692, 1524709, 1524726, 1524744, 1524761, 1524778, 1524795, 1524813, 1524830, 1524847, 1524864, 1524881, 1524898, 1524915, 1524932, 1524950, 1524967, 1524984, 1525001, 1525018, 1525035, 1525052, 1525069, 1525086, 1525103, 1525120, 1525137, 1525154, 1525171, 1525187, 1525204, 1525221, 1525238, 1525255, 1525272, 1525289, 1525305, 1525322, 1525339, 1525356, 1525373, 1525391, 1525409, 1525428, 1525446, 1525464, 1525483, 1525501, 1525519, 1525538, 1525556, 1525574, 1525592,
|
||||
1525611, 1525629, 1525647, 1525665, 1525683, 1525701, 1525720, 1525738, 1525756, 1525774, 1525792, 1525810, 1525828, 1525846, 1525864, 1525882, 1525900, 1525918, 1525936, 1525954, 1525972, 1525990, 1526008, 1526026, 1526044, 1526062, 1526079, 1526097, 1526115, 1526133, 1526151, 1526168, 1526186, 1526204, 1526222, 1526239, 1526257, 1526275, 1526292, 1526310, 1526328, 1526345, 1526363, 1526381, 1526398, 1526416, 1526433, 1526451, 1526468, 1526486, 1526504, 1526521, 1526538, 1526556, 1526573, 1526591, 1526608, 1526626, 1526643, 1526660, 1526678, 1526695, 1526713, 1526730, 1526747, 1526764, 1526782, 1526799, 1526816, 1526834, 1526851, 1526868, 1526885, 1526902, 1526920, 1526937, 1526954, 1526971, 1526988, 1527005, 1527022, 1527040, 1527057, 1527074, 1527091, 1527108, 1527125, 1527142, 1527159, 1527176, 1527193, 1527210, 1527227, 1527244, 1527261, 1527277, 1527294, 1527311, 1527328, 1527345,
|
||||
1527363, 1527382, 1527400, 1527418, 1527436, 1527455, 1527473, 1527491, 1527509, 1527527, 1527546, 1527564, 1527582, 1527600, 1527618, 1527636, 1527654, 1527672, 1527690, 1527708, 1527726, 1527744, 1527762, 1527780, 1527798, 1527816, 1527834, 1527852, 1527870, 1527888, 1527905, 1527923, 1527941, 1527959, 1527977, 1527994, 1528012, 1528030, 1528048, 1528066, 1528083, 1528101, 1528119, 1528136, 1528154, 1528172, 1528189, 1528207, 1528224, 1528242, 1528259, 1528277, 1528295, 1528312, 1528330, 1528347, 1528365, 1528382, 1528399, 1528417, 1528434, 1528452, 1528469, 1528486, 1528504, 1528521, 1528539, 1528556, 1528573, 1528591, 1528608, 1528625, 1528642, 1528660, 1528677, 1528694, 1528711, 1528728, 1528746, 1528763, 1528780, 1528797, 1528814, 1528831, 1528848, 1528865, 1528882, 1528899, 1528916, 1528933, 1528950, 1528967, 1528984, 1529001, 1529018, 1529035, 1529052, 1529069, 1529086, 1529103,
|
||||
1529120, 1529136, 1529153, 1529171, 1529190, 1529208, 1529226, 1529244, 1529262, 1529281, 1529299, 1529317, 1529335, 1529353, 1529371, 1529389, 1529407, 1529425, 1529443, 1529461, 1529479, 1529497, 1529515, 1529533, 1529551, 1529569, 1529587, 1529604, 1529622, 1529640, 1529658, 1529676, 1529693, 1529711, 1529729, 1529747, 1529764, 1529782, 1529800, 1529817, 1529835, 1529853, 1529870, 1529888, 1529906, 1529923, 1529941, 1529958, 1529976, 1529993, 1530011, 1530028, 1530046, 1530063, 1530081, 1530098, 1530116, 1530133, 1530150, 1530168, 1530185, 1530202, 1530220, 1530237, 1530254, 1530272, 1530289, 1530306, 1530323, 1530341, 1530358, 1530375, 1530392, 1530409, 1530427, 1530444, 1530461, 1530478, 1530495, 1530512, 1530529, 1530546, 1530563, 1530580, 1530597, 1530614, 1530631, 1530648, 1530665, 1530682, 1530699, 1530716, 1530733, 1530750, 1530767, 1530784, 1530800, 1530817, 1530835, 1530853,
|
||||
1530871, 1530890, 1530908, 1530926, 1530944, 1530962, 1530980, 1530998, 1531016, 1531034, 1531052, 1531070, 1531088, 1531105, 1531123, 1531141, 1531159, 1531177, 1531195, 1531213, 1531230, 1531248, 1531266, 1531284, 1531301, 1531319, 1531337, 1531354, 1531372, 1531390, 1531407, 1531425, 1531442, 1531460, 1531478, 1531495, 1531513, 1531530, 1531548, 1531565, 1531583, 1531600, 1531618, 1531635, 1531653, 1531670, 1531687, 1531705, 1531722, 1531739, 1531757, 1531774, 1531791, 1531808, 1531826, 1531843, 1531860, 1531877, 1531895, 1531912, 1531929, 1531946, 1531963, 1531980, 1531998, 1532015, 1532032, 1532049, 1532066, 1532083, 1532100, 1532117, 1532134, 1532151, 1532168, 1532185, 1532202, 1532218, 1532235, 1532252, 1532269, 1532286, 1532303, 1532320, 1532336, 1532353, 1532371, 1532390, 1532408, 1532426, 1532444, 1532462, 1532480, 1532499, 1532517, 1532535, 1532553, 1532571, 1532589, 1532607,
|
||||
1532625, 1532643, 1532661, 1532679, 1532697, 1532715, 1532732, 1532750, 1532768, 1532786, 1532804, 1532822, 1532839, 1532857, 1532875, 1532893, 1532910, 1532928, 1532946, 1532963, 1532981, 1532999, 1533016, 1533034, 1533051, 1533069, 1533087, 1533104, 1533122, 1533139, 1533157, 1533174, 1533192, 1533209, 1533226, 1533244, 1533261, 1533279, 1533296, 1533313, 1533331, 1533348, 1533365, 1533383, 1533400, 1533417, 1533434, 1533452, 1533469, 1533486, 1533503, 1533520, 1533537, 1533555, 1533572, 1533589, 1533606, 1533623, 1533640, 1533657, 1533674, 1533691, 1533708, 1533725, 1533742, 1533759, 1533776, 1533794, 1533812, 1533830, 1533849, 1533867, 1533885, 1533903, 1533921, 1533939, 1533957, 1533976, 1533994, 1534012, 1534030, 1534048, 1534066, 1534084, 1534102, 1534119, 1534137, 1534155, 1534173, 1534191, 1534209, 1534227, 1534245, 1534262, 1534280, 1534298, 1534316, 1534333, 1534351, 1534369,
|
||||
1534386, 1534404, 1534422, 1534439, 1534457, 1534475, 1534492, 1534510, 1534527, 1534545, 1534562, 1534580, 1534597, 1534615, 1534632, 1534650, 1534667, 1534684, 1534702, 1534719, 1534736, 1534754, 1534771, 1534788, 1534806, 1534823, 1534840, 1534857, 1534875, 1534892, 1534909, 1534926, 1534943, 1534960, 1534977, 1534994, 1535012, 1535029, 1535046, 1535063, 1535080, 1535097, 1535115, 1535133, 1535151, 1535169, 1535187, 1535206, 1535224, 1535242, 1535260, 1535278, 1535296, 1535314, 1535332, 1535350, 1535368, 1535386, 1535403, 1535421, 1535439, 1535457, 1535475, 1535493, 1535510, 1535528, 1535546, 1535564, 1535581, 1535599, 1535617, 1535634, 1535652, 1535670, 1535687, 1535705, 1535722, 1535740, 1535758, 1535775, 1535793, 1535810, 1535828, 1535845, 1535862, 1535880, 1535897, 1535915, 1535932, 1535949, 1535967, 1535984, 1536001, 1536019, 1536036, 1536053, 1536070, 1536087, 1536105, 1536122,
|
||||
1536139, 1536156, 1536173, 1536190, 1536208, 1536225, 1536242, 1536259, 1536276, 1536293, 1536310, 1536327, 1536345, 1536363, 1536381, 1536400, 1536418, 1536436, 1536454, 1536472, 1536490, 1536509, 1536527, 1536545, 1536563, 1536581, 1536599, 1536617, 1536635, 1536653, 1536670, 1536688, 1536706, 1536724, 1536742, 1536760, 1536778, 1536795, 1536813, 1536831, 1536849, 1536866, 1536884, 1536902, 1536919, 1536937, 1536955, 1536972, 1536990, 1537007, 1537025, 1537042, 1537060, 1537077, 1537095, 1537112, 1537130, 1537147, 1537165, 1537182, 1537199, 1537217, 1537234, 1537251, 1537269, 1537286, 1537303, 1537320, 1537338, 1537355, 1537372, 1537389, 1537406, 1537423, 1537441, 1537458, 1537475, 1537493, 1537511, 1537529, 1537547, 1537566, 1537584, 1537602, 1537620, 1537638, 1537656, 1537674, 1537692, 1537710, 1537728, 1537746, 1537763, 1537781, 1537799, 1537817, 1537835, 1537853, 1537870, 1537888,
|
||||
1537906, 1537924, 1537941, 1537959, 1537977, 1537994, 1538012, 1538030, 1538047, 1538065, 1538082, 1538100, 1538117, 1538135, 1538152, 1538170, 1538187, 1538205, 1538222, 1538239, 1538257, 1538274, 1538291, 1538309, 1538326, 1538343, 1538360, 1538378, 1538395, 1538412, 1538429, 1538446, 1538464, 1538481, 1538498, 1538515, 1538532, 1538549, 1538567, 1538585, 1538604, 1538622, 1538640, 1538658, 1538676, 1538694, 1538712, 1538730, 1538748, 1538766, 1538784, 1538802, 1538820, 1538838, 1538856, 1538874, 1538892, 1538910, 1538927, 1538945, 1538963, 1538981, 1538998, 1539016, 1539034, 1539052, 1539069, 1539087, 1539105, 1539122, 1539140, 1539157, 1539175, 1539192, 1539210, 1539227, 1539245, 1539262, 1539280, 1539297, 1539314, 1539332, 1539349, 1539367, 1539384, 1539401, 1539418, 1539436, 1539453, 1539470, 1539487, 1539505, 1539522, 1539539, 1539556, 1539574, 1539592, 1539610, 1539628, 1539646,
|
||||
1539664, 1539682, 1539700, 1539718, 1539736, 1539754, 1539771, 1539789, 1539807, 1539825, 1539842, 1539860, 1539878, 1539896, 1539913, 1539931, 1539948, 1539966, 1539984, 1540001, 1540019, 1540036, 1540054, 1540071, 1540089, 1540106, 1540124, 1540141, 1540158, 1540176, 1540193, 1540210, 1540228, 1540245, 1540262, 1540280, 1540297, 1540314, 1540331, 1540348, 1540366, 1540383, 1540400, 1540417, 1540434, 1540451, 1540468, 1540485, 1540502, 1540520, 1540538, 1540556, 1540574, 1540592, 1540610, 1540627, 1540645, 1540663, 1540681, 1540699, 1540716, 1540734, 1540752, 1540770, 1540787, 1540805, 1540822, 1540840, 1540858, 1540875, 1540893, 1540910, 1540928, 1540945, 1540963, 1540980, 1540997, 1541015, 1541032, 1541050, 1541067, 1541084, 1541102, 1541119, 1541136, 1541153, 1541171, 1541188, 1541205, 1541222, 1541239, 1541256, 1541273, 1541290, 1541308, 1541325, 1541342, 1541359, 1541376, 1541393,
|
||||
1541411, 1541429, 1541446, 1541464, 1541482, 1541500, 1541518, 1541536, 1541554, 1541571, 1541589, 1541607, 1541625, 1541643, 1541660, 1541678, 1541695, 1541713, 1541731, 1541748, 1541766, 1541783, 1541801, 1541818, 1541836, 1541853, 1541871, 1541888, 1541906, 1541923, 1541940, 1541958, 1541975, 1541992, 1542010, 1542027, 1542044, 1542061, 1542078, 1542096, 1542113, 1542130, 1542147, 1542164, 1542181, 1542198, 1542215, 1542232, 1542250, 1542268, 1542286, 1542304, 1542322, 1542340, 1542358, 1542376, 1542394, 1542412, 1542430, 1542448, 1542466, 1542484, 1542502, 1542519, 1542537, 1542555, 1542572, 1542590, 1542608, 1542625, 1542643, 1542661, 1542678, 1542696, 1542713, 1542731, 1542748, 1542766, 1542783, 1542801, 1542818, 1542835, 1542853, 1542870, 1542887, 1542905, 1542922, 1542939, 1542956, 1542974, 1542991, 1543008, 1543025, 1543044, 1543062, 1543080, 1543098, 1543117, 1543135, 1543153,
|
||||
1543171, 1543189, 1543208, 1543226, 1543244, 1543262, 1543280, 1543298, 1543316, 1543334, 1543352, 1543370, 1543388, 1543405, 1543423, 1543441, 1543459, 1543477, 1543494, 1543512, 1543530, 1543547, 1543565, 1543583, 1543600, 1543618, 1543636, 1543653, 1543671, 1543688, 1543706, 1543723, 1543741, 1543758, 1543775, 1543794, 1543812, 1543830, 1543848, 1543866, 1543884, 1543902, 1543921, 1543939, 1543957, 1543975, 1543993, 1544010, 1544028, 1544046, 1544064, 1544082, 1544100, 1544118, 1544135, 1544153, 1544171, 1544189, 1544206, 1544224, 1544242, 1544259, 1544277, 1544294, 1544312, 1544330, 1544347, 1544364, 1544382, 1544399, 1544417, 1544434, 1544451, 1544469, 1544486, 1544504, 1544523, 1544541, 1544559, 1544577, 1544595, 1544613, 1544631, 1544649, 1544667, 1544685, 1544703, 1544721, 1544739, 1544757, 1544774, 1544792, 1544810, 1544828, 1544845, 1544863, 1544881, 1544898, 1544916, 1544934,
|
||||
1544951, 1544969, 1544986, 1545004, 1545021, 1545039, 1545056, 1545074, 1545091, 1545108, 1545126, 1545143, 1545160, 1545179, 1545197, 1545215, 1545233, 1545251, 1545269, 1545288, 1545306, 1545324, 1545342, 1545360, 1545378, 1545395, 1545413, 1545431, 1545449, 1545467, 1545485, 1545503, 1545520, 1545538, 1545556, 1545573, 1545591, 1545609, 1545626, 1545644, 1545661, 1545679, 1545696, 1545714, 1545731, 1545749, 1545766, 1545784, 1545801, 1545819, 1545838, 1545856, 1545874, 1545893, 1545911, 1545929, 1545947, 1545965, 1545983, 1546002, 1546020, 1546038, 1546056, 1546074, 1546092, 1546110, 1546127, 1546145, 1546163, 1546181, 1546199, 1546217, 1546234, 1546252, 1546270, 1546287, 1546305, 1546323, 1546340, 1546358, 1546375, 1546393, 1546410, 1546428, 1546446, 1546464, 1546482, 1546500, 1546518, 1546536, 1546554, 1546571, 1546589, 1546607, 1546625, 1546642, 1546660, 1546678, 1546695, 1546713,
|
||||
1546730, 1546748, 1546766, 1546783, 1546800, 1546818, 1546835, 1546853, 1546870, 1546887, 1546905, 1546922, 1546939, 1546956, 1546974, 1546991, 1547009, 1547027, 1547045, 1547064, 1547082, 1547100, 1547118, 1547136, 1547154, 1547172, 1547190, 1547208, 1547226, 1547244, 1547262, 1547280, 1547297, 1547315, 1547333, 1547351, 1547369, 1547386, 1547404, 1547422, 1547439, 1547457, 1547474, 1547492, 1547509, 1547527, 1547544, 1547562, 1547580, 1547598, 1547616, 1547634, 1547652, 1547670, 1547688, 1547705, 1547723, 1547741, 1547758, 1547776, 1547794, 1547811, 1547829, 1547847, 1547864, 1547882, 1547899, 1547917, 1547934, 1547951, 1547969, 1547986, 1548003, 1548021, 1548038, 1548055, 1548072, 1548091, 1548109, 1548128, 1548146, 1548164, 1548183, 1548201, 1548219, 1548237, 1548255, 1548274, 1548292, 1548310, 1548328, 1548346, 1548364, 1548382, 1548400, 1548417, 1548435, 1548453, 1548471, 1548489,
|
||||
1548506, 1548524, 1548542, 1548560, 1548577, 1548596, 1548614, 1548632, 1548650, 1548668, 1548686, 1548704, 1548723, 1548741, 1548759, 1548777, 1548794, 1548812, 1548830, 1548848, 1548866, 1548884, 1548902, 1548919, 1548937, 1548955, 1548972, 1548990, 1549008, 1549025, 1549043, 1549060, 1549078, 1549096, 1549114, 1549133, 1549151, 1549169, 1549187, 1549204, 1549222, 1549240, 1549258, 1549276, 1549294, 1549311, 1549329, 1549347, 1549365, 1549382, 1549400, 1549417, 1549435, 1549453, 1549470, 1549488, 1549505, 1549522, 1549540, 1549559, 1549577, 1549595, 1549612, 1549630, 1549648, 1549666, 1549684, 1549702, 1549720, 1549737, 1549755, 1549773, 1549790, 1549808, 1549826, 1549843, 1549861, 1549878, 1549896, 1549913, 1549931, 1549948, 1549965, 1549984, 1550002, 1550020, 1550038, 1550055, 1550073, 1550091, 1550109, 1550127, 1550145, 1550162, 1550180, 1550198, 1550216, 1550233, 1550251, 1550268,
|
||||
1550286, 1550303, 1550321, 1550338, 1550356, 1550373, 1550390, 1550409, 1550427, 1550445, 1550463, 1550481, 1550499, 1550516, 1550534, 1550552, 1550570, 1550588, 1550605, 1550623, 1550641, 1550658, 1550676, 1550694, 1550711, 1550729, 1550746, 1550764, 1550781, 1550799, 1550817, 1550835, 1550853, 1550871, 1550889, 1550907, 1550925, 1550943, 1550961, 1550979, 1550996, 1551014, 1551032, 1551050, 1551067, 1551085, 1551103, 1551120, 1551138, 1551156, 1551173, 1551190, 1551209, 1551227, 1551245, 1551263, 1551282, 1551300, 1551318, 1551336, 1551354, 1551372, 1551390, 1551408, 1551426, 1551443, 1551461, 1551479, 1551497, 1551514, 1551532, 1551550, 1551567, 1551586, 1551604, 1551623, 1551641, 1551659, 1551678, 1551696, 1551714, 1551732, 1551751, 1551769, 1551787, 1551805, 1551823, 1551841, 1551859, 1551877, 1551895, 1551912, 1551930, 1551948, 1551966, 1551983, 1552001, 1552019, 1552036, 1552054,
|
||||
1552071, 1552089, 1552106, 1552124, 1552141, 1552159, 1552176, 1552193, 1552211, 1552228, 1552245, 1552262, 1552279, 1552297, 1552315, 1552333, 1552351, 1552369, 1552387, 1552405, 1552423, 1552440, 1552458, 1552476, 1552493, 1552511, 1552529, 1552546, 1552564, 1552581, 1552599, 1552616, 1552634, 1552653, 1552671, 1552689, 1552707, 1552726, 1552744, 1552762, 1552780, 1552798, 1552816, 1552834, 1552852, 1552869, 1552887, 1552905, 1552923, 1552941, 1552959, 1552978, 1552997, 1553015, 1553034, 1553052, 1553071, 1553089, 1553108, 1553126, 1553145, 1553163, 1553181, 1553199, 1553218, 1553236, 1553254, 1553272, 1553290, 1553308, 1553326, 1553344, 1553362, 1553380, 1553397, 1553415, 1553433, 1553451, 1553468, 1553486, 1553504, 1553521, 1553539, 1553556, 1553575, 1553593, 1553612, 1553630, 1553649, 1553667, 1553685, 1553704, 1553722, 1553740, 1553758, 1553776, 1553794, 1553812, 1553830, 1553848,
|
||||
1553866, 1553884, 1553902, 1553920, 1553938, 1553955, 1553973, 1553991, 1554008, 1554026, 1554044, 1554061, 1554078, 1554096, 1554113, 1554131, 1554149, 1554168, 1554186, 1554204, 1554223, 1554241, 1554259, 1554278, 1554296, 1554314, 1554332, 1554350, 1554368, 1554386, 1554404, 1554422, 1554440, 1554457, 1554475, 1554493, 1554511, 1554528, 1554546, 1554563, 1554581, 1554599, 1554616, 1554633, 1554651, 1554668, 1554687, 1554705, 1554724, 1554742, 1554761, 1554779, 1554797, 1554816, 1554834, 1554852, 1554870, 1554888, 1554906, 1554924, 1554942, 1554960, 1554978, 1554996, 1555014, 1555031, 1555049, 1555067, 1555084, 1555102, 1555120, 1555137, 1555155, 1555172, 1555191, 1555210, 1555228, 1555247, 1555265, 1555284, 1555302, 1555321, 1555339, 1555358, 1555376, 1555394, 1555412, 1555431, 1555449, 1555467, 1555485, 1555503, 1555521, 1555539, 1555557, 1555575, 1555592, 1555610, 1555628, 1555645,
|
||||
1555665, 1555684, 1555703, 1555722, 1555740, 1555759, 1555778, 1555797, 1555816, 1555834, 1555853, 1555872, 1555890, 1555909, 1555927, 1555945, 1555964, 1555982, 1556000, 1556019, 1556037, 1556055, 1556073, 1556091, 1556109, 1556127, 1556145, 1556163, 1556181, 1556198, 1556216, 1556234, 1556251, 1556269, 1556287, 1556304, 1556323, 1556342, 1556361, 1556380, 1556399, 1556418, 1556437, 1556455, 1556474, 1556493, 1556511, 1556530, 1556548, 1556567, 1556585, 1556603, 1556622, 1556640, 1556658, 1556676, 1556694, 1556712, 1556730, 1556748, 1556766, 1556784, 1556802, 1556820, 1556837, 1556855, 1556873, 1556890, 1556908, 1556927, 1556946, 1556965, 1556985, 1557004, 1557023, 1557042, 1557060, 1557079, 1557098, 1557117, 1557135, 1557154, 1557173, 1557191, 1557210, 1557228, 1557247, 1557265, 1557283, 1557301, 1557319, 1557338, 1557356, 1557374, 1557392, 1557410, 1557428, 1557446, 1557463, 1557481,
|
||||
1557499, 1557516, 1557534, 1557552, 1557569, 1557587, 1557604, 1557621, 1557639, 1557658, 1557677, 1557696, 1557715, 1557734, 1557753, 1557772, 1557791, 1557810, 1557828, 1557847, 1557865, 1557884, 1557903, 1557921, 1557939, 1557958, 1557976, 1557994, 1558012, 1558031, 1558049, 1558067, 1558085, 1558103, 1558120, 1558138, 1558156, 1558174, 1558191, 1558209, 1558227, 1558244, 1558262, 1558279, 1558296, 1558316, 1558335, 1558355, 1558374, 1558393, 1558413, 1558432, 1558451, 1558470, 1558489, 1558508, 1558526, 1558545, 1558564, 1558583, 1558601, 1558620, 1558638, 1558657, 1558675, 1558694, 1558712, 1558730, 1558748, 1558766, 1558784, 1558802, 1558820, 1558838, 1558856, 1558874, 1558892, 1558909, 1558927, 1558945, 1558962, 1558979, 1558997, 1559014, 1559032, 1559051, 1559071, 1559091, 1559110, 1559130, 1559149, 1559168, 1559188, 1559207, 1559226, 1559245, 1559264, 1559283, 1559302, 1559321,
|
||||
1559340, 1559358, 1559377, 1559396, 1559414, 1559433, 1559451, 1559469, 1559488, 1559506, 1559524, 1559542, 1559560, 1559578, 1559596, 1559614, 1559632, 1559650, 1559668, 1559685, 1559706, 1559726, 1559747, 1559767, 1559787, 1559807, 1559827, 1559847, 1559867, 1559887, 1559907, 1559927, 1559946, 1559966, 1559985, 1560005, 1560024, 1560044, 1560063, 1560082, 1560101, 1560120, 1560139, 1560158, 1560177, 1560196, 1560214, 1560233, 1560251, 1560270, 1560288, 1560307, 1560325, 1560343, 1560361, 1560379, 1560398, 1560416, 1560433, 1560451, 1560469, 1560487, 1560505, 1560522, 1560540, 1560557, 1560575, 1560592, 1560613, 1560634, 1560654, 1560675, 1560695, 1560716, 1560736, 1560756, 1560776, 1560796, 1560816, 1560836, 1560856, 1560876, 1560895, 1560915, 1560934, 1560954, 1560973, 1560992, 1561011, 1561030, 1561050, 1561069, 1561087, 1561106, 1561125, 1561144, 1561162, 1561181, 1561199, 1561218,
|
||||
1561236, 1561254, 1561272, 1561290, 1561308, 1561326, 1561344, 1561362, 1561380, 1561398, 1561415, 1561433, 1561450, 1561472, 1561494, 1561515, 1561537, 1561558, 1561579, 1561601, 1561622, 1561643, 1561664, 1561684, 1561705, 1561726, 1561746, 1561767, 1561787, 1561807, 1561827, 1561848, 1561867, 1561887, 1561907, 1561927, 1561946, 1561966, 1561985, 1562005, 1562024, 1562043, 1562062, 1562081, 1562100, 1562119, 1562138, 1562157, 1562175, 1562194, 1562212, 1562231, 1562249, 1562267, 1562285, 1562304, 1562321, 1562339, 1562357, 1562375, 1562393, 1562410, 1562428, 1562445, 1562463, 1562486, 1562509, 1562532, 1562554, 1562577, 1562599, 1562622, 1562644, 1562666, 1562688, 1562710, 1562731, 1562753, 1562775, 1562796, 1562817, 1562838, 1562860, 1562880, 1562901, 1562922, 1562943, 1562963, 1562983, 1563004, 1563024, 1563044, 1563064, 1563084, 1563104, 1563123, 1563143, 1563162, 1563182, 1563201,
|
||||
1563220, 1563239, 1563258, 1563277, 1563296, 1563315, 1563333, 1563352, 1563370, 1563389, 1563407, 1563425, 1563443, 1563461, 1563479, 1563497, 1563514, 1563532, 1563550, 1563576, 1563602, 1563627, 1563653, 1563678, 1563704, 1563729, 1563754, 1563778, 1563803, 1563827, 1563851, 1563876, 1563899, 1563923, 1563947, 1563970, 1563993, 1564016, 1564039, 1564062, 1564085, 1564107, 1564129, 1564151, 1564173, 1564195, 1564217, 1564239, 1564260, 1564281, 1564302, 1564323, 1564344, 1564365, 1564386, 1564406, 1564427, 1564447, 1564467, 1564487, 1564507, 1564526, 1564546, 1564565, 1564585, 1564604, 1564623, 1564642, 1564661, 1564680, 1564698, 1564717, 1564735, 1564754, 1564772, 1564790, 1564808, 1564826, 1564844, 1564861, 1564879, 1564913, 1564948, 1564982, 1565016, 1565049, 1565082, 1565114, 1565146, 1565178, 1565209, 1565240, 1565271, 1565301, 1565331, 1565361, 1565390, 1565420, 1565448, 1565477,
|
||||
1565505, 1565533, 1565560, 1565587, 1565615, 1565641, 1565668, 1565694, 1565720, 1565745, 1565771, 1565796, 1565821, 1565845, 1565870, 1565894, 1565918, 1565942, 1565965, 1565988, 1566011, 1566034, 1566056, 1566079, 1566101, 1566123, 1566145, 1566166, 1566188, 1566209, 1566230, 1566250, 1566271, 1566291, 1566312, 1566332, 1566351, 1566371, 1566391, 1566410, 1566429, 1566448, 1566467, 1566486, 1566504, 1566522, 1566541, 1566559, 1566576, 1566594, 1566612, 1566629, 1566646, 1566664, 1566681, 1566697, 1566714, 1566731, 1566747, 1566764, 1566780, 1566796, 1566812, 1566828, 1566843, 1566859, 1566874, 1566890, 1566905, 1566920, 1566935, 1566950, 1566964, 1566979, 1566994, 1567008, 1567022, 1567036, 1567051, 1567065, 1567078, 1567092, 1567106, 1567119, 1567133, 1567146, 1567160, 1567173, 1567186, 1567199, 1567212, 1567224, 1567237, 1567250, 1567262, 1567275, 1567287, 1567299, 1567312, 1567324,
|
||||
1567336, 1567348, 1567359, 1567371, 1567383, 1567394, 1567406, 1567417, 1567429, 1567440, 1567451, 1567463, 1567474, 1567485, 1567496, 1567506, 1567517, 1567528, 1567538, 1567549, 1567560, 1567570, 1567580, 1567591, 1567601, 1567611, 1567621, 1567631, 1567641, 1567651, 1567661, 1567671, 1567681, 1567690, 1567700, 1567709, 1567719, 1567728, 1567738, 1567747, 1567756, 1567766, 1567775, 1567784, 1567793, 1567802, 1567811, 1567820, 1567829, 1567837, 1567846, 1567855, 1567863, 1567872, 1567880, 1567889, 1567897, 1567906, 1567914, 1567922, 1567931, 1567939, 1567947, 1567955, 1567963, 1567971, 1567979, 1567987, 1567995, 1568003, 1568010, 1568018, 1568026, 1568033, 1568041, 1568049, 1568056, 1568064, 1568071, 1568078, 1568086, 1568093, 1568100, 1568108, 1568115, 1568122, 1568129, 1568136, 1568143, 1568150, 1568157, 1568164, 1568171, 1568178, 1568185, 1568192, 1568198, 1568205, 1568212, 1568219,
|
||||
1568225, 1568232, 1568238, 1568245, 1568251, 1568258, 1568264, 1568271, 1568277, 1568283, 1568290, 1568296, 1568302, 1568308, 1568314, 1568321, 1568327, 1568333, 1568339, 1568345, 1568351, 1568357, 1568363, 1568369, 1568374, 1568380, 1568386, 1568392, 1568398, 1568403, 1568409, 1568415, 1568421, 1568426, 1568432, 1568437, 1568443, 1568448, 1568454, 1568459, 1568465, 1568470, 1568476, 1568481, 1568486, 1568492, 1568497, 1568502, 1568508, 1568513, 1568518, 1568523, 1568528, 1568533, 1568539, 1568544, 1568549, 1568554, 1568559, 1568564, 1568569, 1568574, 1568579, 1568583, 1568588, 1568593, 1568598, 1568603, 1568608, 1568612, 1568617, 1568622, 1568627, 1568631, 1568636, 1568641, 1568645, 1568650, 1568655, 1568659, 1568664, 1568668, 1568673, 1568677, 1568682, 1568686, 1568691, 1568695, 1568699, 1568704, 1568708, 1568712, 1568717, 1568721, 1568725, 1568730, 1568734, 1568738, 1568742, 1568747,
|
||||
1568751, 1568755, 1568759, 1568763, 1568767, 1568772, 1568776, 1568780, 1568784, 1568788, 1568792, 1568796, 1568800, 1568804, 1568808, 1568812, 1568816, 1568819, 1568823, 1568827, 1568831, 1568835, 1568839, 1568843, 1568847, 1568850, 1568854, 1568858, 1568862, 1568865, 1568869, 1568873, 1568876, 1568880, 1568884, 1568887, 1568891, 1568895, 1568898, 1568902, 1568905, 1568909, 1568913, 1568916, 1568920, 1568923, 1568927, 1568930, 1568934, 1568937, 1568940, 1568944, 1568947, 1568951, 1568954, 1568958, 1568961, 1568964, 1568968, 1568971, 1568974, 1568978, 1568981, 1568984, 1568987, 1568991, 1568994, 1568997, 1569000, 1569004, 1569007, 1569010, 1569013, 1569016, 1569020, 1569023, 1569026, 1569029, 1569032, 1569035, 1569038, 1569041, 1569045, 1569048, 1569051, 1569054, 1569057, 1569060, 1569063, 1569066, 1569069, 1569072, 1569075, 1569078, 1569081, 1569084, 1569086, 1569089, 1569092, 1569095,
|
||||
1569098, 1569101, 1569104, 1569107, 1569110, 1569112, 1569115, 1569118, 1569121, 1569124, 1569126, 1569129, 1569132, 1569135, 1569137, 1569140, 1569143, 1569146, 1569148, 1569151, 1569154, 1569157, 1569159, 1569162, 1569164, 1569167, 1569170, 1569172, 1569175, 1569178, 1569180, 1569183, 1569185, 1569188, 1569191, 1569193, 1569196, 1569198, 1569201, 1569203, 1569206, 1569208, 1569211, 1569214, 1569216, 1569218, 1569221, 1569223, 1569226, 1569228, 1569231, 1569233, 1569236, 1569238, 1569241, 1569243, 1569245, 1569248, 1569250, 1569253, 1569255, 1569257, 1569260, 1569262, 1569264, 1569267, 1569269, 1569271, 1569274, 1569276, 1569278, 1569281, 1569283, 1569285, 1569288, 1569290, 1569292, 1569294, 1569297, 1569299, 1569301, 1569303, 1569306, 1569308, 1569310, 1569312, 1569314, 1569316, 1569319, 1569321, 1569323, 1569325, 1569327, 1569330, 1569332, 1569334, 1569336, 1569338, 1569340, 1569342,
|
||||
1569344, 1569347, 1569349, 1569351, 1569353, 1569355, 1569357, 1569359, 1569361, 1569363, 1569365, 1569367, 1569369, 1569371, 1569373, 1569375, 1569377, 1569379, 1569381, 1569383, 1569385, 1569387, 1569389, 1569391, 1569393, 1569395, 1569397, 1569399, 1569401, 1569403, 1569405, 1569407, 1569409, 1569411, 1569413, 1569415, 1569416, 1569418, 1569420, 1569422, 1569424, 1569426, 1569428, 1569430, 1569432, 1569433, 1569435, 1569437, 1569439, 1569441, 1569443, 1569445, 1569446, 1569448, 1569450, 1569452, 1569454, 1569455, 1569457, 1569459, 1569461, 1569463, 1569464, 1569466, 1569468, 1569470, 1569471, 1569473, 1569475, 1569477, 1569478, 1569480, 1569482, 1569483, 1569485, 1569487, 1569489, 1569490, 1569492, 1569494, 1569495, 1569497, 1569499, 1569501, 1569502, 1569504, 1569506, 1569507, 1569509, 1569510, 1569512, 1569514, 1569515, 1569517, 1569519, 1569520, 1569522, 1569524, 1569525, 1569527,
|
||||
1569528, 1569530, 1569532, 1569533, 1569535, 1569536, 1569538, 1569540, 1569541, 1569543, 1569544, 1569546, 1569547, 1569549, 1569550, 1569552, 1569554, 1569555, 1569557, 1569558, 1569560, 1569561, 1569563, 1569564, 1569566, 1569567, 1569569, 1569570, 1569572, 1569573, 1569575, 1569576, 1569578, 1569579, 1569581, 1569582, 1569584, 1569585, 1569587, 1569588, 1569590, 1569591, 1569592, 1569594, 1569595, 1569597, 1569598, 1569600, 1569601, 1569602, 1569604, 1569605, 1569607, 1569608, 1569610, 1569611, 1569612, 1569614, 1569615, 1569617, 1569618, 1569619, 1569621, 1569622, 1569623, 1569625, 1569626, 1569628, 1569629, 1569630, 1569632, 1569633, 1569634, 1569636, 1569637, 1569638, 1569640, 1569641, 1569642, 1569644, 1569645, 1569646, 1569648, 1569649, 1569650, 1569652, 1569653, 1569654, 1569656, 1569657, 1569658, 1569659, 1569661, 1569662, 1569663, 1569665, 1569666, 1569667, 1569668, 1569670,
|
||||
1569671, 1569672, 1569674, 1569675, 1569676, 1569677, 1569679, 1569680, 1569681, 1569682, 1569684, 1569685, 1569686, 1569687, 1569688, 1569690, 1569691, 1569692, 1569693, 1569694, 1569696, 1569697, 1569698, 1569699, 1569701, 1569702, 1569703, 1569704, 1569705, 1569707, 1569708, 1569709, 1569710, 1569711, 1569712, 1569714, 1569715, 1569716, 1569717, 1569718, 1569719, 1569721, 1569722, 1569723, 1569724, 1569725, 1569726, 1569727, 1569729, 1569730, 1569731, 1569732, 1569733, 1569734, 1569735, 1569736, 1569738, 1569739, 1569740, 1569741, 1569742, 1569743, 1569744, 1569745, 1569746, 1569748, 1569749, 1569750, 1569751, 1569752, 1569753, 1569754, 1569755, 1569756, 1569757, 1569759, 1569760, 1569761, 1569762, 1569763, 1569764, 1569765, 1569766, 1569767, 1569768, 1569769, 1569770, 1569771, 1569772, 1569773, 1569774, 1569775, 1569777, 1569777, 1569779, 1569780, 1569781, 1569782, 1569783, 1569784,
|
||||
1569785, 1569786, 1569787, 1569788, 1569789, 1569790, 1569791, 1569792, 1569793, 1569794, 1569795, 1569796, 785398
|
||||
1523866, 1523884, 1523902, 1523919, 1523937, 1523955, 1523973, 1523991, 1524008, 1524026, 1524044, 1524062, 1524080, 1524097, 1524115, 1524133, 1524150, 1524168, 1524186, 1524203, 1524221, 1524239, 1524256, 1524274, 1524291, 1524309, 1524326, 1524344, 1524362, 1524379, 1524397, 1524414, 1524431, 1524449, 1524466, 1524484, 1524501, 1524519, 1524536, 1524553, 1524571, 1524588, 1524605, 1524623, 1524640, 1524657, 1524675, 1524692, 1524709, 1524726, 1524744, 1524761, 1524778, 1524795, 1524813, 1524830, 1524847, 1524864, 1524881, 1524898, 1524915, 1524932, 1524950, 1524967, 1524984, 1525001, 1525018, 1525035, 1525052, 1525069, 1525086, 1525103, 1525120, 1525137, 1525154, 1525171, 1525187, 1525204, 1525221, 1525238, 1525255, 1525272, 1525289, 1525305, 1525322, 1525339, 1525356, 1525373, 1525391, 1525409, 1525427, 1525445, 1525464, 1525482, 1525500, 1525518, 1525536, 1525554, 1525572, 1525591,
|
||||
1525609, 1525627, 1525645, 1525663, 1525681, 1525699, 1525717, 1525735, 1525753, 1525770, 1525788, 1525806, 1525824, 1525842, 1525860, 1525878, 1525896, 1525913, 1525931, 1525949, 1525967, 1525985, 1526002, 1526020, 1526038, 1526056, 1526073, 1526091, 1526108, 1526126, 1526144, 1526161, 1526179, 1526197, 1526214, 1526232, 1526249, 1526267, 1526284, 1526302, 1526319, 1526337, 1526354, 1526372, 1526389, 1526407, 1526424, 1526442, 1526459, 1526476, 1526494, 1526511, 1526528, 1526546, 1526563, 1526580, 1526598, 1526615, 1526632, 1526649, 1526667, 1526684, 1526701, 1526718, 1526735, 1526753, 1526770, 1526787, 1526804, 1526821, 1526838, 1526855, 1526872, 1526889, 1526906, 1526923, 1526940, 1526957, 1526974, 1526991, 1527008, 1527025, 1527042, 1527059, 1527076, 1527093, 1527110, 1527127, 1527144, 1527161, 1527177, 1527194, 1527211, 1527228, 1527245, 1527261, 1527278, 1527295, 1527312, 1527328,
|
||||
1527345, 1527363, 1527382, 1527400, 1527418, 1527436, 1527455, 1527473, 1527491, 1527509, 1527527, 1527546, 1527564, 1527582, 1527600, 1527618, 1527636, 1527654, 1527672, 1527690, 1527708, 1527726, 1527744, 1527762, 1527780, 1527798, 1527816, 1527834, 1527852, 1527870, 1527888, 1527905, 1527923, 1527941, 1527959, 1527977, 1527994, 1528012, 1528030, 1528048, 1528066, 1528083, 1528101, 1528119, 1528136, 1528154, 1528172, 1528189, 1528207, 1528224, 1528242, 1528259, 1528277, 1528295, 1528312, 1528330, 1528347, 1528365, 1528382, 1528399, 1528417, 1528434, 1528452, 1528469, 1528486, 1528504, 1528521, 1528539, 1528556, 1528573, 1528591, 1528608, 1528625, 1528642, 1528660, 1528677, 1528694, 1528711, 1528728, 1528746, 1528763, 1528780, 1528797, 1528814, 1528831, 1528848, 1528865, 1528882, 1528899, 1528916, 1528933, 1528950, 1528967, 1528984, 1529001, 1529018, 1529035, 1529052, 1529069, 1529086,
|
||||
1529103, 1529120, 1529136, 1529153, 1529171, 1529190, 1529208, 1529226, 1529244, 1529262, 1529281, 1529299, 1529317, 1529335, 1529353, 1529371, 1529389, 1529407, 1529425, 1529443, 1529461, 1529479, 1529497, 1529515, 1529533, 1529551, 1529569, 1529587, 1529604, 1529622, 1529640, 1529658, 1529676, 1529693, 1529711, 1529729, 1529747, 1529764, 1529782, 1529800, 1529817, 1529835, 1529853, 1529870, 1529888, 1529906, 1529923, 1529941, 1529958, 1529976, 1529993, 1530011, 1530028, 1530046, 1530063, 1530081, 1530098, 1530116, 1530133, 1530150, 1530168, 1530185, 1530202, 1530220, 1530237, 1530254, 1530272, 1530289, 1530306, 1530323, 1530341, 1530358, 1530375, 1530392, 1530409, 1530427, 1530444, 1530461, 1530478, 1530495, 1530512, 1530529, 1530546, 1530563, 1530580, 1530597, 1530614, 1530631, 1530648, 1530665, 1530682, 1530699, 1530716, 1530733, 1530750, 1530767, 1530784, 1530800, 1530817, 1530835,
|
||||
1530853, 1530871, 1530890, 1530908, 1530926, 1530944, 1530962, 1530980, 1530998, 1531016, 1531034, 1531052, 1531070, 1531088, 1531105, 1531123, 1531141, 1531159, 1531177, 1531195, 1531213, 1531230, 1531248, 1531266, 1531284, 1531301, 1531319, 1531337, 1531354, 1531372, 1531390, 1531407, 1531425, 1531442, 1531460, 1531478, 1531495, 1531513, 1531530, 1531548, 1531565, 1531583, 1531600, 1531618, 1531635, 1531653, 1531670, 1531687, 1531705, 1531722, 1531739, 1531757, 1531774, 1531791, 1531808, 1531826, 1531843, 1531860, 1531877, 1531895, 1531912, 1531929, 1531946, 1531963, 1531980, 1531998, 1532015, 1532032, 1532049, 1532066, 1532083, 1532100, 1532117, 1532134, 1532151, 1532168, 1532185, 1532202, 1532218, 1532235, 1532252, 1532269, 1532286, 1532303, 1532320, 1532336, 1532353, 1532371, 1532390, 1532408, 1532426, 1532444, 1532462, 1532480, 1532499, 1532517, 1532535, 1532553, 1532571, 1532589,
|
||||
1532607, 1532625, 1532643, 1532661, 1532679, 1532697, 1532715, 1532732, 1532750, 1532768, 1532786, 1532804, 1532822, 1532839, 1532857, 1532875, 1532893, 1532910, 1532928, 1532946, 1532963, 1532981, 1532999, 1533016, 1533034, 1533051, 1533069, 1533087, 1533104, 1533122, 1533139, 1533157, 1533174, 1533192, 1533209, 1533226, 1533244, 1533261, 1533279, 1533296, 1533313, 1533331, 1533348, 1533365, 1533383, 1533400, 1533417, 1533434, 1533452, 1533469, 1533486, 1533503, 1533520, 1533537, 1533555, 1533572, 1533589, 1533606, 1533623, 1533640, 1533657, 1533674, 1533691, 1533708, 1533725, 1533742, 1533759, 1533776, 1533794, 1533812, 1533830, 1533849, 1533867, 1533885, 1533903, 1533921, 1533939, 1533957, 1533976, 1533994, 1534012, 1534030, 1534048, 1534066, 1534084, 1534102, 1534119, 1534137, 1534155, 1534173, 1534191, 1534209, 1534227, 1534245, 1534262, 1534280, 1534298, 1534316, 1534333, 1534351,
|
||||
1534369, 1534386, 1534404, 1534422, 1534439, 1534457, 1534475, 1534492, 1534510, 1534527, 1534545, 1534562, 1534580, 1534597, 1534615, 1534632, 1534650, 1534667, 1534684, 1534702, 1534719, 1534736, 1534754, 1534771, 1534788, 1534806, 1534823, 1534840, 1534857, 1534875, 1534892, 1534909, 1534926, 1534943, 1534960, 1534977, 1534994, 1535012, 1535029, 1535046, 1535063, 1535080, 1535097, 1535115, 1535133, 1535151, 1535169, 1535187, 1535206, 1535224, 1535242, 1535260, 1535278, 1535296, 1535314, 1535332, 1535350, 1535368, 1535386, 1535403, 1535421, 1535439, 1535457, 1535475, 1535493, 1535510, 1535528, 1535546, 1535564, 1535581, 1535599, 1535617, 1535634, 1535652, 1535670, 1535687, 1535705, 1535722, 1535740, 1535758, 1535775, 1535793, 1535810, 1535828, 1535845, 1535862, 1535880, 1535897, 1535915, 1535932, 1535949, 1535967, 1535984, 1536001, 1536019, 1536036, 1536053, 1536070, 1536087, 1536105,
|
||||
1536122, 1536139, 1536156, 1536173, 1536190, 1536208, 1536225, 1536242, 1536259, 1536276, 1536293, 1536310, 1536327, 1536345, 1536363, 1536381, 1536400, 1536418, 1536436, 1536454, 1536472, 1536490, 1536509, 1536527, 1536545, 1536563, 1536581, 1536599, 1536617, 1536635, 1536653, 1536670, 1536688, 1536706, 1536724, 1536742, 1536760, 1536778, 1536795, 1536813, 1536831, 1536849, 1536866, 1536884, 1536902, 1536919, 1536937, 1536955, 1536972, 1536990, 1537007, 1537025, 1537042, 1537060, 1537077, 1537095, 1537112, 1537130, 1537147, 1537165, 1537182, 1537199, 1537217, 1537234, 1537251, 1537269, 1537286, 1537303, 1537320, 1537338, 1537355, 1537372, 1537389, 1537406, 1537423, 1537441, 1537458, 1537475, 1537493, 1537511, 1537529, 1537547, 1537566, 1537584, 1537602, 1537620, 1537638, 1537656, 1537674, 1537692, 1537710, 1537728, 1537746, 1537763, 1537781, 1537799, 1537817, 1537835, 1537853, 1537870,
|
||||
1537888, 1537906, 1537924, 1537941, 1537959, 1537977, 1537994, 1538012, 1538030, 1538047, 1538065, 1538082, 1538100, 1538117, 1538135, 1538152, 1538170, 1538187, 1538205, 1538222, 1538239, 1538257, 1538274, 1538291, 1538309, 1538326, 1538343, 1538360, 1538378, 1538395, 1538412, 1538429, 1538446, 1538464, 1538481, 1538498, 1538515, 1538532, 1538549, 1538567, 1538585, 1538604, 1538622, 1538640, 1538658, 1538676, 1538694, 1538712, 1538730, 1538748, 1538766, 1538784, 1538802, 1538820, 1538838, 1538856, 1538874, 1538892, 1538910, 1538927, 1538945, 1538963, 1538981, 1538998, 1539016, 1539034, 1539052, 1539069, 1539087, 1539105, 1539122, 1539140, 1539157, 1539175, 1539192, 1539210, 1539227, 1539245, 1539262, 1539280, 1539297, 1539314, 1539332, 1539349, 1539367, 1539384, 1539401, 1539418, 1539436, 1539453, 1539470, 1539487, 1539505, 1539522, 1539539, 1539556, 1539574, 1539592, 1539610, 1539628,
|
||||
1539646, 1539664, 1539682, 1539700, 1539718, 1539736, 1539754, 1539771, 1539789, 1539807, 1539825, 1539842, 1539860, 1539878, 1539896, 1539913, 1539931, 1539948, 1539966, 1539984, 1540001, 1540019, 1540036, 1540054, 1540071, 1540089, 1540106, 1540124, 1540141, 1540158, 1540176, 1540193, 1540210, 1540228, 1540245, 1540262, 1540280, 1540297, 1540314, 1540331, 1540348, 1540366, 1540383, 1540400, 1540417, 1540434, 1540451, 1540468, 1540485, 1540502, 1540520, 1540538, 1540556, 1540574, 1540592, 1540610, 1540627, 1540645, 1540663, 1540681, 1540699, 1540716, 1540734, 1540752, 1540770, 1540787, 1540805, 1540822, 1540840, 1540858, 1540875, 1540893, 1540910, 1540928, 1540945, 1540963, 1540980, 1540997, 1541015, 1541032, 1541050, 1541067, 1541084, 1541102, 1541119, 1541136, 1541153, 1541171, 1541188, 1541205, 1541222, 1541239, 1541256, 1541273, 1541290, 1541308, 1541325, 1541342, 1541359, 1541376,
|
||||
1541393, 1541411, 1541429, 1541446, 1541464, 1541482, 1541500, 1541518, 1541536, 1541554, 1541571, 1541589, 1541607, 1541625, 1541643, 1541660, 1541678, 1541695, 1541713, 1541731, 1541748, 1541766, 1541783, 1541801, 1541818, 1541836, 1541853, 1541871, 1541888, 1541906, 1541923, 1541940, 1541958, 1541975, 1541992, 1542010, 1542027, 1542044, 1542061, 1542078, 1542096, 1542113, 1542130, 1542147, 1542164, 1542181, 1542198, 1542215, 1542232, 1542250, 1542268, 1542286, 1542304, 1542322, 1542340, 1542358, 1542376, 1542394, 1542412, 1542430, 1542448, 1542466, 1542484, 1542502, 1542519, 1542537, 1542555, 1542572, 1542590, 1542608, 1542625, 1542643, 1542661, 1542678, 1542696, 1542713, 1542731, 1542748, 1542766, 1542783, 1542801, 1542818, 1542835, 1542853, 1542870, 1542887, 1542905, 1542922, 1542939, 1542956, 1542974, 1542991, 1543008, 1543025, 1543044, 1543062, 1543080, 1543098, 1543117, 1543135,
|
||||
1543153, 1543171, 1543189, 1543208, 1543226, 1543244, 1543262, 1543280, 1543298, 1543316, 1543334, 1543352, 1543370, 1543388, 1543405, 1543423, 1543441, 1543459, 1543477, 1543494, 1543512, 1543530, 1543547, 1543565, 1543583, 1543600, 1543618, 1543636, 1543653, 1543671, 1543688, 1543706, 1543723, 1543741, 1543758, 1543775, 1543794, 1543812, 1543830, 1543848, 1543866, 1543884, 1543902, 1543921, 1543939, 1543957, 1543975, 1543993, 1544010, 1544028, 1544046, 1544064, 1544082, 1544100, 1544118, 1544135, 1544153, 1544171, 1544189, 1544206, 1544224, 1544242, 1544259, 1544277, 1544294, 1544312, 1544330, 1544347, 1544364, 1544382, 1544399, 1544417, 1544434, 1544451, 1544469, 1544486, 1544504, 1544523, 1544541, 1544559, 1544577, 1544595, 1544613, 1544631, 1544649, 1544667, 1544685, 1544703, 1544721, 1544739, 1544757, 1544774, 1544792, 1544810, 1544828, 1544845, 1544863, 1544881, 1544898, 1544916,
|
||||
1544934, 1544951, 1544969, 1544986, 1545004, 1545021, 1545039, 1545056, 1545074, 1545091, 1545108, 1545126, 1545143, 1545160, 1545179, 1545197, 1545215, 1545233, 1545251, 1545269, 1545288, 1545306, 1545324, 1545342, 1545360, 1545378, 1545395, 1545413, 1545431, 1545449, 1545467, 1545485, 1545503, 1545520, 1545538, 1545556, 1545573, 1545591, 1545609, 1545626, 1545644, 1545661, 1545679, 1545696, 1545714, 1545731, 1545749, 1545766, 1545784, 1545801, 1545819, 1545838, 1545856, 1545874, 1545893, 1545911, 1545929, 1545947, 1545965, 1545983, 1546002, 1546020, 1546038, 1546056, 1546074, 1546092, 1546110, 1546127, 1546145, 1546163, 1546181, 1546199, 1546217, 1546234, 1546252, 1546270, 1546287, 1546305, 1546323, 1546340, 1546358, 1546375, 1546393, 1546410, 1546428, 1546446, 1546464, 1546482, 1546500, 1546518, 1546536, 1546554, 1546571, 1546589, 1546607, 1546625, 1546642, 1546660, 1546678, 1546695,
|
||||
1546713, 1546730, 1546748, 1546766, 1546783, 1546800, 1546818, 1546835, 1546853, 1546870, 1546887, 1546905, 1546922, 1546939, 1546956, 1546974, 1546991, 1547009, 1547027, 1547045, 1547064, 1547082, 1547100, 1547118, 1547136, 1547154, 1547172, 1547190, 1547208, 1547226, 1547244, 1547262, 1547280, 1547297, 1547315, 1547333, 1547351, 1547369, 1547386, 1547404, 1547422, 1547439, 1547457, 1547474, 1547492, 1547509, 1547527, 1547544, 1547562, 1547580, 1547598, 1547616, 1547634, 1547652, 1547670, 1547688, 1547705, 1547723, 1547741, 1547758, 1547776, 1547794, 1547811, 1547829, 1547847, 1547864, 1547882, 1547899, 1547917, 1547934, 1547951, 1547969, 1547986, 1548003, 1548021, 1548038, 1548055, 1548072, 1548091, 1548109, 1548128, 1548146, 1548164, 1548183, 1548201, 1548219, 1548237, 1548255, 1548274, 1548292, 1548310, 1548328, 1548346, 1548364, 1548382, 1548400, 1548417, 1548435, 1548453, 1548471,
|
||||
1548489, 1548506, 1548524, 1548542, 1548560, 1548577, 1548596, 1548614, 1548632, 1548650, 1548668, 1548686, 1548704, 1548723, 1548741, 1548759, 1548777, 1548794, 1548812, 1548830, 1548848, 1548866, 1548884, 1548902, 1548919, 1548937, 1548955, 1548972, 1548990, 1549008, 1549025, 1549043, 1549060, 1549078, 1549096, 1549114, 1549133, 1549151, 1549169, 1549187, 1549204, 1549222, 1549240, 1549258, 1549276, 1549294, 1549311, 1549329, 1549347, 1549365, 1549382, 1549400, 1549417, 1549435, 1549453, 1549470, 1549488, 1549505, 1549522, 1549540, 1549559, 1549577, 1549595, 1549612, 1549630, 1549648, 1549666, 1549684, 1549702, 1549720, 1549737, 1549755, 1549773, 1549790, 1549808, 1549826, 1549843, 1549861, 1549878, 1549896, 1549913, 1549931, 1549948, 1549965, 1549984, 1550002, 1550020, 1550038, 1550055, 1550073, 1550091, 1550109, 1550127, 1550145, 1550162, 1550180, 1550198, 1550216, 1550233, 1550251,
|
||||
1550268, 1550286, 1550303, 1550321, 1550338, 1550356, 1550373, 1550390, 1550409, 1550427, 1550445, 1550463, 1550481, 1550499, 1550516, 1550534, 1550552, 1550570, 1550588, 1550605, 1550623, 1550641, 1550658, 1550676, 1550694, 1550711, 1550729, 1550746, 1550764, 1550781, 1550799, 1550817, 1550835, 1550853, 1550871, 1550889, 1550907, 1550925, 1550943, 1550961, 1550979, 1550996, 1551014, 1551032, 1551050, 1551067, 1551085, 1551103, 1551120, 1551138, 1551156, 1551173, 1551190, 1551209, 1551227, 1551245, 1551263, 1551282, 1551300, 1551318, 1551336, 1551354, 1551372, 1551390, 1551408, 1551426, 1551443, 1551461, 1551479, 1551497, 1551514, 1551532, 1551550, 1551567, 1551586, 1551604, 1551623, 1551641, 1551659, 1551678, 1551696, 1551714, 1551732, 1551751, 1551769, 1551787, 1551805, 1551823, 1551841, 1551859, 1551877, 1551895, 1551912, 1551930, 1551948, 1551966, 1551983, 1552001, 1552019, 1552036,
|
||||
1552054, 1552071, 1552089, 1552106, 1552124, 1552141, 1552159, 1552176, 1552193, 1552211, 1552228, 1552245, 1552262, 1552279, 1552297, 1552315, 1552333, 1552351, 1552369, 1552387, 1552405, 1552423, 1552440, 1552458, 1552476, 1552493, 1552511, 1552529, 1552546, 1552564, 1552581, 1552599, 1552616, 1552634, 1552653, 1552671, 1552689, 1552707, 1552726, 1552744, 1552762, 1552780, 1552798, 1552816, 1552834, 1552852, 1552869, 1552887, 1552905, 1552923, 1552941, 1552959, 1552978, 1552997, 1553015, 1553034, 1553052, 1553071, 1553089, 1553108, 1553126, 1553145, 1553163, 1553181, 1553199, 1553218, 1553236, 1553254, 1553272, 1553290, 1553308, 1553326, 1553344, 1553362, 1553380, 1553397, 1553415, 1553433, 1553451, 1553468, 1553486, 1553504, 1553521, 1553539, 1553556, 1553575, 1553593, 1553612, 1553630, 1553649, 1553667, 1553685, 1553704, 1553722, 1553740, 1553758, 1553776, 1553794, 1553812, 1553830,
|
||||
1553848, 1553866, 1553884, 1553902, 1553920, 1553938, 1553955, 1553973, 1553991, 1554008, 1554026, 1554044, 1554061, 1554078, 1554096, 1554113, 1554131, 1554149, 1554168, 1554186, 1554204, 1554223, 1554241, 1554259, 1554278, 1554296, 1554314, 1554332, 1554350, 1554368, 1554386, 1554404, 1554422, 1554440, 1554457, 1554475, 1554493, 1554511, 1554528, 1554546, 1554563, 1554581, 1554599, 1554616, 1554633, 1554651, 1554668, 1554687, 1554705, 1554724, 1554742, 1554761, 1554779, 1554797, 1554816, 1554834, 1554852, 1554870, 1554888, 1554906, 1554924, 1554942, 1554960, 1554978, 1554996, 1555014, 1555031, 1555049, 1555067, 1555084, 1555102, 1555120, 1555137, 1555155, 1555172, 1555191, 1555210, 1555228, 1555247, 1555265, 1555284, 1555302, 1555321, 1555339, 1555358, 1555376, 1555394, 1555412, 1555431, 1555449, 1555467, 1555485, 1555503, 1555521, 1555539, 1555557, 1555575, 1555592, 1555610, 1555628,
|
||||
1555645, 1555665, 1555684, 1555703, 1555722, 1555740, 1555759, 1555778, 1555797, 1555816, 1555834, 1555853, 1555872, 1555890, 1555909, 1555927, 1555945, 1555964, 1555982, 1556000, 1556019, 1556037, 1556055, 1556073, 1556091, 1556109, 1556127, 1556145, 1556163, 1556181, 1556198, 1556216, 1556234, 1556251, 1556269, 1556287, 1556304, 1556323, 1556342, 1556361, 1556380, 1556399, 1556418, 1556437, 1556455, 1556474, 1556493, 1556511, 1556530, 1556548, 1556567, 1556585, 1556603, 1556622, 1556640, 1556658, 1556676, 1556694, 1556712, 1556730, 1556748, 1556766, 1556784, 1556802, 1556820, 1556837, 1556855, 1556873, 1556890, 1556908, 1556927, 1556946, 1556965, 1556985, 1557004, 1557023, 1557042, 1557060, 1557079, 1557098, 1557117, 1557135, 1557154, 1557173, 1557191, 1557210, 1557228, 1557247, 1557265, 1557283, 1557301, 1557319, 1557338, 1557356, 1557374, 1557392, 1557410, 1557428, 1557446, 1557463,
|
||||
1557481, 1557499, 1557516, 1557534, 1557552, 1557569, 1557587, 1557604, 1557621, 1557639, 1557658, 1557677, 1557696, 1557715, 1557734, 1557753, 1557772, 1557791, 1557810, 1557828, 1557847, 1557865, 1557884, 1557903, 1557921, 1557939, 1557958, 1557976, 1557994, 1558012, 1558031, 1558049, 1558067, 1558085, 1558103, 1558120, 1558138, 1558156, 1558174, 1558191, 1558209, 1558227, 1558244, 1558262, 1558279, 1558296, 1558316, 1558335, 1558355, 1558374, 1558393, 1558413, 1558432, 1558451, 1558470, 1558489, 1558508, 1558526, 1558545, 1558564, 1558583, 1558601, 1558620, 1558638, 1558657, 1558675, 1558694, 1558712, 1558730, 1558748, 1558766, 1558784, 1558802, 1558820, 1558838, 1558856, 1558874, 1558892, 1558909, 1558927, 1558945, 1558962, 1558979, 1558997, 1559014, 1559032, 1559051, 1559071, 1559091, 1559110, 1559130, 1559149, 1559168, 1559188, 1559207, 1559226, 1559245, 1559264, 1559283, 1559302,
|
||||
1559321, 1559340, 1559358, 1559377, 1559396, 1559414, 1559433, 1559451, 1559469, 1559488, 1559506, 1559524, 1559542, 1559560, 1559578, 1559596, 1559614, 1559632, 1559650, 1559668, 1559685, 1559706, 1559726, 1559747, 1559767, 1559787, 1559807, 1559827, 1559847, 1559867, 1559887, 1559907, 1559927, 1559946, 1559966, 1559985, 1560005, 1560024, 1560044, 1560063, 1560082, 1560101, 1560120, 1560139, 1560158, 1560177, 1560196, 1560214, 1560233, 1560251, 1560270, 1560288, 1560307, 1560325, 1560343, 1560361, 1560379, 1560398, 1560416, 1560433, 1560451, 1560469, 1560487, 1560505, 1560522, 1560540, 1560557, 1560575, 1560592, 1560613, 1560634, 1560654, 1560675, 1560695, 1560716, 1560736, 1560756, 1560776, 1560796, 1560816, 1560836, 1560856, 1560876, 1560895, 1560915, 1560934, 1560954, 1560973, 1560992, 1561011, 1561030, 1561050, 1561069, 1561087, 1561106, 1561125, 1561144, 1561162, 1561181, 1561199,
|
||||
1561218, 1561236, 1561254, 1561272, 1561290, 1561308, 1561326, 1561344, 1561362, 1561380, 1561398, 1561415, 1561433, 1561450, 1561472, 1561494, 1561515, 1561537, 1561558, 1561579, 1561601, 1561622, 1561643, 1561664, 1561684, 1561705, 1561726, 1561746, 1561767, 1561787, 1561807, 1561827, 1561848, 1561867, 1561887, 1561907, 1561927, 1561946, 1561966, 1561985, 1562005, 1562024, 1562043, 1562062, 1562081, 1562100, 1562119, 1562138, 1562157, 1562175, 1562194, 1562212, 1562231, 1562249, 1562267, 1562285, 1562304, 1562321, 1562339, 1562357, 1562375, 1562393, 1562410, 1562428, 1562445, 1562463, 1562486, 1562509, 1562532, 1562554, 1562577, 1562599, 1562622, 1562644, 1562666, 1562688, 1562710, 1562731, 1562753, 1562775, 1562796, 1562817, 1562838, 1562860, 1562880, 1562901, 1562922, 1562943, 1562963, 1562983, 1563004, 1563024, 1563044, 1563064, 1563084, 1563104, 1563123, 1563143, 1563162, 1563182,
|
||||
1563201, 1563220, 1563239, 1563258, 1563277, 1563296, 1563315, 1563333, 1563352, 1563370, 1563389, 1563407, 1563425, 1563443, 1563461, 1563479, 1563497, 1563514, 1563532, 1563550, 1563576, 1563602, 1563627, 1563653, 1563678, 1563704, 1563729, 1563754, 1563778, 1563803, 1563827, 1563851, 1563876, 1563899, 1563923, 1563947, 1563970, 1563993, 1564016, 1564039, 1564062, 1564085, 1564107, 1564129, 1564151, 1564173, 1564195, 1564217, 1564239, 1564260, 1564281, 1564302, 1564323, 1564344, 1564365, 1564386, 1564406, 1564427, 1564447, 1564467, 1564487, 1564507, 1564526, 1564546, 1564565, 1564585, 1564604, 1564623, 1564642, 1564661, 1564680, 1564698, 1564717, 1564735, 1564754, 1564772, 1564790, 1564808, 1564826, 1564844, 1564861, 1564879, 1564913, 1564948, 1564982, 1565016, 1565049, 1565082, 1565114, 1565146, 1565178, 1565209, 1565240, 1565271, 1565301, 1565331, 1565361, 1565390, 1565420, 1565448,
|
||||
1565477, 1565505, 1565533, 1565560, 1565587, 1565615, 1565641, 1565668, 1565694, 1565720, 1565745, 1565771, 1565796, 1565821, 1565845, 1565870, 1565894, 1565918, 1565942, 1565965, 1565988, 1566011, 1566034, 1566056, 1566079, 1566101, 1566123, 1566145, 1566166, 1566188, 1566209, 1566230, 1566250, 1566271, 1566291, 1566312, 1566332, 1566351, 1566371, 1566391, 1566410, 1566429, 1566448, 1566467, 1566486, 1566504, 1566522, 1566541, 1566559, 1566576, 1566594, 1566612, 1566629, 1566646, 1566664, 1566681, 1566697, 1566714, 1566731, 1566747, 1566764, 1566780, 1566796, 1566812, 1566828, 1566843, 1566859, 1566874, 1566890, 1566905, 1566920, 1566935, 1566950, 1566964, 1566979, 1566994, 1567008, 1567022, 1567036, 1567051, 1567065, 1567078, 1567092, 1567106, 1567119, 1567133, 1567146, 1567160, 1567173, 1567186, 1567199, 1567212, 1567224, 1567237, 1567250, 1567262, 1567275, 1567287, 1567299, 1567312,
|
||||
1567324, 1567336, 1567348, 1567359, 1567371, 1567383, 1567394, 1567406, 1567417, 1567429, 1567440, 1567451, 1567463, 1567474, 1567485, 1567496, 1567506, 1567517, 1567528, 1567538, 1567549, 1567560, 1567570, 1567580, 1567591, 1567601, 1567611, 1567621, 1567631, 1567641, 1567651, 1567661, 1567671, 1567681, 1567690, 1567700, 1567709, 1567719, 1567728, 1567738, 1567747, 1567756, 1567766, 1567775, 1567784, 1567793, 1567802, 1567811, 1567820, 1567829, 1567837, 1567846, 1567855, 1567863, 1567872, 1567880, 1567889, 1567897, 1567906, 1567914, 1567922, 1567931, 1567939, 1567947, 1567955, 1567963, 1567971, 1567979, 1567987, 1567995, 1568003, 1568010, 1568018, 1568026, 1568033, 1568041, 1568049, 1568056, 1568064, 1568071, 1568078, 1568086, 1568093, 1568100, 1568108, 1568115, 1568122, 1568129, 1568136, 1568143, 1568150, 1568157, 1568164, 1568171, 1568178, 1568185, 1568192, 1568198, 1568205, 1568212,
|
||||
1568219, 1568225, 1568232, 1568238, 1568245, 1568251, 1568258, 1568264, 1568271, 1568277, 1568283, 1568290, 1568296, 1568302, 1568308, 1568314, 1568321, 1568327, 1568333, 1568339, 1568345, 1568351, 1568357, 1568363, 1568369, 1568374, 1568380, 1568386, 1568392, 1568398, 1568403, 1568409, 1568415, 1568421, 1568426, 1568432, 1568437, 1568443, 1568448, 1568454, 1568459, 1568465, 1568470, 1568476, 1568481, 1568486, 1568492, 1568497, 1568502, 1568508, 1568513, 1568518, 1568523, 1568528, 1568533, 1568539, 1568544, 1568549, 1568554, 1568559, 1568564, 1568569, 1568574, 1568579, 1568583, 1568588, 1568593, 1568598, 1568603, 1568608, 1568612, 1568617, 1568622, 1568627, 1568631, 1568636, 1568641, 1568645, 1568650, 1568655, 1568659, 1568664, 1568668, 1568673, 1568677, 1568682, 1568686, 1568691, 1568695, 1568699, 1568704, 1568708, 1568712, 1568717, 1568721, 1568725, 1568730, 1568734, 1568738, 1568742,
|
||||
1568747, 1568751, 1568755, 1568759, 1568763, 1568767, 1568772, 1568776, 1568780, 1568784, 1568788, 1568792, 1568796, 1568800, 1568804, 1568808, 1568812, 1568816, 1568819, 1568823, 1568827, 1568831, 1568835, 1568839, 1568843, 1568847, 1568850, 1568854, 1568858, 1568862, 1568865, 1568869, 1568873, 1568876, 1568880, 1568884, 1568887, 1568891, 1568895, 1568898, 1568902, 1568905, 1568909, 1568913, 1568916, 1568920, 1568923, 1568927, 1568930, 1568934, 1568937, 1568940, 1568944, 1568947, 1568951, 1568954, 1568958, 1568961, 1568964, 1568968, 1568971, 1568974, 1568978, 1568981, 1568984, 1568987, 1568991, 1568994, 1568997, 1569000, 1569004, 1569007, 1569010, 1569013, 1569016, 1569020, 1569023, 1569026, 1569029, 1569032, 1569035, 1569038, 1569041, 1569045, 1569048, 1569051, 1569054, 1569057, 1569060, 1569063, 1569066, 1569069, 1569072, 1569075, 1569078, 1569081, 1569084, 1569086, 1569089, 1569092,
|
||||
1569095, 1569098, 1569101, 1569104, 1569107, 1569110, 1569112, 1569115, 1569118, 1569121, 1569124, 1569126, 1569129, 1569132, 1569135, 1569137, 1569140, 1569143, 1569146, 1569148, 1569151, 1569154, 1569157, 1569159, 1569162, 1569164, 1569167, 1569170, 1569172, 1569175, 1569178, 1569180, 1569183, 1569185, 1569188, 1569191, 1569193, 1569196, 1569198, 1569201, 1569203, 1569206, 1569208, 1569211, 1569214, 1569216, 1569218, 1569221, 1569223, 1569226, 1569228, 1569231, 1569233, 1569236, 1569238, 1569241, 1569243, 1569245, 1569248, 1569250, 1569253, 1569255, 1569257, 1569260, 1569262, 1569264, 1569267, 1569269, 1569271, 1569274, 1569276, 1569278, 1569281, 1569283, 1569285, 1569288, 1569290, 1569292, 1569294, 1569297, 1569299, 1569301, 1569303, 1569306, 1569308, 1569310, 1569312, 1569314, 1569316, 1569319, 1569321, 1569323, 1569325, 1569327, 1569330, 1569332, 1569334, 1569336, 1569338, 1569340,
|
||||
1569342, 1569344, 1569347, 1569349, 1569351, 1569353, 1569355, 1569357, 1569359, 1569361, 1569363, 1569365, 1569367, 1569369, 1569371, 1569373, 1569375, 1569377, 1569379, 1569381, 1569383, 1569385, 1569387, 1569389, 1569391, 1569393, 1569395, 1569397, 1569399, 1569401, 1569403, 1569405, 1569407, 1569409, 1569411, 1569413, 1569415, 1569416, 1569418, 1569420, 1569422, 1569424, 1569426, 1569428, 1569430, 1569432, 1569433, 1569435, 1569437, 1569439, 1569441, 1569443, 1569445, 1569446, 1569448, 1569450, 1569452, 1569454, 1569455, 1569457, 1569459, 1569461, 1569463, 1569464, 1569466, 1569468, 1569470, 1569471, 1569473, 1569475, 1569477, 1569478, 1569480, 1569482, 1569483, 1569485, 1569487, 1569489, 1569490, 1569492, 1569494, 1569495, 1569497, 1569499, 1569501, 1569502, 1569504, 1569506, 1569507, 1569509, 1569510, 1569512, 1569514, 1569515, 1569517, 1569519, 1569520, 1569522, 1569524, 1569525,
|
||||
1569527, 1569528, 1569530, 1569532, 1569533, 1569535, 1569536, 1569538, 1569540, 1569541, 1569543, 1569544, 1569546, 1569547, 1569549, 1569550, 1569552, 1569554, 1569555, 1569557, 1569558, 1569560, 1569561, 1569563, 1569564, 1569566, 1569567, 1569569, 1569570, 1569572, 1569573, 1569575, 1569576, 1569578, 1569579, 1569581, 1569582, 1569584, 1569585, 1569587, 1569588, 1569590, 1569591, 1569592, 1569594, 1569595, 1569597, 1569598, 1569600, 1569601, 1569602, 1569604, 1569605, 1569607, 1569608, 1569610, 1569611, 1569612, 1569614, 1569615, 1569617, 1569618, 1569619, 1569621, 1569622, 1569623, 1569625, 1569626, 1569628, 1569629, 1569630, 1569632, 1569633, 1569634, 1569636, 1569637, 1569638, 1569640, 1569641, 1569642, 1569644, 1569645, 1569646, 1569648, 1569649, 1569650, 1569652, 1569653, 1569654, 1569656, 1569657, 1569658, 1569659, 1569661, 1569662, 1569663, 1569665, 1569666, 1569667, 1569668,
|
||||
1569670, 1569671, 1569672, 1569674, 1569675, 1569676, 1569677, 1569679, 1569680, 1569681, 1569682, 1569684, 1569685, 1569686, 1569687, 1569688, 1569690, 1569691, 1569692, 1569693, 1569694, 1569696, 1569697, 1569698, 1569699, 1569701, 1569702, 1569703, 1569704, 1569705, 1569707, 1569708, 1569709, 1569710, 1569711, 1569712, 1569714, 1569715, 1569716, 1569717, 1569718, 1569719, 1569721, 1569722, 1569723, 1569724, 1569725, 1569726, 1569727, 1569729, 1569730, 1569731, 1569732, 1569733, 1569734, 1569735, 1569736, 1569738, 1569739, 1569740, 1569741, 1569742, 1569743, 1569744, 1569745, 1569746, 1569748, 1569749, 1569750, 1569751, 1569752, 1569753, 1569754, 1569755, 1569756, 1569757, 1569759, 1569760, 1569761, 1569762, 1569763, 1569764, 1569765, 1569766, 1569767, 1569768, 1569769, 1569770, 1569771, 1569772, 1569773, 1569774, 1569775, 1569777, 1569777, 1569779, 1569780, 1569781, 1569782, 1569783,
|
||||
1569784, 1569785, 1569786, 1569787, 1569788, 1569789, 1569790, 1569791, 1569792, 1569793, 1569794, 1569795, 1569796, 785398
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
|
||||
//#define DONT_USE_GENERATE_CODE
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by Lockstep.CodeGenerator
|
||||
// This code was generated by JNGame.CodeGenerator
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using JNGame.Math;
|
||||
namespace JNGame.Math
|
||||
{
|
||||
public static class LUTCos
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
|
||||
//#define DONT_USE_GENERATE_CODE
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by Lockstep.CodeGenerator
|
||||
// This code was generated by JNGame.CodeGenerator
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using JNGame.Math;
|
||||
namespace JNGame.Math
|
||||
{
|
||||
public static class LUTSin
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e2e8e2468b4384e4694aaf2becdfb0c3
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -38,7 +38,6 @@ RenderSettings:
|
||||
m_ReflectionIntensity: 1
|
||||
m_CustomReflection: {fileID: 0}
|
||||
m_Sun: {fileID: 705507994}
|
||||
m_IndirectSpecularColor: {r: 0.18028378, g: 0.22571412, b: 0.30692285, a: 1}
|
||||
m_UseRadianceAmbientProbe: 0
|
||||
--- !u!157 &3
|
||||
LightmapSettings:
|
||||
@@ -104,7 +103,7 @@ NavMeshSettings:
|
||||
serializedVersion: 2
|
||||
m_ObjectHideFlags: 0
|
||||
m_BuildSettings:
|
||||
serializedVersion: 2
|
||||
serializedVersion: 3
|
||||
agentTypeID: 0
|
||||
agentRadius: 0.5
|
||||
agentHeight: 2
|
||||
@@ -117,7 +116,7 @@ NavMeshSettings:
|
||||
cellSize: 0.16666667
|
||||
manualTileSize: 0
|
||||
tileSize: 256
|
||||
accuratePlacement: 0
|
||||
buildHeightMesh: 0
|
||||
maxJobWorkers: 0
|
||||
preserveTilesOutsideBounds: 0
|
||||
debug:
|
||||
@@ -159,7 +158,7 @@ MonoBehaviour:
|
||||
m_BlockingObjects: 0
|
||||
m_BlockingMask:
|
||||
serializedVersion: 2
|
||||
m_Bits: 4294967295
|
||||
m_Bits: 55
|
||||
--- !u!114 &61202612
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -202,6 +201,7 @@ Canvas:
|
||||
m_SortingBucketNormalizedSize: 0
|
||||
m_VertexColorAlwaysGammaSpace: 0
|
||||
m_AdditionalShaderChannelsFlag: 25
|
||||
m_UpdateRectTransformForStandalone: 0
|
||||
m_SortingLayerID: 0
|
||||
m_SortingOrder: 0
|
||||
m_TargetDisplay: 0
|
||||
@@ -224,7 +224,6 @@ RectTransform:
|
||||
- {fileID: 569553488}
|
||||
- {fileID: 1531590483}
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 5
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
@@ -279,7 +278,6 @@ RectTransform:
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 61202614}
|
||||
m_RootOrder: 1
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 1}
|
||||
m_AnchorMax: {x: 0.5, y: 1}
|
||||
@@ -375,6 +373,7 @@ MonoBehaviour:
|
||||
ModeOverride: 0
|
||||
LensShift: {x: 0, y: 0}
|
||||
GateFit: 2
|
||||
FocusDistance: 10
|
||||
m_SensorSize: {x: 1, y: 1}
|
||||
m_Transitions:
|
||||
m_BlendHint: 0
|
||||
@@ -456,6 +455,7 @@ Transform:
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 181717978}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: -0.26082727, y: -0.5956457, z: 0.21305256, w: -0.7292352}
|
||||
m_LocalPosition: {x: -26.9086, y: 45.025208, z: 20.71292}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
@@ -465,7 +465,6 @@ Transform:
|
||||
- {fileID: 489189100}
|
||||
- {fileID: 1154405771}
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 1
|
||||
m_LocalEulerAnglesHint: {x: 0, y: -89.846, z: 0}
|
||||
--- !u!1 &222420976
|
||||
GameObject:
|
||||
@@ -498,7 +497,6 @@ RectTransform:
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 61202614}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 1}
|
||||
m_AnchorMax: {x: 0.5, y: 1}
|
||||
@@ -572,13 +570,13 @@ Transform:
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 289208754}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 966399671}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!154 &289208756
|
||||
TerrainCollider:
|
||||
@@ -588,7 +586,16 @@ TerrainCollider:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 289208754}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 2
|
||||
m_TerrainData: {fileID: 15600000, guid: b9ffe249355d38f4ea060619fe145b79, type: 2}
|
||||
m_EnableTreeColliders: 1
|
||||
--- !u!218 &289208757
|
||||
@@ -609,22 +616,28 @@ Terrain:
|
||||
m_DetailObjectDensity: 1
|
||||
m_HeightmapPixelError: 5
|
||||
m_SplatMapDistance: 1000
|
||||
m_HeightmapMinimumLODSimplification: 0
|
||||
m_HeightmapMaximumLOD: 0
|
||||
m_ShadowCastingMode: 2
|
||||
m_DrawHeightmap: 1
|
||||
m_DrawInstanced: 0
|
||||
m_DrawTreesAndFoliage: 1
|
||||
m_StaticShadowCaster: 0
|
||||
m_IgnoreQualitySettings: 0
|
||||
m_ReflectionProbeUsage: 1
|
||||
m_MaterialTemplate: {fileID: 10652, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_BakeLightProbesForTrees: 1
|
||||
m_PreserveTreePrototypeLayers: 0
|
||||
m_DeringLightProbesForTrees: 1
|
||||
m_ReceiveGI: 1
|
||||
m_ScaleInLightmap: 0.0256
|
||||
m_LightmapParameters: {fileID: 15203, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_GroupingID: 0
|
||||
m_RenderingLayerMask: 1
|
||||
m_AllowAutoConnect: 1
|
||||
m_EnableHeightmapRayTracing: 1
|
||||
m_EnableTreesAndDetailsRayTracing: 0
|
||||
m_TreeMotionVectorModeOverride: 3
|
||||
--- !u!1 &332652183
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 3
|
||||
@@ -651,13 +664,13 @@ Transform:
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 332652183}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 489189100}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &332652185
|
||||
MonoBehaviour:
|
||||
@@ -776,6 +789,7 @@ Transform:
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 400944144}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0.000000059604645, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
@@ -783,7 +797,6 @@ Transform:
|
||||
m_Children:
|
||||
- {fileID: 1849954841}
|
||||
m_Father: {fileID: 181717980}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &400944146
|
||||
MonoBehaviour:
|
||||
@@ -821,6 +834,7 @@ MonoBehaviour:
|
||||
ModeOverride: 0
|
||||
LensShift: {x: 0, y: 0}
|
||||
GateFit: 2
|
||||
FocusDistance: 10
|
||||
m_SensorSize: {x: 1, y: 1}
|
||||
m_Transitions:
|
||||
m_BlendHint: 0
|
||||
@@ -856,13 +870,13 @@ Transform:
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 441433885}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1154405771}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &441433887
|
||||
MonoBehaviour:
|
||||
@@ -981,6 +995,7 @@ Transform:
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 489189099}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
@@ -988,7 +1003,6 @@ Transform:
|
||||
m_Children:
|
||||
- {fileID: 332652184}
|
||||
m_Father: {fileID: 181717980}
|
||||
m_RootOrder: 1
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &489189101
|
||||
MonoBehaviour:
|
||||
@@ -1026,6 +1040,7 @@ MonoBehaviour:
|
||||
ModeOverride: 0
|
||||
LensShift: {x: 0, y: 0}
|
||||
GateFit: 2
|
||||
FocusDistance: 10
|
||||
m_SensorSize: {x: 1, y: 1}
|
||||
m_Transitions:
|
||||
m_BlendHint: 0
|
||||
@@ -1075,13 +1090,13 @@ Transform:
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 492996330}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 3
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &569553487
|
||||
GameObject:
|
||||
@@ -1116,7 +1131,6 @@ RectTransform:
|
||||
m_Children:
|
||||
- {fileID: 1780905642}
|
||||
m_Father: {fileID: 61202614}
|
||||
m_RootOrder: 4
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 1}
|
||||
m_AnchorMax: {x: 0.5, y: 1}
|
||||
@@ -1248,7 +1262,6 @@ RectTransform:
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 739776926}
|
||||
m_RootOrder: 1
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0.5}
|
||||
m_AnchorMax: {x: 0, y: 0.5}
|
||||
@@ -1324,7 +1337,6 @@ RectTransform:
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1531590483}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
@@ -1459,13 +1471,13 @@ Transform:
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 705507993}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
|
||||
m_LocalPosition: {x: 0, y: 3, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 2
|
||||
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
|
||||
--- !u!1 &711409931
|
||||
GameObject:
|
||||
@@ -1491,6 +1503,7 @@ Transform:
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 711409931}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
@@ -1498,7 +1511,6 @@ Transform:
|
||||
m_Children:
|
||||
- {fileID: 966399671}
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 4
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &711409933
|
||||
MonoBehaviour:
|
||||
@@ -1548,7 +1560,6 @@ RectTransform:
|
||||
- {fileID: 693424984}
|
||||
- {fileID: 784179391}
|
||||
m_Father: {fileID: 1877206257}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0.5}
|
||||
m_AnchorMax: {x: 1, y: 0.5}
|
||||
@@ -1634,7 +1645,6 @@ RectTransform:
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 739776926}
|
||||
m_RootOrder: 2
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
@@ -1716,7 +1726,6 @@ RectTransform:
|
||||
m_Children:
|
||||
- {fileID: 1873991747}
|
||||
m_Father: {fileID: 61202614}
|
||||
m_RootOrder: 3
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 1}
|
||||
m_AnchorMax: {x: 0.5, y: 1}
|
||||
@@ -1851,7 +1860,6 @@ RectTransform:
|
||||
- {fileID: 1621253169}
|
||||
- {fileID: 1837040637}
|
||||
m_Father: {fileID: 1531590483}
|
||||
m_RootOrder: 2
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 0}
|
||||
@@ -1950,6 +1958,7 @@ Transform:
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 966399670}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
@@ -1957,7 +1966,6 @@ Transform:
|
||||
m_Children:
|
||||
- {fileID: 289208755}
|
||||
m_Father: {fileID: 711409932}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &966399672
|
||||
MonoBehaviour:
|
||||
@@ -1980,6 +1988,7 @@ MonoBehaviour:
|
||||
m_Bits: 4294967295
|
||||
m_UseGeometry: 0
|
||||
m_DefaultArea: 0
|
||||
m_GenerateLinks: 0
|
||||
m_IgnoreNavMeshAgent: 1
|
||||
m_IgnoreNavMeshObstacle: 1
|
||||
m_OverrideTileSize: 1
|
||||
@@ -2020,7 +2029,6 @@ RectTransform:
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 739776926}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
@@ -2125,13 +2133,13 @@ Transform:
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1088287025}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 6
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &1154405769
|
||||
GameObject:
|
||||
@@ -2186,6 +2194,7 @@ MonoBehaviour:
|
||||
ModeOverride: 0
|
||||
LensShift: {x: 0, y: 0}
|
||||
GateFit: 2
|
||||
FocusDistance: 10
|
||||
m_SensorSize: {x: 1, y: 1}
|
||||
m_Transitions:
|
||||
m_BlendHint: 0
|
||||
@@ -2202,6 +2211,7 @@ Transform:
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1154405769}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
@@ -2209,7 +2219,6 @@ Transform:
|
||||
m_Children:
|
||||
- {fileID: 441433886}
|
||||
m_Father: {fileID: 181717980}
|
||||
m_RootOrder: 2
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &1187505147
|
||||
GameObject:
|
||||
@@ -2236,13 +2245,13 @@ Transform:
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1187505147}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: -0.26082727, y: -0.5956457, z: 0.21305256, w: -0.7292352}
|
||||
m_LocalPosition: {x: -26.908585, y: 45.025223, z: 20.71292}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!20 &1187505150
|
||||
Camera:
|
||||
@@ -2258,9 +2267,17 @@ Camera:
|
||||
m_projectionMatrixMode: 1
|
||||
m_GateFitMode: 2
|
||||
m_FOVAxisMode: 0
|
||||
m_Iso: 200
|
||||
m_ShutterSpeed: 0.005
|
||||
m_Aperture: 16
|
||||
m_FocusDistance: 10
|
||||
m_FocalLength: 50
|
||||
m_BladeCount: 5
|
||||
m_Curvature: {x: 2, y: 11}
|
||||
m_BarrelClipping: 0.25
|
||||
m_Anamorphism: 0
|
||||
m_SensorSize: {x: 36, y: 24}
|
||||
m_LensShift: {x: 0, y: 0}
|
||||
m_FocalLength: 50
|
||||
m_NormalizedViewPortRect:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
@@ -2351,7 +2368,6 @@ RectTransform:
|
||||
m_Children:
|
||||
- {fileID: 2058336311}
|
||||
m_Father: {fileID: 1837040637}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
@@ -2389,7 +2405,6 @@ RectTransform:
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1531590483}
|
||||
m_RootOrder: 1
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 1, y: 0.5}
|
||||
m_AnchorMax: {x: 1, y: 0.5}
|
||||
@@ -2469,7 +2484,6 @@ RectTransform:
|
||||
- {fileID: 1498355245}
|
||||
- {fileID: 905393663}
|
||||
m_Father: {fileID: 61202614}
|
||||
m_RootOrder: 5
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||
@@ -2612,7 +2626,6 @@ RectTransform:
|
||||
m_Children:
|
||||
- {fileID: 1877206257}
|
||||
m_Father: {fileID: 905393663}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
@@ -2701,7 +2714,6 @@ RectTransform:
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1983202942}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
@@ -2781,7 +2793,6 @@ RectTransform:
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 569553488}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
@@ -2863,7 +2874,6 @@ RectTransform:
|
||||
m_Children:
|
||||
- {fileID: 1471734305}
|
||||
m_Father: {fileID: 905393663}
|
||||
m_RootOrder: 1
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 1, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
@@ -2983,13 +2993,13 @@ Transform:
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1849954840}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 400944145}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &1849954842
|
||||
MonoBehaviour:
|
||||
@@ -3115,7 +3125,6 @@ RectTransform:
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 898699214}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
@@ -3194,7 +3203,6 @@ RectTransform:
|
||||
m_Children:
|
||||
- {fileID: 739776926}
|
||||
m_Father: {fileID: 1621253169}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
@@ -3234,7 +3242,6 @@ RectTransform:
|
||||
m_Children:
|
||||
- {fileID: 1684779459}
|
||||
m_Father: {fileID: 61202614}
|
||||
m_RootOrder: 2
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 1}
|
||||
m_AnchorMax: {x: 0.5, y: 1}
|
||||
@@ -3366,7 +3373,6 @@ RectTransform:
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1471734305}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 0.2}
|
||||
@@ -3411,3 +3417,14 @@ CanvasRenderer:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2058336310}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!1660057539 &9223372036854775807
|
||||
SceneRoots:
|
||||
m_ObjectHideFlags: 0
|
||||
m_Roots:
|
||||
- {fileID: 1187505149}
|
||||
- {fileID: 181717980}
|
||||
- {fileID: 705507995}
|
||||
- {fileID: 492996332}
|
||||
- {fileID: 711409932}
|
||||
- {fileID: 61202614}
|
||||
- {fileID: 1088287028}
|
||||
|
||||
Binary file not shown.
File diff suppressed because one or more lines are too long
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c2e7814c3ee7c6c489dcf0aff4116ab4
|
||||
guid: e217f3b4d6de86e4d978c3ee3754437a
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -15,5 +15,10 @@ namespace BehaviorTreeSlayer
|
||||
rd.material.color = color;
|
||||
return base.Tick(dt, args);
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return $"颜色";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1129,7 +1129,7 @@ MonoBehaviour:
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
AutoRun: 1
|
||||
config: {fileID: 4900000, guid: efbb9ae85b44479fac84562240d86ac3, type: 3}
|
||||
config: {fileID: 4900000, guid: 2ae8dd65757eda9499fd4559acc7d26f, type: 3}
|
||||
Obj:
|
||||
- {fileID: 716990035}
|
||||
--- !u!4 &1742566310
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user