Browse Source

Audio3D Changes, minus Content.

CartBlanche 1 tháng trước cách đây
mục cha
commit
109521d3dd
62 tập tin đã thay đổi với 1060 bổ sung1525 xóa
  1. 0 63
      Aiming/Aiming.PSMobile.csproj
  2. 0 16
      Aiming/Info.iOS.plist
  3. 27 0
      Audio3D/.vscode/launch.json
  4. 3 0
      Audio3D/.vscode/settings.json
  5. 33 0
      Audio3D/.vscode/tasks.json
  6. 0 107
      Audio3D/Audio3D.MacOS.csproj
  7. 44 0
      Audio3D/Audio3D.sln
  8. BIN
      Audio3D/Content/CatSound0.xnb
  9. BIN
      Audio3D/Content/CatSound1.xnb
  10. BIN
      Audio3D/Content/CatSound2.xnb
  11. BIN
      Audio3D/Content/CatTexture.xnb
  12. BIN
      Audio3D/Content/DogSound.xnb
  13. BIN
      Audio3D/Content/DogTexture.xnb
  14. BIN
      Audio3D/Content/checker.xnb
  15. 14 0
      Audio3D/Core/Audio3D.Core.csproj
  16. 189 195
      Audio3D/Core/AudioManager.cs
  17. 68 74
      Audio3D/Core/Cat.cs
  18. 65 71
      Audio3D/Core/Dog.cs
  19. 192 204
      Audio3D/Core/Game.cs
  20. 23 27
      Audio3D/Core/IAudioEmitter.cs
  21. 73 79
      Audio3D/Core/QuadDrawer.cs
  22. 103 109
      Audio3D/Core/SpriteEntity.cs
  23. 0 16
      Audio3D/Info.plist
  24. 0 45
      Audio3D/Main.cs
  25. 18 0
      Audio3D/Platforms/Android/AndroidManifest.xml
  26. 21 0
      Audio3D/Platforms/Android/Audio3D.Android.csproj
  27. 19 0
      Audio3D/Platforms/Android/MainActivity.cs
  28. 21 0
      Audio3D/Platforms/DesktopGL/Audio3D.DesktopGL.csproj
  29. 14 0
      Audio3D/Platforms/DesktopGL/Program.cs
  30. 22 0
      Audio3D/Platforms/Windows/Audio3D.Windows.csproj
  31. 14 0
      Audio3D/Platforms/Windows/Program.cs
  32. 21 0
      Audio3D/Platforms/iOS/Audio3D.iOS.csproj
  33. 27 0
      Audio3D/Platforms/iOS/Info.plist
  34. 12 0
      Audio3D/Platforms/iOS/Program.cs
  35. 0 36
      Audio3D/Properties/AssemblyInfo.cs
  36. 37 0
      Audio3D/README.md
  37. 0 14
      BatteryStatus/Info.iOS.plist
  38. 0 25
      BouncingBox/Info.iOS.plist
  39. 0 19
      CatapaultWars/Info.iOS.plist
  40. 0 21
      CatapultNetWars/Info.iOS.plist
  41. 0 21
      ChaseAndEvade/Info.iOS.plist
  42. 0 29
      Draw2D/Info.iOS.plist
  43. 0 25
      GameComponents/Info.iOS.plist
  44. 0 25
      GameStateManagement/Info.iOS.plist
  45. 0 19
      Input/Info.iOS.plist
  46. 0 25
      MultiTouch/Info.iOS.plist
  47. 0 19
      Orientation/Info.iOS.plist
  48. 0 16
      ParticleSample/Info.iOS.plist
  49. 0 13
      Peer2PeerSample/Info.iOS.plist
  50. 0 15
      PerPixelCollisionSample/Info.iOS.plist
  51. 0 12
      Primitives/Info.iOS.plist
  52. 0 15
      RectangleCollisionSample/Info.iOS.plist
  53. 0 21
      RenderTarget2DSample/Info.iOS.plist
  54. 0 25
      RockRain/Info.iOS.plist
  55. 0 14
      SpriteFont/Info.iOS.plist
  56. 0 5
      TiledSprites/Info.iOS.plist
  57. 0 16
      TouchGesture/Info.iOS.plist
  58. 0 15
      TransformedCollisionSample/Info.iOS.plist
  59. 0 17
      VideoPlayer/Info.iOS.plist
  60. 0 25
      VirtualGamePad/Info.iOS.plist
  61. 0 16
      Waypoint/Info.iOS.plist
  62. 0 16
      XNAPacMan/Info.iOS.plist

+ 0 - 63
Aiming/Aiming.PSMobile.csproj

@@ -1,63 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>10.0.0</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{4465C957-DB01-4FE4-8ADE-A7A7CA2CD773}</ProjectGuid>
-    <ProjectTypeGuids>{69878862-DA7D-4DC6-B0A1-50D8FAB4242F};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
-    <OutputType>Exe</OutputType>
-    <RootNamespace>MonoGame.Samples.Aiming.PSSuite</RootNamespace>
-    <AssemblyName>MonoGame.Samples.Aiming.PSSuite</AssemblyName>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>bin\Debug</OutputPath>
-    <DefineConstants>DEBUG;</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <ConsolePause>false</ConsolePause>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>none</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>bin\Release</OutputPath>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <ConsolePause>false</ConsolePause>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="System" />
-    <Reference Include="System.Xml" />
-    <Reference Include="System.Core" />
-    <Reference Include="Sce.PlayStation.Core" />
-  </ItemGroup>
-  <Import Project="$(MSBuildExtensionsPath)\Sce\Sce.Psm.CSharp.targets" />
-  <ItemGroup>
-    <Compile Include="AimingGame.cs" />
-    <Compile Include="Main.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <Folder Include="Content\" />
-  </ItemGroup>
-  <ItemGroup>
-    <Content Include="..\CompiledContent\Android\Content\Textures\cat.xnb">
-      <Link>Content\cat.xnb</Link>
-    </Content>
-    <Content Include="..\CompiledContent\Android\Content\Textures\spotlight.xnb">
-      <Link>Content\spotlight.xnb</Link>
-    </Content>
-  </ItemGroup>
-  <ItemGroup>
-    <PsmMetadata Include="app.xml" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\MonoGame.Framework\MonoGame.Framework.PSMobile.csproj">
-      <Project>{EA26E76F-FDFE-4A8C-B5A3-C3B5761E28F9}</Project>
-      <Name>MonoGame.Framework.PSMobile</Name>
-    </ProjectReference>
-  </ItemGroup>
-</Project>

+ 0 - 16
Aiming/Info.iOS.plist

@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>CFBundleDisplayName</key>
-	<string>Aiming</string>
-	<key>CFBundleIconFiles</key>
-	<array>
-		<string>GameThumbnail.png</string>
-	</array>
-	<key>CFBundleIdentifier</key>
-	<string>project.MonoGame.Aiming</string>
-	<key>MinimumOSVersion</key>
-	<string>3.1</string>
-</dict>
-</plist>

+ 27 - 0
Audio3D/.vscode/launch.json

@@ -0,0 +1,27 @@
+{
+    "version": "0.2.0",
+    "configurations": [
+        {
+            "name": "Run Windows",
+            "type": "coreclr",
+            "request": "launch",
+            "preLaunchTask": "build-windows",
+            "program": "${workspaceFolder}/Platforms/Windows/bin/Debug/net8.0-windows/Audio3D.Windows.exe",
+            "args": [],
+            "cwd": "${workspaceFolder}/Platforms/Windows",
+            "stopAtEntry": false,
+            "console": "internalConsole"
+        },
+        {
+            "name": "Run DesktopGL",
+            "type": "coreclr",
+            "request": "launch",
+            "preLaunchTask": "build-desktopgl",
+            "program": "${workspaceFolder}/Platforms/DesktopGL/bin/Debug/net8.0/Audio3D.DesktopGL.exe",
+            "args": [],
+            "cwd": "${workspaceFolder}/Platforms/DesktopGL",
+            "stopAtEntry": false,
+            "console": "internalConsole"
+        }
+    ]
+}

+ 3 - 0
Audio3D/.vscode/settings.json

@@ -0,0 +1,3 @@
+{
+    "dotnet.preferCSharpExtension": true
+}

+ 33 - 0
Audio3D/.vscode/tasks.json

@@ -0,0 +1,33 @@
+{
+    "version": "2.0.0",
+    "tasks": [
+        {
+            "label": "build-windows",
+            "type": "shell",
+            "command": "dotnet build Platforms/Windows/Audio3D.Windows.csproj",
+            "group": "build",
+            "problemMatcher": "$msCompile"
+        },
+        {
+            "label": "build-desktopgl",
+            "type": "shell",
+            "command": "dotnet build Platforms/DesktopGL/Audio3D.DesktopGL.csproj",
+            "group": "build",
+            "problemMatcher": "$msCompile"
+        },
+        {
+            "label": "run-windows",
+            "type": "shell",
+            "command": "dotnet run --project Platforms/Windows/Audio3D.Windows.csproj",
+            "group": "test",
+            "problemMatcher": "$msCompile"
+        },
+        {
+            "label": "run-desktopgl",
+            "type": "shell",
+            "command": "dotnet run --project Platforms/DesktopGL/Audio3D.DesktopGL.csproj",
+            "group": "test",
+            "problemMatcher": "$msCompile"
+        }
+    ]
+}

+ 0 - 107
Audio3D/Audio3D.MacOS.csproj

@@ -1,107 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>10.0.0</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{D5C989FD-6AE3-417F-BCB9-7AE30F195A31}</ProjectGuid>
-    <ProjectTypeGuids>{948B3504-5B70-4649-8FE4-BDE1FB46EC69};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
-    <OutputType>Exe</OutputType>
-    <RootNamespace>Audio3D</RootNamespace>
-    <AssemblyName>Audio3D</AssemblyName>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>True</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>False</Optimize>
-    <OutputPath>bin\Debug</OutputPath>
-    <DefineConstants>DEBUG;</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <EnablePackageSigning>False</EnablePackageSigning>
-    <IncludeMonoRuntime>False</IncludeMonoRuntime>
-    <ConsolePause>False</ConsolePause>
-    <EnableCodeSigning>False</EnableCodeSigning>
-    <CreatePackage>False</CreatePackage>
-    <CodeSigningKey>Mac Developer</CodeSigningKey>
-    <UseSGen>False</UseSGen>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>none</DebugType>
-    <Optimize>True</Optimize>
-    <OutputPath>bin\Release</OutputPath>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <EnablePackageSigning>False</EnablePackageSigning>
-    <IncludeMonoRuntime>False</IncludeMonoRuntime>
-    <LinkMode>Full</LinkMode>
-    <ConsolePause>False</ConsolePause>
-    <EnableCodeSigning>False</EnableCodeSigning>
-    <CreatePackage>False</CreatePackage>
-    <CodeSigningKey>Mac Developer</CodeSigningKey>
-    <UseSGen>False</UseSGen>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'AppStore|AnyCPU' ">
-    <DebugType>none</DebugType>
-    <Optimize>True</Optimize>
-    <OutputPath>bin\AppStore</OutputPath>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <PackageSigningKey>3rd Party Mac Developer Installer</PackageSigningKey>
-    <IncludeMonoRuntime>True</IncludeMonoRuntime>
-    <LinkMode>Full</LinkMode>
-    <EnablePackageSigning>True</EnablePackageSigning>
-    <ConsolePause>False</ConsolePause>
-    <EnableCodeSigning>True</EnableCodeSigning>
-    <CreatePackage>True</CreatePackage>
-    <CodeSigningKey>3rd Party Mac Developer Application</CodeSigningKey>
-    <UseSGen>False</UseSGen>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="System" />
-    <Reference Include="System.Xml" />
-    <Reference Include="System.Core" />
-    <Reference Include="System.Xml.Linq" />
-    <Reference Include="System.Drawing" />
-    <Reference Include="MonoMac" />
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="Main.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="AudioManager.cs" />
-    <Compile Include="Cat.cs" />
-    <Compile Include="Dog.cs" />
-    <Compile Include="Game.cs" />
-    <Compile Include="IAudioEmitter.cs" />
-    <Compile Include="QuadDrawer.cs" />
-    <Compile Include="SpriteEntity.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Info.plist" />
-  </ItemGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <Import Project="$(MSBuildExtensionsPath)\Mono\MonoMac\v0.0\Mono.MonoMac.targets" />
-  <ItemGroup>
-    <Folder Include="Content\" />
-  </ItemGroup>
-  <ItemGroup>
-    <Content Include="Content\CatSound0.xnb" />
-    <Content Include="Content\CatSound1.xnb" />
-    <Content Include="Content\CatSound2.xnb" />
-    <Content Include="Content\CatTexture.xnb" />
-    <Content Include="Content\DogSound.xnb" />
-    <Content Include="Content\DogTexture.xnb" />
-    <Content Include="Content\checker.xnb" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\ThirdParty\Lidgren.Network\Lidgren.Network.MacOS.csproj">
-      <Project>{AE483C29-042E-4226-BA52-D247CE7676DA}</Project>
-      <Name>Lidgren.Network.MacOS</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\MonoGame.Framework\MonoGame.Framework.MacOS.csproj">
-      <Project>{36C538E6-C32A-4A8D-A39C-566173D7118E}</Project>
-      <Name>MonoGame.Framework.MacOS</Name>
-    </ProjectReference>
-  </ItemGroup>
-</Project>

+ 44 - 0
Audio3D/Audio3D.sln

@@ -0,0 +1,44 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.0.31912.275
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Audio3D.Core", "Core\Audio3D.Core.csproj", "{A1A1A1A1-0000-0000-0000-000000000001}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Audio3D.Windows", "Platforms\Windows\Audio3D.Windows.csproj", "{A1A1A1A1-0000-0000-0000-000000000002}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Audio3D.DesktopGL", "Platforms\DesktopGL\Audio3D.DesktopGL.csproj", "{A1A1A1A1-0000-0000-0000-000000000003}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Audio3D.Android", "Platforms\Android\Audio3D.Android.csproj", "{A1A1A1A1-0000-0000-0000-000000000004}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Audio3D.iOS", "Platforms\iOS\Audio3D.iOS.csproj", "{A1A1A1A1-0000-0000-0000-000000000005}"
+EndProject
+Global
+    GlobalSection(SolutionConfigurationPlatforms) = preSolution
+        Debug|Any CPU = Debug|Any CPU
+        Release|Any CPU = Release|Any CPU
+    EndGlobalSection
+    GlobalSection(ProjectConfigurationPlatforms) = postSolution
+        {A1A1A1A1-0000-0000-0000-000000000001}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+        {A1A1A1A1-0000-0000-0000-000000000001}.Debug|Any CPU.Build.0 = Debug|Any CPU
+        {A1A1A1A1-0000-0000-0000-000000000001}.Release|Any CPU.ActiveCfg = Release|Any CPU
+        {A1A1A1A1-0000-0000-0000-000000000001}.Release|Any CPU.Build.0 = Release|Any CPU
+        {A1A1A1A1-0000-0000-0000-000000000002}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+        {A1A1A1A1-0000-0000-0000-000000000002}.Debug|Any CPU.Build.0 = Debug|Any CPU
+        {A1A1A1A1-0000-0000-0000-000000000002}.Release|Any CPU.ActiveCfg = Release|Any CPU
+        {A1A1A1A1-0000-0000-0000-000000000002}.Release|Any CPU.Build.0 = Release|Any CPU
+        {A1A1A1A1-0000-0000-0000-000000000003}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+        {A1A1A1A1-0000-0000-0000-000000000003}.Debug|Any CPU.Build.0 = Debug|Any CPU
+        {A1A1A1A1-0000-0000-0000-000000000003}.Release|Any CPU.ActiveCfg = Release|Any CPU
+        {A1A1A1A1-0000-0000-0000-000000000003}.Release|Any CPU.Build.0 = Release|Any CPU
+        {A1A1A1A1-0000-0000-0000-000000000004}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+        {A1A1A1A1-0000-0000-0000-000000000004}.Debug|Any CPU.Build.0 = Debug|Any CPU
+        {A1A1A1A1-0000-0000-0000-000000000004}.Release|Any CPU.ActiveCfg = Release|Any CPU
+        {A1A1A1A1-0000-0000-0000-000000000004}.Release|Any CPU.Build.0 = Release|Any CPU
+        {A1A1A1A1-0000-0000-0000-000000000005}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+        {A1A1A1A1-0000-0000-0000-000000000005}.Debug|Any CPU.Build.0 = Debug|Any CPU
+        {A1A1A1A1-0000-0000-0000-000000000005}.Release|Any CPU.ActiveCfg = Release|Any CPU
+        {A1A1A1A1-0000-0000-0000-000000000005}.Release|Any CPU.Build.0 = Release|Any CPU
+    EndGlobalSection
+EndGlobal
+

BIN
Audio3D/Content/CatSound0.xnb


BIN
Audio3D/Content/CatSound1.xnb


BIN
Audio3D/Content/CatSound2.xnb


BIN
Audio3D/Content/CatTexture.xnb


BIN
Audio3D/Content/DogSound.xnb


BIN
Audio3D/Content/DogTexture.xnb


BIN
Audio3D/Content/checker.xnb


+ 14 - 0
Audio3D/Core/Audio3D.Core.csproj

@@ -0,0 +1,14 @@
+<Project Sdk="Microsoft.NET.Sdk">
+  <PropertyGroup>
+    <TargetFramework>net8.0</TargetFramework>
+    <RootNamespace>Audio3D.Core</RootNamespace>
+    <AssemblyTitle>Audio3D Core</AssemblyTitle>
+    <Description>Shared game logic for Audio3D MonoGame sample.</Description>
+    <Authors>CartBlanche</Authors>
+    <Company>CartBlanche</Company>
+    <GenerateAssemblyInfo>true</GenerateAssemblyInfo>
+  </PropertyGroup>
+  <ItemGroup>
+    <PackageReference Include="MonoGame.Framework.DesktopGL" Version="3.8.*" />
+  </ItemGroup>
+</Project>

+ 189 - 195
Audio3D/AudioManager.cs → Audio3D/Core/AudioManager.cs

@@ -1,195 +1,189 @@
-#region File Description
-//-----------------------------------------------------------------------------
-// AudioManager.cs
-//
-// Microsoft XNA Community Game Platform
-// Copyright (C) Microsoft Corporation. All rights reserved.
-//-----------------------------------------------------------------------------
-#endregion
-
-#region Using Statements
-using System.Collections.Generic;
-using Microsoft.Xna.Framework;
-using Microsoft.Xna.Framework.Audio;
-#endregion
-
-namespace Audio3D
-{
-    /// <summary>
-    /// Audio manager keeps track of what 3D sounds are playing, updating
-    /// their settings as the camera and entities move around the world, and
-    /// automatically disposing sound effect instances after they finish playing.
-    /// </summary>
-    public class AudioManager : Microsoft.Xna.Framework.GameComponent
-    {
-        #region Fields
-
-
-        // List of all the sound effects that will be loaded into this manager.
-        static string[] soundNames =
-        {
-            "CatSound0",
-            "CatSound1",
-            "CatSound2",
-            "DogSound",
-        };
-
-
-        // The listener describes the ear which is hearing 3D sounds.
-        // This is usually set to match the camera.
-        public AudioListener Listener
-        {
-            get { return listener; }
-        }
-
-        AudioListener listener = new AudioListener();
-
-
-        // The emitter describes an entity which is making a 3D sound.
-        AudioEmitter emitter = new AudioEmitter();
-
-
-        // Store all the sound effects that are available to be played.
-        Dictionary<string, SoundEffect> soundEffects = new Dictionary<string, SoundEffect>();
-
-        
-        // Keep track of all the 3D sounds that are currently playing.
-        List<ActiveSound> activeSounds = new List<ActiveSound>();
-
-
-        #endregion
-
-
-        public AudioManager(Game game)
-            : base(game)
-        { }
-
-
-        /// <summary>
-        /// Initializes the audio manager.
-        /// </summary>
-        public override void Initialize()
-        {
-            // Set the scale for 3D audio so it matches the scale of our game world.
-            // DistanceScale controls how much sounds change volume as you move further away.
-            // DopplerScale controls how much sounds change pitch as you move past them.
-            SoundEffect.DistanceScale = 2000;
-            SoundEffect.DopplerScale = 0.1f;
-
-            // Load all the sound effects.
-            foreach (string soundName in soundNames)
-            {
-                soundEffects.Add(soundName, Game.Content.Load<SoundEffect>(soundName));
-            }
-
-            base.Initialize();
-        }
-
-
-        /// <summary>
-        /// Unloads the sound effect data.
-        /// </summary>
-        protected override void Dispose(bool disposing)
-        {
-            try
-            {
-                if (disposing)
-                {
-                    foreach (SoundEffect soundEffect in soundEffects.Values)
-                    {
-                        soundEffect.Dispose();
-                    }
-
-                    soundEffects.Clear();
-                }
-            }
-            finally
-            {
-                base.Dispose(disposing);
-            }
-        }
-
-        
-        /// <summary>
-        /// Updates the state of the 3D audio system.
-        /// </summary>
-        public override void Update(GameTime gameTime)
-        {
-            // Loop over all the currently playing 3D sounds.
-            int index = 0;
-
-            while (index < activeSounds.Count)
-            {
-                ActiveSound activeSound = activeSounds[index];
-
-                if (activeSound.Instance.State == SoundState.Stopped)
-                {
-                    // If the sound has stopped playing, dispose it.
-                    activeSound.Instance.Dispose();
-
-                    // Remove it from the active list.
-                    activeSounds.RemoveAt(index);
-                }
-                else
-                {
-                    // If the sound is still playing, update its 3D settings.
-                    Apply3D(activeSound);
-
-                    index++;
-                }
-            }
-
-            base.Update(gameTime);
-        }
-
-
-        /// <summary>
-        /// Triggers a new 3D sound.
-        /// </summary>
-        public SoundEffectInstance Play3DSound(string soundName, bool isLooped, IAudioEmitter emitter)
-        {
-            ActiveSound activeSound = new ActiveSound();
-
-            // Fill in the instance and emitter fields.
-            activeSound.Instance = soundEffects[soundName].CreateInstance();
-            activeSound.Instance.IsLooped = isLooped;
-
-            activeSound.Emitter = emitter;
-
-            // Set the 3D position of this sound, and then play it.
-            Apply3D(activeSound);
-
-            activeSound.Instance.Play();
-
-            // Remember that this sound is now active.
-            activeSounds.Add(activeSound);
-
-            return activeSound.Instance;
-        }
-
-
-        /// <summary>
-        /// Updates the position and velocity settings of a 3D sound.
-        /// </summary>
-        private void Apply3D(ActiveSound activeSound)
-        {
-            emitter.Position = activeSound.Emitter.Position;
-            emitter.Forward = activeSound.Emitter.Forward;
-            emitter.Up = activeSound.Emitter.Up;
-            emitter.Velocity = activeSound.Emitter.Velocity;
-
-            activeSound.Instance.Apply3D(listener, emitter);
-        }
-
-
-        /// <summary>
-        /// Internal helper class for keeping track of an active 3D sound,
-        /// and remembering which emitter object it is attached to.
-        /// </summary>
-        private class ActiveSound
-        {
-            public SoundEffectInstance Instance;
-            public IAudioEmitter Emitter;
-        }
-    }
-}
+//-----------------------------------------------------------------------------
+// AudioManager.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+
+using System.Collections.Generic;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Audio;
+
+namespace Audio3D
+{
+    /// <summary>
+    /// Audio manager keeps track of what 3D sounds are playing, updating
+    /// their settings as the camera and entities move around the world, and
+    /// automatically disposing sound effect instances after they finish playing.
+    /// </summary>
+    public class AudioManager : Microsoft.Xna.Framework.GameComponent
+    {
+
+
+        // List of all the sound effects that will be loaded into this manager.
+        static string[] soundNames =
+        {
+            "CatSound0",
+            "CatSound1",
+            "CatSound2",
+            "DogSound",
+        };
+
+
+        // The listener describes the ear which is hearing 3D sounds.
+        // This is usually set to match the camera.
+        public AudioListener Listener
+        {
+            get { return listener; }
+        }
+
+        AudioListener listener = new AudioListener();
+
+
+        // The emitter describes an entity which is making a 3D sound.
+        AudioEmitter emitter = new AudioEmitter();
+
+
+        // Store all the sound effects that are available to be played.
+        Dictionary<string, SoundEffect> soundEffects = new Dictionary<string, SoundEffect>();
+
+        
+        // Keep track of all the 3D sounds that are currently playing.
+        List<ActiveSound> activeSounds = new List<ActiveSound>();
+
+
+
+
+        public AudioManager(Game game)
+            : base(game)
+        { }
+
+
+        /// <summary>
+        /// Initializes the audio manager.
+        /// </summary>
+        public override void Initialize()
+        {
+            // Set the scale for 3D audio so it matches the scale of our game world.
+            // DistanceScale controls how much sounds change volume as you move further away.
+            // DopplerScale controls how much sounds change pitch as you move past them.
+            SoundEffect.DistanceScale = 2000;
+            SoundEffect.DopplerScale = 0.1f;
+
+            // Load all the sound effects.
+            foreach (string soundName in soundNames)
+            {
+                soundEffects.Add(soundName, Game.Content.Load<SoundEffect>(soundName));
+            }
+
+            base.Initialize();
+        }
+
+
+        /// <summary>
+        /// Unloads the sound effect data.
+        /// </summary>
+        protected override void Dispose(bool disposing)
+        {
+            try
+            {
+                if (disposing)
+                {
+                    foreach (SoundEffect soundEffect in soundEffects.Values)
+                    {
+                        soundEffect.Dispose();
+                    }
+
+                    soundEffects.Clear();
+                }
+            }
+            finally
+            {
+                base.Dispose(disposing);
+            }
+        }
+
+        
+        /// <summary>
+        /// Updates the state of the 3D audio system.
+        /// </summary>
+        public override void Update(GameTime gameTime)
+        {
+            // Loop over all the currently playing 3D sounds.
+            int index = 0;
+
+            while (index < activeSounds.Count)
+            {
+                ActiveSound activeSound = activeSounds[index];
+
+                if (activeSound.Instance.State == SoundState.Stopped)
+                {
+                    // If the sound has stopped playing, dispose it.
+                    activeSound.Instance.Dispose();
+
+                    // Remove it from the active list.
+                    activeSounds.RemoveAt(index);
+                }
+                else
+                {
+                    // If the sound is still playing, update its 3D settings.
+                    Apply3D(activeSound);
+
+                    index++;
+                }
+            }
+
+            base.Update(gameTime);
+        }
+
+
+        /// <summary>
+        /// Triggers a new 3D sound.
+        /// </summary>
+        public SoundEffectInstance Play3DSound(string soundName, bool isLooped, IAudioEmitter emitter)
+        {
+            ActiveSound activeSound = new ActiveSound();
+
+            // Fill in the instance and emitter fields.
+            activeSound.Instance = soundEffects[soundName].CreateInstance();
+            activeSound.Instance.IsLooped = isLooped;
+
+            activeSound.Emitter = emitter;
+
+            // Set the 3D position of this sound, and then play it.
+            Apply3D(activeSound);
+
+            activeSound.Instance.Play();
+
+            // Remember that this sound is now active.
+            activeSounds.Add(activeSound);
+
+            return activeSound.Instance;
+        }
+
+
+        /// <summary>
+        /// Updates the position and velocity settings of a 3D sound.
+        /// </summary>
+        private void Apply3D(ActiveSound activeSound)
+        {
+            emitter.Position = activeSound.Emitter.Position;
+            emitter.Forward = activeSound.Emitter.Forward;
+            emitter.Up = activeSound.Emitter.Up;
+            emitter.Velocity = activeSound.Emitter.Velocity;
+
+            activeSound.Instance.Apply3D(listener, emitter);
+        }
+
+
+        /// <summary>
+        /// Internal helper class for keeping track of an active 3D sound,
+        /// and remembering which emitter object it is attached to.
+        /// </summary>
+        private class ActiveSound
+        {
+            public SoundEffectInstance Instance;
+            public IAudioEmitter Emitter;
+        }
+    }
+}

+ 68 - 74
Audio3D/Cat.cs → Audio3D/Core/Cat.cs

@@ -1,74 +1,68 @@
-#region File Description
-//-----------------------------------------------------------------------------
-// Cat.cs
-//
-// Microsoft XNA Community Game Platform
-// Copyright (C) Microsoft Corporation. All rights reserved.
-//-----------------------------------------------------------------------------
-#endregion
-
-#region Using Statements
-using System;
-using Microsoft.Xna.Framework;
-#endregion
-
-namespace Audio3D
-{
-    /// <summary>
-    /// Entity class which moves in a circle and plays cat sounds.
-    /// This uses a single-shot sound, which will stop automatically
-    /// when it finishes playing. See the Dog class for an example of
-    /// using a looping sound.
-    /// </summary>
-    class Cat : SpriteEntity
-    {
-        #region Fields
-
-        // How long until we should play the next sound.
-        TimeSpan timeDelay = TimeSpan.Zero;
-
-        // Random number generator for choosing between sound variations.
-        static Random random = new Random();
-
-        #endregion
-
-
-        /// <summary>
-        /// Updates the position of the cat, and plays sounds.
-        /// </summary>
-        public override void Update(GameTime gameTime, AudioManager audioManager)
-        {
-            // Move the cat in a big circle.
-            double time = gameTime.TotalGameTime.TotalSeconds;
-
-            float dx = (float)-Math.Cos(time);
-            float dz = (float)-Math.Sin(time);
-
-            Vector3 newPosition = new Vector3(dx, 0, dz) * 6000;
-
-            // Update entity position and velocity.
-            Velocity = newPosition - Position;
-            Position = newPosition;
-            if (Velocity == Vector3.Zero)
-                Forward = Vector3.Forward;
-            else
-                Forward = Vector3.Normalize(Velocity);
-
-            Up = Vector3.Up;
-
-            // If the time delay has run out, trigger another single-shot sound.
-            timeDelay -= gameTime.ElapsedGameTime;
-
-            if (timeDelay < TimeSpan.Zero)
-            {
-                // For variety, randomly choose between three slightly different
-                // variants of the sound (CatSound0, CatSound1, and CatSound2).
-                string soundName = "CatSound" + random.Next(3);
-
-                audioManager.Play3DSound(soundName, false, this);
-
-                timeDelay += TimeSpan.FromSeconds(1.25f);
-            }
-        }
-    }
-}
+//-----------------------------------------------------------------------------
+// Cat.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+
+using System;
+using Microsoft.Xna.Framework;
+
+namespace Audio3D
+{
+    /// <summary>
+    /// Entity class which moves in a circle and plays cat sounds.
+    /// This uses a single-shot sound, which will stop automatically
+    /// when it finishes playing. See the Dog class for an example of
+    /// using a looping sound.
+    /// </summary>
+    class Cat : SpriteEntity
+    {
+
+        // How long until we should play the next sound.
+        TimeSpan timeDelay = TimeSpan.Zero;
+
+        // Random number generator for choosing between sound variations.
+        static Random random = new Random();
+
+
+
+        /// <summary>
+        /// Updates the position of the cat, and plays sounds.
+        /// </summary>
+        public override void Update(GameTime gameTime, AudioManager audioManager)
+        {
+            // Move the cat in a big circle.
+            double time = gameTime.TotalGameTime.TotalSeconds;
+
+            float dx = (float)-Math.Cos(time);
+            float dz = (float)-Math.Sin(time);
+
+            Vector3 newPosition = new Vector3(dx, 0, dz) * 6000;
+
+            // Update entity position and velocity.
+            Velocity = newPosition - Position;
+            Position = newPosition;
+            if (Velocity == Vector3.Zero)
+                Forward = Vector3.Forward;
+            else
+                Forward = Vector3.Normalize(Velocity);
+
+            Up = Vector3.Up;
+
+            // If the time delay has run out, trigger another single-shot sound.
+            timeDelay -= gameTime.ElapsedGameTime;
+
+            if (timeDelay < TimeSpan.Zero)
+            {
+                // For variety, randomly choose between three slightly different
+                // variants of the sound (CatSound0, CatSound1, and CatSound2).
+                string soundName = "CatSound" + random.Next(3);
+
+                audioManager.Play3DSound(soundName, false, this);
+
+                timeDelay += TimeSpan.FromSeconds(1.25f);
+            }
+        }
+    }
+}

+ 65 - 71
Audio3D/Dog.cs → Audio3D/Core/Dog.cs

@@ -1,71 +1,65 @@
-#region File Description
-//-----------------------------------------------------------------------------
-// Dog.cs
-//
-// Microsoft XNA Community Game Platform
-// Copyright (C) Microsoft Corporation. All rights reserved.
-//-----------------------------------------------------------------------------
-#endregion
-
-#region Using Statements
-using System;
-using Microsoft.Xna.Framework;
-using Microsoft.Xna.Framework.Audio;
-#endregion
-
-namespace Audio3D
-{
-    /// Entity class which sits in one place and plays dog sounds.
-    /// This uses a looping sound, which must be explicitly stopped
-    /// to prevent it going on forever. See the Cat class for an
-    /// example of using a single-shot sound.
-    class Dog : SpriteEntity
-    {
-        #region Fields
-
-        // How long until we should start or stop the sound.
-        TimeSpan timeDelay = TimeSpan.Zero;
-
-        // The sound which is currently playing, if any.
-        SoundEffectInstance activeSound = null;
-
-        #endregion
-
-
-        /// <summary>
-        /// Updates the position of the dog, and plays sounds.
-        /// </summary>
-        public override void Update(GameTime gameTime, AudioManager audioManager)
-        {
-            // Set the entity to a fixed position.
-            Position = new Vector3(0, 0, -4000);
-            Forward = Vector3.Forward;
-            Up = Vector3.Up;
-            Velocity = Vector3.Zero;
-
-            // If the time delay has run out, start or stop the looping sound.
-            // This would normally go on forever, but we stop it after a six
-            // second delay, then start it up again after four more seconds.
-            timeDelay -= gameTime.ElapsedGameTime;
-
-            if (timeDelay < TimeSpan.Zero)
-            {
-                if (activeSound == null)
-                {
-                    // If no sound is currently playing, trigger one.
-                    activeSound = audioManager.Play3DSound("DogSound", true, this);
-
-                    timeDelay += TimeSpan.FromSeconds(6);
-                }
-                else
-                {
-                    // Otherwise stop the current sound.
-                    activeSound.Stop(false);
-                    activeSound = null;
-
-                    timeDelay += TimeSpan.FromSeconds(4);
-                }
-            }
-        }
-    }
-}
+//-----------------------------------------------------------------------------
+// Dog.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+
+using System;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Audio;
+
+namespace Audio3D
+{
+    /// Entity class which sits in one place and plays dog sounds.
+    /// This uses a looping sound, which must be explicitly stopped
+    /// to prevent it going on forever. See the Cat class for an
+    /// example of using a single-shot sound.
+    class Dog : SpriteEntity
+    {
+
+        // How long until we should start or stop the sound.
+        TimeSpan timeDelay = TimeSpan.Zero;
+
+        // The sound which is currently playing, if any.
+        SoundEffectInstance activeSound = null;
+
+
+
+        /// <summary>
+        /// Updates the position of the dog, and plays sounds.
+        /// </summary>
+        public override void Update(GameTime gameTime, AudioManager audioManager)
+        {
+            // Set the entity to a fixed position.
+            Position = new Vector3(0, 0, -4000);
+            Forward = Vector3.Forward;
+            Up = Vector3.Up;
+            Velocity = Vector3.Zero;
+
+            // If the time delay has run out, start or stop the looping sound.
+            // This would normally go on forever, but we stop it after a six
+            // second delay, then start it up again after four more seconds.
+            timeDelay -= gameTime.ElapsedGameTime;
+
+            if (timeDelay < TimeSpan.Zero)
+            {
+                if (activeSound == null)
+                {
+                    // If no sound is currently playing, trigger one.
+                    activeSound = audioManager.Play3DSound("DogSound", true, this);
+
+                    timeDelay += TimeSpan.FromSeconds(6);
+                }
+                else
+                {
+                    // Otherwise stop the current sound.
+                    activeSound.Stop(false);
+                    activeSound = null;
+
+                    timeDelay += TimeSpan.FromSeconds(4);
+                }
+            }
+        }
+    }
+}

+ 192 - 204
Audio3D/Game.cs → Audio3D/Core/Game.cs

@@ -1,204 +1,192 @@
-#region File Description
-//-----------------------------------------------------------------------------
-// Game.cs
-//
-// Microsoft XNA Community Game Platform
-// Copyright (C) Microsoft Corporation. All rights reserved.
-//-----------------------------------------------------------------------------
-#endregion
-
-#region Using Statements
-using Microsoft.Xna.Framework;
-using Microsoft.Xna.Framework.Content;
-using Microsoft.Xna.Framework.Graphics;
-using Microsoft.Xna.Framework.Input;
-#endregion
-
-namespace Audio3D
-{
-    /// <summary>
-    /// Sample showing how to implement 3D audio.
-    /// </summary>
-    public class Audio3DGame : Microsoft.Xna.Framework.Game
-    {
-        #region Fields
-
-        GraphicsDeviceManager graphics;
-
-        AudioManager audioManager;
-
-        SpriteEntity cat;
-        SpriteEntity dog;
-
-        Texture2D checkerTexture;
-
-        QuadDrawer quadDrawer;
-
-        Vector3 cameraPosition = new Vector3(0, 512, 0);
-        Vector3 cameraForward = Vector3.Forward;
-        Vector3 cameraUp = Vector3.Up;
-        Vector3 cameraVelocity = Vector3.Zero;
-
-        KeyboardState currentKeyboardState;
-        GamePadState currentGamePadState;
-
-        #endregion
-
-        #region Initialization
-
-
-        public Audio3DGame()
-        {
-            Content.RootDirectory = "Content";
-
-            graphics = new GraphicsDeviceManager(this);
-
-            audioManager = new AudioManager(this);
-
-            Components.Add(audioManager);
-
-            cat = new Cat();
-            dog = new Dog();
-        }
-
-
-        /// <summary>
-        /// Load your graphics content.
-        /// </summary>
-        protected override void LoadContent()
-        {
-            cat.Texture = Content.Load<Texture2D>("CatTexture");
-            dog.Texture = Content.Load<Texture2D>("DogTexture");
-
-            checkerTexture = Content.Load<Texture2D>("checker");
-
-            quadDrawer = new QuadDrawer(graphics.GraphicsDevice);
-        }
-
-
-        #endregion
-
-        #region Update and Draw
-
-
-        /// <summary>
-        /// Allows the game to run logic.
-        /// </summary>
-        protected override void Update(GameTime gameTime)
-        {
-            HandleInput();
-
-            UpdateCamera();
-
-            // Tell the AudioManager about the new camera position.
-            audioManager.Listener.Position = cameraPosition;
-            audioManager.Listener.Forward = cameraForward;
-            audioManager.Listener.Up = cameraUp;
-            audioManager.Listener.Velocity = cameraVelocity;
-
-            // Tell our game entities to move around and play sounds.
-            cat.Update(gameTime, audioManager);
-            dog.Update(gameTime, audioManager);
-
-            base.Update(gameTime);
-        }
-
-
-        /// <summary>
-        /// This is called when the game should draw itself.
-        /// </summary>
-        protected override void Draw(GameTime gameTime)
-        {
-            GraphicsDevice device = graphics.GraphicsDevice;
-
-            device.Clear(Color.CornflowerBlue);
-
-            device.BlendState = BlendState.AlphaBlend;
-
-            // Compute camera matrices.
-            Matrix view = Matrix.CreateLookAt(cameraPosition,
-                                              cameraPosition + cameraForward,
-                                              cameraUp);
-
-            Matrix projection = Matrix.CreatePerspectiveFieldOfView(1, device.Viewport.AspectRatio,
-                                                                    1, 100000);
-
-            // Draw the checkered ground polygon.
-            Matrix groundTransform = Matrix.CreateScale(20000) *
-                                     Matrix.CreateRotationX(MathHelper.PiOver2);
-
-            quadDrawer.DrawQuad(checkerTexture, 32, groundTransform, view, projection);
-
-            // Draw the game entities.
-            cat.Draw(quadDrawer, cameraPosition, view, projection);
-            dog.Draw(quadDrawer, cameraPosition, view, projection);
-
-            base.Draw(gameTime);
-        }
-
-
-        #endregion
-
-        #region Handle Input
-
-
-        /// <summary>
-        /// Handles input for quitting the game.
-        /// </summary>
-        void HandleInput()
-        {
-            currentKeyboardState = Keyboard.GetState();
-            currentGamePadState = GamePad.GetState(PlayerIndex.One);
-
-            // Check for exit.
-            if (currentKeyboardState.IsKeyDown(Keys.Escape) ||
-                currentGamePadState.Buttons.Back == ButtonState.Pressed)
-            {
-                Exit();
-            }
-        }
-
-
-        /// <summary>
-        /// Handles input for moving the camera.
-        /// </summary>
-        void UpdateCamera()
-        {
-            const float turnSpeed = 0.05f;
-            const float accelerationSpeed = 4;
-            const float frictionAmount = 0.98f;
-
-            // Turn left or right.
-            float turn = -currentGamePadState.ThumbSticks.Left.X * turnSpeed;
-
-            if (currentKeyboardState.IsKeyDown(Keys.Left))
-                turn += turnSpeed;
-
-            if (currentKeyboardState.IsKeyDown(Keys.Right))
-                turn -= turnSpeed;
-
-            cameraForward = Vector3.TransformNormal(cameraForward,
-                                                    Matrix.CreateRotationY(turn));
-
-            // Accelerate forward or backward.
-            float accel = currentGamePadState.ThumbSticks.Left.Y * accelerationSpeed;
-
-            if (currentKeyboardState.IsKeyDown(Keys.Up))
-                accel += accelerationSpeed;
-
-            if (currentKeyboardState.IsKeyDown(Keys.Down))
-                accel -= accelerationSpeed;
-
-            cameraVelocity += cameraForward * accel;
-
-            // Add velocity to the current position.
-            cameraPosition += cameraVelocity;
-
-            // Apply the friction force.
-            cameraVelocity *= frictionAmount;
-        }
-
-
-        #endregion
-    }
-}
+//-----------------------------------------------------------------------------
+// Game.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Content;
+using Microsoft.Xna.Framework.Graphics;
+using Microsoft.Xna.Framework.Input;
+
+namespace Audio3D
+{
+    /// <summary>
+    /// Sample showing how to implement 3D audio.
+    /// </summary>
+    public class Audio3DGame : Game
+    {
+
+        GraphicsDeviceManager graphics;
+
+        AudioManager audioManager;
+
+        SpriteEntity cat;
+        SpriteEntity dog;
+
+        Texture2D checkerTexture;
+
+        QuadDrawer quadDrawer;
+
+        Vector3 cameraPosition = new Vector3(0, 512, 0);
+        Vector3 cameraForward = Vector3.Forward;
+        Vector3 cameraUp = Vector3.Up;
+        Vector3 cameraVelocity = Vector3.Zero;
+
+        KeyboardState currentKeyboardState;
+        GamePadState currentGamePadState;
+
+
+
+
+        public Audio3DGame()
+        {
+            Content.RootDirectory = "Content";
+
+            graphics = new GraphicsDeviceManager(this);
+
+            audioManager = new AudioManager(this);
+
+            Components.Add(audioManager);
+
+            cat = new Cat();
+            dog = new Dog();
+        }
+
+
+        /// <summary>
+        /// Load your graphics content.
+        /// </summary>
+        protected override void LoadContent()
+        {
+            cat.Texture = Content.Load<Texture2D>("CatTexture");
+            dog.Texture = Content.Load<Texture2D>("DogTexture");
+
+            checkerTexture = Content.Load<Texture2D>("checker");
+
+            quadDrawer = new QuadDrawer(graphics.GraphicsDevice);
+        }
+
+
+
+
+
+        /// <summary>
+        /// Allows the game to run logic.
+        /// </summary>
+        protected override void Update(GameTime gameTime)
+        {
+            HandleInput();
+
+            UpdateCamera();
+
+            // Tell the AudioManager about the new camera position.
+            audioManager.Listener.Position = cameraPosition;
+            audioManager.Listener.Forward = cameraForward;
+            audioManager.Listener.Up = cameraUp;
+            audioManager.Listener.Velocity = cameraVelocity;
+
+            // Tell our game entities to move around and play sounds.
+            cat.Update(gameTime, audioManager);
+            dog.Update(gameTime, audioManager);
+
+            base.Update(gameTime);
+        }
+
+
+        /// <summary>
+        /// This is called when the game should draw itself.
+        /// </summary>
+        protected override void Draw(GameTime gameTime)
+        {
+            GraphicsDevice device = graphics.GraphicsDevice;
+
+            device.Clear(Color.CornflowerBlue);
+
+            device.BlendState = BlendState.AlphaBlend;
+
+            // Compute camera matrices.
+            Matrix view = Matrix.CreateLookAt(cameraPosition,
+                                              cameraPosition + cameraForward,
+                                              cameraUp);
+
+            Matrix projection = Matrix.CreatePerspectiveFieldOfView(1, device.Viewport.AspectRatio,
+                                                                    1, 100000);
+
+            // Draw the checkered ground polygon.
+            Matrix groundTransform = Matrix.CreateScale(20000) *
+                                     Matrix.CreateRotationX(MathHelper.PiOver2);
+
+            quadDrawer.DrawQuad(checkerTexture, 32, groundTransform, view, projection);
+
+            // Draw the game entities.
+            cat.Draw(quadDrawer, cameraPosition, view, projection);
+            dog.Draw(quadDrawer, cameraPosition, view, projection);
+
+            base.Draw(gameTime);
+        }
+
+
+
+
+
+        /// <summary>
+        /// Handles input for quitting the game.
+        /// </summary>
+        void HandleInput()
+        {
+            currentKeyboardState = Keyboard.GetState();
+            currentGamePadState = GamePad.GetState(PlayerIndex.One);
+
+            // Check for exit.
+            if (currentKeyboardState.IsKeyDown(Keys.Escape) ||
+                currentGamePadState.Buttons.Back == ButtonState.Pressed)
+            {
+                Exit();
+            }
+        }
+
+
+        /// <summary>
+        /// Handles input for moving the camera.
+        /// </summary>
+        void UpdateCamera()
+        {
+            const float turnSpeed = 0.05f;
+            const float accelerationSpeed = 4;
+            const float frictionAmount = 0.98f;
+
+            // Turn left or right.
+            float turn = -currentGamePadState.ThumbSticks.Left.X * turnSpeed;
+
+            if (currentKeyboardState.IsKeyDown(Keys.Left))
+                turn += turnSpeed;
+
+            if (currentKeyboardState.IsKeyDown(Keys.Right))
+                turn -= turnSpeed;
+
+            cameraForward = Vector3.TransformNormal(cameraForward,
+                                                    Matrix.CreateRotationY(turn));
+
+            // Accelerate forward or backward.
+            float accel = currentGamePadState.ThumbSticks.Left.Y * accelerationSpeed;
+
+            if (currentKeyboardState.IsKeyDown(Keys.Up))
+                accel += accelerationSpeed;
+
+            if (currentKeyboardState.IsKeyDown(Keys.Down))
+                accel -= accelerationSpeed;
+
+            cameraVelocity += cameraForward * accel;
+
+            // Add velocity to the current position.
+            cameraPosition += cameraVelocity;
+
+            // Apply the friction force.
+            cameraVelocity *= frictionAmount;
+        }
+
+
+    }
+}

+ 23 - 27
Audio3D/IAudioEmitter.cs → Audio3D/Core/IAudioEmitter.cs

@@ -1,27 +1,23 @@
-#region File Description
-//-----------------------------------------------------------------------------
-// IAudioEmitter.cs
-//
-// Microsoft XNA Community Game Platform
-// Copyright (C) Microsoft Corporation. All rights reserved.
-//-----------------------------------------------------------------------------
-#endregion
-
-#region Using Statements
-using Microsoft.Xna.Framework;
-#endregion 
-
-namespace Audio3D
-{
-    /// <summary>
-    /// Interface used by the AudioManager to look up the position
-    /// and velocity of entities that can emit 3D sounds.
-    /// </summary>
-    public interface IAudioEmitter
-    {
-        Vector3 Position { get; }
-        Vector3 Forward { get; }
-        Vector3 Up { get; }
-        Vector3 Velocity { get; }
-    }
-}
+//-----------------------------------------------------------------------------
+// IAudioEmitter.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+
+using Microsoft.Xna.Framework;
+
+namespace Audio3D
+{
+    /// <summary>
+    /// Interface used by the AudioManager to look up the position
+    /// and velocity of entities that can emit 3D sounds.
+    /// </summary>
+    public interface IAudioEmitter
+    {
+        Vector3 Position { get; }
+        Vector3 Forward { get; }
+        Vector3 Up { get; }
+        Vector3 Velocity { get; }
+    }
+}

+ 73 - 79
Audio3D/QuadDrawer.cs → Audio3D/Core/QuadDrawer.cs

@@ -1,79 +1,73 @@
-#region File Description
-//-----------------------------------------------------------------------------
-// QuadDrawer.cs
-//
-// Microsoft XNA Community Game Platform
-// Copyright (C) Microsoft Corporation. All rights reserved.
-//-----------------------------------------------------------------------------
-#endregion
-
-#region Using Statements
-using Microsoft.Xna.Framework;
-using Microsoft.Xna.Framework.Graphics;
-#endregion
-
-namespace Audio3D
-{
-    /// <summary>
-    /// Helper for drawing 3D quadrilaterals. This is used to draw the cat
-    /// and dog billboard sprites, and also the checkered ground polygon.
-    /// </summary>
-    class QuadDrawer
-    {
-        #region Fields
-
-        GraphicsDevice graphicsDevice;
-        AlphaTestEffect effect;
-        VertexPositionTexture[] vertices;
-
-        #endregion
-
-
-        /// <summary>
-        /// Constructs a new quadrilateral drawing worker.
-        /// </summary>
-        public QuadDrawer(GraphicsDevice device)
-        {
-            graphicsDevice = device;
-
-            effect = new AlphaTestEffect(device);
-
-            effect.AlphaFunction = CompareFunction.Greater;
-            effect.ReferenceAlpha = 128;
-
-            // Preallocate an array of four vertices.
-            vertices = new VertexPositionTexture[4];
-
-            vertices[0].Position = new Vector3(1, 1, 0);
-            vertices[1].Position = new Vector3(-1, 1, 0);
-            vertices[2].Position = new Vector3(1, -1, 0);
-            vertices[3].Position = new Vector3(-1, -1, 0);
-        }
-
-
-        /// <summary>
-        /// Draws a quadrilateral as part of the 3D world.
-        /// </summary>
-        public void DrawQuad(Texture2D texture, float textureRepeats,
-                             Matrix world, Matrix view, Matrix projection)
-        {
-            // Set our effect to use the specified texture and camera matrices.
-            effect.Texture = texture;
-
-            effect.World = world;
-            effect.View = view;
-            effect.Projection = projection;
-
-            // Update our vertex array to use the specified number of texture repeats.
-            vertices[0].TextureCoordinate = new Vector2(0, 0);
-            vertices[1].TextureCoordinate = new Vector2(textureRepeats, 0);
-            vertices[2].TextureCoordinate = new Vector2(0, textureRepeats);
-            vertices[3].TextureCoordinate = new Vector2(textureRepeats, textureRepeats);
-
-            // Draw the quad.
-            effect.CurrentTechnique.Passes[0].Apply();
-
-            graphicsDevice.DrawUserPrimitives(PrimitiveType.TriangleStrip, vertices, 0, 2);
-        }
-    }
-}
+//-----------------------------------------------------------------------------
+// QuadDrawer.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+
+namespace Audio3D
+{
+    /// <summary>
+    /// Helper for drawing 3D quadrilaterals. This is used to draw the cat
+    /// and dog billboard sprites, and also the checkered ground polygon.
+    /// </summary>
+    class QuadDrawer
+    {
+
+        GraphicsDevice graphicsDevice;
+        AlphaTestEffect effect;
+        VertexPositionTexture[] vertices;
+
+
+
+        /// <summary>
+        /// Constructs a new quadrilateral drawing worker.
+        /// </summary>
+        public QuadDrawer(GraphicsDevice device)
+        {
+            graphicsDevice = device;
+
+            effect = new AlphaTestEffect(device);
+
+            effect.AlphaFunction = CompareFunction.Greater;
+            effect.ReferenceAlpha = 128;
+
+            // Preallocate an array of four vertices.
+            vertices = new VertexPositionTexture[4];
+
+            vertices[0].Position = new Vector3(1, 1, 0);
+            vertices[1].Position = new Vector3(-1, 1, 0);
+            vertices[2].Position = new Vector3(1, -1, 0);
+            vertices[3].Position = new Vector3(-1, -1, 0);
+        }
+
+
+        /// <summary>
+        /// Draws a quadrilateral as part of the 3D world.
+        /// </summary>
+        public void DrawQuad(Texture2D texture, float textureRepeats,
+                             Matrix world, Matrix view, Matrix projection)
+        {
+            // Set our effect to use the specified texture and camera matrices.
+            effect.Texture = texture;
+
+            effect.World = world;
+            effect.View = view;
+            effect.Projection = projection;
+
+            // Update our vertex array to use the specified number of texture repeats.
+            vertices[0].TextureCoordinate = new Vector2(0, 0);
+            vertices[1].TextureCoordinate = new Vector2(textureRepeats, 0);
+            vertices[2].TextureCoordinate = new Vector2(0, textureRepeats);
+            vertices[3].TextureCoordinate = new Vector2(textureRepeats, textureRepeats);
+
+            // Draw the quad.
+            effect.CurrentTechnique.Passes[0].Apply();
+
+            graphicsDevice.DrawUserPrimitives(PrimitiveType.TriangleStrip, vertices, 0, 2);
+        }
+    }
+}

+ 103 - 109
Audio3D/SpriteEntity.cs → Audio3D/Core/SpriteEntity.cs

@@ -1,109 +1,103 @@
-#region File Description
-//-----------------------------------------------------------------------------
-// SpriteEntity.cs
-//
-// Microsoft XNA Community Game Platform
-// Copyright (C) Microsoft Corporation. All rights reserved.
-//-----------------------------------------------------------------------------
-#endregion
-
-#region Using Statements
-using Microsoft.Xna.Framework;
-using Microsoft.Xna.Framework.Graphics;
-#endregion
-
-namespace Audio3D
-{
-    /// <summary>
-    /// Base class for game entities that are displayed as billboard sprites,
-    /// and which can emit 3D sounds. The Cat and Dog classes both derive from this.
-    /// </summary>
-    abstract class SpriteEntity : IAudioEmitter
-    {
-        #region Properties
-
-
-        /// <summary>
-        /// Gets or sets the 3D position of the entity.
-        /// </summary>
-        public Vector3 Position
-        {
-            get { return position; }
-            set { position = value; }
-        }
-
-        Vector3 position;
-
-
-        /// <summary>
-        /// Gets or sets which way the entity is facing.
-        /// </summary>
-        public Vector3 Forward
-        {
-            get { return forward; }
-            set { forward = value; }
-        }
-
-        Vector3 forward;
-
-
-        /// <summary>
-        /// Gets or sets the orientation of this entity.
-        /// </summary>
-        public Vector3 Up
-        {
-            get { return up; }
-            set { up = value; }
-        }
-
-        Vector3 up;
-
-        
-        /// <summary>
-        /// Gets or sets how fast this entity is moving.
-        /// </summary>
-        public Vector3 Velocity
-        {
-            get { return velocity; }
-            protected set { velocity = value; }
-        }
-
-        Vector3 velocity;
-
-
-        /// <summary>
-        /// Gets or sets the texture used to display this entity.
-        /// </summary>
-        public Texture2D Texture
-        {
-            get { return texture; }
-            set { texture = value; }
-        }
-
-        Texture2D texture;
-
-
-        #endregion
-
-
-        /// <summary>
-        /// Updates the position of the entity, and allows it to play sounds.
-        /// </summary>
-        public abstract void Update(GameTime gameTime, AudioManager audioManager);
-
-
-        /// <summary>
-        /// Draws the entity as a billboard sprite.
-        /// </summary>
-        public void Draw(QuadDrawer quadDrawer, Vector3 cameraPosition,
-                         Matrix view, Matrix projection)
-        {
-            Matrix world = Matrix.CreateTranslation(0, 1, 0) *
-                           Matrix.CreateScale(800) *
-                           Matrix.CreateConstrainedBillboard(Position, cameraPosition,
-                                                             Up, null, null);
-
-            quadDrawer.DrawQuad(Texture, 1, world, view, projection);
-        }
-    }
-}
+//-----------------------------------------------------------------------------
+// SpriteEntity.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+
+namespace Audio3D
+{
+    /// <summary>
+    /// Base class for game entities that are displayed as billboard sprites,
+    /// and which can emit 3D sounds. The Cat and Dog classes both derive from this.
+    /// </summary>
+    abstract class SpriteEntity : IAudioEmitter
+    {
+
+
+        /// <summary>
+        /// Gets or sets the 3D position of the entity.
+        /// </summary>
+        public Vector3 Position
+        {
+            get { return position; }
+            set { position = value; }
+        }
+
+        Vector3 position;
+
+
+        /// <summary>
+        /// Gets or sets which way the entity is facing.
+        /// </summary>
+        public Vector3 Forward
+        {
+            get { return forward; }
+            set { forward = value; }
+        }
+
+        Vector3 forward;
+
+
+        /// <summary>
+        /// Gets or sets the orientation of this entity.
+        /// </summary>
+        public Vector3 Up
+        {
+            get { return up; }
+            set { up = value; }
+        }
+
+        Vector3 up;
+
+        
+        /// <summary>
+        /// Gets or sets how fast this entity is moving.
+        /// </summary>
+        public Vector3 Velocity
+        {
+            get { return velocity; }
+            protected set { velocity = value; }
+        }
+
+        Vector3 velocity;
+
+
+        /// <summary>
+        /// Gets or sets the texture used to display this entity.
+        /// </summary>
+        public Texture2D Texture
+        {
+            get { return texture; }
+            set { texture = value; }
+        }
+
+        Texture2D texture;
+
+
+
+
+        /// <summary>
+        /// Updates the position of the entity, and allows it to play sounds.
+        /// </summary>
+        public abstract void Update(GameTime gameTime, AudioManager audioManager);
+
+
+        /// <summary>
+        /// Draws the entity as a billboard sprite.
+        /// </summary>
+        public void Draw(QuadDrawer quadDrawer, Vector3 cameraPosition,
+                         Matrix view, Matrix projection)
+        {
+            Matrix world = Matrix.CreateTranslation(0, 1, 0) *
+                           Matrix.CreateScale(800) *
+                           Matrix.CreateConstrainedBillboard(Position, cameraPosition,
+                                                             Up, null, null);
+
+            quadDrawer.DrawQuad(Texture, 1, world, view, projection);
+        }
+    }
+}

+ 0 - 16
Audio3D/Info.plist

@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>CFBundleIdentifier</key>
-	<string>com.yourcompany.Audio3D</string>
-	<key>CFBundleName</key>
-	<string>Audio3D</string>
-	<key>CFBundleVersion</key>
-	<string>1</string>
-	<key>LSMinimumSystemVersion</key>
-	<string>10.6</string>
-	<key>NSPrincipalClass</key>
-	<string>NSApplication</string>
-</dict>
-</plist>

+ 0 - 45
Audio3D/Main.cs

@@ -1,45 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-
-using MonoMac.AppKit;
-using MonoMac.Foundation;
-
-namespace Audio3D
-{
-	static class Program
-	{
-		/// <summary>
-		/// The main entry point for the application.
-		/// </summary>
-		static void Main (string[] args)
-		{
-			NSApplication.Init ();
-			
-			using (var p = new NSAutoreleasePool ()) {
-				NSApplication.SharedApplication.Delegate = new AppDelegate ();
-				NSApplication.Main (args);
-			}
-
-
-		}
-	}
-
-	class AppDelegate : NSApplicationDelegate
-	{
-		Audio3DGame game;
-
-		public override void FinishedLaunching (MonoMac.Foundation.NSObject notification)
-		{
-			game = new Audio3DGame ();
-			game.Run ();
-		}
-		
-		public override bool ApplicationShouldTerminateAfterLastWindowClosed (NSApplication sender)
-		{
-			return true;
-		}
-	}  
-}
-
-

+ 18 - 0
Audio3D/Platforms/Android/AndroidManifest.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.cartblanche.audio3d">
+  <application android:label="Audio3D" android:icon="@mipmap/icon">
+    <activity android:name="android.app.NativeActivity"
+              android:label="Audio3D"
+              android:configChanges="orientation|keyboardHidden|screenSize"
+              android:screenOrientation="landscape"
+              android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
+      <intent-filter>
+        <action android:name="android.intent.action.MAIN" />
+        <category android:name="android.intent.category.LAUNCHER" />
+      </intent-filter>
+    </activity>
+  </application>
+  <uses-sdk android:minSdkVersion="28" android:targetSdkVersion="34" />
+  <uses-feature android:glEsVersion="0x00020000" />
+  <uses-permission android:name="android.permission.INTERNET" />
+</manifest>

+ 21 - 0
Audio3D/Platforms/Android/Audio3D.Android.csproj

@@ -0,0 +1,21 @@
+<Project Sdk="Microsoft.NET.Sdk">
+  <PropertyGroup>
+    <TargetFramework>net8.0-android</TargetFramework>
+    <OutputType>Exe</OutputType>
+    <RootNamespace>Audio3D.Android</RootNamespace>
+    <AssemblyTitle>Audio3D Android</AssemblyTitle>
+    <Description>Android platform for Audio3D MonoGame sample.</Description>
+    <Authors>CartBlanche</Authors>
+    <Company>CartBlanche</Company>
+    <GenerateAssemblyInfo>true</GenerateAssemblyInfo>
+  </PropertyGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\Core\Audio3D.Core.csproj" />
+    <PackageReference Include="MonoGame.Framework.Android" Version="3.8.*" />
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="..\..\Core\Content\**\*.xnb" Link="Content\%(RecursiveDir)%(Filename)%(Extension)">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+  </ItemGroup>
+</Project>

+ 19 - 0
Audio3D/Platforms/Android/MainActivity.cs

@@ -0,0 +1,19 @@
+using Android.App;
+using Android.Content.PM;
+using Android.OS;
+using Microsoft.Xna.Framework;
+
+namespace Audio3D.Android
+{
+    [Activity(Label = "Audio3D", MainLauncher = true, ConfigurationChanges = ConfigChanges.Orientation | ConfigChanges.KeyboardHidden | ConfigChanges.ScreenSize, ScreenOrientation = ScreenOrientation.Landscape)]
+    public class MainActivity : AndroidGameActivity
+    {
+        protected override void OnCreate(Bundle bundle)
+        {
+            base.OnCreate(bundle);
+            var g = new Audio3DGame();
+            SetContentView((g.Services.GetService(typeof(View))) as View);
+            g.Run();
+        }
+    }
+}

+ 21 - 0
Audio3D/Platforms/DesktopGL/Audio3D.DesktopGL.csproj

@@ -0,0 +1,21 @@
+<Project Sdk="Microsoft.NET.Sdk">
+  <PropertyGroup>
+    <TargetFramework>net8.0</TargetFramework>
+    <OutputType>WinExe</OutputType>
+    <RootNamespace>Audio3D.DesktopGL</RootNamespace>
+    <AssemblyTitle>Audio3D DesktopGL</AssemblyTitle>
+    <Description>DesktopGL platform for Audio3D MonoGame sample.</Description>
+    <Authors>CartBlanche</Authors>
+    <Company>CartBlanche</Company>
+    <GenerateAssemblyInfo>true</GenerateAssemblyInfo>
+  </PropertyGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\Core\Audio3D.Core.csproj" />
+    <PackageReference Include="MonoGame.Framework.DesktopGL" Version="3.8.*" />
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="..\..\Core\Content\**\*.xnb" Link="Content\%(RecursiveDir)%(Filename)%(Extension)">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+  </ItemGroup>
+</Project>

+ 14 - 0
Audio3D/Platforms/DesktopGL/Program.cs

@@ -0,0 +1,14 @@
+using System;
+
+namespace Audio3D.DesktopGL
+{
+    public static class Program
+    {
+        [STAThread]
+        static void Main()
+        {
+            using (var game = new Audio3DGame())
+                game.Run();
+        }
+    }
+}

+ 22 - 0
Audio3D/Platforms/Windows/Audio3D.Windows.csproj

@@ -0,0 +1,22 @@
+<Project Sdk="Microsoft.NET.Sdk">
+  <PropertyGroup>
+    <TargetFramework>net8.0-windows</TargetFramework>
+    <OutputType>WinExe</OutputType>
+    <RootNamespace>Audio3D.Windows</RootNamespace>
+    <AssemblyTitle>Audio3D Windows</AssemblyTitle>
+    <Description>Windows platform for Audio3D MonoGame sample.</Description>
+    <Authors>CartBlanche</Authors>
+    <Company>CartBlanche</Company>
+    <UseWindowsForms>true</UseWindowsForms>
+    <GenerateAssemblyInfo>true</GenerateAssemblyInfo>
+  </PropertyGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\Core\Audio3D.Core.csproj" />
+    <PackageReference Include="MonoGame.Framework.WindowsDX" Version="3.8.*" />
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="..\..\Core\Content\**\*.xnb" Link="Content\%(RecursiveDir)%(Filename)%(Extension)">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+  </ItemGroup>
+</Project>

+ 14 - 0
Audio3D/Platforms/Windows/Program.cs

@@ -0,0 +1,14 @@
+using System;
+
+namespace Audio3D.Windows
+{
+    public static class Program
+    {
+        [STAThread]
+        static void Main()
+        {
+            using (var game = new Audio3DGame())
+                game.Run();
+        }
+    }
+}

+ 21 - 0
Audio3D/Platforms/iOS/Audio3D.iOS.csproj

@@ -0,0 +1,21 @@
+<Project Sdk="Microsoft.NET.Sdk">
+  <PropertyGroup>
+    <TargetFramework>net8.0-ios</TargetFramework>
+    <OutputType>Exe</OutputType>
+    <RootNamespace>Audio3D.iOS</RootNamespace>
+    <AssemblyTitle>Audio3D iOS</AssemblyTitle>
+    <Description>iOS platform for Audio3D MonoGame sample.</Description>
+    <Authors>CartBlanche</Authors>
+    <Company>CartBlanche</Company>
+    <GenerateAssemblyInfo>true</GenerateAssemblyInfo>
+  </PropertyGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\Core\Audio3D.Core.csproj" />
+    <PackageReference Include="MonoGame.Framework.iOS" Version="3.8.*" />
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="..\..\Core\Content\**\*.xnb" Link="Content\%(RecursiveDir)%(Filename)%(Extension)">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+  </ItemGroup>
+</Project>

+ 27 - 0
Audio3D/Platforms/iOS/Info.plist

@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+    <key>CFBundleDisplayName</key>
+    <string>Audio3D</string>
+    <key>CFBundleIdentifier</key>
+    <string>com.cartblanche.audio3d</string>
+    <key>CFBundleVersion</key>
+    <string>1.0</string>
+    <key>CFBundleShortVersionString</key>
+    <string>1.0</string>
+    <key>UILaunchStoryboardName</key>
+    <string>LaunchScreen</string>
+    <key>UISupportedInterfaceOrientations</key>
+    <array>
+        <string>UIInterfaceOrientationLandscapeLeft</string>
+        <string>UIInterfaceOrientationLandscapeRight</string>
+    </array>
+    <key>UIRequiredDeviceCapabilities</key>
+    <array>
+        <string>armv7</string>
+    </array>
+    <key>LSRequiresIPhoneOS</key>
+    <true/>
+</dict>
+</plist>

+ 12 - 0
Audio3D/Platforms/iOS/Program.cs

@@ -0,0 +1,12 @@
+using UIKit;
+
+namespace Audio3D.iOS
+{
+    public class Application
+    {
+        static void Main(string[] args)
+        {
+            UIApplication.Main(args, null, typeof(AppDelegate));
+        }
+    }
+}

+ 0 - 36
Audio3D/Properties/AssemblyInfo.cs

@@ -1,36 +0,0 @@
-#region File Description
-//-----------------------------------------------------------------------------
-// AssemblyInfo.cs
-//
-// Microsoft XNA Community Game Platform
-// Copyright (C) Microsoft Corporation. All rights reserved.
-//-----------------------------------------------------------------------------
-#endregion
-
-#region Using Statements
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-#endregion
-
-// General Information about an assembly is controlled through the following 
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("Audio 3D")]
-[assembly: AssemblyProduct("Audio 3D")]
-[assembly: AssemblyDescription("This sample shows how to position sounds in 3D space, implementing panning, Doppler, and distance attenuation effects.")]
-[assembly: AssemblyCompany("Microsoft")]
-
-[assembly: AssemblyCopyright("Copyright © Microsoft 2007")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-
-// Version information for an assembly consists of the following four values:
-//
-//      Major Version
-//      Minor Version 
-//      Build Number
-//      Revision
-//
-[assembly: AssemblyVersion("1.0.0.0")]

+ 37 - 0
Audio3D/README.md

@@ -0,0 +1,37 @@
+# Audio3D MonoGame Sample
+
+This project demonstrates 3D audio using MonoGame 3.8.* and .NET 8.0. It is structured for cross-platform builds with shared code in `/Core` and platform-specific projects in `/Platforms`.
+
+## Structure
+- `/Core`: Shared game logic and assets
+- `/Platforms/Windows`: Windows-specific entry point and project
+- `/Platforms/DesktopGL`: DesktopGL-specific entry point and project
+- `/Platforms/Android`: Android-specific entry point and project
+- `/Platforms/iOS`: iOS-specific entry point and project
+
+## Building
+- **Windows & DesktopGL**: Use VSCode or Visual Studio 2022+ to open the solution and build the desired platform project.
+- **Android & iOS**: Open the solution in Visual Studio 2022+ with Xamarin/MAUI workloads installed.
+
+## Running
+- Use the provided `launch.json` and `tasks.json` for building and running from VSCode.
+- Use the solution file for Visual Studio.
+
+## Content
+- Uses pre-built `.xnb` files in `/Content`.
+
+## Requirements
+- .NET 8.0 SDK
+- MonoGame 3.8.* NuGet packages
+
+## Platforms Supported
+- Windows
+- DesktopGL
+- Android
+- iOS
+
+## Not Supported
+- Linux, MacOS, PSMobile (per MonoGame 3.8.*)
+
+---
+For more details, see the individual platform project files.

+ 0 - 14
BatteryStatus/Info.iOS.plist

@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>CFBundleDisplayName</key>
-	<string>Battery Status</string>
-	<key>CFBundleIconFiles</key>
-	<array>
-		<string>Default.png</string>
-	</array>
-	<key>MinimumOSVersion</key>
-	<string>3.1</string>
-</dict>
-</plist>

+ 0 - 25
BouncingBox/Info.iOS.plist

@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>CFBundleDisplayName</key>
-	<string>ChaseAndEvade</string>
-	<key>CFBundleIconFiles</key>
-	<array>
-		<string>monogameicon.png</string>
-	</array>
-	<key>CFBundleIdentifier</key>
-	<string>project.MonoGame.BouncingBox</string>
-	<key>MinimumOSVersion</key>
-	<string>3.1</string>
-	<key>UIDeviceFamily</key>
-	<array>
-		<integer>1</integer>
-	</array>
-	<key>UISupportedInterfaceOrientations</key>
-	<array>
-		<string>UIInterfaceOrientationPortrait</string>
-		<string>UIInterfaceOrientationPortraitUpsideDown</string>
-	</array>
-</dict>
-</plist>

+ 0 - 19
CatapaultWars/Info.iOS.plist

@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>CFBundleDisplayName</key>
-	<string>Catapult Wars</string>
-	<key>MinimumOSVersion</key>
-	<string>4.3</string>
-	<key>UIDeviceFamily</key>
-	<array>
-		<integer>2</integer>
-	</array>
-	<key>UISupportedInterfaceOrientations</key>
-	<array>
-		<string>UIInterfaceOrientationLandscapeLeft</string>
-		<string>UIInterfaceOrientationLandscapeRight</string>
-	</array>
-</dict>
-</plist>

+ 0 - 21
CatapultNetWars/Info.iOS.plist

@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>UIDeviceFamily</key>
-	<array>
-		<integer>1</integer>
-		<integer>2</integer>
-	</array>
-	<key>UISupportedInterfaceOrientations</key>
-	<array>
-		<string>UIInterfaceOrientationLandscapeLeft</string>
-		<string>UIInterfaceOrientationLandscapeRight</string>
-	</array>
-	<key>UISupportedInterfaceOrientations~ipad</key>
-	<array>
-		<string>UIInterfaceOrientationLandscapeLeft</string>
-		<string>UIInterfaceOrientationLandscapeRight</string>
-	</array>
-</dict>
-</plist>

+ 0 - 21
ChaseAndEvade/Info.iOS.plist

@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>CFBundleDisplayName</key>
-	<string>ChaseAndEvade</string>
-	<key>CFBundleIconFiles</key>
-	<array>
-		<string>GameThumbnail.png</string>
-	</array>
-	<key>CFBundleIdentifier</key>
-	<string>project.MonoGame.ChaseAndEvade</string>
-	<key>MinimumOSVersion</key>
-	<string>3.1</string>
-	<key>UISupportedInterfaceOrientations</key>
-	<array>
-		<string>UIInterfaceOrientationPortrait</string>
-		<string>UIInterfaceOrientationPortraitUpsideDown</string>
-	</array>
-</dict>
-</plist>

+ 0 - 29
Draw2D/Info.iOS.plist

@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>CFBundleDisplayName</key>
-	<string>Draw2D</string>
-	<key>CFBundleIconFiles</key>
-	<array>
-		<string>monogameicon.png</string>
-	</array>
-	<key>MinimumOSVersion</key>
-	<string>3.1</string>
-	<key>UIDeviceFamily</key>
-	<array>
-		<string>1</string>
-		<string>2</string>
-	</array>
-	<key>UISupportedInterfaceOrientations</key>
-	<array>
-		<string>UIInterfaceOrientationLandscapeLeft</string>
-		<string>UIInterfaceOrientationLandscapeRight</string>
-	</array>
-	<key>UISupportedInterfaceOrientations~ipad</key>
-	<array>
-		<string>UIInterfaceOrientationPortrait</string>
-		<string>UIInterfaceOrientationPortraitUpsideDown</string>
-	</array>
-</dict>
-</plist>

+ 0 - 25
GameComponents/Info.iOS.plist

@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>CFBundleDisplayName</key>
-	<string>ChaseAndEvade</string>
-	<key>CFBundleIconFiles</key>
-	<array>
-		<string>monogameicon.png</string>
-	</array>
-	<key>CFBundleIdentifier</key>
-	<string>project.MonoGame.GameComponents</string>
-	<key>MinimumOSVersion</key>
-	<string>3.1</string>
-	<key>UIDeviceFamily</key>
-	<array>
-		<integer>1</integer>
-	</array>
-	<key>UISupportedInterfaceOrientations</key>
-	<array>
-		<string>UIInterfaceOrientationPortrait</string>
-		<string>UIInterfaceOrientationPortraitUpsideDown</string>
-	</array>
-</dict>
-</plist>

+ 0 - 25
GameStateManagement/Info.iOS.plist

@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>CFBundleDisplayName</key>
-	<string>ChaseAndEvade</string>
-	<key>CFBundleIconFiles</key>
-	<array>
-		<string>GameThumbnail.png</string>
-	</array>
-	<key>CFBundleIdentifier</key>
-	<string>project.MonoGame.GameStateManagement</string>
-	<key>MinimumOSVersion</key>
-	<string>3.1</string>
-	<key>UIDeviceFamily</key>
-	<array>
-		<integer>1</integer>
-	</array>
-	<key>UISupportedInterfaceOrientations</key>
-	<array>
-		<string>UIInterfaceOrientationPortrait</string>
-		<string>UIInterfaceOrientationPortraitUpsideDown</string>
-	</array>
-</dict>
-</plist>

+ 0 - 19
Input/Info.iOS.plist

@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>CFBundleDisplayName</key>
-	<string>Input</string>
-	<key>UIDeviceFamily</key>
-	<array>
-		<integer>1</integer>
-	</array>
-	<key>UISupportedInterfaceOrientations</key>
-	<array>
-		<string>UIInterfaceOrientationPortrait</string>
-		<string>UIInterfaceOrientationPortraitUpsideDown</string>
-		<string>UIInterfaceOrientationLandscapeLeft</string>
-		<string>UIInterfaceOrientationLandscapeRight</string>
-	</array>
-</dict>
-</plist>

+ 0 - 25
MultiTouch/Info.iOS.plist

@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>CFBundleDisplayName</key>
-	<string>ChaseAndEvade</string>
-	<key>CFBundleIconFiles</key>
-	<array>
-		<string>GameThumbnail.png</string>
-	</array>
-	<key>CFBundleIdentifier</key>
-	<string>project.MonoGame.MultiTouch</string>
-	<key>MinimumOSVersion</key>
-	<string>3.1</string>
-	<key>UIDeviceFamily</key>
-	<array>
-		<integer>1</integer>
-	</array>
-	<key>UISupportedInterfaceOrientations</key>
-	<array>
-		<string>UIInterfaceOrientationPortrait</string>
-		<string>UIInterfaceOrientationPortraitUpsideDown</string>
-	</array>
-</dict>
-</plist>

+ 0 - 19
Orientation/Info.iOS.plist

@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>CFBundleDisplayName</key>
-	<string>Orientation</string>
-	<key>UIDeviceFamily</key>
-	<array>
-		<integer>1</integer>
-	</array>
-	<key>UISupportedInterfaceOrientations</key>
-	<array>
-		<string>UIInterfaceOrientationPortrait</string>
-		<string>UIInterfaceOrientationPortraitUpsideDown</string>
-		<string>UIInterfaceOrientationLandscapeLeft</string>
-		<string>UIInterfaceOrientationLandscapeRight</string>
-	</array>
-</dict>
-</plist>

+ 0 - 16
ParticleSample/Info.iOS.plist

@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>CFBundleDisplayName</key>
-	<string>ParticleSample</string>
-	<key>CFBundleIconFiles</key>
-	<array>
-		<string>GameThumbnail.png</string>
-	</array>
-	<key>CFBundleIdentifier</key>
-	<string>project.MonoGame.ParticleSample</string>
-	<key>MinimumOSVersion</key>
-	<string>3.1</string>
-</dict>
-</plist>

+ 0 - 13
Peer2PeerSample/Info.iOS.plist

@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>MinimumOSVersion</key>
-	<string>3.2</string>
-	<key>UIDeviceFamily</key>
-	<array>
-		<string>1</string>
-		<string>2</string>
-	</array>
-</dict>
-</plist>

+ 0 - 15
PerPixelCollisionSample/Info.iOS.plist

@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>MinimumOSVersion</key>
-	<string>3.0</string>
-	<key>UISupportedInterfaceOrientations</key>
-	<array>
-		<string>UIInterfaceOrientationPortrait</string>
-		<string>UIInterfaceOrientationPortraitUpsideDown</string>
-		<string>UIInterfaceOrientationLandscapeLeft</string>
-		<string>UIInterfaceOrientationLandscapeRight</string>
-	</array>
-</dict>
-</plist>

+ 0 - 12
Primitives/Info.iOS.plist

@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>UISupportedInterfaceOrientations</key>
-	<array>
-		<string>UIInterfaceOrientationPortrait</string>
-		<string>UIInterfaceOrientationLandscapeLeft</string>
-		<string>UIInterfaceOrientationLandscapeRight</string>
-	</array>
-</dict>
-</plist>

+ 0 - 15
RectangleCollisionSample/Info.iOS.plist

@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>MinimumOSVersion</key>
-	<string>3.0</string>
-	<key>UISupportedInterfaceOrientations</key>
-	<array>
-		<string>UIInterfaceOrientationPortrait</string>
-		<string>UIInterfaceOrientationPortraitUpsideDown</string>
-		<string>UIInterfaceOrientationLandscapeLeft</string>
-		<string>UIInterfaceOrientationLandscapeRight</string>
-	</array>
-</dict>
-</plist>

+ 0 - 21
RenderTarget2DSample/Info.iOS.plist

@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>CFBundleDisplayName</key>
-	<string>RenderTarget2D</string>
-	<key>MinimumOSVersion</key>
-	<string>3.1</string>
-	<key>UIDeviceFamily</key>
-	<array>
-		<string>1</string>
-	</array>
-	<key>UISupportedInterfaceOrientations</key>
-	<array>
-		<string>UIInterfaceOrientationPortrait</string>
-		<string>UIInterfaceOrientationPortraitUpsideDown</string>
-		<string>UIInterfaceOrientationLandscapeLeft</string>
-		<string>UIInterfaceOrientationLandscapeRight</string>
-	</array>
-</dict>
-</plist>

+ 0 - 25
RockRain/Info.iOS.plist

@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>CFBundleDisplayName</key>
-	<string>ChaseAndEvade</string>
-	<key>CFBundleIconFiles</key>
-	<array>
-		<string>GameThumbnail.png</string>
-	</array>
-	<key>CFBundleIdentifier</key>
-	<string>project.MonoGame.RockRain</string>
-	<key>MinimumOSVersion</key>
-	<string>3.1</string>
-	<key>UIDeviceFamily</key>
-	<array>
-		<integer>1</integer>
-	</array>
-	<key>UISupportedInterfaceOrientations</key>
-	<array>
-		<string>UIInterfaceOrientationPortrait</string>
-		<string>UIInterfaceOrientationPortraitUpsideDown</string>
-	</array>
-</dict>
-</plist>

+ 0 - 14
SpriteFont/Info.iOS.plist

@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>CFBundleDisplayName</key>
-	<string>SpriteFont</string>
-	<key>CFBundleIconFiles</key>
-	<array>
-		<string>monogameicon.png</string>
-	</array>
-	<key>MinimumOSVersion</key>
-	<string>3.1</string>
-</dict>
-</plist>

+ 0 - 5
TiledSprites/Info.iOS.plist

@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-  <dict />
-</plist>

+ 0 - 16
TouchGesture/Info.iOS.plist

@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>CFBundleDisplayName</key>
-	<string>Touch Gesture</string>
-	<key>CFBundleIconFiles</key>
-	<array>
-		<string>GameThumbnail.png</string>
-	</array>
-	<key>CFBundleIdentifier</key>
-	<string>project.MonoGame.TouchGesture</string>
-	<key>MinimumOSVersion</key>
-	<string>3.2</string>
-</dict>
-</plist>

+ 0 - 15
TransformedCollisionSample/Info.iOS.plist

@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>MinimumOSVersion</key>
-	<string>3.0</string>
-	<key>UISupportedInterfaceOrientations</key>
-	<array>
-		<string>UIInterfaceOrientationPortrait</string>
-		<string>UIInterfaceOrientationPortraitUpsideDown</string>
-		<string>UIInterfaceOrientationLandscapeLeft</string>
-		<string>UIInterfaceOrientationLandscapeRight</string>
-	</array>
-</dict>
-</plist>

+ 0 - 17
VideoPlayer/Info.iOS.plist

@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>CFBundleDisplayName</key>
-	<string>Video Player</string>
-	<key>UIDeviceFamily</key>
-	<array>
-		<string>1</string>
-	</array>
-	<key>UISupportedInterfaceOrientations</key>
-	<array>
-		<string>UIInterfaceOrientationLandscapeLeft</string>
-		<string>UIInterfaceOrientationLandscapeRight</string>
-	</array>
-</dict>
-</plist>

+ 0 - 25
VirtualGamePad/Info.iOS.plist

@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>CFBundleDisplayName</key>
-	<string>ChaseAndEvade</string>
-	<key>CFBundleIconFiles</key>
-	<array>
-		<string>monogameicon.png</string>
-	</array>
-	<key>CFBundleIdentifier</key>
-	<string>project.MonoGame.VirtualGamePad</string>
-	<key>MinimumOSVersion</key>
-	<string>3.1</string>
-	<key>UIDeviceFamily</key>
-	<array>
-		<integer>1</integer>
-	</array>
-	<key>UISupportedInterfaceOrientations</key>
-	<array>
-		<string>UIInterfaceOrientationPortrait</string>
-		<string>UIInterfaceOrientationPortraitUpsideDown</string>
-	</array>
-</dict>
-</plist>

+ 0 - 16
Waypoint/Info.iOS.plist

@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>CFBundleDisplayName</key>
-	<string>Waypoint</string>
-	<key>CFBundleIconFiles</key>
-	<array>
-		<string>GameThumbnail.png</string>
-	</array>
-	<key>CFBundleIdentifier</key>
-	<string>wayp</string>
-	<key>MinimumOSVersion</key>
-	<string>3.1</string>
-</dict>
-</plist>

+ 0 - 16
XNAPacMan/Info.iOS.plist

@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>CFBundleDisplayName</key>
-	<string>Waypoint</string>
-	<key>CFBundleIconFiles</key>
-	<array>
-		<string>GameThumbnail.png</string>
-	</array>
-	<key>CFBundleIdentifier</key>
-	<string>wayp</string>
-	<key>MinimumOSVersion</key>
-	<string>3.1</string>
-</dict>
-</plist>