Skip to content

Commit

Permalink
chore: build script for windows sample app
Browse files Browse the repository at this point in the history
  • Loading branch information
nattb8 committed Aug 13, 2024
1 parent 52f8664 commit 0fc7382
Showing 1 changed file with 92 additions and 31 deletions.
123 changes: 92 additions & 31 deletions sample/Assets/Editor/WindowsBuilder.cs
Original file line number Diff line number Diff line change
@@ -1,60 +1,121 @@
#if UNITY_EDITOR_WIN

using UnityEngine;
using UnityEditor;
using UnityEditor.SceneManagement;
using AltTester.AltTesterUnitySDK.Editor;
using AltTester.AltTesterUnitySDK;
using System;
using System.IO;
using UnityEditor;
using UnityEditor.Build.Reporting;
using UnityEngine;

public class WindowsBuildScript
public class WindowsBuilder
{
private const string DefaultBuildPath = "Builds/Windows64/SampleApp.exe";

static void Build()
{
BuildPlayer(DefaultBuildPath, BuildOptions.None);
}

static void BuildForAltTester()
{
BuildPlayer(DefaultBuildPath, BuildOptions.Development | BuildOptions.IncludeTestAssemblies | BuildOptions.AutoRunPlayer, true);
}

private static void BuildPlayer(string defaultBuildPath, BuildOptions buildOptions, bool setupForAltTester = false)
{
try
{
BuildPlayerOptions buildPlayerOptions = new BuildPlayerOptions();
buildPlayerOptions.scenes = new string[] {
string buildPath = GetBuildPathFromArgs(defaultBuildPath);
BuildPlayerOptions buildPlayerOptions = CreateBuildPlayerOptions(buildPath, buildOptions);

if (setupForAltTester)
{
SetupAltTester(buildPlayerOptions);
}

var results = BuildPipeline.BuildPlayer(buildPlayerOptions);

if (setupForAltTester)
{
// Clean up AltTester settings after build
AltBuilder.RemoveAltTesterFromScriptingDefineSymbols(BuildTargetGroup.Standalone);
RemoveAltFromScene(buildPlayerOptions.scenes[0]);
}
}
catch (Exception exception)
{
Debug.LogException(exception);
}
}

private static string GetBuildPathFromArgs(string defaultBuildPath)
{
string[] args = Environment.GetCommandLineArgs();
for (int i = 0; i < args.Length; i++)
{
if (args[i] == "--buildPath" && i + 1 < args.Length)
{
return args[i + 1];
}
}
return defaultBuildPath;
}

private static BuildPlayerOptions CreateBuildPlayerOptions(string buildPath, BuildOptions buildOptions)
{
return new BuildPlayerOptions
{
scenes = new[]
{
"Assets/Scenes/SelectAuthMethod.unity",
"Assets/Scenes/UnauthenticatedScene.unity",
"Assets/Scenes/AuthenticatedScene.unity",
"Assets/Scenes/ZkEvmGetBalance.unity",
"Assets/Scenes/ZkEvmGetTransactionReceipt.unity",
"Assets/Scenes/ZkEvmSendTransaction.unity",
"Assets/Scenes/ImxNftTransfer.unity"
};
},
locationPathName = buildPath,
target = BuildTarget.StandaloneWindows64,
options = buildOptions
};
}

buildPlayerOptions.locationPathName = "Builds/Windows64/SampleApp.exe";
buildPlayerOptions.target = BuildTarget.StandaloneWindows64;
buildPlayerOptions.options = BuildOptions.Development | BuildOptions.IncludeTestAssemblies | BuildOptions.AutoRunPlayer;
private static void SetupAltTester(BuildPlayerOptions buildPlayerOptions)
{
AltBuilder.AddAltTesterInScriptingDefineSymbolsGroup(BuildTargetGroup.Standalone);
AltBuilder.CreateJsonFileForInputMappingOfAxis();

// Setup for AltTester
var buildTargetGroup = BuildTargetGroup.Standalone;
AltBuilder.AddAltTesterInScriptingDefineSymbolsGroup(buildTargetGroup);
if (buildTargetGroup == UnityEditor.BuildTargetGroup.Standalone)
AltBuilder.CreateJsonFileForInputMappingOfAxis();
var instrumentationSettings = new AltInstrumentationSettings();
AltBuilder.InsertAltInScene(buildPlayerOptions.scenes[0], instrumentationSettings);
var instrumentationSettings = new AltInstrumentationSettings();
AltBuilder.InsertAltInScene(buildPlayerOptions.scenes[0], instrumentationSettings);
}

BuildReport report = BuildPipeline.BuildPlayer(buildPlayerOptions);
AltBuilder.RemoveAltTesterFromScriptingDefineSymbols(BuildTargetGroup.Standalone);
public static void RemoveAltFromScene(string scene)
{
Debug.Log("Removing AltTesterPrefab from the [" + scene + "] scene.");

if (report.summary.result == BuildResult.Succeeded)
{
Debug.Log("Build succeeded: " + report.summary.totalSize + " bytes");
}
else
{
Debug.LogError("Build failed");
}
var sceneToModify = EditorSceneManager.OpenScene(scene);

// Find the AltTesterPrefab instance in the scene
var altRunner = GameObject.FindObjectOfType<AltRunner>();

if (altRunner != null)
{
// Destroy the AltTesterPrefab instance
GameObject.DestroyImmediate(altRunner.gameObject);

// Mark the scene as dirty and save it
EditorSceneManager.MarkSceneDirty(sceneToModify);
EditorSceneManager.SaveOpenScenes();

Debug.Log("AltTesterPrefab successfully removed from the [" + scene + "] scene.");
}
catch (Exception exception)
else
{
Debug.LogException(exception);
Debug.LogWarning("AltTesterPrefab was not found in the [" + scene + "] scene.");
}
}

}

#endif
#endif

0 comments on commit 0fc7382

Please sign in to comment.