Removed the .Net binding (moved to its own repository)
@ -1,10 +0,0 @@
|
||||
@echo off
|
||||
|
||||
echo Compiling Visual C++ 2008 libraries...
|
||||
cd vc2008\batch-build
|
||||
call build.bat
|
||||
|
||||
cd ..\..
|
||||
|
||||
echo Done
|
||||
pause
|
@ -1,96 +0,0 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 10.00
|
||||
# Visual Studio 2008
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "sfml-window", "..\..\src\Window\sfml-window.csproj", "{D17DE83D-A592-461F-8AF2-53F9E22E1D0F}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "sfml-graphics", "..\..\src\Graphics\sfml-graphics.csproj", "{46786269-57B9-48E7-AA4F-8F4D84609FE6}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "sfml-audio", "..\..\src\Audio\sfml-audio.csproj", "{0B202C4D-A457-47FE-84A3-031DD878C6BE}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "opengl", "..\..\examples\opengl\opengl.csproj", "{160AE11E-138A-4B77-9642-EA74F9A79B4D}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "window", "..\..\examples\window\window.csproj", "{C1FBB9AF-B69A-4D06-9BDC-EAC7606296FF}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "sound", "..\..\examples\sound\sound.csproj", "{16E177F3-A0FF-4091-8521-562E0EBAA3AB}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "sound_capture", "..\..\examples\sound_capture\sound_capture.csproj", "{F2F48990-F81E-41BA-AD01-168F6178C807}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "shader", "..\..\examples\shader\shader.csproj", "{9D4738F7-34EA-433A-A765-AF85A52A174D}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|x64 = Debug|x64
|
||||
Debug|x86 = Debug|x86
|
||||
Release|x64 = Release|x64
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{D17DE83D-A592-461F-8AF2-53F9E22E1D0F}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{D17DE83D-A592-461F-8AF2-53F9E22E1D0F}.Debug|x64.Build.0 = Debug|x64
|
||||
{D17DE83D-A592-461F-8AF2-53F9E22E1D0F}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{D17DE83D-A592-461F-8AF2-53F9E22E1D0F}.Debug|x86.Build.0 = Debug|x86
|
||||
{D17DE83D-A592-461F-8AF2-53F9E22E1D0F}.Release|x64.ActiveCfg = Release|x64
|
||||
{D17DE83D-A592-461F-8AF2-53F9E22E1D0F}.Release|x64.Build.0 = Release|x64
|
||||
{D17DE83D-A592-461F-8AF2-53F9E22E1D0F}.Release|x86.ActiveCfg = Release|x64
|
||||
{D17DE83D-A592-461F-8AF2-53F9E22E1D0F}.Release|x86.Build.0 = Release|x64
|
||||
{46786269-57B9-48E7-AA4F-8F4D84609FE6}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{46786269-57B9-48E7-AA4F-8F4D84609FE6}.Debug|x64.Build.0 = Debug|x64
|
||||
{46786269-57B9-48E7-AA4F-8F4D84609FE6}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{46786269-57B9-48E7-AA4F-8F4D84609FE6}.Debug|x86.Build.0 = Debug|x86
|
||||
{46786269-57B9-48E7-AA4F-8F4D84609FE6}.Release|x64.ActiveCfg = Release|x64
|
||||
{46786269-57B9-48E7-AA4F-8F4D84609FE6}.Release|x64.Build.0 = Release|x64
|
||||
{46786269-57B9-48E7-AA4F-8F4D84609FE6}.Release|x86.ActiveCfg = Release|x64
|
||||
{46786269-57B9-48E7-AA4F-8F4D84609FE6}.Release|x86.Build.0 = Release|x64
|
||||
{0B202C4D-A457-47FE-84A3-031DD878C6BE}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{0B202C4D-A457-47FE-84A3-031DD878C6BE}.Debug|x64.Build.0 = Debug|x64
|
||||
{0B202C4D-A457-47FE-84A3-031DD878C6BE}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{0B202C4D-A457-47FE-84A3-031DD878C6BE}.Debug|x86.Build.0 = Debug|x86
|
||||
{0B202C4D-A457-47FE-84A3-031DD878C6BE}.Release|x64.ActiveCfg = Release|x64
|
||||
{0B202C4D-A457-47FE-84A3-031DD878C6BE}.Release|x64.Build.0 = Release|x64
|
||||
{0B202C4D-A457-47FE-84A3-031DD878C6BE}.Release|x86.ActiveCfg = Release|x64
|
||||
{0B202C4D-A457-47FE-84A3-031DD878C6BE}.Release|x86.Build.0 = Release|x64
|
||||
{160AE11E-138A-4B77-9642-EA74F9A79B4D}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{160AE11E-138A-4B77-9642-EA74F9A79B4D}.Debug|x64.Build.0 = Debug|x64
|
||||
{160AE11E-138A-4B77-9642-EA74F9A79B4D}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{160AE11E-138A-4B77-9642-EA74F9A79B4D}.Debug|x86.Build.0 = Debug|x86
|
||||
{160AE11E-138A-4B77-9642-EA74F9A79B4D}.Release|x64.ActiveCfg = Release|x64
|
||||
{160AE11E-138A-4B77-9642-EA74F9A79B4D}.Release|x64.Build.0 = Release|x64
|
||||
{160AE11E-138A-4B77-9642-EA74F9A79B4D}.Release|x86.ActiveCfg = Release|x64
|
||||
{160AE11E-138A-4B77-9642-EA74F9A79B4D}.Release|x86.Build.0 = Release|x64
|
||||
{C1FBB9AF-B69A-4D06-9BDC-EAC7606296FF}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{C1FBB9AF-B69A-4D06-9BDC-EAC7606296FF}.Debug|x64.Build.0 = Debug|x64
|
||||
{C1FBB9AF-B69A-4D06-9BDC-EAC7606296FF}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{C1FBB9AF-B69A-4D06-9BDC-EAC7606296FF}.Debug|x86.Build.0 = Debug|x86
|
||||
{C1FBB9AF-B69A-4D06-9BDC-EAC7606296FF}.Release|x64.ActiveCfg = Release|x64
|
||||
{C1FBB9AF-B69A-4D06-9BDC-EAC7606296FF}.Release|x64.Build.0 = Release|x64
|
||||
{C1FBB9AF-B69A-4D06-9BDC-EAC7606296FF}.Release|x86.ActiveCfg = Release|x64
|
||||
{C1FBB9AF-B69A-4D06-9BDC-EAC7606296FF}.Release|x86.Build.0 = Release|x64
|
||||
{16E177F3-A0FF-4091-8521-562E0EBAA3AB}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{16E177F3-A0FF-4091-8521-562E0EBAA3AB}.Debug|x64.Build.0 = Debug|x64
|
||||
{16E177F3-A0FF-4091-8521-562E0EBAA3AB}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{16E177F3-A0FF-4091-8521-562E0EBAA3AB}.Debug|x86.Build.0 = Debug|x86
|
||||
{16E177F3-A0FF-4091-8521-562E0EBAA3AB}.Release|x64.ActiveCfg = Release|x64
|
||||
{16E177F3-A0FF-4091-8521-562E0EBAA3AB}.Release|x64.Build.0 = Release|x64
|
||||
{16E177F3-A0FF-4091-8521-562E0EBAA3AB}.Release|x86.ActiveCfg = Release|x64
|
||||
{16E177F3-A0FF-4091-8521-562E0EBAA3AB}.Release|x86.Build.0 = Release|x64
|
||||
{F2F48990-F81E-41BA-AD01-168F6178C807}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{F2F48990-F81E-41BA-AD01-168F6178C807}.Debug|x64.Build.0 = Debug|x64
|
||||
{F2F48990-F81E-41BA-AD01-168F6178C807}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{F2F48990-F81E-41BA-AD01-168F6178C807}.Debug|x86.Build.0 = Debug|x86
|
||||
{F2F48990-F81E-41BA-AD01-168F6178C807}.Release|x64.ActiveCfg = Release|x64
|
||||
{F2F48990-F81E-41BA-AD01-168F6178C807}.Release|x64.Build.0 = Release|x64
|
||||
{F2F48990-F81E-41BA-AD01-168F6178C807}.Release|x86.ActiveCfg = Release|x64
|
||||
{F2F48990-F81E-41BA-AD01-168F6178C807}.Release|x86.Build.0 = Release|x64
|
||||
{9D4738F7-34EA-433A-A765-AF85A52A174D}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{9D4738F7-34EA-433A-A765-AF85A52A174D}.Debug|x64.Build.0 = Debug|x64
|
||||
{9D4738F7-34EA-433A-A765-AF85A52A174D}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{9D4738F7-34EA-433A-A765-AF85A52A174D}.Debug|x86.Build.0 = Debug|x86
|
||||
{9D4738F7-34EA-433A-A765-AF85A52A174D}.Release|x64.ActiveCfg = Release|x64
|
||||
{9D4738F7-34EA-433A-A765-AF85A52A174D}.Release|x64.Build.0 = Release|x64
|
||||
{9D4738F7-34EA-433A-A765-AF85A52A174D}.Release|x86.ActiveCfg = Release|x64
|
||||
{9D4738F7-34EA-433A-A765-AF85A52A174D}.Release|x86.Build.0 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
@ -1,8 +0,0 @@
|
||||
@echo off
|
||||
|
||||
set MSBUILD=%WINDIR%\Microsoft.NET\Framework\v3.5\msbuild
|
||||
|
||||
echo Compiling release libraries...
|
||||
%MSBUILD% ..\SFML.net.sln /verbosity:q /maxcpucount /target:sfml-window,sfml-graphics,sfml-audio /property:Configuration="Release"
|
||||
|
||||
echo Done
|
71
bindings/dotnet/doc/build/MainPage.html
vendored
@ -1,71 +0,0 @@
|
||||
<h2>Welcome</h2>
|
||||
<p>
|
||||
Welcome to the official SFML.Net documentation. Here you will find a detailed
|
||||
description of all the SFML.Net classes. <br/>
|
||||
If you are looking for tutorials, help or whatever, you can visit the official website
|
||||
at <a href="http://www.sfml-dev.org/">www.sfml-dev.org</a>.
|
||||
</p>
|
||||
|
||||
<h2>Short example</h2>
|
||||
<p>
|
||||
Here is a short example in C#, to show you how simple it is to use SFML.Net :
|
||||
</p>
|
||||
|
||||
<pre style="background-color:#F0F0F0">
|
||||
<span style="color:blue">using</span> System;
|
||||
<span style="color:blue">using</span> SFML.Audio;
|
||||
<span style="color:blue">using</span> SFML.Window;
|
||||
<span style="color:blue">using</span> SFML.Graphics;
|
||||
|
||||
<span style="color:blue">namespace</span> Example
|
||||
{
|
||||
<span style="color:blue">class</span> <span style="color:#2B91AF">Program</span>
|
||||
{
|
||||
<span style="color:blue">static void</span> OnClose(<span style="color:blue">object</span> sender, <span style="color:#2B91AF">EventArgs</span> e)
|
||||
{
|
||||
<span style="color:#008000">// Close the window when OnClose event is received</span>
|
||||
<span style="color:#2B91AF">RenderWindow</span> window = (<span style="color:#2B91AF">RenderWindow</span>)sender;
|
||||
window.Close();
|
||||
}
|
||||
|
||||
<span style="color:blue">static void</span> Main(<span style="color:blue">string</span>[] args)
|
||||
{
|
||||
<span style="color:#008000">// Create the main window</span>
|
||||
<span style="color:#2B91AF">RenderWindow</span> window = <span style="color:blue">new</span> <span style="color:#2B91AF">RenderWindow</span>(<span style="color:blue">new</span> <span style="color:#2B91AF">VideoMode</span>(800, 600), <span style="color:#A31515">"SFML window"</span>);
|
||||
window.Closed += <span style="color:blue">new</span> <span style="color:#2B91AF">EventHandler</span>(OnClose);
|
||||
|
||||
<span style="color:#008000">// Load a sprite to display</span>
|
||||
<span style="color:#2B91AF">Image</span> image = <span style="color:blue">new</span> <span style="color:#2B91AF">Image</span>(<span style="color:#A31515">"cute_image.jpg"</span>);
|
||||
<span style="color:#2B91AF">Sprite</span> sprite = <span style="color:blue">new</span> <span style="color:#2B91AF">Sprite</span>(image);
|
||||
|
||||
<span style="color:#008000">// Create a graphical string to display</span>
|
||||
<span style="color:#2B91AF">Font</span> font = <span style="color:blue">new</span> <span style="color:#2B91AF">Font</span>(<span style="color:#A31515">"arial.ttf"</span>);
|
||||
<span style="color:#2B91AF">Text</span> text = <span style="color:blue">new</span> <span style="color:#2B91AF">Text</span>(<span style="color:#A31515">"Hello SFML.Net"</span>, font);
|
||||
|
||||
<span style="color:#008000">// Load a music to play</span>
|
||||
<span style="color:#2B91AF">Music</span> music = <span style="color:blue">new</span> Music(<span style="color:#A31515">"nice_music.ogg"</span>);
|
||||
music.Play();
|
||||
|
||||
<span style="color:#008000">// Start the game loop</span>
|
||||
<span style="color:blue">while</span> (window.IsOpened())
|
||||
{
|
||||
<span style="color:#008000">// Process events</span>
|
||||
window.DispatchEvents();
|
||||
|
||||
<span style="color:#008000">// Clear screen</span>
|
||||
window.Clear();
|
||||
|
||||
<span style="color:#008000">// Draw the sprite</span>
|
||||
window.Draw(sprite);
|
||||
|
||||
<span style="color:#008000">// Draw the string</span>
|
||||
window.Draw(text);
|
||||
|
||||
<span style="color:#008000">// Update the window</span>
|
||||
window.Display();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</pre>
|
||||
|
38
bindings/dotnet/doc/build/SFML.ndoc
vendored
@ -1,38 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<project SchemaVersion="2.0">
|
||||
<assemblies>
|
||||
<assembly location="..\..\lib\sfmlnet-audio.dll" documentation=".\audio-doc.xml" />
|
||||
<assembly location="..\..\lib\sfmlnet-graphics.dll" documentation=".\graphics-doc.xml" />
|
||||
<assembly location="..\..\lib\sfmlnet-window.dll" documentation=".\window-doc.xml" />
|
||||
</assemblies>
|
||||
<documenters>
|
||||
<documenter name="MSDN-Help2">
|
||||
<property name="PlugInNamespace" value="ms.vscc" />
|
||||
<property name="OutputDirectory" value="..\html\" />
|
||||
<property name="HtmlHelpName" value="SFML.Net" />
|
||||
<property name="Title" value="SFML.Net documentation" />
|
||||
</documenter>
|
||||
<documenter name="XML">
|
||||
<property name="OutputFile" value=".\doc\doc.xml" />
|
||||
</documenter>
|
||||
<documenter name="Intellisense">
|
||||
<property name="OutputDirectory" value="..\intellisense\" />
|
||||
<property name="DocumentProtected" value="False" />
|
||||
</documenter>
|
||||
<documenter name="MSDN-CHM">
|
||||
<property name="RootPageFileName" value=".\MainPage.html" />
|
||||
<property name="OutputDirectory" value="..\" />
|
||||
<property name="HtmlHelpName" value="SFML.Net" />
|
||||
<property name="Title" value="SFML.Net documentation" />
|
||||
<property name="IncrementalBuild" value="True" />
|
||||
<property name="DocumentExplicitInterfaceImplementations" value="True" />
|
||||
<property name="DocumentProtected" value="False" />
|
||||
<property name="CleanIntermediates" value="True" />
|
||||
</documenter>
|
||||
<documenter name="MSDN-Web">
|
||||
<property name="OutputDirectory" value="..\msdn\" />
|
||||
<property name="HtmlHelpName" value="SFML.Net" />
|
||||
<property name="Title" value="SFML.Net documentation" />
|
||||
</documenter>
|
||||
</documenters>
|
||||
</project>
|
@ -1,174 +0,0 @@
|
||||
using System;
|
||||
using SFML;
|
||||
using SFML.Graphics;
|
||||
using SFML.Window;
|
||||
using Tao.OpenGl;
|
||||
|
||||
namespace opengl
|
||||
{
|
||||
static class Program
|
||||
{
|
||||
/// <summary>
|
||||
/// The main entry point for the application.
|
||||
/// </summary>
|
||||
static void Main()
|
||||
{
|
||||
// Create main window
|
||||
RenderWindow window = new RenderWindow(new VideoMode(800, 600), "SFML.Net OpenGL", Styles.Default, new ContextSettings(32, 0));
|
||||
|
||||
// Setup event handlers
|
||||
window.Closed += new EventHandler(OnClosed);
|
||||
window.KeyPressed += new EventHandler<KeyEventArgs>(OnKeyPressed);
|
||||
window.Resized += new EventHandler<SizeEventArgs>(OnResized);
|
||||
|
||||
// Create a sprite for the background
|
||||
Image backgroundImage = new Image("resources/background.jpg");
|
||||
Sprite background = new Sprite(backgroundImage);
|
||||
|
||||
// Create a text to display
|
||||
Text text = new Text("SFML / OpenGL demo");
|
||||
text.Position = new Vector2f(250.0F, 450.0F);
|
||||
text.Color = new Color(255, 255, 255, 170);
|
||||
|
||||
// Load an OpenGL texture.
|
||||
// We could directly use a sf::Image as an OpenGL texture (with its Bind() member function),
|
||||
// but here we want more control on it (generate mipmaps, ...) so we create a new one
|
||||
int texture = 0;
|
||||
using (Image image = new Image("resources/texture.jpg"))
|
||||
{
|
||||
Gl.glGenTextures(1, out texture);
|
||||
Gl.glBindTexture(Gl.GL_TEXTURE_2D, texture);
|
||||
Glu.gluBuild2DMipmaps(Gl.GL_TEXTURE_2D, Gl.GL_RGBA, (int)image.Width, (int)image.Height, Gl.GL_RGBA, Gl.GL_UNSIGNED_BYTE, image.Pixels);
|
||||
Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MAG_FILTER, Gl.GL_LINEAR);
|
||||
Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MIN_FILTER, Gl.GL_LINEAR_MIPMAP_LINEAR);
|
||||
}
|
||||
|
||||
// Enable Z-buffer read and write
|
||||
Gl.glEnable(Gl.GL_DEPTH_TEST);
|
||||
Gl.glDepthMask(Gl.GL_TRUE);
|
||||
Gl.glClearDepth(1.0F);
|
||||
|
||||
// Setup a perspective projection
|
||||
Gl.glMatrixMode(Gl.GL_PROJECTION);
|
||||
Gl.glLoadIdentity();
|
||||
Glu.gluPerspective(90.0F, 1.0F, 1.0F, 500.0F);
|
||||
|
||||
// Bind our texture
|
||||
Gl.glEnable(Gl.GL_TEXTURE_2D);
|
||||
Gl.glBindTexture(Gl.GL_TEXTURE_2D, texture);
|
||||
Gl.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
|
||||
float time = 0.0F;
|
||||
|
||||
// Start game loop
|
||||
while (window.IsOpened())
|
||||
{
|
||||
// Process events
|
||||
window.DispatchEvents();
|
||||
|
||||
// Clear the window
|
||||
window.Clear();
|
||||
|
||||
// Draw background
|
||||
window.SaveGLStates();
|
||||
window.Draw(background);
|
||||
window.RestoreGLStates();
|
||||
|
||||
// Activate the window before using OpenGL commands.
|
||||
// This is useless here because we have only one window which is
|
||||
// always the active one, but don't forget it if you use multiple windows
|
||||
window.SetActive();
|
||||
|
||||
// Clear depth buffer
|
||||
Gl.glClear(Gl.GL_DEPTH_BUFFER_BIT);
|
||||
|
||||
// We get the position of the mouse cursor, so that we can move the box accordingly
|
||||
float x = window.GetCursorPosition().X * 200.0F / window.Width - 100.0F;
|
||||
float y = -window.GetCursorPosition().Y * 200.0F / window.Height + 100.0F;
|
||||
|
||||
// Apply some transformations
|
||||
time += window.GetFrameTime() / 1000.0F;
|
||||
Gl.glMatrixMode(Gl.GL_MODELVIEW);
|
||||
Gl.glLoadIdentity();
|
||||
Gl.glTranslatef(x, y, -100.0F);
|
||||
Gl.glRotatef(time * 50, 1.0F, 0.0F, 0.0F);
|
||||
Gl.glRotatef(time * 30, 0.0F, 1.0F, 0.0F);
|
||||
Gl.glRotatef(time * 90, 0.0F, 0.0F, 1.0F);
|
||||
|
||||
// Draw a cube
|
||||
float size = 20.0F;
|
||||
Gl.glBegin(Gl.GL_QUADS);
|
||||
|
||||
Gl.glTexCoord2f(0, 0); Gl.glVertex3f(-size, -size, -size);
|
||||
Gl.glTexCoord2f(0, 1); Gl.glVertex3f(-size, size, -size);
|
||||
Gl.glTexCoord2f(1, 1); Gl.glVertex3f( size, size, -size);
|
||||
Gl.glTexCoord2f(1, 0); Gl.glVertex3f( size, -size, -size);
|
||||
|
||||
Gl.glTexCoord2f(0, 0); Gl.glVertex3f(-size, -size, size);
|
||||
Gl.glTexCoord2f(0, 1); Gl.glVertex3f(-size, size, size);
|
||||
Gl.glTexCoord2f(1, 1); Gl.glVertex3f( size, size, size);
|
||||
Gl.glTexCoord2f(1, 0); Gl.glVertex3f( size, -size, size);
|
||||
|
||||
Gl.glTexCoord2f(0, 0); Gl.glVertex3f(-size, -size, -size);
|
||||
Gl.glTexCoord2f(0, 1); Gl.glVertex3f(-size, size, -size);
|
||||
Gl.glTexCoord2f(1, 1); Gl.glVertex3f(-size, size, size);
|
||||
Gl.glTexCoord2f(1, 0); Gl.glVertex3f(-size, -size, size);
|
||||
|
||||
Gl.glTexCoord2f(0, 0); Gl.glVertex3f(size, -size, -size);
|
||||
Gl.glTexCoord2f(0, 1); Gl.glVertex3f(size, size, -size);
|
||||
Gl.glTexCoord2f(1, 1); Gl.glVertex3f(size, size, size);
|
||||
Gl.glTexCoord2f(1, 0); Gl.glVertex3f(size, -size, size);
|
||||
|
||||
Gl.glTexCoord2f(0, 1); Gl.glVertex3f(-size, -size, size);
|
||||
Gl.glTexCoord2f(0, 0); Gl.glVertex3f(-size, -size, -size);
|
||||
Gl.glTexCoord2f(1, 0); Gl.glVertex3f( size, -size, -size);
|
||||
Gl.glTexCoord2f(1, 1); Gl.glVertex3f( size, -size, size);
|
||||
|
||||
Gl.glTexCoord2f(0, 1); Gl.glVertex3f(-size, size, size);
|
||||
Gl.glTexCoord2f(0, 0); Gl.glVertex3f(-size, size, -size);
|
||||
Gl.glTexCoord2f(1, 0); Gl.glVertex3f( size, size, -size);
|
||||
Gl.glTexCoord2f(1, 1); Gl.glVertex3f( size, size, size);
|
||||
|
||||
Gl.glEnd();
|
||||
|
||||
// Draw some text on top of our OpenGL object
|
||||
window.SaveGLStates();
|
||||
window.Draw(text);
|
||||
window.RestoreGLStates();
|
||||
|
||||
// Finally, display the rendered frame on screen
|
||||
window.Display();
|
||||
}
|
||||
|
||||
// Don't forget to destroy our texture
|
||||
Gl.glDeleteTextures(1, ref texture);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Function called when the window is closed
|
||||
/// </summary>
|
||||
static void OnClosed(object sender, EventArgs e)
|
||||
{
|
||||
RenderWindow window = (RenderWindow)sender;
|
||||
window.Close();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Function called when a key is pressed
|
||||
/// </summary>
|
||||
static void OnKeyPressed(object sender, KeyEventArgs e)
|
||||
{
|
||||
RenderWindow window = (RenderWindow)sender;
|
||||
if (e.Code == Keyboard.Key.Escape)
|
||||
window.Close();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Function called when the window is resized
|
||||
/// </summary>
|
||||
static void OnResized(object sender, SizeEventArgs e)
|
||||
{
|
||||
Gl.glViewport(0, 0, (int)e.Width, (int)e.Height);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,80 +0,0 @@
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>9.0.21022</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{160AE11E-138A-4B77-9642-EA74F9A79B4D}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>opengl</RootNamespace>
|
||||
<AssemblyName>opengl</AssemblyName>
|
||||
<StartupObject>opengl.Program</StartupObject>
|
||||
<FileUpgradeFlags>
|
||||
</FileUpgradeFlags>
|
||||
<OldToolsVersion>2.0</OldToolsVersion>
|
||||
<UpgradeBackupLocation>
|
||||
</UpgradeBackupLocation>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>.\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<DebugType>full</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
|
||||
<OutputPath>.\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>.\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<DebugType>full</DebugType>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
|
||||
<OutputPath>.\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\src\Graphics\sfml-graphics.csproj">
|
||||
<Project>{46786269-57B9-48E7-AA4F-8F4D84609FE6}</Project>
|
||||
<Name>sfml-graphics</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\src\Window\sfml-window.csproj">
|
||||
<Project>{D17DE83D-A592-461F-8AF2-53F9E22E1D0F}</Project>
|
||||
<Name>sfml-window</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="OpenGL.cs">
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Tao.FreeGlut, Version=2.4.0.2, Culture=neutral, PublicKeyToken=6e602a6ad6c0d06d, processorArchitecture=MSIL" />
|
||||
<Reference Include="Tao.OpenGl, Version=2.1.0.12, Culture=neutral, PublicKeyToken=1ca010269a4501ef, processorArchitecture=MSIL" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Properties\" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
Before Width: | Height: | Size: 140 KiB |
Before Width: | Height: | Size: 20 KiB |
@ -1,247 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using SFML;
|
||||
using SFML.Graphics;
|
||||
using SFML.Window;
|
||||
|
||||
namespace shader
|
||||
{
|
||||
/// <summary>
|
||||
/// A class to simplify shader selection
|
||||
/// </summary>
|
||||
class ShaderSelector
|
||||
{
|
||||
// Constructor
|
||||
public ShaderSelector(Dictionary<string, Shader> owner)
|
||||
{
|
||||
myOwner = owner;
|
||||
myIterator = owner.GetEnumerator();
|
||||
myIterator.MoveNext();
|
||||
}
|
||||
|
||||
// Select the next shader
|
||||
public void GotoNext()
|
||||
{
|
||||
if (myIterator.MoveNext() == false)
|
||||
{
|
||||
myIterator = myOwner.GetEnumerator();
|
||||
myIterator.MoveNext();
|
||||
}
|
||||
}
|
||||
|
||||
// Update the shader parameters
|
||||
public void Update(float x, float y)
|
||||
{
|
||||
if (myIterator.Current.Key == "blur") myIterator.Current.Value.SetParameter("offset", x * y * 0.05f);
|
||||
else if (myIterator.Current.Key == "colorize") myIterator.Current.Value.SetParameter("color", 0.3f, x, y);
|
||||
else if (myIterator.Current.Key == "fisheye") myIterator.Current.Value.SetParameter("mouse", x, y);
|
||||
else if (myIterator.Current.Key == "wave") myIterator.Current.Value.SetParameter("offset", x, y);
|
||||
else if (myIterator.Current.Key == "pixelate") myIterator.Current.Value.SetParameter("mouse", x, y);
|
||||
}
|
||||
|
||||
// Get the name of the current shader
|
||||
public string Name
|
||||
{
|
||||
get {return myIterator.Current.Key;}
|
||||
}
|
||||
|
||||
// Get the current shader
|
||||
public Shader Shader
|
||||
{
|
||||
get {return myIterator.Current.Value;}
|
||||
}
|
||||
|
||||
private Dictionary<string, Shader> myOwner;
|
||||
private Dictionary<string, Shader>.Enumerator myIterator;
|
||||
};
|
||||
|
||||
static class Program
|
||||
{
|
||||
private static Dictionary<string, Shader> shaders;
|
||||
private static ShaderSelector backgroundShader;
|
||||
private static ShaderSelector entityShader;
|
||||
private static ShaderSelector globalShader;
|
||||
private static Text shaderText;
|
||||
|
||||
/// <summary>
|
||||
/// The main entry point for the application.
|
||||
/// </summary>
|
||||
static void Main()
|
||||
{
|
||||
// Create the main window
|
||||
RenderWindow window = new RenderWindow(new VideoMode(800, 600), "SFML.Net Shader");
|
||||
|
||||
// Setup event handlers
|
||||
window.Closed += new EventHandler(OnClosed);
|
||||
window.KeyPressed += new EventHandler<KeyEventArgs>(OnKeyPressed);
|
||||
|
||||
// Check that the system can use shaders
|
||||
if (Shader.IsAvailable == false)
|
||||
{
|
||||
DisplayError(window);
|
||||
return;
|
||||
}
|
||||
|
||||
// Create the render image
|
||||
RenderImage image = new RenderImage(window.Width, window.Height);
|
||||
|
||||
// Load a background image to display
|
||||
Sprite background = new Sprite(new Image("resources/background.jpg"));
|
||||
background.Image.Smooth = false;
|
||||
|
||||
// Load a sprite which we'll move into the scene
|
||||
Sprite entity = new Sprite(new Image("resources/sprite.png"));
|
||||
|
||||
// Load the text font
|
||||
Font font = new Font("resources/arial.ttf");
|
||||
|
||||
// Load the image needed for the wave effect
|
||||
Image waveImage = new Image("resources/wave.jpg");
|
||||
|
||||
// Load all effects
|
||||
shaders = new Dictionary<string, Shader>();
|
||||
shaders["nothing"] = new Shader("resources/nothing.sfx");
|
||||
shaders["blur"] = new Shader("resources/blur.sfx");
|
||||
shaders["colorize"] = new Shader("resources/colorize.sfx");
|
||||
shaders["fisheye"] = new Shader("resources/fisheye.sfx");
|
||||
shaders["wave"] = new Shader("resources/wave.sfx");
|
||||
shaders["pixelate"] = new Shader("resources/pixelate.sfx");
|
||||
backgroundShader = new ShaderSelector(shaders);
|
||||
entityShader = new ShaderSelector(shaders);
|
||||
globalShader = new ShaderSelector(shaders);
|
||||
|
||||
// Do specific initializations
|
||||
shaders["nothing"].SetCurrentTexture("texture");
|
||||
shaders["blur"].SetCurrentTexture("texture");
|
||||
shaders["blur"].SetParameter("offset", 0.0F);
|
||||
shaders["colorize"].SetCurrentTexture("texture");
|
||||
shaders["colorize"].SetParameter("color", 1.0F, 1.0F, 1.0F);
|
||||
shaders["fisheye"].SetCurrentTexture("texture");
|
||||
shaders["wave"].SetCurrentTexture("texture");
|
||||
shaders["wave"].SetTexture("wave", waveImage);
|
||||
shaders["pixelate"].SetCurrentTexture("texture");
|
||||
|
||||
// Define a string for displaying current effect description
|
||||
shaderText = new Text();
|
||||
shaderText.Font = font;
|
||||
shaderText.CharacterSize = 20;
|
||||
shaderText.Position = new Vector2f(5.0F, 0.0F);
|
||||
shaderText.Color = new Color(250, 100, 30);
|
||||
shaderText.DisplayedString = "Background shader: \"" + backgroundShader.Name + "\"\n" +
|
||||
"Flower shader: \"" + entityShader.Name + "\"\n" +
|
||||
"Global shader: \"" + globalShader.Name + "\"\n";
|
||||
|
||||
// Define a string for displaying help
|
||||
Text infoText = new Text();
|
||||
infoText.Font = font;
|
||||
infoText.CharacterSize = 20;
|
||||
infoText.Position = new Vector2f(5.0F, 500.0F);
|
||||
infoText.Color = new Color(250, 100, 30);
|
||||
infoText.DisplayedString = "Move your mouse to change the shaders' parameters\n" +
|
||||
"Press numpad 1 to change the background shader\n" +
|
||||
"Press numpad 2 to change the flower shader\n" +
|
||||
"Press numpad 3 to change the global shader";
|
||||
|
||||
// Start the game loop
|
||||
float time = 0.0F;
|
||||
while (window.IsOpened())
|
||||
{
|
||||
// Process events
|
||||
window.DispatchEvents();
|
||||
|
||||
// Get the mouse position in the range [0, 1]
|
||||
float x = window.GetCursorPosition().X / (float)window.Width;
|
||||
float y = window.GetCursorPosition().Y / (float)window.Height;
|
||||
|
||||
// Update the shaders
|
||||
backgroundShader.Update(x, y);
|
||||
entityShader.Update(x, y);
|
||||
globalShader.Update(x, y);
|
||||
|
||||
// Animate the sprite
|
||||
time += window.GetFrameTime() / 1000.0F;
|
||||
float entityX = (float)(Math.Cos(time * 1.3) + 1.2) * 300;
|
||||
float entityY = (float)(Math.Cos(time * 0.8) + 1.2) * 200;
|
||||
entity.Position = new Vector2f(entityX, entityY);
|
||||
entity.Rotation = time * 100;
|
||||
|
||||
// Draw the background and the moving entity to the render image
|
||||
image.Draw(background, backgroundShader.Shader);
|
||||
image.Draw(entity, entityShader.Shader);
|
||||
image.Display();
|
||||
|
||||
// Draw the contents of the render image to the window
|
||||
window.Draw(new Sprite(image.Image), globalShader.Shader);
|
||||
|
||||
// Draw interface texts
|
||||
window.Draw(shaderText);
|
||||
window.Draw(infoText);
|
||||
|
||||
// Finally, display the rendered frame on screen
|
||||
window.Display();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Fonction called when the post-effects are not supported ;
|
||||
/// Display an error message and wait until the user exits
|
||||
/// </summary>
|
||||
private static void DisplayError(RenderWindow window)
|
||||
{
|
||||
// Define a string for displaying the error message
|
||||
Text error = new Text("Sorry, your system doesn't support shaders");
|
||||
error.Position = new Vector2f(100.0F, 250.0F);
|
||||
error.Color = new Color(200, 100, 150);
|
||||
|
||||
// Start the game loop
|
||||
while (window.IsOpened())
|
||||
{
|
||||
// Process events
|
||||
window.DispatchEvents();
|
||||
|
||||
// Clear the window
|
||||
window.Clear();
|
||||
|
||||
// Draw the error message
|
||||
window.Draw(error);
|
||||
|
||||
// Finally, display the rendered frame on screen
|
||||
window.Display();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Function called when the window is closed
|
||||
/// </summary>
|
||||
static void OnClosed(object sender, EventArgs e)
|
||||
{
|
||||
RenderWindow window = (RenderWindow)sender;
|
||||
window.Close();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Function called when a key is pressed
|
||||
/// </summary>
|
||||
static void OnKeyPressed(object sender, KeyEventArgs e)
|
||||
{
|
||||
RenderWindow window = (RenderWindow)sender;
|
||||
|
||||
// Escape key : exit
|
||||
if (e.Code == Keyboard.Key.Escape)
|
||||
window.Close();
|
||||
|
||||
// Numpad : switch effect
|
||||
switch (e.Code)
|
||||
{
|
||||
case Keyboard.Key.Numpad1: backgroundShader.GotoNext(); break;
|
||||
case Keyboard.Key.Numpad2: entityShader.GotoNext(); break;
|
||||
case Keyboard.Key.Numpad3: globalShader.GotoNext(); break;
|
||||
}
|
||||
|
||||
// Update the text
|
||||
shaderText.DisplayedString = "Background shader: \"" + backgroundShader.Name + "\"\n" +
|
||||
"Flower shader: \"" + entityShader.Name + "\"\n" +
|
||||
"Global shader: \"" + globalShader.Name + "\"\n";
|
||||
}
|
||||
}
|
||||
}
|
Before Width: | Height: | Size: 52 KiB |
@ -1,16 +0,0 @@
|
||||
uniform sampler2D texture;
|
||||
uniform float offset;
|
||||
|
||||
void main()
|
||||
{
|
||||
vec2 offx = vec2(offset, 0.0);
|
||||
vec2 offy = vec2(0.0, offset);
|
||||
|
||||
vec4 c0 = texture2D(texture, gl_TexCoord[0].xy);
|
||||
vec4 c1 = texture2D(texture, gl_TexCoord[0].xy - offy);
|
||||
vec4 c2 = texture2D(texture, gl_TexCoord[0].xy + offy);
|
||||
vec4 c3 = texture2D(texture, gl_TexCoord[0].xy - offx);
|
||||
vec4 c4 = texture2D(texture, gl_TexCoord[0].xy + offx);
|
||||
|
||||
gl_FragColor = gl_Color * (c0 * 0.2 + c1 * 0.2 + c2 * 0.2 + c3 * 0.2 + c4 * 0.2);
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
uniform sampler2D texture;
|
||||
uniform vec3 color;
|
||||
|
||||
void main()
|
||||
{
|
||||
vec4 pixel = texture2D(texture, gl_TexCoord[0].xy) * gl_Color;
|
||||
float gray = pixel.r * 0.39 + pixel.g * 0.50 + pixel.b * 0.11;
|
||||
|
||||
gl_FragColor = vec4(gray * color, 1.0) * 0.6 + pixel * 0.4;
|
||||
gl_FragColor.a = pixel.a;
|
||||
}
|
@ -1,13 +0,0 @@
|
||||
uniform sampler2D texture;
|
||||
uniform vec2 mouse;
|
||||
|
||||
void main()
|
||||
{
|
||||
float len = distance(gl_TexCoord[0].xy, mouse) * 7.0;
|
||||
|
||||
vec2 coords = gl_TexCoord[0].xy;
|
||||
if (len < 1.0)
|
||||
coords += (gl_TexCoord[0].xy - mouse) * len;
|
||||
|
||||
gl_FragColor = texture2D(texture, coords) * gl_Color;
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
uniform sampler2D texture;
|
||||
|
||||
void main()
|
||||
{
|
||||
gl_FragColor = texture2D(texture, gl_TexCoord[0].xy) * gl_Color;
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
uniform sampler2D texture;
|
||||
uniform vec2 mouse;
|
||||
|
||||
void main()
|
||||
{
|
||||
float factor = 5 + 100 * length(mouse);
|
||||
vec2 pos = floor(gl_TexCoord[0].xy * factor + 0.5) / factor;
|
||||
|
||||
gl_FragColor = texture2D(texture, pos) * gl_Color;
|
||||
}
|
Before Width: | Height: | Size: 6.1 KiB |
Before Width: | Height: | Size: 23 KiB |
@ -1,12 +0,0 @@
|
||||
uniform sampler2D texture;
|
||||
uniform sampler2D wave;
|
||||
uniform vec2 offset;
|
||||
|
||||
void main()
|
||||
{
|
||||
vec2 texoffset = texture2D(wave, (gl_TexCoord[0].xy * offset).xy);
|
||||
texoffset -= vec2(0.5, 0.5);
|
||||
texoffset *= 0.05;
|
||||
|
||||
gl_FragColor = texture2D(texture, gl_TexCoord[0].xy + texoffset) * gl_Color;
|
||||
}
|
@ -1,75 +0,0 @@
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>9.0.21022</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{9D4738F7-34EA-433A-A765-AF85A52A174D}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>shader</RootNamespace>
|
||||
<AssemblyName>shader</AssemblyName>
|
||||
<FileUpgradeFlags>
|
||||
</FileUpgradeFlags>
|
||||
<OldToolsVersion>2.0</OldToolsVersion>
|
||||
<UpgradeBackupLocation>
|
||||
</UpgradeBackupLocation>
|
||||
<StartupObject>shader.Program</StartupObject>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>.\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<DebugType>full</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
|
||||
<OutputPath>.\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>.\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<DebugType>full</DebugType>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
|
||||
<OutputPath>.\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\src\Graphics\sfml-graphics.csproj">
|
||||
<Project>{46786269-57B9-48E7-AA4F-8F4D84609FE6}</Project>
|
||||
<Name>sfml-graphics</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\src\Window\sfml-window.csproj">
|
||||
<Project>{D17DE83D-A592-461F-8AF2-53F9E22E1D0F}</Project>
|
||||
<Name>sfml-window</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Shader.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Properties\" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
@ -1,82 +0,0 @@
|
||||
using System;
|
||||
using System.Threading;
|
||||
using SFML;
|
||||
using SFML.Audio;
|
||||
|
||||
namespace sound
|
||||
{
|
||||
static class Program
|
||||
{
|
||||
/// <summary>
|
||||
/// The main entry point for the application.
|
||||
/// </summary>
|
||||
static void Main(string[] args)
|
||||
{
|
||||
// Play a sound
|
||||
PlaySound();
|
||||
Console.Clear();
|
||||
|
||||
// Play a music
|
||||
PlayMusic();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Play a sound
|
||||
/// </summary>
|
||||
private static void PlaySound()
|
||||
{
|
||||
// Load a sound buffer from a wav file
|
||||
SoundBuffer buffer = new SoundBuffer("resources/canary.wav");
|
||||
|
||||
// Display sound informations
|
||||
Console.WriteLine("canary.wav :");
|
||||
Console.WriteLine(" " + buffer.Duration + " sec");
|
||||
Console.WriteLine(" " + buffer.SampleRate + " samples / sec");
|
||||
Console.WriteLine(" " + buffer.ChannelsCount + " channels");
|
||||
|
||||
// Create a sound instance and play it
|
||||
Sound sound = new Sound(buffer);
|
||||
sound.Play();
|
||||
|
||||
// Loop while the sound is playing
|
||||
while (sound.Status == SoundStatus.Playing)
|
||||
{
|
||||
// Display the playing position
|
||||
Console.CursorLeft = 0;
|
||||
Console.Write("Playing... " + sound.PlayingOffset + " sec ");
|
||||
|
||||
// Leave some CPU time for other processes
|
||||
Thread.Sleep(100);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Play a music
|
||||
/// </summary>
|
||||
private static void PlayMusic()
|
||||
{
|
||||
// Load an ogg music file
|
||||
Music music = new Music("resources/orchestral.ogg");
|
||||
|
||||
// Display music informations
|
||||
Console.WriteLine("orchestral.ogg :");
|
||||
Console.WriteLine(" " + music.Duration + " sec");
|
||||
Console.WriteLine(" " + music.SampleRate + " samples / sec");
|
||||
Console.WriteLine(" " + music.ChannelsCount + " channels");
|
||||
|
||||
// Play it
|
||||
music.Play();
|
||||
|
||||
// Loop while the music is playing
|
||||
while (music.Status == SoundStatus.Playing)
|
||||
{
|
||||
// Display the playing position
|
||||
Console.CursorLeft = 0;
|
||||
Console.Write("Playing... " + music.PlayingOffset + " sec ");
|
||||
|
||||
// Leave some CPU time for other processes
|
||||
Thread.Sleep(100);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,75 +0,0 @@
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>9.0.21022</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{16E177F3-A0FF-4091-8521-562E0EBAA3AB}</ProjectGuid>
|
||||
<OutputType>Exe</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>sound</RootNamespace>
|
||||
<AssemblyName>sound</AssemblyName>
|
||||
<StartupObject>sound.Program</StartupObject>
|
||||
<FileUpgradeFlags>
|
||||
</FileUpgradeFlags>
|
||||
<OldToolsVersion>2.0</OldToolsVersion>
|
||||
<UpgradeBackupLocation>
|
||||
</UpgradeBackupLocation>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>.\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<DebugType>full</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
|
||||
<OutputPath>.\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>.\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<DebugType>full</DebugType>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
|
||||
<OutputPath>.\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\src\Audio\sfml-audio.csproj">
|
||||
<Project>{0B202C4D-A457-47FE-84A3-031DD878C6BE}</Project>
|
||||
<Name>sfml-audio</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\src\Window\sfml-window.csproj">
|
||||
<Project>{D17DE83D-A592-461F-8AF2-53F9E22E1D0F}</Project>
|
||||
<Name>sfml-window</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Sound.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Properties\" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
@ -1,83 +0,0 @@
|
||||
using System;
|
||||
using System.Threading;
|
||||
using SFML;
|
||||
using SFML.Audio;
|
||||
|
||||
namespace sound_capture
|
||||
{
|
||||
static class Program
|
||||
{
|
||||
/// <summary>
|
||||
/// The main entry point for the application.
|
||||
/// </summary>
|
||||
static void Main(string[] args)
|
||||
{
|
||||
// Check that the device can capture audio
|
||||
if (SoundRecorder.IsAvailable == false)
|
||||
{
|
||||
Console.WriteLine("Sorry, audio capture is not supported by your system");
|
||||
return;
|
||||
}
|
||||
|
||||
// Choose the sample rate
|
||||
Console.WriteLine("Please choose the sample rate for sound capture (44100 is CD quality) : ");
|
||||
uint sampleRate = uint.Parse(Console.ReadLine());
|
||||
|
||||
// Wait for user input...
|
||||
Console.WriteLine("Press enter to start recording audio");
|
||||
Console.ReadLine();
|
||||
|
||||
// Here we'll use an integrated custom recorder, which saves the captured data into a SoundBuffer
|
||||
SoundBufferRecorder recorder = new SoundBufferRecorder();
|
||||
|
||||
// Audio capture is done in a separate thread, so we can block the main thread while it is capturing
|
||||
recorder.Start(sampleRate);
|
||||
Console.WriteLine("Recording... press enter to stop");
|
||||
Console.ReadLine();
|
||||
recorder.Stop();
|
||||
|
||||
// Get the buffer containing the captured data
|
||||
SoundBuffer buffer = recorder.SoundBuffer;
|
||||
|
||||
// Display captured sound informations
|
||||
Console.WriteLine("Sound information :");
|
||||
Console.WriteLine(" " + buffer.Duration + " seconds");
|
||||
Console.WriteLine(" " + buffer.SampleRate + " samples / seconds");
|
||||
Console.WriteLine(" " + buffer.ChannelsCount + " channels");
|
||||
|
||||
// Choose what to do with the recorded sound data
|
||||
Console.WriteLine("What do you want to do with captured sound (p = play, s = save) ? ");
|
||||
char choice = char.Parse(Console.ReadLine());
|
||||
|
||||
if (choice == 's')
|
||||
{
|
||||
// Choose the filename
|
||||
Console.WriteLine("Choose the file to create : ");
|
||||
string filename = Console.ReadLine();
|
||||
|
||||
// Save the buffer
|
||||
buffer.SaveToFile(filename);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Create a sound instance and play it
|
||||
Sound sound = new Sound(buffer);
|
||||
sound.Play();
|
||||
|
||||
// Wait until finished
|
||||
while (sound.Status == SoundStatus.Playing)
|
||||
{
|
||||
// Display the playing position
|
||||
Console.CursorLeft = 0;
|
||||
Console.Write("Playing... " + sound.PlayingOffset + " sec ");
|
||||
|
||||
// Leave some CPU time for other threads
|
||||
Thread.Sleep(100);
|
||||
}
|
||||
}
|
||||
|
||||
// Finished !
|
||||
Console.WriteLine("\nDone !");
|
||||
}
|
||||
}
|
||||
}
|
@ -1,75 +0,0 @@
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>9.0.21022</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{F2F48990-F81E-41BA-AD01-168F6178C807}</ProjectGuid>
|
||||
<OutputType>Exe</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>sound_capture</RootNamespace>
|
||||
<AssemblyName>sound_capture</AssemblyName>
|
||||
<StartupObject>sound_capture.Program</StartupObject>
|
||||
<FileUpgradeFlags>
|
||||
</FileUpgradeFlags>
|
||||
<OldToolsVersion>2.0</OldToolsVersion>
|
||||
<UpgradeBackupLocation>
|
||||
</UpgradeBackupLocation>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>.\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<DebugType>full</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
|
||||
<OutputPath>.\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>.\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<DebugType>full</DebugType>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
|
||||
<OutputPath>.\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\src\Audio\sfml-audio.csproj">
|
||||
<Project>{0B202C4D-A457-47FE-84A3-031DD878C6BE}</Project>
|
||||
<Name>sfml-audio</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\src\Window\sfml-window.csproj">
|
||||
<Project>{D17DE83D-A592-461F-8AF2-53F9E22E1D0F}</Project>
|
||||
<Name>sfml-window</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="SoundCapture.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Properties\" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
@ -1,13 +0,0 @@
|
||||
'------------------------------------------------------------------------------
|
||||
' <auto-generated>
|
||||
' This code was generated by a tool.
|
||||
' Runtime Version:2.0.50727.3053
|
||||
'
|
||||
' Changes to this file may cause incorrect behavior and will be lost if
|
||||
' the code is regenerated.
|
||||
' </auto-generated>
|
||||
'------------------------------------------------------------------------------
|
||||
|
||||
Option Strict On
|
||||
Option Explicit On
|
||||
|
@ -1,10 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<MyApplicationData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<MySubMain>false</MySubMain>
|
||||
<SingleInstance>false</SingleInstance>
|
||||
<ShutdownMode>0</ShutdownMode>
|
||||
<EnableVisualStyles>true</EnableVisualStyles>
|
||||
<AuthenticationMode>0</AuthenticationMode>
|
||||
<ApplicationType>2</ApplicationType>
|
||||
<SaveMySettingsOnExit>true</SaveMySettingsOnExit>
|
||||
</MyApplicationData>
|
@ -1,35 +0,0 @@
|
||||
Imports System
|
||||
Imports System.Reflection
|
||||
Imports System.Runtime.InteropServices
|
||||
|
||||
' 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.
|
||||
|
||||
' Review the values of the assembly attributes
|
||||
|
||||
<Assembly: AssemblyTitle("visualbasic")>
|
||||
<Assembly: AssemblyDescription("")>
|
||||
<Assembly: AssemblyCompany("Wam")>
|
||||
<Assembly: AssemblyProduct("visualbasic")>
|
||||
<Assembly: AssemblyCopyright("Copyright © Wam 2008")>
|
||||
<Assembly: AssemblyTrademark("")>
|
||||
|
||||
<Assembly: ComVisible(False)>
|
||||
|
||||
'The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
<Assembly: Guid("6694830f-34ec-4c32-b1c8-895dbbf41593")>
|
||||
|
||||
' Version information for an assembly consists of the following four values:
|
||||
'
|
||||
' Major Version
|
||||
' Minor Version
|
||||
' Build Number
|
||||
' Revision
|
||||
'
|
||||
' You can specify all the values or you can default the Build and Revision Numbers
|
||||
' by using the '*' as shown below:
|
||||
' <Assembly: AssemblyVersion("1.0.*")>
|
||||
|
||||
<Assembly: AssemblyVersion("1.0.0.0")>
|
||||
<Assembly: AssemblyFileVersion("1.0.0.0")>
|
@ -1,63 +0,0 @@
|
||||
'------------------------------------------------------------------------------
|
||||
' <auto-generated>
|
||||
' This code was generated by a tool.
|
||||
' Runtime Version:2.0.50727.3053
|
||||
'
|
||||
' Changes to this file may cause incorrect behavior and will be lost if
|
||||
' the code is regenerated.
|
||||
' </auto-generated>
|
||||
'------------------------------------------------------------------------------
|
||||
|
||||
Option Strict On
|
||||
Option Explicit On
|
||||
|
||||
Imports System
|
||||
|
||||
Namespace My.Resources
|
||||
|
||||
'This class was auto-generated by the StronglyTypedResourceBuilder
|
||||
'class via a tool like ResGen or Visual Studio.
|
||||
'To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
'with the /str option, or rebuild your VS project.
|
||||
'''<summary>
|
||||
''' A strongly-typed resource class, for looking up localized strings, etc.
|
||||
'''</summary>
|
||||
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0"), _
|
||||
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
|
||||
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
|
||||
Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _
|
||||
Friend Module Resources
|
||||
|
||||
Private resourceMan As Global.System.Resources.ResourceManager
|
||||
|
||||
Private resourceCulture As Global.System.Globalization.CultureInfo
|
||||
|
||||
'''<summary>
|
||||
''' Returns the cached ResourceManager instance used by this class.
|
||||
'''</summary>
|
||||
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
|
||||
Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
|
||||
Get
|
||||
If Object.ReferenceEquals(resourceMan, Nothing) Then
|
||||
Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("visualbasic.Resources", GetType(Resources).Assembly)
|
||||
resourceMan = temp
|
||||
End If
|
||||
Return resourceMan
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Overrides the current thread's CurrentUICulture property for all
|
||||
''' resource lookups using this strongly typed resource class.
|
||||
'''</summary>
|
||||
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
|
||||
Friend Property Culture() As Global.System.Globalization.CultureInfo
|
||||
Get
|
||||
Return resourceCulture
|
||||
End Get
|
||||
Set
|
||||
resourceCulture = value
|
||||
End Set
|
||||
End Property
|
||||
End Module
|
||||
End Namespace
|
@ -1,117 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
@ -1,73 +0,0 @@
|
||||
'------------------------------------------------------------------------------
|
||||
' <auto-generated>
|
||||
' This code was generated by a tool.
|
||||
' Runtime Version:2.0.50727.3053
|
||||
'
|
||||
' Changes to this file may cause incorrect behavior and will be lost if
|
||||
' the code is regenerated.
|
||||
' </auto-generated>
|
||||
'------------------------------------------------------------------------------
|
||||
|
||||
Option Strict On
|
||||
Option Explicit On
|
||||
|
||||
|
||||
Namespace My
|
||||
|
||||
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
|
||||
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0"), _
|
||||
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
|
||||
Partial Friend NotInheritable Class MySettings
|
||||
Inherits Global.System.Configuration.ApplicationSettingsBase
|
||||
|
||||
Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings),MySettings)
|
||||
|
||||
#Region "My.Settings Auto-Save Functionality"
|
||||
#If _MyType = "WindowsForms" Then
|
||||
Private Shared addedHandler As Boolean
|
||||
|
||||
Private Shared addedHandlerLockObject As New Object
|
||||
|
||||
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
|
||||
Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs)
|
||||
If My.Application.SaveMySettingsOnExit Then
|
||||
My.Settings.Save()
|
||||
End If
|
||||
End Sub
|
||||
#End If
|
||||
#End Region
|
||||
|
||||
Public Shared ReadOnly Property [Default]() As MySettings
|
||||
Get
|
||||
|
||||
#If _MyType = "WindowsForms" Then
|
||||
If Not addedHandler Then
|
||||
SyncLock addedHandlerLockObject
|
||||
If Not addedHandler Then
|
||||
AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings
|
||||
addedHandler = True
|
||||
End If
|
||||
End SyncLock
|
||||
End If
|
||||
#End If
|
||||
Return defaultInstance
|
||||
End Get
|
||||
End Property
|
||||
End Class
|
||||
End Namespace
|
||||
|
||||
Namespace My
|
||||
|
||||
<Global.Microsoft.VisualBasic.HideModuleNameAttribute(), _
|
||||
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
|
||||
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute()> _
|
||||
Friend Module MySettingsProperty
|
||||
|
||||
<Global.System.ComponentModel.Design.HelpKeywordAttribute("My.Settings")> _
|
||||
Friend ReadOnly Property Settings() As Global.visualbasic.My.MySettings
|
||||
Get
|
||||
Return Global.visualbasic.My.MySettings.Default
|
||||
End Get
|
||||
End Property
|
||||
End Module
|
||||
End Namespace
|
@ -1,7 +0,0 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" UseMySettingsClassName="true">
|
||||
<Profiles>
|
||||
<Profile Name="(Default)" />
|
||||
</Profiles>
|
||||
<Settings />
|
||||
</SettingsFile>
|
@ -1,161 +0,0 @@
|
||||
Imports SFML
|
||||
Imports SFML.Window
|
||||
Imports SFML.Graphics
|
||||
Imports Tao.OpenGl
|
||||
Imports Tao.FreeGlut
|
||||
|
||||
|
||||
Module OpenGL
|
||||
|
||||
Dim WithEvents window As RenderWindow
|
||||
|
||||
''' <summary>
|
||||
''' Entry point of application
|
||||
''' </summary>
|
||||
Sub Main()
|
||||
|
||||
' Create main window
|
||||
window = New RenderWindow(New VideoMode(800, 600), "SFML.Net OpenGL (Visual Basic)", Styles.Default, new ContextSettings(32, 0))
|
||||
|
||||
' Create a sprite for the background
|
||||
Dim backgroundImage = New Image("resources/background.jpg")
|
||||
Dim background = New Sprite(backgroundImage)
|
||||
|
||||
' Create a text to display
|
||||
Dim text = New Text("SFML / OpenGL demo")
|
||||
text.Position = New Vector2f(250.0F, 450.0F)
|
||||
text.Color = New Color(255, 255, 255, 170)
|
||||
|
||||
' Load an OpenGL texture.
|
||||
' We could directly use a SFML.Graphics.Image as an OpenGL texture (with its Bind() member function),
|
||||
' but here we want more control on it (generate mipmaps, ...) so we create a new one
|
||||
Dim texture = 0
|
||||
Using tempImage = New Image("resources/texture.jpg")
|
||||
Gl.glGenTextures(1, texture)
|
||||
Gl.glBindTexture(Gl.GL_TEXTURE_2D, texture)
|
||||
Glu.gluBuild2DMipmaps(Gl.GL_TEXTURE_2D, Gl.GL_RGBA, tempImage.Width, tempImage.Height, Gl.GL_RGBA, Gl.GL_UNSIGNED_BYTE, tempImage.Pixels)
|
||||
Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MAG_FILTER, Gl.GL_LINEAR)
|
||||
Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MIN_FILTER, Gl.GL_LINEAR_MIPMAP_LINEAR)
|
||||
End Using
|
||||
|
||||
' Enable Z-buffer read and write
|
||||
Gl.glEnable(Gl.GL_DEPTH_TEST)
|
||||
Gl.glDepthMask(Gl.GL_TRUE)
|
||||
Gl.glClearDepth(1.0F)
|
||||
|
||||
' Setup a perspective projection
|
||||
Gl.glMatrixMode(Gl.GL_PROJECTION)
|
||||
Gl.glLoadIdentity()
|
||||
Glu.gluPerspective(90.0F, 1.0F, 1.0F, 500.0F)
|
||||
|
||||
' Bind our texture
|
||||
Gl.glEnable(Gl.GL_TEXTURE_2D)
|
||||
Gl.glBindTexture(Gl.GL_TEXTURE_2D, texture)
|
||||
Gl.glColor4f(1.0F, 1.0F, 1.0F, 1.0F)
|
||||
|
||||
Dim time = 0.0F
|
||||
|
||||
' Start game loop
|
||||
While (window.IsOpened())
|
||||
|
||||
' Process events
|
||||
window.DispatchEvents()
|
||||
|
||||
' Draw background
|
||||
window.SaveGLStates()
|
||||
window.Draw(background)
|
||||
window.RestoreGLStates()
|
||||
|
||||
' Clear depth buffer
|
||||
Gl.glClear(Gl.GL_DEPTH_BUFFER_BIT)
|
||||
|
||||
' We get the position of the mouse cursor, so that we can move the box accordingly
|
||||
Dim x = window.GetCursorPosition().X * 200.0F / window.Width - 100.0F
|
||||
Dim y = -window.GetCursorPosition().Y * 200.0F / window.Height + 100.0F
|
||||
|
||||
' Apply some transformations
|
||||
time += window.GetFrameTime() / 1000.0F
|
||||
Gl.glMatrixMode(Gl.GL_MODELVIEW)
|
||||
Gl.glLoadIdentity()
|
||||
Gl.glTranslatef(x, y, -100.0F)
|
||||
Gl.glRotatef(time * 50, 1.0F, 0.0F, 0.0F)
|
||||
Gl.glRotatef(time * 30, 0.0F, 1.0F, 0.0F)
|
||||
Gl.glRotatef(time * 90, 0.0F, 0.0F, 1.0F)
|
||||
|
||||
' Draw a cube
|
||||
Dim size = 20.0F
|
||||
Gl.glBegin(Gl.GL_QUADS)
|
||||
|
||||
Gl.glTexCoord2f(0, 0) : Gl.glVertex3f(-size, -size, -size)
|
||||
Gl.glTexCoord2f(0, 1) : Gl.glVertex3f(-size, size, -size)
|
||||
Gl.glTexCoord2f(1, 1) : Gl.glVertex3f(size, size, -size)
|
||||
Gl.glTexCoord2f(1, 0) : Gl.glVertex3f(size, -size, -size)
|
||||
|
||||
Gl.glTexCoord2f(0, 0) : Gl.glVertex3f(-size, -size, size)
|
||||
Gl.glTexCoord2f(0, 1) : Gl.glVertex3f(-size, size, size)
|
||||
Gl.glTexCoord2f(1, 1) : Gl.glVertex3f(size, size, size)
|
||||
Gl.glTexCoord2f(1, 0) : Gl.glVertex3f(size, -size, size)
|
||||
|
||||
Gl.glTexCoord2f(0, 0) : Gl.glVertex3f(-size, -size, -size)
|
||||
Gl.glTexCoord2f(0, 1) : Gl.glVertex3f(-size, size, -size)
|
||||
Gl.glTexCoord2f(1, 1) : Gl.glVertex3f(-size, size, size)
|
||||
Gl.glTexCoord2f(1, 0) : Gl.glVertex3f(-size, -size, size)
|
||||
|
||||
Gl.glTexCoord2f(0, 0) : Gl.glVertex3f(size, -size, -size)
|
||||
Gl.glTexCoord2f(0, 1) : Gl.glVertex3f(size, size, -size)
|
||||
Gl.glTexCoord2f(1, 1) : Gl.glVertex3f(size, size, size)
|
||||
Gl.glTexCoord2f(1, 0) : Gl.glVertex3f(size, -size, size)
|
||||
|
||||
Gl.glTexCoord2f(0, 1) : Gl.glVertex3f(-size, -size, size)
|
||||
Gl.glTexCoord2f(0, 0) : Gl.glVertex3f(-size, -size, -size)
|
||||
Gl.glTexCoord2f(1, 0) : Gl.glVertex3f(size, -size, -size)
|
||||
Gl.glTexCoord2f(1, 1) : Gl.glVertex3f(size, -size, size)
|
||||
|
||||
Gl.glTexCoord2f(0, 1) : Gl.glVertex3f(-size, size, size)
|
||||
Gl.glTexCoord2f(0, 0) : Gl.glVertex3f(-size, size, -size)
|
||||
Gl.glTexCoord2f(1, 0) : Gl.glVertex3f(size, size, -size)
|
||||
Gl.glTexCoord2f(1, 1) : Gl.glVertex3f(size, size, size)
|
||||
|
||||
Gl.glEnd()
|
||||
|
||||
' Draw some text on top of our OpenGL object
|
||||
window.SaveGLStates()
|
||||
window.Draw(text)
|
||||
window.RestoreGLStates()
|
||||
|
||||
' Finally, display the rendered frame on screen
|
||||
window.Display()
|
||||
|
||||
End While
|
||||
|
||||
' Don't forget to destroy our texture
|
||||
Gl.glDeleteTextures(1, texture)
|
||||
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' Function called when the window is closed
|
||||
''' </summary>
|
||||
Sub App_Closed(ByVal sender As Object, ByVal e As EventArgs) Handles window.Closed
|
||||
Dim window = CType(sender, RenderWindow)
|
||||
window.Close()
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' Function called when a key is pressed
|
||||
''' </summary>
|
||||
Sub App_KeyPressed(ByVal sender As Object, ByVal e As KeyEventArgs) Handles window.KeyPressed
|
||||
Dim window = CType(sender, RenderWindow)
|
||||
If e.Code = Keyboard.Key.Escape Then
|
||||
window.Close()
|
||||
End If
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' Function called when the window is resized
|
||||
''' </summary>
|
||||
Sub App_Resized(ByVal sender As Object, ByVal e As SizeEventArgs) Handles window.Resized
|
||||
Gl.glViewport(0, 0, e.Width, e.Height)
|
||||
End Sub
|
||||
|
||||
End Module
|
Before Width: | Height: | Size: 140 KiB |
Before Width: | Height: | Size: 20 KiB |
@ -1,26 +0,0 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 10.00
|
||||
# Visual Studio 2008
|
||||
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "visualbasic", "visualbasic.vbproj", "{98552080-F688-46B4-A2FF-1AC7C50ECBE8}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|x64 = Debug|x64
|
||||
Debug|x86 = Debug|x86
|
||||
Release|x64 = Release|x64
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{98552080-F688-46B4-A2FF-1AC7C50ECBE8}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{98552080-F688-46B4-A2FF-1AC7C50ECBE8}.Debug|x64.Build.0 = Debug|x64
|
||||
{98552080-F688-46B4-A2FF-1AC7C50ECBE8}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{98552080-F688-46B4-A2FF-1AC7C50ECBE8}.Debug|x86.Build.0 = Debug|x86
|
||||
{98552080-F688-46B4-A2FF-1AC7C50ECBE8}.Release|x64.ActiveCfg = Release|x64
|
||||
{98552080-F688-46B4-A2FF-1AC7C50ECBE8}.Release|x64.Build.0 = Release|x64
|
||||
{98552080-F688-46B4-A2FF-1AC7C50ECBE8}.Release|x86.ActiveCfg = Release|x86
|
||||
{98552080-F688-46B4-A2FF-1AC7C50ECBE8}.Release|x86.Build.0 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
@ -1,159 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>9.0.21022</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{98552080-F688-46B4-A2FF-1AC7C50ECBE8}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<StartupObject>visualbasic.OpenGL</StartupObject>
|
||||
<RootNamespace>visualbasic</RootNamespace>
|
||||
<AssemblyName>visualbasic</AssemblyName>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<MyType>WindowsFormsWithCustomSubMain</MyType>
|
||||
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||
<OptionExplicit>On</OptionExplicit>
|
||||
<OptionCompare>Binary</OptionCompare>
|
||||
<OptionStrict>Off</OptionStrict>
|
||||
<OptionInfer>On</OptionInfer>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<DefineDebug>true</DefineDebug>
|
||||
<DefineTrace>true</DefineTrace>
|
||||
<OutputPath>.\</OutputPath>
|
||||
<DocumentationFile>visualbasic.xml</DocumentationFile>
|
||||
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<DefineDebug>false</DefineDebug>
|
||||
<DefineTrace>true</DefineTrace>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DocumentationFile>visualbasic.xml</DocumentationFile>
|
||||
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DefineDebug>true</DefineDebug>
|
||||
<DefineTrace>true</DefineTrace>
|
||||
<OutputPath>.\</OutputPath>
|
||||
<DocumentationFile>visualbasic.xml</DocumentationFile>
|
||||
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
|
||||
<DebugType>full</DebugType>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
|
||||
<DefineTrace>true</DefineTrace>
|
||||
<OutputPath>bin\x64\Release\</OutputPath>
|
||||
<DocumentationFile>visualbasic.xml</DocumentationFile>
|
||||
<Optimize>true</Optimize>
|
||||
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DefineDebug>true</DefineDebug>
|
||||
<DefineTrace>true</DefineTrace>
|
||||
<OutputPath>.\</OutputPath>
|
||||
<DocumentationFile>visualbasic.xml</DocumentationFile>
|
||||
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
|
||||
<DebugType>full</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
|
||||
<DefineTrace>true</DefineTrace>
|
||||
<OutputPath>bin\x86\Release\</OutputPath>
|
||||
<DocumentationFile>visualbasic.xml</DocumentationFile>
|
||||
<Optimize>true</Optimize>
|
||||
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="sfmlnet2-graphics, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\lib\sfmlnet2-graphics.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="sfmlnet2-window, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\lib\sfmlnet2-window.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Deployment" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="System.Core">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Xml.Linq">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Data.DataSetExtensions">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="Tao.FreeGlut, Version=2.4.0.2, Culture=neutral, PublicKeyToken=6e602a6ad6c0d06d, processorArchitecture=MSIL" />
|
||||
<Reference Include="Tao.OpenGl, Version=2.1.0.12, Culture=neutral, PublicKeyToken=1ca010269a4501ef, processorArchitecture=MSIL" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Import Include="Microsoft.VisualBasic" />
|
||||
<Import Include="System" />
|
||||
<Import Include="System.Collections" />
|
||||
<Import Include="System.Collections.Generic" />
|
||||
<Import Include="System.Data" />
|
||||
<Import Include="System.Diagnostics" />
|
||||
<Import Include="System.Linq" />
|
||||
<Import Include="System.Xml.Linq" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="OpenGL.vb" />
|
||||
<Compile Include="My Project\AssemblyInfo.vb" />
|
||||
<Compile Include="My Project\Application.Designer.vb">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Application.myapp</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="My Project\Resources.Designer.vb">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="My Project\Settings.Designer.vb">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="My Project\Resources.resx">
|
||||
<Generator>VbMyResourcesResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.vb</LastGenOutput>
|
||||
<CustomToolNamespace>My.Resources</CustomToolNamespace>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="My Project\Application.myapp">
|
||||
<Generator>MyApplicationCodeGenerator</Generator>
|
||||
<LastGenOutput>Application.Designer.vb</LastGenOutput>
|
||||
</None>
|
||||
<None Include="My Project\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<CustomToolNamespace>My</CustomToolNamespace>
|
||||
<LastGenOutput>Settings.Designer.vb</LastGenOutput>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
@ -1,134 +0,0 @@
|
||||
using System;
|
||||
using SFML;
|
||||
using SFML.Window;
|
||||
using Tao.OpenGl;
|
||||
|
||||
namespace window
|
||||
{
|
||||
static class Program
|
||||
{
|
||||
/// <summary>
|
||||
/// The main entry point for the application.
|
||||
/// </summary>
|
||||
static void Main()
|
||||
{
|
||||
// Create the main window
|
||||
Window window = new Window(new VideoMode(640, 480, 32), "SFML.Net Window", Styles.Default, new ContextSettings(32, 0));
|
||||
|
||||
// Setup event handlers
|
||||
window.Closed += new EventHandler(OnClosed);
|
||||
window.KeyPressed += new EventHandler<KeyEventArgs>(OnKeyPressed);
|
||||
window.Resized += new EventHandler<SizeEventArgs>(OnResized);
|
||||
|
||||
// Set the color and depth clear values
|
||||
Gl.glClearDepth(1.0F);
|
||||
Gl.glClearColor(0.0F, 0.0F, 0.0F, 0.0F);
|
||||
|
||||
// Enable Z-buffer read and write
|
||||
Gl.glEnable(Gl.GL_DEPTH_TEST);
|
||||
Gl.glDepthMask(Gl.GL_TRUE);
|
||||
|
||||
// Setup a perspective projection
|
||||
Gl.glMatrixMode(Gl.GL_PROJECTION);
|
||||
Gl.glLoadIdentity();
|
||||
Glu.gluPerspective(90.0F, 1.0F, 1.0F, 500.0F);
|
||||
|
||||
float time = 0.0F;
|
||||
|
||||
// Start the game loop
|
||||
while (window.IsOpened())
|
||||
{
|
||||
// Process events
|
||||
window.DispatchEvents();
|
||||
|
||||
// Activate the window before using OpenGL commands.
|
||||
// This is useless here because we have only one window which is
|
||||
// always the active one, but don't forget it if you use multiple windows
|
||||
window.SetActive();
|
||||
|
||||
// Clear color and depth buffer
|
||||
Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);
|
||||
|
||||
// Apply some transformations
|
||||
time += window.GetFrameTime() / 1000.0F;
|
||||
Gl.glMatrixMode(Gl.GL_MODELVIEW);
|
||||
Gl.glLoadIdentity();
|
||||
Gl.glTranslatef(0.0F, 0.0F, -200.0F);
|
||||
Gl.glRotatef(time * 50, 1.0F, 0.0F, 0.0F);
|
||||
Gl.glRotatef(time * 30, 0.0F, 1.0F, 0.0F);
|
||||
Gl.glRotatef(time * 90, 0.0F, 0.0F, 1.0F);
|
||||
|
||||
// Draw a cube
|
||||
Gl.glBegin(Gl.GL_QUADS);
|
||||
|
||||
Gl.glColor3f(1.0F, 0.0F, 0.0F);
|
||||
Gl.glVertex3f(-50.0F, -50.0F, -50.0F);
|
||||
Gl.glVertex3f(-50.0F, 50.0F, -50.0F);
|
||||
Gl.glVertex3f( 50.0F, 50.0F, -50.0F);
|
||||
Gl.glVertex3f( 50.0F, -50.0F, -50.0F);
|
||||
|
||||
Gl.glColor3f(1.0F, 0.0F, 0.0F);
|
||||
Gl.glVertex3f(-50.0F, -50.0F, 50.0F);
|
||||
Gl.glVertex3f(-50.0F, 50.0F, 50.0F);
|
||||
Gl.glVertex3f( 50.0F, 50.0F, 50.0F);
|
||||
Gl.glVertex3f( 50.0F, -50.0F, 50.0F);
|
||||
|
||||
Gl.glColor3f(0.0F, 1.0F, 0.0F);
|
||||
Gl.glVertex3f(-50.0F, -50.0F, -50.0F);
|
||||
Gl.glVertex3f(-50.0F, 50.0F, -50.0F);
|
||||
Gl.glVertex3f(-50.0F, 50.0F, 50.0F);
|
||||
Gl.glVertex3f(-50.0F, -50.0F, 50.0F);
|
||||
|
||||
Gl.glColor3f(0.0F, 1.0F, 0.0F);
|
||||
Gl.glVertex3f(50.0F, -50.0F, -50.0F);
|
||||
Gl.glVertex3f(50.0F, 50.0F, -50.0F);
|
||||
Gl.glVertex3f(50.0F, 50.0F, 50.0F);
|
||||
Gl.glVertex3f(50.0F, -50.0F, 50.0F);
|
||||
|
||||
Gl.glColor3f(0.0F, 0.0F, 1.0F);
|
||||
Gl.glVertex3f(-50.0F, -50.0F, 50.0F);
|
||||
Gl.glVertex3f(-50.0F, -50.0F, -50.0F);
|
||||
Gl.glVertex3f( 50.0F, -50.0F, -50.0F);
|
||||
Gl.glVertex3f( 50.0F, -50.0F, 50.0F);
|
||||
|
||||
Gl.glColor3f(0.0F, 0.0F, 1.0F);
|
||||
Gl.glVertex3f(-50.0F, 50.0F, 50.0F);
|
||||
Gl.glVertex3f(-50.0F, 50.0F, -50.0F);
|
||||
Gl.glVertex3f( 50.0F, 50.0F, -50.0F);
|
||||
Gl.glVertex3f( 50.0F, 50.0F, 50.0F);
|
||||
|
||||
Gl.glEnd();
|
||||
|
||||
// Finally, display the rendered frame on screen
|
||||
window.Display();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Function called when the window is closed
|
||||
/// </summary>
|
||||
static void OnClosed(object sender, EventArgs e)
|
||||
{
|
||||
Window window = (Window)sender;
|
||||
window.Close();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Function called when a key is pressed
|
||||
/// </summary>
|
||||
static void OnKeyPressed(object sender, KeyEventArgs e)
|
||||
{
|
||||
Window window = (Window)sender;
|
||||
if (e.Code == Keyboard.Key.Escape)
|
||||
window.Close();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Function called when the window is resized
|
||||
/// </summary>
|
||||
static void OnResized(object sender, SizeEventArgs e)
|
||||
{
|
||||
Gl.glViewport(0, 0, (int)e.Width, (int)e.Height);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,75 +0,0 @@
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>9.0.21022</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{C1FBB9AF-B69A-4D06-9BDC-EAC7606296FF}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>window</RootNamespace>
|
||||
<AssemblyName>window</AssemblyName>
|
||||
<FileUpgradeFlags>
|
||||
</FileUpgradeFlags>
|
||||
<OldToolsVersion>2.0</OldToolsVersion>
|
||||
<UpgradeBackupLocation>
|
||||
</UpgradeBackupLocation>
|
||||
<StartupObject>window.Program</StartupObject>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>.\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<DebugType>full</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
|
||||
<OutputPath>.\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>.\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<DebugType>full</DebugType>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
|
||||
<OutputPath>.\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\src\Window\sfml-window.csproj">
|
||||
<Project>{D17DE83D-A592-461F-8AF2-53F9E22E1D0F}</Project>
|
||||
<Name>sfml-window</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Window.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Tao.FreeGlut, Version=2.4.0.2, Culture=neutral, PublicKeyToken=6e602a6ad6c0d06d, processorArchitecture=MSIL" />
|
||||
<Reference Include="Tao.OpenGl, Version=2.1.0.12, Culture=neutral, PublicKeyToken=1ca010269a4501ef, processorArchitecture=MSIL" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Properties\" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
@ -1,72 +0,0 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Security;
|
||||
|
||||
namespace SFML
|
||||
{
|
||||
namespace Audio
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Listener is a global interface for defining the audio
|
||||
/// listener properties ; the audio listener is the point in
|
||||
/// the scene from where all the sounds are heard
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public class Listener
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Global volume of all sounds, in range [0 .. 100] (default is 100)
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public static float GlobalVolume
|
||||
{
|
||||
get {return sfListener_GetGlobalVolume();}
|
||||
set {sfListener_SetGlobalVolume(value);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// 3D position of the listener (default is (0, 0, 0))
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public static Vector3f Position
|
||||
{
|
||||
get {Vector3f v; sfListener_GetPosition(out v.X, out v.Y, out v.Z); return v;}
|
||||
set {sfListener_SetPosition(value.X, value.Y, value.Z);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// 3D direction of the listener (default is (0, 0, -1))
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public static Vector3f Direction
|
||||
{
|
||||
get {Vector3f v; sfListener_GetDirection(out v.X, out v.Y, out v.Z); return v;}
|
||||
set {sfListener_SetDirection(value.X, value.Y, value.Z);}
|
||||
}
|
||||
|
||||
#region Imports
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfListener_SetGlobalVolume(float Volume);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern float sfListener_GetGlobalVolume();
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfListener_SetPosition(float X, float Y, float Z);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfListener_GetPosition(out float X, out float Y, out float Z);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfListener_SetDirection(float X, float Y, float Z);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfListener_GetDirection(out float X, out float Y, out float Z);
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
}
|
@ -1,333 +0,0 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Security;
|
||||
using System.IO;
|
||||
|
||||
namespace SFML
|
||||
{
|
||||
namespace Audio
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Music defines a big sound played using streaming,
|
||||
/// so usually what we call a music :)
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public class Music : ObjectBase
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the music from a file
|
||||
/// </summary>
|
||||
/// <param name="filename">Path of the music file to load</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public Music(string filename) :
|
||||
base(sfMusic_CreateFromFile(filename))
|
||||
{
|
||||
if (This == IntPtr.Zero)
|
||||
throw new LoadingFailedException("music", filename);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the music from a file in a stream
|
||||
/// </summary>
|
||||
/// <param name="stream">Stream containing the file contents</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public Music(Stream stream) :
|
||||
base(IntPtr.Zero)
|
||||
{
|
||||
stream.Position = 0;
|
||||
byte[] StreamData = new byte[stream.Length];
|
||||
uint Read = (uint)stream.Read(StreamData, 0, StreamData.Length);
|
||||
unsafe
|
||||
{
|
||||
fixed (byte* dataPtr = StreamData)
|
||||
{
|
||||
SetThis(sfMusic_CreateFromMemory((char*)dataPtr, Read));
|
||||
}
|
||||
}
|
||||
if (This == IntPtr.Zero)
|
||||
throw new LoadingFailedException("music");
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Play the music
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void Play()
|
||||
{
|
||||
sfMusic_Play(This);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Pause the music
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void Pause()
|
||||
{
|
||||
sfMusic_Pause(This);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Stop the music
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void Stop()
|
||||
{
|
||||
sfMusic_Stop(This);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Samples rate, in samples per second
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public uint SampleRate
|
||||
{
|
||||
get {return sfMusic_GetSampleRate(This);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Number of channels (1 = mono, 2 = stereo)
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public uint ChannelsCount
|
||||
{
|
||||
get {return sfMusic_GetChannelsCount(This);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Current status of the music (see SoundStatus enum)
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public SoundStatus Status
|
||||
{
|
||||
get {return sfMusic_GetStatus(This);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Total duration of the music, in milliseconds
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public uint Duration
|
||||
{
|
||||
get {return sfMusic_GetDuration(This);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Loop state of the sound. Default value is false
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public bool Loop
|
||||
{
|
||||
get {return sfMusic_GetLoop(This);}
|
||||
set {sfMusic_SetLoop(This, value);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Pitch of the music. Default value is 1
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public float Pitch
|
||||
{
|
||||
get {return sfMusic_GetPitch(This);}
|
||||
set {sfMusic_SetPitch(This, value);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Volume of the music, in range [0, 100]. Default value is 100
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public float Volume
|
||||
{
|
||||
get {return sfMusic_GetVolume(This);}
|
||||
set {sfMusic_SetVolume(This, value);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// 3D position of the music. Default value is (0, 0, 0)
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public Vector3f Position
|
||||
{
|
||||
get {Vector3f v; sfMusic_GetPosition(This, out v.X, out v.Y, out v.Z); return v;}
|
||||
set {sfMusic_SetPosition(This, value.X, value.Y, value.Z);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Is the music's position relative to the listener's position,
|
||||
/// or is it absolute?
|
||||
/// Default value is false (absolute)
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public bool RelativeToListener
|
||||
{
|
||||
get {return sfMusic_IsRelativeToListener(This);}
|
||||
set {sfMusic_SetRelativeToListener(This, value);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Minimum distance of the music. Closer than this distance,
|
||||
/// the listener will hear the sound at its maximum volume.
|
||||
/// The default value is 1
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public float MinDistance
|
||||
{
|
||||
get {return sfMusic_GetMinDistance(This);}
|
||||
set {sfMusic_SetMinDistance(This, value);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Attenuation factor. The higher the attenuation, the
|
||||
/// more the sound will be attenuated with distance from listener.
|
||||
/// The default value is 1
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public float Attenuation
|
||||
{
|
||||
get {return sfMusic_GetAttenuation(This);}
|
||||
set {sfMusic_SetAttenuation(This, value);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Current playing position, in milliseconds
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public uint PlayingOffset
|
||||
{
|
||||
get {return sfMusic_GetPlayingOffset(This);}
|
||||
set {sfMusic_SetPlayingOffset(This, value);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Provide a string describing the object
|
||||
/// </summary>
|
||||
/// <returns>String description of the object</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override string ToString()
|
||||
{
|
||||
return "[Music]" +
|
||||
" SampleRate(" + SampleRate + ")" +
|
||||
" ChannelsCount(" + ChannelsCount + ")" +
|
||||
" Status(" + Status + ")" +
|
||||
" Duration(" + Duration + ")" +
|
||||
" Loop(" + Loop + ")" +
|
||||
" Pitch(" + Pitch + ")" +
|
||||
" Volume(" + Volume + ")" +
|
||||
" Position(" + Position + ")" +
|
||||
" RelativeToListener(" + RelativeToListener + ")" +
|
||||
" MinDistance(" + MinDistance + ")" +
|
||||
" Attenuation(" + Attenuation + ")" +
|
||||
" PlayingOffset(" + PlayingOffset + ")";
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Handle the destruction of the object
|
||||
/// </summary>
|
||||
/// <param name="disposing">Is the GC disposing the object, or is it an explicit call ?</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
protected override void Destroy(bool disposing)
|
||||
{
|
||||
sfMusic_Destroy(This);
|
||||
}
|
||||
|
||||
#region Imports
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern IntPtr sfMusic_CreateFromFile(string Filename);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
unsafe static extern IntPtr sfMusic_CreateFromMemory(char* Data, uint SizeInBytes);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfMusic_Destroy(IntPtr MusicStream);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfMusic_Play(IntPtr Music);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfMusic_Pause(IntPtr Music);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfMusic_Stop(IntPtr Music);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern SoundStatus sfMusic_GetStatus(IntPtr Music);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern uint sfMusic_GetDuration(IntPtr Music);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern uint sfMusic_GetChannelsCount(IntPtr Music);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern uint sfMusic_GetSampleRate(IntPtr Music);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfMusic_SetPitch(IntPtr Music, float Pitch);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfMusic_SetLoop(IntPtr Music, bool Loop);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfMusic_SetVolume(IntPtr Music, float Volume);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfMusic_SetPosition(IntPtr Music, float X, float Y, float Z);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfMusic_SetRelativeToListener(IntPtr Music, bool Relative);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfMusic_SetMinDistance(IntPtr Music, float MinDistance);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfMusic_SetAttenuation(IntPtr Music, float Attenuation);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfMusic_SetPlayingOffset(IntPtr Music, uint TimeOffset);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern bool sfMusic_GetLoop(IntPtr Music);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern float sfMusic_GetPitch(IntPtr Music);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern float sfMusic_GetVolume(IntPtr Music);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfMusic_GetPosition(IntPtr Music, out float X, out float Y, out float Z);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern bool sfMusic_IsRelativeToListener(IntPtr Music);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern float sfMusic_GetMinDistance(IntPtr Music);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern float sfMusic_GetAttenuation(IntPtr Music);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern uint sfMusic_GetPlayingOffset(IntPtr Music);
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
}
|
@ -1,325 +0,0 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Security;
|
||||
|
||||
namespace SFML
|
||||
{
|
||||
namespace Audio
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Enumeration of all possible sound states
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public enum SoundStatus
|
||||
{
|
||||
/// <summary>Sound is not playing</summary>
|
||||
Stopped,
|
||||
|
||||
/// <summary>Sound is paused</summary>
|
||||
Paused,
|
||||
|
||||
/// <summary>Sound is playing</summary>
|
||||
Playing
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Sound defines the properties of a sound such as position,
|
||||
/// volume, pitch, etc.
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public class Sound : ObjectBase
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Default constructor (invalid sound)
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public Sound() :
|
||||
base(sfSound_Create())
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the sound from a source buffer
|
||||
/// </summary>
|
||||
/// <param name="buffer">Sound buffer to play</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public Sound(SoundBuffer buffer) :
|
||||
base(sfSound_Create())
|
||||
{
|
||||
SoundBuffer = buffer;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the sound from another source
|
||||
/// </summary>
|
||||
/// <param name="copy">Sound to copy</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public Sound(Sound copy) :
|
||||
base(sfSound_Copy(copy.This))
|
||||
{
|
||||
SoundBuffer = copy.SoundBuffer;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Play the sound
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void Play()
|
||||
{
|
||||
sfSound_Play(This);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Pause the sound
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void Pause()
|
||||
{
|
||||
sfSound_Pause(This);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Stop the sound
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void Stop()
|
||||
{
|
||||
sfSound_Stop(This);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Buffer containing the sound data to play through the sound
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public SoundBuffer SoundBuffer
|
||||
{
|
||||
get {return myBuffer;}
|
||||
set {myBuffer = value; sfSound_SetBuffer(This, value != null ? value.This : IntPtr.Zero);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Current status of the sound (see SoundStatus enum)
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public SoundStatus Status
|
||||
{
|
||||
get {return sfSound_GetStatus(This);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Loop state of the sound. Default value is false
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public bool Loop
|
||||
{
|
||||
get {return sfSound_GetLoop(This);}
|
||||
set {sfSound_SetLoop(This, value);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Pitch of the sound. Default value is 1
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public float Pitch
|
||||
{
|
||||
get {return sfSound_GetPitch(This);}
|
||||
set {sfSound_SetPitch(This, value);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Volume of the sound, in range [0, 100]. Default value is 100
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public float Volume
|
||||
{
|
||||
get {return sfSound_GetVolume(This);}
|
||||
set {sfSound_SetVolume(This, value);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Current playing position of the sound, in milliseconds
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public uint PlayingOffset
|
||||
{
|
||||
get {return sfSound_GetPlayingOffset(This);}
|
||||
set {sfSound_SetPlayingOffset(This, value);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// 3D position of the sound. Default value is (0, 0, 0)
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public Vector3f Position
|
||||
{
|
||||
get {Vector3f v; sfSound_GetPosition(This, out v.X, out v.Y, out v.Z); return v;}
|
||||
set {sfSound_SetPosition(This, value.X, value.Y, value.Z);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Is the sound's position relative to the listener's position,
|
||||
/// or is it absolute?
|
||||
/// Default value is false (absolute)
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public bool RelativeToListener
|
||||
{
|
||||
get {return sfSound_IsRelativeToListener(This);}
|
||||
set {sfSound_SetRelativeToListener(This, value);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Minimum distance of the sound. Closer than this distance,
|
||||
/// the listener will hear the sound at its maximum volume.
|
||||
/// The default value is 1
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public float MinDistance
|
||||
{
|
||||
get {return sfSound_GetMinDistance(This);}
|
||||
set {sfSound_SetMinDistance(This, value);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Attenuation factor. The higher the attenuation, the
|
||||
/// more the sound will be attenuated with distance from listener.
|
||||
/// The default value is 1
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public float Attenuation
|
||||
{
|
||||
get {return sfSound_GetAttenuation(This);}
|
||||
set {sfSound_SetAttenuation(This, value);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Provide a string describing the object
|
||||
/// </summary>
|
||||
/// <returns>String description of the object</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override string ToString()
|
||||
{
|
||||
return "[Sound]" +
|
||||
" Status(" + Status + ")" +
|
||||
" Loop(" + Loop + ")" +
|
||||
" Pitch(" + Pitch + ")" +
|
||||
" Volume(" + Volume + ")" +
|
||||
" Position(" + Position + ")" +
|
||||
" RelativeToListener(" + RelativeToListener + ")" +
|
||||
" MinDistance(" + MinDistance + ")" +
|
||||
" Attenuation(" + Attenuation + ")" +
|
||||
" PlayingOffset(" + PlayingOffset + ")" +
|
||||
" SoundBuffer(" + SoundBuffer + ")";
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Handle the destruction of the object
|
||||
/// </summary>
|
||||
/// <param name="disposing">Is the GC disposing the object, or is it an explicit call ?</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
protected override void Destroy(bool disposing)
|
||||
{
|
||||
sfSound_Destroy(This);
|
||||
}
|
||||
|
||||
private SoundBuffer myBuffer;
|
||||
|
||||
#region Imports
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern IntPtr sfSound_Create();
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern IntPtr sfSound_Copy(IntPtr Sound);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfSound_Destroy(IntPtr Sound);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfSound_Play(IntPtr Sound);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfSound_Pause(IntPtr Sound);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfSound_Stop(IntPtr Sound);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfSound_SetBuffer(IntPtr Sound, IntPtr Buffer);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern IntPtr sfSound_GetBuffer(IntPtr Sound);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfSound_SetLoop(IntPtr Sound, bool Loop);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern bool sfSound_GetLoop(IntPtr Sound);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern SoundStatus sfSound_GetStatus(IntPtr Sound);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfSound_SetPitch(IntPtr Sound, float Pitch);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfSound_SetVolume(IntPtr Sound, float Volume);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfSound_SetPosition(IntPtr Sound, float X, float Y, float Z);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfSound_SetRelativeToListener(IntPtr Sound, bool Relative);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfSound_SetMinDistance(IntPtr Sound, float MinDistance);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfSound_SetAttenuation(IntPtr Sound, float Attenuation);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfSound_SetPlayingOffset(IntPtr Sound, uint TimeOffset);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern float sfSound_GetPitch(IntPtr Sound);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern float sfSound_GetVolume(IntPtr Sound);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfSound_GetPosition(IntPtr Sound, out float X, out float Y, out float Z);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern bool sfSound_IsRelativeToListener(IntPtr Sound);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern float sfSound_GetMinDistance(IntPtr Sound);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern float sfSound_GetAttenuation(IntPtr Sound);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern uint sfSound_GetPlayingOffset(IntPtr Sound);
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
}
|
@ -1,209 +0,0 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Security;
|
||||
using System.IO;
|
||||
|
||||
namespace SFML
|
||||
{
|
||||
namespace Audio
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// SoundBuffer is the low-level class for loading and manipulating
|
||||
/// sound buffers. A sound buffer holds audio data (samples)
|
||||
/// which can then be played by a Sound or saved to a file.
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public class SoundBuffer : ObjectBase
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the sound buffer from a file
|
||||
/// </summary>
|
||||
/// <param name="filename">Path of the sound file to load</param>
|
||||
/// <exception cref="LoadingFailedException" />
|
||||
////////////////////////////////////////////////////////////
|
||||
public SoundBuffer(string filename) :
|
||||
base(sfSoundBuffer_CreateFromFile(filename))
|
||||
{
|
||||
if (This == IntPtr.Zero)
|
||||
throw new LoadingFailedException("sound buffer", filename);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the sound buffer from a file in a stream
|
||||
/// </summary>
|
||||
/// <param name="stream">Stream containing the file contents</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public SoundBuffer(Stream stream) :
|
||||
base(IntPtr.Zero)
|
||||
{
|
||||
stream.Position = 0;
|
||||
byte[] StreamData = new byte[stream.Length];
|
||||
uint Read = (uint)stream.Read(StreamData, 0, StreamData.Length);
|
||||
unsafe
|
||||
{
|
||||
fixed (byte* dataPtr = StreamData)
|
||||
{
|
||||
SetThis(sfSoundBuffer_CreateFromMemory((char*)dataPtr, Read));
|
||||
}
|
||||
}
|
||||
if (This == IntPtr.Zero)
|
||||
throw new LoadingFailedException("sound buffer");
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the sound buffer from an array of samples
|
||||
/// </summary>
|
||||
/// <param name="samples">Array of samples</param>
|
||||
/// <param name="channelsCount">Channels count</param>
|
||||
/// <param name="sampleRate">Sample rate</param>
|
||||
/// <exception cref="LoadingFailedException" />
|
||||
////////////////////////////////////////////////////////////
|
||||
public SoundBuffer(short[] samples, uint channelsCount, uint sampleRate) :
|
||||
base(IntPtr.Zero)
|
||||
{
|
||||
unsafe
|
||||
{
|
||||
fixed (short* SamplesPtr = samples)
|
||||
{
|
||||
SetThis(sfSoundBuffer_CreateFromSamples(SamplesPtr, (uint)samples.Length, channelsCount, sampleRate));
|
||||
}
|
||||
}
|
||||
|
||||
if (This == IntPtr.Zero)
|
||||
throw new LoadingFailedException("sound buffer");
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the sound buffer from another sound buffer
|
||||
/// </summary>
|
||||
/// <param name="copy">Sound buffer to copy</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public SoundBuffer(SoundBuffer copy) :
|
||||
base(sfSoundBuffer_Copy(copy.This))
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Save the sound buffer to an audio file
|
||||
/// </summary>
|
||||
/// <param name="filename">Path of the sound file to write</param>
|
||||
/// <returns>True if saving has been successful</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public bool SaveToFile(string filename)
|
||||
{
|
||||
return sfSoundBuffer_SaveToFile(This, filename);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Samples rate, in samples per second
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public uint SampleRate
|
||||
{
|
||||
get {return sfSoundBuffer_GetSampleRate(This);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Number of channels (1 = mono, 2 = stereo)
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public uint ChannelsCount
|
||||
{
|
||||
get {return sfSoundBuffer_GetChannelsCount(This);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Total duration of the buffer, in milliseconds
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public uint Duration
|
||||
{
|
||||
get {return sfSoundBuffer_GetDuration(This);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Array of samples contained in the buffer
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public short[] Samples
|
||||
{
|
||||
get
|
||||
{
|
||||
short[] SamplesArray = new short[sfSoundBuffer_GetSamplesCount(This)];
|
||||
Marshal.Copy(sfSoundBuffer_GetSamples(This), SamplesArray, 0, SamplesArray.Length);
|
||||
return SamplesArray;
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Provide a string describing the object
|
||||
/// </summary>
|
||||
/// <returns>String description of the object</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override string ToString()
|
||||
{
|
||||
return "[SoundBuffer]" +
|
||||
" SampleRate(" + SampleRate + ")" +
|
||||
" ChannelsCount(" + ChannelsCount + ")" +
|
||||
" Duration(" + Duration + ")";
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Handle the destruction of the object
|
||||
/// </summary>
|
||||
/// <param name="disposing">Is the GC disposing the object, or is it an explicit call ?</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
protected override void Destroy(bool disposing)
|
||||
{
|
||||
sfSoundBuffer_Destroy(This);
|
||||
}
|
||||
|
||||
#region Imports
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern IntPtr sfSoundBuffer_CreateFromFile(string Filename);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
unsafe static extern IntPtr sfSoundBuffer_CreateFromMemory(char* Data, uint SizeInBytes);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
unsafe static extern IntPtr sfSoundBuffer_CreateFromSamples(short* Samples, uint SamplesCount, uint ChannelsCount, uint SampleRate);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern IntPtr sfSoundBuffer_Copy(IntPtr SoundBuffer);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfSoundBuffer_Destroy(IntPtr SoundBuffer);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern bool sfSoundBuffer_SaveToFile(IntPtr SoundBuffer, string Filename);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern IntPtr sfSoundBuffer_GetSamples(IntPtr SoundBuffer);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern uint sfSoundBuffer_GetSamplesCount(IntPtr SoundBuffer);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern uint sfSoundBuffer_GetSampleRate(IntPtr SoundBuffer);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern uint sfSoundBuffer_GetChannelsCount(IntPtr SoundBuffer);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern uint sfSoundBuffer_GetDuration(IntPtr SoundBuffer);
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
}
|
@ -1,83 +0,0 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Security;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace SFML
|
||||
{
|
||||
namespace Audio
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Specialized SoundRecorder which saves the captured
|
||||
/// audio data into a sound buffer
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public class SoundBufferRecorder : SoundRecorder
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Sound buffer containing the recorded data (invalid until the capture stops)
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public SoundBuffer SoundBuffer
|
||||
{
|
||||
get
|
||||
{
|
||||
return mySoundBuffer;
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Provide a string describing the object
|
||||
/// </summary>
|
||||
/// <returns>String description of the object</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override string ToString()
|
||||
{
|
||||
return "[SoundBufferRecorder]" +
|
||||
" SampleRate(" + SampleRate + ")" +
|
||||
" SoundBuffer(" + SoundBuffer + ")";
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Called when a new capture starts
|
||||
/// </summary>
|
||||
/// <returns>False to abort recording audio data, true to continue</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
protected override bool OnStart()
|
||||
{
|
||||
mySamplesArray.Clear();
|
||||
return true;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Process a new chunk of recorded samples
|
||||
/// </summary>
|
||||
/// <param name="samples">Array of samples to process</param>
|
||||
/// <returns>False to stop recording audio data, true to continue</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
protected override bool OnProcessSamples(short[] samples)
|
||||
{
|
||||
mySamplesArray.AddRange(samples);
|
||||
return true;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Called when the current capture stops
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
protected override void OnStop()
|
||||
{
|
||||
mySoundBuffer = new SoundBuffer(mySamplesArray.ToArray(), 1, SampleRate);
|
||||
}
|
||||
|
||||
List<short> mySamplesArray = new List<short>();
|
||||
SoundBuffer mySoundBuffer = null;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,192 +0,0 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Security;
|
||||
|
||||
namespace SFML
|
||||
{
|
||||
namespace Audio
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// SoundRecorder is an interface for capturing sound data,
|
||||
/// it is meant to be used as a base class
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public abstract class SoundRecorder : ObjectBase
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Default constructor
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public SoundRecorder() :
|
||||
base(IntPtr.Zero)
|
||||
{
|
||||
myStartCallback = new StartCallback(OnStart);
|
||||
myProcessCallback = new ProcessCallback(ProcessSamples);
|
||||
myStopCallback = new StopCallback(OnStop);
|
||||
|
||||
SetThis(sfSoundRecorder_Create(myStartCallback, myProcessCallback, myStopCallback, IntPtr.Zero));
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Start the capture using default sample rate (44100 Hz)
|
||||
/// Warning : only one capture can happen at the same time
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void Start()
|
||||
{
|
||||
Start(44100);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Start the capture.
|
||||
/// Warning : only one capture can happen at the same time
|
||||
/// </summary>
|
||||
/// <param name="sampleRate"> Sound frequency; the more samples, the higher the quality (44100 by default = CD quality)</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void Start(uint sampleRate)
|
||||
{
|
||||
sfSoundRecorder_Start(This, sampleRate);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Stop the capture
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void Stop()
|
||||
{
|
||||
sfSoundRecorder_Stop(This);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Sample rate of the recorder, in samples per second
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public uint SampleRate
|
||||
{
|
||||
get {return sfSoundRecorder_GetSampleRate(This);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Tell if the system supports sound capture.
|
||||
/// If not, this class won't be usable
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public static bool IsAvailable
|
||||
{
|
||||
get {return sfSoundRecorder_IsAvailable();}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Provide a string describing the object
|
||||
/// </summary>
|
||||
/// <returns>String description of the object</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override string ToString()
|
||||
{
|
||||
return "[SoundRecorder]" +
|
||||
" SampleRate(" + SampleRate + ")";
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Called when a new capture starts
|
||||
/// </summary>
|
||||
/// <returns>False to abort recording audio data, true to continue</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
protected virtual bool OnStart()
|
||||
{
|
||||
// Does nothing by default
|
||||
return true;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Process a new chunk of recorded samples
|
||||
/// </summary>
|
||||
/// <param name="samples">Array of samples to process</param>
|
||||
/// <returns>False to stop recording audio data, true to continue</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
protected abstract bool OnProcessSamples(short[] samples);
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Called when the current capture stops
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
protected virtual void OnStop()
|
||||
{
|
||||
// Does nothing by default
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Handle the destruction of the object
|
||||
/// </summary>
|
||||
/// <param name="disposing">Is the GC disposing the object, or is it an explicit call ?</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
protected override void Destroy(bool disposing)
|
||||
{
|
||||
sfSoundRecorder_Destroy(This);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Function called directly by the C library ; convert
|
||||
/// arguments and forward them to the internal virtual function
|
||||
/// </summary>
|
||||
/// <param name="samples">Pointer to the array of samples</param>
|
||||
/// <param name="nbSamples">Number of samples in the array</param>
|
||||
/// <param name="userData">User data -- unused</param>
|
||||
/// <returns>False to stop recording audio data, true to continue</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
private bool ProcessSamples(IntPtr samples, uint nbSamples, IntPtr userData)
|
||||
{
|
||||
short[] samplesArray = new short[nbSamples];
|
||||
Marshal.Copy(samples, samplesArray, 0, samplesArray.Length);
|
||||
|
||||
return OnProcessSamples(samplesArray);
|
||||
}
|
||||
|
||||
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
|
||||
private delegate bool StartCallback();
|
||||
|
||||
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
|
||||
private delegate bool ProcessCallback(IntPtr samples, uint nbSamples, IntPtr userData);
|
||||
|
||||
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
|
||||
private delegate void StopCallback();
|
||||
|
||||
private StartCallback myStartCallback;
|
||||
private ProcessCallback myProcessCallback;
|
||||
private StopCallback myStopCallback;
|
||||
|
||||
#region Imports
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern IntPtr sfSoundRecorder_Create(StartCallback OnStart, ProcessCallback OnProcess, StopCallback OnStop, IntPtr UserData);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfSoundRecorder_Destroy(IntPtr SoundRecorder);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfSoundRecorder_Start(IntPtr SoundRecorder, uint SampleRate);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfSoundRecorder_Stop(IntPtr SoundRecorder);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern uint sfSoundRecorder_GetSampleRate(IntPtr SoundRecorder);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern bool sfSoundRecorder_IsAvailable();
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
}
|
@ -1,386 +0,0 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Security;
|
||||
|
||||
namespace SFML
|
||||
{
|
||||
namespace Audio
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// SoundStream is a streamed sound, ie. samples are acquired
|
||||
/// while the sound is playing. Use it for big sounds that would
|
||||
/// require hundreds of MB in memory (see Music),
|
||||
/// or for streaming sound from the network
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public abstract class SoundStream : ObjectBase
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Default constructor
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public SoundStream() :
|
||||
base(IntPtr.Zero)
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Play the sound stream
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void Play()
|
||||
{
|
||||
sfSoundStream_Play(This);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Pause the sound stream
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void Pause()
|
||||
{
|
||||
sfSoundStream_Pause(This);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Stop the sound stream
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void Stop()
|
||||
{
|
||||
sfSoundStream_Stop(This);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Samples rate, in samples per second
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public uint SampleRate
|
||||
{
|
||||
get {return sfSoundStream_GetSampleRate(This);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Number of channels (1 = mono, 2 = stereo)
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public uint ChannelsCount
|
||||
{
|
||||
get {return sfSoundStream_GetChannelsCount(This);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Current status of the sound stream (see SoundStatus enum)
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public SoundStatus Status
|
||||
{
|
||||
get {return sfSoundStream_GetStatus(This);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Loop state of the sound stream. Default value is false
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public bool Loop
|
||||
{
|
||||
get {return sfSoundStream_GetLoop(This);}
|
||||
set {sfSoundStream_SetLoop(This, value);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Pitch of the sound stream. Default value is 1
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public float Pitch
|
||||
{
|
||||
get {return sfSoundStream_GetPitch(This);}
|
||||
set {sfSoundStream_SetPitch(This, value);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Volume of the sound stream, in range [0, 100]. Default value is 100
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public float Volume
|
||||
{
|
||||
get {return sfSoundStream_GetVolume(This);}
|
||||
set {sfSoundStream_SetVolume(This, value);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// 3D position of the sound stream. Default value is (0, 0, 0)
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public Vector3f Position
|
||||
{
|
||||
get {Vector3f v; sfSoundStream_GetPosition(This, out v.X, out v.Y, out v.Z); return v;}
|
||||
set {sfSoundStream_SetPosition(This, value.X, value.Y, value.Z);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Is the sound stream's position relative to the listener's position,
|
||||
/// or is it absolute?
|
||||
/// Default value is false (absolute)
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public bool RelativeToListener
|
||||
{
|
||||
get {return sfSoundStream_IsRelativeToListener(This);}
|
||||
set {sfSoundStream_SetRelativeToListener(This, value);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Minimum distance of the sound stream. Closer than this distance,
|
||||
/// the listener will hear the sound at its maximum volume.
|
||||
/// The default value is 1
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public float MinDistance
|
||||
{
|
||||
get {return sfSoundStream_GetMinDistance(This);}
|
||||
set {sfSoundStream_SetMinDistance(This, value);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Attenuation factor. The higher the attenuation, the
|
||||
/// more the sound will be attenuated with distance from listener.
|
||||
/// The default value is 1
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public float Attenuation
|
||||
{
|
||||
get {return sfSoundStream_GetAttenuation(This);}
|
||||
set {sfSoundStream_SetAttenuation(This, value);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Current playing position, in milliseconds
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public uint PlayingOffset
|
||||
{
|
||||
get {return sfSoundStream_GetPlayingOffset(This);}
|
||||
set {sfSoundStream_SetPlayingOffset(This, value);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Provide a string describing the object
|
||||
/// </summary>
|
||||
/// <returns>String description of the object</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override string ToString()
|
||||
{
|
||||
return "[SoundStream]" +
|
||||
" SampleRate(" + SampleRate + ")" +
|
||||
" ChannelsCount(" + ChannelsCount + ")" +
|
||||
" Status(" + Status + ")" +
|
||||
" Loop(" + Loop + ")" +
|
||||
" Pitch(" + Pitch + ")" +
|
||||
" Volume(" + Volume + ")" +
|
||||
" Position(" + Position + ")" +
|
||||
" RelativeToListener(" + RelativeToListener + ")" +
|
||||
" MinDistance(" + MinDistance + ")" +
|
||||
" Attenuation(" + Attenuation + ")" +
|
||||
" PlayingOffset(" + PlayingOffset + ")";
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Set the audio stream parameters, you must call it before Play()
|
||||
/// </summary>
|
||||
/// <param name="sampleRate">Number of channels</param>
|
||||
/// <param name="channelsCount">Sample rate, in samples per second</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
protected void Initialize(uint channelsCount, uint sampleRate)
|
||||
{
|
||||
myGetDataCallback = new GetDataCallbackType(GetData);
|
||||
mySeekCallback = new SeekCallbackType(Seek);
|
||||
SetThis(sfSoundStream_Create(myGetDataCallback, mySeekCallback, channelsCount, sampleRate, IntPtr.Zero));
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Virtual function called each time new audio data is needed to feed the stream
|
||||
/// </summary>
|
||||
/// <param name="samples">Array of samples to fill for the stream</param>
|
||||
/// <returns>True to continue playback, false to stop</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
protected abstract bool OnGetData(out short[] samples);
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Virtual function called to seek into the stream
|
||||
/// </summary>
|
||||
/// <param name="timeOffset">New position, in milliseconds</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
protected abstract void OnSeek(uint timeOffset);
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Handle the destruction of the object
|
||||
/// </summary>
|
||||
/// <param name="disposing">Is the GC disposing the object, or is it an explicit call ?</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
protected override void Destroy(bool disposing)
|
||||
{
|
||||
sfSoundStream_Destroy(This);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Structure mapping the C library arguments passed to the data callback
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
private struct Chunk
|
||||
{
|
||||
unsafe public short* samplesPtr;
|
||||
public uint samplesCount;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Called each time new audio data is needed to feed the stream
|
||||
/// </summary>
|
||||
/// <param name="dataChunk">Data chunk to fill with new audio samples</param>
|
||||
/// <param name="userData">User data -- unused</param>
|
||||
/// <returns>True to continue playback, false to stop</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
private bool GetData(ref Chunk dataChunk, IntPtr userData)
|
||||
{
|
||||
if (OnGetData(out myTempBuffer))
|
||||
{
|
||||
unsafe
|
||||
{
|
||||
fixed (short* samplesPtr = myTempBuffer)
|
||||
{
|
||||
dataChunk.samplesPtr = samplesPtr;
|
||||
dataChunk.samplesCount = (uint)myTempBuffer.Length;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Called to seek in the stream
|
||||
/// </summary>
|
||||
/// <param name="timeOffset">New position, in milliseconds</param>
|
||||
/// <param name="userData">User data -- unused</param>
|
||||
/// <returns>If false is returned, the playback is aborted</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
private void Seek(uint timeOffset, IntPtr userData)
|
||||
{
|
||||
OnSeek(timeOffset);
|
||||
}
|
||||
|
||||
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
|
||||
private delegate bool GetDataCallbackType(ref Chunk dataChunk, IntPtr UserData);
|
||||
|
||||
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
|
||||
private delegate void SeekCallbackType(uint timeOffset, IntPtr UserData);
|
||||
|
||||
private GetDataCallbackType myGetDataCallback;
|
||||
private SeekCallbackType mySeekCallback;
|
||||
private short[] myTempBuffer;
|
||||
|
||||
#region Imports
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern IntPtr sfSoundStream_Create(GetDataCallbackType OnGetData, SeekCallbackType OnSeek, uint ChannelsCount, uint SampleRate, IntPtr UserData);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfSoundStream_Destroy(IntPtr SoundStreamStream);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfSoundStream_Play(IntPtr SoundStream);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfSoundStream_Pause(IntPtr SoundStream);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfSoundStream_Stop(IntPtr SoundStream);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern SoundStatus sfSoundStream_GetStatus(IntPtr SoundStream);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern uint sfSoundStream_GetChannelsCount(IntPtr SoundStream);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern uint sfSoundStream_GetSampleRate(IntPtr SoundStream);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfSoundStream_SetLoop(IntPtr SoundStream, bool Loop);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfSoundStream_SetPitch(IntPtr SoundStream, float Pitch);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfSoundStream_SetVolume(IntPtr SoundStream, float Volume);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfSoundStream_SetPosition(IntPtr SoundStream, float X, float Y, float Z);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfSoundStream_SetRelativeToListener(IntPtr SoundStream, bool Relative);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfSoundStream_SetMinDistance(IntPtr SoundStream, float MinDistance);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfSoundStream_SetAttenuation(IntPtr SoundStream, float Attenuation);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfSoundStream_SetPlayingOffset(IntPtr SoundStream, uint TimeOffset);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern bool sfSoundStream_GetLoop(IntPtr SoundStream);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern float sfSoundStream_GetPitch(IntPtr SoundStream);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern float sfSoundStream_GetVolume(IntPtr SoundStream);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfSoundStream_GetPosition(IntPtr SoundStream, out float X, out float Y, out float Z);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern bool sfSoundStream_IsRelativeToListener(IntPtr SoundStream);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern float sfSoundStream_GetMinDistance(IntPtr SoundStream);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern float sfSoundStream_GetAttenuation(IntPtr SoundStream);
|
||||
|
||||
[DllImport("csfml-audio-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern uint sfSoundStream_GetPlayingOffset(IntPtr SoundStream);
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
}
|
@ -1,133 +0,0 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace SFML
|
||||
{
|
||||
namespace Audio
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Vector3f is an utility class for manipulating 3 dimensional
|
||||
/// vectors with float components
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct Vector3f
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the vector from its coordinates
|
||||
/// </summary>
|
||||
/// <param name="x">X coordinate</param>
|
||||
/// <param name="y">Y coordinate</param>
|
||||
/// <param name="z">Z coordinate</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public Vector3f(float x, float y, float z)
|
||||
{
|
||||
X = x;
|
||||
Y = y;
|
||||
Z = z;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Operator - overload ; returns the opposite of a vector
|
||||
/// </summary>
|
||||
/// <param name="v">Vector to negate</param>
|
||||
/// <returns>-v</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public static Vector3f operator -(Vector3f v)
|
||||
{
|
||||
return new Vector3f(-v.X, -v.Y, -v.Z);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Operator - overload ; subtracts two vectors
|
||||
/// </summary>
|
||||
/// <param name="v1">First vector</param>
|
||||
/// <param name="v2">Second vector</param>
|
||||
/// <returns>v1 - v2</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public static Vector3f operator -(Vector3f v1, Vector3f v2)
|
||||
{
|
||||
return new Vector3f(v1.X - v2.X, v1.Y - v2.X, v1.Z - v2.Z);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Operator + overload ; add two vectors
|
||||
/// </summary>
|
||||
/// <param name="v1">First vector</param>
|
||||
/// <param name="v2">Second vector</param>
|
||||
/// <returns>v1 + v2</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public static Vector3f operator +(Vector3f v1, Vector3f v2)
|
||||
{
|
||||
return new Vector3f(v1.X + v2.X, v1.Y + v2.X, v1.Z + v2.Z);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Operator * overload ; multiply a vector by a scalar value
|
||||
/// </summary>
|
||||
/// <param name="v">Vector</param>
|
||||
/// <param name="x">Scalar value</param>
|
||||
/// <returns>v * x</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public static Vector3f operator *(Vector3f v, float x)
|
||||
{
|
||||
return new Vector3f(v.X * x, v.Y * x, v.Z * x);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Operator * overload ; multiply a scalar value by a vector
|
||||
/// </summary>
|
||||
/// <param name="x">Scalar value</param>
|
||||
/// <param name="v">Vector</param>
|
||||
/// <returns>x * v</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public static Vector3f operator *(float x, Vector3f v)
|
||||
{
|
||||
return new Vector3f(v.X * x, v.Y * x, v.Z * x);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Operator / overload ; divide a vector by a scalar value
|
||||
/// </summary>
|
||||
/// <param name="v">Vector</param>
|
||||
/// <param name="x">Scalar value</param>
|
||||
/// <returns>v / x</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public static Vector3f operator /(Vector3f v, float x)
|
||||
{
|
||||
return new Vector3f(v.X / x, v.Y / x, v.Z / x);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Provide a string describing the object
|
||||
/// </summary>
|
||||
/// <returns>String description of the object</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override string ToString()
|
||||
{
|
||||
return "[Vector3f]" +
|
||||
" X(" + X + ")" +
|
||||
" Y(" + Y + ")" +
|
||||
" Z(" + Z + ")";
|
||||
}
|
||||
|
||||
/// <summary>X (horizontal) component of the vector</summary>
|
||||
public float X;
|
||||
|
||||
/// <summary>Y (vertical) component of the vector</summary>
|
||||
public float Y;
|
||||
|
||||
/// <summary>Z (depth) component of the vector</summary>
|
||||
public float Z;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,88 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>9.0.21022</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{0B202C4D-A457-47FE-84A3-031DD878C6BE}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>SFML.Audio</RootNamespace>
|
||||
<AssemblyName>sfmlnet-audio-2</AssemblyName>
|
||||
<StartupObject>
|
||||
</StartupObject>
|
||||
<FileUpgradeFlags>
|
||||
</FileUpgradeFlags>
|
||||
<OldToolsVersion>2.0</OldToolsVersion>
|
||||
<UpgradeBackupLocation>
|
||||
</UpgradeBackupLocation>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>..\..\lib\x86\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<DocumentationFile>..\..\doc\build\audio-doc.xml</DocumentationFile>
|
||||
<DebugType>full</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
|
||||
<OutputPath>..\..\lib\x86\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<DocumentationFile>..\..\doc\build\audio-doc.xml</DocumentationFile>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>..\..\lib\x64\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<DocumentationFile>..\..\doc\build\audio-doc.xml</DocumentationFile>
|
||||
<DebugType>full</DebugType>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
|
||||
<OutputPath>..\..\lib\x64\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<DocumentationFile>..\..\doc\build\audio-doc.xml</DocumentationFile>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
<ItemGroup>
|
||||
<Compile Include="Listener.cs" />
|
||||
<Compile Include="Music.cs" />
|
||||
<Compile Include="Sound.cs" />
|
||||
<Compile Include="SoundBuffer.cs" />
|
||||
<Compile Include="SoundBufferRecorder.cs" />
|
||||
<Compile Include="SoundRecorder.cs" />
|
||||
<Compile Include="SoundStream.cs" />
|
||||
<Compile Include="Vector3.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Window\sfml-window.csproj">
|
||||
<Project>{D17DE83D-A592-461F-8AF2-53F9E22E1D0F}</Project>
|
||||
<Name>sfml-window</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Properties\" />
|
||||
</ItemGroup>
|
||||
</Project>
|
@ -1,110 +0,0 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace SFML
|
||||
{
|
||||
namespace Graphics
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Utility class for manipulating 32-bits RGBA colors
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct Color
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the color from its red, green and blue components
|
||||
/// </summary>
|
||||
/// <param name="red">Red component</param>
|
||||
/// <param name="green">Green component</param>
|
||||
/// <param name="blue">Blue component</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public Color(byte red, byte green, byte blue) :
|
||||
this(red, green, blue, 255)
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the color from its red, green, blue and alpha components
|
||||
/// </summary>
|
||||
/// <param name="red">Red component</param>
|
||||
/// <param name="green">Green component</param>
|
||||
/// <param name="blue">Blue component</param>
|
||||
/// <param name="alpha">Alpha (transparency) component</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public Color(byte red, byte green, byte blue, byte alpha)
|
||||
{
|
||||
R = red;
|
||||
G = green;
|
||||
B = blue;
|
||||
A = alpha;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the color from another
|
||||
/// </summary>
|
||||
/// <param name="color">Color to copy</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public Color(Color color) :
|
||||
this(color.R, color.G, color.B, color.A)
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Provide a string describing the object
|
||||
/// </summary>
|
||||
/// <returns>String description of the object</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override string ToString()
|
||||
{
|
||||
return "[Color]" +
|
||||
" R(" + R + ")" +
|
||||
" G(" + G + ")" +
|
||||
" B(" + B + ")" +
|
||||
" A(" + A + ")";
|
||||
}
|
||||
|
||||
/// <summary>Red component of the color</summary>
|
||||
public byte R;
|
||||
|
||||
/// <summary>Green component of the color</summary>
|
||||
public byte G;
|
||||
|
||||
/// <summary>Blue component of the color</summary>
|
||||
public byte B;
|
||||
|
||||
/// <summary>Alpha (transparent) component of the color</summary>
|
||||
public byte A;
|
||||
|
||||
|
||||
/// <summary>Predefined black color</summary>
|
||||
public static readonly Color Black = new Color(0, 0, 0);
|
||||
|
||||
/// <summary>Predefined white color</summary>
|
||||
public static readonly Color White = new Color(255, 255, 255);
|
||||
|
||||
/// <summary>Predefined red color</summary>
|
||||
public static readonly Color Red = new Color(255, 0, 0);
|
||||
|
||||
/// <summary>Predefined green color</summary>
|
||||
public static readonly Color Green = new Color(0, 255, 0);
|
||||
|
||||
/// <summary>Predefined blue color</summary>
|
||||
public static readonly Color Blue = new Color(0, 0, 255);
|
||||
|
||||
/// <summary>Predefined yellow color</summary>
|
||||
public static readonly Color Yellow = new Color(255, 255, 0);
|
||||
|
||||
/// <summary>Predefined magenta color</summary>
|
||||
public static readonly Color Magenta = new Color(255, 0, 255);
|
||||
|
||||
/// <summary>Predefined cyan color</summary>
|
||||
public static readonly Color Cyan = new Color(0, 255, 255);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,91 +0,0 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Security;
|
||||
using System.Runtime.ConstrainedExecution;
|
||||
|
||||
namespace SFML
|
||||
{
|
||||
namespace Graphics
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// This class defines
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
internal class Context : CriticalFinalizerObject
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Default constructor
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public Context()
|
||||
{
|
||||
myThis = sfContext_Create();
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Finalizer
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
~Context()
|
||||
{
|
||||
sfContext_Destroy(myThis);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Activate or deactivate the context
|
||||
/// </summary>
|
||||
/// <param name="active">True to activate, false to deactivate</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void SetActive(bool active)
|
||||
{
|
||||
sfContext_SetActive(myThis, active);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Global helper context
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public static Context Global
|
||||
{
|
||||
get
|
||||
{
|
||||
if (ourGlobalContext == null)
|
||||
ourGlobalContext = new Context();
|
||||
|
||||
return ourGlobalContext;
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Provide a string describing the object
|
||||
/// </summary>
|
||||
/// <returns>String description of the object</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override string ToString()
|
||||
{
|
||||
return "[Context]";
|
||||
}
|
||||
|
||||
private static Context ourGlobalContext = null;
|
||||
|
||||
private IntPtr myThis = IntPtr.Zero;
|
||||
|
||||
#region Imports
|
||||
[DllImport("csfml-window-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern IntPtr sfContext_Create();
|
||||
|
||||
[DllImport("csfml-window-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfContext_Destroy(IntPtr View);
|
||||
|
||||
[DllImport("csfml-window-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfContext_SetActive(IntPtr View, bool Active);
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
}
|
@ -1,130 +0,0 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using SFML.Window;
|
||||
|
||||
namespace SFML
|
||||
{
|
||||
namespace Graphics
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Enumerate the blending modes available for drawable objects
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public enum BlendMode
|
||||
{
|
||||
/// <summary>Pixel = Src * a + Dest * (1 - a)</summary>
|
||||
Alpha,
|
||||
|
||||
/// <summary>Pixel = Src + Dest</summary>
|
||||
Add,
|
||||
|
||||
/// <summary>Pixel = Src * Dest</summary>
|
||||
Multiply,
|
||||
|
||||
/// <summary>No blending</summary>
|
||||
None
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Abstract base class for every object that can be drawn
|
||||
/// into a render window
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public abstract class Drawable : ObjectBase
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Position of the object on screen
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public abstract Vector2f Position { get; set; }
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Rotation of the object, defined in degrees
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public abstract float Rotation {get; set;}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Vertical and horizontal scale of the object
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public abstract Vector2f Scale { get; set; }
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Origin of the transformation of the object
|
||||
/// (center of translation, rotation and scale)
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public abstract Vector2f Origin { get; set; }
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Global color of the object
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public abstract Color Color {get; set;}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Blending mode of the object
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public abstract BlendMode BlendMode {get; set;}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Transform a point from global coordinates into local coordinates
|
||||
/// (ie it applies the inverse of object's origin, translation, rotation and scale to the point)
|
||||
/// </summary>
|
||||
/// <param name="point">Point to transform</param>
|
||||
/// <returns>Transformed point</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public abstract Vector2f TransformToLocal(Vector2f point);
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Transform a point from local coordinates into global coordinates
|
||||
/// (ie it applies the object's origin, translation, rotation and scale to the point)
|
||||
/// </summary>
|
||||
/// <param name="point">Point to transform</param>
|
||||
/// <returns>Transformed point</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public abstract Vector2f TransformToGlobal(Vector2f point);
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Render the object into the given render window
|
||||
/// </summary>
|
||||
/// <param name="target">Target render window</param>
|
||||
/// <param name="shader">Shader to apply</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
internal abstract void Render(RenderWindow target, Shader shader);
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Render the object into the given render image
|
||||
/// </summary>
|
||||
/// <param name="target">Target render image</param>
|
||||
/// <param name="shader">Shader to apply</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
internal abstract void Render(RenderImage target, Shader shader);
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Internal constructor, for derived classes
|
||||
/// </summary>
|
||||
/// <param name="thisPtr">Pointer to the object in C library</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
protected Drawable(IntPtr thisPtr) :
|
||||
base(thisPtr)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,238 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Security;
|
||||
using System.IO;
|
||||
|
||||
namespace SFML
|
||||
{
|
||||
namespace Graphics
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Structure describing a glyph (a visual character)
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct Glyph
|
||||
{
|
||||
/// <summary>Offset to move horizontically to the next character</summary>
|
||||
public int Advance;
|
||||
|
||||
/// <summary>Bounding rectangle of the glyph, in coordinates relative to the baseline</summary>
|
||||
public IntRect Rectangle;
|
||||
|
||||
/// <summary>Texture coordinates of the glyph inside the font's image</summary>
|
||||
public FloatRect TexCoords;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Font is the low-level class for loading and
|
||||
/// manipulating character fonts. This class is meant to
|
||||
/// be used by String2D
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public class Font : ObjectBase
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the font from a file
|
||||
/// </summary>
|
||||
/// <param name="filename">Font file to load</param>
|
||||
/// <exception cref="LoadingFailedException" />
|
||||
////////////////////////////////////////////////////////////
|
||||
public Font(string filename) :
|
||||
base(sfFont_CreateFromFile(filename))
|
||||
{
|
||||
if (This == IntPtr.Zero)
|
||||
throw new LoadingFailedException("font", filename);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the font from a file in a stream
|
||||
/// </summary>
|
||||
/// <param name="stream">Stream containing the file contents</param>
|
||||
/// <exception cref="LoadingFailedException" />
|
||||
////////////////////////////////////////////////////////////
|
||||
public Font(Stream stream) :
|
||||
base(IntPtr.Zero)
|
||||
{
|
||||
unsafe
|
||||
{
|
||||
stream.Position = 0;
|
||||
byte[] StreamData = new byte[stream.Length];
|
||||
uint Read = (uint)stream.Read(StreamData, 0, StreamData.Length);
|
||||
fixed (byte* dataPtr = StreamData)
|
||||
{
|
||||
SetThis(sfFont_CreateFromMemory((char*)dataPtr, Read));
|
||||
}
|
||||
}
|
||||
|
||||
if (This == IntPtr.Zero)
|
||||
throw new LoadingFailedException("font");
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the font from another font
|
||||
/// </summary>
|
||||
/// <param name="copy">Font to copy</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public Font(Font copy) :
|
||||
base(sfFont_Copy(copy.This))
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Get a glyph in the font
|
||||
/// </summary>
|
||||
/// <param name="codePoint">Unicode code point of the character to get</param>
|
||||
/// <param name="characterSize">Character size</param>
|
||||
/// <param name="bold">Retrieve the bold version or the regular one?</param>
|
||||
/// <returns>The glyph corresponding to the character</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public Glyph GetGlyph(uint codePoint, uint characterSize, bool bold)
|
||||
{
|
||||
return sfFont_GetGlyph(This, codePoint, characterSize, bold);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Get the kerning offset between two glyphs
|
||||
/// </summary>
|
||||
/// <param name="first">Unicode code point of the first character</param>
|
||||
/// <param name="second">Unicode code point of the second character</param>
|
||||
/// <param name="characterSize">Character size</param>
|
||||
/// <returns>Kerning offset, in pixels</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public int GetKerning(uint first, uint second, uint characterSize)
|
||||
{
|
||||
return sfFont_GetKerning(This, first, second, characterSize);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Get spacing between two consecutive lines
|
||||
/// </summary>
|
||||
/// <param name="characterSize">Character size</param>
|
||||
/// <returns>Line spacing, in pixels</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public int GetLineSpacing(uint characterSize)
|
||||
{
|
||||
return sfFont_GetLineSpacing(This, characterSize);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Get the image containing the glyphs of a given size
|
||||
/// </summary>
|
||||
/// <param name="characterSize">Character size</param>
|
||||
/// <returns>Image storing the glyphs for the given size</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public Image GetImage(uint characterSize)
|
||||
{
|
||||
myImages[characterSize] = new Image(sfFont_GetImage(This, characterSize));
|
||||
return myImages[characterSize];
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Default built-in font
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public static Font DefaultFont
|
||||
{
|
||||
get
|
||||
{
|
||||
if (ourDefaultFont == null)
|
||||
ourDefaultFont = new Font(sfFont_GetDefaultFont());
|
||||
|
||||
return ourDefaultFont;
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Provide a string describing the object
|
||||
/// </summary>
|
||||
/// <returns>String description of the object</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override string ToString()
|
||||
{
|
||||
return "[Font]";
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Handle the destruction of the object
|
||||
/// </summary>
|
||||
/// <param name="disposing">Is the GC disposing the object, or is it an explicit call ?</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
protected override void Destroy(bool disposing)
|
||||
{
|
||||
if (this != ourDefaultFont)
|
||||
{
|
||||
if (!disposing)
|
||||
Context.Global.SetActive(true);
|
||||
|
||||
sfFont_Destroy(This);
|
||||
|
||||
if (disposing)
|
||||
{
|
||||
foreach (Image image in myImages.Values)
|
||||
image.Dispose();
|
||||
}
|
||||
|
||||
if (!disposing)
|
||||
Context.Global.SetActive(false);
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Internal constructor
|
||||
/// </summary>
|
||||
/// <param name="thisPtr">Pointer to the object in C library</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
private Font(IntPtr thisPtr) :
|
||||
base(thisPtr)
|
||||
{
|
||||
}
|
||||
|
||||
private Dictionary<uint, Image> myImages = new Dictionary<uint, Image>();
|
||||
private static Font ourDefaultFont = null;
|
||||
|
||||
#region Imports
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern IntPtr sfFont_CreateFromFile(string Filename);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
unsafe static extern IntPtr sfFont_CreateFromMemory(char* Data, uint SizeInBytes);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern IntPtr sfFont_Copy(IntPtr Font);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfFont_Destroy(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern Glyph sfFont_GetGlyph(IntPtr This, uint codePoint, uint characterSize, bool bold);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern int sfFont_GetKerning(IntPtr This, uint first, uint second, uint characterSize);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern int sfFont_GetLineSpacing(IntPtr This, uint characterSize);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern IntPtr sfFont_GetImage(IntPtr This, uint characterSize);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern IntPtr sfFont_GetDefaultFont();
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
}
|
@ -1,462 +0,0 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Security;
|
||||
using System.IO;
|
||||
using System.Runtime.ConstrainedExecution;
|
||||
|
||||
namespace SFML
|
||||
{
|
||||
namespace Graphics
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Image is the low-level class for loading and
|
||||
/// manipulating images
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public class Image : ObjectBase
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the image with black color
|
||||
/// </summary>
|
||||
/// <param name="width">Image width</param>
|
||||
/// <param name="height">Image height</param>
|
||||
/// <exception cref="LoadingFailedException" />
|
||||
////////////////////////////////////////////////////////////
|
||||
public Image(uint width, uint height) :
|
||||
this(width, height, Color.Black)
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the image from a single color
|
||||
/// </summary>
|
||||
/// <param name="width">Image width</param>
|
||||
/// <param name="height">Image height</param>
|
||||
/// <param name="color">Color to fill the image with</param>
|
||||
/// <exception cref="LoadingFailedException" />
|
||||
////////////////////////////////////////////////////////////
|
||||
public Image(uint width, uint height, Color color) :
|
||||
base(sfImage_CreateFromColor(width, height, color))
|
||||
{
|
||||
if (This == IntPtr.Zero)
|
||||
throw new LoadingFailedException("image");
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the image from a file
|
||||
/// </summary>
|
||||
/// <param name="filename">Path of the image file to load</param>
|
||||
/// <exception cref="LoadingFailedException" />
|
||||
////////////////////////////////////////////////////////////
|
||||
public Image(string filename) :
|
||||
base(sfImage_CreateFromFile(filename))
|
||||
{
|
||||
if (This == IntPtr.Zero)
|
||||
throw new LoadingFailedException("image", filename);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the image from a file in a stream
|
||||
/// </summary>
|
||||
/// <param name="stream">Stream containing the file contents</param>
|
||||
/// <exception cref="LoadingFailedException" />
|
||||
////////////////////////////////////////////////////////////
|
||||
public Image(Stream stream) :
|
||||
base(IntPtr.Zero)
|
||||
{
|
||||
stream.Position = 0;
|
||||
byte[] StreamData = new byte[stream.Length];
|
||||
uint Read = (uint)stream.Read(StreamData, 0, StreamData.Length);
|
||||
unsafe
|
||||
{
|
||||
fixed (byte* dataPtr = StreamData)
|
||||
{
|
||||
SetThis(sfImage_CreateFromMemory((char*)dataPtr, Read));
|
||||
}
|
||||
}
|
||||
if (This == IntPtr.Zero)
|
||||
throw new LoadingFailedException("image");
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the image directly from an array of pixels
|
||||
/// </summary>
|
||||
/// <param name="pixels">2 dimensions array containing the pixels</param>
|
||||
/// <exception cref="LoadingFailedException" />
|
||||
////////////////////////////////////////////////////////////
|
||||
public Image(Color[,] pixels) :
|
||||
base(IntPtr.Zero)
|
||||
{
|
||||
unsafe
|
||||
{
|
||||
fixed (Color* PixelsPtr = pixels)
|
||||
{
|
||||
uint Width = (uint)pixels.GetLength(0);
|
||||
uint Height = (uint)pixels.GetLength(1);
|
||||
SetThis(sfImage_CreateFromPixels(Width, Height, (byte*)PixelsPtr));
|
||||
}
|
||||
}
|
||||
|
||||
if (This == IntPtr.Zero)
|
||||
throw new LoadingFailedException("image");
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the image directly from an array of pixels
|
||||
/// </summary>
|
||||
/// <param name="width">Image width</param>
|
||||
/// <param name="height">Image height</param>
|
||||
/// <param name="pixels">array containing the pixels</param>
|
||||
/// <exception cref="LoadingFailedException" />
|
||||
////////////////////////////////////////////////////////////
|
||||
public Image(uint width, uint height, byte[] pixels) :
|
||||
base(IntPtr.Zero)
|
||||
{
|
||||
unsafe
|
||||
{
|
||||
fixed (byte* PixelsPtr = pixels)
|
||||
{
|
||||
SetThis(sfImage_CreateFromPixels(width, height, PixelsPtr));
|
||||
}
|
||||
}
|
||||
|
||||
if (This == IntPtr.Zero)
|
||||
throw new LoadingFailedException("image");
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the image from another image
|
||||
/// </summary>
|
||||
/// <param name="copy">Image to copy</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public Image(Image copy) :
|
||||
base(sfImage_Copy(copy.This))
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Save the contents of the image to a file
|
||||
/// </summary>
|
||||
/// <param name="filename">Path of the file to save (overwritten if already exist)</param>
|
||||
/// <returns>True if saving was successful</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public bool SaveToFile(string filename)
|
||||
{
|
||||
return sfImage_SaveToFile(This, filename);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Create a transparency mask from a specified colorkey
|
||||
/// </summary>
|
||||
/// <param name="color">Color to become transparent</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void CreateMaskFromColor(Color color)
|
||||
{
|
||||
CreateMaskFromColor(color, 0);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Create a transparency mask from a specified colorkey
|
||||
/// </summary>
|
||||
/// <param name="color">Color to become transparent</param>
|
||||
/// <param name="alpha">Alpha value to use for transparent pixels</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void CreateMaskFromColor(Color color, byte alpha)
|
||||
{
|
||||
sfImage_CreateMaskFromColor(This, color, alpha);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Copy pixels from another image onto this one.
|
||||
/// This function does a slow pixel copy and should only
|
||||
/// be used at initialization time
|
||||
/// </summary>
|
||||
/// <param name="source">Source image to copy</param>
|
||||
/// <param name="destX">X coordinate of the destination position</param>
|
||||
/// <param name="destY">Y coordinate of the destination position</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void Copy(Image source, uint destX, uint destY)
|
||||
{
|
||||
Copy(source, destX, destY, new IntRect(0, 0, 0, 0));
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Copy pixels from another image onto this one.
|
||||
/// This function does a slow pixel copy and should only
|
||||
/// be used at initialization time
|
||||
/// </summary>
|
||||
/// <param name="source">Source image to copy</param>
|
||||
/// <param name="destX">X coordinate of the destination position</param>
|
||||
/// <param name="destY">Y coordinate of the destination position</param>
|
||||
/// <param name="sourceRect">Sub-rectangle of the source image to copy</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void Copy(Image source, uint destX, uint destY, IntRect sourceRect)
|
||||
{
|
||||
sfImage_CopyImage(This, source.This, destX, destY, sourceRect);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Create the image from the current contents of the
|
||||
/// given window
|
||||
/// </summary>
|
||||
/// <param name="window">Window to capture</param>
|
||||
/// <returns>True if copy has been successful</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public bool CopyScreen(RenderWindow window)
|
||||
{
|
||||
return CopyScreen(window, new IntRect(0, 0, 0, 0));
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Create the image from the current contents of the
|
||||
/// given window
|
||||
/// </summary>
|
||||
/// <param name="window">Window to capture</param>
|
||||
/// <param name="sourceRect">Sub-rectangle of the screen to copy</param>
|
||||
/// <returns>True if copy has been successful</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public bool CopyScreen(RenderWindow window, IntRect sourceRect)
|
||||
{
|
||||
return sfImage_CopyScreen(This, window.This, sourceRect);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Get a pixel from the image
|
||||
/// </summary>
|
||||
/// <param name="x">X coordinate of pixel in the image</param>
|
||||
/// <param name="y">Y coordinate of pixel in the image</param>
|
||||
/// <returns>Color of pixel (x, y)</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public Color GetPixel(uint x, uint y)
|
||||
{
|
||||
return sfImage_GetPixel(This, x, y);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Change the color of a pixel
|
||||
/// </summary>
|
||||
/// <param name="x">X coordinate of pixel in the image</param>
|
||||
/// <param name="y">Y coordinate of pixel in the image</param>
|
||||
/// <param name="color">New color for pixel (x, y)</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void SetPixel(uint x, uint y, Color color)
|
||||
{
|
||||
sfImage_SetPixel(This, x, y, color);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Get a copy of the array of pixels (RGBA 8 bits integers components)
|
||||
/// Array size is Width x Height x 4
|
||||
/// </summary>
|
||||
/// <returns>Array of pixels</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public byte[] Pixels
|
||||
{
|
||||
get
|
||||
{
|
||||
byte[] PixelsPtr = new byte[Width * Height * 4];
|
||||
Marshal.Copy(sfImage_GetPixelsPtr(This), PixelsPtr, 0, PixelsPtr.Length);
|
||||
return PixelsPtr;
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Update the pixels of the image
|
||||
/// </summary>
|
||||
/// <param name="pixels">2 dimensions array containing the pixels</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void UpdatePixels(Color[,] pixels)
|
||||
{
|
||||
UpdatePixels(pixels, 0, 0);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Update the pixels of the image
|
||||
/// </summary>
|
||||
/// <param name="pixels">2 dimensions array containing the pixels</param>
|
||||
/// <param name="x">X position of the rectangle to update</param>
|
||||
/// <param name="y">Y position of the rectangle to update</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void UpdatePixels(Color[,] pixels, uint x, uint y)
|
||||
{
|
||||
unsafe
|
||||
{
|
||||
fixed (Color* PixelsPtr = pixels)
|
||||
{
|
||||
int Width = pixels.GetLength(0);
|
||||
int Height = pixels.GetLength(1);
|
||||
sfImage_UpdatePixels(This, PixelsPtr, new IntRect((int)x, (int)y, Width, Height));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Bind the image for rendering
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void Bind()
|
||||
{
|
||||
sfImage_Bind(This);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Control the smooth filter
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public bool Smooth
|
||||
{
|
||||
get {return sfImage_IsSmooth(This);}
|
||||
set {sfImage_SetSmooth(This, value);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Width of the image, in pixels
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public uint Width
|
||||
{
|
||||
get {return sfImage_GetWidth(This);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Height of the image, in pixels
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public uint Height
|
||||
{
|
||||
get {return sfImage_GetHeight(This);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Provide a string describing the object
|
||||
/// </summary>
|
||||
/// <returns>String description of the object</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override string ToString()
|
||||
{
|
||||
return "[Image]" +
|
||||
" Width(" + Width + ")" +
|
||||
" Height(" + Height + ")" +
|
||||
" Smooth(" + Smooth + ")";
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Internal constructor
|
||||
/// </summary>
|
||||
/// <param name="thisPtr">Pointer to the object in C library</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
internal Image(IntPtr thisPtr) :
|
||||
base(thisPtr)
|
||||
{
|
||||
myExternal = true;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Handle the destruction of the object
|
||||
/// </summary>
|
||||
/// <param name="disposing">Is the GC disposing the object, or is it an explicit call ?</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
protected override void Destroy(bool disposing)
|
||||
{
|
||||
if (!myExternal)
|
||||
{
|
||||
if (!disposing)
|
||||
Context.Global.SetActive(true);
|
||||
|
||||
sfImage_Destroy(This);
|
||||
|
||||
if (!disposing)
|
||||
Context.Global.SetActive(false);
|
||||
}
|
||||
}
|
||||
|
||||
bool myExternal = false;
|
||||
|
||||
#region Imports
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern IntPtr sfImage_CreateFromColor(uint Width, uint Height, Color Col);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
unsafe static extern IntPtr sfImage_CreateFromPixels(uint Width, uint Height, byte* Pixels);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern IntPtr sfImage_CreateFromFile(string Filename);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern IntPtr sfImage_Copy(IntPtr Image);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
unsafe static extern IntPtr sfImage_CreateFromMemory(char* Data, uint Size);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfImage_Destroy(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern bool sfImage_SaveToFile(IntPtr This, string Filename);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfImage_CreateMaskFromColor(IntPtr This, Color Col, byte Alpha);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern bool sfImage_CopyScreen(IntPtr This, IntPtr Window, IntRect SourceRect);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfImage_CopyImage(IntPtr This, IntPtr Source, uint DestX, uint DestY, IntRect SourceRect);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfImage_SetPixel(IntPtr This, uint X, uint Y, Color Col);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern Color sfImage_GetPixel(IntPtr This, uint X, uint Y);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern IntPtr sfImage_GetPixelsPtr(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
unsafe static extern void sfImage_UpdatePixels(IntPtr This, Color* Pixels, IntRect Rectangle);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfImage_Bind(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfImage_SetSmooth(IntPtr This, bool Smooth);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern uint sfImage_GetWidth(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern uint sfImage_GetHeight(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern bool sfImage_IsSmooth(IntPtr This);
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
}
|
@ -1,247 +0,0 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace SFML
|
||||
{
|
||||
namespace Graphics
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// IntRect is an utility class for manipulating 2D rectangles
|
||||
/// with integer coordinates
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct IntRect
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the rectangle from its coordinates
|
||||
/// </summary>
|
||||
/// <param name="left">Left coordinate of the rectangle</param>
|
||||
/// <param name="top">Top coordinate of the rectangle</param>
|
||||
/// <param name="width">Width of the rectangle</param>
|
||||
/// <param name="height">Height of the rectangle</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public IntRect(int left, int top, int width, int height)
|
||||
{
|
||||
Left = left;
|
||||
Top = top;
|
||||
Width = width;
|
||||
Height = height;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Check if a point is inside the rectangle's area
|
||||
/// </summary>
|
||||
/// <param name="x">X coordinate of the point to test</param>
|
||||
/// <param name="y">Y coordinate of the point to test</param>
|
||||
/// <returns>True if the point is inside</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public bool Contains(int x, int y)
|
||||
{
|
||||
return (x >= Left) && (x < Left + Width) && (y >= Top) && (y < Top + Height);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Check intersection between two rectangles
|
||||
/// </summary>
|
||||
/// <param name="rect"> Rectangle to test</param>
|
||||
/// <returns>True if rectangles overlap</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public bool Intersects(IntRect rect)
|
||||
{
|
||||
// Compute the intersection boundaries
|
||||
int left = Math.Max(Left, rect.Left);
|
||||
int top = Math.Max(Top, rect.Top);
|
||||
int right = Math.Min(Left + Width, rect.Left + rect.Width);
|
||||
int bottom = Math.Min(Top + Height, rect.Top + rect.Height);
|
||||
|
||||
return (left < right) && (top < bottom);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Check intersection between two rectangles
|
||||
/// </summary>
|
||||
/// <param name="rect"> Rectangle to test</param>
|
||||
/// <param name="overlap">Rectangle to be filled with overlapping rect</param>
|
||||
/// <returns>True if rectangles overlap</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public bool Intersects(IntRect rect, out IntRect overlap)
|
||||
{
|
||||
// Compute the intersection boundaries
|
||||
int left = Math.Max(Left, rect.Left);
|
||||
int top = Math.Max(Top, rect.Top);
|
||||
int right = Math.Min(Left + Width, rect.Left + rect.Width);
|
||||
int bottom = Math.Min(Top + Height, rect.Top + rect.Height);
|
||||
|
||||
// If the intersection is valid (positive non zero area), then there is an intersection
|
||||
if ((left < right) && (top < bottom))
|
||||
{
|
||||
overlap.Left = left;
|
||||
overlap.Top = top;
|
||||
overlap.Width = right - left;
|
||||
overlap.Height = bottom - top;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
overlap.Left = 0;
|
||||
overlap.Top = 0;
|
||||
overlap.Width = 0;
|
||||
overlap.Height = 0;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Provide a string describing the object
|
||||
/// </summary>
|
||||
/// <returns>String description of the object</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override string ToString()
|
||||
{
|
||||
return "[IntRect]" +
|
||||
" Left(" + Left + ")" +
|
||||
" Top(" + Top + ")" +
|
||||
" Width(" + Width + ")" +
|
||||
" Height(" + Height + ")";
|
||||
}
|
||||
|
||||
/// <summary>Left coordinate of the rectangle</summary>
|
||||
public int Left;
|
||||
|
||||
/// <summary>Top coordinate of the rectangle</summary>
|
||||
public int Top;
|
||||
|
||||
/// <summary>Width of the rectangle</summary>
|
||||
public int Width;
|
||||
|
||||
/// <summary>Height of the rectangle</summary>
|
||||
public int Height;
|
||||
}
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// IntRect is an utility class for manipulating 2D rectangles
|
||||
/// with float coordinates
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct FloatRect
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the rectangle from its coordinates
|
||||
/// </summary>
|
||||
/// <param name="left">Left coordinate of the rectangle</param>
|
||||
/// <param name="top">Top coordinate of the rectangle</param>
|
||||
/// <param name="width">Width of the rectangle</param>
|
||||
/// <param name="height">Height of the rectangle</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public FloatRect(float left, float top, float width, float height)
|
||||
{
|
||||
Left = left;
|
||||
Top = top;
|
||||
Width = width;
|
||||
Height = height;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Check if a point is inside the rectangle's area
|
||||
/// </summary>
|
||||
/// <param name="x">X coordinate of the point to test</param>
|
||||
/// <param name="y">Y coordinate of the point to test</param>
|
||||
/// <returns>True if the point is inside</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public bool Contains(float x, float y)
|
||||
{
|
||||
return (x >= Left) && (x < Left + Width) && (y >= Top) && (y < Top + Height);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Check intersection between two rectangles
|
||||
/// </summary>
|
||||
/// <param name="rect"> Rectangle to test</param>
|
||||
/// <returns>True if rectangles overlap</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public bool Intersects(FloatRect rect)
|
||||
{
|
||||
// Compute the intersection boundaries
|
||||
float left = Math.Max(Left, rect.Left);
|
||||
float top = Math.Max(Top, rect.Top);
|
||||
float right = Math.Min(Left + Width, rect.Left + rect.Width);
|
||||
float bottom = Math.Min(Top + Height, rect.Top + rect.Height);
|
||||
|
||||
return (left < right) && (top < bottom);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Check intersection between two rectangles
|
||||
/// </summary>
|
||||
/// <param name="rect"> Rectangle to test</param>
|
||||
/// <param name="overlap">Rectangle to be filled with overlapping rect</param>
|
||||
/// <returns>True if rectangles overlap</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public bool Intersects(FloatRect rect, out FloatRect overlap)
|
||||
{
|
||||
// Compute the intersection boundaries
|
||||
float left = Math.Max(Left, rect.Left);
|
||||
float top = Math.Max(Top, rect.Top);
|
||||
float right = Math.Min(Left + Width, rect.Left + rect.Width);
|
||||
float bottom = Math.Min(Top + Height, rect.Top + rect.Height);
|
||||
|
||||
// If the intersection is valid (positive non zero area), then there is an intersection
|
||||
if ((left < right) && (top < bottom))
|
||||
{
|
||||
overlap.Left = left;
|
||||
overlap.Top = top;
|
||||
overlap.Width = right - left;
|
||||
overlap.Height = bottom - top;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
overlap.Left = 0;
|
||||
overlap.Top = 0;
|
||||
overlap.Width = 0;
|
||||
overlap.Height = 0;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Provide a string describing the object
|
||||
/// </summary>
|
||||
/// <returns>String description of the object</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override string ToString()
|
||||
{
|
||||
return "[FloatRect]" +
|
||||
" Left(" + Left + ")" +
|
||||
" Top(" + Top + ")" +
|
||||
" Width(" + Width + ")" +
|
||||
" Height(" + Height + ")";
|
||||
}
|
||||
|
||||
/// <summary>Left coordinate of the rectangle</summary>
|
||||
public float Left;
|
||||
|
||||
/// <summary>Top coordinate of the rectangle</summary>
|
||||
public float Top;
|
||||
|
||||
/// <summary>Width of the rectangle</summary>
|
||||
public float Width;
|
||||
|
||||
/// <summary>Height of the rectangle</summary>
|
||||
public float Height;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,336 +0,0 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Security;
|
||||
using SFML.Window;
|
||||
|
||||
namespace SFML
|
||||
{
|
||||
namespace Graphics
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Simple wrapper for Window that allows easy
|
||||
/// 2D rendering
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public class RenderImage : ObjectBase, RenderTarget
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Create the render image with the given dimensions
|
||||
/// </summary>
|
||||
/// <param name="width">Width of the render image</param>
|
||||
/// <param name="height">Height of the render image</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public RenderImage(uint width, uint height) :
|
||||
this(width, height, false)
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Create the render image with the given dimensions and
|
||||
/// an optional depth-buffer attached
|
||||
/// </summary>
|
||||
/// <param name="width">Width of the render image</param>
|
||||
/// <param name="height">Height of the render image</param>
|
||||
/// <param name="depthBuffer">Do you want a depth-buffer attached?</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public RenderImage(uint width, uint height, bool depthBuffer) :
|
||||
base(sfRenderImage_Create(width, height, depthBuffer))
|
||||
{
|
||||
myDefaultView = new View(sfRenderImage_GetDefaultView(This));
|
||||
myImage = new Image(sfRenderImage_GetImage(This));
|
||||
GC.SuppressFinalize(myDefaultView);
|
||||
GC.SuppressFinalize(myImage);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Width of the rendering region of the image
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public uint Width
|
||||
{
|
||||
get {return sfRenderImage_GetWidth(This);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Height of the rendering region of the image
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public uint Height
|
||||
{
|
||||
get {return sfRenderImage_GetHeight(This);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Activate of deactivate the render image as the current target
|
||||
/// for rendering
|
||||
/// </summary>
|
||||
/// <param name="active">True to activate, false to deactivate (true by default)</param>
|
||||
/// <returns>True if operation was successful, false otherwise</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public bool SetActive(bool active)
|
||||
{
|
||||
return sfRenderImage_SetActive(This, active);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Default view of the render image
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public View DefaultView
|
||||
{
|
||||
get {return myDefaultView;}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Return the current active view
|
||||
/// </summary>
|
||||
/// <returns>The current view</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public View GetView()
|
||||
{
|
||||
return new View(sfRenderImage_GetView(This));
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Change the current active view
|
||||
/// </summary>
|
||||
/// <param name="view">New view</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void SetView(View view)
|
||||
{
|
||||
sfRenderImage_SetView(This, view.This);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Get the viewport of a view applied to this target
|
||||
/// </summary>
|
||||
/// <param name="view">Target view</param>
|
||||
/// <returns>Viewport rectangle, expressed in pixels in the current target</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public IntRect GetViewport(View view)
|
||||
{
|
||||
return sfRenderImage_GetViewport(This, view.This);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Convert a point in target coordinates into view coordinates
|
||||
/// This version uses the current view of the window
|
||||
/// </summary>
|
||||
/// <param name="x">X coordinate of the point to convert, relative to the target</param>
|
||||
/// <param name="y">Y coordinate of the point to convert, relative to the target</param>
|
||||
/// <returns>Converted point</returns>
|
||||
///
|
||||
////////////////////////////////////////////////////////////
|
||||
public Vector2f ConvertCoords(uint x, uint y)
|
||||
{
|
||||
return ConvertCoords(x, y, GetView());
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Convert a point in target coordinates into view coordinates
|
||||
/// This version uses the given view
|
||||
/// </summary>
|
||||
/// <param name="x">X coordinate of the point to convert, relative to the target</param>
|
||||
/// <param name="y">Y coordinate of the point to convert, relative to the target</param>
|
||||
/// <param name="view">Target view to convert the point to</param>
|
||||
/// <returns>Converted point</returns>
|
||||
///
|
||||
////////////////////////////////////////////////////////////
|
||||
public Vector2f ConvertCoords(uint x, uint y, View view)
|
||||
{
|
||||
Vector2f point;
|
||||
sfRenderImage_ConvertCoords(This, x, y, out point.X, out point.Y, view.This);
|
||||
|
||||
return point;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Clear the entire render image with black color
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void Clear()
|
||||
{
|
||||
sfRenderImage_Clear(This, Color.Black);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Clear the entire render image with a single color
|
||||
/// </summary>
|
||||
/// <param name="color">Color to use to clear the image</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void Clear(Color color)
|
||||
{
|
||||
sfRenderImage_Clear(This, color);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Draw something into the render image
|
||||
/// </summary>
|
||||
/// <param name="objectToDraw">Object to draw</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void Draw(Drawable objectToDraw)
|
||||
{
|
||||
objectToDraw.Render(this, null);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Draw something into the render image with a shader
|
||||
/// </summary>
|
||||
/// <param name="objectToDraw">Object to draw</param>
|
||||
/// <param name="shader">Shader to apply</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void Draw(Drawable objectToDraw, Shader shader)
|
||||
{
|
||||
objectToDraw.Render(this, shader);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Save the current OpenGL render states and matrices
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void SaveGLStates()
|
||||
{
|
||||
sfRenderImage_SaveGLStates(This);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Restore the previously saved OpenGL render states and matrices
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void RestoreGLStates()
|
||||
{
|
||||
sfRenderImage_RestoreGLStates(This);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Update the contents of the target image
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void Display()
|
||||
{
|
||||
sfRenderImage_Display(This);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Target image of the render image
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public Image Image
|
||||
{
|
||||
get {return myImage;}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Provide a string describing the object
|
||||
/// </summary>
|
||||
/// <returns>String description of the object</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override string ToString()
|
||||
{
|
||||
return "[RenderImage]" +
|
||||
" Width(" + Width + ")" +
|
||||
" Height(" + Height + ")" +
|
||||
" Image(" + Image + ")" +
|
||||
" DefaultView(" + DefaultView + ")" +
|
||||
" View(" + GetView() + ")";
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Handle the destruction of the object
|
||||
/// </summary>
|
||||
/// <param name="disposing">Is the GC disposing the object, or is it an explicit call ?</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
protected override void Destroy(bool disposing)
|
||||
{
|
||||
if (!disposing)
|
||||
Context.Global.SetActive(true);
|
||||
|
||||
sfRenderImage_Destroy(This);
|
||||
|
||||
if (disposing)
|
||||
{
|
||||
myDefaultView.Dispose();
|
||||
myImage.Dispose();
|
||||
}
|
||||
|
||||
if (!disposing)
|
||||
Context.Global.SetActive(false);
|
||||
}
|
||||
|
||||
private View myDefaultView = null;
|
||||
private Image myImage = null;
|
||||
|
||||
#region Imports
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern IntPtr sfRenderImage_Create(uint Width, uint Height, bool DepthBuffer);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfRenderImage_Destroy(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfRenderImage_Clear(IntPtr This, Color ClearColor);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern uint sfRenderImage_GetWidth(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern uint sfRenderImage_GetHeight(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern bool sfRenderImage_SetActive(IntPtr This, bool Active);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern bool sfRenderImage_SaveGLStates(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern bool sfRenderImage_RestoreGLStates(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern bool sfRenderImage_Display(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfRenderImage_SetView(IntPtr This, IntPtr View);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern IntPtr sfRenderImage_GetView(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern IntPtr sfRenderImage_GetDefaultView(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern IntRect sfRenderImage_GetViewport(IntPtr This, IntPtr TargetView);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfRenderImage_ConvertCoords(IntPtr This, uint WindowX, uint WindowY, out float ViewX, out float ViewY, IntPtr TargetView);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern IntPtr sfRenderImage_GetImage(IntPtr This);
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
}
|
@ -1,133 +0,0 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Security;
|
||||
using SFML.Window;
|
||||
|
||||
namespace SFML
|
||||
{
|
||||
namespace Graphics
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Abstract base class for render targets (renderwindow, renderimage)
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public interface RenderTarget
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Width of the rendering region of the window
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
uint Width {get;}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Height of the rendering region of the window
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
uint Height {get;}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Default view of the window
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
View DefaultView {get;}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Return the current active view
|
||||
/// </summary>
|
||||
/// <returns>The current view</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
View GetView();
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Change the current active view
|
||||
/// </summary>
|
||||
/// <param name="view">New view</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
void SetView(View view);
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Get the viewport of a view applied to this target
|
||||
/// </summary>
|
||||
/// <param name="view">Target view</param>
|
||||
/// <returns>Viewport rectangle, expressed in pixels in the current target</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
IntRect GetViewport(View view);
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Convert a point in target coordinates into view coordinates
|
||||
/// This version uses the current view of the window
|
||||
/// </summary>
|
||||
/// <param name="x">X coordinate of the point to convert, relative to the target</param>
|
||||
/// <param name="y">Y coordinate of the point to convert, relative to the target</param>
|
||||
/// <returns>Converted point</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
Vector2f ConvertCoords(uint x, uint y);
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Convert a point in target coordinates into view coordinates
|
||||
/// This version uses the given view
|
||||
/// </summary>
|
||||
/// <param name="x">X coordinate of the point to convert, relative to the target</param>
|
||||
/// <param name="y">Y coordinate of the point to convert, relative to the target</param>
|
||||
/// <param name="view">Target view to convert the point to</param>
|
||||
/// <returns>Converted point</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
Vector2f ConvertCoords(uint x, uint y, View view);
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Clear the entire window with black color
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
void Clear();
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Clear the entire window with a single color
|
||||
/// </summary>
|
||||
/// <param name="color">Color to use to clear the window</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
void Clear(Color color);
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Draw something into the window
|
||||
/// </summary>
|
||||
/// <param name="objectToDraw">Object to draw</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
void Draw(Drawable objectToDraw);
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Draw something into the render image with a shader
|
||||
/// </summary>
|
||||
/// <param name="objectToDraw">Object to draw</param>
|
||||
/// <param name="shader">Shader to apply</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
void Draw(Drawable objectToDraw, Shader shader);
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Save the current OpenGL render states and matrices
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
void SaveGLStates();
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Restore the previously saved OpenGL render states and matrices
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
void RestoreGLStates();
|
||||
}
|
||||
}
|
||||
}
|
@ -1,630 +0,0 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Security;
|
||||
using SFML.Window;
|
||||
|
||||
namespace SFML
|
||||
{
|
||||
namespace Graphics
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Simple wrapper for Window that allows easy
|
||||
/// 2D rendering
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public class RenderWindow : SFML.Window.Window, RenderTarget
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Create the window with default style and creation settings
|
||||
/// </summary>
|
||||
/// <param name="mode">Video mode to use</param>
|
||||
/// <param name="title">Title of the window</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public RenderWindow(VideoMode mode, string title) :
|
||||
this(mode, title, Styles.Default, new ContextSettings(0, 0))
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Create the window with default creation settings
|
||||
/// </summary>
|
||||
/// <param name="mode">Video mode to use</param>
|
||||
/// <param name="title">Title of the window</param>
|
||||
/// <param name="style">Window style (Resize | Close by default)</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public RenderWindow(VideoMode mode, string title, Styles style) :
|
||||
this(mode, title, style, new ContextSettings(0, 0))
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Create the window
|
||||
/// </summary>
|
||||
/// <param name="mode">Video mode to use</param>
|
||||
/// <param name="title">Title of the window</param>
|
||||
/// <param name="style">Window style (Resize | Close by default)</param>
|
||||
/// <param name="settings">Creation parameters</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public RenderWindow(VideoMode mode, string title, Styles style, ContextSettings settings) :
|
||||
base(sfRenderWindow_Create(mode, title, style, ref settings), 0)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Create the window from an existing control with default creation settings
|
||||
/// </summary>
|
||||
/// <param name="handle">Platform-specific handle of the control</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public RenderWindow(IntPtr handle) :
|
||||
this(handle, new ContextSettings(0, 0))
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Create the window from an existing control
|
||||
/// </summary>
|
||||
/// <param name="handle">Platform-specific handle of the control</param>
|
||||
/// <param name="settings">Creation parameters</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public RenderWindow(IntPtr handle, ContextSettings settings) :
|
||||
base(sfRenderWindow_CreateFromHandle(handle, ref settings), 0)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Tell whether or not the window is opened (ie. has been created).
|
||||
/// Note that a hidden window (Show(false))
|
||||
/// will still return true
|
||||
/// </summary>
|
||||
/// <returns>True if the window is opened</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override bool IsOpened()
|
||||
{
|
||||
return sfRenderWindow_IsOpened(This);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Close (destroy) the window.
|
||||
/// The Window instance remains valid and you can call
|
||||
/// Create to recreate the window
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override void Close()
|
||||
{
|
||||
sfRenderWindow_Close(This);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Display the window on screen
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override void Display()
|
||||
{
|
||||
sfRenderWindow_Display(This);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Width of the rendering region of the window
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override uint Width
|
||||
{
|
||||
get {return sfRenderWindow_GetWidth(This);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Height of the rendering region of the window
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override uint Height
|
||||
{
|
||||
get {return sfRenderWindow_GetHeight(This);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Creation settings of the window
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override ContextSettings Settings
|
||||
{
|
||||
get {return sfRenderWindow_GetSettings(This);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Enable / disable vertical synchronization
|
||||
/// </summary>
|
||||
/// <param name="enable">True to enable v-sync, false to deactivate</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override void EnableVerticalSync(bool enable)
|
||||
{
|
||||
sfRenderWindow_EnableVerticalSync(This, enable);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Show or hide the mouse cursor
|
||||
/// </summary>
|
||||
/// <param name="show">True to show, false to hide</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override void ShowMouseCursor(bool show)
|
||||
{
|
||||
sfRenderWindow_ShowMouseCursor(This, show);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Change the position of the mouse cursor
|
||||
/// </summary>
|
||||
/// <param name="x">Left coordinate of the cursor, relative to the window</param>
|
||||
/// <param name="y">Top coordinate of the cursor, relative to the window</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override void SetCursorPosition(uint x, uint y)
|
||||
{
|
||||
sfRenderWindow_SetCursorPosition(This, x, y);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Change the position of the window on screen.
|
||||
/// Only works for top-level windows
|
||||
/// </summary>
|
||||
/// <param name="x">Left position</param>
|
||||
/// <param name="y">Top position</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override void SetPosition(int x, int y)
|
||||
{
|
||||
sfRenderWindow_SetPosition(This, x, y);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Change the size of the rendering region of the window
|
||||
/// </summary>
|
||||
/// <param name="width">New width</param>
|
||||
/// <param name="height">New height</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override void SetSize(uint width, uint height)
|
||||
{
|
||||
sfRenderWindow_SetSize(This, width, height);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Change the title of the window
|
||||
/// </summary>
|
||||
/// <param name="title">New title</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override void SetTitle(string title)
|
||||
{
|
||||
sfRenderWindow_SetTitle(This, title);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Show or hide the window
|
||||
/// </summary>
|
||||
/// <param name="show">True to show, false to hide</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override void Show(bool show)
|
||||
{
|
||||
sfRenderWindow_Show(This, show);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Enable or disable automatic key-repeat.
|
||||
/// Automatic key-repeat is enabled by default
|
||||
/// </summary>
|
||||
/// <param name="enable">True to enable, false to disable</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override void EnableKeyRepeat(bool enable)
|
||||
{
|
||||
sfRenderWindow_EnableKeyRepeat(This, enable);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Change the window's icon
|
||||
/// </summary>
|
||||
/// <param name="width">Icon's width, in pixels</param>
|
||||
/// <param name="height">Icon's height, in pixels</param>
|
||||
/// <param name="pixels">Array of pixels, format must be RGBA 32 bits</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override void SetIcon(uint width, uint height, byte[] pixels)
|
||||
{
|
||||
unsafe
|
||||
{
|
||||
fixed (byte* PixelsPtr = pixels)
|
||||
{
|
||||
sfRenderWindow_SetIcon(This, width, height, PixelsPtr);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Activate of deactivate the window as the current target
|
||||
/// for rendering
|
||||
/// </summary>
|
||||
/// <param name="active">True to activate, false to deactivate (true by default)</param>
|
||||
/// <returns>True if operation was successful, false otherwise</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override bool SetActive(bool active)
|
||||
{
|
||||
return sfRenderWindow_SetActive(This, active);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Limit the framerate to a maximum fixed frequency
|
||||
/// </summary>
|
||||
/// <param name="limit">Framerate limit, in frames per seconds (use 0 to disable limit)</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override void SetFramerateLimit(uint limit)
|
||||
{
|
||||
sfRenderWindow_SetFramerateLimit(This, limit);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Get time elapsed since last frame
|
||||
/// </summary>
|
||||
/// <returns>Time elapsed, in seconds</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override uint GetFrameTime()
|
||||
{
|
||||
return sfRenderWindow_GetFrameTime(This);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Change the joystick threshold, ie. the value below which
|
||||
/// no move event will be generated
|
||||
/// </summary>
|
||||
/// <param name="threshold">New threshold, in range [0, 100]</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override void SetJoystickThreshold(float threshold)
|
||||
{
|
||||
sfRenderWindow_SetJoystickThreshold(This, threshold);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// OS-specific handle of the window
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override IntPtr SystemHandle
|
||||
{
|
||||
get {return sfRenderWindow_GetSystemHandle(This);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Default view of the window
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public View DefaultView
|
||||
{
|
||||
get {return myDefaultView;}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Return the current active view
|
||||
/// </summary>
|
||||
/// <returns>The current view</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public View GetView()
|
||||
{
|
||||
return new View(sfRenderWindow_GetView(This));
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Change the current active view
|
||||
/// </summary>
|
||||
/// <param name="view">New view</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void SetView(View view)
|
||||
{
|
||||
sfRenderWindow_SetView(This, view.This);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Get the viewport of a view applied to this target
|
||||
/// </summary>
|
||||
/// <param name="view">Target view</param>
|
||||
/// <returns>Viewport rectangle, expressed in pixels in the current target</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public IntRect GetViewport(View view)
|
||||
{
|
||||
return sfRenderWindow_GetViewport(This, view.This);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Convert a point in target coordinates into view coordinates
|
||||
/// This version uses the current view of the window
|
||||
/// </summary>
|
||||
/// <param name="x">X coordinate of the point to convert, relative to the target</param>
|
||||
/// <param name="y">Y coordinate of the point to convert, relative to the target</param>
|
||||
/// <returns>Converted point</returns>
|
||||
///
|
||||
////////////////////////////////////////////////////////////
|
||||
public Vector2f ConvertCoords(uint x, uint y)
|
||||
{
|
||||
return ConvertCoords(x, y, GetView());
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Convert a point in target coordinates into view coordinates
|
||||
/// This version uses the given view
|
||||
/// </summary>
|
||||
/// <param name="x">X coordinate of the point to convert, relative to the target</param>
|
||||
/// <param name="y">Y coordinate of the point to convert, relative to the target</param>
|
||||
/// <param name="view">Target view to convert the point to</param>
|
||||
/// <returns>Converted point</returns>
|
||||
///
|
||||
////////////////////////////////////////////////////////////
|
||||
public Vector2f ConvertCoords(uint x, uint y, View view)
|
||||
{
|
||||
Vector2f point;
|
||||
sfRenderWindow_ConvertCoords(This, x, y, out point.X, out point.Y, view.This);
|
||||
|
||||
return point;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Clear the entire window with black color
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void Clear()
|
||||
{
|
||||
sfRenderWindow_Clear(This, Color.Black);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Clear the entire window with a single color
|
||||
/// </summary>
|
||||
/// <param name="color">Color to use to clear the window</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void Clear(Color color)
|
||||
{
|
||||
sfRenderWindow_Clear(This, color);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Draw something into the window
|
||||
/// </summary>
|
||||
/// <param name="objectToDraw">Object to draw</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void Draw(Drawable objectToDraw)
|
||||
{
|
||||
objectToDraw.Render(this, null);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Draw something into the window with a shader
|
||||
/// </summary>
|
||||
/// <param name="objectToDraw">Object to draw</param>
|
||||
/// <param name="shader">Shader to apply</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void Draw(Drawable objectToDraw, Shader shader)
|
||||
{
|
||||
objectToDraw.Render(this, shader);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Save the current OpenGL render states and matrices
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void SaveGLStates()
|
||||
{
|
||||
sfRenderWindow_SaveGLStates(This);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Restore the previously saved OpenGL render states and matrices
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void RestoreGLStates()
|
||||
{
|
||||
sfRenderWindow_RestoreGLStates(This);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Provide a string describing the object
|
||||
/// </summary>
|
||||
/// <returns>String description of the object</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override string ToString()
|
||||
{
|
||||
return "[RenderWindow]" +
|
||||
" Width(" + Width + ")" +
|
||||
" Height(" + Height + ")" +
|
||||
" Settings(" + Settings + ")" +
|
||||
" DefaultView(" + DefaultView + ")" +
|
||||
" View(" + GetView() + ")";
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Internal function to get the next event
|
||||
/// </summary>
|
||||
/// <param name="eventToFill">Variable to fill with the raw pointer to the event structure</param>
|
||||
/// <returns>True if there was an event, false otherwise</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
protected override bool PollEvent(out Event eventToFill)
|
||||
{
|
||||
return sfRenderWindow_PollEvent(This, out eventToFill);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Internal function to get the next event (blocking)
|
||||
/// </summary>
|
||||
/// <param name="eventToFill">Variable to fill with the raw pointer to the event structure</param>
|
||||
/// <returns>False if any error occured</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
protected override bool WaitEvent(out Event eventToFill)
|
||||
{
|
||||
return sfRenderWindow_WaitEvent(This, out eventToFill);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Handle the destruction of the object
|
||||
/// </summary>
|
||||
/// <param name="disposing">Is the GC disposing the object, or is it an explicit call ?</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
protected override void Destroy(bool disposing)
|
||||
{
|
||||
sfRenderWindow_Destroy(This);
|
||||
|
||||
if (disposing)
|
||||
myDefaultView.Dispose();
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Do common initializations
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
private void Initialize()
|
||||
{
|
||||
myDefaultView = new View(sfRenderWindow_GetDefaultView(This));
|
||||
GC.SuppressFinalize(myDefaultView);
|
||||
}
|
||||
|
||||
private View myDefaultView = null;
|
||||
|
||||
#region Imports
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern IntPtr sfRenderWindow_Create(VideoMode Mode, string Title, Styles Style, ref ContextSettings Params);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern IntPtr sfRenderWindow_CreateFromHandle(IntPtr Handle, ref ContextSettings Params);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfRenderWindow_Destroy(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern bool sfRenderWindow_IsOpened(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfRenderWindow_Close(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern bool sfRenderWindow_PollEvent(IntPtr This, out Event Evt);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern bool sfRenderWindow_WaitEvent(IntPtr This, out Event Evt);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfRenderWindow_Clear(IntPtr This, Color ClearColor);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfRenderWindow_Display(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern uint sfRenderWindow_GetWidth(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern uint sfRenderWindow_GetHeight(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern ContextSettings sfRenderWindow_GetSettings(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfRenderWindow_EnableVerticalSync(IntPtr This, bool Enable);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfRenderWindow_ShowMouseCursor(IntPtr This, bool Show);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfRenderWindow_SetCursorPosition(IntPtr This, uint X, uint Y);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfRenderWindow_SetPosition(IntPtr This, int X, int Y);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfRenderWindow_SetSize(IntPtr This, uint Width, uint Height);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfRenderWindow_SetTitle(IntPtr This, string title);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfRenderWindow_Show(IntPtr This, bool Show);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfRenderWindow_EnableKeyRepeat(IntPtr This, bool Enable);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
unsafe static extern void sfRenderWindow_SetIcon(IntPtr This, uint Width, uint Height, byte* Pixels);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern bool sfRenderWindow_SetActive(IntPtr This, bool Active);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern bool sfRenderWindow_SaveGLStates(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern bool sfRenderWindow_RestoreGLStates(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfRenderWindow_SetFramerateLimit(IntPtr This, uint Limit);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern uint sfRenderWindow_GetFrameTime(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfRenderWindow_SetJoystickThreshold(IntPtr This, float Threshold);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfRenderWindow_SetView(IntPtr This, IntPtr View);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern IntPtr sfRenderWindow_GetView(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern IntPtr sfRenderWindow_GetDefaultView(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern IntRect sfRenderWindow_GetViewport(IntPtr This, IntPtr TargetView);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfRenderWindow_ConvertCoords(IntPtr This, uint WindowX, uint WindowY, out float ViewX, out float ViewY, IntPtr TargetView);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern IntPtr sfRenderWindow_GetSystemHandle(IntPtr This);
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
}
|
@ -1,267 +0,0 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Security;
|
||||
using System.Collections.Generic;
|
||||
using SFML.Window;
|
||||
|
||||
namespace SFML
|
||||
{
|
||||
namespace Graphics
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Wrapper for pixel shaders
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public class Shader : ObjectBase
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Load the shader from a file
|
||||
/// </summary>
|
||||
/// <param name="filename">Path of the shader file to load</param>
|
||||
/// <exception cref="LoadingFailedException" />
|
||||
////////////////////////////////////////////////////////////
|
||||
public Shader(string filename) :
|
||||
base(sfShader_CreateFromFile(filename))
|
||||
{
|
||||
if (This == IntPtr.Zero)
|
||||
throw new LoadingFailedException("shader", filename);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the shader from another shader
|
||||
/// </summary>
|
||||
/// <param name="copy">Shader to copy</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public Shader(Shader copy) :
|
||||
base(sfShader_Copy(copy.This))
|
||||
{
|
||||
foreach (KeyValuePair<string, Image> pair in copy.myTextures)
|
||||
myTextures[pair.Key] = copy.myTextures[pair.Key];
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Create a new shader from a text in memory
|
||||
/// </summary>
|
||||
/// <param name="shader">String containing the shader code</param>
|
||||
/// <exception cref="LoadingFailedException" />
|
||||
////////////////////////////////////////////////////////////
|
||||
public static Shader FromString(string shader)
|
||||
{
|
||||
IntPtr ptr = sfShader_CreateFromMemory(shader);
|
||||
if (ptr == IntPtr.Zero)
|
||||
throw new LoadingFailedException("shader");
|
||||
|
||||
return new Shader(ptr);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Change a vector2 parameter of the shader
|
||||
/// </summary>
|
||||
/// <param name="name">Name of the parameter in the shader</param>
|
||||
/// <param name="v">Value of the parameter</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void SetParameter(string name, Vector2f v)
|
||||
{
|
||||
SetParameter(name, v.X, v.Y);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Change a 1-component parameter of the shader
|
||||
/// </summary>
|
||||
/// <param name="name">Name of the parameter in the shader</param>
|
||||
/// <param name="x">Value of the parameter</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void SetParameter(string name, float x)
|
||||
{
|
||||
sfShader_SetParameter1(This, name, x);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Change a 2-component parameter of the shader
|
||||
/// </summary>
|
||||
/// <param name="name">Name of the parameter in the shader</param>
|
||||
/// <param name="x">X component of the value</param>
|
||||
/// <param name="y">Y component of the value</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void SetParameter(string name, float x, float y)
|
||||
{
|
||||
sfShader_SetParameter2(This, name, x, y);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Change a 3-component parameter of the shader
|
||||
/// </summary>
|
||||
/// <param name="name">Name of the parameter in the shader</param>
|
||||
/// <param name="x">X component of the value</param>
|
||||
/// <param name="y">Y component of the value</param>
|
||||
/// <param name="z">Z component of the value</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void SetParameter(string name, float x, float y, float z)
|
||||
{
|
||||
sfShader_SetParameter3(This, name, x, y, z);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Change a 4-component parameter of the shader
|
||||
/// </summary>
|
||||
/// <param name="name">Name of the parameter in the shader</param>
|
||||
/// <param name="x">X component of the value</param>
|
||||
/// <param name="y">Y component of the value</param>
|
||||
/// <param name="z">Z component of the value</param>
|
||||
/// <param name="w">W component of the value</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void SetParameter(string name, float x, float y, float z, float w)
|
||||
{
|
||||
sfShader_SetParameter4(This, name, x, y, z, w);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Set a texture parameter
|
||||
/// </summary>
|
||||
/// <param name="name">Name of the texture in the shader</param>
|
||||
/// <param name="texture">Image to set</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void SetTexture(string name, Image texture)
|
||||
{
|
||||
myTextures[name] = texture;
|
||||
sfShader_SetTexture(This, name, texture.This);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Set the current texture parameter
|
||||
/// </summary>
|
||||
/// <param name="name">Name of the texture in the shader</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void SetCurrentTexture(string name)
|
||||
{
|
||||
sfShader_SetCurrentTexture(This, name);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Bind the shader for rendering
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void Bind()
|
||||
{
|
||||
sfShader_Bind(This);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Unbind the shader
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void Unbind()
|
||||
{
|
||||
sfShader_Unbind(This);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Tell whether or not the system supports shaders
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public static bool IsAvailable
|
||||
{
|
||||
get {return sfShader_IsAvailable();}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Provide a string describing the object
|
||||
/// </summary>
|
||||
/// <returns>String description of the object</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override string ToString()
|
||||
{
|
||||
return "[Shader]";
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Handle the destruction of the object
|
||||
/// </summary>
|
||||
/// <param name="disposing">Is the GC disposing the object, or is it an explicit call ?</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
protected override void Destroy(bool disposing)
|
||||
{
|
||||
if (!disposing)
|
||||
Context.Global.SetActive(true);
|
||||
|
||||
myTextures.Clear();
|
||||
sfShader_Destroy(This);
|
||||
|
||||
if (!disposing)
|
||||
Context.Global.SetActive(false);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the shader from a pointer
|
||||
/// </summary>
|
||||
/// <param name="ptr">Pointer to the shader instance</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public Shader(IntPtr ptr) :
|
||||
base(ptr)
|
||||
{
|
||||
}
|
||||
|
||||
Dictionary<string, Image> myTextures = new Dictionary<string, Image>();
|
||||
|
||||
#region Imports
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern IntPtr sfShader_CreateFromFile(string Filename);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern IntPtr sfShader_CreateFromMemory(string Shader);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern IntPtr sfShader_Copy(IntPtr Shader);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfShader_Destroy(IntPtr Shader);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfShader_SetParameter1(IntPtr Shader, string Name, float X);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfShader_SetParameter2(IntPtr Shader, string Name, float X, float Y);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfShader_SetParameter3(IntPtr Shader, string Name, float X, float Y, float Z);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfShader_SetParameter4(IntPtr Shader, string Name, float X, float Y, float Z, float W);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfShader_SetTexture(IntPtr Shader, string Name, IntPtr Texture);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfShader_SetCurrentTexture(IntPtr Shader, string Name);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfShader_Bind(IntPtr Shader);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfShader_Unbind(IntPtr Shader);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern bool sfShader_IsAvailable();
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
}
|
@ -1,565 +0,0 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Security;
|
||||
using SFML.Window;
|
||||
|
||||
namespace SFML
|
||||
{
|
||||
namespace Graphics
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Shape defines a drawable convex shape ; it also defines
|
||||
/// helper functions to draw simple shapes like
|
||||
/// lines, rectangles, circles, etc.
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public class Shape : Drawable
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Default constructor
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public Shape() :
|
||||
base(sfShape_Create())
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the shape from another shape
|
||||
/// </summary>
|
||||
/// <param name="copy">Shape to copy</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public Shape(Shape copy) :
|
||||
base(sfShape_Copy(copy.This))
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Position of the object on screen
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override Vector2f Position
|
||||
{
|
||||
get { return new Vector2f(sfShape_GetX(This), sfShape_GetY(This)); }
|
||||
set { sfShape_SetPosition(This, value.X, value.Y); }
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Rotation of the object, defined in degrees
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override float Rotation
|
||||
{
|
||||
get { return sfShape_GetRotation(This); }
|
||||
set { sfShape_SetRotation(This, value); }
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Vertical and horizontal scale of the object
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override Vector2f Scale
|
||||
{
|
||||
get { return new Vector2f(sfShape_GetScaleX(This), sfShape_GetScaleY(This)); }
|
||||
set { sfShape_SetScale(This, value.X, value.Y); }
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Origin of the transformation of the object
|
||||
/// (center of translation, rotation and scale)
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override Vector2f Origin
|
||||
{
|
||||
get { return new Vector2f(sfShape_GetOriginX(This), sfShape_GetOriginY(This)); }
|
||||
set { sfShape_SetOrigin(This, value.X, value.Y); }
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Global color of the object
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override Color Color
|
||||
{
|
||||
get { return sfShape_GetColor(This); }
|
||||
set { sfShape_SetColor(This, value); }
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Blending mode of the object
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override BlendMode BlendMode
|
||||
{
|
||||
get { return sfShape_GetBlendMode(This); }
|
||||
set { sfShape_SetBlendMode(This, value); }
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Transform a point from global coordinates into local coordinates
|
||||
/// (ie it applies the inverse of object's origin, translation, rotation and scale to the point)
|
||||
/// </summary>
|
||||
/// <param name="point">Point to transform</param>
|
||||
/// <returns>Transformed point</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override Vector2f TransformToLocal(Vector2f point)
|
||||
{
|
||||
Vector2f Transformed;
|
||||
sfShape_TransformToLocal(This, point.X, point.Y, out Transformed.X, out Transformed.Y);
|
||||
|
||||
return Transformed;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Transform a point from local coordinates into global coordinates
|
||||
/// (ie it applies the object's origin, translation, rotation and scale to the point)
|
||||
/// </summary>
|
||||
/// <param name="point">Point to transform</param>
|
||||
/// <returns>Transformed point</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override Vector2f TransformToGlobal(Vector2f point)
|
||||
{
|
||||
Vector2f Transformed;
|
||||
sfShape_TransformToGlobal(This, point.X, point.Y, out Transformed.X, out Transformed.Y);
|
||||
|
||||
return Transformed;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Add a point to the shape
|
||||
/// </summary>
|
||||
/// <param name="position">Position of the point</param>
|
||||
/// <param name="color">Color of the point</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void AddPoint(Vector2f position, Color color)
|
||||
{
|
||||
AddPoint(position, color, Color.Black);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Add a point to the shape
|
||||
/// </summary>
|
||||
/// <param name="position">Position of the point</param>
|
||||
/// <param name="color">Color of the point</param>
|
||||
/// <param name="outlineColor">Outline color of the point</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void AddPoint(Vector2f position, Color color, Color outlineColor)
|
||||
{
|
||||
sfShape_AddPoint(This, position.X, position.Y, color, outlineColor);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Enable or disable filling the shape.
|
||||
/// Fill is enabled by default
|
||||
/// </summary>
|
||||
/// <param name="enable">True to enable, false to disable</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void EnableFill(bool enable)
|
||||
{
|
||||
sfShape_EnableFill(This, enable);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Enable or disable drawing the shape outline.
|
||||
/// Outline is enabled by default
|
||||
/// </summary>
|
||||
/// <param name="enable">True to enable, false to disable</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void EnableOutline(bool enable)
|
||||
{
|
||||
sfShape_EnableOutline(This, enable);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Thickness of the shape outline
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public float OutlineThickness
|
||||
{
|
||||
get {return sfShape_GetOutlineThickness(This);}
|
||||
set {sfShape_SetOutlineThickness(This, value);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Total number of points of the shape
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public uint PointsCount
|
||||
{
|
||||
get {return sfShape_GetPointsCount(This);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Set the position of a point
|
||||
/// </summary>
|
||||
/// <param name="index">Index of the point, in range [0, NbPoints - 1]</param>
|
||||
/// <param name="position">New position of the index-th point</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void SetPointPosition(uint index, Vector2f position)
|
||||
{
|
||||
sfShape_SetPointPosition(This, index, position.X, position.Y);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Get the position of a point
|
||||
/// </summary>
|
||||
/// <param name="index">Index of the point, in range [0, NbPoints - 1]</param>
|
||||
/// <returns>Position of the index-th point</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public Vector2f GetPointPosition(uint index)
|
||||
{
|
||||
Vector2f Pos;
|
||||
sfShape_GetPointPosition(This, index, out Pos.X, out Pos.Y);
|
||||
|
||||
return Pos;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Set the color of a point
|
||||
/// </summary>
|
||||
/// <param name="index">Index of the point, in range [0, NbPoints - 1]</param>
|
||||
/// <param name="color">New color of the index-th point</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void SetPointColor(uint index, Color color)
|
||||
{
|
||||
sfShape_SetPointColor(This, index, color);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Get the color of a point
|
||||
/// </summary>
|
||||
/// <param name="index">Index of the point, in range [0, NbPoints - 1]</param>
|
||||
/// <returns>Color of the index-th point</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public Color GetPointColor(uint index)
|
||||
{
|
||||
return sfShape_GetPointColor(This, index);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Set the outline color of a point
|
||||
/// </summary>
|
||||
/// <param name="index">Index of the point, in range [0, NbPoints - 1]</param>
|
||||
/// <param name="color">New outline color of the index-th point</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void SetPointOutlineColor(uint index, Color color)
|
||||
{
|
||||
sfShape_SetPointOutlineColor(This, index, color);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Get the outline color of a point
|
||||
/// </summary>
|
||||
/// <param name="index">Index of the point, in range [0, NbPoints - 1]</param>
|
||||
/// <returns>Outline color of the index-th point</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public Color GetPointOutlineColor(uint index)
|
||||
{
|
||||
return sfShape_GetPointOutlineColor(This, index);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Create a shape made of a single line
|
||||
/// </summary>
|
||||
/// <param name="p1">Position of the first point</param>
|
||||
/// <param name="p2">Position of the second point</param>
|
||||
/// <param name="thickness">Line thickness</param>
|
||||
/// <param name="color">Color used to draw the line</param>
|
||||
/// <returns>New line shape built with the given parameters</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public static Shape Line(Vector2f p1, Vector2f p2, float thickness, Color color)
|
||||
{
|
||||
return Line(p1, p2, thickness, color, 0, Color.White);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Create a shape made of a single line
|
||||
/// </summary>
|
||||
/// <param name="p1">Position of the first point</param>
|
||||
/// <param name="p2">Position of the second point</param>
|
||||
/// <param name="thickness">Line thickness</param>
|
||||
/// <param name="color">Color used to draw the line</param>
|
||||
/// <param name="outline">Outline width</param>
|
||||
/// <param name="outlineColor">Color used to draw the outline</param>
|
||||
/// <returns>New line shape built with the given parameters</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public static Shape Line(Vector2f p1, Vector2f p2, float thickness, Color color, float outline, Color outlineColor)
|
||||
{
|
||||
return new Shape(sfShape_CreateLine(p1.X, p1.Y, p2.X, p2.Y, thickness, color, outline, outlineColor));
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Create a shape made of a single rectangle
|
||||
/// </summary>
|
||||
/// <param name="rectangle">Rectangle to create</param>
|
||||
/// <param name="color">Color used to fill the rectangle</param>
|
||||
/// <returns>New rectangle shape built with the given parameters</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public static Shape Rectangle(FloatRect rectangle, Color color)
|
||||
{
|
||||
return Rectangle(rectangle, color, 0, Color.White);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Create a shape made of a single rectangle
|
||||
/// </summary>
|
||||
/// <param name="rectangle">Rectangle to create</param>
|
||||
/// <param name="color">Color used to fill the rectangle</param>
|
||||
/// <param name="outline">Outline width</param>
|
||||
/// <param name="outlineColor">Color used to draw the outline</param>
|
||||
/// <returns>New rectangle shape built with the given parameters</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public static Shape Rectangle(FloatRect rectangle, Color color, float outline, Color outlineColor)
|
||||
{
|
||||
return new Shape(sfShape_CreateRectangle(rectangle.Left, rectangle.Top, rectangle.Width, rectangle.Height, color, outline, outlineColor));
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Create a shape made of a single circle
|
||||
/// </summary>
|
||||
/// <param name="center">Position of the center</param>
|
||||
/// <param name="radius">Radius of the circle</param>
|
||||
/// <param name="color">Color used to fill the circle</param>
|
||||
/// <returns>New circle shape built with the given parameters</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public static Shape Circle(Vector2f center, float radius, Color color)
|
||||
{
|
||||
return Circle(center, radius, color, 0, Color.White);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Create a shape made of a single circle
|
||||
/// </summary>
|
||||
/// <param name="center">Position of the center</param>
|
||||
/// <param name="radius">Radius of the circle</param>
|
||||
/// <param name="color">Color used to fill the circle</param>
|
||||
/// <param name="outline">Outline width</param>
|
||||
/// <param name="outlineColor">Color used to draw the outline</param>
|
||||
/// <returns>New circle shape built with the given parameters</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public static Shape Circle(Vector2f center, float radius, Color color, float outline, Color outlineColor)
|
||||
{
|
||||
return new Shape(sfShape_CreateCircle(center.X, center.Y, radius, color, outline, outlineColor));
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Provide a string describing the object
|
||||
/// </summary>
|
||||
/// <returns>String description of the object</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override string ToString()
|
||||
{
|
||||
return "[Shape]" +
|
||||
" Position(" + Position + ")" +
|
||||
" Rotation(" + Rotation + ")" +
|
||||
" Scale(" + Scale + ")" +
|
||||
" Origin(" + Origin + ")" +
|
||||
" Color(" + Color + ")" +
|
||||
" BlendMode(" + BlendMode + ")" +
|
||||
" OutlineThickness(" + OutlineThickness + ")" +
|
||||
" PointsCount(" + PointsCount + ")";
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Render the object into the given render window
|
||||
/// </summary>
|
||||
/// <param name="target">Target render window</param>
|
||||
/// <param name="shader">Shader to apply</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
internal override void Render(RenderWindow target, Shader shader)
|
||||
{
|
||||
if (shader == null)
|
||||
sfRenderWindow_DrawShape(target.This, This);
|
||||
else
|
||||
sfRenderWindow_DrawShapeWithShader(target.This, This, shader.This);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Render the object into the given render image
|
||||
/// </summary>
|
||||
/// <param name="target">Target render image</param>
|
||||
/// <param name="shader">Shader to apply</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
internal override void Render(RenderImage target, Shader shader)
|
||||
{
|
||||
if (shader == null)
|
||||
sfRenderImage_DrawShape(target.This, This);
|
||||
else
|
||||
sfRenderImage_DrawShapeWithShader(target.This, This, shader.This);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Handle the destruction of the object
|
||||
/// </summary>
|
||||
/// <param name="disposing">Is the GC disposing the object, or is it an explicit call ?</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
protected override void Destroy(bool disposing)
|
||||
{
|
||||
sfShape_Destroy(This);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Internal constructor
|
||||
/// </summary>
|
||||
/// <param name="thisPtr">Pointer to the internal object in C library</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
private Shape(IntPtr thisPtr) :
|
||||
base(thisPtr)
|
||||
{
|
||||
}
|
||||
|
||||
#region Imports
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern IntPtr sfShape_Create();
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern IntPtr sfShape_Copy(IntPtr Shape);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfShape_Destroy(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfShape_SetPosition(IntPtr This, float X, float Y);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern float sfShape_GetX(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern float sfShape_GetY(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfShape_SetRotation(IntPtr This, float Rotation);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern float sfShape_GetRotation(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfShape_SetScale(IntPtr This, float X, float Y);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern float sfShape_GetScaleX(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern float sfShape_GetScaleY(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfShape_SetOrigin(IntPtr This, float X, float Y);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern float sfShape_GetOriginX(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern float sfShape_GetOriginY(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfShape_SetColor(IntPtr This, Color Color);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern Color sfShape_GetColor(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfShape_SetBlendMode(IntPtr This, BlendMode Mode);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern BlendMode sfShape_GetBlendMode(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfShape_TransformToLocal(IntPtr This, float PointX, float PointY, out float X, out float Y);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfShape_TransformToGlobal(IntPtr This, float PointX, float PointY, out float X, out float Y);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfRenderWindow_DrawShape(IntPtr This, IntPtr Shape);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfRenderWindow_DrawShapeWithShader(IntPtr This, IntPtr Shape, IntPtr Shader);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfRenderImage_DrawShape(IntPtr This, IntPtr Shape);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfRenderImage_DrawShapeWithShader(IntPtr This, IntPtr Shape, IntPtr Shader);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern IntPtr sfShape_CreateLine(float P1X, float P1Y, float P2X, float P2Y, float Thickness, Color Col, float Outline, Color OutlineCol);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern IntPtr sfShape_CreateRectangle(float P1X, float P1Y, float P2X, float P2Y, Color Col, float Outline, Color OutlineCol);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern IntPtr sfShape_CreateCircle(float X, float Y, float Radius, Color Col, float Outline, Color OutlineCol);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfShape_AddPoint(IntPtr This, float X, float Y, Color Col, Color OutlineCol);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfShape_EnableFill(IntPtr This, bool Enable);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfShape_EnableOutline(IntPtr This, bool Enable);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfShape_SetOutlineThickness(IntPtr This, float Thickness);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern float sfShape_GetOutlineThickness(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern uint sfShape_GetPointsCount(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfShape_SetPointPosition(IntPtr This, uint Index, float X, float Y);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfShape_GetPointPosition(IntPtr This, uint Index, out float X, out float Y);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfShape_SetPointColor(IntPtr This, uint Index, Color Col);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern Color sfShape_GetPointColor(IntPtr This, uint Index);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfShape_SetPointOutlineColor(IntPtr This, uint Index, Color Col);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern Color sfShape_GetPointOutlineColor(IntPtr This, uint Index);
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
}
|
@ -1,397 +0,0 @@
|
||||
using System;
|
||||
using System.Security;
|
||||
using System.Runtime.InteropServices;
|
||||
using SFML.Window;
|
||||
|
||||
namespace SFML
|
||||
{
|
||||
namespace Graphics
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// This class defines a sprite : texture, transformations,
|
||||
/// color, and draw on screen
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public class Sprite : Drawable
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Default constructor
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public Sprite() :
|
||||
base(sfSprite_Create())
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the sprite from a source image
|
||||
/// </summary>
|
||||
/// <param name="image">Source image to assign to the sprite</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public Sprite(Image image) :
|
||||
base(sfSprite_Create())
|
||||
{
|
||||
Image = image;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the sprite from another sprite
|
||||
/// </summary>
|
||||
/// <param name="copy">Sprite to copy</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public Sprite(Sprite copy) :
|
||||
base(sfSprite_Copy(copy.This))
|
||||
{
|
||||
Image = copy.Image;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Position of the object on screen
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override Vector2f Position
|
||||
{
|
||||
get { return new Vector2f(sfSprite_GetX(This), sfSprite_GetY(This)); }
|
||||
set { sfSprite_SetPosition(This, value.X, value.Y); }
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Rotation of the object, defined in degrees
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override float Rotation
|
||||
{
|
||||
get { return sfSprite_GetRotation(This); }
|
||||
set { sfSprite_SetRotation(This, value); }
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Vertical and horizontal scale of the object
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override Vector2f Scale
|
||||
{
|
||||
get { return new Vector2f(sfSprite_GetScaleX(This), sfSprite_GetScaleY(This)); }
|
||||
set { sfSprite_SetScale(This, value.X, value.Y); }
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Origin of the transformation of the object
|
||||
/// (center of translation, rotation and scale)
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override Vector2f Origin
|
||||
{
|
||||
get { return new Vector2f(sfSprite_GetOriginX(This), sfSprite_GetOriginY(This)); }
|
||||
set { sfSprite_SetOrigin(This, value.X, value.Y); }
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Global color of the object
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override Color Color
|
||||
{
|
||||
get { return sfSprite_GetColor(This); }
|
||||
set { sfSprite_SetColor(This, value); }
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Blending mode of the object
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override BlendMode BlendMode
|
||||
{
|
||||
get { return sfSprite_GetBlendMode(This); }
|
||||
set { sfSprite_SetBlendMode(This, value); }
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Transform a point from global coordinates into local coordinates
|
||||
/// (ie it applies the inverse of object's origin, translation, rotation and scale to the point)
|
||||
/// </summary>
|
||||
/// <param name="point">Point to transform</param>
|
||||
/// <returns>Transformed point</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override Vector2f TransformToLocal(Vector2f point)
|
||||
{
|
||||
Vector2f Transformed;
|
||||
sfSprite_TransformToLocal(This, point.X, point.Y, out Transformed.X, out Transformed.Y);
|
||||
|
||||
return Transformed;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Transform a point from local coordinates into global coordinates
|
||||
/// (ie it applies the object's origin, translation, rotation and scale to the point)
|
||||
/// </summary>
|
||||
/// <param name="point">Point to transform</param>
|
||||
/// <returns>Transformed point</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override Vector2f TransformToGlobal(Vector2f point)
|
||||
{
|
||||
Vector2f Transformed;
|
||||
sfSprite_TransformToGlobal(This, point.X, point.Y, out Transformed.X, out Transformed.Y);
|
||||
|
||||
return Transformed;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Width of the sprite
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public float Width
|
||||
{
|
||||
get { return sfSprite_GetWidth(This); }
|
||||
set { sfSprite_Resize(This, value, this.Height); }
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Height of the sprite
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public float Height
|
||||
{
|
||||
get { return sfSprite_GetHeight(This); }
|
||||
set { sfSprite_Resize(This, this.Width, value); }
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Source images displayed by the sprite
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public Image Image
|
||||
{
|
||||
get { return myImage; }
|
||||
set { myImage = value; sfSprite_SetImage(This, value != null ? value.This : IntPtr.Zero, false); }
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Sub-rectangle of the source image displayed by the sprite
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public IntRect SubRect
|
||||
{
|
||||
get { return sfSprite_GetSubRect(This); }
|
||||
set { sfSprite_SetSubRect(This, value); }
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Flip the sprite horizontically
|
||||
/// </summary>
|
||||
/// <param name="flipped">True to flip, false to canel flip</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void FlipX(bool flipped)
|
||||
{
|
||||
sfSprite_FlipX(This, flipped);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Flip the sprite vertically
|
||||
/// </summary>
|
||||
/// <param name="flipped">True to flip, false to canel flip</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void FlipY(bool flipped)
|
||||
{
|
||||
sfSprite_FlipY(This, flipped);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Get the color of a given pixel in the sprite
|
||||
/// (point is in local coordinates)
|
||||
/// </summary>
|
||||
/// <param name="x">X coordinate of the pixel to get</param>
|
||||
/// <param name="y">Y coordinate of the pixel to get</param>
|
||||
/// <returns>Color of pixel (x, y)</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public Color GetPixel(uint x, uint y)
|
||||
{
|
||||
return sfSprite_GetPixel(This, x, y);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Provide a string describing the object
|
||||
/// </summary>
|
||||
/// <returns>String description of the object</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override string ToString()
|
||||
{
|
||||
return "[Sprite]" +
|
||||
" Position(" + Position + ")" +
|
||||
" Rotation(" + Rotation + ")" +
|
||||
" Scale(" + Scale + ")" +
|
||||
" Origin(" + Origin + ")" +
|
||||
" Color(" + Color + ")" +
|
||||
" BlendMode(" + BlendMode + ")" +
|
||||
" Width(" + Width + ")" +
|
||||
" Height(" + Height + ")" +
|
||||
" SubRect(" + SubRect + ")" +
|
||||
" Image(" + Image + ")";
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Render the object into the given render window
|
||||
/// </summary>
|
||||
/// <param name="target">Target render window</param>
|
||||
/// <param name="shader">Shader to apply</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
internal override void Render(RenderWindow target, Shader shader)
|
||||
{
|
||||
if (shader == null)
|
||||
sfRenderWindow_DrawSprite(target.This, This);
|
||||
else
|
||||
sfRenderWindow_DrawSpriteWithShader(target.This, This, shader.This);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Render the object into the given render image
|
||||
/// </summary>
|
||||
/// <param name="target">Target render image</param>
|
||||
/// <param name="shader">Shader to apply</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
internal override void Render(RenderImage target, Shader shader)
|
||||
{
|
||||
if (shader == null)
|
||||
sfRenderImage_DrawSprite(target.This, This);
|
||||
else
|
||||
sfRenderImage_DrawSpriteWithShader(target.This, This, shader.This);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Handle the destruction of the object
|
||||
/// </summary>
|
||||
/// <param name="disposing">Is the GC disposing the object, or is it an explicit call ?</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
protected override void Destroy(bool disposing)
|
||||
{
|
||||
sfSprite_Destroy(This);
|
||||
}
|
||||
|
||||
private Image myImage = null;
|
||||
|
||||
#region Imports
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern IntPtr sfSprite_Create();
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern IntPtr sfSprite_Copy(IntPtr Sprite);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfSprite_Destroy(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfSprite_SetPosition(IntPtr This, float X, float Y);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern float sfSprite_GetX(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern float sfSprite_GetY(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfSprite_SetRotation(IntPtr This, float Rotation);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern float sfSprite_GetRotation(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfSprite_SetScale(IntPtr This, float X, float Y);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern float sfSprite_GetScaleX(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern float sfSprite_GetScaleY(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfSprite_SetOrigin(IntPtr This, float X, float Y);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern float sfSprite_GetOriginX(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern float sfSprite_GetOriginY(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfSprite_SetColor(IntPtr This, Color Color);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern Color sfSprite_GetColor(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfSprite_SetBlendMode(IntPtr This, BlendMode Mode);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern BlendMode sfSprite_GetBlendMode(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern Vector2f sfSprite_TransformToLocal(IntPtr This, float PointX, float PointY, out float X, out float Y);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern Vector2f sfSprite_TransformToGlobal(IntPtr This, float PointX, float PointY, out float X, out float Y);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfRenderWindow_DrawSprite(IntPtr This, IntPtr Sprite);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfRenderWindow_DrawSpriteWithShader(IntPtr This, IntPtr Sprite, IntPtr Shader);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfRenderImage_DrawSprite(IntPtr This, IntPtr Sprite);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfRenderImage_DrawSpriteWithShader(IntPtr This, IntPtr Sprite, IntPtr Shader);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfSprite_Resize(IntPtr This, float Width, float Height);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern float sfSprite_GetWidth(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern float sfSprite_GetHeight(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfSprite_SetImage(IntPtr This, IntPtr Image, bool AdjustToNewSize);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfSprite_SetSubRect(IntPtr This, IntRect Rect);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern IntRect sfSprite_GetSubRect(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfSprite_FlipX(IntPtr This, bool Flipped);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfSprite_FlipY(IntPtr This, bool Flipped);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern Color sfSprite_GetPixel(IntPtr This, uint X, uint Y);
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
}
|
@ -1,465 +0,0 @@
|
||||
using System;
|
||||
using System.Security;
|
||||
using System.Runtime.InteropServices;
|
||||
using SFML.Window;
|
||||
|
||||
namespace SFML
|
||||
{
|
||||
namespace Graphics
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// This class defines a graphical 2D text, that can be drawn on screen
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public class Text : Drawable
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Enumerate the string drawing styles
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
[Flags]
|
||||
public enum Styles
|
||||
{
|
||||
/// <summary>Regular characters, no style</summary>
|
||||
Regular = 0,
|
||||
|
||||
/// <summary> Characters are bold</summary>
|
||||
Bold = 1 << 0,
|
||||
|
||||
/// <summary>Characters are in italic</summary>
|
||||
Italic = 1 << 1,
|
||||
|
||||
/// <summary>Characters are underlined</summary>
|
||||
Underlined = 1 << 2
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Default constructor
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public Text() :
|
||||
this("")
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the text from a string
|
||||
/// </summary>
|
||||
/// <param name="str">String to display</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public Text(string str) :
|
||||
this(str, Font.DefaultFont)
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the text from a string and a font
|
||||
/// </summary>
|
||||
/// <param name="str">String to display</param>
|
||||
/// <param name="font">Font to use</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public Text(string str, Font font) :
|
||||
this(str, font, 30)
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the text from a string, font and size
|
||||
/// </summary>
|
||||
/// <param name="str">String to display</param>
|
||||
/// <param name="font">Font to use</param>
|
||||
/// <param name="characterSize">Base characters size</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public Text(string str, Font font, uint characterSize) :
|
||||
base(sfText_Create())
|
||||
{
|
||||
DisplayedString = str;
|
||||
Font = font;
|
||||
CharacterSize = characterSize;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the text from another text
|
||||
/// </summary>
|
||||
/// <param name="copy">Text to copy</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public Text(Text copy) :
|
||||
base(sfText_Copy(copy.This))
|
||||
{
|
||||
Font = copy.Font;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Position of the object on screen
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override Vector2f Position
|
||||
{
|
||||
get { return new Vector2f(sfText_GetX(This), sfText_GetY(This)); }
|
||||
set { sfText_SetPosition(This, value.X, value.Y); }
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Rotation of the object, defined in degrees
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override float Rotation
|
||||
{
|
||||
get { return sfText_GetRotation(This); }
|
||||
set { sfText_SetRotation(This, value); }
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Vertical and horizontal scale of the object
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override Vector2f Scale
|
||||
{
|
||||
get { return new Vector2f(sfText_GetScaleX(This), sfText_GetScaleY(This)); }
|
||||
set { sfText_SetScale(This, value.X, value.Y); }
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Origin of the transformation of the object
|
||||
/// (center of translation, rotation and scale)
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override Vector2f Origin
|
||||
{
|
||||
get { return new Vector2f(sfText_GetOriginX(This), sfText_GetOriginY(This)); }
|
||||
set { sfText_SetOrigin(This, value.X, value.Y); }
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Global color of the object
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override Color Color
|
||||
{
|
||||
get { return sfText_GetColor(This); }
|
||||
set { sfText_SetColor(This, value); }
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Blending mode of the object
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override BlendMode BlendMode
|
||||
{
|
||||
get { return sfText_GetBlendMode(This); }
|
||||
set { sfText_SetBlendMode(This, value); }
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Transform a point from global coordinates into local coordinates
|
||||
/// (ie it applies the inverse of object's origin, translation, rotation and scale to the point)
|
||||
/// </summary>
|
||||
/// <param name="point">Point to transform</param>
|
||||
/// <returns>Transformed point</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override Vector2f TransformToLocal(Vector2f point)
|
||||
{
|
||||
Vector2f Transformed;
|
||||
sfText_TransformToLocal(This, point.X, point.Y, out Transformed.X, out Transformed.Y);
|
||||
|
||||
return Transformed;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Transform a point from local coordinates into global coordinates
|
||||
/// (ie it applies the object's origin, translation, rotation and scale to the point)
|
||||
/// </summary>
|
||||
/// <param name="point">Point to transform</param>
|
||||
/// <returns>Transformed point</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override Vector2f TransformToGlobal(Vector2f point)
|
||||
{
|
||||
Vector2f Transformed;
|
||||
sfText_TransformToGlobal(This, point.X, point.Y, out Transformed.X, out Transformed.Y);
|
||||
|
||||
return Transformed;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// String which is displayed
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public string DisplayedString
|
||||
{
|
||||
get
|
||||
{
|
||||
// Get the number of characters
|
||||
// This is probably not the most optimized way; if anyone has a better solution...
|
||||
int length = Marshal.PtrToStringAnsi(sfText_GetString(This)).Length;
|
||||
|
||||
// Copy the characters
|
||||
byte[] characters = new byte[length * 4];
|
||||
Marshal.Copy(sfText_GetUnicodeString(This), characters, 0, characters.Length);
|
||||
|
||||
// Convert from UTF-32 to String (UTF-16)
|
||||
return System.Text.Encoding.UTF32.GetString(characters);
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
// Convert from String (UTF-16) to UTF-32
|
||||
int[] characters = new int[value.Length];
|
||||
for (int i = 0; i < value.Length; ++i)
|
||||
characters[i] = Char.ConvertToUtf32(value, i);
|
||||
|
||||
// Transform to raw and pass to the C API
|
||||
GCHandle handle = GCHandle.Alloc(characters, GCHandleType.Pinned);
|
||||
sfText_SetUnicodeString(This, handle.AddrOfPinnedObject());
|
||||
handle.Free();
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Font used to display the text
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public Font Font
|
||||
{
|
||||
get {return myFont;}
|
||||
set {myFont = value; sfText_SetFont(This, value != null ? value.This : IntPtr.Zero);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Base size of characters
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public uint CharacterSize
|
||||
{
|
||||
get {return sfText_GetCharacterSize(This);}
|
||||
set {sfText_SetCharacterSize(This, value);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Style of the text (see Styles enum)
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public Styles Style
|
||||
{
|
||||
get {return sfText_GetStyle(This);}
|
||||
set {sfText_SetStyle(This, value);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Get the text rectangle on screen
|
||||
/// </summary>
|
||||
/// <returns>Text rectangle in global coordinates (doesn't include rotation)</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public FloatRect GetRect()
|
||||
{
|
||||
return sfText_GetRect(This);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Return the visual position of the Index-th character of the text,
|
||||
/// in coordinates relative to the text
|
||||
/// (note : translation, origin, rotation and scale are not applied)
|
||||
/// </summary>
|
||||
/// <param name="index">Index of the character</param>
|
||||
/// <returns>Position of the Index-th character (end of text if Index is out of range)</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public Vector2f GetCharacterPos(uint index)
|
||||
{
|
||||
Vector2f Pos;
|
||||
sfText_GetCharacterPos(This, index, out Pos.X, out Pos.Y);
|
||||
|
||||
return Pos;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Provide a string describing the object
|
||||
/// </summary>
|
||||
/// <returns>String description of the object</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override string ToString()
|
||||
{
|
||||
return "[Text]" +
|
||||
" Position(" + Position + ")" +
|
||||
" Rotation(" + Rotation + ")" +
|
||||
" Scale(" + Scale + ")" +
|
||||
" Origin(" + Origin + ")" +
|
||||
" Color(" + Color + ")" +
|
||||
" BlendMode(" + BlendMode + ")" +
|
||||
" String(" + DisplayedString + ")" +
|
||||
" Font(" + Font + ")" +
|
||||
" CharacterSize(" + CharacterSize + ")" +
|
||||
" Style(" + Style + ")" +
|
||||
" Rectangle(" + GetRect() + ")";
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Render the object into the given render window
|
||||
/// </summary>
|
||||
/// <param name="target">Target render window</param>
|
||||
/// <param name="shader">Shader to apply</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
internal override void Render(RenderWindow target, Shader shader)
|
||||
{
|
||||
if (shader == null)
|
||||
sfRenderWindow_DrawText(target.This, This);
|
||||
else
|
||||
sfRenderWindow_DrawTextWithShader(target.This, This, shader.This);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Render the object into the given render image
|
||||
/// </summary>
|
||||
/// <param name="target">Target render image</param>
|
||||
/// <param name="shader">Shader to apply</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
internal override void Render(RenderImage target, Shader shader)
|
||||
{
|
||||
if (shader == null)
|
||||
sfRenderImage_DrawText(target.This, This);
|
||||
else
|
||||
sfRenderImage_DrawTextWithShader(target.This, This, shader.This);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Handle the destruction of the object
|
||||
/// </summary>
|
||||
/// <param name="disposing">Is the GC disposing the object, or is it an explicit call ?</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
protected override void Destroy(bool disposing)
|
||||
{
|
||||
sfText_Destroy(This);
|
||||
}
|
||||
|
||||
private Font myFont = Font.DefaultFont;
|
||||
|
||||
#region Imports
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern IntPtr sfText_Create();
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern IntPtr sfText_Copy(IntPtr Text);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfText_Destroy(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfText_SetPosition(IntPtr This, float X, float Y);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern float sfText_GetX(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern float sfText_GetY(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfText_SetRotation(IntPtr This, float Rotation);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern float sfText_GetRotation(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfText_SetScale(IntPtr This, float X, float Y);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern float sfText_GetScaleX(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern float sfText_GetScaleY(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfText_SetOrigin(IntPtr This, float X, float Y);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern float sfText_GetOriginX(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern float sfText_GetOriginY(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfText_SetColor(IntPtr This, Color Color);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern Color sfText_GetColor(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfText_SetBlendMode(IntPtr This, BlendMode Mode);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern BlendMode sfText_GetBlendMode(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern Vector2f sfText_TransformToLocal(IntPtr This, float PointX, float PointY, out float X, out float Y);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern Vector2f sfText_TransformToGlobal(IntPtr This, float PointX, float PointY, out float X, out float Y);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfRenderWindow_DrawText(IntPtr This, IntPtr String);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfRenderWindow_DrawTextWithShader(IntPtr This, IntPtr String, IntPtr Shader);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfRenderImage_DrawText(IntPtr This, IntPtr String);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfRenderImage_DrawTextWithShader(IntPtr This, IntPtr String, IntPtr Shader);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfText_SetUnicodeString(IntPtr This, IntPtr Text);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfText_SetFont(IntPtr This, IntPtr Font);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfText_SetCharacterSize(IntPtr This, uint Size);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfText_SetStyle(IntPtr This, Styles Style);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern IntPtr sfText_GetString(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern IntPtr sfText_GetUnicodeString(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern uint sfText_GetCharacterSize(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern Styles sfText_GetStyle(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern FloatRect sfText_GetRect(IntPtr This);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfText_GetCharacterPos(IntPtr This, uint Index, out float X, out float Y);
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
}
|
@ -1,251 +0,0 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Security;
|
||||
using SFML.Window;
|
||||
|
||||
namespace SFML
|
||||
{
|
||||
namespace Graphics
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// This class defines a view (position, size, etc.) ;
|
||||
/// you can consider it as a 2D camera
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public class View : ObjectBase
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Create a default view (1000x1000)
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public View() :
|
||||
base(sfView_Create())
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the view from a rectangle
|
||||
/// </summary>
|
||||
/// <param name="viewRect">Rectangle defining the position and size of the view</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public View(FloatRect viewRect) :
|
||||
base(sfView_CreateFromRect(viewRect))
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the view from its center and size
|
||||
/// </summary>
|
||||
/// <param name="center">Center of the view</param>
|
||||
/// <param name="size">Size of the view</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public View(Vector2f center, Vector2f size) :
|
||||
base(sfView_Create())
|
||||
{
|
||||
this.Center = center;
|
||||
this.Size = size;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the view from another view
|
||||
/// </summary>
|
||||
/// <param name="copy">View to copy</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public View(View copy) :
|
||||
base(sfView_Copy(copy.This))
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Center of the view
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public Vector2f Center
|
||||
{
|
||||
get {return new Vector2f(sfView_GetCenterX(This), sfView_GetCenterY(This));}
|
||||
set {sfView_SetCenter(This, value.X, value.Y);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Half-size of the view
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public Vector2f Size
|
||||
{
|
||||
get {return new Vector2f(sfView_GetWidth(This), sfView_GetHeight(This));}
|
||||
set {sfView_SetSize(This, value.X, value.Y);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Rotation of the view, in degrees
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public float Rotation
|
||||
{
|
||||
get { return sfView_GetRotation(This); }
|
||||
set { sfView_SetRotation(This, value); }
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Target viewport of the view, defined as a factor of the
|
||||
/// size of the target to which the view is applied
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public FloatRect Viewport
|
||||
{
|
||||
get { return sfView_GetViewport(This); }
|
||||
set { sfView_SetViewport(This, value); }
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Rebuild the view from a rectangle
|
||||
/// </summary>
|
||||
/// <param name="rectangle">Rectangle defining the position and size of the view</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void Reset(FloatRect rectangle)
|
||||
{
|
||||
sfView_Reset(This, rectangle);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Move the view
|
||||
/// </summary>
|
||||
/// <param name="offset">Offset to move the view</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void Move(Vector2f offset)
|
||||
{
|
||||
sfView_Move(This, offset.X, offset.Y);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Rotate the view
|
||||
/// </summary>
|
||||
/// <param name="angle">Angle of rotation, in degrees</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void Rotate(float angle)
|
||||
{
|
||||
sfView_Rotate(This, angle);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Resize the view rectangle to simulate a zoom / unzoom effect
|
||||
/// </summary>
|
||||
/// <param name="factor">Zoom factor to apply, relative to the current zoom</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void Zoom(float factor)
|
||||
{
|
||||
sfView_Zoom(This, factor);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Provide a string describing the object
|
||||
/// </summary>
|
||||
/// <returns>String description of the object</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override string ToString()
|
||||
{
|
||||
return "[View]" +
|
||||
" Center(" + Center + ")" +
|
||||
" Size(" + Size + ")" +
|
||||
" Rotation(" + Rotation + ")" +
|
||||
" Viewport(" + Viewport + ")";
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Internal constructor for other classes which need to manipulate raw views
|
||||
/// </summary>
|
||||
/// <param name="thisPtr">Direct pointer to the view object in the C library</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
internal View(IntPtr thisPtr) :
|
||||
base(thisPtr)
|
||||
{
|
||||
myExternal = true;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Handle the destruction of the object
|
||||
/// </summary>
|
||||
/// <param name="disposing">Is the GC disposing the object, or is it an explicit call ?</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
protected override void Destroy(bool disposing)
|
||||
{
|
||||
if (!myExternal)
|
||||
sfView_Destroy(This);
|
||||
}
|
||||
|
||||
private bool myExternal = false;
|
||||
#region Imports
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern IntPtr sfView_Create();
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern IntPtr sfView_CreateFromRect(FloatRect Rect);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern IntPtr sfView_Copy(IntPtr View);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfView_Destroy(IntPtr View);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfView_SetCenter(IntPtr View, float X, float Y);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfView_SetSize(IntPtr View, float Width, float Height);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfView_SetRotation(IntPtr View, float Angle);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfView_SetViewport(IntPtr View, FloatRect Viewport);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfView_Reset(IntPtr View, FloatRect Rectangle);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern float sfView_GetCenterX(IntPtr View);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern float sfView_GetCenterY(IntPtr View);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern float sfView_GetWidth(IntPtr View);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern float sfView_GetHeight(IntPtr View);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern float sfView_GetRotation(IntPtr View);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern FloatRect sfView_GetViewport(IntPtr View);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfView_Move(IntPtr View, float OffsetX, float OffsetY);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfView_Rotate(IntPtr View, float Angle);
|
||||
|
||||
[DllImport("csfml-graphics-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfView_Zoom(IntPtr View, float Factor);
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
}
|
@ -1,97 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>9.0.21022</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{46786269-57B9-48E7-AA4F-8F4D84609FE6}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>SFML.Graphics</RootNamespace>
|
||||
<AssemblyName>sfmlnet-graphics-2</AssemblyName>
|
||||
<StartupObject>
|
||||
</StartupObject>
|
||||
<FileUpgradeFlags>
|
||||
</FileUpgradeFlags>
|
||||
<OldToolsVersion>2.0</OldToolsVersion>
|
||||
<UpgradeBackupLocation>
|
||||
</UpgradeBackupLocation>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>..\..\lib\x86\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<DocumentationFile>..\..\doc\build\graphics-doc.xml</DocumentationFile>
|
||||
<DebugType>full</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
|
||||
<OutputPath>..\..\lib\x86\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<DocumentationFile>..\..\doc\build\graphics-doc.xml</DocumentationFile>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>..\..\lib\x64\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<DocumentationFile>..\..\doc\build\graphics-doc.xml</DocumentationFile>
|
||||
<DebugType>full</DebugType>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
|
||||
<OutputPath>..\..\lib\x64\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<DocumentationFile>..\..\doc\build\graphics-doc.xml</DocumentationFile>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
<ItemGroup>
|
||||
<Compile Include="Color.cs" />
|
||||
<Compile Include="Context.cs" />
|
||||
<Compile Include="Drawable.cs" />
|
||||
<Compile Include="Font.cs" />
|
||||
<Compile Include="Image.cs" />
|
||||
<Compile Include="Rect.cs" />
|
||||
<Compile Include="RenderImage.cs" />
|
||||
<Compile Include="RenderTarget.cs" />
|
||||
<Compile Include="RenderWindow.cs" />
|
||||
<Compile Include="Shader.cs" />
|
||||
<Compile Include="Shape.cs" />
|
||||
<Compile Include="Sprite.cs" />
|
||||
<Compile Include="Text.cs" />
|
||||
<Compile Include="View.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Window\sfml-window.csproj">
|
||||
<Project>{D17DE83D-A592-461F-8AF2-53F9E22E1D0F}</Project>
|
||||
<Name>sfml-window</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Properties\" />
|
||||
</ItemGroup>
|
||||
</Project>
|
@ -1,92 +0,0 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace SFML
|
||||
{
|
||||
namespace Window
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Structure defining the creation settings of OpenGL contexts
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct ContextSettings
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the settings from depth / stencil bits
|
||||
/// </summary>
|
||||
/// <param name="depthBits">Depth buffer bits</param>
|
||||
/// <param name="stencilBits">Stencil buffer bits</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public ContextSettings(uint depthBits, uint stencilBits) :
|
||||
this(depthBits, stencilBits, 0)
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the settings from depth / stencil bits and antialiasing level
|
||||
/// </summary>
|
||||
/// <param name="depthBits">Depth buffer bits</param>
|
||||
/// <param name="stencilBits">Stencil buffer bits</param>
|
||||
/// <param name="antialiasingLevel">Antialiasing level</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public ContextSettings(uint depthBits, uint stencilBits, uint antialiasingLevel) :
|
||||
this(depthBits, stencilBits, antialiasingLevel, 2, 0)
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the settings from depth / stencil bits and antialiasing level
|
||||
/// </summary>
|
||||
/// <param name="depthBits">Depth buffer bits</param>
|
||||
/// <param name="stencilBits">Stencil buffer bits</param>
|
||||
/// <param name="antialiasingLevel">Antialiasing level</param>
|
||||
/// <param name="majorVersion">Major number of the context version</param>
|
||||
/// <param name="minorVersion">Minor number of the context version</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public ContextSettings(uint depthBits, uint stencilBits, uint antialiasingLevel, uint majorVersion, uint minorVersion)
|
||||
{
|
||||
DepthBits = depthBits;
|
||||
StencilBits = stencilBits;
|
||||
AntialiasingLevel = antialiasingLevel;
|
||||
MajorVersion = majorVersion;
|
||||
MinorVersion = minorVersion;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Provide a string describing the object
|
||||
/// </summary>
|
||||
/// <returns>String description of the object</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override string ToString()
|
||||
{
|
||||
return "[ContextSettings]" +
|
||||
" DepthBits(" + DepthBits + ")" +
|
||||
" StencilBits(" + StencilBits + ")" +
|
||||
" AntialiasingLevel(" + AntialiasingLevel + ")" +
|
||||
" MajorVersion(" + MajorVersion + ")" +
|
||||
" MinorVersion(" + MinorVersion + ")";
|
||||
}
|
||||
|
||||
/// <summary>Depth buffer bits (0 is disabled)</summary>
|
||||
public uint DepthBits;
|
||||
|
||||
/// <summary>Stencil buffer bits (0 is disabled)</summary>
|
||||
public uint StencilBits;
|
||||
|
||||
/// <summary>Antialiasing level (0 is disabled)</summary>
|
||||
public uint AntialiasingLevel;
|
||||
|
||||
/// <summary>Major number of the context version</summary>
|
||||
public uint MajorVersion;
|
||||
|
||||
/// <summary>Minor number of the context version</summary>
|
||||
public uint MinorVersion;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,266 +0,0 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace SFML
|
||||
{
|
||||
namespace Window
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Enumeration of the different types of events
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public enum EventType
|
||||
{
|
||||
/// <summary>Event triggered when a window is manually closed</summary>
|
||||
Closed,
|
||||
|
||||
/// <summary>Event triggered when a window is resized</summary>
|
||||
Resized,
|
||||
|
||||
/// <summary>Event triggered when a window loses the focus</summary>
|
||||
LostFocus,
|
||||
|
||||
/// <summary>Event triggered when a window gains the focus</summary>
|
||||
GainedFocus,
|
||||
|
||||
/// <summary>Event triggered when a valid character is entered</summary>
|
||||
TextEntered,
|
||||
|
||||
/// <summary>Event triggered when a keyboard key is pressed</summary>
|
||||
KeyPressed,
|
||||
|
||||
/// <summary>Event triggered when a keyboard key is released</summary>
|
||||
KeyReleased,
|
||||
|
||||
/// <summary>Event triggered when the mouse wheel is scrolled</summary>
|
||||
MouseWheelMoved,
|
||||
|
||||
/// <summary>Event triggered when a mouse button is pressed</summary>
|
||||
MouseButtonPressed,
|
||||
|
||||
/// <summary>Event triggered when a mouse button is released</summary>
|
||||
MouseButtonReleased,
|
||||
|
||||
/// <summary>Event triggered when the mouse moves within the area of a window</summary>
|
||||
MouseMoved,
|
||||
|
||||
/// <summary>Event triggered when the mouse enters the area of a window</summary>
|
||||
MouseEntered,
|
||||
|
||||
/// <summary>Event triggered when the mouse leaves the area of a window</summary>
|
||||
MouseLeft,
|
||||
|
||||
/// <summary>Event triggered when a joystick button is pressed</summary>
|
||||
JoystickButtonPressed,
|
||||
|
||||
/// <summary>Event triggered when a joystick button is released</summary>
|
||||
JoystickButtonReleased,
|
||||
|
||||
/// <summary>Event triggered when a joystick axis moves</summary>
|
||||
JoystickMoved,
|
||||
|
||||
/// <summary>Event triggered when a joystick is connected</summary>
|
||||
JoystickConnected,
|
||||
|
||||
/// <summary>Event triggered when a joystick is disconnected</summary>
|
||||
JoystickDisconnected
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Keyboard event parameters
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct KeyEvent
|
||||
{
|
||||
/// <summary>Code of the key (see KeyCode enum)</summary>
|
||||
public Keyboard.Key Code;
|
||||
|
||||
/// <summary>Is the Alt modifier pressed?</summary>
|
||||
public int Alt;
|
||||
|
||||
/// <summary>Is the Control modifier pressed?</summary>
|
||||
public int Control;
|
||||
|
||||
/// <summary>Is the Shift modifier pressed?</summary>
|
||||
public int Shift;
|
||||
|
||||
/// <summary>Is the System modifier pressed?</summary>
|
||||
public int System;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Text event parameters
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct TextEvent
|
||||
{
|
||||
/// <summary>UTF-32 value of the character</summary>
|
||||
public uint Unicode;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Mouse move event parameters
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct MouseMoveEvent
|
||||
{
|
||||
/// <summary>X coordinate of the mouse cursor</summary>
|
||||
public int X;
|
||||
|
||||
/// <summary>Y coordinate of the mouse cursor</summary>
|
||||
public int Y;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Mouse buttons event parameters
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct MouseButtonEvent
|
||||
{
|
||||
/// <summary>Code of the button (see MouseButton enum)</summary>
|
||||
public Mouse.Button Button;
|
||||
|
||||
/// <summary>X coordinate of the mouse cursor</summary>
|
||||
public int X;
|
||||
|
||||
/// <summary>Y coordinate of the mouse cursor</summary>
|
||||
public int Y;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Mouse wheel event parameters
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct MouseWheelEvent
|
||||
{
|
||||
/// <summary>Scroll amount</summary>
|
||||
public int Delta;
|
||||
|
||||
/// <summary>X coordinate of the mouse cursor</summary>
|
||||
public int X;
|
||||
|
||||
/// <summary>Y coordinate of the mouse cursor</summary>
|
||||
public int Y;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Joystick axis move event parameters
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct JoystickMoveEvent
|
||||
{
|
||||
/// <summary>Index of the joystick which triggered the event</summary>
|
||||
public uint JoystickId;
|
||||
|
||||
/// <summary>Joystick axis (see JoyAxis enum)</summary>
|
||||
public Joystick.Axis Axis;
|
||||
|
||||
/// <summary>Current position of the axis</summary>
|
||||
public float Position;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Joystick buttons event parameters
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct JoystickButtonEvent
|
||||
{
|
||||
/// <summary>Index of the joystick which triggered the event</summary>
|
||||
public uint JoystickId;
|
||||
|
||||
/// <summary>Index of the button</summary>
|
||||
public uint Button;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Joystick connect event parameters
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct JoystickConnectEvent
|
||||
{
|
||||
/// <summary>Index of the joystick which triggered the event</summary>
|
||||
public uint JoystickId;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Size event parameters
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct SizeEvent
|
||||
{
|
||||
/// <summary>New width of the window</summary>
|
||||
public uint Width;
|
||||
|
||||
/// <summary>New height of the window</summary>
|
||||
public uint Height;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Event defines a system event and its parameters
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
[StructLayout(LayoutKind.Explicit, Size = 20)]
|
||||
public struct Event
|
||||
{
|
||||
/// <summary>Type of event (see EventType enum)</summary>
|
||||
[FieldOffset(0)]
|
||||
public EventType Type;
|
||||
|
||||
/// <summary>Arguments for size events (Resized)</summary>
|
||||
[FieldOffset(4)]
|
||||
public SizeEvent Size;
|
||||
|
||||
/// <summary>Arguments for key events (KeyPressed, KeyReleased)</summary>
|
||||
[FieldOffset(4)]
|
||||
public KeyEvent Key;
|
||||
|
||||
/// <summary>Arguments for text events (TextEntered)</summary>
|
||||
[FieldOffset(4)]
|
||||
public TextEvent Text;
|
||||
|
||||
/// <summary>Arguments for mouse move events (MouseMoved)</summary>
|
||||
[FieldOffset(4)]
|
||||
public MouseMoveEvent MouseMove;
|
||||
|
||||
/// <summary>Arguments for mouse button events (MouseButtonPressed, MouseButtonReleased)</summary>
|
||||
[FieldOffset(4)]
|
||||
public MouseButtonEvent MouseButton;
|
||||
|
||||
/// <summary>Arguments for mouse wheel events (MouseWheelMoved)</summary>
|
||||
[FieldOffset(4)]
|
||||
public MouseWheelEvent MouseWheel;
|
||||
|
||||
/// <summary>Arguments for joystick axis events (JoystickMoved)</summary>
|
||||
[FieldOffset(4)]
|
||||
public JoystickMoveEvent JoystickMove;
|
||||
|
||||
/// <summary>Arguments for joystick button events (JoystickButtonPressed, JoystickButtonReleased)</summary>
|
||||
[FieldOffset(4)]
|
||||
public JoystickButtonEvent JoystickButton;
|
||||
|
||||
/// <summary>Arguments for joystick connect events (JoystickConnected, JoystickDisconnected)</summary>
|
||||
[FieldOffset(4)]
|
||||
public JoystickConnectEvent JoystickConnect;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,378 +0,0 @@
|
||||
using System;
|
||||
|
||||
namespace SFML
|
||||
{
|
||||
namespace Window
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Keyboard event parameters
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public class KeyEventArgs : EventArgs
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the key arguments from a key event
|
||||
/// </summary>
|
||||
/// <param name="e">Key event</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public KeyEventArgs(KeyEvent e)
|
||||
{
|
||||
Code = e.Code;
|
||||
Alt = e.Alt != 0;
|
||||
Control = e.Control != 0;
|
||||
Shift = e.Shift != 0;
|
||||
System = e.System != 0;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Provide a string describing the object
|
||||
/// </summary>
|
||||
/// <returns>String description of the object</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override string ToString()
|
||||
{
|
||||
return "[KeyEventArgs]" +
|
||||
" Code(" + Code + ")" +
|
||||
" Alt(" + Alt + ")" +
|
||||
" Control(" + Control + ")" +
|
||||
" Shift(" + Shift + ")" +
|
||||
" System(" + System + ")";
|
||||
}
|
||||
|
||||
/// <summary>Code of the key (see KeyCode enum)</summary>
|
||||
public Keyboard.Key Code;
|
||||
|
||||
/// <summary>Is the Alt modifier pressed?</summary>
|
||||
public bool Alt;
|
||||
|
||||
/// <summary>Is the Control modifier pressed?</summary>
|
||||
public bool Control;
|
||||
|
||||
/// <summary>Is the Shift modifier pressed?</summary>
|
||||
public bool Shift;
|
||||
|
||||
/// <summary>Is the System modifier pressed?</summary>
|
||||
public bool System;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Text event parameters
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public class TextEventArgs : EventArgs
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the text arguments from a text event
|
||||
/// </summary>
|
||||
/// <param name="e">Text event</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public TextEventArgs(TextEvent e)
|
||||
{
|
||||
Unicode = Char.ConvertFromUtf32((int)e.Unicode);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Provide a string describing the object
|
||||
/// </summary>
|
||||
/// <returns>String description of the object</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override string ToString()
|
||||
{
|
||||
return "[TextEventArgs]" +
|
||||
" Unicode(" + Unicode + ")";
|
||||
}
|
||||
|
||||
/// <summary>UTF-16 value of the character</summary>
|
||||
public string Unicode;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Mouse move event parameters
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public class MouseMoveEventArgs : EventArgs
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the mouse move arguments from a mouse move event
|
||||
/// </summary>
|
||||
/// <param name="e">Mouse move event</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public MouseMoveEventArgs(MouseMoveEvent e)
|
||||
{
|
||||
X = e.X;
|
||||
Y = e.Y;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Provide a string describing the object
|
||||
/// </summary>
|
||||
/// <returns>String description of the object</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override string ToString()
|
||||
{
|
||||
return "[MouseMoveEventArgs]" +
|
||||
" X(" + X + ")" +
|
||||
" Y(" + Y + ")";
|
||||
}
|
||||
|
||||
/// <summary>X coordinate of the mouse cursor</summary>
|
||||
public int X;
|
||||
|
||||
/// <summary>Y coordinate of the mouse cursor</summary>
|
||||
public int Y;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Mouse buttons event parameters
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public class MouseButtonEventArgs : EventArgs
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the mouse button arguments from a mouse button event
|
||||
/// </summary>
|
||||
/// <param name="e">Mouse button event</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public MouseButtonEventArgs(MouseButtonEvent e)
|
||||
{
|
||||
Button = e.Button;
|
||||
X = e.X;
|
||||
Y = e.Y;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Provide a string describing the object
|
||||
/// </summary>
|
||||
/// <returns>String description of the object</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override string ToString()
|
||||
{
|
||||
return "[MouseButtonEventArgs]" +
|
||||
" Button(" + Button + ")" +
|
||||
" X(" + X + ")" +
|
||||
" Y(" + Y + ")";
|
||||
}
|
||||
|
||||
/// <summary>Code of the button (see MouseButton enum)</summary>
|
||||
public Mouse.Button Button;
|
||||
|
||||
/// <summary>X coordinate of the mouse cursor</summary>
|
||||
public int X;
|
||||
|
||||
/// <summary>Y coordinate of the mouse cursor</summary>
|
||||
public int Y;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Mouse wheel event parameters
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public class MouseWheelEventArgs : EventArgs
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the mouse wheel arguments from a mouse wheel event
|
||||
/// </summary>
|
||||
/// <param name="e">Mouse wheel event</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public MouseWheelEventArgs(MouseWheelEvent e)
|
||||
{
|
||||
Delta = e.Delta;
|
||||
X = e.X;
|
||||
Y = e.Y;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Provide a string describing the object
|
||||
/// </summary>
|
||||
/// <returns>String description of the object</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override string ToString()
|
||||
{
|
||||
return "[MouseWheelEventArgs]" +
|
||||
" Delta(" + Delta + ")" +
|
||||
" X(" + X + ")" +
|
||||
" Y(" + Y + ")";
|
||||
}
|
||||
|
||||
/// <summary>Scroll amount</summary>
|
||||
public int Delta;
|
||||
|
||||
/// <summary>X coordinate of the mouse cursor</summary>
|
||||
public int X;
|
||||
|
||||
/// <summary>Y coordinate of the mouse cursor</summary>
|
||||
public int Y;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Joystick axis move event parameters
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public class JoystickMoveEventArgs : EventArgs
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the joystick move arguments from a joystick move event
|
||||
/// </summary>
|
||||
/// <param name="e">Joystick move event</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public JoystickMoveEventArgs(JoystickMoveEvent e)
|
||||
{
|
||||
JoystickId = e.JoystickId;
|
||||
Axis = e.Axis;
|
||||
Position = e.Position;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Provide a string describing the object
|
||||
/// </summary>
|
||||
/// <returns>String description of the object</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override string ToString()
|
||||
{
|
||||
return "[JoystickMoveEventArgs]" +
|
||||
" JoystickId(" + JoystickId + ")" +
|
||||
" Axis(" + Axis + ")" +
|
||||
" Position(" + Position + ")";
|
||||
}
|
||||
|
||||
/// <summary>Index of the joystick which triggered the event</summary>
|
||||
public uint JoystickId;
|
||||
|
||||
/// <summary>Joystick axis (see JoyAxis enum)</summary>
|
||||
public Joystick.Axis Axis;
|
||||
|
||||
/// <summary>Current position of the axis</summary>
|
||||
public float Position;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Joystick buttons event parameters
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public class JoystickButtonEventArgs : EventArgs
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the joystick button arguments from a joystick button event
|
||||
/// </summary>
|
||||
/// <param name="e">Joystick button event</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public JoystickButtonEventArgs(JoystickButtonEvent e)
|
||||
{
|
||||
JoystickId = e.JoystickId;
|
||||
Button = e.Button;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Provide a string describing the object
|
||||
/// </summary>
|
||||
/// <returns>String description of the object</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override string ToString()
|
||||
{
|
||||
return "[JoystickButtonEventArgs]" +
|
||||
" JoystickId(" + JoystickId + ")" +
|
||||
" Button(" + Button + ")";
|
||||
}
|
||||
|
||||
/// <summary>Index of the joystick which triggered the event</summary>
|
||||
public uint JoystickId;
|
||||
|
||||
/// <summary>Index of the button</summary>
|
||||
public uint Button;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Joystick connection/disconnection event parameters
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public class JoystickConnectEventArgs : EventArgs
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the joystick connect arguments from a joystick connect event
|
||||
/// </summary>
|
||||
/// <param name="e">Joystick button event</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public JoystickConnectEventArgs(JoystickConnectEvent e)
|
||||
{
|
||||
JoystickId = e.JoystickId;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Provide a string describing the object
|
||||
/// </summary>
|
||||
/// <returns>String description of the object</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override string ToString()
|
||||
{
|
||||
return "[JoystickConnectEventArgs]" +
|
||||
" JoystickId(" + JoystickId + ")";
|
||||
}
|
||||
|
||||
/// <summary>Index of the joystick which triggered the event</summary>
|
||||
public uint JoystickId;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Size event parameters
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public class SizeEventArgs : EventArgs
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the size arguments from a size event
|
||||
/// </summary>
|
||||
/// <param name="e">Size event</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public SizeEventArgs(SizeEvent e)
|
||||
{
|
||||
Width = e.Width;
|
||||
Height = e.Height;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Provide a string describing the object
|
||||
/// </summary>
|
||||
/// <returns>String description of the object</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override string ToString()
|
||||
{
|
||||
return "[SizeEventArgs]" +
|
||||
" Width(" + Width + ")" +
|
||||
" Height(" + Height + ")";
|
||||
}
|
||||
|
||||
/// <summary>New width of the window</summary>
|
||||
public uint Width;
|
||||
|
||||
/// <summary>New height of the window</summary>
|
||||
public uint Height;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,159 +0,0 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Security;
|
||||
|
||||
namespace SFML
|
||||
{
|
||||
namespace Window
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Give access to the real-time state of the joysticks
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public class Joystick
|
||||
{
|
||||
/// <summary>Maximum number of supported joysticks</summary>
|
||||
public static readonly uint Count = 8;
|
||||
|
||||
/// <summary>Maximum number of supported buttons</summary>
|
||||
public static readonly uint ButtonCount = 32;
|
||||
|
||||
/// <summary>Maximum number of supported axes</summary>
|
||||
public static readonly uint AxisCount = 8;
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Axes supported by SFML joysticks
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public enum Axis
|
||||
{
|
||||
/// <summary>The X axis</summary>
|
||||
X,
|
||||
|
||||
/// <summary>The Y axis</summary>
|
||||
Y,
|
||||
|
||||
/// <summary>The Z axis</summary>
|
||||
Z,
|
||||
|
||||
/// <summary>The R axis</summary>
|
||||
R,
|
||||
|
||||
/// <summary>The U axis</summary>
|
||||
U,
|
||||
|
||||
/// <summary>The V axis</summary>
|
||||
V,
|
||||
|
||||
/// <summary>The X axis of the point-of-view hat</summary>
|
||||
PovX,
|
||||
|
||||
/// <summary>TheY axis of the point-of-view hat</summary>
|
||||
PovY
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Check if a joystick is connected
|
||||
/// </summary>
|
||||
/// <param name="joystick">Index of the joystick to check</param>
|
||||
/// <returns>True if the joystick is connected, false otherwise</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public static bool IsConnected(uint joystick)
|
||||
{
|
||||
return sfJoystick_IsConnected(joystick);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Return the number of buttons supported by a joystick
|
||||
/// </summary>
|
||||
/// If the joystick is not connected, this function returns 0.
|
||||
/// <param name="joystick">Index of the joystick</param>
|
||||
/// <returns>Number of buttons supported by the joystick</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public static uint GetButtonCount(uint joystick)
|
||||
{
|
||||
return sfJoystick_GetButtonCount(joystick);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Check if a joystick supports a given axis
|
||||
/// </summary>
|
||||
/// If the joystick is not connected, this function returns false.
|
||||
/// <param name="joystick">Index of the joystick</param>
|
||||
/// <param name="axis">Axis to check</param>
|
||||
/// <returns>True if the joystick supports the axis, false otherwise</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public static bool HasAxis(uint joystick, Axis axis)
|
||||
{
|
||||
return sfJoystick_HasAxis(joystick, axis);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Check if a joystick button is pressed
|
||||
/// </summary>
|
||||
/// If the joystick is not connected, this function returns false.
|
||||
/// <param name="joystick">Index of the joystick</param>
|
||||
/// <param name="button">Button to check</param>
|
||||
/// <returns>True if the button is pressed, false otherwise</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public static bool IsButtonPressed(uint joystick, uint button)
|
||||
{
|
||||
return sfJoystick_IsButtonPressed(joystick, button);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Get the current position of a joystick axis
|
||||
/// </summary>
|
||||
/// If the joystick is not connected, this function returns 0.
|
||||
/// <param name="joystick">Index of the joystick</param>
|
||||
/// <param name="axis">Axis to check</param>
|
||||
/// <returns>Current position of the axis, in range [-100 .. 100]</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public static float GetAxisPosition(uint joystick, Axis axis)
|
||||
{
|
||||
return sfJoystick_GetAxisPosition(joystick, axis);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Update the states of all joysticks
|
||||
/// </summary>
|
||||
/// This function is used internally by SFML, so you normally
|
||||
/// don't have to call it explicitely. However, you may need to
|
||||
/// call it if you have no window yet (or no window at all):
|
||||
/// in this case the joysticks states are not updated automatically.
|
||||
////////////////////////////////////////////////////////////
|
||||
public static void Update()
|
||||
{
|
||||
sfJoystick_Update();
|
||||
}
|
||||
|
||||
#region Imports
|
||||
[DllImport("csfml-window-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern bool sfJoystick_IsConnected(uint joystick);
|
||||
|
||||
[DllImport("csfml-window-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern uint sfJoystick_GetButtonCount(uint joystick);
|
||||
|
||||
[DllImport("csfml-window-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern bool sfJoystick_HasAxis(uint joystick, Axis axis);
|
||||
|
||||
[DllImport("csfml-window-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern bool sfJoystick_IsButtonPressed(uint joystick, uint button);
|
||||
|
||||
[DllImport("csfml-window-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern float sfJoystick_GetAxisPosition(uint joystick, Axis axis);
|
||||
|
||||
[DllImport("csfml-window-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfJoystick_Update();
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
}
|
@ -1,146 +0,0 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Security;
|
||||
|
||||
namespace SFML
|
||||
{
|
||||
namespace Window
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Give access to the real-time state of the keyboard
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public class Keyboard
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Key codes
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public enum Key
|
||||
{
|
||||
A, // The A key
|
||||
B, // The B key
|
||||
C, // The C key
|
||||
D, // The D key
|
||||
E, // The E key
|
||||
F, // The F key
|
||||
G, // The G key
|
||||
H, // The H key
|
||||
I, // The I key
|
||||
J, // The J key
|
||||
K, // The K key
|
||||
L, // The L key
|
||||
M, // The M key
|
||||
N, // The N key
|
||||
O, // The O key
|
||||
P, // The P key
|
||||
Q, // The Q key
|
||||
R, // The R key
|
||||
S, // The S key
|
||||
T, // The T key
|
||||
U, // The U key
|
||||
V, // The V key
|
||||
W, // The W key
|
||||
X, // The X key
|
||||
Y, // The Y key
|
||||
Z, // The Z key
|
||||
Num0, // The 0 key
|
||||
Num1, // The 1 key
|
||||
Num2, // The 2 key
|
||||
Num3, // The 3 key
|
||||
Num4, // The 4 key
|
||||
Num5, // The 5 key
|
||||
Num6, // The 6 key
|
||||
Num7, // The 7 key
|
||||
Num8, // The 8 key
|
||||
Num9, // The 9 key
|
||||
Escape, // The Escape key
|
||||
LControl, // The left Control key
|
||||
LShift, // The left Shift key
|
||||
LAlt, // The left Alt key
|
||||
LSystem, // The left OS specific key: window (Windows and Linux), apple (MacOS X), ...
|
||||
RControl, // The right Control key
|
||||
RShift, // The right Shift key
|
||||
RAlt, // The right Alt key
|
||||
RSystem, // The right OS specific key: window (Windows and Linux), apple (MacOS X), ...
|
||||
Menu, // The Menu key
|
||||
LBracket, // The [ key
|
||||
RBracket, // The ] key
|
||||
SemiColon, // The ; key
|
||||
Comma, // The , key
|
||||
Period, // The . key
|
||||
Quote, // The ' key
|
||||
Slash, // The / key
|
||||
BackSlash, // The \ key
|
||||
Tilde, // The ~ key
|
||||
Equal, // The = key
|
||||
Dash, // The - key
|
||||
Space, // The Space key
|
||||
Return, // The Return key
|
||||
Back, // The Backspace key
|
||||
Tab, // The Tabulation key
|
||||
PageUp, // The Page up key
|
||||
PageDown, // The Page down key
|
||||
End, // The End key
|
||||
Home, // The Home key
|
||||
Insert, // The Insert key
|
||||
Delete, // The Delete key
|
||||
Add, // +
|
||||
Subtract, // -
|
||||
Multiply, // *
|
||||
Divide, // /
|
||||
Left, // Left arrow
|
||||
Right, // Right arrow
|
||||
Up, // Up arrow
|
||||
Down, // Down arrow
|
||||
Numpad0, // The numpad 0 key
|
||||
Numpad1, // The numpad 1 key
|
||||
Numpad2, // The numpad 2 key
|
||||
Numpad3, // The numpad 3 key
|
||||
Numpad4, // The numpad 4 key
|
||||
Numpad5, // The numpad 5 key
|
||||
Numpad6, // The numpad 6 key
|
||||
Numpad7, // The numpad 7 key
|
||||
Numpad8, // The numpad 8 key
|
||||
Numpad9, // The numpad 9 key
|
||||
F1, // The F1 key
|
||||
F2, // The F2 key
|
||||
F3, // The F3 key
|
||||
F4, // The F4 key
|
||||
F5, // The F5 key
|
||||
F6, // The F6 key
|
||||
F7, // The F7 key
|
||||
F8, // The F8 key
|
||||
F9, // The F8 key
|
||||
F10, // The F10 key
|
||||
F11, // The F11 key
|
||||
F12, // The F12 key
|
||||
F13, // The F13 key
|
||||
F14, // The F14 key
|
||||
F15, // The F15 key
|
||||
Pause, // The Pause key
|
||||
|
||||
KeyCount // Keep last -- the total number of keyboard keys
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Check if a key is pressed
|
||||
/// </summary>
|
||||
/// <param name="key">Key to check</param>
|
||||
/// <returns>True if the key is pressed, false otherwise</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public static bool IsKeyDown(Key key)
|
||||
{
|
||||
return sfKeyboard_IsKeyDown(key);
|
||||
}
|
||||
|
||||
#region Imports
|
||||
[DllImport("csfml-window-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern bool sfKeyboard_IsKeyDown(Key Key);
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
}
|
@ -1,84 +0,0 @@
|
||||
using System;
|
||||
using System.Runtime.Serialization;
|
||||
|
||||
namespace SFML
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Exception thrown by SFML whenever loading a resource fails
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
[Serializable]
|
||||
public class LoadingFailedException : Exception
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Default constructor (unknown error)
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public LoadingFailedException() :
|
||||
base("Failed to load a resource")
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Failure to load a resource from memory
|
||||
/// </summary>
|
||||
/// <param name="resourceName">Name of the resource</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public LoadingFailedException(string resourceName) :
|
||||
base("Failed to load " + resourceName + " from memory")
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Failure to load a resource from memory
|
||||
/// </summary>
|
||||
/// <param name="resourceName">Name of the resource</param>
|
||||
/// <param name="innerException">Exception which is the cause ofthe current exception</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public LoadingFailedException(string resourceName, Exception innerException) :
|
||||
base("Failed to load " + resourceName + " from memory", innerException)
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Failure to load a resource from a file
|
||||
/// </summary>
|
||||
/// <param name="resourceName">Name of the resource</param>
|
||||
/// <param name="filename">Path of the file</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public LoadingFailedException(string resourceName, string filename) :
|
||||
base("Failed to load " + resourceName + " from file " + filename)
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Failure to load a resource from a file
|
||||
/// </summary>
|
||||
/// <param name="resourceName">Name of the resource</param>
|
||||
/// <param name="filename">Path of the file</param>
|
||||
/// <param name="innerException">Exception which is the cause ofthe current exception</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public LoadingFailedException(string resourceName, string filename, Exception innerException) :
|
||||
base("Failed to load " + resourceName + " from file " + filename, innerException)
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Initialize an instance of the exception with serialized data
|
||||
/// </summary>
|
||||
/// <param name="info">Serialized data</param>
|
||||
/// <param name="context">Contextual informations</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public LoadingFailedException(SerializationInfo info, StreamingContext context) :
|
||||
base(info, context)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
@ -1,81 +0,0 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Security;
|
||||
|
||||
namespace SFML
|
||||
{
|
||||
namespace Window
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Give access to the real-time state of the mouse
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public class Mouse
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Mouse buttons
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public enum Button
|
||||
{
|
||||
/// <summary>The left mouse button</summary>
|
||||
Left,
|
||||
|
||||
/// <summary>The right mouse button</summary>
|
||||
Right,
|
||||
|
||||
/// <summary>The middle (wheel) mouse button</summary>
|
||||
Middle,
|
||||
|
||||
/// <summary>The first extra mouse button</summary>
|
||||
XButton1,
|
||||
|
||||
/// <summary>The second extra mouse button</summary>
|
||||
XButton2,
|
||||
|
||||
/// <summary>Keep last -- the total number of mouse buttons</summary>
|
||||
ButtonCount
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Check if a mouse button is pressed
|
||||
/// </summary>
|
||||
/// <param name="button">Button to check</param>
|
||||
/// <returns>True if the button is pressed, false otherwise</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public static bool IsButtonPressed(Button button)
|
||||
{
|
||||
return sfMouse_IsButtonPressed(button);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Get the current position of the mouse
|
||||
/// </summary>
|
||||
/// This function returns the current position of the mouse
|
||||
/// cursor.
|
||||
/// If the cursor is over a SFML window, the returned position
|
||||
/// is relative to this window. Otherwise, the returned position
|
||||
/// is in desktop coordinates.
|
||||
/// <returns>Current position of the mouse</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public static Vector2i GetPosition()
|
||||
{
|
||||
Vector2i position;
|
||||
sfMouse_GetPosition(out position.X, out position.Y);
|
||||
return position;
|
||||
}
|
||||
|
||||
#region Imports
|
||||
[DllImport("csfml-window-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern bool sfMouse_IsButtonPressed(Button button);
|
||||
|
||||
[DllImport("csfml-window-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfMouse_GetPosition(out int x, out int y);
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
}
|
@ -1,93 +0,0 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace SFML
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// The ObjectBase class is an abstract base for every
|
||||
/// SFML object. It's meant for internal use only
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public abstract class ObjectBase : IDisposable
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the object from a pointer to the C library object
|
||||
/// </summary>
|
||||
/// <param name="thisPtr">Internal pointer to the object in the C libraries</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public ObjectBase(IntPtr thisPtr)
|
||||
{
|
||||
myThis = thisPtr;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Dispose the object
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
~ObjectBase()
|
||||
{
|
||||
Dispose(false);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Access to the internal pointer of the object.
|
||||
/// For internal use only
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public IntPtr This
|
||||
{
|
||||
get {return myThis;}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Explicitely dispose the object
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void Dispose()
|
||||
{
|
||||
Dispose(true);
|
||||
GC.SuppressFinalize(this);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Destroy the object
|
||||
/// </summary>
|
||||
/// <param name="disposing">Is the GC disposing the object, or is it an explicit call ?</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
private void Dispose(bool disposing)
|
||||
{
|
||||
if (myThis != IntPtr.Zero)
|
||||
{
|
||||
Destroy(disposing);
|
||||
myThis = IntPtr.Zero;
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Destroy the object (implementation is left to each derived class)
|
||||
/// </summary>
|
||||
/// <param name="disposing">Is the GC disposing the object, or is it an explicit call ?</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
protected abstract void Destroy(bool disposing);
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Set the pointer to the internal object. For internal use only
|
||||
/// </summary>
|
||||
/// <param name="thisPtr">Pointer to the internal object in C library</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
protected void SetThis(IntPtr thisPtr)
|
||||
{
|
||||
myThis = thisPtr;
|
||||
}
|
||||
|
||||
private IntPtr myThis = IntPtr.Zero;
|
||||
}
|
||||
}
|
@ -1,246 +0,0 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace SFML
|
||||
{
|
||||
namespace Window
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Vector2f is an utility class for manipulating 2 dimensional
|
||||
/// vectors with float components
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct Vector2f
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the vector from its coordinates
|
||||
/// </summary>
|
||||
/// <param name="x">X coordinate</param>
|
||||
/// <param name="y">Y coordinate</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public Vector2f(float x, float y)
|
||||
{
|
||||
X = x;
|
||||
Y = y;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Operator - overload ; returns the opposite of a vector
|
||||
/// </summary>
|
||||
/// <param name="v">Vector to negate</param>
|
||||
/// <returns>-v</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public static Vector2f operator -(Vector2f v)
|
||||
{
|
||||
return new Vector2f(-v.X, -v.Y);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Operator - overload ; subtracts two vectors
|
||||
/// </summary>
|
||||
/// <param name="v1">First vector</param>
|
||||
/// <param name="v2">Second vector</param>
|
||||
/// <returns>v1 - v2</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public static Vector2f operator -(Vector2f v1, Vector2f v2)
|
||||
{
|
||||
return new Vector2f(v1.X - v2.X, v1.Y - v2.Y);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Operator + overload ; add two vectors
|
||||
/// </summary>
|
||||
/// <param name="v1">First vector</param>
|
||||
/// <param name="v2">Second vector</param>
|
||||
/// <returns>v1 + v2</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public static Vector2f operator +(Vector2f v1, Vector2f v2)
|
||||
{
|
||||
return new Vector2f(v1.X + v2.X, v1.Y + v2.Y);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Operator * overload ; multiply a vector by a scalar value
|
||||
/// </summary>
|
||||
/// <param name="v">Vector</param>
|
||||
/// <param name="x">Scalar value</param>
|
||||
/// <returns>v * x</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public static Vector2f operator *(Vector2f v, float x)
|
||||
{
|
||||
return new Vector2f(v.X * x, v.Y * x);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Operator * overload ; multiply a scalar value by a vector
|
||||
/// </summary>
|
||||
/// <param name="x">Scalar value</param>
|
||||
/// <param name="v">Vector</param>
|
||||
/// <returns>x * v</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public static Vector2f operator *(float x, Vector2f v)
|
||||
{
|
||||
return new Vector2f(v.X * x, v.Y * x);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Operator / overload ; divide a vector by a scalar value
|
||||
/// </summary>
|
||||
/// <param name="v">Vector</param>
|
||||
/// <param name="x">Scalar value</param>
|
||||
/// <returns>v / x</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public static Vector2f operator /(Vector2f v, float x)
|
||||
{
|
||||
return new Vector2f(v.X / x, v.Y / x);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Provide a string describing the object
|
||||
/// </summary>
|
||||
/// <returns>String description of the object</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override string ToString()
|
||||
{
|
||||
return "[Vector2f]" +
|
||||
" X(" + X + ")" +
|
||||
" Y(" + Y + ")";
|
||||
}
|
||||
|
||||
/// <summary>X (horizontal) component of the vector</summary>
|
||||
public float X;
|
||||
|
||||
/// <summary>Y (vertical) component of the vector</summary>
|
||||
public float Y;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Vector2i is an utility class for manipulating 2 dimensional
|
||||
/// vectors with integer components
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct Vector2i
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the vector from its coordinates
|
||||
/// </summary>
|
||||
/// <param name="x">X coordinate</param>
|
||||
/// <param name="y">Y coordinate</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public Vector2i(int x, int y)
|
||||
{
|
||||
X = x;
|
||||
Y = y;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Operator - overload ; returns the opposite of a vector
|
||||
/// </summary>
|
||||
/// <param name="v">Vector to negate</param>
|
||||
/// <returns>-v</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public static Vector2i operator -(Vector2i v)
|
||||
{
|
||||
return new Vector2i(-v.X, -v.Y);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Operator - overload ; subtracts two vectors
|
||||
/// </summary>
|
||||
/// <param name="v1">First vector</param>
|
||||
/// <param name="v2">Second vector</param>
|
||||
/// <returns>v1 - v2</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public static Vector2i operator -(Vector2i v1, Vector2i v2)
|
||||
{
|
||||
return new Vector2i(v1.X - v2.X, v1.Y - v2.Y);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Operator + overload ; add two vectors
|
||||
/// </summary>
|
||||
/// <param name="v1">First vector</param>
|
||||
/// <param name="v2">Second vector</param>
|
||||
/// <returns>v1 + v2</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public static Vector2i operator +(Vector2i v1, Vector2i v2)
|
||||
{
|
||||
return new Vector2i(v1.X + v2.X, v1.Y + v2.Y);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Operator * overload ; multiply a vector by a scalar value
|
||||
/// </summary>
|
||||
/// <param name="v">Vector</param>
|
||||
/// <param name="x">Scalar value</param>
|
||||
/// <returns>v * x</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public static Vector2i operator *(Vector2i v, int x)
|
||||
{
|
||||
return new Vector2i(v.X * x, v.Y * x);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Operator * overload ; multiply a scalar value by a vector
|
||||
/// </summary>
|
||||
/// <param name="x">Scalar value</param>
|
||||
/// <param name="v">Vector</param>
|
||||
/// <returns>x * v</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public static Vector2i operator *(int x, Vector2i v)
|
||||
{
|
||||
return new Vector2i(v.X * x, v.Y * x);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Operator / overload ; divide a vector by a scalar value
|
||||
/// </summary>
|
||||
/// <param name="v">Vector</param>
|
||||
/// <param name="x">Scalar value</param>
|
||||
/// <returns>v / x</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public static Vector2i operator /(Vector2i v, int x)
|
||||
{
|
||||
return new Vector2i(v.X / x, v.Y / x);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Provide a string describing the object
|
||||
/// </summary>
|
||||
/// <returns>String description of the object</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override string ToString()
|
||||
{
|
||||
return "[Vector2i]" +
|
||||
" X(" + X + ")" +
|
||||
" Y(" + Y + ")";
|
||||
}
|
||||
|
||||
/// <summary>X (horizontal) component of the vector</summary>
|
||||
public int X;
|
||||
|
||||
/// <summary>Y (vertical) component of the vector</summary>
|
||||
public int Y;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,124 +0,0 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Security;
|
||||
|
||||
namespace SFML
|
||||
{
|
||||
namespace Window
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// VideoMode defines a video mode (width, height, bpp, frequency)
|
||||
/// and provides static functions for getting modes supported
|
||||
/// by the display device
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct VideoMode
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the video mode with its width and height
|
||||
/// </summary>
|
||||
/// <param name="width">Video mode width</param>
|
||||
/// <param name="height">Video mode height</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public VideoMode(uint width, uint height) :
|
||||
this(width, height, 32)
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Construct the video mode with its width, height and depth
|
||||
/// </summary>
|
||||
/// <param name="width">Video mode width</param>
|
||||
/// <param name="height">Video mode height</param>
|
||||
/// <param name="bpp">Video mode depth (bits per pixel)</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public VideoMode(uint width, uint height, uint bpp)
|
||||
{
|
||||
Width = width;
|
||||
Height = height;
|
||||
BitsPerPixel = bpp;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Tell whether or not the video mode is supported
|
||||
/// </summary>
|
||||
/// <returns>True if the video mode is valid, false otherwise</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public bool IsValid()
|
||||
{
|
||||
return sfVideoMode_IsValid(this);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Get the list of all the supported fullscreen video modes
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public static VideoMode[] FullscreenModes
|
||||
{
|
||||
get
|
||||
{
|
||||
unsafe
|
||||
{
|
||||
uint Count;
|
||||
VideoMode* ModesPtr = sfVideoMode_GetFullscreenModes(out Count);
|
||||
VideoMode[] Modes = new VideoMode[Count];
|
||||
for (uint i = 0; i < Count; ++i)
|
||||
Modes[i] = ModesPtr[i];
|
||||
|
||||
return Modes;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Get the current desktop video mode
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public static VideoMode DesktopMode
|
||||
{
|
||||
get {return sfVideoMode_GetDesktopMode();}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Provide a string describing the object
|
||||
/// </summary>
|
||||
/// <returns>String description of the object</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override string ToString()
|
||||
{
|
||||
return "[VideoMode]" +
|
||||
" Width(" + Width + ")" +
|
||||
" Height(" + Height + ")" +
|
||||
" BitsPerPixel(" + BitsPerPixel + ")";
|
||||
}
|
||||
|
||||
/// <summary>Video mode width, in pixels</summary>
|
||||
public uint Width;
|
||||
|
||||
/// <summary>Video mode height, in pixels</summary>
|
||||
public uint Height;
|
||||
|
||||
/// <summary>Video mode depth, in bits per pixel</summary>
|
||||
public uint BitsPerPixel;
|
||||
|
||||
#region Imports
|
||||
[DllImport("csfml-window-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern VideoMode sfVideoMode_GetDesktopMode();
|
||||
|
||||
[DllImport("csfml-window-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
unsafe static extern VideoMode* sfVideoMode_GetFullscreenModes(out uint Count);
|
||||
|
||||
[DllImport("csfml-window-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern bool sfVideoMode_IsValid(VideoMode Mode);
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
}
|
@ -1,690 +0,0 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Collections.Generic;
|
||||
using System.Security;
|
||||
|
||||
namespace SFML
|
||||
{
|
||||
namespace Window
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Enumeration of window creation styles
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
[Flags]
|
||||
public enum Styles
|
||||
{
|
||||
/// <summary>No border / title bar (this flag and all others are mutually exclusive)</summary>
|
||||
None = 0,
|
||||
|
||||
/// <summary>Title bar + fixed border</summary>
|
||||
Titlebar = 1 << 0,
|
||||
|
||||
/// <summary>Titlebar + resizable border + maximize button</summary>
|
||||
Resize = 1 << 1,
|
||||
|
||||
/// <summary>Titlebar + close button</summary>
|
||||
Close = 1 << 2,
|
||||
|
||||
/// <summary>Fullscreen mode (this flag and all others are mutually exclusive))</summary>
|
||||
Fullscreen = 1 << 3,
|
||||
|
||||
/// <summary>Default window style (titlebar + resize + close)</summary>
|
||||
Default = Titlebar | Resize | Close
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Window is a rendering window ; it can create a new window
|
||||
/// or connect to an existing one
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public class Window : ObjectBase
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Create the window with default style and creation settings
|
||||
/// </summary>
|
||||
/// <param name="mode">Video mode to use</param>
|
||||
/// <param name="title">Title of the window</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public Window(VideoMode mode, string title) :
|
||||
this(mode, title, Styles.Default, new ContextSettings(0, 0))
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Create the window with default creation settings
|
||||
/// </summary>
|
||||
/// <param name="mode">Video mode to use</param>
|
||||
/// <param name="title">Title of the window</param>
|
||||
/// <param name="style">Window style (Resize | Close by default)</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public Window(VideoMode mode, string title, Styles style) :
|
||||
this(mode, title, style, new ContextSettings(0, 0))
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Create the window
|
||||
/// </summary>
|
||||
/// <param name="mode">Video mode to use</param>
|
||||
/// <param name="title">Title of the window</param>
|
||||
/// <param name="style">Window style (Resize | Close by default)</param>
|
||||
/// <param name="settings">Creation parameters</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public Window(VideoMode mode, string title, Styles style, ContextSettings settings) :
|
||||
base(sfWindow_Create(mode, title, style, ref settings))
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Create the window from an existing control with default creation settings
|
||||
/// </summary>
|
||||
/// <param name="handle">Platform-specific handle of the control</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public Window(IntPtr handle) :
|
||||
this(handle, new ContextSettings(0, 0))
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Create the window from an existing control
|
||||
/// </summary>
|
||||
/// <param name="Handle">Platform-specific handle of the control</param>
|
||||
/// <param name="settings">Creation parameters</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public Window(IntPtr Handle, ContextSettings settings) :
|
||||
base(sfWindow_CreateFromHandle(Handle, ref settings))
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Tell whether or not the window is opened (ie. has been created).
|
||||
/// Note that a hidden window (Show(false))
|
||||
/// will still return true
|
||||
/// </summary>
|
||||
/// <returns>True if the window is opened</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public virtual bool IsOpened()
|
||||
{
|
||||
return sfWindow_IsOpened(This);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Close (destroy) the window.
|
||||
/// The Window instance remains valid and you can call
|
||||
/// Create to recreate the window
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public virtual void Close()
|
||||
{
|
||||
sfWindow_Close(This);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Display the window on screen
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public virtual void Display()
|
||||
{
|
||||
sfWindow_Display(This);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Width of the rendering region of the window
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public virtual uint Width
|
||||
{
|
||||
get {return sfWindow_GetWidth(This);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Height of the rendering region of the window
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public virtual uint Height
|
||||
{
|
||||
get {return sfWindow_GetHeight(This);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Creation settings of the window
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public virtual ContextSettings Settings
|
||||
{
|
||||
get {return sfWindow_GetSettings(This);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Enable / disable vertical synchronization
|
||||
/// </summary>
|
||||
/// <param name="enable">True to enable v-sync, false to deactivate</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public virtual void EnableVerticalSync(bool enable)
|
||||
{
|
||||
sfWindow_EnableVerticalSync(This, enable);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Show or hide the mouse cursor
|
||||
/// </summary>
|
||||
/// <param name="show">True to show, false to hide</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public virtual void ShowMouseCursor(bool show)
|
||||
{
|
||||
sfWindow_ShowMouseCursor(This, show);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Change the position of the mouse cursor
|
||||
/// </summary>
|
||||
/// <param name="x">Left coordinate of the cursor, relative to the window</param>
|
||||
/// <param name="y">Top coordinate of the cursor, relative to the window</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public virtual void SetCursorPosition(uint x, uint y)
|
||||
{
|
||||
sfWindow_SetCursorPosition(This, x, y);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Get the position of the mouse cursor
|
||||
/// </summary>
|
||||
/// <returns>The current position of the mouse cursor, relative to the window</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public virtual Vector2i GetCursorPosition()
|
||||
{
|
||||
Vector2i position;
|
||||
sfWindow_GetCursorPosition(This, out position.X, out position.Y);
|
||||
return position;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Change the position of the window on screen.
|
||||
/// Only works for top-level windows
|
||||
/// </summary>
|
||||
/// <param name="x">Left position</param>
|
||||
/// <param name="y">Top position</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public virtual void SetPosition(int x, int y)
|
||||
{
|
||||
sfWindow_SetPosition(This, x, y);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Change the size of the rendering region of the window
|
||||
/// </summary>
|
||||
/// <param name="width">New width</param>
|
||||
/// <param name="height">New height</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public virtual void SetSize(uint width, uint height)
|
||||
{
|
||||
sfWindow_SetSize(This, width, height);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Change the title of the window
|
||||
/// </summary>
|
||||
/// <param name="title">New title</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public virtual void SetTitle(string title)
|
||||
{
|
||||
sfWindow_SetTitle(This, title);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Show or hide the window
|
||||
/// </summary>
|
||||
/// <param name="show">True to show, false to hide</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public virtual void Show(bool show)
|
||||
{
|
||||
sfWindow_Show(This, show);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Enable or disable automatic key-repeat.
|
||||
/// Automatic key-repeat is enabled by default
|
||||
/// </summary>
|
||||
/// <param name="enable">True to enable, false to disable</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public virtual void EnableKeyRepeat(bool enable)
|
||||
{
|
||||
sfWindow_EnableKeyRepeat(This, enable);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Change the window's icon
|
||||
/// </summary>
|
||||
/// <param name="width">Icon's width, in pixels</param>
|
||||
/// <param name="height">Icon's height, in pixels</param>
|
||||
/// <param name="pixels">Array of pixels, format must be RGBA 32 bits</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public virtual void SetIcon(uint width, uint height, byte[] pixels)
|
||||
{
|
||||
unsafe
|
||||
{
|
||||
fixed (byte* PixelsPtr = pixels)
|
||||
{
|
||||
sfWindow_SetIcon(This, width, height, PixelsPtr);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Activate the window as the current target
|
||||
/// for rendering
|
||||
/// </summary>
|
||||
/// <returns>True if operation was successful, false otherwise</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public virtual bool SetActive()
|
||||
{
|
||||
return SetActive(true);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Activate of deactivate the window as the current target
|
||||
/// for rendering
|
||||
/// </summary>
|
||||
/// <param name="active">True to activate, false to deactivate (true by default)</param>
|
||||
/// <returns>True if operation was successful, false otherwise</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public virtual bool SetActive(bool active)
|
||||
{
|
||||
return sfWindow_SetActive(This, active);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Limit the framerate to a maximum fixed frequency
|
||||
/// </summary>
|
||||
/// <param name="limit">Framerate limit, in frames per seconds (use 0 to disable limit)</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public virtual void SetFramerateLimit(uint limit)
|
||||
{
|
||||
sfWindow_SetFramerateLimit(This, limit);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Get time elapsed since last frame
|
||||
/// </summary>
|
||||
/// <returns>Time elapsed, in milliseconds</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public virtual uint GetFrameTime()
|
||||
{
|
||||
return sfWindow_GetFrameTime(This);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Change the joystick threshold, ie. the value below which
|
||||
/// no move event will be generated
|
||||
/// </summary>
|
||||
/// <param name="threshold">New threshold, in range [0, 100]</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
public virtual void SetJoystickThreshold(float threshold)
|
||||
{
|
||||
sfWindow_SetJoystickThreshold(This, threshold);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// OS-specific handle of the window
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public virtual IntPtr SystemHandle
|
||||
{
|
||||
get {return sfWindow_GetSystemHandle(This);}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Wait for a new event and dispatch it to the corresponding
|
||||
/// event handler
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void WaitAndDispatchEvents()
|
||||
{
|
||||
Event e;
|
||||
if (WaitEvent(out e))
|
||||
CallEventHandler(e);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Call the event handlers for each pending event
|
||||
/// </summary>
|
||||
////////////////////////////////////////////////////////////
|
||||
public void DispatchEvents()
|
||||
{
|
||||
Event e;
|
||||
while (PollEvent(out e))
|
||||
CallEventHandler(e);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Provide a string describing the object
|
||||
/// </summary>
|
||||
/// <returns>String description of the object</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
public override string ToString()
|
||||
{
|
||||
return "[Window]" +
|
||||
" Width(" + Width + ")" +
|
||||
" Height(" + Height + ")" +
|
||||
" Settings(" + Settings + ")";
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Constructor for derived classes
|
||||
/// </summary>
|
||||
/// <param name="thisPtr">Pointer to the internal object</param>
|
||||
/// <param name="dummy">Internal hack :)</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
protected Window(IntPtr thisPtr, int dummy) :
|
||||
base(thisPtr)
|
||||
{
|
||||
// TODO : find a cleaner way of separating this constructor from Window(IntPtr handle)
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Internal function to get the next event (non-blocking)
|
||||
/// </summary>
|
||||
/// <param name="eventToFill">Variable to fill with the raw pointer to the event structure</param>
|
||||
/// <returns>True if there was an event, false otherwise</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
protected virtual bool PollEvent(out Event eventToFill)
|
||||
{
|
||||
return sfWindow_PollEvent(This, out eventToFill);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Internal function to get the next event (blocking)
|
||||
/// </summary>
|
||||
/// <param name="eventToFill">Variable to fill with the raw pointer to the event structure</param>
|
||||
/// <returns>False if any error occured</returns>
|
||||
////////////////////////////////////////////////////////////
|
||||
protected virtual bool WaitEvent(out Event eventToFill)
|
||||
{
|
||||
return sfWindow_WaitEvent(This, out eventToFill);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Handle the destruction of the object
|
||||
/// </summary>
|
||||
/// <param name="disposing">Is the GC disposing the object, or is it an explicit call ?</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
protected override void Destroy(bool disposing)
|
||||
{
|
||||
sfWindow_Destroy(This);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// <summary>
|
||||
/// Call the event handler for the given event
|
||||
/// </summary>
|
||||
/// <param name="e">Event to dispatch</param>
|
||||
////////////////////////////////////////////////////////////
|
||||
private void CallEventHandler(Event e)
|
||||
{
|
||||
switch (e.Type)
|
||||
{
|
||||
case EventType.Closed :
|
||||
if (Closed != null)
|
||||
Closed(this, EventArgs.Empty);
|
||||
break;
|
||||
|
||||
case EventType.GainedFocus :
|
||||
if (GainedFocus != null)
|
||||
GainedFocus(this, EventArgs.Empty);
|
||||
break;
|
||||
|
||||
case EventType.JoystickButtonPressed:
|
||||
if (JoystickButtonPressed != null)
|
||||
JoystickButtonPressed(this, new JoystickButtonEventArgs(e.JoystickButton));
|
||||
break;
|
||||
|
||||
case EventType.JoystickButtonReleased :
|
||||
if (JoystickButtonReleased != null)
|
||||
JoystickButtonReleased(this, new JoystickButtonEventArgs(e.JoystickButton));
|
||||
break;
|
||||
|
||||
case EventType.JoystickMoved :
|
||||
if (JoystickMoved != null)
|
||||
JoystickMoved(this, new JoystickMoveEventArgs(e.JoystickMove));
|
||||
break;
|
||||
|
||||
case EventType.JoystickConnected:
|
||||
if (JoystickConnected != null)
|
||||
JoystickConnected(this, new JoystickConnectEventArgs(e.JoystickConnect));
|
||||
break;
|
||||
|
||||
case EventType.JoystickDisconnected:
|
||||
if (JoystickDisconnected != null)
|
||||
JoystickDisconnected(this, new JoystickConnectEventArgs(e.JoystickConnect));
|
||||
break;
|
||||
|
||||
case EventType.KeyPressed :
|
||||
if (KeyPressed != null)
|
||||
KeyPressed(this, new KeyEventArgs(e.Key));
|
||||
break;
|
||||
|
||||
case EventType.KeyReleased :
|
||||
if (KeyReleased != null)
|
||||
KeyReleased(this, new KeyEventArgs(e.Key));
|
||||
break;
|
||||
|
||||
case EventType.LostFocus :
|
||||
if (LostFocus != null)
|
||||
LostFocus(this, EventArgs.Empty);
|
||||
break;
|
||||
|
||||
case EventType.MouseButtonPressed :
|
||||
if (MouseButtonPressed != null)
|
||||
MouseButtonPressed(this, new MouseButtonEventArgs(e.MouseButton));
|
||||
break;
|
||||
|
||||
case EventType.MouseButtonReleased :
|
||||
if (MouseButtonReleased != null)
|
||||
MouseButtonReleased(this, new MouseButtonEventArgs(e.MouseButton));
|
||||
break;
|
||||
|
||||
case EventType.MouseEntered :
|
||||
if (MouseEntered != null)
|
||||
MouseEntered(this, EventArgs.Empty);
|
||||
break;
|
||||
|
||||
case EventType.MouseLeft :
|
||||
if (MouseLeft != null)
|
||||
MouseLeft(this, EventArgs.Empty);
|
||||
break;
|
||||
|
||||
case EventType.MouseMoved :
|
||||
if (MouseMoved != null)
|
||||
MouseMoved(this, new MouseMoveEventArgs(e.MouseMove));
|
||||
break;
|
||||
|
||||
case EventType.MouseWheelMoved :
|
||||
if (MouseWheelMoved != null)
|
||||
MouseWheelMoved(this, new MouseWheelEventArgs(e.MouseWheel));
|
||||
break;
|
||||
|
||||
case EventType.Resized :
|
||||
if (Resized != null)
|
||||
Resized(this, new SizeEventArgs(e.Size));
|
||||
break;
|
||||
|
||||
case EventType.TextEntered :
|
||||
if (TextEntered != null)
|
||||
TextEntered(this, new TextEventArgs(e.Text));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Event handler for the Closed event</summary>
|
||||
public event EventHandler Closed = null;
|
||||
|
||||
/// <summary>Event handler for the Resized event</summary>
|
||||
public event EventHandler<SizeEventArgs> Resized = null;
|
||||
|
||||
/// <summary>Event handler for the LostFocus event</summary>
|
||||
public event EventHandler LostFocus = null;
|
||||
|
||||
/// <summary>Event handler for the GainedFocus event</summary>
|
||||
public event EventHandler GainedFocus = null;
|
||||
|
||||
/// <summary>Event handler for the TextEntered event</summary>
|
||||
public event EventHandler<TextEventArgs> TextEntered = null;
|
||||
|
||||
/// <summary>Event handler for the KeyPressed event</summary>
|
||||
public event EventHandler<KeyEventArgs> KeyPressed = null;
|
||||
|
||||
/// <summary>Event handler for the KeyReleased event</summary>
|
||||
public event EventHandler<KeyEventArgs> KeyReleased = null;
|
||||
|
||||
/// <summary>Event handler for the MouseWheelMoved event</summary>
|
||||
public event EventHandler<MouseWheelEventArgs> MouseWheelMoved = null;
|
||||
|
||||
/// <summary>Event handler for the MouseButtonPressed event</summary>
|
||||
public event EventHandler<MouseButtonEventArgs> MouseButtonPressed = null;
|
||||
|
||||
/// <summary>Event handler for the MouseButtonReleased event</summary>
|
||||
public event EventHandler<MouseButtonEventArgs> MouseButtonReleased = null;
|
||||
|
||||
/// <summary>Event handler for the MouseMoved event</summary>
|
||||
public event EventHandler<MouseMoveEventArgs> MouseMoved = null;
|
||||
|
||||
/// <summary>Event handler for the MouseEntered event</summary>
|
||||
public event EventHandler MouseEntered = null;
|
||||
|
||||
/// <summary>Event handler for the MouseLeft event</summary>
|
||||
public event EventHandler MouseLeft = null;
|
||||
|
||||
/// <summary>Event handler for the JoystickButtonPressed event</summary>
|
||||
public event EventHandler<JoystickButtonEventArgs> JoystickButtonPressed = null;
|
||||
|
||||
/// <summary>Event handler for the JoystickButtonReleased event</summary>
|
||||
public event EventHandler<JoystickButtonEventArgs> JoystickButtonReleased = null;
|
||||
|
||||
/// <summary>Event handler for the JoystickMoved event</summary>
|
||||
public event EventHandler<JoystickMoveEventArgs> JoystickMoved = null;
|
||||
|
||||
/// <summary>Event handler for the JoystickConnected event</summary>
|
||||
public event EventHandler<JoystickConnectEventArgs> JoystickConnected = null;
|
||||
|
||||
/// <summary>Event handler for the JoystickDisconnected event</summary>
|
||||
public event EventHandler<JoystickConnectEventArgs> JoystickDisconnected = null;
|
||||
|
||||
#region Imports
|
||||
[DllImport("csfml-window-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern IntPtr sfWindow_Create(VideoMode Mode, string Title, Styles Style, ref ContextSettings Params);
|
||||
|
||||
[DllImport("csfml-window-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern IntPtr sfWindow_CreateFromHandle(IntPtr Handle, ref ContextSettings Params);
|
||||
|
||||
[DllImport("csfml-window-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfWindow_Destroy(IntPtr This);
|
||||
|
||||
[DllImport("csfml-window-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern bool sfWindow_IsOpened(IntPtr This);
|
||||
|
||||
[DllImport("csfml-window-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfWindow_Close(IntPtr This);
|
||||
|
||||
[DllImport("csfml-window-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern bool sfWindow_PollEvent(IntPtr This, out Event Evt);
|
||||
|
||||
[DllImport("csfml-window-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern bool sfWindow_WaitEvent(IntPtr This, out Event Evt);
|
||||
|
||||
[DllImport("csfml-window-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfWindow_Display(IntPtr This);
|
||||
|
||||
[DllImport("csfml-window-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern uint sfWindow_GetWidth(IntPtr This);
|
||||
|
||||
[DllImport("csfml-window-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern uint sfWindow_GetHeight(IntPtr This);
|
||||
|
||||
[DllImport("csfml-window-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern ContextSettings sfWindow_GetSettings(IntPtr This);
|
||||
|
||||
[DllImport("csfml-window-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfWindow_EnableVerticalSync(IntPtr This, bool Enable);
|
||||
|
||||
[DllImport("csfml-window-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfWindow_ShowMouseCursor(IntPtr This, bool Show);
|
||||
|
||||
[DllImport("csfml-window-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfWindow_SetCursorPosition(IntPtr This, uint X, uint Y);
|
||||
|
||||
[DllImport("csfml-window-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfWindow_GetCursorPosition(IntPtr This, out int X, out int Y);
|
||||
|
||||
[DllImport("csfml-window-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfWindow_SetPosition(IntPtr This, int X, int Y);
|
||||
|
||||
[DllImport("csfml-window-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfWindow_SetSize(IntPtr This, uint Width, uint Height);
|
||||
|
||||
[DllImport("csfml-window-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfWindow_SetTitle(IntPtr This, string title);
|
||||
|
||||
[DllImport("csfml-window-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfWindow_Show(IntPtr This, bool Show);
|
||||
|
||||
[DllImport("csfml-window-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfWindow_EnableKeyRepeat(IntPtr This, bool Enable);
|
||||
|
||||
[DllImport("csfml-window-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
unsafe static extern void sfWindow_SetIcon(IntPtr This, uint Width, uint Height, byte* Pixels);
|
||||
|
||||
[DllImport("csfml-window-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern bool sfWindow_SetActive(IntPtr This, bool Active);
|
||||
|
||||
[DllImport("csfml-window-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfWindow_SetFramerateLimit(IntPtr This, uint Limit);
|
||||
|
||||
[DllImport("csfml-window-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern uint sfWindow_GetFrameTime(IntPtr This);
|
||||
|
||||
[DllImport("csfml-window-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern void sfWindow_SetJoystickThreshold(IntPtr This, float Threshold);
|
||||
|
||||
[DllImport("csfml-window-2", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||
static extern IntPtr sfWindow_GetSystemHandle(IntPtr This);
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
}
|
@ -1,85 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>9.0.21022</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{D17DE83D-A592-461F-8AF2-53F9E22E1D0F}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>SFML.Window</RootNamespace>
|
||||
<AssemblyName>sfmlnet-window-2</AssemblyName>
|
||||
<StartupObject>
|
||||
</StartupObject>
|
||||
<FileUpgradeFlags>
|
||||
</FileUpgradeFlags>
|
||||
<OldToolsVersion>2.0</OldToolsVersion>
|
||||
<UpgradeBackupLocation>
|
||||
</UpgradeBackupLocation>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>..\..\lib\x86\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<DocumentationFile>..\..\doc\build\window-doc.xml</DocumentationFile>
|
||||
<DebugType>full</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
|
||||
<OutputPath>..\..\lib\x86\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<DocumentationFile>..\..\doc\build\window-doc.xml</DocumentationFile>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>..\..\lib\x64\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<DocumentationFile>..\..\doc\build\window-doc.xml</DocumentationFile>
|
||||
<DebugType>full</DebugType>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
|
||||
<OutputPath>..\..\lib\x64\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<DocumentationFile>..\..\doc\build\window-doc.xml</DocumentationFile>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
<ItemGroup>
|
||||
<Compile Include="ContextSettings.cs" />
|
||||
<Compile Include="Event.cs" />
|
||||
<Compile Include="EventArgs.cs" />
|
||||
<Compile Include="Joystick.cs" />
|
||||
<Compile Include="Keyboard.cs" />
|
||||
<Compile Include="LoadingFailedException.cs" />
|
||||
<Compile Include="Mouse.cs" />
|
||||
<Compile Include="ObjectBase.cs" />
|
||||
<Compile Include="Vector2.cs" />
|
||||
<Compile Include="VideoMode.cs" />
|
||||
<Compile Include="Window.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Properties\" />
|
||||
</ItemGroup>
|
||||
</Project>
|