diff --git a/Assets/01_Scenes/_TestScenes/Test1.unity b/Assets/01_Scenes/_TestScenes/Test1.unity index 33b0b215..5adfe21c 100644 --- a/Assets/01_Scenes/_TestScenes/Test1.unity +++ b/Assets/01_Scenes/_TestScenes/Test1.unity @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1c03e4528212b95f4a50c5fa8a6c8add3593fb48d9fc50a9f11665d736c592e7 -size 30708 +oid sha256:dae0a79c8f7b83fed60fa1c8a3e6cf127d8d83cf4d6df417e795b58f2420a02e +size 180185 diff --git a/Assets/02_Scripts/Communication/Dialog/DialogCondition.cs b/Assets/02_Scripts/Communication/Dialog/DialogCondition.cs index 155b96f8..1005bfb3 100644 --- a/Assets/02_Scripts/Communication/Dialog/DialogCondition.cs +++ b/Assets/02_Scripts/Communication/Dialog/DialogCondition.cs @@ -19,6 +19,9 @@ public class DialogCondition [Tooltip("골랐어야 하는 선택지 Code들 (전부 필요)")] public List RequiredChoiceCodes = new(); + [Tooltip("밟았어야 하는 이벤트존 Id들 (전부 필요)")] + public List RequiredZoneIds = new(); + // affectionTarget: 호감도 조건을 검사할 캐릭터 (보통 대화를 거는 NPC 자신) public bool IsMet(CharacterData affectionTarget) { @@ -38,6 +41,10 @@ public bool IsMet(CharacterData affectionTarget) if (!string.IsNullOrEmpty(code) && !story.HasChosen(code)) return false; + foreach (var zoneId in RequiredZoneIds) + if (!string.IsNullOrEmpty(zoneId) && !story.HasTriggeredZone(zoneId)) + return false; + return true; } } diff --git a/Assets/02_Scripts/Managers/StoryManager.cs b/Assets/02_Scripts/Managers/StoryManager.cs index b848e808..1bc4bb56 100644 --- a/Assets/02_Scripts/Managers/StoryManager.cs +++ b/Assets/02_Scripts/Managers/StoryManager.cs @@ -73,6 +73,15 @@ public void RecordChoice(string code) Changed?.Invoke(); } + // ── 이벤트존 이력 ──────────────────────────────────────────── + public bool HasTriggeredZone(string zoneId) => _state.TriggeredZones.Contains(zoneId); + + public void RecordZoneTriggered(string zoneId) + { + if (string.IsNullOrEmpty(zoneId) || !_state.TriggeredZones.Add(zoneId)) return; + Changed?.Invoke(); + } + // ── 저장 / 로드 ────────────────────────────────────────────── // 플레이 시작 시엔 항상 빈 상태로 시작한다 (테스트 반복이 꼬이지 않게). // 이어하기를 만들 때 타이틀 화면 등에서 Load()를 호출하면 된다. diff --git a/Assets/02_Scripts/Story/EventZone.cs b/Assets/02_Scripts/Story/EventZone.cs new file mode 100644 index 00000000..057bb930 --- /dev/null +++ b/Assets/02_Scripts/Story/EventZone.cs @@ -0,0 +1,104 @@ +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Playables; +using UnityEngine.XR.Interaction.Toolkit.Locomotion; + +// 트리거 존: Player 태그가 들어오면 등록된 타임라인을 재생. +// 옵션으로 재생 동안 플레이어 로코모션(이동/회전)을 잠글 수 있다. +[RequireComponent(typeof(Collider))] +public class EventZone : MonoBehaviour +{ + [Tooltip("플레이어 진입 시 재생할 타임라인")] + [SerializeField] private PlayableDirector _timeline; + + [Tooltip("StoryState에 기록되는 Id. 비워두면 오브젝트 이름 사용 (DialogCondition의 RequiredZoneIds에서 참조)")] + [SerializeField] private string _zoneId; + + [Header("옵션")] + [Tooltip("재생 동안 플레이어 조작(로코모션)을 잠글지 여부. HMD 트래킹은 유지된다")] + [SerializeField] private bool _lockPlayerControl = true; + + [Tooltip("한 번만 재생. 끄면 재생이 끝난 뒤 다시 들어오면 또 재생된다")] + [SerializeField] private bool _playOnce = true; + + private bool _hasPlayed; + private bool _isPlaying; + + public string ZoneId => string.IsNullOrEmpty(_zoneId) ? name : _zoneId; + + // 잠글 때 켜져 있던 프로바이더만 기록해서, 해제 시 원래 꺼져 있던 것까지 켜지 않도록 한다. + private readonly List _lockedProviders = new(); + + private void Reset() + { + GetComponent().isTrigger = true; + } + + private void OnTriggerEnter(Collider other) + { + if (!other.CompareTag("Player")) return; + + // 이어하기 로드 후에도 한 번 밟은 존은 다시 재생되지 않도록 StoryState 기록도 함께 본다. + var story = StoryManager.Instance; // 매니저 없는 테스트 씬에서도 재생은 되도록 null 허용 + if (_isPlaying || (_playOnce && (_hasPlayed || (story != null && story.HasTriggeredZone(ZoneId))))) + return; + + // 밟은 사실은 대화 활성화 조건(RequiredZoneIds) 판정에 쓰이므로 타임라인 유무와 무관하게 기록 + if (story != null) + story.RecordZoneTriggered(ZoneId); + _hasPlayed = true; + + if (_timeline == null) + { + Debug.LogWarning($"[EventZone] 타임라인이 등록되지 않음 (기록만 됨): {name}"); + return; + } + + _isPlaying = true; + + if (_lockPlayerControl) + LockPlayer(other.transform); + + _timeline.stopped += OnTimelineStopped; + _timeline.Play(); + } + + // 타임라인이 끝(또는 외부에서 Stop)나면 호출됨. Extrapolation이 Hold면 stopped가 오지 않으니 None 권장. + private void OnTimelineStopped(PlayableDirector director) + { + director.stopped -= OnTimelineStopped; + _isPlaying = false; + UnlockPlayer(); + } + + // Player 태그 루트(XR Origin) 아래의 로코모션 프로바이더를 전부 꺼서 이동/회전을 막는다. + private void LockPlayer(Transform playerRoot) + { + _lockedProviders.Clear(); + foreach (var provider in playerRoot.GetComponentsInChildren()) + { + if (!provider.enabled) continue; + provider.enabled = false; + _lockedProviders.Add(provider); + } + } + + private void UnlockPlayer() + { + foreach (var provider in _lockedProviders) + { + if (provider != null) + provider.enabled = true; + } + _lockedProviders.Clear(); + } + + private void OnDestroy() + { + if (_timeline != null) + _timeline.stopped -= OnTimelineStopped; + + // 존이 재생 중에 파괴돼도 플레이어가 잠긴 채 남지 않도록 + UnlockPlayer(); + } +} diff --git a/Assets/02_Scripts/Story/EventZone.cs.meta b/Assets/02_Scripts/Story/EventZone.cs.meta new file mode 100644 index 00000000..4843a9c2 --- /dev/null +++ b/Assets/02_Scripts/Story/EventZone.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 0a1da05e6a37ca14db9e919cb2293e49 \ No newline at end of file diff --git a/Assets/02_Scripts/Story/StoryState.cs b/Assets/02_Scripts/Story/StoryState.cs index 483759ac..524b426b 100644 --- a/Assets/02_Scripts/Story/StoryState.cs +++ b/Assets/02_Scripts/Story/StoryState.cs @@ -10,6 +10,7 @@ public class StoryState public readonly Dictionary Affection = new(); // 캐릭터 Id → 호감도 public readonly HashSet CompletedDialogs = new(); // 완료한 DialogGroup 이름 public readonly HashSet ChosenCodes = new(); // 골랐던 선택지 Code + public readonly HashSet TriggeredZones = new(); // 밟았던 EventZone Id public void Clear() { @@ -17,6 +18,7 @@ public void Clear() Affection.Clear(); CompletedDialogs.Clear(); ChosenCodes.Clear(); + TriggeredZones.Clear(); } // ── JSON 변환 ──────────────────────────────────────────────── @@ -29,6 +31,7 @@ private class JsonData public List AffectionValues = new(); public List CompletedDialogs = new(); public List ChosenCodes = new(); + public List TriggeredZones = new(); } public string ToJson() @@ -41,6 +44,7 @@ public string ToJson() } data.CompletedDialogs.AddRange(CompletedDialogs); data.ChosenCodes.AddRange(ChosenCodes); + data.TriggeredZones.AddRange(TriggeredZones); return JsonUtility.ToJson(data, prettyPrint: true); } @@ -55,6 +59,7 @@ public static StoryState FromJson(string json) state.Affection[data.AffectionIds[i]] = data.AffectionValues[i]; state.CompletedDialogs.UnionWith(data.CompletedDialogs); state.ChosenCodes.UnionWith(data.ChosenCodes); + state.TriggeredZones.UnionWith(data.TriggeredZones); return state; } } diff --git a/Assets/07_Data/DialogGraph/Carnotaurus_Dialog3.dlg b/Assets/07_Data/DialogGraph/Carnotaurus_Dialog3.dlg new file mode 100644 index 00000000..3f6704ab --- /dev/null +++ b/Assets/07_Data/DialogGraph/Carnotaurus_Dialog3.dlg @@ -0,0 +1,432 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &1 +MonoBehaviour: + m_ObjectHideFlags: 61 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 12501, guid: 0000000000000000e000000000000000, type: 0} + m_Name: Carnotaurus_Dialog3 + m_EditorClassIdentifier: UnityEditor.dll::Unity.GraphToolkit.Editor.Implementation.GraphObjectImp + m_GraphModel: + rid: 4848514365209968918 + references: + version: 2 + RefIds: + - rid: -2 + type: {class: , ns: , asm: } + - rid: 4848514365209968918 + type: {class: GraphModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: UnityEditor.GraphToolkitModule} + data: + m_Guid: + m_Value0: 14743801598135559126 + m_Value1: 14874423988134968649 + m_HashGuid: + serializedVersion: 2 + Hash: d6e3b4ff6f819ccc497d5523cf916cce + m_Name: Carnotaurus_Dialog3 + m_GraphNodeModels: + - rid: 4848514365209968921 + - rid: 4848514365209968923 + - rid: 4848514365209968938 + m_GraphWireModels: + - rid: 4848514365209968937 + - rid: 4848514365209968939 + m_GraphStickyNoteModels: [] + m_GraphPlacematModels: [] + m_GraphVariableModels: [] + m_GraphPortalModels: [] + m_SectionModels: + - rid: 4848514365209968919 + m_LocalSubgraphs: [] + m_LastKnownBounds: + serializedVersion: 2 + x: -86 + y: 92 + width: 1095 + height: 432 + m_GraphElementMetaData: + - m_Guid: + m_Value0: 11886921906498108818 + m_Value1: 1241276629292152157 + m_HashGuid: + serializedVersion: 2 + Hash: 92fda08d7ed4f6a45df5f38c84e63911 + m_Category: 0 + m_Index: 0 + - m_Guid: + m_Value0: 5760401696664917696 + m_Value1: 5304284838533059046 + m_HashGuid: + serializedVersion: 2 + Hash: c01645bdd20ef14fe6d14014f59a9c49 + m_Category: 0 + m_Index: 1 + - m_Guid: + m_Value0: 12075701744894930101 + m_Value1: 8354277098249585595 + m_HashGuid: + serializedVersion: 2 + Hash: b5ec06d6c18295a7bb03590cc25af073 + m_Category: 2 + m_Index: 0 + - m_Guid: + m_Value0: 18033278169514442201 + m_Value1: 7595949161354533057 + m_HashGuid: + serializedVersion: 2 + Hash: d9fdb665f31243fac1987666843b6a69 + m_Category: 0 + m_Index: 2 + - m_Guid: + m_Value0: 1372665982324540530 + m_Value1: 4413923243976307164 + m_HashGuid: + serializedVersion: 2 + Hash: 7284b72f70b00c13dc310cefcd67413d + m_Category: 2 + m_Index: 1 + m_EntryPoint: + rid: 4848514365209968921 + m_Graph: + rid: 4848514365209968920 + - rid: 4848514365209968919 + type: {class: SectionModel, ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Guid: + m_Value0: 17677551595292556901 + m_Value1: 13576497333533336155 + m_HashGuid: + serializedVersion: 2 + Hash: 657e0d28844753f55be24abb646869bc + m_Version: 2 + m_Items: [] + m_Title: + - rid: 4848514365209968920 + type: {class: DialogGraph, ns: DinoLove.Dialog.GraphTool.Editor, asm: Assembly-CSharp-Editor} + data: + - rid: 4848514365209968921 + type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: UnityEditor.GraphToolkitModule} + data: + m_Guid: + m_Value0: 11886921906498108818 + m_Value1: 1241276629292152157 + m_HashGuid: + serializedVersion: 2 + Hash: 92fda08d7ed4f6a45df5f38c84e63911 + m_Version: 2 + m_Position: {x: -86.250015, y: 147.20003} + m_Title: + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: [] + m_ValueList: [] + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_Node: + rid: 4848514365209968922 + - rid: 4848514365209968922 + type: {class: DialogStartNode, ns: DinoLove.Dialog.GraphTool.Editor, asm: Assembly-CSharp-Editor} + data: + - rid: 4848514365209968923 + type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: UnityEditor.GraphToolkitModule} + data: + m_Guid: + m_Value0: 5760401696664917696 + m_Value1: 5304284838533059046 + m_HashGuid: + serializedVersion: 2 + Hash: c01645bdd20ef14fe6d14014f59a9c49 + m_Version: 2 + m_Position: {x: 180.505, y: 92.442505} + m_Title: + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: + - __option_ChoiceCount + - __option_EventKey + - Speaker + - TalkText + - Gesture + - Expression + - Voice + - Bgm + - Vfx + - LineDuration + - LookAtPlayer + - WaitForInput + m_ValueList: + - rid: 4848514365209968924 + - rid: 4848514365209968925 + - rid: 4848514365209968926 + - rid: 4848514365209968927 + - rid: 4848514365209968928 + - rid: 4848514365209968929 + - rid: 4848514365209968930 + - rid: 4848514365209968931 + - rid: 4848514365209968932 + - rid: 4848514365209968933 + - rid: 4848514365209968934 + - rid: 4848514365209968935 + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_Node: + rid: 4848514365209968936 + - rid: 4848514365209968924 + type: {class: 'Constant`1[[System.Int32, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: 0 + - rid: 4848514365209968925 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: + - rid: 4848514365209968926 + type: {class: 'Constant`1[[CharacterData, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: {fileID: 11400000, guid: b7c3c52c4e4e9fc49bf084eae180835b, type: 2} + - rid: 4848514365209968927 + type: {class: 'Constant`1[[DinoLove.Dialog.GraphTool.Editor.DialogText, Assembly-CSharp-Editor]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: + Value: "\uB108 \uAC10\uD788 \uBC29\uAE08 \uB0B4 \uAF2C\uB9AC\uB97C \uBC1F\uC740\uAC70\uC57C?" + - rid: 4848514365209968928 + type: {class: 'Constant`1[[GestureData, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: {fileID: 0} + - rid: 4848514365209968929 + type: {class: 'Constant`1[[ExpressionData, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: {fileID: 0} + - rid: 4848514365209968930 + type: {class: 'Constant`1[[VoiceClip, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: {fileID: 0} + - rid: 4848514365209968931 + type: {class: 'Constant`1[[UnityEngine.AudioClip, UnityEngine.AudioModule]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: {fileID: 0} + - rid: 4848514365209968932 + type: {class: 'Constant`1[[UnityEngine.GameObject, UnityEngine.CoreModule]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: {fileID: 0} + - rid: 4848514365209968933 + type: {class: 'Constant`1[[System.Single, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: 5 + - rid: 4848514365209968934 + type: {class: 'Constant`1[[System.Boolean, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: 1 + - rid: 4848514365209968935 + type: {class: 'Constant`1[[System.Boolean, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: 0 + - rid: 4848514365209968936 + type: {class: DialogLineNode, ns: DinoLove.Dialog.GraphTool.Editor, asm: Assembly-CSharp-Editor} + data: + - rid: 4848514365209968937 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Guid: + m_Value0: 12075701744894930101 + m_Value1: 8354277098249585595 + m_HashGuid: + serializedVersion: 2 + Hash: b5ec06d6c18295a7bb03590cc25af073 + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 11886921906498108818 + m_Value1: 1241276629292152157 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 92fda08d7ed4f6a45df5f38c84e63911 + m_UniqueId: Out + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 5760401696664917696 + m_Value1: 5304284838533059046 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: c01645bdd20ef14fe6d14014f59a9c49 + m_UniqueId: In + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: + - rid: 4848514365209968938 + type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: UnityEditor.GraphToolkitModule} + data: + m_Guid: + m_Value0: 18033278169514442201 + m_Value1: 7595949161354533057 + m_HashGuid: + serializedVersion: 2 + Hash: d9fdb665f31243fac1987666843b6a69 + m_Version: 2 + m_Position: {x: 617.28503, y: 92} + m_Title: + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: + - __option_ChoiceCount + - __option_EventKey + - Speaker + - TalkText + - Gesture + - Expression + - Voice + - Bgm + - Vfx + - LineDuration + - LookAtPlayer + - WaitForInput + m_ValueList: + - rid: 4848514365209968940 + - rid: 4848514365209968941 + - rid: 4848514365209968942 + - rid: 4848514365209968943 + - rid: 4848514365209968944 + - rid: 4848514365209968945 + - rid: 4848514365209968946 + - rid: 4848514365209968947 + - rid: 4848514365209968948 + - rid: 4848514365209968949 + - rid: 4848514365209968950 + - rid: 4848514365209968951 + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_Node: + rid: 4848514365209968952 + - rid: 4848514365209968939 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Guid: + m_Value0: 1372665982324540530 + m_Value1: 4413923243976307164 + m_HashGuid: + serializedVersion: 2 + Hash: 7284b72f70b00c13dc310cefcd67413d + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 5760401696664917696 + m_Value1: 5304284838533059046 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: c01645bdd20ef14fe6d14014f59a9c49 + m_UniqueId: Out + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 18033278169514442201 + m_Value1: 7595949161354533057 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: d9fdb665f31243fac1987666843b6a69 + m_UniqueId: In + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: + - rid: 4848514365209968940 + type: {class: 'Constant`1[[System.Int32, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: 0 + - rid: 4848514365209968941 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: + - rid: 4848514365209968942 + type: {class: 'Constant`1[[CharacterData, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: {fileID: 11400000, guid: b7c3c52c4e4e9fc49bf084eae180835b, type: 2} + - rid: 4848514365209968943 + type: {class: 'Constant`1[[DinoLove.Dialog.GraphTool.Editor.DialogText, Assembly-CSharp-Editor]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: + Value: "\uAC00\uB9CC\uB450\uC9C0 \uC54A\uACA0\uC5B4." + - rid: 4848514365209968944 + type: {class: 'Constant`1[[GestureData, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: {fileID: 0} + - rid: 4848514365209968945 + type: {class: 'Constant`1[[ExpressionData, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: {fileID: 0} + - rid: 4848514365209968946 + type: {class: 'Constant`1[[VoiceClip, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: {fileID: 0} + - rid: 4848514365209968947 + type: {class: 'Constant`1[[UnityEngine.AudioClip, UnityEngine.AudioModule]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: {fileID: 0} + - rid: 4848514365209968948 + type: {class: 'Constant`1[[UnityEngine.GameObject, UnityEngine.CoreModule]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: {fileID: 0} + - rid: 4848514365209968949 + type: {class: 'Constant`1[[System.Single, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: 5 + - rid: 4848514365209968950 + type: {class: 'Constant`1[[System.Boolean, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: 0 + - rid: 4848514365209968951 + type: {class: 'Constant`1[[System.Boolean, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule} + data: + m_Value: 0 + - rid: 4848514365209968952 + type: {class: DialogLineNode, ns: DinoLove.Dialog.GraphTool.Editor, asm: Assembly-CSharp-Editor} + data: diff --git a/Assets/07_Data/DialogGraph/Carnotaurus_Dialog3.dlg.meta b/Assets/07_Data/DialogGraph/Carnotaurus_Dialog3.dlg.meta new file mode 100644 index 00000000..6172745d --- /dev/null +++ b/Assets/07_Data/DialogGraph/Carnotaurus_Dialog3.dlg.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: f685f43bf3bc9d7408fbe71bd34f6207 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 2ae5ca89bbed445479d9023586f0c041, type: 3} diff --git a/Assets/08_Timeline/Test_TailStepTimeline.playable b/Assets/08_Timeline/Test_TailStepTimeline.playable new file mode 100644 index 00000000..0312d5d4 --- /dev/null +++ b/Assets/08_Timeline/Test_TailStepTimeline.playable @@ -0,0 +1,603 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-5079099715544588089 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d21dcc2386d650c4597f3633c75a1f98, type: 3} + m_Name: Animation Track + m_EditorClassIdentifier: Unity.Timeline::UnityEngine.Timeline.AnimationTrack + m_Version: 3 + m_AnimClip: {fileID: 0} + m_Locked: 0 + m_Muted: 0 + m_CustomPlayableFullTypename: + m_Curves: {fileID: 0} + m_Parent: {fileID: 11400000} + m_Children: + - {fileID: -217082101412507945} + m_Clips: [] + m_Markers: + m_Objects: [] + m_InfiniteClipPreExtrapolation: 0 + m_InfiniteClipPostExtrapolation: 0 + m_InfiniteClipOffsetPosition: {x: 0, y: 0, z: 0} + m_InfiniteClipOffsetEulerAngles: {x: 0, y: 0, z: 0} + m_InfiniteClipTimeOffset: 0 + m_InfiniteClipRemoveOffset: 0 + m_InfiniteClipApplyFootIK: 1 + mInfiniteClipLoop: 0 + m_MatchTargetFields: 63 + m_Position: {x: 0, y: 0, z: 0} + m_EulerAngles: {x: 0, y: 0, z: 0} + m_AvatarMask: {fileID: 0} + m_ApplyAvatarMask: 1 + m_TrackOffset: 0 + m_InfiniteClip: {fileID: 0} + m_OpenClipOffsetRotation: {x: 0, y: 0, z: 0, w: 1} + m_Rotation: {x: 0, y: 0, z: 0, w: 1} + m_ApplyOffsets: 0 +--- !u!114 &-217082101412507945 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d21dcc2386d650c4597f3633c75a1f98, type: 3} + m_Name: Override 0 + m_EditorClassIdentifier: Unity.Timeline::UnityEngine.Timeline.AnimationTrack + m_Version: 3 + m_AnimClip: {fileID: 0} + m_Locked: 0 + m_Muted: 0 + m_CustomPlayableFullTypename: + m_Curves: {fileID: 0} + m_Parent: {fileID: -5079099715544588089} + m_Children: [] + m_Clips: [] + m_Markers: + m_Objects: [] + m_InfiniteClipPreExtrapolation: 1 + m_InfiniteClipPostExtrapolation: 1 + m_InfiniteClipOffsetPosition: {x: 0, y: 0, z: 0} + m_InfiniteClipOffsetEulerAngles: {x: -0, y: 0, z: 0} + m_InfiniteClipTimeOffset: 0 + m_InfiniteClipRemoveOffset: 0 + m_InfiniteClipApplyFootIK: 1 + mInfiniteClipLoop: 0 + m_MatchTargetFields: 63 + m_Position: {x: 0, y: 0, z: 0} + m_EulerAngles: {x: 0, y: 0, z: 0} + m_AvatarMask: {fileID: 0} + m_ApplyAvatarMask: 1 + m_TrackOffset: 0 + m_InfiniteClip: {fileID: 2058698922817219297} + m_OpenClipOffsetRotation: {x: 0, y: 0, z: 0, w: 1} + m_Rotation: {x: 0, y: 0, z: 0, w: 1} + m_ApplyOffsets: 0 +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: bfda56da833e2384a9677cd3c976a436, type: 3} + m_Name: Test_TailStepTimeline + m_EditorClassIdentifier: Unity.Timeline::UnityEngine.Timeline.TimelineAsset + m_Version: 0 + m_Tracks: + - {fileID: -5079099715544588089} + m_FixedDuration: 0 + m_EditorSettings: + m_Framerate: 60 + m_ScenePreview: 1 + m_DurationMode: 0 + m_MarkerTrack: {fileID: 0} +--- !u!74 &2058698922817219297 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Recorded + serializedVersion: 8 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: {x: 0, y: -7.231, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 3.0166667 + value: {x: 0, y: -85.733, z: 0} + inSlope: {x: 0, y: -43.0481, z: 0} + outSlope: {x: 0, y: -43.0481, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 3.95 + value: {x: 0, y: -177.271, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + path: + m_PositionCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: {x: 1.05, y: 0, z: -1.49} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 2 + value: {x: 0, y: 0, z: 1.813} + inSlope: {x: -0.5599515, y: 0, z: 0} + outSlope: {x: -0.5599515, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 3.0166667 + value: {x: -0.6391871, y: 0, z: 1.303619} + inSlope: {x: 0, y: 0, z: -0.611997} + outSlope: {x: 0, y: 0, z: -0.611997} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 3.95 + value: {x: -0.11853152, y: 0, z: 0.6196057} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + path: + m_ScaleCurves: [] + m_FloatCurves: + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.99832714 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: MinDistance + path: + classID: 82 + script: {fileID: 0} + flags: 0 + m_PPtrCurves: [] + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 0 + attribute: 1 + script: {fileID: 0} + typeID: 4 + customType: 0 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + metaData: 0 + - serializedVersion: 2 + path: 0 + attribute: 4 + script: {fileID: 0} + typeID: 4 + customType: 4 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + metaData: 0 + - serializedVersion: 2 + path: 0 + attribute: 1338947382 + script: {fileID: 0} + typeID: 82 + customType: 0 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + metaData: 0 + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 3.95 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 0 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.99832714 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: MinDistance + path: + classID: 82 + script: {fileID: 0} + flags: 0 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1.05 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 2 + value: 0 + inSlope: -0.5599515 + outSlope: -0.5599515 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3.0166667 + value: -0.6391871 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3.95 + value: -0.11853152 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.x + path: + classID: 4 + script: {fileID: 0} + flags: 0 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 2 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3.0166667 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3.95 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.y + path: + classID: 4 + script: {fileID: 0} + flags: 0 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -1.49 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 2 + value: 1.813 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3.0166667 + value: 1.303619 + inSlope: -0.611997 + outSlope: -0.611997 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3.95 + value: 0.6196057 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.z + path: + classID: 4 + script: {fileID: 0} + flags: 0 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3.0166667 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3.95 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: localEulerAnglesRaw.x + path: + classID: 4 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -7.231 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3.0166667 + value: -85.733 + inSlope: -43.0481 + outSlope: -43.0481 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3.95 + value: -177.271 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: localEulerAnglesRaw.y + path: + classID: 4 + script: {fileID: 0} + flags: 16 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3.0166667 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3.95 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: localEulerAnglesRaw.z + path: + classID: 4 + script: {fileID: 0} + flags: 16 + m_EulerEditorCurves: + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: [] + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalEulerAngles.x + path: + classID: 4 + script: {fileID: 0} + flags: 0 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: [] + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalEulerAngles.y + path: + classID: 4 + script: {fileID: 0} + flags: 0 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: [] + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalEulerAngles.z + path: + classID: 4 + script: {fileID: 0} + flags: 0 + m_HasGenericRootTransform: 1 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Assets/08_Timeline/dumy.txt.meta b/Assets/08_Timeline/Test_TailStepTimeline.playable.meta similarity index 52% rename from Assets/08_Timeline/dumy.txt.meta rename to Assets/08_Timeline/Test_TailStepTimeline.playable.meta index ae1878a8..056494fd 100644 --- a/Assets/08_Timeline/dumy.txt.meta +++ b/Assets/08_Timeline/Test_TailStepTimeline.playable.meta @@ -1,7 +1,8 @@ fileFormatVersion: 2 -guid: e35daa69cbd7faa47834846f94957b83 -TextScriptImporter: +guid: 20902f4f436c76b479c1062c0081ff75 +NativeFormatImporter: externalObjects: {} + mainObjectFileID: 11400000 userData: assetBundleName: assetBundleVariant: diff --git a/Assets/08_Timeline/dumy.txt b/Assets/08_Timeline/dumy.txt deleted file mode 100644 index ce0b02a8..00000000 --- a/Assets/08_Timeline/dumy.txt +++ /dev/null @@ -1 +0,0 @@ -dumy \ No newline at end of file