コード例 #1
0
        void OnWizardUpdate()
        {
            if (BoneSettingName == null)
            {
                BoneSettingName = new string[boneObjects.Length];
                for (int i = 0; i < boneObjects.Length; i++)
                {
                    SpringBoneSetting setting = (SpringBoneSetting)boneObjects[i];

                    if (setting.m_comment == "")
                    {
                        foreach (string name in setting.RootBones)
                        {
                            BoneSettingName[i] = "右のボーンを含む→" + name;
                            break;
                        }
                    }
                    else
                    {
                        BoneSettingName[i] = setting.m_comment;
                    }
                }
            }
            if (ColliderSettingName == null)
            {
                ColliderSettingName = new string[colliderObjects.Length];
                for (int i = 0; i < colliderObjects.Length; i++)
                {
                    SpringBoneColliderSetting setting
                        = (SpringBoneColliderSetting)colliderObjects[i];
                    ColliderSettingName[i] = setting.TargetName;
                }
            }
        }
コード例 #2
0
        void ExportSpringBone()
        {
            Object[] objects = targetModel.GetComponentsInChildren <SpringBone>();

            //gizmo以外はエクスポート 
            //transformは名前をエクスポートする(インポート時にFindで探す)
            for (int j = 0; j < objects.Length; j++)
            {
                SpringBone springbone = (SpringBone)objects[j];

                SpringBoneSetting exportData
                    = ScriptableObject.CreateInstance <SpringBoneSetting>();

                exportData.m_AttachObject = m_Utility.GetHierarchyPath(springbone.gameObject.transform);

                exportData.m_comment        = springbone.m_comment;
                exportData.m_stiffnessForce = springbone.m_stiffnessForce;
                exportData.m_gravityPower   = springbone.m_gravityPower;
                exportData.m_gravityDir     = springbone.m_gravityDir;
                exportData.m_dragForce      = springbone.m_dragForce;
                if (springbone.m_center != null)
                {
                    exportData.m_center = m_Utility.GetHierarchyPath(springbone.m_center.transform);
                }
                exportData.RootBones = new string[springbone.RootBones.Count];
                for (int i = 0; i < springbone.RootBones.Count; i++)
                {
                    exportData.RootBones[i] = m_Utility.GetHierarchyPath(springbone.RootBones[i].transform);
                }
                exportData.m_hitRadius = springbone.m_hitRadius;

                exportData.ColliderGroups = new string[springbone.ColliderGroups.Length];
                for (int i = 0; i < springbone.ColliderGroups.Length; i++)
                {
                    exportData.ColliderGroups[i]
                        = m_Utility.GetHierarchyPath(springbone.ColliderGroups[i].transform);

                    if (ColliderTergetName.Count == 0)
                    {
                        ColliderTergetName.Add(exportData.ColliderGroups[i]);
                    }
                    else
                    {
                        if (ColliderTergetName.IndexOf(exportData.ColliderGroups[i]) == -1)
                        {
                            ColliderTergetName.Add(exportData.ColliderGroups[i]);
                        }
                        ;
                    }
                }

                AssetDatabase.CreateAsset(
                    exportData, "Assets/Models/Resources/SpringBoneData/SpringBone/SpringBoneData_" + j + ".asset");
            }
        }
コード例 #3
0
        void ApplySpringBone()
        {
            //gizmo以外は設定を反映
            //transformはFind後したTransformを反映)
            for (int j = 0; j < boneObjects.Length; j++)
            {
                //設定データ
                SpringBoneSetting settingData = (SpringBoneSetting)boneObjects[j];

                //対象のボーン
                //m_Utility.ChangeRootPath 設定されたパスをターゲット対象に変更する
                GameObject targetObject
                    = GameObject.Find(m_Utility.ChangeRootPath(settingData.m_AttachObject, targetModel.name));

                SpringBone springbone = targetObject.AddComponent <SpringBone>();

                springbone.m_comment        = settingData.m_comment;
                springbone.m_stiffnessForce = settingData.m_stiffnessForce;
                springbone.m_gravityPower   = settingData.m_gravityPower;
                springbone.m_gravityDir     = settingData.m_gravityDir;
                springbone.m_dragForce      = settingData.m_dragForce;
                if (settingData.m_center != null)
                {
                    GameObject findObject = GameObject.Find(settingData.m_center);
                    if (findObject != null)
                    {
                        springbone.m_center = findObject.GetComponent <Transform>();
                    }
                }
                springbone.RootBones = new List <Transform>();
                for (int i = 0; i < settingData.RootBones.Length; i++)
                {
                    GameObject findObject
                        = GameObject.Find(m_Utility.ChangeRootPath(settingData.RootBones[i], targetModel.name));

                    springbone.RootBones.Add(findObject.GetComponent <Transform>());
                }
                springbone.m_hitRadius    = settingData.m_hitRadius;
                springbone.ColliderGroups = new SpringBoneColliderGroup[settingData.ColliderGroups.Length];
                for (int i = 0; i < settingData.ColliderGroups.Length; i++)
                {
                    GameObject findObject
                        = GameObject.Find(m_Utility.ChangeRootPath(settingData.ColliderGroups[i], targetModel.name));

                    springbone.ColliderGroups[i] = findObject.GetComponent <SpringBoneColliderGroup>();
                }
            }
        }