public override void Perform(Ship obj) { var body = obj.GameObj.GetComponent <RigidBody>(); if (body == null) { body = obj.GameObj.AddComponent <RigidBody>(); body.IgnoreGravity = true; body.BodyType = BodyType.Dynamic; body.IgnoreGravity = true; body.LinearDamping = 0.9f; body.AngularDamping = 0.9f; } foreach (var renderer in obj.GameObj.GetComponentsInChildren <AdvSpriteRenderer>().Where(r => r.GameObj.GetComponent <Hull>() != null)) { var shape = renderer.Sprite.Res?.Shape; var xform = renderer.GameObj.Transform; switch (shape) { case null: continue; case PolyShapeInfo poly: shape = ShipLoader.CloneAndTransformShape(poly, xform, renderer.Sprite.Res.UVRect.Size, renderer.FlipMode); break; case CircleShapeInfo circle: shape = ShipLoader.CloneAndTransformShape(circle, xform, renderer.Sprite.Res.UVRect.Size, renderer.FlipMode); break; } body.AddShape(shape); } }
private void InitMenuItems(MainForm main) { MenuModelItem viewItem = main.MainMenu.RequestItem(GeneralRes.MenuName_View); viewItem.AddItem(new MenuModelItem { Name = "Sprite Viewer", ActionHandler = (o, e) => RequestSpriteEditorView() }); viewItem.AddItem(new MenuModelItem { Name = "Librocket Debugger", ActionHandler = (o, e) => LibRocketNet.Core.DebugMode = !LibRocketNet.Core.DebugMode }); var spriteMenu = new MenuModelItem { Name = "Sprite" }; main.MainMenu.AddItem(spriteMenu); spriteMenu.AddItem(new MenuModelItem { Name = "Mirror Y", ActionHandler = (o, e) => SpriteOperations.MirrorY(), ShortcutKeys = Keys.Control | Keys.M }); spriteMenu.AddItem(new MenuModelItem { Name = "Increase Depth", ActionHandler = (o, e) => SpriteOperations.ChangeDepth(+1), ShortcutKeys = Keys.Control | Keys.PageDown }); spriteMenu.AddItem(new MenuModelItem { Name = "Decrease Depth", ActionHandler = (o, e) => SpriteOperations.ChangeDepth(-1), ShortcutKeys = Keys.Control | Keys.PageUp }); var shipMenu = new MenuModelItem { Name = "Ship" }; main.MainMenu.AddItem(shipMenu); shipMenu.AddItem(new MenuModelItem { Name = "Load ship from CSV...", ActionHandler = (o, e) => ShipLoader.LoadShip() }); shipMenu.AddItem(new MenuModelItem { Name = "Show Thrusters as Active", Checkable = true, Checked = false, ActionHandler = (o, e) => Components.Ships.Thruster.Editor_ShowAsThrusting = ((MenuModelItem)o).Checked }); }