예제 #1
0
        //=========================================================================================
        /// <summary>
        /// メッシュのワールド座標/法線/接線を返す(エディタ設定用)
        /// </summary>
        /// <param name="wposList"></param>
        /// <param name="wnorList"></param>
        /// <param name="wtanList"></param>
        /// <returns>頂点数</returns>
        public override int GetEditorPositionNormalTangent(
            out List <Vector3> wposList,
            out List <Vector3> wnorList,
            out List <Vector3> wtanList
            )
        {
            wposList = new List <Vector3>();
            wnorList = new List <Vector3>();
            wtanList = new List <Vector3>();

            if (Application.isPlaying)
            {
                if (Status.IsDispose)
                {
                    return(0);
                }

                if (IsMeshUse() == false || TargetObject == null)
                {
                    return(0);
                }

                Vector3[] posArray = new Vector3[VertexCount];
                Vector3[] norArray = new Vector3[VertexCount];
                Vector3[] tanArray = new Vector3[VertexCount];
                MagicaPhysicsManager.Instance.Mesh.CopyToRenderMeshWorldData(MeshIndex, TargetObject.transform, posArray, norArray, tanArray);

                wposList = new List <Vector3>(posArray);
                wnorList = new List <Vector3>(norArray);
                wtanList = new List <Vector3>(tanArray);

                return(VertexCount);
            }
            else
            {
                if (TargetObject == null)
                {
                    return(0);
                }
                var ren = TargetObject.GetComponent <Renderer>();
                MeshUtility.CalcMeshWorldPositionNormalTangent(ren, sharedMesh, out wposList, out wnorList, out wtanList);

                return(wposList.Count);
            }
        }
        //=========================================================================================
        /// <summary>
        /// メッシュのワールド座標/法線/接線を返す(エディタ設定用)
        /// </summary>
        /// <param name="wposList"></param>
        /// <param name="wnorList"></param>
        /// <param name="wtanList"></param>
        /// <returns>頂点数</returns>
        public override int GetEditorPositionNormalTangent(
            out List <Vector3> wposList,
            out List <Vector3> wnorList,
            out List <Vector3> wtanList
            )
        {
            wposList = new List <Vector3>();
            wnorList = new List <Vector3>();
            wtanList = new List <Vector3>();

            if (Application.isPlaying)
            {
                if (IsMeshUse() == false)
                {
                    return(0);
                }

                Vector3[] posArray = new Vector3[VertexCount];
                Vector3[] norArray = new Vector3[VertexCount];
                Vector3[] tanArray = new Vector3[VertexCount];
                MagicaPhysicsManager.Instance.Mesh.CopyToVirtualMeshWorldData(MeshIndex, posArray, norArray, tanArray);

                wposList = new List <Vector3>(posArray);
                wnorList = new List <Vector3>(norArray);
                wtanList = new List <Vector3>(tanArray);

                return(VertexCount);
            }
            else
            {
                if (MeshData == null || TargetObject == null || boneList.Count == 0)
                {
                    return(0);
                }

                MeshUtility.CalcMeshWorldPositionNormalTangent(MeshData, boneList, out wposList, out wnorList, out wtanList);

                return(MeshData.VertexCount);
            }
        }