Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 0 additions & 16 deletions DisguiseUnityRenderStream/Disguise.RenderStream.asmdef

This file was deleted.

2,066 changes: 0 additions & 2,066 deletions DisguiseUnityRenderStream/DisguiseCameraCapture.cs

This file was deleted.

43 changes: 0 additions & 43 deletions DisguiseUnityRenderStream/DisguiseTimeControl.cs

This file was deleted.

113 changes: 113 additions & 0 deletions DisguiseUnityRenderStream/Editor/DisguiseRenderStreamBuild.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
using System;
using System.Collections.Generic;
using System.Linq;
using UnityEditor;
using UnityEditor.Build.Reporting;
using UnityEditor.SceneManagement;
using UnityEngine;
using UnityEngine.SceneManagement;
using Object = UnityEngine.Object;

namespace Disguise.RenderStream
{
class DisguiseRenderStreamBuildProcessor : UnityEditor.Build.IPostprocessBuildWithReport
{
public int callbackOrder { get; set; } = 0;

public void OnPostprocessBuild(BuildReport report)
{
var target = report.summary.platform;

if (target != BuildTarget.StandaloneWindows64)
{
Debug.LogError("DisguiseRenderStream: RenderStream is only available for 64-bit Windows (x86_64).");
return;
}

if (PluginEntry.instance.IsAvailable == false)
{
Debug.LogError("DisguiseRenderStream: RenderStream DLL not available, could not save schema");
return;
}

DisguiseRenderStreamSettings settings = DisguiseRenderStreamSettings.GetOrCreateSettings();
var schema = new ManagedSchema
{
channels = Array.Empty<string>()
};

var allScenesInBuild = EditorBuildSettings.scenes;

switch (settings.sceneControl)
{
case DisguiseRenderStreamSettings.SceneControl.Selection:
Debug.Log("Generating scene-selection schema for: " + allScenesInBuild.Length + " scenes");
schema.scenes = new ManagedRemoteParameters[allScenesInBuild.Length];
if (allScenesInBuild.Length == 0)
Debug.LogWarning("No scenes in build settings. Schema will be empty.");
break;
case DisguiseRenderStreamSettings.SceneControl.Manual:
default:
Debug.Log("Generating manual schema");
schema.scenes = new ManagedRemoteParameters[1];
break;
}

foreach (var buildScene in allScenesInBuild)
{
if (!buildScene.enabled)
{
continue;
}

var scene = SceneManager.GetSceneByPath(buildScene.path);
if (!scene.IsValid() || !scene.isLoaded)
{
scene = EditorSceneManager.OpenScene(buildScene.path, OpenSceneMode.Single);
}

if (!scene.IsValid() || !scene.isLoaded)
{
continue;
}

// In "Manual" mode (Disguise does not control scene changes), all parameters are listed under a single "Default" scene.
// In "Selection" mode (Disguise controls scene changes), parameters are listed under their respective scenes.
var (sceneIndex, managedName, indexMessage) = settings.sceneControl switch {
DisguiseRenderStreamSettings.SceneControl.Manual => (0, "Default", string.Empty),
DisguiseRenderStreamSettings.SceneControl.Selection => (scene.buildIndex, scene.name, $"({scene.buildIndex}/{allScenesInBuild.Length})"),
_ => throw new ArgumentOutOfRangeException()
};

Debug.Log($"Processing scene {scene.name} {indexMessage}");
AddSceneToSchema(schema, sceneIndex, managedName);
}

var pathToBuiltProject = report.summary.outputPath;
RS_ERROR error = PluginEntry.instance.saveSchema(pathToBuiltProject, ref schema);
if (error != RS_ERROR.RS_ERROR_SUCCESS)
{
Debug.LogError(string.Format("DisguiseRenderStream: Failed to save schema {0}", error));
}
}

static void AddSceneToSchema(ManagedSchema schema, int sceneIndex, string name)
{
var channels = new HashSet<string>(schema.channels);
channels.UnionWith(Camera.allCameras.Select(camera => camera.name));
schema.channels = channels.ToArray();
schema.scenes[sceneIndex] ??= new ManagedRemoteParameters
{
name = name,
parameters = Array.Empty<ManagedRemoteParameter>()
};
var currentScene = schema.scenes[sceneIndex];

var parameters = currentScene.parameters
.Concat(Object.FindObjectsOfType<DisguiseRemoteParameters>()
.SelectMany(p => p.exposedParameters()));

currentScene.parameters = parameters.ToArray();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
using System.Collections;
using System.Collections.Generic;
using System.Reflection.Emit;
using Disguise.RenderStream;
using UnityEditor.Rendering;
using UnityEngine;
using UnityEngine.Rendering.HighDefinition;
Expand Down
94 changes: 0 additions & 94 deletions DisguiseUnityRenderStream/HDRP/DisguiseCameraCaptureVolume.cs

This file was deleted.

3 changes: 3 additions & 0 deletions DisguiseUnityRenderStream/Runtime/AssemblyInfo.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
using System.Runtime.CompilerServices;

[assembly: InternalsVisibleTo("Disguise.RenderStream.Editor")]
25 changes: 25 additions & 0 deletions DisguiseUnityRenderStream/Runtime/Disguise.RenderStream.asmdef
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"name": "Disguise.RenderStream",
"rootNamespace": "",
"references": [
"Unity.RenderPipelines.Core.Runtime",
"Unity.RenderPipelines.HighDefinition.Runtime",
"Unity.RenderPipelines.HighDefinition.Config.Runtime",
"Unity.ClusterDisplay.Runtime"
],
"includePlatforms": [],
"excludePlatforms": [],
"allowUnsafeCode": true,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": [],
"versionDefines": [
{
"name": "com.unity.cluster-display",
"expression": "0.0.0",
"define": "ENABLE_CLUSTER_DISPLAY"
}
],
"noEngineReferences": false
}
Loading