(ded4a3e0a) v0.9.0.7

This commit is contained in:
Joonas Rikkonen
2019-06-25 16:00:44 +03:00
parent e5ae622c77
commit 4a51db77b5
1777 changed files with 421528 additions and 917 deletions
@@ -0,0 +1,427 @@
#region License
/*
Microsoft Public License (Ms-PL)
MonoGame - Copyright © 2009 The MonoGame Team
All rights reserved.
This license governs use of the accompanying software. If you use the software, you accept this license. If you do not
accept the license, do not use the software.
1. Definitions
The terms "reproduce," "reproduction," "derivative works," and "distribution" have the same meaning here as under
U.S. copyright law.
A "contribution" is the original software, or any additions or changes to the software.
A "contributor" is any person that distributes its contribution under this license.
"Licensed patents" are a contributor's patent claims that read directly on its contribution.
2. Grant of Rights
(A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations in section 3,
each contributor grants you a non-exclusive, worldwide, royalty-free copyright license to reproduce its contribution, prepare derivative works of its contribution, and distribute its contribution or any derivative works that you create.
(B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in section 3,
each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its contribution in the software or derivative works of the contribution in the software.
3. Conditions and Limitations
(A) No Trademark License- This license does not grant you rights to use any contributors' name, logo, or trademarks.
(B) If you bring a patent claim against any contributor over patents that you claim are infringed by the software,
your patent license from such contributor to the software ends automatically.
(C) If you distribute any portion of the software, you must retain all copyright, patent, trademark, and attribution
notices that are present in the software.
(D) If you distribute any portion of the software in source code form, you may do so only under this license by including
a complete copy of this license with your distribution. If you distribute any portion of the software in compiled or object
code form, you may only do so under a license that complies with this license.
(E) The software is licensed "as-is." You bear the risk of using it. The contributors give no express warranties, guarantees
or conditions. You may have additional consumer rights under your local laws which this license cannot change. To the extent
permitted under your local laws, the contributors exclude the implied warranties of merchantability, fitness for a particular
purpose and non-infringement.
*/
#endregion License
#region Using clause
using MGXna_Framework = global::Microsoft.Xna.Framework;
using System;
using System.Collections.Generic;
#if WINDOWS_UAP
using System.Threading.Tasks;
using Windows.ApplicationModel;
using Windows.ApplicationModel.Store;
using Windows.UI.Core;
using Windows.UI.Popups;
using Windows.System;
using Microsoft.Xna.Framework.Input;
#else
using System.Runtime.Remoting.Messaging;
#if !(WINDOWS && DIRECTX)
using Microsoft.Xna.Framework.Net;
#endif
#endif
#endregion Using clause
namespace Microsoft.Xna.Framework.GamerServices
{
public static class Guide
{
private static bool isScreenSaverEnabled;
private static bool isTrialMode = false;
private static bool isVisible;
private static bool simulateTrialMode;
#if WINDOWS_UAP
private static readonly CoreDispatcher _dispatcher;
#endif
static Guide()
{
#if WINDOWS_UAP
_dispatcher = Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher;
var licenseInformation = CurrentApp.LicenseInformation;
licenseInformation.LicenseChanged += () => isTrialMode = !licenseInformation.IsActive || licenseInformation.IsTrial;
isTrialMode = !licenseInformation.IsActive || licenseInformation.IsTrial;
#endif
}
delegate string ShowKeyboardInputDelegate(
MGXna_Framework.PlayerIndex player,
string title,
string description,
string defaultText,
bool usePasswordMode);
private static string ShowKeyboardInput(
MGXna_Framework.PlayerIndex player,
string title,
string description,
string defaultText,
bool usePasswordMode)
{
throw new NotImplementedException();
}
public static IAsyncResult BeginShowKeyboardInput (
MGXna_Framework.PlayerIndex player,
string title,
string description,
string defaultText,
AsyncCallback callback,
Object state)
{
return BeginShowKeyboardInput(player, title, description, defaultText, callback, state, false );
}
public static IAsyncResult BeginShowKeyboardInput (
MGXna_Framework.PlayerIndex player,
string title,
string description,
string defaultText,
AsyncCallback callback,
Object state,
bool usePasswordMode)
{
#if !WINDOWS_UAP
ShowKeyboardInputDelegate ski = ShowKeyboardInput;
return ski.BeginInvoke(player, title, description, defaultText, usePasswordMode, callback, ski);
#else
throw new NotImplementedException();
#endif
}
public static string EndShowKeyboardInput (IAsyncResult result)
{
#if !WINDOWS_UAP
ShowKeyboardInputDelegate ski = (ShowKeyboardInputDelegate)result.AsyncState;
return ski.EndInvoke(result);
#else
throw new NotImplementedException();
#endif
}
delegate Nullable<int> ShowMessageBoxDelegate(string title,
string text,
IEnumerable<string> buttons,
int focusButton,
MessageBoxIcon icon);
private static Nullable<int> ShowMessageBox(string title,
string text,
IEnumerable<string> buttons,
int focusButton,
MessageBoxIcon icon)
{
int? result = null;
IsVisible = true;
#if WINDOWS_UAP
MessageDialog dialog = new MessageDialog(text, title);
foreach (string button in buttons)
dialog.Commands.Add(new UICommand(button, null, dialog.Commands.Count));
if (focusButton < 0 || focusButton >= dialog.Commands.Count)
throw new ArgumentOutOfRangeException("focusButton", "Specified argument was out of the range of valid values.");
dialog.DefaultCommandIndex = (uint)focusButton;
// The message box must be popped up on the UI thread.
Task<IUICommand> dialogResult = null;
_dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
dialogResult = dialog.ShowAsync().AsTask();
}).AsTask().Wait();
dialogResult.Wait();
result = (int)dialogResult.Result.Id;
#endif
IsVisible = false;
return result;
}
public static IAsyncResult BeginShowMessageBox(
MGXna_Framework.PlayerIndex player,
string title,
string text,
IEnumerable<string> buttons,
int focusButton,
MessageBoxIcon icon,
AsyncCallback callback,
Object state
)
{
#if !WINDOWS_UAP
// TODO: GuideAlreadyVisibleException
if (IsVisible)
throw new Exception("The function cannot be completed at this time: the Guide UI is already active. Wait until Guide.IsVisible is false before issuing this call.");
if (player != PlayerIndex.One)
throw new ArgumentOutOfRangeException("player", "Specified argument was out of the range of valid values.");
if (title == null)
throw new ArgumentNullException("title", "This string cannot be null or empty, and must be less than 256 characters long.");
if (text == null)
throw new ArgumentNullException("text", "This string cannot be null or empty, and must be less than 256 characters long.");
if (buttons == null)
throw new ArgumentNullException("buttons", "Value can not be null.");
ShowMessageBoxDelegate smb = ShowMessageBox;
return smb.BeginInvoke(title, text, buttons, focusButton, icon, callback, smb);
#else
var tcs = new TaskCompletionSource<int?>(state);
var task = Task.Run<int?>(() => ShowMessageBox(title, text, buttons, focusButton, icon));
task.ContinueWith(t =>
{
// Copy the task result into the returned task.
if (t.IsFaulted)
tcs.TrySetException(t.Exception.InnerExceptions);
else if (t.IsCanceled)
tcs.TrySetCanceled();
else
tcs.TrySetResult(t.Result);
// Invoke the user callback if necessary.
if (callback != null)
callback(tcs.Task);
});
return tcs.Task;
#endif
}
public static IAsyncResult BeginShowMessageBox(
string title,
string text,
IEnumerable<string> buttons,
int focusButton,
MessageBoxIcon icon,
AsyncCallback callback,
Object state
)
{
return BeginShowMessageBox(MGXna_Framework.PlayerIndex.One, title, text, buttons, focusButton, icon, callback, state);
}
public static Nullable<int> EndShowMessageBox(IAsyncResult result)
{
#if WINDOWS_UAP
var x = (Task<int?>)result;
return x.Result;
#else
return ((ShowMessageBoxDelegate)result.AsyncState).EndInvoke(result);
#endif
}
public static void ShowMarketplace(MGXna_Framework.PlayerIndex player)
{
}
public static void Show ()
{
ShowSignIn(1, false);
}
public static void ShowSignIn (int paneCount, bool onlineOnly)
{
if ( paneCount != 1 && paneCount != 2 && paneCount != 4)
{
new ArgumentException("paneCount Can only be 1, 2 or 4 on Windows");
return;
}
#if !WINDOWS_UAP && !(WINDOWS && DIRECTX)
Microsoft.Xna.Framework.GamerServices.MonoGameGamerServicesHelper.ShowSigninSheet();
if (GamerServicesComponent.LocalNetworkGamer == null)
{
GamerServicesComponent.LocalNetworkGamer = new LocalNetworkGamer();
}
else
{
GamerServicesComponent.LocalNetworkGamer.SignedInGamer.BeginAuthentication(null, null);
}
#endif
}
public static void ShowLeaderboard()
{
//if ( ( Gamer.SignedInGamers.Count > 0 ) && ( Gamer.SignedInGamers[0].IsSignedInToLive ) )
//{
// // Lazy load it
// if ( leaderboardController == null )
// {
// leaderboardController = new GKLeaderboardViewController();
// }
// if (leaderboardController != null)
// {
// leaderboardController.DidFinish += delegate(object sender, EventArgs e)
// {
// leaderboardController.DismissModalViewControllerAnimated(true);
// isVisible = false;
// };
// if (Window !=null)
// {
// if(viewController == null)
// {
// viewController = new UIViewController();
// Window.Add(viewController.View);
// viewController.View.Hidden = true;
// }
// viewController.PresentModalViewController(leaderboardController, true);
// isVisible = true;
// }
// }
//}
}
public static void ShowAchievements()
{
//if ( ( Gamer.SignedInGamers.Count > 0 ) && ( Gamer.SignedInGamers[0].IsSignedInToLive ) )
//{
// // Lazy load it
// if ( achievementController == null )
// {
// achievementController = new GKAchievementViewController();
// }
// if (achievementController != null)
// {
// achievementController.DidFinish += delegate(object sender, EventArgs e)
// {
// leaderboardController.DismissModalViewControllerAnimated(true);
// isVisible = false;
// };
// if (Window !=null)
// {
// if(viewController == null)
// {
// viewController = new UIViewController();
// Window.Add(viewController.View);
// viewController.View.Hidden = true;
// }
// viewController.PresentModalViewController(achievementController, true);
// isVisible = true;
// }
// }
//}
}
#region Properties
public static bool IsScreenSaverEnabled
{
get
{
return isScreenSaverEnabled;
}
set
{
isScreenSaverEnabled = value;
}
}
public static bool IsTrialMode
{
get
{
// If simulate trial mode is enabled then
// we're in the trial mode.
#if DEBUG
return simulateTrialMode || isTrialMode;
#else
return simulateTrialMode || isTrialMode;
#endif
}
}
public static bool IsVisible
{
get
{
return isVisible;
}
set
{
isVisible = value;
}
}
public static bool SimulateTrialMode
{
get
{
return simulateTrialMode;
}
set
{
simulateTrialMode = value;
}
}
public static MGXna_Framework.GameWindow Window
{
get;
set;
}
#endregion
internal static void Initialise(MGXna_Framework.Game game)
{
#if !DIRECTX
MonoGameGamerServicesHelper.Initialise(game);
#endif
}
}
}
@@ -0,0 +1,151 @@
using System;
using Microsoft.Xna.Framework.Graphics;
namespace Microsoft.Xna.Framework.GamerServices
{
internal class MonoGameGamerServicesHelper
{
private static MonoLiveGuide guide = null;
public static void ShowSigninSheet()
{
guide.Enabled = true;
guide.Visible = true;
Guide.IsVisible = true;
}
internal static void Initialise(Game game)
{
if (guide == null)
{
guide = new MonoLiveGuide(game);
game.Components.Add(guide);
}
}}
internal class MonoLiveGuide : DrawableGameComponent
{
SpriteBatch spriteBatch;
Texture2D signInProgress;
Color alphaColor = new Color(128, 128, 128, 0);
byte startalpha = 0;
public MonoLiveGuide(Game game)
: base(game)
{
this.Enabled = false;
this.Visible = false;
//Guide.IsVisible = false;
this.DrawOrder = Int32.MaxValue;
}
public override void Initialize()
{
base.Initialize();
}
Texture2D Circle(GraphicsDevice graphics, int radius)
{
int aDiameter = radius * 2;
Vector2 aCenter = new Vector2(radius, radius);
Texture2D aCircle = new Texture2D(graphics, aDiameter, aDiameter, false, SurfaceFormat.Color);
Color[] aColors = new Color[aDiameter * aDiameter];
for (int i = 0; i < aColors.Length; i++)
{
int x = (i + 1) % aDiameter;
int y = (i + 1) / aDiameter;
Vector2 aDistance = new Vector2(Math.Abs(aCenter.X - x), Math.Abs(aCenter.Y - y));
if (Math.Sqrt((aDistance.X * aDistance.X) + (aDistance.Y * aDistance.Y)) > radius)
{
aColors[i] = Color.Transparent;
}
else
{
aColors[i] = Color.White;
}
}
aCircle.SetData<Color>(aColors);
return aCircle;
}
protected override void LoadContent()
{
spriteBatch = new SpriteBatch(this.Game.GraphicsDevice);
signInProgress = Circle(this.Game.GraphicsDevice, 10);
base.LoadContent();
}
protected override void UnloadContent()
{
base.UnloadContent();
}
public override void Draw(GameTime gameTime)
{
spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend);
Vector2 center = new Vector2(this.Game.GraphicsDevice.PresentationParameters.BackBufferWidth / 2, this.Game.GraphicsDevice.PresentationParameters.BackBufferHeight - 100);
Vector2 loc = Vector2.Zero;
alphaColor.A = startalpha;
for (int i = 0; i < 12; i++)
{
float angle = (float)(i / 12.0 * Math.PI * 2);
loc = new Vector2(center.X + (float)Math.Cos(angle) * 50, center.Y + (float)Math.Sin(angle) * 50);
spriteBatch.Draw(signInProgress, loc, alphaColor);
alphaColor.A += 255 / 12;
if (alphaColor.A > 255) alphaColor.A = 0;
}
spriteBatch.End();
base.Draw(gameTime);
}
TimeSpan gt = TimeSpan.Zero;
TimeSpan last = TimeSpan.Zero;
public override void Update(GameTime gameTime)
{
if (gt == TimeSpan.Zero) gt = last = gameTime.TotalGameTime;
if ((gameTime.TotalGameTime - last).Milliseconds > 100)
{
last = gameTime.TotalGameTime;
startalpha += 255 / 12;
}
if ((gameTime.TotalGameTime - gt).TotalSeconds > 5) // close after 10 seconds
{
string strUsr = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
if (strUsr.Contains(@"\"))
{
int idx = strUsr.IndexOf(@"\") + 1;
strUsr = strUsr.Substring(idx, strUsr.Length - idx);
}
SignedInGamer sig = new SignedInGamer();
sig.DisplayName = strUsr;
sig.Gamertag = strUsr;
Gamer.SignedInGamers.Add(sig);
this.Visible = false;
this.Enabled = false;
//Guide.IsVisible = false;
gt = TimeSpan.Zero;
}
base.Update(gameTime);
}
}
}
@@ -0,0 +1,327 @@
#region License
/*
Microsoft Public License (Ms-PL)
MonoGame - Copyright © 2009 The MonoGame Team
All rights reserved.
This license governs use of the accompanying software. If you use the software, you accept this license. If you do not
accept the license, do not use the software.
1. Definitions
The terms "reproduce," "reproduction," "derivative works," and "distribution" have the same meaning here as under
U.S. copyright law.
A "contribution" is the original software, or any additions or changes to the software.
A "contributor" is any person that distributes its contribution under this license.
"Licensed patents" are a contributor's patent claims that read directly on its contribution.
2. Grant of Rights
(A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations in section 3,
each contributor grants you a non-exclusive, worldwide, royalty-free copyright license to reproduce its contribution, prepare derivative works of its contribution, and distribute its contribution or any derivative works that you create.
(B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in section 3,
each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its contribution in the software or derivative works of the contribution in the software.
3. Conditions and Limitations
(A) No Trademark License- This license does not grant you rights to use any contributors' name, logo, or trademarks.
(B) If you bring a patent claim against any contributor over patents that you claim are infringed by the software,
your patent license from such contributor to the software ends automatically.
(C) If you distribute any portion of the software, you must retain all copyright, patent, trademark, and attribution
notices that are present in the software.
(D) If you distribute any portion of the software in source code form, you may do so only under this license by including
a complete copy of this license with your distribution. If you distribute any portion of the software in compiled or object
code form, you may only do so under a license that complies with this license.
(E) The software is licensed "as-is." You bear the risk of using it. The contributors give no express warranties, guarantees
or conditions. You may have additional consumer rights under your local laws which this license cannot change. To the extent
permitted under your local laws, the contributors exclude the implied warranties of merchantability, fitness for a particular
purpose and non-infringement.
*/
#endregion License
#region Statement
using System;
#endregion Statement
namespace Microsoft.Xna.Framework.GamerServices
{
public class SignedInGamer : Gamer
{
private AchievementCollection gamerAchievements;
private FriendCollection friendCollection;
delegate void AuthenticationDelegate();
public IAsyncResult BeginAuthentication(AsyncCallback callback, Object asyncState)
{
// Go off authenticate
AuthenticationDelegate ad = DoAuthentication;
return ad.BeginInvoke(callback, ad);
}
public void EndAuthentication( IAsyncResult result )
{
AuthenticationDelegate ad = (AuthenticationDelegate)result.AsyncState;
ad.EndInvoke(result);
}
private void DoAuthentication()
{
}
public SignedInGamer()
{
var result = BeginAuthentication(null, null);
EndAuthentication( result );
}
private void AuthenticationCompletedCallback( IAsyncResult result )
{
EndAuthentication(result);
}
#region Methods
public FriendCollection GetFriends()
{
if(IsSignedInToLive)
{
if ( friendCollection == null )
{
friendCollection = new FriendCollection();
}
}
return friendCollection;
}
public bool IsFriend (Gamer gamer)
{
if ( gamer == null )
throw new ArgumentNullException();
if ( gamer.IsDisposed )
throw new ObjectDisposedException(gamer.ToString());
bool found = false;
foreach(FriendGamer f in friendCollection)
{
if ( f.Gamertag == gamer.Gamertag )
{
found = true;
}
}
return found;
}
delegate AchievementCollection GetAchievementsDelegate();
public IAsyncResult BeginGetAchievements( AsyncCallback callback, Object asyncState)
{
// Go off and grab achievements
GetAchievementsDelegate gad = GetAchievements;
return gad.BeginInvoke(callback, gad);
}
private void GetAchievementCompletedCallback( IAsyncResult result )
{
// get the delegate that was used to call that method
GetAchievementsDelegate gad = (GetAchievementsDelegate)result.AsyncState;
// get the return value from that method call
gamerAchievements = gad.EndInvoke(result);
}
public AchievementCollection EndGetAchievements( IAsyncResult result )
{
GetAchievementsDelegate gad = (GetAchievementsDelegate)result.AsyncState;
gamerAchievements = gad.EndInvoke(result);
return gamerAchievements;
}
public AchievementCollection GetAchievements()
{
if ( IsSignedInToLive )
{
if (gamerAchievements == null)
{
gamerAchievements = new AchievementCollection();
}
}
return gamerAchievements;
}
delegate void AwardAchievementDelegate(string achievementId, double percentageComplete);
public IAsyncResult BeginAwardAchievement(string achievementId, AsyncCallback callback, Object state)
{
return BeginAwardAchievement(achievementId, 100.0, callback, state);
}
public IAsyncResult BeginAwardAchievement(
string achievementId,
double percentageComplete,
AsyncCallback callback,
Object state
)
{
// Go off and award the achievement
AwardAchievementDelegate aad = DoAwardAchievement;
return aad.BeginInvoke(achievementId, percentageComplete, callback, aad);
}
public void EndAwardAchievement(IAsyncResult result)
{
AwardAchievementDelegate aad = (AwardAchievementDelegate)result.AsyncState;
aad.EndInvoke(result);
}
private void AwardAchievementCompletedCallback( IAsyncResult result )
{
EndAwardAchievement(result);
}
public void AwardAchievement( string achievementId )
{
AwardAchievement(achievementId, 100.0f);
}
public void DoAwardAchievement( string achievementId, double percentageComplete )
{
}
public void AwardAchievement( string achievementId, double percentageComplete )
{
if (IsSignedInToLive)
{
BeginAwardAchievement( achievementId, percentageComplete, AwardAchievementCompletedCallback, null );
}
}
public void UpdateScore( string aCategory, long aScore )
{
if (IsSignedInToLive)
{
}
}
public void ResetAchievements()
{
if (IsSignedInToLive)
{
}
}
#endregion
#region Properties
public GameDefaults GameDefaults
{
get
{
throw new NotSupportedException();
}
}
public bool IsGuest
{
get
{
throw new NotSupportedException();
}
}
public bool IsSignedInToLive
{
get
{
return false;
}
}
public int PartySize
{
get
{
throw new NotSupportedException();
}
set
{
throw new NotSupportedException();
}
}
public PlayerIndex PlayerIndex
{
get
{
return PlayerIndex.One;
}
}
public GamerPresence Presence
{
get
{
throw new NotSupportedException();
}
}
GamerPrivileges _privileges = new GamerPrivileges();
public GamerPrivileges Privileges
{
get
{
return _privileges;
}
}
#endregion
protected virtual void OnSignedIn(SignedInEventArgs e)
{
EventHelpers.Raise(this, SignedIn, e);
}
protected virtual void OnSignedOut(SignedOutEventArgs e)
{
EventHelpers.Raise(this, SignedOut, e);
}
#region Events
public static event EventHandler<SignedInEventArgs> SignedIn;
public static event EventHandler<SignedOutEventArgs> SignedOut;
#endregion
}
public class SignedInEventArgs : EventArgs
{
public SignedInEventArgs ( SignedInGamer gamer )
{
}
}
public class SignedOutEventArgs : EventArgs
{
public SignedOutEventArgs (SignedInGamer gamer )
{
}
}
}
@@ -0,0 +1,14 @@
using System;
namespace Microsoft.Xna.Framework.Windows
{
internal class HorizontalMouseWheelEventArgs : EventArgs
{
internal int Delta { get; private set; }
internal HorizontalMouseWheelEventArgs(int delta)
{
Delta = delta;
}
}
}
@@ -0,0 +1,184 @@
// MonoGame - Copyright (C) The MonoGame Team
// This file is subject to the terms and conditions defined in
// file 'LICENSE.txt', which is part of this source code package.
namespace Microsoft.Xna.Framework
{
using System;
using Graphics;
using SharpDX.Mathematics.Interop;
static internal class SharpDXHelper
{
static public SharpDX.DXGI.SwapEffect ToSwapEffect(PresentInterval presentInterval)
{
SharpDX.DXGI.SwapEffect effect;
switch (presentInterval)
{
case PresentInterval.One:
case PresentInterval.Two:
default:
#if WINDOWS_UAP
effect = SharpDX.DXGI.SwapEffect.FlipSequential;
#else
effect = SharpDX.DXGI.SwapEffect.Discard;
#endif
break;
case PresentInterval.Immediate:
effect = SharpDX.DXGI.SwapEffect.Sequential;
break;
}
//if (present.RenderTargetUsage != RenderTargetUsage.PreserveContents && present.MultiSampleCount == 0)
//effect = SharpDX.DXGI.SwapEffect.Discard;
return effect;
}
static public SharpDX.DXGI.Format ToFormat(DepthFormat format)
{
switch (format)
{
default:
case DepthFormat.None:
return SharpDX.DXGI.Format.Unknown;
case DepthFormat.Depth16:
return SharpDX.DXGI.Format.D16_UNorm;
case DepthFormat.Depth24:
case DepthFormat.Depth24Stencil8:
return SharpDX.DXGI.Format.D24_UNorm_S8_UInt;
}
}
static public SharpDX.DXGI.Format ToFormat(SurfaceFormat format)
{
switch (format)
{
case SurfaceFormat.Color:
default:
return SharpDX.DXGI.Format.R8G8B8A8_UNorm;
case SurfaceFormat.Bgr565:
return SharpDX.DXGI.Format.B5G6R5_UNorm;
case SurfaceFormat.Bgra5551:
return SharpDX.DXGI.Format.B5G5R5A1_UNorm;
case SurfaceFormat.Bgra4444:
#if WINDOWS_UAP
return SharpDX.DXGI.Format.B4G4R4A4_UNorm;
#else
return (SharpDX.DXGI.Format)115;
#endif
case SurfaceFormat.Dxt1:
return SharpDX.DXGI.Format.BC1_UNorm;
case SurfaceFormat.Dxt3:
return SharpDX.DXGI.Format.BC2_UNorm;
case SurfaceFormat.Dxt5:
return SharpDX.DXGI.Format.BC3_UNorm;
case SurfaceFormat.NormalizedByte2:
return SharpDX.DXGI.Format.R8G8_SNorm;
case SurfaceFormat.NormalizedByte4:
return SharpDX.DXGI.Format.R8G8B8A8_SNorm;
case SurfaceFormat.Rgba1010102:
return SharpDX.DXGI.Format.R10G10B10A2_UNorm;
case SurfaceFormat.Rg32:
return SharpDX.DXGI.Format.R16G16_UNorm;
case SurfaceFormat.Rgba64:
return SharpDX.DXGI.Format.R16G16B16A16_UNorm;
case SurfaceFormat.Alpha8:
return SharpDX.DXGI.Format.A8_UNorm;
case SurfaceFormat.Single:
return SharpDX.DXGI.Format.R32_Float;
case SurfaceFormat.HalfSingle:
return SharpDX.DXGI.Format.R16_Float;
case SurfaceFormat.HalfVector2:
return SharpDX.DXGI.Format.R16G16_Float;
case SurfaceFormat.Vector2:
return SharpDX.DXGI.Format.R32G32_Float;
case SurfaceFormat.Vector4:
return SharpDX.DXGI.Format.R32G32B32A32_Float;
case SurfaceFormat.HalfVector4:
return SharpDX.DXGI.Format.R16G16B16A16_Float;
case SurfaceFormat.HdrBlendable:
// TODO: This needs to check the graphics device and
// return the best hdr blendable format for the device.
return SharpDX.DXGI.Format.R16G16B16A16_Float;
case SurfaceFormat.Bgr32:
return SharpDX.DXGI.Format.B8G8R8X8_UNorm;
case SurfaceFormat.Bgra32:
return SharpDX.DXGI.Format.B8G8R8A8_UNorm;
case SurfaceFormat.ColorSRgb:
return SharpDX.DXGI.Format.R8G8B8A8_UNorm_SRgb;
case SurfaceFormat.Bgr32SRgb:
return SharpDX.DXGI.Format.B8G8R8X8_UNorm_SRgb;
case SurfaceFormat.Bgra32SRgb:
return SharpDX.DXGI.Format.B8G8R8A8_UNorm_SRgb;
case SurfaceFormat.Dxt1SRgb:
return SharpDX.DXGI.Format.BC1_UNorm_SRgb;
case SurfaceFormat.Dxt3SRgb:
return SharpDX.DXGI.Format.BC2_UNorm_SRgb;
case SurfaceFormat.Dxt5SRgb:
return SharpDX.DXGI.Format.BC3_UNorm_SRgb;
}
}
static public RawVector2 ToVector2(this Vector2 vec)
{
return new RawVector2(vec.X, vec.Y);
}
static public RawVector3 ToVector3(this Vector3 vec)
{
return new RawVector3(vec.X, vec.Y, vec.Z);
}
static public RawVector4 ToVector4(this Vector4 vec)
{
return new RawVector4(vec.X, vec.Y, vec.Z, vec.W);
}
static public RawColor4 ToColor4(this Color color)
{
return new RawColor4(color.R / 255.0f, color.G / 255.0f, color.B / 255.0f, color.A / 255.0f);
}
static public SharpDX.Direct3D11.Comparison ToComparison(this CompareFunction compare)
{
switch (compare)
{
case CompareFunction.Always:
return SharpDX.Direct3D11.Comparison.Always;
case CompareFunction.Equal:
return SharpDX.Direct3D11.Comparison.Equal;
case CompareFunction.Greater:
return SharpDX.Direct3D11.Comparison.Greater;
case CompareFunction.GreaterEqual:
return SharpDX.Direct3D11.Comparison.GreaterEqual;
case CompareFunction.Less:
return SharpDX.Direct3D11.Comparison.Less;
case CompareFunction.LessEqual:
return SharpDX.Direct3D11.Comparison.LessEqual;
case CompareFunction.Never:
return SharpDX.Direct3D11.Comparison.Never;
case CompareFunction.NotEqual:
return SharpDX.Direct3D11.Comparison.NotEqual;
default:
throw new ArgumentException("Invalid comparison!");
}
}
}
}