public void OnPlace()
    {
        ResetPosition(true);
        PerformRaycast();
        gameObject.layer = 19;
        DispensaryManager dm = GameObject.Find("DispensaryManager").GetComponent <DispensaryManager>();

        RaycastHit[] hits = Physics.RaycastAll(transform.position + new Vector3(0, 2, 0), Vector3.down);

        // Let the component know its here
        string component    = string.Empty;
        int    subGridIndex = -1;

        if (hits.Length > 0)
        {
            foreach (RaycastHit hit in hits)
            {
                if (hit.transform.tag == "Floor")
                {
                    FloorTile tile = hit.transform.GetComponent <FloorTile>();
                    component = tile.gameObject.name;
                    //StoreObject storeObj = GetStoreObject();
                    //storeObj.gridIndex = new Vector2(tile.gridX, tile.gridY);
                    //subGridIndex = tile.subGridIndex;
                }
            }
        }
        if (component == string.Empty)
        {
            component = dm.dispensary.GetSelected();
        }
        StoreObject obj = GetStoreObject();

        switch (component)
        {
        case "MainStore":
        case "MainStoreComponent":
            dm.dispensary.Main_c.AddStoreObject(obj);
            break;

        case "Storage0":
        case "StorageComponent0":
            dm.dispensary.Storage_cs[0].AddStoreObject(obj);
            break;

        case "Storage1":
        case "StorageComponent1":
            dm.dispensary.Storage_cs[1].AddStoreObject(obj);
            break;

        case "Storage2":
        case "StorageComponent2":
            dm.dispensary.Storage_cs[2].AddStoreObject(obj);
            break;

        case "SmokeLounge":
        case "SmokeLoungeComponent":
            dm.dispensary.Lounge_c.AddStoreObject(obj);
            break;
        }
        string side = dm.DetermineSide(obj.gridIndex, obj.grid.subGridIndex, mainComponent);

        switch (side)
        {
        case "Left":
            Vector3 currentLPos = gameObject.transform.position;
            Vector3 newLPos     = new Vector3(currentLPos.x, currentLPos.y, currentLPos.z + obj.grid.nodeRadius * 1.25f);
            Vector3 newLEulers  = new Vector3(0, 270, 0);
            //gameObject.transform.position = newLPos;
            gameObject.transform.eulerAngles = newLEulers;
            break;

        case "Right":
            Vector3 currentRPos = gameObject.transform.position;
            Vector3 newRPos     = new Vector3(currentRPos.x, currentRPos.y, currentRPos.z - obj.grid.nodeRadius * 1.25f);
            Vector3 newREulers  = new Vector3(0, 90, 0);
            //gameObject.transform.position = newRPos;
            gameObject.transform.eulerAngles = newREulers;
            break;

        case "Top":
            Vector3 currentTPos = gameObject.transform.position;
            Vector3 newTPos     = new Vector3(currentTPos.x + obj.grid.nodeRadius * 1.25f, currentTPos.y, currentTPos.z);
            Vector3 newTEulers  = new Vector3(0, 0, 0);
            //gameObject.transform.position = newTPos;
            gameObject.transform.eulerAngles = newTEulers;
            break;

        case "Bottom":
            Vector3 currentBPos = gameObject.transform.position;
            Vector3 newBPos     = new Vector3(currentBPos.x - obj.grid.nodeRadius * 1.25f, currentBPos.y, currentBPos.z);
            Vector3 newBEulers  = new Vector3(0, 180, 0);
            //gameObject.transform.position = newBPos;
            gameObject.transform.eulerAngles = newBEulers;
            break;
        }
    }