private void SurfaceLevel_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                SurfaceLevel.SetLevelTile(e.X, e.Y);

                if (m_TileMode == ETileMode.Object)
                {
                    if (lbObjectSet.SelectedIndex == -1)
                    {
                        return;
                    }

                    ObjectSetElementData element = m_ObjectSet.ObjectSet.Elements[lbObjectSet.SelectedIndex];

                    SPosition base_pos = SurfaceLevel.GetDesignTileScaledLevelBasePos();
                    float     scalar   = SurfaceLevel.GetScaleFactor();

                    CInsertedObject new_object = new CInsertedObject()
                    {
                        ObjectID = lbObjectSet.SelectedIndex,
                        Position = new SPosition(
                            (int)(e.X / scalar) - element.Size.Width / 2 + base_pos.X,
                            (int)(e.Y / scalar) - element.Size.Height / 2 + base_pos.Y)
                    };

                    SurfaceLevel.InsertedObjects.Add(new_object);

                    lbInsertedObjests.Items.Add("obj" + lbInsertedObjests.Items.Count.ToString() +
                                                "_" + element.ElementName);
                }
            }
            else if (e.Button == MouseButtons.Right)
            {
                SurfaceLevel.SetLevelTile(e.X, e.Y, true);

                if (m_TileMode == ETileMode.Object)
                {
                    lbObjectSet.ClearSelected();
                }
            }
        }
        private void SurfaceTile_MouseMove(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                SSize tile_size = SurfaceTile.GetTileSize();

                SSize selection_rest;
                selection_rest.Width  = m_MouseDownPos.X % tile_size.Width;
                selection_rest.Height = m_MouseDownPos.Y % tile_size.Height;

                SPosition selection_origin = m_MouseDownPos;
                SSize     selection_size   = tile_size;

                selection_size.Width  += Math.Max(e.X - m_MouseDownPos.X, 0) + selection_rest.Width;
                selection_size.Height += Math.Max(e.Y - m_MouseDownPos.Y, 0) + selection_rest.Height;

                SurfaceTile.UpdateSelection(selection_origin, selection_size);

                SurfaceLevel.UpdateSelectedTile(SurfaceTile.GetCurrentSelectionOrigin(), SurfaceTile.GetCurrentSelectionSizeInTileCount());
            }
        }