18 public static Dictionary<string, Screen>
m_screens = [];
65 public static void SwitchScreen(
string name, params
object[] parameters) {
66 SwitchScreen(
string.IsNullOrEmpty(name) ?
null : FindScreen<Screen>(name), parameters);
74 throw new ArgumentNullException(nameof(screen));
83 RootWidget.IsUpdateEnabled =
false;
96 Log.
Verbose($
"Entered screen \"{GetScreenName(CurrentScreen)}\"");
101 public static void GoBack(params
object[] parameters) {
107 RootWidget.WidgetsHierarchyInput =
new WidgetInput();
138 m_animationData.OldScreen.ColorTransform =
new Color(num2, num2, num2, num2);
139 m_animationData.OldScreen.RenderTransform =
149 else if (factor < 0.5f) {
172 RootWidget.IsUpdateEnabled =
true;
176 float num3 = 2f * (m_animationData.Factor - 0.5f);
178 m_animationData.NewScreen.ColorTransform =
new Color(num3, num3, num3, num3);
179 m_animationData.NewScreen.RenderTransform =
195 m_animationData.NewScreen.ColorTransform =
Color.
White;
202 string key =
m_screens.FirstOrDefault(kvp => kvp.Value == screen).Key;
213 Vector3 vector = hmdMatrix.Translation
259 for (
int i = 0; i < 1500; i++) {
260 float f = MathF.Pow(
Random.Float(0f, 1f), 6f);
277 for (
int j = -8; j <= 8; j++) {
278 for (
int k = -8; k <= 8; k++) {
281 Vector3 vector3 =
new Vector3((j - 0.5f) * num2, 0f, (k - 0.5f) * num2)
306 float num2 = vector.X / num;
307 Vector2 availableSize =
new(num, num / vector.X * vector.
Y);
308 float num3 = num * 9f / 16f;
309 if (vector.
Y / num2 < num3) {
310 num2 = vector.Y / num3;
311 availableSize =
new Vector2(num3 / vector.
Y * vector.
X, num3);
316 RootWidget.LayoutTransform *=
new Matrix(
341 Vector3 p2 = corner + right + up;
343 batch.
QueueQuad(corner, p, p2, p3, color);
366 Vector3 p2 = corner + right + up;
384 && topBar.
Size.
X == 64f) {
385 topBar.MarginLeft = Window.DisplayCutoutInsets.X *
FinalUiScale;
392 && topBar.
Size.
X == 64f) {
393 topBar.MarginLeft = 0f;
static readonly BlendState Opaque
static readonly DepthStencilState Default
static void Clear(Vector4? color, float? depth=null, int? stencil=null)
void QueueQuad(Vector3 p1, Vector3 p2, Vector3 p3, Vector3 p4, Color color1, Color color2, Color color3, Color color4)
绘制矩形(支持渐变)
static readonly RasterizerState CullNoneScissor
static SamplerState PointClamp
static SamplerState LinearClamp
void QueueQuad(Vector3 p1, Vector3 p2, Vector3 p3, Vector3 p4, Vector2 texCoord1, Vector2 texCoord2, Vector2 texCoord3, Vector2 texCoord4, Color color)
static void Verbose(object message)
static int Min(int x1, int x2)
static float Saturate(float x)
static int Max(int x1, int x2)
static float Lerp(float x1, float x2, float f)
static float FrameDuration
static Action< Vector4, bool > DisplayCutoutInsetsChanged
static object Get(Type type, string name)
static void LayoutAndDrawWidgets()
static Vector3 m_vrQuadPosition
static AnimationData m_animationData
static Screen PreviousScreen
上一个Screen
static void GoBack(params object[] parameters)
static float FinalUiScale
static void QueueQuad(TexturedBatch3D batch, Vector3 center, Vector3 right, Vector3 up, Color color)
static void ResetAllTopBarMarginLeft()
static T FindScreen< T >(string name)
static float DebugUiScale
static void AnimateVrQuad()
static void DrawVrBackground()
static void EndAnimation()
static void QueueQuad(TexturedBatch3D batch, Vector3 corner, Vector3 right, Vector3 up, Color color, Vector2 tc1, Vector2 tc2)
static PrimitivesRenderer3D m_pr3
static PrimitivesRenderer2D m_pr2
static Matrix m_vrQuadMatrix
static void UpdateAnimation()
static void SwitchScreen(string name, params object[] parameters)
static ContainerWidget RootWidget
static void AddScreen(string name, Screen screen)
static Stack< Screen > HistoryStack
static void SwitchScreen(Screen screen, params object[] parameters)
static Screen TopOfHistoryScreen
static string GetScreenName(Screen screen)
static Screen CurrentScreen
static void InitScreens()
static Dictionary< string, Screen > m_screens
static RenderTarget2D m_uiRenderTarget
static void QueueQuad(FlatBatch3D batch, Vector3 corner, Vector3 right, Vector3 up, Color color)
static void UpdateTopBarMarginLeft()
static bool UpsideDownLayout
static bool AdaptEdgeToEdgeDisplay
static void HookAction(string HookName, Func< ModLoader, bool > action)
执行Hook
static Matrix CreateTranslation(float x, float y, float z)
static readonly Matrix Identity
static Matrix CreateScale(float scale)
static Vector3 Cross(Vector3 v1, Vector3 v2)
static Vector3 Normalize(Vector3 v)
static readonly Vector3 Zero
static float Distance(Vector3 v1, Vector3 v2)
static readonly Vector3 UnitY