//========================================================================================= public void ClothActive(PhysicsTeam team, ClothParams param, ClothData clothData) { var manager = MagicaPhysicsManager.Instance; // ワールド移動影響ボーンを登録 Transform influenceTarget = param.GetInfluenceTarget() ? param.GetInfluenceTarget() : team.transform; teamBoneIndex = manager.Bone.AddBone(influenceTarget); manager.Team.SetBoneIndex(team.TeamId, teamBoneIndex); team.InfluenceTarget = influenceTarget; // 重力方向減衰ボーンを登録 //Debug.Log("Damp dir:" + clothData.directionalDampingUpDir); influenceTarget = param.DirectionalDampingObject ? param.DirectionalDampingObject : team.transform; teamDirectionalDampingBoneIndex = manager.Bone.AddBone(influenceTarget); manager.Team.SetDirectionalDampingBoneIndex(team.TeamId, param.UseDirectionalDamping, teamDirectionalDampingBoneIndex, clothData.directionalDampingUpDir); }
/// <summary> /// アバター着せ替えによるボーン置換 /// </summary> /// <param name="boneReplaceDict"></param> public void ReplaceBone(PhysicsTeam team, ClothParams param, Dictionary <Transform, Transform> boneReplaceDict) { // この呼び出しは ClothActive() の前なので注意! // ワールド移動影響ボーン切り替え Transform influenceTarget = param.GetInfluenceTarget(); if (influenceTarget && boneReplaceDict.ContainsKey(influenceTarget)) { param.SetInfluenceTarget(boneReplaceDict[influenceTarget]); } }
//========================================================================================= public void ClothActive(PhysicsTeam team, ClothParams param, ClothData clothData) { var manager = MagicaPhysicsManager.Instance; // ワールド移動影響ボーンを登録 Transform influenceTarget = param.GetInfluenceTarget() ? param.GetInfluenceTarget() : team.transform; teamBoneIndex = manager.Bone.AddBone(influenceTarget); manager.Team.SetBoneIndex(team.TeamId, teamBoneIndex, clothData.initScale); team.InfluenceTarget = influenceTarget; // 重力方向減衰ボーンを登録 //Debug.Log("Damp dir:" + clothData.directionalDampingUpDir); //influenceTarget = param.DirectionalDampingObject ? param.DirectionalDampingObject : team.transform; //teamDirectionalDampingBoneIndex = manager.Bone.AddBone(influenceTarget); //manager.Team.SetDirectionalDampingBoneIndex(team.TeamId, param.UseDirectionalDamping, teamDirectionalDampingBoneIndex, clothData.directionalDampingUpDir); // ベーススキニング用ボーンを登録 //foreach (var bone in team.TeamData.SkinningBoneList) //{ // var boneIndex = manager.Bone.AddBone(bone); // manager.Team.AddSkinningBoneIndex(team.TeamId, boneIndex); //} }
/// <summary> /// jsonテキストからパラメータを復元する /// </summary> /// <param name="owner"></param> /// <param name="clothParam"></param> /// <param name="json"></param> private static void LoadClothParam(MonoBehaviour owner, ClothParams clothParam, string json) { if (string.IsNullOrEmpty(json) == false) { // 上書きしないプロパティを保持 Transform influenceTarget = clothParam.GetInfluenceTarget(); Transform disableReferenceObject = clothParam.DisableReferenceObject; //Transform directionalDampingObject = clothParam.DirectionalDampingObject; // undo Undo.RecordObject(owner, "Load preset"); JsonUtility.FromJsonOverwrite(json, clothParam); // 上書きしないプロパティを書き戻し clothParam.SetInfluenceTarget(influenceTarget); clothParam.DisableReferenceObject = disableReferenceObject; //clothParam.DirectionalDampingObject = directionalDampingObject; } }
private static void LoadClothParam(MonoBehaviour owner, ClothParams clothParam) { // フォルダを読み込み string folder = EditorUserSettings.GetConfigValue(configName); // 読み込みダイアログ string path = UnityEditor.EditorUtility.OpenFilePanel("Load Preset", folder, "json"); if (string.IsNullOrEmpty(path)) { return; } // フォルダを記録 folder = Path.GetDirectoryName(path); EditorUserSettings.SetConfigValue(configName, folder); // json Debug.Log("Load preset file:" + path); string json = File.ReadAllText(path); if (string.IsNullOrEmpty(json) == false) { // 上書きしないプロパティを保持 Transform influenceTarget = clothParam.GetInfluenceTarget(); Transform disableReferenceObject = clothParam.DisableReferenceObject; Transform directionalDampingObject = clothParam.DirectionalDampingObject; // undo Undo.RecordObject(owner, "Load preset"); JsonUtility.FromJsonOverwrite(json, clothParam); // 上書きしないプロパティを書き戻し clothParam.SetInfluenceTarget(influenceTarget); clothParam.DisableReferenceObject = disableReferenceObject; clothParam.DirectionalDampingObject = directionalDampingObject; Debug.Log("Complete."); } }