/// <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); }
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()); }
/// <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()); }
/// <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()); }
/// <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で初期化 } } }