spikes/KniWeb (outside LittleSim.sln): a kni-blazor-gl template project (KNI 4.2.9001, net8.0) referencing MrGameEng.Core directly. A mini-host in the GameHost mold drives EngineContext/GameClock/Scene phases over KNI's Game; the scene moves 300 Friflo entities in the update phase and draws them with SpriteBatch (WebGL). Verified in a real browser: sprites render and animate, browser console is clean. Decision (docs/web-client.md): path A — KNI — is the primary route for the web client; the core runs in Blazor WASM unchanged thanks to the Core/Host split. Known follow-ups: per-platform compilation of the graphics libraries against nkast.* packages, shader compatibility for Renderer2D, HTTP-served content instead of the filesystem. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
37 lines
783 B
C#
37 lines
783 B
C#
using System;
|
|
using Microsoft.JSInterop;
|
|
using Microsoft.Xna.Framework;
|
|
|
|
namespace KniWebSpike.Pages
|
|
{
|
|
public partial class Index
|
|
{
|
|
Game _game;
|
|
|
|
protected override void OnAfterRender(bool firstRender)
|
|
{
|
|
base.OnAfterRender(firstRender);
|
|
|
|
if (firstRender)
|
|
{
|
|
JsRuntime.InvokeAsync<object>("initRenderJS", DotNetObjectReference.Create(this));
|
|
}
|
|
}
|
|
|
|
[JSInvokable]
|
|
public void TickDotNet()
|
|
{
|
|
// init game
|
|
if (_game == null)
|
|
{
|
|
_game = new KniWebSpikeGame();
|
|
_game.Run();
|
|
}
|
|
|
|
// run gameloop
|
|
_game.Tick();
|
|
}
|
|
|
|
}
|
|
}
|