How to stop the mouse cursor from moving with the camera
when i click the screen with mouse my sprite move to this position but when camera move the mouse cursor move with her and the sprite go to wrong position.
how i fix that when my camera move my mouse stay in right position?
I tried to change the position of the mouse accordingly and change the location of the camera but I still can not seem to perform it
thank's
using System;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using XELibrary;
using Comora;
namespace gameTest
{
public class PlayingState
{
public SpriteBatch SpriteBatch { get; private set; }
public Vector2 playerPosition = new Vector2(100, 100);
private Vector2 velocity = new Vector2(200.0f, 0.0f);
private DirectionType direction = DirectionType.Right;
public Rectangle spriteRectangle;
private int health;
private int radius;
private string playerKey;
MouseState mState;
MouseState oldmState;
Vector2 current_mouse_pos = new Vector2(0, 0);
Vector2 cursor_mouse_pos;
private Camera camera;
// BACKGROUND
Texture2D backgroundtexture;
Vector2 backgroundPosition;
Texture2D mouse_Sprite;
SpriteFont gameFont;
IScrollingBackgroundManager scrollingBackgroundManager;
ICelAnimationManager celAnimationManager;
ISoundManager soundManager;
// ---------- GETTERS AND SETTERS ----------
public float HealthTimer { get { return healthTimer; } set {
healthTimer = value; } }
public int Radius { get { return radius; } }
public int Health { get { return health; } set { health = value; } }
public Vector2 PlayerPosition { get { return playerPosition; } set {
playerPosition = value; } }
public void SetX(float newX) { playerPosition.X = newX; }
public void SetY(float newY) { playerPosition.Y = newY; }
// ---------- C O N S T R U C T O R ----------
public PlayingState(Game game) : base(game)
{
game.Services.AddService(typeof(IPlayingState), this);
scrollingBackgroundManager = (IScrollingBackgroundManager)game.Services.GetService(typeof(IScrollingBackgroundManager));
celAnimationManager = (ICelAnimationManager)game.Services.GetService(typeof(ICelAnimationManager));
soundManager = (ISoundManager)game.Services.GetService(typeof(ISoundManager));
playerKey = "playerPauseDown";
}
// ---------- I N I T I A L I Z E ----------
public override void Initialize()
{
this.camera = new Camera(this.GraphicsDevice);
base.Initialize();
}
// ---------- L O A D - C O N T E N T ----------
protected override void LoadContent()
{
**here i load my animation sprites**
}
// ---------- U P D A T E ----------
public override void Update(GameTime gameTime)
{
KeyboardState kState = Keyboard.GetState();
float dt = (float)gameTime.ElapsedGameTime.TotalSeconds;
if (healthTimer > 0) { HealthTimer -= dt; }
foreach (Enemy en in Enemy.enemies)
{
en.Update(gameTime, PlayerPosition);
}
Enemy.enemies.RemoveAll(e => e.Health <= 0);
// handleInput(gameTime);
handleInputMouse(gameTime);
playerWalkToMouse();
this.camera.Update(gameTime);
this.camera.Position = playerPosition;
base.Update(gameTime);
}
// ---------- M O U S E ----------
private void handleInputMouse(GameTime gameTime)
{
/*
MouseState mStateHandle = Mouse.GetState(); ;
if (mStateHandle.LeftButton == ButtonState.Pressed)
current_mouse_pos = new Vector2(mStateHandle.X, mStateHandle.Y);
if (current_mouse_pos.X > PlayerPosition.X)
playerKey = "playerWalkRight";
else if (current_mouse_pos.X < PlayerPosition.X)
playerKey = "playerWalkLeft";
else if (current_mouse_pos.Y < PlayerPosition.Y)
playerKey = "playerWalkUp";
else if (current_mouse_pos.Y > PlayerPosition.Y)
playerKey = "playerWalkDown";
else
playerKey = "playerPauseDown";
*/
if (mState.LeftButton == ButtonState.Pressed)
current_mouse_pos = new Vector2(mState.X, mState.Y);
if (current_mouse_pos.X > PlayerPosition.X)
playerKey = "playerWalkRight";
else if (current_mouse_pos.X < PlayerPosition.X)
playerKey = "playerWalkLeft";
else if (current_mouse_pos.Y < PlayerPosition.Y)
playerKey = "playerWalkUp";
else if (current_mouse_pos.Y > PlayerPosition.Y)
playerKey = "playerWalkDown";
else
playerKey = "playerPauseDown";
}
// ---------- D R A W ----------
public override void Draw(GameTime gameTime)
{
SpriteBatch.Begin(this.camera);
SpriteBatch.Draw(backgroundtexture, backgroundPosition, Color.White);
celAnimationManager.Draw(gameTime, playerKey, OurGame.SpriteBatch, PlayerPosition, SpriteEffects.None);
Vector2 cursorPos = new Vector2(Mouse.GetState().X, Mouse.GetState().Y);
SpriteBatch.Draw(mouse_Sprite, cursorPos, Color.White);
SpriteBatch.End();
base.Draw(gameTime);
}
c# monogame
add a comment |
when i click the screen with mouse my sprite move to this position but when camera move the mouse cursor move with her and the sprite go to wrong position.
how i fix that when my camera move my mouse stay in right position?
I tried to change the position of the mouse accordingly and change the location of the camera but I still can not seem to perform it
thank's
using System;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using XELibrary;
using Comora;
namespace gameTest
{
public class PlayingState
{
public SpriteBatch SpriteBatch { get; private set; }
public Vector2 playerPosition = new Vector2(100, 100);
private Vector2 velocity = new Vector2(200.0f, 0.0f);
private DirectionType direction = DirectionType.Right;
public Rectangle spriteRectangle;
private int health;
private int radius;
private string playerKey;
MouseState mState;
MouseState oldmState;
Vector2 current_mouse_pos = new Vector2(0, 0);
Vector2 cursor_mouse_pos;
private Camera camera;
// BACKGROUND
Texture2D backgroundtexture;
Vector2 backgroundPosition;
Texture2D mouse_Sprite;
SpriteFont gameFont;
IScrollingBackgroundManager scrollingBackgroundManager;
ICelAnimationManager celAnimationManager;
ISoundManager soundManager;
// ---------- GETTERS AND SETTERS ----------
public float HealthTimer { get { return healthTimer; } set {
healthTimer = value; } }
public int Radius { get { return radius; } }
public int Health { get { return health; } set { health = value; } }
public Vector2 PlayerPosition { get { return playerPosition; } set {
playerPosition = value; } }
public void SetX(float newX) { playerPosition.X = newX; }
public void SetY(float newY) { playerPosition.Y = newY; }
// ---------- C O N S T R U C T O R ----------
public PlayingState(Game game) : base(game)
{
game.Services.AddService(typeof(IPlayingState), this);
scrollingBackgroundManager = (IScrollingBackgroundManager)game.Services.GetService(typeof(IScrollingBackgroundManager));
celAnimationManager = (ICelAnimationManager)game.Services.GetService(typeof(ICelAnimationManager));
soundManager = (ISoundManager)game.Services.GetService(typeof(ISoundManager));
playerKey = "playerPauseDown";
}
// ---------- I N I T I A L I Z E ----------
public override void Initialize()
{
this.camera = new Camera(this.GraphicsDevice);
base.Initialize();
}
// ---------- L O A D - C O N T E N T ----------
protected override void LoadContent()
{
**here i load my animation sprites**
}
// ---------- U P D A T E ----------
public override void Update(GameTime gameTime)
{
KeyboardState kState = Keyboard.GetState();
float dt = (float)gameTime.ElapsedGameTime.TotalSeconds;
if (healthTimer > 0) { HealthTimer -= dt; }
foreach (Enemy en in Enemy.enemies)
{
en.Update(gameTime, PlayerPosition);
}
Enemy.enemies.RemoveAll(e => e.Health <= 0);
// handleInput(gameTime);
handleInputMouse(gameTime);
playerWalkToMouse();
this.camera.Update(gameTime);
this.camera.Position = playerPosition;
base.Update(gameTime);
}
// ---------- M O U S E ----------
private void handleInputMouse(GameTime gameTime)
{
/*
MouseState mStateHandle = Mouse.GetState(); ;
if (mStateHandle.LeftButton == ButtonState.Pressed)
current_mouse_pos = new Vector2(mStateHandle.X, mStateHandle.Y);
if (current_mouse_pos.X > PlayerPosition.X)
playerKey = "playerWalkRight";
else if (current_mouse_pos.X < PlayerPosition.X)
playerKey = "playerWalkLeft";
else if (current_mouse_pos.Y < PlayerPosition.Y)
playerKey = "playerWalkUp";
else if (current_mouse_pos.Y > PlayerPosition.Y)
playerKey = "playerWalkDown";
else
playerKey = "playerPauseDown";
*/
if (mState.LeftButton == ButtonState.Pressed)
current_mouse_pos = new Vector2(mState.X, mState.Y);
if (current_mouse_pos.X > PlayerPosition.X)
playerKey = "playerWalkRight";
else if (current_mouse_pos.X < PlayerPosition.X)
playerKey = "playerWalkLeft";
else if (current_mouse_pos.Y < PlayerPosition.Y)
playerKey = "playerWalkUp";
else if (current_mouse_pos.Y > PlayerPosition.Y)
playerKey = "playerWalkDown";
else
playerKey = "playerPauseDown";
}
// ---------- D R A W ----------
public override void Draw(GameTime gameTime)
{
SpriteBatch.Begin(this.camera);
SpriteBatch.Draw(backgroundtexture, backgroundPosition, Color.White);
celAnimationManager.Draw(gameTime, playerKey, OurGame.SpriteBatch, PlayerPosition, SpriteEffects.None);
Vector2 cursorPos = new Vector2(Mouse.GetState().X, Mouse.GetState().Y);
SpriteBatch.Draw(mouse_Sprite, cursorPos, Color.White);
SpriteBatch.End();
base.Draw(gameTime);
}
c# monogame
add a comment |
when i click the screen with mouse my sprite move to this position but when camera move the mouse cursor move with her and the sprite go to wrong position.
how i fix that when my camera move my mouse stay in right position?
I tried to change the position of the mouse accordingly and change the location of the camera but I still can not seem to perform it
thank's
using System;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using XELibrary;
using Comora;
namespace gameTest
{
public class PlayingState
{
public SpriteBatch SpriteBatch { get; private set; }
public Vector2 playerPosition = new Vector2(100, 100);
private Vector2 velocity = new Vector2(200.0f, 0.0f);
private DirectionType direction = DirectionType.Right;
public Rectangle spriteRectangle;
private int health;
private int radius;
private string playerKey;
MouseState mState;
MouseState oldmState;
Vector2 current_mouse_pos = new Vector2(0, 0);
Vector2 cursor_mouse_pos;
private Camera camera;
// BACKGROUND
Texture2D backgroundtexture;
Vector2 backgroundPosition;
Texture2D mouse_Sprite;
SpriteFont gameFont;
IScrollingBackgroundManager scrollingBackgroundManager;
ICelAnimationManager celAnimationManager;
ISoundManager soundManager;
// ---------- GETTERS AND SETTERS ----------
public float HealthTimer { get { return healthTimer; } set {
healthTimer = value; } }
public int Radius { get { return radius; } }
public int Health { get { return health; } set { health = value; } }
public Vector2 PlayerPosition { get { return playerPosition; } set {
playerPosition = value; } }
public void SetX(float newX) { playerPosition.X = newX; }
public void SetY(float newY) { playerPosition.Y = newY; }
// ---------- C O N S T R U C T O R ----------
public PlayingState(Game game) : base(game)
{
game.Services.AddService(typeof(IPlayingState), this);
scrollingBackgroundManager = (IScrollingBackgroundManager)game.Services.GetService(typeof(IScrollingBackgroundManager));
celAnimationManager = (ICelAnimationManager)game.Services.GetService(typeof(ICelAnimationManager));
soundManager = (ISoundManager)game.Services.GetService(typeof(ISoundManager));
playerKey = "playerPauseDown";
}
// ---------- I N I T I A L I Z E ----------
public override void Initialize()
{
this.camera = new Camera(this.GraphicsDevice);
base.Initialize();
}
// ---------- L O A D - C O N T E N T ----------
protected override void LoadContent()
{
**here i load my animation sprites**
}
// ---------- U P D A T E ----------
public override void Update(GameTime gameTime)
{
KeyboardState kState = Keyboard.GetState();
float dt = (float)gameTime.ElapsedGameTime.TotalSeconds;
if (healthTimer > 0) { HealthTimer -= dt; }
foreach (Enemy en in Enemy.enemies)
{
en.Update(gameTime, PlayerPosition);
}
Enemy.enemies.RemoveAll(e => e.Health <= 0);
// handleInput(gameTime);
handleInputMouse(gameTime);
playerWalkToMouse();
this.camera.Update(gameTime);
this.camera.Position = playerPosition;
base.Update(gameTime);
}
// ---------- M O U S E ----------
private void handleInputMouse(GameTime gameTime)
{
/*
MouseState mStateHandle = Mouse.GetState(); ;
if (mStateHandle.LeftButton == ButtonState.Pressed)
current_mouse_pos = new Vector2(mStateHandle.X, mStateHandle.Y);
if (current_mouse_pos.X > PlayerPosition.X)
playerKey = "playerWalkRight";
else if (current_mouse_pos.X < PlayerPosition.X)
playerKey = "playerWalkLeft";
else if (current_mouse_pos.Y < PlayerPosition.Y)
playerKey = "playerWalkUp";
else if (current_mouse_pos.Y > PlayerPosition.Y)
playerKey = "playerWalkDown";
else
playerKey = "playerPauseDown";
*/
if (mState.LeftButton == ButtonState.Pressed)
current_mouse_pos = new Vector2(mState.X, mState.Y);
if (current_mouse_pos.X > PlayerPosition.X)
playerKey = "playerWalkRight";
else if (current_mouse_pos.X < PlayerPosition.X)
playerKey = "playerWalkLeft";
else if (current_mouse_pos.Y < PlayerPosition.Y)
playerKey = "playerWalkUp";
else if (current_mouse_pos.Y > PlayerPosition.Y)
playerKey = "playerWalkDown";
else
playerKey = "playerPauseDown";
}
// ---------- D R A W ----------
public override void Draw(GameTime gameTime)
{
SpriteBatch.Begin(this.camera);
SpriteBatch.Draw(backgroundtexture, backgroundPosition, Color.White);
celAnimationManager.Draw(gameTime, playerKey, OurGame.SpriteBatch, PlayerPosition, SpriteEffects.None);
Vector2 cursorPos = new Vector2(Mouse.GetState().X, Mouse.GetState().Y);
SpriteBatch.Draw(mouse_Sprite, cursorPos, Color.White);
SpriteBatch.End();
base.Draw(gameTime);
}
c# monogame
when i click the screen with mouse my sprite move to this position but when camera move the mouse cursor move with her and the sprite go to wrong position.
how i fix that when my camera move my mouse stay in right position?
I tried to change the position of the mouse accordingly and change the location of the camera but I still can not seem to perform it
thank's
using System;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using XELibrary;
using Comora;
namespace gameTest
{
public class PlayingState
{
public SpriteBatch SpriteBatch { get; private set; }
public Vector2 playerPosition = new Vector2(100, 100);
private Vector2 velocity = new Vector2(200.0f, 0.0f);
private DirectionType direction = DirectionType.Right;
public Rectangle spriteRectangle;
private int health;
private int radius;
private string playerKey;
MouseState mState;
MouseState oldmState;
Vector2 current_mouse_pos = new Vector2(0, 0);
Vector2 cursor_mouse_pos;
private Camera camera;
// BACKGROUND
Texture2D backgroundtexture;
Vector2 backgroundPosition;
Texture2D mouse_Sprite;
SpriteFont gameFont;
IScrollingBackgroundManager scrollingBackgroundManager;
ICelAnimationManager celAnimationManager;
ISoundManager soundManager;
// ---------- GETTERS AND SETTERS ----------
public float HealthTimer { get { return healthTimer; } set {
healthTimer = value; } }
public int Radius { get { return radius; } }
public int Health { get { return health; } set { health = value; } }
public Vector2 PlayerPosition { get { return playerPosition; } set {
playerPosition = value; } }
public void SetX(float newX) { playerPosition.X = newX; }
public void SetY(float newY) { playerPosition.Y = newY; }
// ---------- C O N S T R U C T O R ----------
public PlayingState(Game game) : base(game)
{
game.Services.AddService(typeof(IPlayingState), this);
scrollingBackgroundManager = (IScrollingBackgroundManager)game.Services.GetService(typeof(IScrollingBackgroundManager));
celAnimationManager = (ICelAnimationManager)game.Services.GetService(typeof(ICelAnimationManager));
soundManager = (ISoundManager)game.Services.GetService(typeof(ISoundManager));
playerKey = "playerPauseDown";
}
// ---------- I N I T I A L I Z E ----------
public override void Initialize()
{
this.camera = new Camera(this.GraphicsDevice);
base.Initialize();
}
// ---------- L O A D - C O N T E N T ----------
protected override void LoadContent()
{
**here i load my animation sprites**
}
// ---------- U P D A T E ----------
public override void Update(GameTime gameTime)
{
KeyboardState kState = Keyboard.GetState();
float dt = (float)gameTime.ElapsedGameTime.TotalSeconds;
if (healthTimer > 0) { HealthTimer -= dt; }
foreach (Enemy en in Enemy.enemies)
{
en.Update(gameTime, PlayerPosition);
}
Enemy.enemies.RemoveAll(e => e.Health <= 0);
// handleInput(gameTime);
handleInputMouse(gameTime);
playerWalkToMouse();
this.camera.Update(gameTime);
this.camera.Position = playerPosition;
base.Update(gameTime);
}
// ---------- M O U S E ----------
private void handleInputMouse(GameTime gameTime)
{
/*
MouseState mStateHandle = Mouse.GetState(); ;
if (mStateHandle.LeftButton == ButtonState.Pressed)
current_mouse_pos = new Vector2(mStateHandle.X, mStateHandle.Y);
if (current_mouse_pos.X > PlayerPosition.X)
playerKey = "playerWalkRight";
else if (current_mouse_pos.X < PlayerPosition.X)
playerKey = "playerWalkLeft";
else if (current_mouse_pos.Y < PlayerPosition.Y)
playerKey = "playerWalkUp";
else if (current_mouse_pos.Y > PlayerPosition.Y)
playerKey = "playerWalkDown";
else
playerKey = "playerPauseDown";
*/
if (mState.LeftButton == ButtonState.Pressed)
current_mouse_pos = new Vector2(mState.X, mState.Y);
if (current_mouse_pos.X > PlayerPosition.X)
playerKey = "playerWalkRight";
else if (current_mouse_pos.X < PlayerPosition.X)
playerKey = "playerWalkLeft";
else if (current_mouse_pos.Y < PlayerPosition.Y)
playerKey = "playerWalkUp";
else if (current_mouse_pos.Y > PlayerPosition.Y)
playerKey = "playerWalkDown";
else
playerKey = "playerPauseDown";
}
// ---------- D R A W ----------
public override void Draw(GameTime gameTime)
{
SpriteBatch.Begin(this.camera);
SpriteBatch.Draw(backgroundtexture, backgroundPosition, Color.White);
celAnimationManager.Draw(gameTime, playerKey, OurGame.SpriteBatch, PlayerPosition, SpriteEffects.None);
Vector2 cursorPos = new Vector2(Mouse.GetState().X, Mouse.GetState().Y);
SpriteBatch.Draw(mouse_Sprite, cursorPos, Color.White);
SpriteBatch.End();
base.Draw(gameTime);
}
c# monogame
c# monogame
asked Jan 2 at 17:57
liran dbvliran dbv
1
1
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
The mouse position obtained from the GetState() is always according to the Windows in which you game is rendered. It is never relative to your camera.
If I understand your logic correctly, you simply need to substract the x and y position of the camera to the mouse position your obtain from the GetState().
This way, you will link your "world" position to the camera position.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54011000%2fhow-to-stop-the-mouse-cursor-from-moving-with-the-camera%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
The mouse position obtained from the GetState() is always according to the Windows in which you game is rendered. It is never relative to your camera.
If I understand your logic correctly, you simply need to substract the x and y position of the camera to the mouse position your obtain from the GetState().
This way, you will link your "world" position to the camera position.
add a comment |
The mouse position obtained from the GetState() is always according to the Windows in which you game is rendered. It is never relative to your camera.
If I understand your logic correctly, you simply need to substract the x and y position of the camera to the mouse position your obtain from the GetState().
This way, you will link your "world" position to the camera position.
add a comment |
The mouse position obtained from the GetState() is always according to the Windows in which you game is rendered. It is never relative to your camera.
If I understand your logic correctly, you simply need to substract the x and y position of the camera to the mouse position your obtain from the GetState().
This way, you will link your "world" position to the camera position.
The mouse position obtained from the GetState() is always according to the Windows in which you game is rendered. It is never relative to your camera.
If I understand your logic correctly, you simply need to substract the x and y position of the camera to the mouse position your obtain from the GetState().
This way, you will link your "world" position to the camera position.
answered Jan 3 at 3:25


abousquetabousquet
321211
321211
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54011000%2fhow-to-stop-the-mouse-cursor-from-moving-with-the-camera%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown