dofdemo/src/Program.cs

110 lines
No EOL
3.1 KiB
C#

using StereoKit;
using StereoKit.Framework;
namespace snake;
class Program
{
static void Main(string[] args)
{
SK.AddStepper<PassthroughFBExt>();
// Initialize StereoKit
SKSettings settings = new SKSettings
{
appName = "snake",
assetsFolder = "Assets",
blendPreference = DisplayBlend.AnyTransparent,
// overlayApp = true,
// overlayPriority = 1,
depthMode = DepthMode.D32,
disableFlatscreenMRSim = true,
renderScaling = 2,
renderMultisample = 0,
};
if (!SK.Initialize(settings))
return;
Renderer.Scaling = 2;
World.OcclusionEnabled = true;
Device.DisplayBlend = DisplayBlend.AnyTransparent;
Renderer.EnableSky = false;
Renderer.ClearColor = new Color(0.0f, 0.0f, 0.0f, 0.0f);
Rig.Init();
Mono.Init();
VFX.Init();
Arts.Init();
VCam.Init();
// Core application loop
SK.Run(() =>
{
Rig.Frame();
Mono.Frame();
// stepper
// if (Time.Total > 3.0) return; // buffer app loading [!] relace with user prompt to start (spawn box in hand or something)
if (!Mono.menu)
{
Mono.game_time += Time.Step;
if (Mono.intro)
{
Mono.step_time = Maths.min(Mono.step_time + Time.Step, Mono.step_step);
Mono.step_t = Maths.u_clamp(Maths.min(Mono.step_time, Mono.step_step) / Mono.step_step);
if (Rig.btn_select.delta == +1)
{
Mono.step_time = 0.0;
Mono.step_t = 0.0;
Mono.Step();
Arts.Step();
if (Mono.grow_buffer > 0)
{
Mono.intro = false;
}
}
if (Rig.btn_select.state)
{
Mono.intro_skip += Time.Step;
if (Mono.intro_skip >= 1.0)
{
Mono.intro = false;
}
}
if (Rig.btn_select.delta == -1)
{
Mono.intro_skip = 0.0;
}
}
else
{
Mono.step_time = Maths.min(Mono.step_time + Time.Step, Mono.step_step);
Mono.step_t = Maths.u_clamp(Maths.min(Mono.step_time, Mono.step_step) / Mono.step_step);
if (Mono.step_time >= Mono.step_step)
{
Mono.step_time -= Mono.step_step;
Mono.step_t = 0.0;
Mono.Step();
Arts.Step();
}
}
VFX.Frame();
}
Arts.Frame();
VCam.Frame();
});
}
}