Server-side scenario execution: new Rudder.Core.dll, realtime/planstore glue removed

- Rudder.Core.dll rebuilt from csharp-sdk effects rewrite (96,768 bytes)
- Realtime/ adapters, UnityRealtimeTransportFactory, UnityPlanStateStore,
  UnityPlanScheduler, WebGL jslib and RealtimeUrl config deleted (with .meta)
- Scenarios sample rewired to client.Effects; samples login path updated
- AGENTS.md/README/CHANGELOG/package docs + agent skill updated; realtime.md skill doc removed
This commit is contained in:
edmand46
2026-09-04 14:23:38 +03:00
parent 22805173eb
commit 6d115f158e
71 changed files with 3338 additions and 1034 deletions
@@ -0,0 +1,143 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using UnityEngine;
namespace RudderSdk.Unity.Samples
{
sealed class SamplePage
{
const int MaxLogLines = 40;
readonly string _title;
readonly string _subtitle;
readonly List<string> _logLines = new List<string>();
string _status = "Idle";
bool _error;
string _output = string.Empty;
bool _busy;
Vector2 _outputScroll;
Vector2 _logScroll;
GUIStyle _titleStyle;
GUIStyle _bodyStyle;
GUIStyle _statusStyle;
public SamplePage(string title, string subtitle)
{
_title = title;
_subtitle = subtitle;
}
public void Draw(Action body)
{
EnsureStyles();
const float pad = 16f;
GUILayout.BeginArea(new Rect(pad, pad, Screen.width - pad * 2f, Screen.height - pad * 2f));
GUILayout.Label(_title, _titleStyle);
GUILayout.Label(_subtitle, _bodyStyle);
_statusStyle.normal.textColor = _error ? new Color(1f, 0.45f, 0.4f) : Color.white;
GUILayout.Label(_status, _statusStyle);
GUILayout.Space(8f);
var enabled = GUI.enabled;
GUI.enabled = enabled && !_busy;
body();
GUI.enabled = enabled;
if (!string.IsNullOrEmpty(_output))
{
GUILayout.Space(8f);
_outputScroll = GUILayout.BeginScrollView(_outputScroll, GUILayout.MinHeight(120f));
GUILayout.Label(_output, _bodyStyle);
GUILayout.EndScrollView();
}
GUILayout.Space(8f);
GUILayout.Label("Log", _titleStyle);
_logScroll = GUILayout.BeginScrollView(_logScroll, GUILayout.MinHeight(100f));
if (_logLines.Count == 0)
GUILayout.Label("(empty)", _bodyStyle);
else
GUILayout.Label(string.Join("\n", _logLines), _bodyStyle);
GUILayout.EndScrollView();
GUILayout.EndArea();
}
public bool Button(string text)
{
return GUILayout.Button(text, GUILayout.Height(28f), GUILayout.MaxWidth(280f));
}
public void Label(string text)
{
GUILayout.Label(text, _bodyStyle);
}
public void SetStatus(string text, bool error = false)
{
_status = text;
_error = error;
}
public void SetOutput(string text)
{
_output = text ?? string.Empty;
}
public void Log(string line)
{
_logLines.Insert(0, DateTime.Now.ToString("HH:mm:ss") + " " + line);
if (_logLines.Count > MaxLogLines)
_logLines.RemoveAt(_logLines.Count - 1);
}
public async void Run(MonoBehaviour host, Func<Task> action)
{
if (_busy)
return;
_busy = true;
SetStatus("Working…");
try
{
await action();
}
catch (Exception exception)
{
await Awaitable.MainThreadAsync();
if (host == null)
return;
SetStatus(exception.Message, true);
Log(exception.Message);
}
finally
{
_busy = false;
}
}
void EnsureStyles()
{
if (_titleStyle != null)
return;
_titleStyle = new GUIStyle(GUI.skin.label)
{
fontSize = 20,
fontStyle = FontStyle.Bold,
wordWrap = true
};
_titleStyle.normal.textColor = Color.white;
_bodyStyle = new GUIStyle(GUI.skin.label)
{
fontSize = 14,
wordWrap = true
};
_bodyStyle.normal.textColor = Color.white;
_statusStyle = new GUIStyle(_bodyStyle);
}
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 5b306e86aff644e0adfa093a21ca4d97
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: