Exemplo n.º 1
0
        public static void RestoreBone(Maid maid, int slotNo, GameObject obj, Transform bone)
        {
            BackUpBoneData orNullMaidBoneData = BackUpData.GetOrNullMaidBoneData(maid, slotNo, obj, bone);
            bool           flag = orNullMaidBoneData == null;

            if (!flag)
            {
                bool changedPos = orNullMaidBoneData.changedPos;
                if (changedPos)
                {
                    bone.localPosition = orNullMaidBoneData.position;
                }
                bool changedRot = orNullMaidBoneData.changedRot;
                if (changedRot)
                {
                    bone.localRotation = orNullMaidBoneData.rotation;
                }
                bool changedScl = orNullMaidBoneData.changedScl;
                if (changedScl)
                {
                    bone.localScale = orNullMaidBoneData.scale;
                }
                BackUpObjectData orNullMaidObjectData = BackUpData.GetOrNullMaidObjectData(maid, slotNo, obj);
                orNullMaidObjectData.boneDataDic.Remove(bone);
            }
        }
        private void ResetTransform()
        {
            Transform      bone = CommonUIData.bone;
            BackUpBoneData orNullMaidBoneData = BackUpData.GetOrNullMaidBoneData(CommonUIData.maid, CommonUIData.slotNo, CommonUIData.obj, bone);
            bool           flag = orNullMaidBoneData == null;

            if (!flag)
            {
                bool changedPos = orNullMaidBoneData.changedPos;
                if (changedPos)
                {
                    bone.localPosition = orNullMaidBoneData.position;
                }
                bool changedRot = orNullMaidBoneData.changedRot;
                if (changedRot)
                {
                    bone.localRotation = orNullMaidBoneData.rotation;
                }
                bool changedScl = orNullMaidBoneData.changedScl;
                if (changedScl)
                {
                    bone.localScale = orNullMaidBoneData.scale;
                }
                BackUpData.GetOrNullMaidObjectData(CommonUIData.maid, CommonUIData.slotNo, CommonUIData.obj).boneDataDic.Remove(bone);
            }
        }
Exemplo n.º 3
0
        public static void RestoreScale(Maid maid, int slotNo, GameObject obj, Transform bone)
        {
            BackUpBoneData orNullMaidBoneData = BackUpData.GetOrNullMaidBoneData(maid, slotNo, obj, bone);
            bool           flag = orNullMaidBoneData == null;

            if (!flag)
            {
                bool changedScl = orNullMaidBoneData.changedScl;
                if (changedScl)
                {
                    bone.localScale = orNullMaidBoneData.scale;
                    bool flag2 = orNullMaidBoneData.changedPos || orNullMaidBoneData.changedRot;
                    if (flag2)
                    {
                        orNullMaidBoneData.changedScl = false;
                    }
                    else
                    {
                        BackUpData.GetOrNullMaidObjectData(maid, slotNo, obj).boneDataDic.Remove(bone);
                    }
                }
            }
        }
        private void ResetScale()
        {
            Transform      bone = CommonUIData.bone;
            BackUpBoneData orNullMaidBoneData = BackUpData.GetOrNullMaidBoneData(CommonUIData.maid, CommonUIData.slotNo, CommonUIData.obj, bone);
            bool           flag = orNullMaidBoneData == null;

            if (!flag)
            {
                bool changedScl = orNullMaidBoneData.changedScl;
                if (changedScl)
                {
                    bone.localScale = orNullMaidBoneData.scale;
                }
                bool flag2 = orNullMaidBoneData.changedPos || orNullMaidBoneData.changedRot;
                if (flag2)
                {
                    orNullMaidBoneData.changedScl = false;
                }
                else
                {
                    BackUpData.GetOrNullMaidObjectData(CommonUIData.maid, CommonUIData.slotNo, CommonUIData.obj).boneDataDic.Remove(bone);
                }
            }
        }
Exemplo n.º 5
0
        private void DrawTransform()
        {
            BackUpBoneData backUpBoneData = null;
            bool           flag           = CommonUIData.bone;

            if (flag)
            {
                backUpBoneData = BackUpData.GetOrNullMaidBoneData(CommonUIData.maid, CommonUIData.slotNo, CommonUIData.obj, CommonUIData.bone);
            }
            GUILayout.BeginHorizontal(new GUILayoutOption[0]);
            GUILayout.Label("位置", UIParams.Instance.lStyle, new GUILayoutOption[0]);
            GUILayout.FlexibleSpace();
            bool flag2 = backUpBoneData == null || !backUpBoneData.changedPos;

            if (flag2)
            {
                GUI.enabled = false;
            }
            bool flag3 = GUILayout.Button("R", UIParams.Instance.bStyle, new GUILayoutOption[0]);

            if (flag3)
            {
                BackUpData.RestorePosition(CommonUIData.maid, CommonUIData.slotNo, CommonUIData.obj, CommonUIData.bone);
                BackUpData.Refresh();
            }
            GUI.enabled = true;
            GUILayout.EndHorizontal();
            GUILayout.BeginHorizontal(new GUILayoutOption[0]);
            GUILayout.Label("回転", UIParams.Instance.lStyle, new GUILayoutOption[0]);
            GUILayout.FlexibleSpace();
            bool flag4 = backUpBoneData == null || !backUpBoneData.changedRot;

            if (flag4)
            {
                GUI.enabled = false;
            }
            bool flag5 = GUILayout.Button("R", UIParams.Instance.bStyle, new GUILayoutOption[0]);

            if (flag5)
            {
                BackUpData.RestoreRotation(CommonUIData.maid, CommonUIData.slotNo, CommonUIData.obj, CommonUIData.bone);
                BackUpData.Refresh();
            }
            GUI.enabled = true;
            GUILayout.EndHorizontal();
            GUILayout.BeginHorizontal(new GUILayoutOption[0]);
            GUILayout.Label("拡縮", UIParams.Instance.lStyle, new GUILayoutOption[0]);
            GUILayout.FlexibleSpace();
            bool flag6 = backUpBoneData == null || !backUpBoneData.changedScl;

            if (flag6)
            {
                GUI.enabled = false;
            }
            bool flag7 = GUILayout.Button("R", UIParams.Instance.bStyle, new GUILayoutOption[0]);

            if (flag7)
            {
                BackUpData.RestoreScale(CommonUIData.maid, CommonUIData.slotNo, CommonUIData.obj, CommonUIData.bone);
                BackUpData.Refresh();
            }
            GUI.enabled = true;
            GUILayout.EndHorizontal();
        }
        private static XElement GetMaidObjectData(Maid maid, int slotID)
        {
            SceneDataManager.trsHash = new HashSet <Transform>();
            bool       flag  = false;
            bool       flag2 = slotID == -1;
            GameObject gameObject;

            if (flag2)
            {
                TBodySkin tbodySkin = maid.body0.goSlot[0];
                gameObject = maid.body0.m_Bones.gameObject;
            }
            else
            {
                TBodySkin tbodySkin = maid.body0.GetSlot(slotID);
                gameObject = tbodySkin.obj;
            }
            bool     flag3 = !gameObject;
            XElement result;

            if (flag3)
            {
                result = null;
            }
            else
            {
                BackUpSlotData orNullMaidSlotData = BackUpData.GetOrNullMaidSlotData(maid, slotID);
                bool           flag4 = orNullMaidSlotData == null;
                if (flag4)
                {
                    result = null;
                }
                else
                {
                    bool flag5 = !orNullMaidSlotData.objectDataDic.ContainsKey(gameObject);
                    if (flag5)
                    {
                        result = null;
                    }
                    else
                    {
                        BackUpObjectData backUpObjectData = orNullMaidSlotData.objectDataDic[gameObject];
                        XElement         xelement         = new XElement("ObjectData");
                        bool             changedYure      = backUpObjectData.changedYure;
                        if (changedYure)
                        {
                            XElement xelement2 = new XElement("Yure");
                            bool     yureState = YureUtil.GetYureState(maid, slotID);
                            xelement2.Add(yureState);
                            xelement.Add(xelement2);
                            bool flag6 = !yureState;
                            if (flag6)
                            {
                                flag = true;
                            }
                        }
                        bool        flag7 = slotID == -1;
                        Transform   rootBone;
                        Transform[] array;
                        if (flag7)
                        {
                            SkinnedMeshRenderer componentInChildren = maid.body0.goSlot[0].obj.GetComponentInChildren <SkinnedMeshRenderer>();
                            rootBone = maid.body0.m_Bones.transform;
                            array    = (from bone in componentInChildren.bones
                                        where bone != null
                                        select CMT.SearchObjName(rootBone, bone.name, true) into bone
                                        where bone != null
                                        select bone).ToArray <Transform>();
                        }
                        else
                        {
                            rootBone = maid.body0.goSlot[slotID].obj_tr;
                            SkinnedMeshRenderer componentInChildren2 = rootBone.gameObject.GetComponentInChildren <SkinnedMeshRenderer>();
                            array = (from bone in componentInChildren2.bones
                                     where bone != null
                                     select bone).ToArray <Transform>();
                        }
                        foreach (Transform transform in array)
                        {
                            Transform transform2 = transform;
                            while (transform2 != rootBone)
                            {
                                bool flag8 = !transform2;
                                if (flag8)
                                {
                                    Debug.Log("ルートオブジェクト配下にありません:" + transform.name);
                                    return(null);
                                }
                                bool flag9 = SceneDataManager.trsHash.Contains(transform2);
                                if (flag9)
                                {
                                    break;
                                }
                                bool flag10 = flag || BackUpData.GetOrNullMaidBoneData(maid, slotID, gameObject, transform2) != null;
                                if (flag10)
                                {
                                    XElement xelement3 = new XElement("TransformData");
                                    XElement xelement4 = new XElement("Name");
                                    xelement4.Add(transform2.name);
                                    xelement3.Add(xelement4);
                                    xelement3.Add(SceneDataManager.GetVector3Data("Scale", transform2.localScale));
                                    xelement3.Add(SceneDataManager.GetVector3Data("Position", transform2.localPosition));
                                    xelement3.Add(SceneDataManager.GetVector3Data("Rotation", transform2.localEulerAngles));
                                    xelement.Add(xelement3);
                                }
                                SceneDataManager.trsHash.Add(transform2);
                                transform2 = transform2.parent;
                            }
                        }
                        result = xelement;
                    }
                }
            }
            return(result);
        }
        public void Draw()
        {
            GUILayout.Label("ボーン編集", new GUILayoutOption[0]);
            UIUtil.BeginIndentArea();
            bool flag = CommonUIData.bone;

            if (flag)
            {
                bool maidBoneDataExist = BackUpData.GetMaidBoneDataExist(CommonUIData.maid, CommonUIData.slotNo, CommonUIData.obj, CommonUIData.bone);
                if (maidBoneDataExist)
                {
                    GUILayout.BeginHorizontal(new GUILayoutOption[0]);
                    bool flag2 = GUILayout.Button("トランスフォームリセット", UIParams.Instance.bStyle, new GUILayoutOption[0]);
                    if (flag2)
                    {
                        this.ResetTransform();
                    }
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();
                    UIUtil.BeginIndentArea();
                    BackUpBoneData orNullMaidBoneData = BackUpData.GetOrNullMaidBoneData(CommonUIData.maid, CommonUIData.slotNo, CommonUIData.obj, CommonUIData.bone);
                    bool           flag3 = orNullMaidBoneData != null;
                    if (flag3)
                    {
                        bool changedPos = orNullMaidBoneData.changedPos;
                        if (changedPos)
                        {
                            GUILayout.BeginHorizontal(new GUILayoutOption[0]);
                            bool flag4 = GUILayout.Button("位置リセット", UIParams.Instance.bStyle, new GUILayoutOption[0]);
                            if (flag4)
                            {
                                this.ResetPosition();
                            }
                            GUILayout.FlexibleSpace();
                            GUILayout.EndHorizontal();
                        }
                        bool changedRot = orNullMaidBoneData.changedRot;
                        if (changedRot)
                        {
                            GUILayout.BeginHorizontal(new GUILayoutOption[0]);
                            bool flag5 = GUILayout.Button("回転リセット", UIParams.Instance.bStyle, new GUILayoutOption[0]);
                            if (flag5)
                            {
                                this.ResetRotation();
                            }
                            GUILayout.FlexibleSpace();
                            GUILayout.EndHorizontal();
                        }
                        bool changedScl = orNullMaidBoneData.changedScl;
                        if (changedScl)
                        {
                            GUILayout.BeginHorizontal(new GUILayoutOption[0]);
                            bool flag6 = GUILayout.Button("拡縮リセット", UIParams.Instance.bStyle, new GUILayoutOption[0]);
                            if (flag6)
                            {
                                this.ResetScale();
                            }
                            GUILayout.FlexibleSpace();
                            GUILayout.EndHorizontal();
                        }
                    }
                    UIUtil.EndoIndentArea();
                }
            }
            UIUtil.EndoIndentArea();
        }