public override string GetInformation()
        {
            StaticStringBuilder.Clear();

            var err = VerifyData();

            if (err == Define.Error.None)
            {
                // OK
                StaticStringBuilder.AppendLine("Active: ", Status.IsActive);
                StaticStringBuilder.Append("Use Deformer Vertex: ", UseVertexCount);
            }
            else if (err == Define.Error.EmptyData)
            {
                StaticStringBuilder.Append(Define.GetErrorMessage(err));
            }
            else
            {
                // エラー
                StaticStringBuilder.AppendLine("This mesh spring is in a state error!");
                if (Application.isPlaying)
                {
                    StaticStringBuilder.AppendLine("Execution stopped.");
                }
                else
                {
                    StaticStringBuilder.AppendLine("Please recreate the mesh spring data.");
                }
                StaticStringBuilder.Append(Define.GetErrorMessage(err));
            }

            return(StaticStringBuilder.ToString());
        }
Example #2
0
        /// <summary>
        /// すべてのボーンを辞書に登録して返す
        /// この時にボーン名に重複があると着せ替えのときに問題を起こす可能性がある
        /// </summary>
        public Dictionary <string, Transform> GetBoneDict()
        {
            if (boneDict.Count > 0)
            {
                return(boneDict);
            }

            boneDict.Clear();
            var tlist = GetComponentsInChildren <Transform>();

            foreach (var t in tlist)
            {
                if (boneDict.ContainsKey(t.name))
                {
                    // Duplication name!
                    Debug.LogWarning(string.Format("{0} [{1}]", Define.GetErrorMessage(Define.Error.OverlappingTransform), t.name));
                }
                else
                {
                    boneDict.Add(t.name, t);
                }
            }

            //Debug.Log("boneDict:" + boneDict.Count);
            return(boneDict);
        }
Example #3
0
        /// <summary>
        /// データ情報
        /// </summary>
        /// <returns></returns>
        public override string GetInformation()
        {
            StaticStringBuilder.Clear();

            var err = VerifyData();

            if (err == Define.Error.None)
            {
                // OK
                StaticStringBuilder.AppendLine("Active: ", Status.IsActive);
                StaticStringBuilder.AppendLine("Skinning: ", MeshData.isSkinning);
                StaticStringBuilder.AppendLine("Vertex: ", MeshData.VertexCount);
                StaticStringBuilder.AppendLine("Triangle: ", MeshData.TriangleCount);
                StaticStringBuilder.Append("Bone: ", MeshData.BoneCount);
            }
            else
            {
                // エラー
                StaticStringBuilder.AppendLine("This mesh data is Invalid!");

                if (Application.isPlaying)
                {
                    StaticStringBuilder.AppendLine("Execution stopped.");
                }
                else
                {
                    StaticStringBuilder.AppendLine("Please create the mesh data.");
                }
                StaticStringBuilder.Append(Define.GetErrorMessage(err));
            }

            return(StaticStringBuilder.ToString());
        }
Example #4
0
        /// <summary>
        /// データ検証の結果テキストを取得する
        /// </summary>
        /// <returns></returns>
        public override string GetInformation()
        {
            StaticStringBuilder.Clear();

            var err = VerifyData();

            if (err == Define.Error.None)
            {
                // OK
                var cdata = ClothData;
                StaticStringBuilder.AppendLine("Active: ", Status.IsActive);
                StaticStringBuilder.AppendLine("Transform: ", MeshData.VertexCount);
                StaticStringBuilder.AppendLine("Clamp Position: ", clothParams.UseClampPositionLength ? cdata.VertexUseCount : 0);
                StaticStringBuilder.AppendLine("Spring: ", clothParams.UseSpring ? cdata.VertexUseCount : 0);
                StaticStringBuilder.Append("Adjust Rotation: ", clothParams.UseAdjustRotation ? cdata.VertexUseCount : 0);
            }
            else
            {
                // エラー
                StaticStringBuilder.AppendLine("This bone spring is in a state error!");
                if (Application.isPlaying)
                {
                    StaticStringBuilder.AppendLine("Execution stopped.");
                }
                else
                {
                    StaticStringBuilder.AppendLine("Please recreate the bone spring data.");
                }
                StaticStringBuilder.Append(Define.GetErrorMessage(err));
            }

            return(StaticStringBuilder.ToString());
        }
Example #5
0
        /// <summary>
        /// データ検証の結果テキストを取得する
        /// </summary>
        /// <returns></returns>
        public override string GetInformation()
        {
            StaticStringBuilder.Clear();

            var err = VerifyData();

            if (err == Define.Error.None)
            {
                // OK
                var cdata = ClothData;
                StaticStringBuilder.AppendLine("Active: ", Status.IsActive);
                StaticStringBuilder.AppendLine("Transform: ", MeshData.VertexCount);
                StaticStringBuilder.AppendLine("Line: ", MeshData.LineCount);
                StaticStringBuilder.AppendLine("Triangle: ", MeshData.TriangleCount);
                StaticStringBuilder.AppendLine("Clamp Distance: ", cdata.ClampDistanceConstraintCount);
                StaticStringBuilder.AppendLine("Clamp Position: ", clothParams.UseClampPositionLength ? cdata.VertexUseCount : 0);
                StaticStringBuilder.AppendLine("Clamp Rotation: ", cdata.ClampRotationConstraintRootCount, " - ", cdata.ClampRotationConstraintDataCount);
                StaticStringBuilder.AppendLine("Struct Distance: ", cdata.StructDistanceConstraintCount / 2);
                StaticStringBuilder.AppendLine("Bend Distance: ", cdata.BendDistanceConstraintCount / 2);
                StaticStringBuilder.AppendLine("Near Distance: ", cdata.NearDistanceConstraintCount / 2);
                StaticStringBuilder.AppendLine("Restore Rotation: ", cdata.RestoreRotationConstraintCount);
                StaticStringBuilder.AppendLine("Triangle Bend: ", cdata.TriangleBendConstraintCount);
                //StaticStringBuilder.AppendLine("Rotation Interpolation: ", "<Line:", cdata.LineRotationWorkerCount > 0 ? "ON" : "OFF", "> <Triangle:", cdata.TriangleRotationWorkerCount > 0 ? "ON" : "OFF", ">");
                StaticStringBuilder.Append("Rotation Interpolation: ");
                if (cdata.LineRotationWorkerCount > 0)
                {
                    StaticStringBuilder.Append("Line ");
                }
                if (cdata.TriangleRotationWorkerCount > 0)
                {
                    StaticStringBuilder.Append("Triangle ");
                }
                StaticStringBuilder.AppendLine();
                StaticStringBuilder.Append("Collider: ", teamData.ColliderCount);
            }
            else if (err == Define.Error.EmptyData)
            {
                StaticStringBuilder.Append(Define.GetErrorMessage(err));
            }
            else
            {
                // エラー
                StaticStringBuilder.AppendLine("This bone cloth is in a state error!");
                if (Application.isPlaying)
                {
                    StaticStringBuilder.AppendLine("Execution stopped.");
                }
                else
                {
                    StaticStringBuilder.AppendLine("Please recreate the bone cloth data.");
                }
                StaticStringBuilder.Append(Define.GetErrorMessage(err));
            }

            return(StaticStringBuilder.ToString());
        }
        /// <summary>
        /// 現在のデータバージョン状態をインスペクタにヘルプボックスで表示する
        /// </summary>
        /// <param name="core"></param>
        public static void DispVersionStatus(CoreComponent core)
        {
            var code = core.VerityDataVersion();

            if (Define.IsNormal(code))
            {
                return;
            }

            EditorGUILayout.HelpBox(Define.GetErrorMessage(code), MessageType.Warning);
        }
        /// <summary>
        /// 指定ボーンを親に追加する
        /// </summary>
        /// <param name="root"></param>
        /// <param name="croot"></param>
        /// <param name="bone"></param>
        private void AddBone(Transform root, Transform croot, Transform bone)
        {
            if (boneDict.ContainsKey(bone.name))
            {
                // すでに登録済み
                return;
            }

            // ボーンを追加する親ボーンを検索する
            Transform attachBone = root;
            Transform before     = bone;
            Transform t          = bone.parent;

            while (t && t != croot)
            {
                if (boneDict.ContainsKey(t.name))
                {
                    attachBone = boneDict[t.name];
                    break;
                }

                before = t;
                t      = t.parent;
            }

            // ボーン追加
            before.SetParent(attachBone, false);
            //Debug.Log("Add attach:" + attachBone.name + " before:" + before.name);

            // before以下を辞書に登録する
            var blist = before.GetComponentsInChildren <Transform>();

            foreach (var b in blist)
            {
                if (boneDict.ContainsKey(b.name))
                {
                    // Duplication name!
                    Debug.LogWarning(string.Format("{0} [{1}]", Define.GetErrorMessage(Define.Error.AddOverlappingTransform), b.name));
                }
                else
                {
                    boneDict.Add(b.name, b);
                    boneReferenceDict.Add(b, 0); // まず参照数0で初期化
                }
            }
        }
        //=========================================================================================
        /// <summary>
        /// すべてのボーンを辞書に登録する
        /// この時にボーン名に重複があると着せ替えのときに問題を起こす可能性がある
        /// </summary>
        private void CreateBoneDict()
        {
            var tlist = owner.GetComponentsInChildren <Transform>();

            foreach (var t in tlist)
            {
                if (boneDict.ContainsKey(t.name))
                {
                    // Duplication name!
                    Debug.LogWarning(string.Format("{0} [{1}]", Define.GetErrorMessage(Define.Error.OverlappingTransform), t.name));
                }
                else
                {
                    boneDict.Add(t.name, t);
                    boneReferenceDict.Add(t, 1); // 参照数1で初期化
                }
            }
        }
        /// <summary>
        /// 現在のデータ状態をインスペクタにヘルプボックスで表示する
        /// </summary>
        /// <param name="istatus"></param>
        public static void DispDataStatus(IDataVerify verify)
        {
            if (verify == null)
            {
                return;
            }

            var code = verify.VerifyData();
            //bool valid = verify.VerifyData() == Define.Error.None;
            //var mestype = valid ? MessageType.Info : MessageType.Error;
            var mestype = MessageType.Info;

            if (Define.IsWarning(code))
            {
                mestype = MessageType.Warning;
            }
            if (Define.IsError(code))
            {
                mestype = MessageType.Error;
            }

            EditorGUILayout.HelpBox(verify.GetInformation(), mestype);
        }