Weapons/ToolGun/Modes/Duplicator/DuplicatorTool.IconRendering.cs
using System.Text.Json;
using System.Text.Json.Nodes;
public partial class DuplicatorTool
{
/// <summary>
/// Render duplicator Json to a bitmap
/// </summary>
public static void RenderIconToBitmap( string duplicatorJson, Bitmap bitmap )
{
var jsonObject = Json.ParseToJsonObject( duplicatorJson );
bitmap.Clear( Color.Transparent );
Transform dest = new();
var scene = Scene.CreateEditorScene();
using ( scene.Push() )
{
var root = new GameObject();
foreach ( var entry in jsonObject["Objects"] as JsonArray )
{
if ( entry is JsonObject obj )
{
var pos = entry["Position"]?.Deserialize<Vector3>() ?? default;
var rot = entry["Rotation"]?.Deserialize<Rotation>() ?? Rotation.Identity;
var world = dest.ToWorld( new Transform( pos, rot ) );
var go = new GameObject( false );
go.Deserialize( obj, new GameObject.DeserializeOptions { TransformOverride = world } );
go.NetworkSpawn( true, null );
go.Parent = root;
}
}
SceneUtility.RenderGameObjectToBitmap( root, bitmap );
scene.Destroy();
}
}
}