public static void FixMissingPrefab() { Object o = Selection.activeObject; if (o is GTreePrototypeGroup) { string[] prefabAssetPaths = new string[] { "Assets/Griffin - PolarisV2/_Demo/Prefabs/AutumnTree1.prefab", "Assets/Griffin - PolarisV2/_Demo/Prefabs/SpringTree1.prefab", "Assets/Griffin - PolarisV2/_Demo/Prefabs/Pine_00.prefab", "Assets/Griffin - PolarisV2/_Demo/Prefabs/Pine_01.prefab", "Assets/Griffin - PolarisV2/_Demo/Prefabs/Dead.prefab", "Assets/Griffin - PolarisV2/_Demo/Prefabs/Dead_Break.prefab" }; GTreePrototypeGroup group = o as GTreePrototypeGroup; group.Prototypes.Clear(); for (int i = 0; i < prefabAssetPaths.Length; ++i) { GameObject p = AssetDatabase.LoadAssetAtPath <GameObject>(prefabAssetPaths[i]); GTreePrototype proto = GTreePrototype.Create(p); proto.Refresh(); group.Prototypes.Add(proto); } EditorUtility.SetDirty(group); } }
public static void FixMissingTreeDemo00() { Object o = Selection.activeObject; if (o is GTreePrototypeGroup) { string[] prefabAssetPaths = new string[] { "Assets/Polaris - Low Poly Ecosystem/Polaris - Low Poly Terrain Engine/Samples/Pinwheel Studio/Prefabs/Pine_00.prefab", "Assets/Polaris - Low Poly Ecosystem/Polaris - Low Poly Terrain Engine/Samples/Pinwheel Studio/Prefabs/Dead.prefab", "Assets/Polaris - Low Poly Ecosystem/Polaris - Low Poly Terrain Engine/Samples/Pinwheel Studio/Prefabs/Pine_01.prefab", "Assets/Polaris - Low Poly Ecosystem/Polaris - Low Poly Terrain Engine/Samples/Pinwheel Studio/Prefabs/Dead_Break.prefab" }; GTreePrototypeGroup group = o as GTreePrototypeGroup; group.Prototypes.Clear(); for (int i = 0; i < prefabAssetPaths.Length; ++i) { GameObject p = AssetDatabase.LoadAssetAtPath <GameObject>(prefabAssetPaths[i]); GTreePrototype proto = GTreePrototype.Create(p); proto.Refresh(); group.Prototypes.Add(proto); } EditorUtility.SetDirty(group); } }
private void DrawPrototypesListGUI() { string label, id; for (int i = 0; i < instance.Prototypes.Count; ++i) { GTreePrototype p = instance.Prototypes[i]; CachePrefabPath(p); label = p.Prefab != null && !string.IsNullOrEmpty(p.Prefab.name) ? p.Prefab.name : "Tree " + i; id = "treeprototype" + i + instance.GetInstanceID().ToString(); int index = i; GenericMenu menu = new GenericMenu(); menu.AddItem( new GUIContent("Remove"), false, () => { ConfirmAndRemovePrototypeAtIndex(index); }); menu.AddItem( new GUIContent("Sync with Prefab"), false, () => { p.Refresh(); }); GEditorCommon.Foldout(label, false, id, () => { if (p.Prefab != null) { DrawPreview(p.Prefab); } p.Prefab = EditorGUILayout.ObjectField("Prefab", p.Prefab, typeof(GameObject), false) as GameObject; p.Billboard = EditorGUILayout.ObjectField("Billboard", p.Billboard, typeof(BillboardAsset), false) as BillboardAsset; EditorGUI.BeginChangeCheck(); p.PivotOffset = EditorGUILayout.Slider("Pivot Offset", p.PivotOffset, -1f, 1f); p.BaseRotation = Quaternion.Euler(GEditorCommon.InlineVector3Field("Base Rotation", p.BaseRotation.eulerAngles)); p.BaseScale = GEditorCommon.InlineVector3Field("Base Scale", p.BaseScale); if (EditorGUI.EndChangeCheck()) { ResetNativeArrays(); } GUI.enabled = !p.KeepPrefabLayer; p.Layer = EditorGUILayout.LayerField("Layer", p.Layer); GUI.enabled = true; p.KeepPrefabLayer = EditorGUILayout.Toggle("Keep Prefab Layer", p.KeepPrefabLayer); p.ShadowCastingMode = (ShadowCastingMode)EditorGUILayout.EnumPopup("Cast Shadow", p.ShadowCastingMode); p.ReceiveShadow = EditorGUILayout.Toggle("Receive Shadow", p.ReceiveShadow); p.BillboardShadowCastingMode = (ShadowCastingMode)EditorGUILayout.EnumPopup("Billboard Cast Shadow", p.BillboardShadowCastingMode); p.BillboardReceiveShadow = EditorGUILayout.Toggle("Billboard Receive Shadow", p.BillboardReceiveShadow); GUI.enabled = false; EditorGUILayout.Toggle("Has Collider", p.HasCollider); GUI.enabled = true; }, menu); } }