Files
UnrealEngineUWP/Engine/Source/Programs/Shared/EpicGames.BuildGraph/BgThunkDef.cs
Ben Marsh 38f3bc55ef BuildGraph: Various VM improvements.
* Added support for deserializing BgObject types directly into native classes.
* Removed opcodes for creating graph structures. These are now created in user code from BgObject types.
* Removed BgNodeSpecBuilder. BgNode objects can now be modified directly (returning a modified copy).
* Added concrete types for option parameters. The VM now keeps track of any parameters for evaluated options, allowing them to be added into the graph definition.
* Order dependencies now take nodes rather than outputs.
* Added explicit support for native thunks, whose bindings are saved to a sideband channel during compilation and referenced in bytecode as an index. This generalizes code that was previously specific to node definitions.
* Added a name table to bytecode, to optimize situations where we reference the same string mulitple times.

#preflight 62bf3c583f0d6beee2e8f4a6

[CL 20918762 by Ben Marsh in ue5-main branch]
2022-07-01 14:47:54 -04:00

63 lines
1.2 KiB
C#

// Copyright Epic Games, Inc. All Rights Reserved.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
namespace EpicGames.BuildGraph
{
/// <summary>
/// Information about the method bound to execute a node
/// </summary>
public class BgThunkDef
{
/// <summary>
/// Method to call
/// </summary>
public MethodInfo Method { get; }
/// <summary>
/// Arguments to the method
/// </summary>
public IReadOnlyList<object?> Arguments { get; }
/// <summary>
/// Constructor
/// </summary>
public BgThunkDef(MethodInfo method, IReadOnlyList<object?> arguments)
{
Method = method;
Arguments = arguments;
}
}
/// <summary>
/// Outputs from a thunk
/// </summary>
public class BgThunkOutputDef
{
/// <summary>
/// The thunk definition
/// </summary>
public BgThunkDef Thunk { get; }
/// <summary>
/// Output index from the thunk
/// </summary>
public int Index { get; }
/// <summary>
/// Constructor
/// </summary>
/// <param name="thunk"></param>
/// <param name="index"></param>
public BgThunkOutputDef(BgThunkDef thunk, int index)
{
Thunk = thunk;
Index = index;
}
}
}