protected override void SetData(byte[] data) { if (null != data) { LSubTerrSL.Import(data); } }
void Load() { string prefabName = "Layered SubTerrain Group"; GameObject objGrass = Object.Instantiate(Resources.Load <GameObject>(prefabName)) as GameObject; if (null == objGrass) { Debug.LogError("can't find tree prefab:" + prefabName); return; } LSubTerrainMgr.Instance.CameraTransform = Camera.main.transform; LSubTerrainMgr.Instance.VEditor = VoxelEditor.Get(); LSubTerrSL.Init(); }
public static void DeleteTree(GlobalTreeInfo treeinfo) { if (s_Instance == null || treeinfo == null) { return; } // Delete it in Mgr's m_map32Trees int tmpKey = LSubTerrUtils.TreeWorldPosTo32Key(treeinfo.WorldPos); List <TreeInfo> tmpTis; if (s_Instance.m_map32Trees.TryGetValue(tmpKey, out tmpTis)) { tmpTis.Remove(treeinfo._treeInfo); if (tmpTis.Count == 0) { s_Instance.m_map32Trees.Remove(tmpKey); } } // Delete it in Mgr's m_mapExistTempTrees and m_mapTempTreeInfos List <GameObject> existGos; if (s_Instance.m_mapExistTempTrees.TryGetValue(tmpKey, out existGos)) { GameObject gameobject_to_delete = null; GlobalTreeInfo gti; foreach (GameObject go in existGos) { if (s_Instance.m_mapTempTreeInfos.TryGetValue(go, out gti)) { if (gti._treeInfo == treeinfo._treeInfo) { // Found it! gameobject_to_delete = go; if (OnTreeColliderDestroy != null) { OnTreeColliderDestroy(gameobject_to_delete); } GameObject.Destroy(go); s_Instance.m_mapTempTreeInfos.Remove(go); } } else { Debug.LogError("Can not find the GameObject key in m_mapTempTreeInfos when delete tree"); } } if (gameobject_to_delete != null) { existGos.Remove(gameobject_to_delete); } } // Delete it in Node's m_mapTrees and m_listTrees TreeInfo secondFoot = null; // For two feet trees if (Node(treeinfo._terrainIndex) != null) { secondFoot = Node(treeinfo._terrainIndex).DeleteTreeInfo(treeinfo._treeInfo); } else { Debug.LogError("Can not find the subterrain node when delete tree"); } // Delete it in layers foreach (LSubTerrCreator creator in s_Instance.LayerCreators) { if (creator.m_allTreesInLayer.TryGetValue(treeinfo._terrainIndex, out tmpTis)) { tmpTis.Remove(treeinfo._treeInfo); } else { Debug.LogError("Can not find the key in layer's m_allTreesInLayer when delete tree"); } } LSubTerrSL.AddDeletedTree(treeinfo._terrainIndex, treeinfo._treeInfo); // Delete 2nd foot ?? Is this really necessary?? if (secondFoot != null) { GlobalTreeInfo gti_2ndfoot = new GlobalTreeInfo(treeinfo._terrainIndex, secondFoot); DeleteTree(gti_2ndfoot); } }
protected override void WriteData(BinaryWriter bw) { LSubTerrSL.Export(bw); }