|
|
@ -19,6 +19,10 @@ namespace Fungus |
|
|
|
|
|
|
|
|
|
|
|
public Rect nodeRect = new Rect(); |
|
|
|
public Rect nodeRect = new Rect(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static bool pinShiftToTop; |
|
|
|
|
|
|
|
public static int firstSelectedIndex = 0; |
|
|
|
|
|
|
|
public static int lastSelectedIndex = 0; |
|
|
|
|
|
|
|
|
|
|
|
public SerializedProperty this[int index] { |
|
|
|
public SerializedProperty this[int index] { |
|
|
|
get { return _arrayProperty.GetArrayElementAtIndex(index); } |
|
|
|
get { return _arrayProperty.GetArrayElementAtIndex(index); } |
|
|
|
} |
|
|
|
} |
|
|
@ -161,7 +165,7 @@ namespace Fungus |
|
|
|
return; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
bool isComment = (command.GetType() == typeof(Comment)); |
|
|
|
bool isComment = command.GetType() == typeof(Comment); |
|
|
|
bool isLabel = (command.GetType() == typeof(Label)); |
|
|
|
bool isLabel = (command.GetType() == typeof(Label)); |
|
|
|
|
|
|
|
|
|
|
|
bool error = false; |
|
|
|
bool error = false; |
|
|
@ -202,10 +206,11 @@ namespace Fungus |
|
|
|
|
|
|
|
|
|
|
|
GUIStyle commandLabelStyle = new GUIStyle(GUI.skin.box); |
|
|
|
GUIStyle commandLabelStyle = new GUIStyle(GUI.skin.box); |
|
|
|
commandLabelStyle.normal.background = FungusEditorResources.texCommandBackground; |
|
|
|
commandLabelStyle.normal.background = FungusEditorResources.texCommandBackground; |
|
|
|
commandLabelStyle.border.top = 1; |
|
|
|
int borderSize = 5; |
|
|
|
commandLabelStyle.border.bottom = 1; |
|
|
|
commandLabelStyle.border.top = borderSize; |
|
|
|
commandLabelStyle.border.left = 1; |
|
|
|
commandLabelStyle.border.bottom = borderSize; |
|
|
|
commandLabelStyle.border.right = 1; |
|
|
|
commandLabelStyle.border.left = borderSize; |
|
|
|
|
|
|
|
commandLabelStyle.border.right = borderSize; |
|
|
|
commandLabelStyle.alignment = TextAnchor.MiddleLeft; |
|
|
|
commandLabelStyle.alignment = TextAnchor.MiddleLeft; |
|
|
|
commandLabelStyle.richText = true; |
|
|
|
commandLabelStyle.richText = true; |
|
|
|
commandLabelStyle.fontSize = 11; |
|
|
|
commandLabelStyle.fontSize = 11; |
|
|
@ -239,18 +244,88 @@ namespace Fungus |
|
|
|
{ |
|
|
|
{ |
|
|
|
if (fungusScript.selectedCommands.Contains(command) && Event.current.button == 0) |
|
|
|
if (fungusScript.selectedCommands.Contains(command) && Event.current.button == 0) |
|
|
|
{ |
|
|
|
{ |
|
|
|
// Left click on an already selected command |
|
|
|
// Left click on already selected command |
|
|
|
fungusScript.selectedCommands.Remove(command); |
|
|
|
// Command key and shift key is not pressed |
|
|
|
|
|
|
|
if (!EditorGUI.actionKey && !Event.current.shift) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
fungusScript.selectedCommands.Remove(command); |
|
|
|
|
|
|
|
fungusScript.ClearSelectedCommands(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Command key pressed |
|
|
|
|
|
|
|
if (EditorGUI.actionKey) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
fungusScript.selectedCommands.Remove(command); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
// Shift key pressed |
|
|
|
|
|
|
|
if (Event.current.shift) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
fungusScript.ClearSelectedCommands(); |
|
|
|
|
|
|
|
if (pinShiftToTop) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
for (int i = firstSelectedIndex; i < index+1; ++i) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
fungusScript.AddSelectedCommand(fungusScript.selectedSequence.commandList[i]); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
for (int i = index; i < lastSelectedIndex+1; ++i) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
fungusScript.AddSelectedCommand(fungusScript.selectedSequence.commandList[i]); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
else |
|
|
|
{ |
|
|
|
{ |
|
|
|
// Left click and no command key |
|
|
|
// Left click and no command key |
|
|
|
if (!EditorGUI.actionKey && Event.current.button == 0) |
|
|
|
if (!Event.current.shift && !EditorGUI.actionKey && Event.current.button == 0) |
|
|
|
{ |
|
|
|
{ |
|
|
|
fungusScript.ClearSelectedCommands(); |
|
|
|
fungusScript.ClearSelectedCommands(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
fungusScript.AddSelectedCommand(command); |
|
|
|
fungusScript.AddSelectedCommand(command); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bool firstSelectedCommandFound = false; |
|
|
|
|
|
|
|
if (fungusScript.selectedCommands.Count > 0) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
if ( fungusScript.selectedSequence != null) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
for (int i = 0; i < fungusScript.selectedSequence.commandList.Count; i++) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
Command commandInSequence = fungusScript.selectedSequence.commandList[i]; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
foreach (Command selectedCommand in fungusScript.selectedCommands) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
if (commandInSequence == selectedCommand) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
if (!firstSelectedCommandFound) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
firstSelectedIndex = i; |
|
|
|
|
|
|
|
firstSelectedCommandFound = true; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
lastSelectedIndex = i; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (Event.current.shift) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
for (int i = firstSelectedIndex; i < lastSelectedIndex; ++i) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
fungusScript.AddSelectedCommand(fungusScript.selectedSequence.commandList[i]); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if (index == firstSelectedIndex) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
pinShiftToTop = false; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
else if (index == lastSelectedIndex) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
pinShiftToTop = true; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
GUIUtility.keyboardControl = 0; // Fix for textarea not refeshing (change focus) |
|
|
|
GUIUtility.keyboardControl = 0; // Fix for textarea not refeshing (change focus) |
|
|
|
} |
|
|
|
} |
|
|
@ -276,7 +351,7 @@ namespace Fungus |
|
|
|
|
|
|
|
|
|
|
|
GUI.backgroundColor = commandLabelColor; |
|
|
|
GUI.backgroundColor = commandLabelColor; |
|
|
|
|
|
|
|
|
|
|
|
if (isComment || isLabel) |
|
|
|
if (isComment) |
|
|
|
{ |
|
|
|
{ |
|
|
|
GUI.Label(commandLabelRect, "", commandLabelStyle); |
|
|
|
GUI.Label(commandLabelRect, "", commandLabelStyle); |
|
|
|
} |
|
|
|
} |
|
|
@ -295,7 +370,11 @@ namespace Fungus |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
Rect summaryRect = new Rect(commandLabelRect); |
|
|
|
Rect summaryRect = new Rect(commandLabelRect); |
|
|
|
if (!isComment && !isLabel) |
|
|
|
if (isComment) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
summaryRect.x += 5; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
else |
|
|
|
{ |
|
|
|
{ |
|
|
|
summaryRect.x += commandNameWidth; |
|
|
|
summaryRect.x += commandNameWidth; |
|
|
|
summaryRect.width -= commandNameWidth; |
|
|
|
summaryRect.width -= commandNameWidth; |
|
|
@ -308,6 +387,7 @@ namespace Fungus |
|
|
|
summaryStyle.richText = true; |
|
|
|
summaryStyle.richText = true; |
|
|
|
summaryStyle.wordWrap = false; |
|
|
|
summaryStyle.wordWrap = false; |
|
|
|
summaryStyle.clipping = TextClipping.Clip; |
|
|
|
summaryStyle.clipping = TextClipping.Clip; |
|
|
|
|
|
|
|
commandLabelStyle.alignment = TextAnchor.MiddleLeft; |
|
|
|
GUI.Label(summaryRect, summary, summaryStyle); |
|
|
|
GUI.Label(summaryRect, summary, summaryStyle); |
|
|
|
|
|
|
|
|
|
|
|
if (error) |
|
|
|
if (error) |
|
|
@ -369,4 +449,3 @@ namespace Fungus |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|