コード例 #1
0
    void AddItem()
    {
        if (Event.current.control)
        {
            Vector2 filteredMousePosition = new Vector2(HandleUtility.WorldToGUIPoint(Event.current.mousePosition).x - grid.rect.left,
                                                        HandleUtility.WorldToGUIPoint(Event.current.mousePosition).y - grid.rect.top);
            filteredMousePosition /= gridScale;

            if (grid.rect.Contains(filteredMousePosition * gridScale + new Vector2(grid.rect.left, grid.rect.top)))
            {
                grabbedObj = new Rect(filteredMousePosition.x,
                                      filteredMousePosition.y,
                                      grabbedObj.width, grabbedObj.height);

                lastGrabbedObjScale = new Vector2(grabbedObj.width, grabbedObj.height);
                //GUI.DrawTexture (grabbedObj, Resources.Load<Texture>("Objects/" + lst5.getSelectedItemContent()));


                if (Event.current.button == 1 && Event.current.isMouse)
                {
                    if (chunk.objects.Count > 0)
                    {
                        bool allowedToAdd = true;
                        foreach (var item in chunk.objects)
                        {
                            if (item.position.depth == ((activeLayer + 1) * 0.5f))
                            {
                                if (ChangeType(item.position).Contains(new Vector2(grid.FilterPosition(filteredMousePosition + new Vector2(hScroll + grid.rect.left, 0), gridScale).x,
                                                                                   grid.FilterPosition(filteredMousePosition + new Vector2(0, vScroll + grid.rect.top), gridScale).y)))
                                {
                                    allowedToAdd = false;
                                    break;
                                }
                            }
                        }

                        if (allowedToAdd)
                        {
                            Debug.Log(TextureList.getSelectedItemContent());
                            chunk.objects.Add(new LevelObj(new Rect((grid.FilterPosition(filteredMousePosition + new Vector2(hScroll + grid.rect.left, 0), gridScale).x),
                                                                    (grid.FilterPosition(filteredMousePosition + new Vector2(0, vScroll + grid.rect.top), gridScale).y),
                                                                    grabbedObj.width,
                                                                    grabbedObj.height)
                                                           , Resources.Load <Texture>("Objects/" + TextureList.getSelectedItemContent()), chunk.idAccumulator, ((activeLayer + 1) * 0.5f)));
                            ChunkItemList.Additem(new string[] { chunk.objects[chunk.objects.Count - 1].texture + "." + chunk.idAccumulator.ToString() });
                            chunk.idAccumulator++;
                        }
                    }
                    else
                    {
                        Debug.Log(TextureList.getSelectedItemContent());
                        chunk.objects.Add(new LevelObj(new Rect((grid.FilterPosition(filteredMousePosition + new Vector2(hScroll + grid.rect.left, 0), gridScale).x),
                                                                (grid.FilterPosition(filteredMousePosition + new Vector2(0, vScroll + grid.rect.top), gridScale).y),
                                                                grabbedObj.width,
                                                                grabbedObj.height)
                                                       , Resources.Load <Texture>("Objects/" + TextureList.getSelectedItemContent()), chunk.idAccumulator, ((activeLayer + 1) * 0.5f)));
                        TextureList.Additem(new string[] { chunk.objects[0].texture + "." + chunk.idAccumulator.ToString() });
                        chunk.idAccumulator++;
                    }
                }
            }
        }
    }