using StereoKit; using StereoKit.Framework; namespace snake; class Program { static void Main(string[] args) { SK.AddStepper(); // 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(); }); } }