// Update is called once per frame void Update() { /* * if (Input.GetKeyDown (KeyCode.Minus)) { * if(Monitor.TryEnter(VFDataRTGen.s_dicTreeInfoList)){ * KeyValuePair<IntVector2, List<TreeInfo>> item = VFDataRTGen.s_dicTreeInfoList.ElementAt(0); * string log = "Remove ter at "+item.Key.ToString()+item.Value.Count; * foreach(TreeInfo ti in item.Value){ * log += ti.m_pos.ToString() + "," + ti.m_protoTypeIdx + "\n"; * } * Debug.LogError(log); * VFDataRTGen.s_dicTreeInfoList.Remove(item.Key); * Monitor.Exit(VFDataRTGen.s_dicTreeInfoList); * } * } */ // Determine node area IntVec3 ipos = CameraIntPos; Vector3 min = Vector3.zero; Vector3 max = Vector3.zero; if (RSubTerrConstant.ChunkCountPerAxis.x % 2 == 0) { min.x = (ipos.x - (RSubTerrConstant.ChunkCountPerAxis.x / 2 - 1)) * RSubTerrConstant.ChunkSizeF; } else { min.x = (ipos.x - (RSubTerrConstant.ChunkCountPerAxis.x / 2)) * RSubTerrConstant.ChunkSizeF; } if (RSubTerrConstant.ChunkCountPerAxis.z % 2 == 0) { min.z = (ipos.z - (RSubTerrConstant.ChunkCountPerAxis.z / 2 - 1)) * RSubTerrConstant.ChunkSizeF; } else { min.z = (ipos.z - (RSubTerrConstant.ChunkCountPerAxis.z / 2)) * RSubTerrConstant.ChunkSizeF; } min.y = 0; max.x = (ipos.x + (RSubTerrConstant.ChunkCountPerAxis.x / 2) + 1) * RSubTerrConstant.ChunkSizeF; max.y = RSubTerrConstant.ChunkHeightF; max.z = (ipos.z + (RSubTerrConstant.ChunkCountPerAxis.z / 2) + 1) * RSubTerrConstant.ChunkSizeF; m_TerrainRegion.SetMinMax(min, max); if (Application.isEditor) { Bounds terr_region_base_bound = m_TerrainRegion; terr_region_base_bound.center = new Vector3(terr_region_base_bound.center.x, 0, terr_region_base_bound.center.z); terr_region_base_bound.extents = new Vector3(terr_region_base_bound.extents.x, 0, terr_region_base_bound.extents.z); AiUtil.DrawBounds(transform, terr_region_base_bound, Color.blue); } // Determine near tree area if (PlayerTransform == null) { PlayerTransform = CameraTransform; } else { if (Time.frameCount % 32 == 0) { SyncChunksData(); } if (Time.frameCount % 128 == 0 && IsDirty) { foreach (RSubTerrCreator cr in LayerCreators) { if (!cr.bProcessing) { cr.StartCoroutine("RefreshRegion"); m_IsDirty = false; } } } RefreshTempGOsIn32Meter(); } }