137 lines
3.4 KiB
C#
137 lines
3.4 KiB
C#
using MoonWorks;
|
|
using MoonWorks.Graphics;
|
|
|
|
namespace MoonWorksGraphicsTests;
|
|
|
|
public static class TestUtils
|
|
{
|
|
// change this to test different backends
|
|
public static BackendFlags PreferredBackends = BackendFlags.Vulkan | BackendFlags.D3D11 | BackendFlags.Metal;
|
|
|
|
public static WindowCreateInfo GetStandardWindowCreateInfo()
|
|
{
|
|
return new WindowCreateInfo(
|
|
"Main Window",
|
|
640,
|
|
480,
|
|
ScreenMode.Windowed,
|
|
SwapchainComposition.SDR,
|
|
PresentMode.VSync
|
|
);
|
|
}
|
|
|
|
public static FrameLimiterSettings GetStandardFrameLimiterSettings()
|
|
{
|
|
return new FrameLimiterSettings(
|
|
FrameLimiterMode.Capped,
|
|
60
|
|
);
|
|
}
|
|
|
|
public static GraphicsPipelineCreateInfo GetStandardGraphicsPipelineCreateInfo(
|
|
TextureFormat swapchainFormat,
|
|
Shader vertShader,
|
|
Shader fragShader
|
|
) {
|
|
return new GraphicsPipelineCreateInfo
|
|
{
|
|
AttachmentInfo = new GraphicsPipelineAttachmentInfo(
|
|
new ColorAttachmentDescription(
|
|
swapchainFormat,
|
|
ColorAttachmentBlendState.Opaque
|
|
)
|
|
),
|
|
DepthStencilState = DepthStencilState.Disable,
|
|
MultisampleState = MultisampleState.None,
|
|
PrimitiveType = PrimitiveType.TriangleList,
|
|
RasterizerState = RasterizerState.CCW_CullNone,
|
|
VertexInputState = VertexInputState.Empty,
|
|
VertexShader = vertShader,
|
|
FragmentShader = fragShader
|
|
};
|
|
}
|
|
|
|
public static string GetShaderPath(string shaderName)
|
|
{
|
|
return SDL2.SDL.SDL_GetBasePath() + "Content/Shaders/Compiled/" + shaderName + ".refresh";
|
|
}
|
|
|
|
public static string GetTexturePath(string textureName)
|
|
{
|
|
return SDL2.SDL.SDL_GetBasePath() + "Content/Textures/" + textureName;
|
|
}
|
|
|
|
public static string GetVideoPath(string videoName)
|
|
{
|
|
return SDL2.SDL.SDL_GetBasePath() + "Content/Videos/" + videoName;
|
|
}
|
|
|
|
public enum ButtonType
|
|
{
|
|
Left, // A/left arrow on keyboard, left face button on gamepad
|
|
Bottom, // S/down arrow on keyboard, bottom face button on gamepad
|
|
Right // D/right arrow on keyboard, right face button on gamepad
|
|
}
|
|
|
|
public static bool CheckButtonPressed(Input.Inputs inputs, ButtonType buttonType)
|
|
{
|
|
bool pressed = false;
|
|
|
|
if (buttonType == ButtonType.Left)
|
|
{
|
|
pressed = (
|
|
(inputs.GamepadExists(0) && inputs.GetGamepad(0).DpadLeft.IsPressed) ||
|
|
inputs.Keyboard.IsPressed(Input.KeyCode.Left)
|
|
);
|
|
}
|
|
else if (buttonType == ButtonType.Bottom)
|
|
{
|
|
pressed = (
|
|
(inputs.GamepadExists(0) && inputs.GetGamepad(0).DpadDown.IsPressed) ||
|
|
inputs.Keyboard.IsPressed(Input.KeyCode.Down)
|
|
);
|
|
}
|
|
else if (buttonType == ButtonType.Right)
|
|
{
|
|
pressed = (
|
|
(inputs.GamepadExists(0) && inputs.GetGamepad(0).DpadRight.IsPressed) ||
|
|
inputs.Keyboard.IsPressed(Input.KeyCode.Right)
|
|
);
|
|
}
|
|
|
|
return pressed;
|
|
}
|
|
|
|
public static bool CheckButtonDown(Input.Inputs inputs, ButtonType buttonType)
|
|
{
|
|
bool down = false;
|
|
|
|
if (buttonType == ButtonType.Left)
|
|
{
|
|
down = (
|
|
(inputs.GamepadExists(0) && inputs.GetGamepad(0).DpadLeft.IsDown) ||
|
|
inputs.Keyboard.IsDown(Input.KeyCode.A) ||
|
|
inputs.Keyboard.IsDown(Input.KeyCode.Left)
|
|
);
|
|
}
|
|
else if (buttonType == ButtonType.Bottom)
|
|
{
|
|
down = (
|
|
(inputs.GamepadExists(0) && inputs.GetGamepad(0).DpadDown.IsDown) ||
|
|
inputs.Keyboard.IsDown(Input.KeyCode.S) ||
|
|
inputs.Keyboard.IsDown(Input.KeyCode.Down)
|
|
);
|
|
}
|
|
else if (buttonType == ButtonType.Right)
|
|
{
|
|
down = (
|
|
(inputs.GamepadExists(0) && inputs.GetGamepad(0).DpadRight.IsDown) ||
|
|
inputs.Keyboard.IsDown(Input.KeyCode.D) ||
|
|
inputs.Keyboard.IsDown(Input.KeyCode.Right)
|
|
);
|
|
}
|
|
|
|
return down;
|
|
}
|
|
}
|