private Scene LoadFlightTest() { var scene = new Scene(new Vector2f(Int16.MaxValue * 2, 768)); scene.CreateCamera(); var player = ObjectsManager.Build((uint)ObjectID.Player, new Vector2f(256, 300)); scene.Add(player); for (var x = 0; x < scene.Size.X; x += 512) { var upperWall = ObjectsManager.Build((uint)ObjectID.Wall, new Vector2f(x, 0)); var bottomWall = ObjectsManager.Build((uint)ObjectID.Wall, new Vector2f(x, scene.Size.Y - 128)); scene.Add(upperWall); scene.Add(bottomWall); } for (var x = 500; x < 2000; x += 256) { scene.Add(ObjectsManager.Build((uint)ObjectID.GreenShip, new Vector2f(x, 128 + 64))); scene.Add(ObjectsManager.Build((uint)ObjectID.GreenShip, new Vector2f(x, scene.Size.Y - 64 - 256))); } scene.Commit(); return(PrepareScene(scene)); }
private void SpawnLaser(IGameObject turret, Scene world, Vector2f laserSpeed) { var gunPosition = turret.Body.Incircle.Radius * turret.Body.Rotation.Normalize(); var shotPosition = turret.Body.Incircle.Center + gunPosition; var laser = ObjectsManager.Build((uint)ObjectID.Laser, shotPosition); var laserScript = new LaserScript(laserSpeed, ObjectID.Turret); laser.BindScript(laserScript); laser.Lighting.Add(new Light(new Vector2f(0.1f, 0.1f), Color.Magenta, LightMode.Flashlight)); world.Add(laser); }
private void SpawnLaser(IGameObject ship, Scene world) { var gunsPosition = ship.Body.Rotation; var sideOffset = gunsPosition.Orthogonal() * (leftGunIsShooting ? 1 : -1) * selfSpriteSize / 4; var laserOffset = new Vector2f(laserSpriteSize, laserSpriteSize) / 2; gunsPosition *= selfSpriteSize / 4; var shotPosition = ship.Body.Incircle.Center + gunsPosition + sideOffset - laserOffset; var laser = ObjectsManager.Build((uint)ObjectID.Laser, shotPosition); var laserScript = new LaserScript(ship.Body.Rotation * laserSpeed, ObjectID.Player); laser.BindScript(laserScript); laser.Lighting.Add(new Light(new Vector2f(0.1f, 0.1f), Color.Magenta, LightMode.Flashlight)); leftGunIsShooting = !leftGunIsShooting; world.Add(laser); }
private void FillSceneControlPanel(Panel sceneControlPanel) { objectsList = new ListBox() { Size = new Size(sidePanelWidth - 40, 150) }; objectsList.Location = new Point(20, 20); foreach (var item in ObjectsManager.Registered) { objectsList.Items.Add(Tuple.Create(item.Value, item.Key)); } objectData = new Label() { Size = new Size(sidePanelWidth - 40, 200) }; objectData.Location = new Point(objectsList.Location.X, objectsList.Location.Y + 200); var addButton = new Button() { Text = "Add", Location = new Point(20, 170) }; addButton.Click += (sender, args) => { var nameId = (Tuple <string, uint>)objectsList.SelectedItem; if (nameId != null) { try { var id = nameId.Item2; var obj = ObjectsManager.Build(id, sceneEditor.Scene.Camera.Body.Position); sceneEditor.Scene.Add(obj); sceneEditor.Scene.Commit(); } catch { MessageBox.Show("Cannot add object.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }; var createButton = new Button() { Location = new Point(100, 170), Text = "Create" }; createButton.Click += (sender, args) => { objectEditor.CreateNewObject(); SwitchMode(EditorMode.EditObject); }; var removeButton = new Button() { Location = new Point(120, 450), Text = "Remove" }; removeButton.Click += (sender, args) => { if (sceneEditor.GrippedObject != null) { sceneEditor.Scene.Remove(sceneEditor.GrippedObject); sceneEditor.Scene.Commit(); sceneEditor.CleanHands(); } }; sceneControlPanel.Controls.Add(objectsList); sceneControlPanel.Controls.Add(objectData); sceneControlPanel.Controls.Add(addButton); sceneControlPanel.Controls.Add(removeButton); sceneControlPanel.Controls.Add(createButton); }