Skip to content
This repository was archived by the owner on May 19, 2021. It is now read-only.

Commit 4110ccc

Browse files
committed
add dialog to restore crashed scene on project launch
1 parent cc1afd0 commit 4110ccc

File tree

3 files changed

+68
-6
lines changed

3 files changed

+68
-6
lines changed

Diff for: UnityLauncher/Form1.Designer.cs

+1-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: UnityLauncher/Form1.cs

+46-4
Original file line numberDiff line numberDiff line change
@@ -312,8 +312,15 @@ void LaunchProject(string projectPath, string version, bool openProject = true)
312312
Directory.CreateDirectory(assetsFolder);
313313
}
314314

315-
bool haveExactVersion = HaveExactVersionInstalled(version);
316-
if (haveExactVersion == true)
315+
// check for crashed backup scene first
316+
var cancelLaunch = CheckCrashBackupScene(projectPath);
317+
Console.WriteLine(cancelLaunch);
318+
if (cancelLaunch == true)
319+
{
320+
return;
321+
}
322+
323+
if (HaveExactVersionInstalled(version) == true)
317324
{
318325
//Console.WriteLine("Opening unity version " + version);
319326
SetStatus("Launching project in unity " + version);
@@ -352,6 +359,41 @@ void LaunchProject(string projectPath, string version, bool openProject = true)
352359
}
353360
}
354361

362+
bool CheckCrashBackupScene(string projectPath)
363+
{
364+
var cancelRunningUnity = false;
365+
var recoveryFile = Path.Combine(projectPath, "Temp", "__Backupscenes", "0.backup");
366+
if (File.Exists(recoveryFile))
367+
{
368+
DialogResult dialogResult = MessageBox.Show("Crash recovery scene founded, do you want to copy it into Assets/_Recovery/-folder?", "UnityLauncher - Scene Recovery", MessageBoxButtons.YesNoCancel);
369+
if (dialogResult == DialogResult.Yes) // restore
370+
{
371+
var restoreFolder = Path.Combine(projectPath, "Assets", "_Recovery");
372+
if (Directory.Exists(restoreFolder) == false)
373+
{
374+
Directory.CreateDirectory(restoreFolder);
375+
}
376+
if (Directory.Exists(restoreFolder) == true)
377+
{
378+
Int32 unixTimestamp = (Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
379+
var uniqueFileName = "Recovered_Scene" + unixTimestamp + ".unity";
380+
File.Copy(recoveryFile, Path.Combine(restoreFolder, uniqueFileName));
381+
SetStatus("Recovered crashed scene into: " + restoreFolder);
382+
}
383+
else
384+
{
385+
SetStatus("Error: Failed to create restore folder: " + restoreFolder);
386+
cancelRunningUnity = true;
387+
}
388+
}
389+
else if (dialogResult == DialogResult.Cancel) // dont do restore, but run unity
390+
{
391+
cancelRunningUnity = true;
392+
}
393+
}
394+
return cancelRunningUnity;
395+
}
396+
355397
// parse unity installer exe from release page
356398
// thanks to https://github.com/softfruit
357399
string GetDownloadUrlForUnityVersion(string releaseUrl)
@@ -712,7 +754,7 @@ private void Form1_KeyPress(object sender, KeyPressEventArgs e)
712754
{
713755
tbSearchBar.Focus();
714756
tbSearchBar.Text += e.KeyChar;
715-
tbSearchBar.Select(tbSearchBar.Text.Length,0);
757+
tbSearchBar.Select(tbSearchBar.Text.Length, 0);
716758
}
717759
break;
718760
}
@@ -743,7 +785,7 @@ private void gridRecent_KeyDown(object sender, KeyEventArgs e)
743785
//Checks if you are doubleclicking the current cell
744786
private void GridRecent_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
745787
{
746-
if(e.Button == MouseButtons.Left && e.RowIndex == gridRecent.CurrentCell.RowIndex)
788+
if (e.Button == MouseButtons.Left && e.RowIndex == gridRecent.CurrentCell.RowIndex)
747789
{
748790
LaunchSelectedProject();
749791
}

Diff for: UnityLauncher/Form1.resx

+21
Original file line numberDiff line numberDiff line change
@@ -132,12 +132,33 @@
132132
<metadata name="_dateModified.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
133133
<value>True</value>
134134
</metadata>
135+
<metadata name="_project.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
136+
<value>True</value>
137+
</metadata>
138+
<metadata name="_version.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
139+
<value>True</value>
140+
</metadata>
141+
<metadata name="_path.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
142+
<value>True</value>
143+
</metadata>
144+
<metadata name="_dateModified.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
145+
<value>True</value>
146+
</metadata>
147+
<metadata name="_unityVersion.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
148+
<value>True</value>
149+
</metadata>
150+
<metadata name="_unityPath.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
151+
<value>True</value>
152+
</metadata>
135153
<metadata name="_unityVersion.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
136154
<value>True</value>
137155
</metadata>
138156
<metadata name="_unityPath.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
139157
<value>True</value>
140158
</metadata>
159+
<metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
160+
<value>14, 20</value>
161+
</metadata>
141162
<metadata name="folderBrowserDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
142163
<value>111, 20</value>
143164
</metadata>

0 commit comments

Comments
 (0)