Ejemplo n.º 1
0
        public IEnumerator DoEditorUpdate(PlanetAreaContainer container)
        {
            m_Container = container;
            if (m_Resobj != null)
            {
                m_Res = m_Resobj.name;
            }
            else
            {
                m_Res = "";
            }
            transform.localScale = Vector3.one;
            yield return(null);

            m_Trails.Clear();
            TrailRenderer[] trails = GetComponentsInChildren <TrailRenderer>();
            if (trails != null && trails.Length > 0)
            {
                for (int iTrail = 0; iTrail < trails.Length; iTrail++)
                {
                    m_Trails.Add(trails[iTrail]);
                    //trails[iTrail].Clear();
                }
            }
            yield return(null);

            if (m_AreaData != null)
            {
                ulong[] childArea = m_AreaData.childrenAreaList;
                if (childArea != null && childArea.Length > 0)
                {
                    TrailRenderer trailRender = null;
                    for (int iChild = 0; iChild < childArea.Length; iChild++)
                    {
                        if (m_Trails.Count > iChild)
                        {
                            trailRender = m_Trails[iChild];
                        }
                        else
                        {
                            GameObject trailObj = new GameObject("Trail_" + iChild);
                            trailObj.transform.SetParent(transform);
                            trailRender = trailObj.AddComponent <TrailRenderer>();
                        }

                        PlanetAreaElement targetElement = m_Container.GetElement(childArea[iChild]);
                        if (targetElement != null)
                        {
                            trailRender.Clear();
                            trailRender.startWidth = 0.3f;
                            trailRender.AddPosition(transform.position);
                            trailRender.AddPosition(targetElement.transform.position);
                            trailRender.transform.position = targetElement.transform.position;
                        }
                    }
                }
            }
        }
Ejemplo n.º 2
0
        public void UpdateElements(EditorArea[] areas)
        {
            if (areas == null || areas.Length <= 0)
            {
                if (m_PlanetAreas != null && m_PlanetAreas.Count > 0)
                {
                    for (int iPlanet = m_PlanetAreas.Count - 1; iPlanet >= 0; iPlanet--)
                    {
                        PlanetAreaElement areaElement = m_PlanetAreas[iPlanet];
                        if (areaElement != null)
                        {
                            if (areaElement.m_AreaData != null)
                            {
                                Debug.LogError("PlanetAreaContainer " + m_GamingMapId + " 删除了 " + areaElement.m_AreaData.areaId);
                            }
                            m_PlanetAreas.Remove(areaElement);
                            GameObject.DestroyImmediate(areaElement.gameObject);
                        }
                    }
                }
                return;
            }

            for (int iArea = 0; iArea < areas.Length; iArea++)
            {
                EditorArea        editorArea = areas[iArea];
                PlanetAreaElement element    = GetElement(editorArea.areaId);
                if (element == null)
                {
                    CreateElement(editorArea, null);
                    Debug.LogError("PlanetAreaContainer " + m_GamingMapId + " 新增了 " + editorArea.areaId);
                }
                else
                {
                    element.Init(editorArea, null);
                }
            }

            if (m_PlanetAreas != null && m_PlanetAreas.Count > 0)
            {
                for (int iPlanet = m_PlanetAreas.Count - 1; iPlanet >= 0; iPlanet--)
                {
                    PlanetAreaElement areaElement = m_PlanetAreas[iPlanet];
                    EditorArea        editorArea  = GetArea(areaElement.m_AreaData.areaId, areas);
                    if (editorArea == null)
                    {
                        if (areaElement.m_AreaData != null)
                        {
                            Debug.LogError("PlanetAreaContainer " + m_GamingMapId + " 删除了 " + areaElement.m_AreaData.areaId);
                        }
                        m_PlanetAreas.Remove(areaElement);
                        GameObject.DestroyImmediate(areaElement.gameObject);
                    }
                }
            }
        }
Ejemplo n.º 3
0
 public PlanetAreaElement GetElement(ulong areaId)
 {
     if (m_PlanetAreas != null && m_PlanetAreas.Count > 0)
     {
         for (int iPlanet = 0; iPlanet < m_PlanetAreas.Count; iPlanet++)
         {
             PlanetAreaElement element = m_PlanetAreas[iPlanet];
             if (element.m_AreaData.areaId == areaId)
             {
                 return(element);
             }
         }
     }
     return(null);
 }
Ejemplo n.º 4
0
        private void CreateElement(EditorArea editorArea, EditorPlanet planet)
        {
            GameObject planetArea = GameObject.Instantiate(m_Panel.m_PlanetAreaElementPrefab);

            planetArea.SetActive(true);
            planetArea.transform.SetParent(transform);
            planetArea.transform.localPosition = Vector3.zero;
            PlanetAreaElement planetElement = planetArea.GetComponent <PlanetAreaElement>();

            if (planetElement != null)
            {
                EditorStarMapArea starMapArea = m_Panel.m_Root.GetPreviewArea(planet, editorArea.areaId);
                planetElement.Init(editorArea, starMapArea);
                m_PlanetAreas.Add(planetElement);
            }
        }
Ejemplo n.º 5
0
        private void SaveArea(EditorGamingMap gamingData, List <EditorStarMapArea> areaList, ref ulong areaId)
        {
            if (gamingData == null || gamingData.areaList == null || gamingData.areaList.Length <= 0)
            {
                return;
            }
            EditorArea[] editorAreas = gamingData.areaList;
            for (int iArea = 0; iArea < editorAreas.Length; iArea++)
            {
                EditorArea editorArea = editorAreas[iArea];
                if (editorArea == null)
                {
                    continue;
                }

                EditorStarMapArea starMapArea = new EditorStarMapArea();
                areaList.Add(starMapArea);
                starMapArea.areaId   = editorArea.areaId;
                starMapArea.areaType = editorArea.areaType;
                starMapArea.areaName = editorArea.areaName;
                PlanetAreaElement areaElement = m_PlanetPanel.GetElement(gamingData.gamingmapId, editorArea.areaId);
                if (areaElement != null)
                {
                    starMapArea.area_res         = areaElement.m_Res;
                    starMapArea.childrenAreaList = editorArea.childrenAreaList;
                    if (editorArea.leapList != null && editorArea.leapList.Length > 0)
                    {
                        starMapArea.area_leap_type = editorArea.leapList[0].leapType;
                    }
                    starMapArea.position = new EditorPosition2D(areaElement.GetPosition());
                }
                if (editorArea.areaType == (int)AreaType.Titan)
                {
                    if (areaId > 0)
                    {
                        Debug.LogError(gamingData.gamingmapName + "存在多个泰坦区域:" + editorArea.areaId);
                    }
                    else
                    {
                        areaId = editorArea.areaId;
                    }
                }
            }
        }
Ejemplo n.º 6
0
        private void RefreshMap()
        {
            float widthRate  = m_MiniMapSize / m_ActMapWidth;
            float heightRate = m_MiniMapSize / m_ActMapHeight;

            if (m_PlanetAreas != null && m_PlanetAreas.Count > 0)
            {
                for (int iArea = 0; iArea < m_PlanetAreas.Count; iArea++)
                {
                    PlanetAreaElement element  = m_PlanetAreas[iArea];
                    EditorArea        areaData = element.m_AreaData;
                    if (areaData == null)
                    {
                        continue;
                    }
                    EditorPosition editorPosition = areaData.position;
                    element.GetComponent <RectTransform>().anchoredPosition = new Vector2(editorPosition.x * widthRate, editorPosition.z * heightRate);
                    //element.transform.position = new Vector3(editorPosition.x*widthRate- m_MiniMapWidth/2,editorPosition.z*heightRate - m_MiniMapHeight/2,0);
                }
            }

            if (m_MiniMap == null)
            {
                Transform     miniMap     = transform.Find("map");
                RectTransform miniMapRect = null;
                if (miniMap == null)
                {
                    GameObject imageObj = new GameObject("map");
                    imageObj.transform.SetParent(transform);
                    Image image = imageObj.AddComponent <Image>();
                    image.color = new Color(1, 0, 0, 0.5f);
                    miniMapRect = image.rectTransform;
                }
                else
                {
                    miniMapRect = miniMap.GetComponent <RectTransform>();
                }
                m_MiniMap = miniMapRect;
            }
            m_MiniMap.SetAsFirstSibling();
            m_MiniMap.anchoredPosition3D = Vector3.zero;
            m_MiniMap.sizeDelta          = m_MiniMapSize * Vector2.one;
        }
Ejemplo n.º 7
0
        private void HierarchyItemCB(int instanceid, Rect selectionrect)
        {
            GameObject obj = EditorUtility.InstanceIDToObject(instanceid) as GameObject;

            if (obj == null)
            {
                return;
            }
            bool              isActive = obj.activeSelf;
            Transform         trans    = obj.transform;
            StarMapEditorRoot root     = obj.GetComponent <StarMapEditorRoot>();

            if (root != null)
            {
                DrawUI(trans, selectionrect, "编辑", Color.red);
            }

            StarMapMainPanel starMapMainPanel = obj.GetComponent <StarMapMainPanel>();

            if (starMapMainPanel != null)
            {
                DrawUI(trans, selectionrect, "编辑星图", isActive ? Color.yellow : Color.red);
            }

            FixedStarPanel fixedStarPanel = obj.GetComponent <FixedStarPanel>();

            if (fixedStarPanel != null)
            {
                DrawUI(trans, selectionrect, "编辑恒星", isActive ? Color.yellow : Color.red);
            }

            PlanetPanel planetPanel = obj.GetComponent <PlanetPanel>();

            if (planetPanel != null)
            {
                DrawUI(trans, selectionrect, "编辑行星", isActive ? Color.yellow : Color.red);
            }

            FixedStarElement fixedStarElement = obj.GetComponent <FixedStarElement>();

            if (fixedStarElement != null)
            {
                DrawUI(trans, selectionrect, "恒星", Color.red);
            }

            PlanetContainer planetContainer = obj.GetComponent <PlanetContainer>();

            if (planetContainer != null)
            {
                DrawUI(trans, selectionrect, "行星组", isActive ? Color.yellow : Color.red);
            }

            PlanetElement planetElement = obj.GetComponent <PlanetElement>();

            if (planetElement != null)
            {
                DrawUI(trans, selectionrect, "行星", Color.red);
            }

            PlanetAreaContainer planetAreaContainer = obj.GetComponent <PlanetAreaContainer>();

            if (planetAreaContainer != null)
            {
                DrawUI(trans, selectionrect, "区域组", isActive ? Color.yellow : Color.red);
            }

            PlanetAreaElement planetAreaElement = obj.GetComponent <PlanetAreaElement>();

            if (planetAreaElement != null)
            {
                DrawUI(trans, selectionrect, "区域", Color.blue);
            }
        }
 private void OnEnable()
 {
     m_Target   = target as PlanetAreaElement;
     m_AreaData = m_Target.m_AreaData;
 }
Ejemplo n.º 9
0
        public IEnumerator DoEditorUpdate(PlanetPanel panel)
        {
            m_Panel = panel;
            transform.localPosition = Vector3.zero;
            yield return(null);

            m_PlanetAreas.Clear();
            PlanetAreaElement[] elements = GetComponentsInChildren <PlanetAreaElement>(true);
            if (elements != null && elements.Length > 0)
            {
                for (int iElement = 0; iElement < elements.Length; iElement++)
                {
                    m_PlanetAreas.Add(elements[iElement]);
                }
            }
            yield return(null);

            if (m_PlanetAreas != null && m_PlanetAreas.Count > 0)
            {
                for (int iPlanet = 0; iPlanet < m_PlanetAreas.Count; iPlanet++)
                {
                    PlanetAreaElement element        = m_PlanetAreas[iPlanet];
                    IEnumerator       elementEnumera = element.DoEditorUpdate(this);
                    while (element != null && element.gameObject != null && elementEnumera.MoveNext())
                    {
                        yield return(null);
                    }
                }
            }
            yield return(null);

            if (m_MiniMap != null)
            {
                m_MiniMap.localScale = Vector3.one;
            }
            yield return(null);

            Transform containerTrans = transform.Find("FixedStarContainer");

            if (containerTrans == null)
            {
                GameObject fixedContainer = new GameObject("FixedStarContainer");
                fixedContainer.transform.SetParent(transform);
                Image image = fixedContainer.AddComponent <Image>();
                m_FixedStarContainer = image;
            }
            else
            {
                m_FixedStarContainer = containerTrans.GetOrAddComponent <Image>(true);
            }
            m_FixedStarContainer.rectTransform.anchoredPosition3D = m_FixedStarPos;
            m_FixedStarContainer.rectTransform.sizeDelta          = m_FixedStarScale;
            m_FixedStarContainer.transform.localScale             = Vector3.one;
            if (m_FixedStarContainer != null)
            {
                if (m_MiniMap != null)
                {
                    int miniIndex = m_MiniMap.GetSiblingIndex();
                    m_FixedStarContainer.transform.SetSiblingIndex(miniIndex + 1);
                }
                else
                {
                    m_FixedStarContainer.transform.SetSiblingIndex(0);
                }
            }
            yield return(null);

            if (m_FixedStarObj != null)
            {
                m_FixedStarRes = m_FixedStarObj.name;
            }
            else
            {
                m_FixedStarRes = "";
            }

            //if(m_FixedStarContainer != null)
            //{
            //    int childCount = m_FixedStarContainer.transform.childCount;
            //    if(m_FixedStarObj != null)
            //    {
            //        GameObject fixedStarObj = null;
            //        if (childCount > 0)
            //        {
            //            fixedStarObj = m_FixedStarContainer.GetChild(0).gameObject;
            //            if(fixedStarObj.name != m_FixedStarObj.name)
            //            {
            //                GameObject.DestroyImmediate(fixedStarObj);
            //                childCount = m_FixedStarContainer.transform.childCount;
            //            }
            //        }
            //        if(childCount <=0)
            //        {
            //            fixedStarObj = GameObject.Instantiate(m_FixedStarObj, m_FixedStarContainer);
            //            fixedStarObj.name = m_FixedStarObj.name;
            //        }
            //        fixedStarObj.transform.localPosition = Vector3.zero; ;
            //        fixedStarObj.transform.localScale = Vector3.one;
            //    }
            //    else
            //    {
            //        for (int iChild = childCount - 1; iChild >= 0; iChild--)
            //        {
            //            GameObject.DestroyImmediate(m_FixedStarContainer.GetChild(iChild).gameObject);
            //        }
            //    }

            //}
        }