void OnTerrainMeshCreated(IntVector4 node) { if (node.w == 0) { IntVector2 mark = AiUtil.ConvertToIntVector2FormLodLevel(node, VoxelTerrainMaxLod); if (pointTable.ContainsKey(mark)) { SPTerrainRect tRect = pointTable[mark]; if (tRect != null) { List <SPPoint> points = tRect.points; points = points.FindAll(ret => Match(ret, node.x, node.z)); foreach (SPPoint point in points) { point.AttachEvent(node); //point.position = new Vector3(point.position.x, node.y, point.position.z); } } } RegisterMeshNode(node); LODOctreeMan.self.AttachNodeEvents(null, null, null, null, OnTerrainColliderCreated, node.ToVector3(), 0); } }
public void RemoveMeshNode(IntVector4 node) { IntVector2 mark = AiUtil.ConvertToIntVector2FormLodLevel( node, LODOctreeMan._maxLod); if (mMeshNodes.Contains(mark)) { mMeshNodes.Remove(mark); } }
void RemoveSPTerrainRect(IntVector4 node) { IntVector2 mark = AiUtil.ConvertToIntVector2FormLodLevel(node, VoxelTerrainMaxLod); if (pointTable.ContainsKey(mark)) { pointTable[mark].RemoveMeshNode(node); if (pointTable[mark].meshNodes.Count <= 0) { pointTable[mark].Destroy(); pointTable.Remove(mark); //Debug.Log("Destroy SPTerrainRect at position[" + mark.x + " , " + mark.y + "]"); } } }
void RegisterSPTerrainRect(IntVector4 node) { node.w = VoxelTerrainMaxLod; IntVector2 mark = AiUtil.ConvertToIntVector2FormLodLevel(node, VoxelTerrainMaxLod); IntVector4 maxNode = new IntVector4(mark.x, node.y, mark.y, node.w); //if(!GameConfig.IsMultiMode) { if (!pointTable.ContainsKey(mark)) { if (!GameConfig.IsMultiMode) { SPTerrainRect spTerrain = InstantiateSPTerrainRect(maxNode, minCount, maxCount + 1); spTerrain.RegisterMeshNode(node); pointTable.Add(mark, spTerrain); } //Debug.Log("Register SPTerrainRect at position[" + mark.x + " , " + mark.y + "]"); } else { pointTable[mark].RegisterMeshNode(node); } } //else //{ // if(!pointTable.ContainsKey(mark)) // { // if(!requestList.Contains(mark)) // { // RequestSPTerrainFromServer(maxNode, minCount, maxCount+1); // requestList.Add(mark); // } // } // else // { // pointTable[mark].RegisterMeshNode(node); // } //} }