示例#1
0
        public static void DrawProjectorGizmos(this OTProjector projector)
        {
            Matrix4x4 mtx = default(Matrix4x4);

            if (projector.orthographic)
            {
                mtx = Matrix4x4.Ortho(-projector.orthographicSize * projector.aspect, projector.orthographicSize * projector.aspect, projector.orthographicSize, -projector.orthographicSize,
                                      -projector.near, -projector.far).inverse;
            }
            else
            {
                mtx = Matrix4x4.Perspective(projector.fieldOfView, projector.aspect, -projector.near, -projector.far).inverse;
            }
            mtx = projector.transform.localToWorldMatrix * mtx;
            Vector3 p1 = new Vector3(-1, -1, -1);
            Vector3 p2 = new Vector3(-1, 1, -1);
            Vector3 p3 = new Vector3(1, 1, -1);
            Vector3 p4 = new Vector3(1, -1, -1);
            Vector3 p5 = new Vector3(-1, -1, 1);
            Vector3 p6 = new Vector3(-1, 1, 1);
            Vector3 p7 = new Vector3(1, 1, 1);
            Vector3 p8 = new Vector3(1, -1, 1);

            p1 = mtx.MultiplyPoint(p1);
            p2 = mtx.MultiplyPoint(p2);
            p3 = mtx.MultiplyPoint(p3);
            p4 = mtx.MultiplyPoint(p4);
            p5 = mtx.MultiplyPoint(p5);
            p6 = mtx.MultiplyPoint(p6);
            p7 = mtx.MultiplyPoint(p7);
            p8 = mtx.MultiplyPoint(p8);

            Gizmos.color = new Color(0.8f, 0.8f, 0.8f, 0.6f);

            Gizmos.DrawLine(p1, p2);
            Gizmos.DrawLine(p2, p3);
            Gizmos.DrawLine(p3, p4);
            Gizmos.DrawLine(p4, p1);

            Gizmos.DrawLine(p5, p6);
            Gizmos.DrawLine(p6, p7);
            Gizmos.DrawLine(p7, p8);
            Gizmos.DrawLine(p8, p5);

            Gizmos.DrawLine(p1, p5);
            Gizmos.DrawLine(p2, p6);
            Gizmos.DrawLine(p3, p7);
            Gizmos.DrawLine(p4, p8);
        }
示例#2
0
    void OnEnable()
    {
        m_Target = (OTProjector)target;

        List <string> treeList = new List <string>();

        treeList.Add("None");

        DirectoryInfo resDir = new DirectoryInfo("Assets/Resources");
        int           i      = 0;

        if (resDir.Exists)
        {
            FileInfo[] treeFiles = resDir.GetFiles("*.asset", SearchOption.AllDirectories);
            foreach (var file in treeFiles)
            {
                string filename = file.FullName;
                filename = filename.Replace('\\', '/');
                filename = FileUtil.GetProjectRelativePath(filename);
                var obj = AssetDatabase.LoadAssetAtPath <OcTreeProjector.MeshOcTree>(filename);
                if (filename.EndsWith(".asset"))
                {
                    filename = filename.Replace(".asset", "");
                }
                if (filename.StartsWith("Assets/Resources/"))
                {
                    filename = filename.Replace("Assets/Resources/", "");
                }
                if (obj)
                {
                    i++;
                    treeList.Add(filename);
                    if (m_Target.ocTreeName == filename)
                    {
                        m_Index = i;
                    }
                }
            }
        }
        m_Trees = treeList.ToArray();
    }