public void Update(float deltaTime)
        {
            // Try equip tool
            if (!GUISystem.HandledMouseInput)
            {
                if (Input.GetKeyDown(Key.Tilde))
                {
                    if (selectedTool != null)
                    {
                        selectedTool.Unequipped();
                    }

                    selectedTool = null;
                }
                else
                {
                    foreach (EditorTool tool in tools.Values)
                    {
                        if (Input.GetKeyDown(tool.KeyBind))
                        {
                            EquipTool(tool);
                            screen.UI.SetToolType(tool.Type);
                            break;
                        }
                    }
                }
            }

            raycastResult = screen.World.Raycast();

            if (selectedTool != null)
            {
                selectedTool.Update(raycastResult, deltaTime);

                TerrainEditorTool terrainTool = selectedTool as TerrainEditorTool;
                if (terrainTool != null)
                {
                    TerrainEditor.Update(deltaTime, terrainTool, raycastResult.TerrainResult);
                }
            }
        }
 void AddTool(EditorTool tool)
 {
     tools.Add(tool.Type, tool);
 }