2
0
mirror of https://github.com/raylib-cs/raylib-cs synced 2025-09-09 03:01:41 -04:00

Back to unsafe

- Fixed array issue means we have to use unsafe in a few parts for now.
- Testing rayforms in bindings
This commit is contained in:
2018-10-12 20:42:51 +01:00
parent 74bc806bb2
commit e51ebc7edf
8 changed files with 262 additions and 279 deletions

View File

@@ -1,14 +1,16 @@
using System;
using System.Drawing;
using System.Runtime.InteropServices;
using System.Threading;
using System.Windows.Forms;
using static Raylib.Raylib;
namespace Raylib
{
class RayForm : Form
public partial class RayForms : Form
{
private Panel panel;
private Panel gamePanel;
private bool windowAttached = false;
#region WinAPI Entry Points
@@ -21,38 +23,80 @@ namespace Raylib
#endregion
public RayForms()
{
Size = new Size(1024, 700);
Text = "Rayforms";
gamePanel = new Panel();
gamePanel.Size = new Size(800, 500);
gamePanel.Location = new Point(50, 50);
Button button = new Button();
button.Text = "Attach window";
button.Size = new Size(150, 20);
button.Location = new Point(
(Size.Width / 2) - (button.Size.Width / 2),
gamePanel.Location.Y + gamePanel.Size.Height + 10
);
button.Click += new EventHandler(ClickedButton);
Controls.Add(button);
Controls.Add(gamePanel);
}
private void ClickedButton(object sender, EventArgs e)
{
if (!windowAttached)
{
// new Thread(Test).Start();
Test();
}
}
private void Test()
{
SetConfigFlags((int)Flag.WINDOW_UNDECORATED);
InitWindow(800, 480, "Rayforms test");
SetTargetFPS(60);
IntPtr winHandle = GetWindowHandle();
Invoke(new Action(() =>
{
SetWindowPos(winHandle, Handle, 0, 0, 0, 0, 0x0401 /*NOSIZE | SHOWWINDOW */);
SetParent(winHandle, gamePanel.Handle);
ShowWindow(winHandle, 1);
windowAttached = true;
}));
// Main game loop
while (!WindowShouldClose()) // Detect window close button or ESC key
{
// Update
//----------------------------------------------------------------------------------
// TODO: Update your variables here
//----------------------------------------------------------------------------------
// Draw
//----------------------------------------------------------------------------------
BeginDrawing();
ClearBackground(RAYWHITE);
DrawText("Congrats! You created your first window!", 190, 200, 20, MAROON);
DrawText(GetFrameTime().ToString(), 100, 10, 15, MAROON);
DrawFPS(10, 10);
EndDrawing();
//----------------------------------------------------------------------------------
}
CloseWindow();
}
public static void Run()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new RayForm());
}
public RayForm()
{
panel = new Panel();
panel.Size = new Size(640, 480);
panel.Location = new Point(80, 10);
panel.BackColor = System.Drawing.Color.Red;
Controls.Add(panel);
}
private void InitializeComponent()
{
this.SuspendLayout();
//
// DrawControl
//
this.ClientSize = new System.Drawing.Size(284, 261);
this.Name = "DrawControl";
this.Load += new System.EventHandler(this.DrawControl_Load);
this.ResumeLayout(false);
}
private void DrawControl_Load(object sender, EventArgs e)
{
Application.Run(new RayForms());
}
}
}