Skip to content

Commit ea1a23a

Browse files
committed
feat(graph nodes): nested graph playback now available
Add a nested graph reference and it will play until complete. Then automatically return to the parent graph that played it by running the out connection (if any)
1 parent 854e47a commit ea1a23a

14 files changed

+229
-39
lines changed

Assembly-CSharp.csproj.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/Examples/BasicConversation/ExampleConversation.asset

Lines changed: 79 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -175,10 +175,10 @@ MonoBehaviour:
175175
_uniqueId: 9b8bf58c-0906-4ca9-a722-d589abfb87c3
176176
rect:
177177
serializedVersion: 2
178-
x: 50693
179-
y: 50161
178+
x: 50700
179+
y: 50156
180180
width: 200
181-
height: 187
181+
height: 205
182182
nodeTitle:
183183
children: []
184184
conditions: []
@@ -188,6 +188,7 @@ MonoBehaviour:
188188
- {fileID: -6868820908879997394}
189189
- {fileID: -2199788058648552871}
190190
- {fileID: -230701956770334952}
191+
- {fileID: 5960690670116952456}
191192
actor: {fileID: 11400000, guid: aebb863e25cae0a4495c09b6a617ecf6, type: 2}
192193
dialogue: Not great. We only have enough resources to provide relief for one group.
193194
Can't save them all.
@@ -219,33 +220,6 @@ MonoBehaviour:
219220
choices: []
220221
actor: {fileID: 11400000, guid: aebb863e25cae0a4495c09b6a617ecf6, type: 2}
221222
dialogue: We won't last more than a few days if we're lucky.
222-
--- !u!114 &-5749017562080709619
223-
MonoBehaviour:
224-
m_ObjectHideFlags: 0
225-
m_CorrespondingSourceObject: {fileID: 0}
226-
m_PrefabInstance: {fileID: 0}
227-
m_PrefabAsset: {fileID: 0}
228-
m_GameObject: {fileID: 0}
229-
m_Enabled: 1
230-
m_EditorHideFlags: 0
231-
m_Script: {fileID: 11500000, guid: 9f157564dbc846468ec0ac2b6f7d545e, type: 3}
232-
m_Name: Dialogue
233-
m_EditorClassIdentifier:
234-
_uniqueId: 00d2804b-622a-4c1e-a2f9-13124afa8815
235-
rect:
236-
serializedVersion: 2
237-
x: 50215
238-
y: 50345
239-
width: 200
240-
height: 133
241-
nodeTitle:
242-
children: []
243-
conditions: []
244-
enterActions: []
245-
exitActions: []
246-
choices: []
247-
actor: {fileID: 11400000, guid: aebb863e25cae0a4495c09b6a617ecf6, type: 2}
248-
dialogue: Conversation deviated as expected.
249223
--- !u!114 &-5697671711981343180
250224
MonoBehaviour:
251225
m_ObjectHideFlags: 1
@@ -420,6 +394,32 @@ MonoBehaviour:
420394
choices: []
421395
actor: {fileID: 11400000, guid: aebb863e25cae0a4495c09b6a617ecf6, type: 2}
422396
dialogue: All the supplies are gone. Destroyed by the attack on the sea.
397+
--- !u!114 &-1221359623688907011
398+
MonoBehaviour:
399+
m_ObjectHideFlags: 0
400+
m_CorrespondingSourceObject: {fileID: 0}
401+
m_PrefabInstance: {fileID: 0}
402+
m_PrefabAsset: {fileID: 0}
403+
m_GameObject: {fileID: 0}
404+
m_Enabled: 1
405+
m_EditorHideFlags: 0
406+
m_Script: {fileID: 11500000, guid: e67818104cf34e2693b49316191c2be0, type: 3}
407+
m_Name: Play Graph
408+
m_EditorClassIdentifier:
409+
_uniqueId: 35cbde59-cfc9-4fe5-b9d2-33cdd8a2b553
410+
rect:
411+
serializedVersion: 2
412+
x: 50988
413+
y: 50575
414+
width: 200
415+
height: 56
416+
nodeTitle:
417+
children:
418+
- {fileID: 3721123120546049034}
419+
conditions: []
420+
enterActions: []
421+
exitActions: []
422+
dialogueGraph: {fileID: 11400000, guid: 3bc587ffa3a101e4591aa09b8280183c, type: 2}
423423
--- !u!114 &-230701956770334952
424424
MonoBehaviour:
425425
m_ObjectHideFlags: 1
@@ -466,9 +466,10 @@ MonoBehaviour:
466466
- {fileID: -3436942782412272395}
467467
- {fileID: -1807495471838374980}
468468
- {fileID: -7347677369531188231}
469-
- {fileID: -5749017562080709619}
469+
- {fileID: -1221359623688907011}
470+
- {fileID: 3721123120546049034}
470471
root: {fileID: 426936237664981933}
471-
scrollPosition: {x: 49917.676, y: 50013}
472+
scrollPosition: {x: 50731.676, y: 50159}
472473
--- !u!114 &373158185418196577
473474
MonoBehaviour:
474475
m_ObjectHideFlags: 0
@@ -484,8 +485,8 @@ MonoBehaviour:
484485
_uniqueId: d8b91533-197e-475b-a98f-2d8451fba244
485486
rect:
486487
serializedVersion: 2
487-
x: 50454
488-
y: 50172
488+
x: 50467
489+
y: 50163
489490
width: 200
490491
height: 133
491492
nodeTitle:
@@ -519,7 +520,6 @@ MonoBehaviour:
519520
nodeTitle:
520521
children:
521522
- {fileID: 8793565678756733940}
522-
- {fileID: -5749017562080709619}
523523
conditions: []
524524
enterActions: []
525525
exitActions: []
@@ -552,6 +552,34 @@ MonoBehaviour:
552552
actor: {fileID: 11400000, guid: d6a8e0fd1eb801d4ca00320f6b2e9e8b, type: 2}
553553
dialogue: My people have suffered more than any other in this war. Please see that
554554
the elves are taken care of first.
555+
--- !u!114 &3721123120546049034
556+
MonoBehaviour:
557+
m_ObjectHideFlags: 0
558+
m_CorrespondingSourceObject: {fileID: 0}
559+
m_PrefabInstance: {fileID: 0}
560+
m_PrefabAsset: {fileID: 0}
561+
m_GameObject: {fileID: 0}
562+
m_Enabled: 1
563+
m_EditorHideFlags: 0
564+
m_Script: {fileID: 11500000, guid: 9f157564dbc846468ec0ac2b6f7d545e, type: 3}
565+
m_Name: Dialogue
566+
m_EditorClassIdentifier:
567+
_uniqueId: f1937fd0-ddc0-4791-a967-64bfd733c095
568+
rect:
569+
serializedVersion: 2
570+
x: 51229
571+
y: 50544
572+
width: 200
573+
height: 133
574+
nodeTitle:
575+
children:
576+
- {fileID: -6450186612614065154}
577+
conditions: []
578+
enterActions: []
579+
exitActions: []
580+
choices: []
581+
actor: {fileID: 11400000, guid: d6a8e0fd1eb801d4ca00320f6b2e9e8b, type: 2}
582+
dialogue: Sorry about that. How are things going again?
555583
--- !u!114 &3777311768254997257
556584
MonoBehaviour:
557585
m_ObjectHideFlags: 1
@@ -629,6 +657,22 @@ MonoBehaviour:
629657
children:
630658
- {fileID: -7347677369531188231}
631659
_uniqueId: 0f90d98f-fdb0-4d11-80e1-0c07dafd771c
660+
--- !u!114 &5960690670116952456
661+
MonoBehaviour:
662+
m_ObjectHideFlags: 1
663+
m_CorrespondingSourceObject: {fileID: 0}
664+
m_PrefabInstance: {fileID: 0}
665+
m_PrefabAsset: {fileID: 0}
666+
m_GameObject: {fileID: 0}
667+
m_Enabled: 1
668+
m_EditorHideFlags: 0
669+
m_Script: {fileID: 11500000, guid: fbb407621a43446dac370b409a9ddc29, type: 3}
670+
m_Name: Choice
671+
m_EditorClassIdentifier:
672+
text: Tangent
673+
children:
674+
- {fileID: -1221359623688907011}
675+
_uniqueId: b6639707-3558-459c-b2e0-01ebc3bc951b
632676
--- !u!114 &6784819468853313292
633677
MonoBehaviour:
634678
m_ObjectHideFlags: 0
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
%YAML 1.1
2+
%TAG !u! tag:unity3d.com,2011:
3+
--- !u!114 &-911914220444734066
4+
MonoBehaviour:
5+
m_ObjectHideFlags: 0
6+
m_CorrespondingSourceObject: {fileID: 0}
7+
m_PrefabInstance: {fileID: 0}
8+
m_PrefabAsset: {fileID: 0}
9+
m_GameObject: {fileID: 0}
10+
m_Enabled: 1
11+
m_EditorHideFlags: 0
12+
m_Script: {fileID: 11500000, guid: b2d8d0566afe4d5fa9596c80df966df6, type: 3}
13+
m_Name: Root
14+
m_EditorClassIdentifier:
15+
_uniqueId: f82d26a6-f5f7-449b-95ff-83783674c75e
16+
rect:
17+
serializedVersion: 2
18+
x: 50050
19+
y: 50200
20+
width: 100
21+
height: 55
22+
nodeTitle:
23+
children:
24+
- {fileID: 3628622021116016526}
25+
conditions: []
26+
enterActions: []
27+
exitActions: []
28+
--- !u!114 &11400000
29+
MonoBehaviour:
30+
m_ObjectHideFlags: 0
31+
m_CorrespondingSourceObject: {fileID: 0}
32+
m_PrefabInstance: {fileID: 0}
33+
m_PrefabAsset: {fileID: 0}
34+
m_GameObject: {fileID: 0}
35+
m_Enabled: 1
36+
m_EditorHideFlags: 0
37+
m_Script: {fileID: 11500000, guid: b35851dfd8754a74b333944d50d05bbd, type: 3}
38+
m_Name: ExampleNestedDialogue
39+
m_EditorClassIdentifier:
40+
_nodes:
41+
- {fileID: -911914220444734066}
42+
- {fileID: 3628622021116016526}
43+
- {fileID: 6362165008871370358}
44+
root: {fileID: -911914220444734066}
45+
scrollPosition: {x: 49852.5, y: 49931.5}
46+
--- !u!114 &3628622021116016526
47+
MonoBehaviour:
48+
m_ObjectHideFlags: 0
49+
m_CorrespondingSourceObject: {fileID: 0}
50+
m_PrefabInstance: {fileID: 0}
51+
m_PrefabAsset: {fileID: 0}
52+
m_GameObject: {fileID: 0}
53+
m_Enabled: 1
54+
m_EditorHideFlags: 0
55+
m_Script: {fileID: 11500000, guid: 9f157564dbc846468ec0ac2b6f7d545e, type: 3}
56+
m_Name: Dialogue
57+
m_EditorClassIdentifier:
58+
_uniqueId: b86fca30-5c32-41d4-a708-bb796c3a3352
59+
rect:
60+
serializedVersion: 2
61+
x: 50221
62+
y: 50156
63+
width: 200
64+
height: 133
65+
nodeTitle:
66+
children:
67+
- {fileID: 6362165008871370358}
68+
conditions: []
69+
enterActions: []
70+
exitActions: []
71+
choices: []
72+
actor: {fileID: 11400000, guid: d6a8e0fd1eb801d4ca00320f6b2e9e8b, type: 2}
73+
dialogue: When is this all going to end.
74+
--- !u!114 &6362165008871370358
75+
MonoBehaviour:
76+
m_ObjectHideFlags: 0
77+
m_CorrespondingSourceObject: {fileID: 0}
78+
m_PrefabInstance: {fileID: 0}
79+
m_PrefabAsset: {fileID: 0}
80+
m_GameObject: {fileID: 0}
81+
m_Enabled: 1
82+
m_EditorHideFlags: 0
83+
m_Script: {fileID: 11500000, guid: 9f157564dbc846468ec0ac2b6f7d545e, type: 3}
84+
m_Name: Dialogue
85+
m_EditorClassIdentifier:
86+
_uniqueId: a4dc06ef-6639-4433-8670-365f1db91322
87+
rect:
88+
serializedVersion: 2
89+
x: 50474
90+
y: 50157
91+
width: 200
92+
height: 133
93+
nodeTitle:
94+
children: []
95+
conditions: []
96+
enterActions: []
97+
exitActions: []
98+
choices: []
99+
actor: {fileID: 11400000, guid: d6a8e0fd1eb801d4ca00320f6b2e9e8b, type: 2}
100+
dialogue: Decision after decision, death after death. What's the point anymore?

Assets/Examples/BasicConversation/ExampleNestedDialogue.asset.meta

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/Examples/ExampleCondition.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ namespace CleverCrow.Fluid.Dialogues.Examples {
66
[CreateMenu("Example/Condition")]
77
public class ExampleCondition : ConditionDataBase {
88
[SerializeField]
9-
private bool _isValid;
9+
private bool _isValid = false;
1010

1111
public override bool OnGetIsValid (INode parent) {
1212
Debug.Log($"Example Condition: Returned {_isValid} for node {parent.UniqueId}");
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
using CleverCrow.Fluid.Dialogues.Nodes;
2+
using UnityEditor;
3+
using UnityEngine;
4+
5+
namespace CleverCrow.Fluid.Dialogues.Editors.NodeDisplays {
6+
[NodeType(typeof(NodePlayGraphData))]
7+
public class PlayGraphEditor : NodeEditorBase {
8+
protected override Color NodeColor { get; } = new Color(0.75f, 0.52f, 0f);
9+
protected override float NodeWidth { get; } = 200;
10+
11+
protected override void OnPrintBody (Event e) {
12+
serializedObject.Update();
13+
EditorGUILayout.PropertyField(serializedObject.FindProperty("dialogueGraph"), GUIContent.none);
14+
serializedObject.ApplyModifiedProperties();
15+
}
16+
}
17+
}

Assets/com.fluid.dialogue/Editor/NodeEditors/PlayGraphEditor.cs.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/com.fluid.dialogue/Runtime/Nodes/PlayGraph/NodePlayGraphData.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,12 @@
33
using CleverCrow.Fluid.Dialogues.Nodes.PlayGraph;
44

55
namespace CleverCrow.Fluid.Dialogues.Nodes {
6+
[CreateMenu("Play Graph")]
67
public class NodePlayGraphData : NodeDataBase {
78
public DialogueGraph dialogueGraph;
89

10+
protected override string DefaultName => "Play Graph";
11+
912
public override INode GetRuntime (IGraph graphRuntime, IDialogueController dialogue) {
1013
return new NodePlayGraph(
1114
graphRuntime,

Packages/manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
"com.unity.analytics": "3.3.2",
2020
"com.unity.collab-proxy": "1.2.16",
2121
"com.unity.ext.nunit": "1.0.0",
22-
"com.unity.ide.rider": "1.1.0",
22+
"com.unity.ide.rider": "1.2.1",
2323
"com.unity.ide.vscode": "1.1.3",
2424
"com.unity.package-manager-ui": "2.2.0",
2525
"com.unity.purchasing": "2.0.6",

ProjectSettings/ProjectVersion.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
m_EditorVersion: 2019.2.17f1
2-
m_EditorVersionWithRevision: 2019.2.17f1 (8e603399ca02)
1+
m_EditorVersion: 2019.2.19f1
2+
m_EditorVersionWithRevision: 2019.2.19f1 (929ab4d01772)

com.fluid.dialogue.Editor.Tests.csproj.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

com.fluid.dialogue.Editor.csproj.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

com.fluid.dialogue.csproj.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)