protected virtual void CreateClimbable(GameObject objectToWrap)
        {
            int        siblingIndex = objectToWrap.transform.GetSiblingIndex();
            GameObject newClimbable = (GameObject)PrefabUtility.InstantiatePrefab(climbablePrefab);

            newClimbable.name += "_" + objectToWrap.name;
            ClimbableFacade    climbableFacade = newClimbable.GetComponent <ClimbableFacade>();
            InteractableFacade facade          = newClimbable.GetComponentInChildren <InteractableFacade>();

            newClimbable.transform.SetParent(objectToWrap.transform.parent);
            newClimbable.transform.localPosition = objectToWrap.transform.localPosition;
            newClimbable.transform.localRotation = objectToWrap.transform.localRotation;
            newClimbable.transform.localScale    = objectToWrap.transform.localScale;

            foreach (MeshRenderer defaultMeshes in facade.Configuration.MeshContainer.GetComponentsInChildren <MeshRenderer>())
            {
                defaultMeshes.gameObject.SetActive(false);
            }

            objectToWrap.transform.SetParent(facade.Configuration.MeshContainer.transform);
            objectToWrap.transform.localPosition = Vector3.zero;
            objectToWrap.transform.localRotation = Quaternion.identity;
            objectToWrap.transform.localScale    = Vector3.one;

            newClimbable.transform.SetSiblingIndex(siblingIndex);
            climbableFacade.ClimbingFacade = climbingFacade;
        }
        protected virtual void ConvertSelectedGameObject(GameObject objectToConvert)
        {
            ClimbableFacade climbable = objectToConvert.GetComponentInParent <ClimbableFacade>();

            if (climbable == null)
            {
                CreateClimbable(objectToConvert);
            }
        }