void LoadStaticSpawnPoints() { if (Application.loadedLevelName.Equals(GameConfig.MainSceneName)) { GameObject obj = new GameObject("StaticPoints"); obj.transform.parent = transform; foreach (KeyValuePair <int, AISpawnPoint> pair in AISpawnPoint.s_spawnPointData) { AISpawnPoint point = pair.Value; point.spPoint = SPPoint.InstantiateSPPoint <SPPoint>(point.Position, Quaternion.Euler(point.euler), IntVector4.Zero, obj.transform, 0, point.resId, point.isActive, false, false, false, false, null, point.OnSpawned); point.spPoint.name = ("Static id = " + point.id + " , " + "path id = " + point.resId + " : ") + point.spPoint.name; } } }
protected override SPPoint Spawn(AISpawnData spData) { base.Spawn(spData); Vector3 pos; Quaternion rot; if (GetPositionAndRotation(out pos, out rot, spData.minAngle, spData.maxAngle)) { //if (!GameConfig.IsMultiMode) { SPPointMovable movable = SPPoint.InstantiateSPPoint <SPPointMovable>(pos, rot, IntVector4.Zero, pointParent, spData.isPath ? 0 : spData.spID, spData.isPath ? spData.spID : 0, true, true, false, false, true, null, OnSpawned, this) as SPPointMovable; movable.target = transform; return(movable); } } return(null); }
void LoadNoiseBossPoints(IntVector4 node) { int nx = node.x >> VoxelTerrainConstants._shift >> node.w; int nz = node.z >> VoxelTerrainConstants._shift >> node.w; float value = (float)mNoise.Noise(nx, nz); if (value < -0.5f) { int length = VoxelTerrainConstants._numVoxelsPerAxis << node.w; float ox = (float)mNoise.Noise(nx, nz, nx + nz) * 0.5f + 0.5f; float oz = (float)mNoise.Noise(nz, nx, nx - nz) * 0.5f + 0.5f; Vector3 pos = new Vector3(node.x + ox * length, node.y, node.z + oz * length); if (AIErodeMap.IsInErodeArea(pos) == null) { Quaternion rot = Quaternion.Euler(0.0f, Random.Range(0, 360), 0.0f); SPPoint point = SPPoint.InstantiateSPPoint <SPPointBoss>(pos, rot, nextIndex, transform, 0, 0, true, true, true, true, true, mNoise); point.name = "Noise boss : " + point.name; RegisterSPPoint(point); } //Debug.LogError("Noise boss ai point : " + pos); } }
public static void WriteSPPoint(uLink.BitStream stream, object obj, params object[] codecOptions) { SPPoint point = obj as SPPoint; stream.Write <Vector3>(point.transform.position); stream.Write <IntVector4>(point.mIndex); stream.Write <PointType>(point.mType); stream.Write <IntVector4[]>(point.mNodes.ToArray()); }
public static void RegisterPoint(SPPoint point) { IntVector4 key = point.index; if (!PointTable.ContainsKey(key)) { PointTable.Add(key, point); } }
public static void RemovePoint(SPPoint point) { IntVector4 key = point.index; if (PointTable.ContainsKey(key)) { PointTable.Remove(key); } }
public void RegisterSPPoint(SPPoint point) { if (point == null) { return; } if (!mPoints.Contains(point)) { mPoints.Add(point); } }
public void Everything() { #region ... SPPoint p1 = new SPPoint(0.0f, 0.0f); SPPoint p2 = new SPPoint(8.0f, 16.0f); SPPoint p3 = p2.Scale(0.5f); SPPoint p4 = p3.Rotate(-1.570796327f); SPPoint p5 = p3.Normalize(); SPPoint p6 = p3.Invert(); SPPoint p7 = SPPoint.FromPolarLength(p2.Length, p2.Angle); SPPoint p8 = SPPoint.Interpolate(p1, p2, 0.5f); SPPoint p9 = p2 + p3; SPPoint p10 = p1 - p2; SPPoint p11 = p2 * 0.5f; float f1 = SPPoint.CalculateDistance(p1, p2); float f2 = SPPoint.CalculateAngle(p2, p4); float f3 = p2.Dot(p4); PointF p12 = p3; SPPoint p13 = p12; Assert.True(p2.X == 8.0f); Assert.True(p2.Y == 16.0f); Assert.True(p2.Length > 17.0f); Assert.True(p2.Length < 18.0f); Assert.True(p2.LengthSquared == 320.0f); Assert.True(p2.Angle != 0.0f); Assert.True(p1.IsOrigin); Assert.True(p3.X == 4.0f); Assert.True(p3.Y == 8.0f); Assert.True(((int)p4.Y) == -4); Assert.True(p5.Y > 0.8f); Assert.True(p6.Y == -8.0f); Assert.True(p7 == p2); Assert.True(f1 == p2.Length); Assert.True(f2 > 1.5f); Assert.True(f3 < 0.0f); Assert.True(p8.X == 4.0f); Assert.True(p8.Y == 8.0f); Assert.True(p9.X == 12.0f); Assert.True(p9.Y == 24.0f); Assert.True(p10.X == -8.0f); Assert.True(p10.Y == -16.0f); Assert.True(p11.X == p3.X); Assert.True(p11.Y == p3.Y); Assert.True(p11 == p3); Assert.False(p11 != p3); Assert.True(p3 == p13); SPPoint.PurgePool(); #endregion }
bool Match(SPPoint point, int x, int z) { if (point == null) { return(false); } float dx = point.position.x - x; float dz = point.position.z - z; return(dx >= PETools.PEMath.Epsilon && dx <= VoxelTerrainConstants._numVoxelsPerAxis && dz >= PETools.PEMath.Epsilon && dz <= VoxelTerrainConstants._numVoxelsPerAxis); }
public static object ReadSPPoint(uLink.BitStream stream, params object[] codecOptions) { SPPoint point = new SPPoint(); point.transform.position = stream.Read <Vector3>(); point.mIndex = stream.Read <IntVector4>(); point.mType = stream.Read <PointType>(); point.mNodes = new List <IntVector4>(); IntVector4[] points = stream.Read <IntVector4[]>(); point.mNodes.AddRange(points); return(point); }
bool Match(SPPoint point, IntVector4 node) { if (point == null) { return(false); } Rect rect = new Rect(node.x, node.z, VoxelTerrainConstants._numVoxelsPerAxis << node.w, VoxelTerrainConstants._numVoxelsPerAxis << node.w); Vector2 mark = new Vector2(point.position.x, point.position.z); return(rect.Contains(mark)); }
void LoadDynamicPoints(IntVector4 node, int min, int max) { int count = Random.Range(min, max); for (int i = 0; i < count; i++) { Vector3 position = node.ToVector3(); position += new Vector3(Random.Range(0.0f, VoxelTerrainConstants._numVoxelsPerAxis << node.w), 0.0f, Random.Range(0.0f, VoxelTerrainConstants._numVoxelsPerAxis << node.w)); Quaternion rot = Quaternion.Euler(0.0f, Random.Range(0, 360), 0.0f); SPPoint point = SPPoint.InstantiateSPPoint <SPPoint>(position, rot, nextIndex, transform); point.name = "Dynamic : " + point.name; RegisterSPPoint(point); } }
public void RegisterSPPoint(SPPoint point, bool updateIndex = false) { if (point == null) { return; } IntVector4 node = AiUtil.ConvertToIntVector4(point.position, 3); IntVector2 mark = new IntVector2(node.x, node.z); if (pointTable.ContainsKey(mark)) { pointTable[mark].RegisterSPPoint(point); if (updateIndex) { point.index = pointTable[mark].nextIndex; } } }
void LoadUpperAirPoints(IntVector4 node, int min, int max) { GameObject carrier = null;// PlayerFactory.mMainPlayer.Carrier; if (carrier == null) { return; } HelicopterController hel = carrier.GetComponent <HelicopterController>(); if (hel == null) { return; } /* * VCPVtolCockpitFunc vtol = hel.m_Cockpit as VCPVtolCockpitFunc; * if (vtol == null) * return; * * if (vtol.FlyingHeight < 50.0f) * return; * */ //if (Random.value > AiManager.Manager.upperPoint) // return; Vector3 position = node.ToVector3(); position += new Vector3(Random.Range(0.0f, VoxelTerrainConstants._numVoxelsPerAxis << node.w), 0.0f, Random.Range(0.0f, VoxelTerrainConstants._numVoxelsPerAxis << node.w)); Quaternion rot = Quaternion.Euler(0.0f, Random.Range(0, 360), 0.0f); SPPoint point = SPPoint.InstantiateSPPoint <SPPoint>(position, rot, nextIndex, transform, 0, 63); point.name = "Upper Air : " + point.name; RegisterSPPoint(point); }
protected override SPPoint Spawn(AISpawnData spData) { base.Spawn(spData); Vector3 pos; Quaternion rot; Vector3 target; if (GetPositionAndRotation(spData, out pos, out rot, out target)) { SPPointSimulate simulate = SPPoint.InstantiateSPPoint <SPPointSimulate>(pos, rot, IntVector4.Zero, pointParent, spData.isPath ? 0 : spData.spID, spData.isPath ? spData.spID : 0, true, true, false, false, true, null, OnSpawned, this) as SPPointSimulate; simulate.SetData(damage, minInterval, maxInterval, damageRadius); simulate.targetPos = target; if (!simulates.Contains(simulate)) { simulates.Add(simulate); } return(simulate); } return(null); }
public void Everything() { SPMatrix m1 = new SPMatrix(1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f); SPMatrix m2 = new SPMatrix(); SPMatrix m3 = new SPMatrix(); SPMatrix m4 = m1.Clone(); SPMatrix m5 = m1.Clone(); SPMatrix m6 = m1.Clone(); SPPoint p1 = new SPPoint(5.0f, 10.0f); SPPoint p2 = m1.Transform(p1); m3.Set(1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f); m5.SetIdentity(); m6.Rotate(20.0f); m6.Scale(10.0f); m6.Scale(1.5f, 2.0f); m6.Translate(5.0f, 3.0f); m6.Invert(); m6.Concat(m1); Assert.True(m1.A == 1.0f); Assert.True(m1.B == 2.0f); Assert.True(m1.C == 3.0f); Assert.True(m1.D == 4.0f); Assert.True(m1.Tx == 5.0f); Assert.True(m1.Ty == 6.0f); Assert.True(m1.Determinant != 0.0f); Assert.False(m1 == m2); Assert.True(m1 != m2); Assert.True(m1 == m3); Assert.False(m1 != m3); Assert.True(m1 == m4); Assert.True(m2 == m5); Assert.False(p1 == p2); }
void LoadNoisePoints(IntVector4 node, int minCount, int maxCount) { int nx = node.x >> VoxelTerrainConstants._shift >> node.w; int nz = node.z >> VoxelTerrainConstants._shift >> node.w; float noise = (float)mNoise.Noise(nx, nz, nx + nz); int randomCount = Mathf.FloorToInt((maxCount - minCount) * noise); int count = Mathf.Clamp(minCount + randomCount, minCount, maxCount); int length = VoxelTerrainConstants._numVoxelsPerAxis << node.w; for (int i = 0; i < count; i++) { float ox = (float)mNoise.Noise(nx, (nx + nz) * i) * 0.5f + 0.5f; float oz = (float)mNoise.Noise(nz, (nx - nz) * i) * 0.5f + 0.5f; Vector3 pos = new Vector3(node.x + ox * length, node.y, node.z + oz * length); Quaternion rot = Quaternion.Euler(0.0f, UnityEngine.Random.Range(0, 360), 0.0f); SPPoint point = SPPoint.InstantiateSPPoint <SPPoint>(pos, rot, nextIndex, transform, 0, 0, true, true, false, true, true, mNoise); point.name = "Noise : " + point.name; RegisterSPPoint(point); //Debug.LogError("Noise normal ai point : " + pos); } }
public void HitTestPoint() { #region ... SPStage stage = new SPStage(); SPDisplayObject obj1 = new SPQuad(); SPPoint p1 = new SPPoint(5.0f, 5.0f); stage.Add(obj1); SPDisplayObject obj2 = stage.HitTest(p1, true); Assert.NotNull(obj2); #endregion }
public void LocalToGlobal() { #region ... SPStage stage = new SPStage(); SPDisplayObject obj = new SPQuad(); SPPoint p1 = new SPPoint(5.0f, 5.0f); stage.Add(obj); SPPoint p2 = obj.LocalToGlobal(p1); Assert.NotNull(p2); #endregion }