Exemplo n.º 1
0
        private void ClearStarMap()
        {
            if (m_FixedStarElements != null && m_FixedStarElements.Count > 0)
            {
                for (int iStar = 0; iStar < m_FixedStarElements.Count; iStar++)
                {
                    FixedStarElement starElement = m_FixedStarElements[iStar];
                    if (starElement == null)
                    {
                        continue;
                    }
                    GameObject.DestroyImmediate(starElement.gameObject);
                }
                m_FixedStarElements.Clear();
            }

            if (m_StarContainer != null)
            {
                int childCount = m_StarContainer.childCount;
                if (childCount > 0)
                {
                    for (int iChild = childCount - 1; iChild >= 0; iChild--)
                    {
                        Transform childTrans = m_StarContainer.GetChild(iChild);
                        if (childTrans == null)
                        {
                            continue;
                        }

                        GameObject.DestroyImmediate(childTrans.gameObject);
                    }
                }
            }
        }
Exemplo n.º 2
0
        private void CreateFixedStarElement(StarMapVO starVo)
        {
            GameObject starObj = GameObject.Instantiate(m_StarMapPrefab);

            starObj.SetActive(true);
            starObj.transform.SetParent(m_StarContainer);
            if (m_Root.m_PreviewStarMap != null)
            {
                //starObj.transform.position =m_Root.GetPreviewStarMapPos(starVo.FixedStarid);
                RectTransform starRect = starObj.GetComponent <RectTransform>();
                if (starRect == null)
                {
                    starRect = starObj.AddComponent <RectTransform>();
                }
                starRect.anchoredPosition = m_Root.GetPreviewStarMapPos(starVo.FixedStarid);
            }
            else
            {
                starObj.transform.localPosition = Vector3.zero;
            }

            starObj.transform.localRotation = Quaternion.identity;
            starObj.transform.localScale    = Vector3.one;
            FixedStarElement fixedElement = starObj.GetComponent <FixedStarElement>();

            if (fixedElement != null)
            {
                fixedElement.Init(this, starVo);
                m_FixedStarElements.Add(fixedElement);
            }
        }
Exemplo n.º 3
0
        private void RefreshFixedStarElementUI(FixedStarElement starElement)
        {
            if (starElement == null)
            {
                return;
            }

            m_ContentCache.Clear();
            m_ContentCache.Add(new GUIContent("刷新行星"));
            Vector2    mousePosition = Event.current.mousePosition;
            GameObject userData      = Selection.activeGameObject;
            int        selected      = -1;

            EditorUtility.DisplayCustomMenu(new Rect(mousePosition.x, mousePosition.y, 0, 0), m_ContentCache.ToArray(), selected,
                                            delegate(object data, string[] opt, int select)
            {
                switch (select)
                {
                case 0:
                    this.OpenFixedStar(starElement);
                    break;
                }
            }, userData);
            Event.current.Use();
        }
Exemplo n.º 4
0
 public void ExportStarMap()
 {
     if (m_StarMapVoList != null && m_StarMapVoList.Count > 0)
     {
         EditorStarMap            starMapData = new EditorStarMap();
         List <EditorFixedStar>   fixedStars  = new List <EditorFixedStar>();
         List <EditorPlanet>      planets     = new List <EditorPlanet>();
         List <EditorStarMapArea> planetAreas = new List <EditorStarMapArea>();
         FixedStarElement         element     = null;
         for (int iStar = 0; iStar < m_StarMapVoList.Count; iStar++)
         {
             StarMapVO       starMapVo = m_StarMapVoList[iStar];
             EditorFixedStar fixedStar = new EditorFixedStar();
             fixedStars.Add(fixedStar);
             fixedStar.fixedStarId   = starMapVo.FixedStarid;
             fixedStar.fixedStarName = starMapVo.Name;
             fixedStar.fixedStarRes  = starMapVo.AssetName;
             fixedStar.relations     = starMapVo.Relation_Id;
             element = m_StarMapMainPanel.GetElement(starMapVo.FixedStarid);
             if (element != null)
             {
                 fixedStar.position = new EditorPosition2D(element.GetPosition());
             }
             planets.Clear();
             SavePlanet(planets, starMapVo.FixedStarid, planetAreas, fixedStar);
             fixedStar.planetList = planets.ToArray();
         }
         starMapData.fixedStars = fixedStars.ToArray();
         EditorGamingMapData.SaveStarMapToJson(starMapData);
     }
 }
Exemplo n.º 5
0
        /// <summary>
        /// 右键响应
        /// </summary>
        /// <param name="instanceID"></param>
        /// <param name="selectionRect"></param>
        private void OnHierarchyGUI(int instanceID, Rect selectionRect)
        {
            if (Event.current != null && selectionRect.Contains(Event.current.mousePosition) &&
                Event.current.button == 1 && Event.current.type <= EventType.MouseUp)
            {
                GameObject selectedGameObject = EditorUtility.InstanceIDToObject(instanceID) as GameObject;
                if (selectedGameObject)
                {
                    StarMapEditorRoot starMapRoot = selectedGameObject.GetComponent <StarMapEditorRoot>();
                    if (starMapRoot != null)
                    {
                        RefreshStarMapRootUI(starMapRoot);
                    }

                    FixedStarElement starElement = selectedGameObject.GetComponent <FixedStarElement>();
                    if (starElement != null)
                    {
                        RefreshFixedStarElementUI(starElement);
                    }

                    StarMapMainPanel starMapMainPanel = selectedGameObject.GetComponent <StarMapMainPanel>();
                    if (starMapMainPanel != null)
                    {
                        RefreshStarMapMainPanel(starMapMainPanel);
                    }

                    PlanetElement planetElement = selectedGameObject.GetComponent <PlanetElement>();
                    if (planetElement != null)
                    {
                        RefreshPalnetElement(planetElement);
                    }

                    FixedStarPanel fixedStarPanel = selectedGameObject.GetComponent <FixedStarPanel>();
                    if (fixedStarPanel != null)
                    {
                        RefreshFixedStarPanel(fixedStarPanel);
                    }

                    PlanetPanel planetPanel = selectedGameObject.GetComponent <PlanetPanel>();
                    if (planetPanel != null)
                    {
                        RefreshPlanetPanel(planetPanel);
                    }

                    PlanetContainer planetContainer = selectedGameObject.GetComponent <PlanetContainer>();
                    if (planetContainer != null)
                    {
                        RefreshPlanetContainer(planetContainer);
                    }

                    PlanetAreaContainer planetAreaContainer = selectedGameObject.GetComponent <PlanetAreaContainer>();
                    if (planetAreaContainer != null)
                    {
                        RefreshPlanetAreaContainer(planetAreaContainer);
                    }
                }
            }
        }
Exemplo n.º 6
0
 private void OpenFixedStar(FixedStarElement element)
 {
     CloseAllPanel();
     if (element == null)
     {
         m_FixedStarPanel.gameObject.SetActive(true);
         return;
     }
     if (m_FixedStarPanel != null)
     {
         m_FixedStarPanel.gameObject.SetActive(true);
         if (element != null)
         {
             m_FixedStarPanel.ShowContainer(element.m_FixedStarid);
         }
     }
 }
Exemplo n.º 7
0
 private bool ExistElement(int fixedStarId)
 {
     if (m_FixedStarElements != null && m_FixedStarElements.Count > 0)
     {
         for (int iFixed = 0; iFixed < m_FixedStarElements.Count; iFixed++)
         {
             FixedStarElement element = m_FixedStarElements[iFixed];
             if (element == null || element.gameObject == null)
             {
                 continue;
             }
             if (element.m_FixedStarid == fixedStarId)
             {
                 return(true);
             }
         }
     }
     return(false);
 }
Exemplo n.º 8
0
        /// <summary>
        /// 判断excel表中是否有新增或者删除 有的话刷新对应的
        /// </summary>
        private void Check()
        {
            if (m_StarMapVoList == null || m_StarMapVoList.Count <= 0)
            {
                return;
            }
            ///判断是否有新增的 有的话添加
            for (int iStar = 0; iStar < m_StarMapVoList.Count; iStar++)
            {
                StarMapVO starMapVo = m_StarMapVoList[iStar];
                if (starMapVo == null)
                {
                    continue;
                }
                bool exist = ExistElement(starMapVo.FixedStarid);
                if (!exist)
                {
                    CreateFixedStarElement(starMapVo);
                }
            }
            //判断是否有删除的 有的话删除
            if (m_FixedStarElements != null && m_FixedStarElements.Count > 0)
            {
                for (int iStar = m_FixedStarElements.Count - 1; iStar >= 0; iStar--)
                {
                    FixedStarElement element = m_FixedStarElements[iStar];
                    if (element == null || element.gameObject == null)
                    {
                        continue;
                    }
                    int       fixedStarId = element.m_FixedStarid;
                    StarMapVO vo          = ConfigVO <StarMapVO> .Instance.GetData(fixedStarId);

                    if (vo == null || vo.ID <= 0)
                    {
                        GameObject.DestroyImmediate(element.gameObject);
                        m_FixedStarElements.Remove(element);
                    }
                }
            }
        }
Exemplo n.º 9
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 FixedStarElement;
     m_StarMapVo = ConfigVO <StarMapVO> .Instance.GetData(m_Target.m_FixedStarid);
 }
Exemplo n.º 11
0
        public IEnumerator DoEditorUpdate(StarMapEditorRoot root)
        {
            m_Root = root;
            if (m_RectTrans != null)
            {
                m_RectTrans = GetComponent <RectTransform>();
            }
            if (m_RectTrans != null)
            {
                m_RectTrans.anchoredPosition = Vector2.zero;
            }
            yield return(null);

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

            if (m_FixedStarElements != null && m_FixedStarElements.Count > 0)
            {
                for (int iStarElement = 0; iStarElement < m_FixedStarElements.Count; iStarElement++)
                {
                    FixedStarElement element = m_FixedStarElements[iStarElement];
                    if (element != null)
                    {
                        IEnumerator elementEnumer = element.DoEditorUpdate(this);
                        while (elementEnumer.MoveNext())
                        {
                            yield return(null);
                        }
                    }
                }
            }
            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_StarMapVoList != null && m_StarMapVoList.Count > 0)
            {
                int           trailIndex  = 0;
                TrailRenderer trailRender = null;
                for (int iStar = 0; iStar < m_StarMapVoList.Count; iStar++)
                {
                    StarMapVO starMapVo = m_StarMapVoList[iStar];
                    if (starMapVo == null)
                    {
                        continue;
                    }
                    FixedStarElement beginElement = GetElement(starMapVo.FixedStarid);
                    if (beginElement == null)
                    {
                        continue;
                    }
                    int[] relationIds = starMapVo.Relation_Id;
                    if (relationIds != null && relationIds.Length > 0)
                    {
                        for (int iRelation = 0; iRelation < relationIds.Length; iRelation++)
                        {
                            FixedStarElement endElement = GetElement(relationIds[iRelation]);
                            if (endElement == null)
                            {
                                continue;
                            }
                            if (m_Trails.Count > trailIndex)
                            {
                                trailRender = m_Trails[trailIndex];
                            }
                            else
                            {
                                GameObject trailObj = new GameObject("Trail_" + trailIndex);
                                trailRender = trailObj.AddComponent <TrailRenderer>();
                            }
                            trailRender.transform.SetParent(beginElement.transform);
                            trailIndex++;
                            trailRender.Clear();
                            trailRender.startWidth = 0.3f;
                            trailRender.AddPosition(beginElement.transform.position);
                            trailRender.AddPosition(endElement.transform.position);
                            trailRender.transform.position = endElement.transform.position;
                        }
                    }
                }
            }
        }