protected override void Load(EntityGUI.GUIFactory factory) { this.particleProgram = this.Resourses.LoadAsset<ShaderProgram>("Sin.effect"); this.Panel.BackgroundColor = Color.Gray; this.Panel.MouseDown += new EventHandler<EntityGUI.MouseButtonEventArgs>(Panel_MouseDown); this.Panel.MouseMove +=new EventHandler<EntityGUI.MouseMoveEventArgs>(Panel_MouseMove); particleAtlas = this.Resourses.LoadAsset<TextureAtlas>("Atlases\\Particles.atlas"); this.systems = new ParticleSystem[10]; this.emiters = new Emiter2D[10]; this.Panel_MouseDown(null, null); }
void Panel_MouseDown(object sender, EntityGUI.MouseButtonEventArgs e) { for (int i = 0; i < 5; i++) { for (int j = 0; j < 2; j++) { Color c = Random.NextColor() * 0.5f; Color c2 = Random.NextColor(); ParticleSettings settings = new ParticleSettings(new Vector2(Random.Next(-30, 30), Random.Next(-30, 30)), c * 0.7f, c2, Color.Black * 0.5f, 0, Random.Next(30, 40), 3f, 0, 2, Random.Next(1, 2)); this.systems[i * 2 + j] = new ParticleSystem(this.GraphicsContext, 256 * 2, settings); double r = Random.NextDouble(); if (r > 0.66f) { SprayEmiter2D emiter = new SprayEmiter2D(100f, 200f, 0, (float)(Random.NextDouble() * Math.PI), new Vector2(this.Width / 5 * i + 150, this.Height / 2 * j + 150), this.particleAtlas.ToArray(), systems[i * 2 + j]); emiter.EmitInterval = TimeSpan.FromSeconds(1d / 64); emiter.EmitCount = 2; this.emiters[i * 2 + j] = emiter; } else if (r > 0.33d) { BeeEmiter2D emiter = new BeeEmiter2D(new Vector2(this.Width / 5 * i + 150, this.Height / 2 * j + 150), new Frame[] { particleAtlas["Cloud002"], particleAtlas["Flame"], particleAtlas["Cloud004"] }, systems[i * 2 + j]); emiter.EmitInterval = TimeSpan.FromSeconds(1d / 64); emiter.EmitCount = 4; this.emiters[i * 2 + j] = emiter; } else { CircleEmiter2D emiter = new CircleEmiter2D(50, 75, new Vector2(this.Width / 5 * i + 150, this.Height / 2 * j + 150), this.particleAtlas.ToArray(), systems[i * 2 + j]); emiter.EmitInterval = TimeSpan.FromSeconds(1d / 32); emiter.EmitCount = 8; this.emiters[i * 2 + j] = emiter; } } } }
protected override void Load(EntityGUI.GUIFactory factory) { //Note: Animations currently have no associated file format so //we build them manually in code. //Loads two atlases that will be the basis for our animations. var webIconsAtlas = this.Resourses.LoadAsset<TextureAtlas>("Atlases\\WebIcons.atlas"); var osIconsAtlas = this.Resourses.LoadAsset<TextureAtlas>("Atlases\\OsIcons.atlas"); //Converts the atlases to arrays of frames. var anim0Frames = webIconsAtlas.Select((x) => x.Value).ToArray(); var anim1Frames = osIconsAtlas.Select((x) => x.Value).ToArray(); //Creates two animations from the animation frames. Animation anim0 = new Animation(anim0Frames, 5); Animation anim1 = new Animation(anim1Frames, 3); //Creates an animationbox with the anim0 animation. AnimationBox box0 = new AnimationBox(anim0); box0.Position = new OpenTK.Vector2(50, 50); box0.Size = new OpenTK.Vector2(256, 256); box0.BackgroundColor = Color.Purple * 0.1f; this.Panel.AddControl(box0); //Creates a second animationbox with the anim0 animation. //It should be noted that the animationbox clones the animation //so you can use the same animation on multiple boxes. AnimationBox box1 = new AnimationBox(anim0); box1.Position = new OpenTK.Vector2(50, box0.Bounds.Bottom + 50); box1.Size = new OpenTK.Vector2(256, 256); box1.BackgroundColor = Color.Yellow * 0.1f; this.Panel.AddControl(box1); AnimationBox box2 = new AnimationBox(anim1); box2.Position = new OpenTK.Vector2(this.Width - 50, 50); box2.Size = new OpenTK.Vector2(256, 256); box2.BackgroundColor = Color.Green * 0.1f; //Put the origin to the right to simplify placement. box2.Origin = Origin.TopRight; this.Panel.AddControl(box2); }
protected override void Load(EntityGUI.GUIFactory factory) { //An atlas is a large image containing lots of smaller images. var webIcons = this.Resourses.LoadAsset<TextureAtlas>("Atlases\\WebIcons.atlas"); var font = this.Resourses.LoadAsset<Font>("Fonts\\Metro.fnt"); var bg = this.Resourses.LoadAsset<Texture2D>("Backgrounds\\Rainbow-Colors-Wallpaper-wallpapers-28469135-2560-1600.jpg"); this.Panel.BackgroundImage = new Frame(bg.Bounds, bg); //this.Resize += () => this.Panel.Size = new OpenTK.Vector2(500, 500); int i = 0; foreach (var icon in webIcons) { //An image box is simply a rectangle that has an image on it. ImageBox box = new ImageBox(icon.Value); box.Position = new OpenTK.Vector2(128 + 130 * i,this.Height / 2 - 128); box.Size = new OpenTK.Vector2(128, 128); box.BackgroundColor = Color.Blue * 0.3f; box.FocusIndex = i; //Drawing the image box from a center position. box.Origin = Origin.Center; box.Name = icon.Key + 1; //Registers to events on the image box. box.FocusGained += EnlargeButton; box.FocusLost += ShrinkButton; //Lambda that writes what image box was pressed. box.Clicked += (s, e) => Console.WriteLine("WebIcon " + box.Name + " was just pressed"); this.Panel.AddControl(box); //Standard button Button button = new Button(font, "Button " + i); button.Position = new OpenTK.Vector2(box.Position.X, box.Position.Y + 130); button.Size = new OpenTK.Vector2(128, 128); button.BackgroundColor = Color.Red * 0.5f; button.Origin = Origin.Center; button.Icon = icon.Value; button.FocusIndex = 20 + i; button.FocusGained += EnlargeButton; button.FocusLost += ShrinkButton; //Lambda that writes what button was pressed. button.Clicked += (s, e) => Console.WriteLine(button.Text + " was just pressed"); this.Panel.AddControl(button); ImageBox box2 = new ImageBox(icon.Value); box2.Position = new OpenTK.Vector2(button.Position.X, button.Position.Y + 130); box2.Size = new OpenTK.Vector2(128, 128); box2.BackgroundColor = Color.Purple * 0.3f; box2.Origin = Origin.Center; box2.Name = icon.Key + 2; box2.FocusIndex = 40 + i; box2.FocusGained += EnlargeButton; box2.FocusLost += ShrinkButton; box2.Clicked += (s, e) => Console.WriteLine("WebIcon " + box2.Name + " was just pressed"); this.Panel.AddControl(box2); i++; } }
void Panel_MouseMove(object sender, EntityGUI.MouseMoveEventArgs e) { emiters[0].Position = e.Position; }
protected override void Load(EntityGUI.GUIFactory factory) { var font = this.Resourses.LoadAsset<Font>("Fonts\\Metro.fnt"); var bigfont = this.Resourses.LoadAsset<Font>("Fonts\\BigMetro.fnt"); this.Panel.BackgroundColor = Color.Black; //Creates a textbox with maxlength 20 TextBox textBox0 = new TextBox(font, "", 20); textBox0.Position = new OpenTK.Vector2(50, 50); //It should be noted that a textbox height is always font.size + padding.y + padding.h since it would //i did it this way since a textbox of any other height would look bad. textBox0.Size = new OpenTK.Vector2(200, 20); //A hint is displayed if the textbox is empty. textBox0.Hint = "20 char text field!"; this.Panel.AddControl(textBox0); //Creates a textbox with unlimited length. TextBox textBox1 = new TextBox(font, ""); textBox1.BackgroundColor = Color.White; textBox1.TextColor = Color.Red; textBox1.Position = new OpenTK.Vector2(50, textBox0.Bounds.Bottom + 10); textBox1.Size = new OpenTK.Vector2(200, 20); textBox1.Hint = "Unlimited textbox."; this.Panel.AddControl(textBox1); //Creates a textbox with custom colors. TextBox textBox2 = new TextBox(font, ""); textBox2.BackgroundColor = Color.Green; textBox2.TextColor = Color.Gold; textBox2.SelectedColor = Color.Red; textBox2.HintColor = Color.RosyBrown; textBox2.Position = new OpenTK.Vector2(50, textBox1.Bounds.Bottom + 10); textBox2.Size = new OpenTK.Vector2(200, 20); textBox2.Hint = "Unlimited textbox 2."; this.Panel.AddControl(textBox2); TextBox textBox3 = new TextBox(bigfont, "", 20); textBox3.Position = new OpenTK.Vector2(50, textBox2.Bounds.Bottom + 10); textBox3.Size = new OpenTK.Vector2(300, 20); textBox3.Hint = "Unlimited textbox 2."; this.Panel.AddControl(textBox3); //Create a numberbox startvalue 100 min 0 max 255 NumberBox numberBox0 = new NumberBox(font, 100, byte.MinValue, byte.MaxValue); numberBox0.Position = new OpenTK.Vector2(50, textBox3.Bounds.Bottom + 10); numberBox0.Size = new OpenTK.Vector2(200, 20); this.Panel.AddControl(numberBox0); TextArea area = new TextArea(font); area.Position = new OpenTK.Vector2(textBox3.Bounds.Right + 20, 50); area.Size = new OpenTK.Vector2(400, 300); area.Text = "This is a text area! This is not fully implemented! Yes true it is."; this.Panel.AddControl(area); ListBox<int> numbers = new ListBox<int>(font); numbers.Position = new OpenTK.Vector2(area.Bounds.Right + 20, 50); numbers.Size = new OpenTK.Vector2(400, 300); for (int i = 0; i < 20; i++) { numbers.AddItem(i); } this.Panel.AddControl(numbers); }