Ejemplo n.º 1
0
        public Vector2 GetNewEntityWorldPos(int screenX, int screenY, int stepX, int stepY)
        {
            var editorApp      = ((EditorApp)Caravel);
            var parentPosition = Vector3.Zero;

            var parentEntity = GetEntity(editorApp.EForm.CurrentEntity);

            if (parentEntity != null)
            {
                if (parentEntity.GetComponent <Cv_TransformComponent>() != null)
                {
                    parentPosition = parentEntity.GetComponent <Cv_TransformComponent>().WorldPosition;
                }
            }

            var     worldPos = EditorView.GetWorldCoords(new Vector2(screenX, screenY));
            Vector2 pos      = Vector2.Zero;

            if (worldPos != null)
            {
                int numStepsX = (int)(worldPos.Value.X) / stepX;
                int numStepsY = (int)(worldPos.Value.Y) / stepY;

                int signX = worldPos.Value.X < 0 ? -1 : 1;
                int signY = worldPos.Value.Y < 0 ? -1 : 1;

                pos  = new Vector2((numStepsX + signX * 0.5f) * stepX, (numStepsY + signY * 0.5f) * stepY);
                pos -= new Vector2(parentPosition.X, parentPosition.Y);
            }

            return(pos);
        }