RustPlusApi.Camera
2.0.0-beta.4
dotnet add package RustPlusApi.Camera --version 2.0.0-beta.4
NuGet\Install-Package RustPlusApi.Camera -Version 2.0.0-beta.4
<PackageReference Include="RustPlusApi.Camera" Version="2.0.0-beta.4" />
<PackageVersion Include="RustPlusApi.Camera" Version="2.0.0-beta.4" />
<PackageReference Include="RustPlusApi.Camera" />
paket add RustPlusApi.Camera --version 2.0.0-beta.4
#r "nuget: RustPlusApi.Camera, 2.0.0-beta.4"
#:package RustPlusApi.Camera@2.0.0-beta.4
#addin nuget:?package=RustPlusApi.Camera&version=2.0.0-beta.4&prerelease
#tool nuget:?package=RustPlusApi.Camera&version=2.0.0-beta.4&prerelease
RustPlusApi.Camera
Renders Rust+ camera frames (AppCameraRays) into images. A separate package so the core
RustPlusApi stays image-free — take this dependency
only if you need rendered frames. Depends on
SixLabors.ImageSharp (the 2.1.x line, which supports
netstandard2.0).
Part of RustPlusApi · Documentation · Samples
Targets .NET Standard 2.0 and .NET 10.
Install
dotnet add package RustPlusApi.Camera
Usage
CameraController manages the session (the server stops streaming rays for subscriptions
that are not renewed; the controller re-subscribes every 10 s) and exposes turret/PTZ
helpers; CameraRenderer turns the frames into PNGs:
using RustPlusApi.Camera;
var response = await CameraController.SubscribeAsync(rustPlus, "CAM01");
if (!response.IsSuccess) return;
await using var camera = response.Data!;
var renderer = new CameraRenderer(camera.Info.Width, camera.Info.Height);
camera.OnFrameReceived += (_, frame) =>
{
renderer.AddRays(frame);
byte[] png = renderer.Render(); // save / display
};
// One check per device kind: IsAutoTurret / IsDrone / IsPtzCamera / IsStaticCamera.
// Turrets: await camera.ShootAsync(); await camera.ReloadAsync();
// PTZ cameras: await camera.ZoomAsync();
// Mouse look / drone movement: await camera.LookAsync(10f, 0f); await camera.MoveAsync(CameraButtons.Forward);
// All action helpers are capability-gated: an unsupported action is refused client-side
// (RustPlusErrorCode.NotSupported) without sending — the server acks unsupported inputs
// with success while ignoring them, and zoom shares FirePrimary with turret fire.
// Raised when a renewal fails (e.g. NoPlayer after the camera was destroyed in game):
camera.OnKeepAliveFailed += (_, error) => Console.WriteLine($"{error.Code} {error.Message}");
Frames accumulate — each AddRays fills in more samples, so the image sharpens over time.
Validated against real captured frames: golden render tests pin the decode output to live-captured frame sequences from every device type (static CCTV, PTZ camera, auto-turret, drone). Refresh a fixture any time with the sample's headless capture mode (
RustPlus.Camera.ConsoleApp … capture <cameraId> <seconds> [outDir]).
Documentation
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- RustPlusApi (>= 2.0.0-beta.4)
- SixLabors.ImageSharp (>= 2.1.13)
-
net10.0
- RustPlusApi (>= 2.0.0-beta.4)
- SixLabors.ImageSharp (>= 2.1.13)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2.0.0-beta.4 | 50 | 7/7/2026 |
| 2.0.0-beta.3 | 72 | 6/22/2026 |
| 2.0.0-beta.2 | 63 | 6/19/2026 |
| 2.0.0-beta.1 | 59 | 6/12/2026 |