コード例 #1
0
ファイル: CutSceneWindow.cs プロジェクト: xfilson/dn_asset
        public XClip AddClip(XCutSceneClip clip)
        {
            XClip xclip = null;

            switch (clip.Type)
            {
            case XClipType.Actor: xclip = new XActorClip(clip); break;

            case XClipType.Player: xclip = new XPlayerClip(clip); break;

            case XClipType.Fx: xclip = new XFxClip(clip); break;

            case XClipType.Audio: xclip = new XAudioClip(clip); break;

            case XClipType.SubTitle: xclip = new XSubTitleClip(clip); break;

            case XClipType.Slash: xclip = new XSlashClip(clip); break;
            }
            if (xclip != null)
            {
                xclip.Flush();
                _clips.Add(xclip, xclip);
            }
            return(xclip);
        }
コード例 #2
0
ファイル: CutSceneWindow.cs プロジェクト: xfilson/dn_asset
        public void RemoveClip(XClip clip)
        {
            int idx = _clips.IndexOfValue(clip);

            if (idx >= 0 && idx < _clips.Count)
            {
                _clips.RemoveAt(idx);
            }
        }
コード例 #3
0
ファイル: XFxClip.cs プロジェクト: xfilson/dn_asset
 public override void Dump()
 {
     _data.Fx = XClip.LocateRes(_fx);
     if (_bone != null)
     {
         _data.Bone = XClip.LocateBone(_bone);
     }
     _data.BindIdx = _bind_idx - 1;
 }
コード例 #4
0
ファイル: XFxClip.cs プロジェクト: xfilson/dn_asset
        protected override void OnInnerGUI(XCutSceneData data)
        {
            _bind_idx = CutSceneWindow.ActorList.FindIndex(FindActor);

            _fx       = EditorGUILayout.ObjectField("Fx Object", _fx, typeof(GameObject), true) as GameObject;
            _bind_idx = EditorGUILayout.Popup("Bind To", _bind_idx, CutSceneWindow.ActorList.ToArray());
            EditorGUILayout.Space();
            if (_bind_idx > 0)
            {
                EditorGUI.BeginChangeCheck();
                _bone = EditorGUILayout.ObjectField("Bind To", _bone, typeof(GameObject), true) as GameObject;
                if (EditorGUI.EndChangeCheck() || !_bone_refresh)
                {
                    if (_bone != null || !_bone_refresh)
                    {
                        if (_bone != null)
                        {
                            _bone_refresh = true;
                        }
                        if (_bone_refresh)
                        {
                            _data.Bone = XClip.LocateBone(_bone);
                        }
                    }
                    else
                    {
                        _data.Bone = null;
                    }
                }
                if (_data.Bone != null && _data.Bone.Length > 0)
                {
                    EditorGUILayout.LabelField("Bone", _data.Bone.Substring(_data.Bone.LastIndexOf("/") + 1));
                }
                _data.Follow = EditorGUILayout.Toggle("Follow", _data.Follow);
                _data.Scale  = EditorGUILayout.FloatField("Scale", _data.Scale);
            }
            else
            {
                _bone      = null;
                _data.Bone = null;

                Vector3 Appear = Vector3FieldEx("Appear At", new Vector3(_data.AppearX, _data.AppearY, _data.AppearZ), ref _appear_fold, false, false);
                _data.AppearX = Appear.x; _data.AppearY = Appear.y; _data.AppearZ = Appear.z;

                Vector3 Face = XCommon.singleton.FloatToAngle(_data.Face);
                _data.Face = XCommon.singleton.AngleToFloat(Vector3FieldEx("Face To", Face, ref _face_fold, true, false));
            }

            EditorGUILayout.Space();
            EditorGUILayout.BeginHorizontal();
            _data.Destroy_Delay = EditorGUILayout.FloatField("Delay Destroy", _data.Destroy_Delay);
            GUILayout.Label("(s)");
            EditorGUILayout.EndHorizontal();

            _bind_prefab = CutSceneWindow.ActorList[_bind_idx];
        }
コード例 #5
0
ファイル: CutSceneWindow.cs プロジェクト: xfilson/dn_asset
        XCutSceneData GetCurrentData()
        {
            if (_name == null || _name.Length == 0 || _camera == null)
            {
                return(null);
            }

            XCutSceneData data = new XCutSceneData();

            data.CameraClip     = XClip.LocateRes(_camera);
            data.Name           = _name;
            data.Script         = _script;
            data.Scene          = _scene;
            data.TotalFrame     = _camera.length * XEditorLibrary.FPS;
            data.TypeMask       = _type_mask;
            data.AutoEnd        = _auto_end;
            data.GeneralShow    = _general_show;
            data.GeneralBigGuy  = _general_bigguy;
            data.OverrideBGM    = _override_bgm;
            data.Mourningborder = _mourningborder;
            data.FieldOfView    = _fov;
            data.Length         = _length;
            data.Trigger        = _trigger.ToString();

            foreach (XClip clip in _clips.Values)
            {
                if (clip.Valid)
                {
                    if (_camera != null)
                    {
                        clip.Dump();
                        switch (clip.ClipType)
                        {
                        case XClipType.Actor: data.Actors.Add(clip.CutSceneClip as XActorDataClip); break;

                        case XClipType.Player: data.Player.Add(clip.CutSceneClip as XPlayerDataClip); break;

                        case XClipType.Audio: data.Audios.Add(clip.CutSceneClip as XAudioDataClip); break;

                        case XClipType.Fx: data.Fxs.Add(clip.CutSceneClip as XFxDataClip); break;

                        case XClipType.SubTitle: data.SubTitle.Add(clip.CutSceneClip as XSubTitleDataClip); break;

                        case XClipType.Slash: data.Slash.Add(clip.CutSceneClip as XSlashDataClip); break;
                        }
                    }
                }
            }
            return(data);
        }
コード例 #6
0
        void OnDestroy()
        {
            if (_ok)
            {
                CutSceneWindow window = GetWindow <CutSceneWindow>(@"Cut Scene");

                if (_clip != null)
                {
                    window.RemoveClip(_clip);
                    _clip.TimeLine = _play_at_frame;
                    window.AddClip(_clip);
                }
                else
                {
                    window.AddClip(_play_at_frame);
                }

                window.Focus();
            }

            _clip = null;
        }
コード例 #7
0
ファイル: CutSceneWindow.cs プロジェクト: xfilson/dn_asset
 public void AddClip(XClip clip)
 {
     _clips.Add(clip, clip);
 }
コード例 #8
0
ファイル: CutSceneWindow.cs プロジェクト: xfilson/dn_asset
        void InnerLoad(XCutSceneData data)
        {
            _run_data = data;

            _name           = data.Name;
            _script         = data.Script;
            _scene          = data.Scene;
            _camera         = Resources.Load(data.CameraClip, typeof(AnimationClip)) as AnimationClip;
            _type_mask      = data.TypeMask;
            _auto_end       = data.AutoEnd;
            _general_show   = data.GeneralShow;
            _general_bigguy = data.GeneralBigGuy;
            _override_bgm   = data.OverrideBGM;
            _mourningborder = data.Mourningborder;
            _fov            = data.FieldOfView;
            _length         = data.Length;
            _trigger        = (CameraTrigger)Enum.Parse(typeof(CameraTrigger), data.Trigger);

            _clips.Clear();
            ActorList.Clear();
            ActorList.Add("None");
            foreach (XActorDataClip clip in data.Actors)
            {
                TimeChecker(clip, data);
                XClip xclip = AddClip(clip);
                ActorList.Add(xclip.Name);
            }
            foreach (XPlayerDataClip clip in data.Player)
            {
                TimeChecker(clip, data);
                XClip xclip = AddClip(clip);
                ActorList.Add(xclip.Name);
            }
            foreach (XFxDataClip clip in data.Fxs)
            {
                TimeChecker(clip, data);
                AddClip(clip);
            }
            foreach (XAudioDataClip clip in data.Audios)
            {
                TimeChecker(clip, data);
                AddClip(clip);
            }
            foreach (XSubTitleDataClip clip in data.SubTitle)
            {
                TimeChecker(clip, data);
                AddClip(clip);
            }
            foreach (XSlashDataClip clip in data.Slash)
            {
                TimeChecker(clip, data);
                AddClip(clip);
            }

            if (_open_scene && _scene != null && _scene.Length != 0)
            {
                Scene scene = EditorSceneManager.GetActiveScene();
                if (scene.name.Length > 0 && !EditorSceneManager.SaveCurrentModifiedScenesIfUserWantsTo())
                {
                    return;
                }
                else
                {
                    EditorSceneManager.OpenScene(_scene + ".unity");
                }
                _open_scene = false;
            }
        }