コード例 #1
0
ファイル: FTPath.cs プロジェクト: zyb2013/GameProject3
        public void       AddElement(Vector3 pos, Vector3 eulerAngles)
        {
            FTPathNode p = AddElement();

            p.transform.position    = pos;
            p.transform.eulerAngles = eulerAngles;
        }
コード例 #2
0
ファイル: FTPath.cs プロジェクト: zyb2013/GameProject3
        public FTPathNode DelElement(int index)
        {
            FTPathNode t = PathNodes[index];

            GameObject.DestroyImmediate(t.gameObject);
            PathNodes.RemoveAt(index);
            return(null);
        }
コード例 #3
0
ファイル: FTPath.cs プロジェクト: zyb2013/GameProject3
        public FTPathNode AddElement()
        {
            FTPathNode t = new GameObject(typeof(FTPathNode).Name).AddComponent <FTPathNode>();

            t.transform.parent = transform;
            t.Init();
            if (PathNodes.Count >= 2)
            {
                FTPathNode p1 = PathNodes[PathNodes.Count - 1];
                FTPathNode p2 = PathNodes[PathNodes.Count - 2];
                t.Pos = (p1.Pos - p2.Pos) + p1.Pos;
            }
            PathNodes.Add(t);
            return(t);
        }
コード例 #4
0
ファイル: FTPath.cs プロジェクト: zyb2013/GameProject3
        public override void OnDrawInspector()
        {
#if UNITY_EDITOR
            GUILayout.Space(10);
            this.ID           = UnityEditor.EditorGUILayout.IntField("ID", this.ID);
            this.Type         = (EPathNodeType)UnityEditor.EditorGUILayout.EnumPopup("Type", this.Type);
            this.PositionVary = UnityEditor.EditorGUILayout.Toggle("PositionVary", this.PositionVary);
            this.RotationVary = UnityEditor.EditorGUILayout.Toggle("RotationVary", this.RotationVary);
            if (GUILayout.Button("添加路点"))
            {
                AddElement();
            }

            int index = -1;
            for (int i = 0; i < PathNodes.Count; i++)
            {
                FTPathNode node = PathNodes[i];
                if (node == null)
                {
                    continue;
                }
                GUILayout.BeginHorizontal();
                GUILayout.Label(node.name);
                GUILayout.Label(node.Pos.ToString());
                GUILayout.Label(node.Face.ToString());
                GUI.color = Color.cyan;
                if (GUILayout.Button("I"))
                {
                    InsElement(i);
                }
                GUI.color = Color.red;
                if (GUILayout.Button("X"))
                {
                    index = i;
                }
                GUI.color = Color.white;
                GUILayout.EndHorizontal();
            }
            if (index >= 0)
            {
                DelElement(index);
            }
            GUILayout.Space(5);
#endif
        }
コード例 #5
0
ファイル: FTDraw.cs プロジェクト: zyb2013/GameProject3
        public static void DrawPathNodes(EPathNodeType type, List <FTPathNode> pathNodes)
        {
#if UNITY_EDITOR
            if (pathNodes.Count < 2)
            {
                return;
            }
            UnityEditor.Handles.color = Color.green;
            for (int i = 0; i < pathNodes.Count; i++)
            {
                FTPathNode n1 = pathNodes[i];
                if (n1 == null)
                {
                    pathNodes.RemoveAt(i);
                    break;
                }
                n1.name = string.Format("P {0}", i);
                FTDraw.DrawGizmosSphere(n1.transform, Color.green, 0.5f);
                FTDraw.DrawLabelIcon(n1.gameObject, 6);
                if (i < pathNodes.Count - 1)
                {
                    FTPathNode n2 = pathNodes[i + 1];
                    if (n2 == null)
                    {
                        continue;
                    }
                    switch (type)
                    {
                    case EPathNodeType.Linear:
                        UnityEditor.Handles.DrawBezier(n1.transform.position, n2.transform.position, n1.transform.position, n2.transform.position, Color.green, null, 2);
                        break;

                    case EPathNodeType.Bezier:
                        UnityEditor.Handles.DrawBezier(n1.transform.position, n2.transform.position, n1.TangentOut, n2.TangentIn, Color.green, null, 2);
                        break;
                    }
                }
            }
#endif
        }
コード例 #6
0
ファイル: FTPath.cs プロジェクト: zyb2013/GameProject3
        public FTPathNode InsElement(int index)
        {
            FTPathNode t = new GameObject(typeof(FTPathNode).Name).AddComponent <FTPathNode>();

            t.transform.parent = transform;
            t.Init();
            FTPathNode p1 = null;
            FTPathNode p2 = null;

            if (index > 0)
            {
                p1 = PathNodes[index - 1];
            }
            if (index <= PathNodes.Count - 1)
            {
                p2 = PathNodes[index];
            }
            if (p1 != null && p2 != null)
            {
                t.Pos = (p1.Pos + p2.Pos) * 0.5f;
            }
            PathNodes.Insert(index, t);
            return(t);
        }