示例#1
0
        //=========================================================================================
        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);
            //}
        }
示例#4
0
        /// <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;
            }
        }
示例#5
0
        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.");
            }
        }