/// <summary> /// Register a prefab with a KitbashConfig to be applied when the vanilla prefabs are available /// </summary> /// <param name="prefab">Prefab to add kitbashed parts to</param> /// <param name="kitbashConfig">KitbashConfig to apply to the prefab</param> /// <returns>The KitbashObject container for this prefab</returns> public KitbashObject AddKitbash(GameObject prefab, KitbashConfig kitbashConfig) { if (prefab.transform.parent == null) { string name = prefab.name; prefab = Object.Instantiate(prefab, PrefabManager.Instance.PrefabContainer.transform); prefab.name = name; } KitbashObject kitbashObject = new KitbashObject { Config = kitbashConfig, Prefab = prefab }; KitbashObjects.Add(kitbashObject); return(kitbashObject); }
/// <summary> /// Apply kitbash to a single object. /// </summary> /// <param name="kitbashObject"></param> /// <returns></returns> private bool ApplyKitbash(KitbashObject kitbashObject) { foreach (KitbashSourceConfig config in kitbashObject.Config.KitbashSources) { if (!Instance.Kitbash(kitbashObject.Prefab, config)) { return(false); } } if (kitbashObject.Config.Layer != null) { int layer = LayerMask.NameToLayer(kitbashObject.Config.Layer); foreach (Transform transform in kitbashObject.Prefab.GetComponentsInChildren <Transform>()) { transform.gameObject.layer = layer; } } kitbashObject.OnKitbashApplied?.SafeInvoke(); return(true); }