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); } }