public WorldStampTemplate CreateTemplate(WorldStampTemplate templateToReplace = null) { if (templateToReplace == null) { var newTemplate = new GameObject("Stamp Template"); templateToReplace = newTemplate.AddComponent <WorldStampTemplate>(); } templateToReplace.transform.position = Template.Bounds.center.xz().x0z(Template.Bounds.min.y); var mask = GetCreator <MaskDataCreator>(); templateToReplace.Mask = mask.GetArrayFromMask(this); templateToReplace.Template = Template.JSONClone(); templateToReplace.Size = Template.Bounds.size; return(templateToReplace); }
protected void OnGUI() { EditorGUILayout.BeginHorizontal(); Template.Terrain = (Terrain)EditorGUILayout.ObjectField("Target Terrain", Template.Terrain, typeof(Terrain), true); EditorExtensions.HelpButton("http://lrtw.net/madmaps/index.php?title=World_Stamp_Creator"); EditorGUILayout.EndHorizontal(); if (Template.Terrain == null) { EditorGUILayout.HelpBox("Please Select a Target Terrain", MessageType.Info); return; } EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Capture Area:", Template.Bounds.size.xz().ToString()); if (GUILayout.Button(new GUIContent(BoundsLocked ? GUIResources.LockedIcon : GUIResources.UnlockedIcon, "Lock Bounds"), EditorStyles.label, GUILayout.Width(24), GUILayout.Height(24))) { BoundsLocked = !BoundsLocked; } EditorGUILayout.EndHorizontal(); EditorGUILayout.Space(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Layers", EditorStyles.boldLabel); var recaptureContent = new GUIContent("Capture"); recaptureContent.tooltip = "Recapture this data."; GUI.color = Template.Creators.Any(layer => layer.NeedsRecapture && layer.Enabled) ? Color.Lerp(Color.red, Color.white, .5f) : Color.white; if (GUILayout.Button(recaptureContent, EditorStyles.miniButton, GUILayout.Height(16))) { for (int i = 0; i < Template.Creators.Count; i++) { var worldStampCreatorLayer = Template.Creators[i]; worldStampCreatorLayer.Capture(Template.Terrain, Template.Bounds); } GUIUtility.ExitGUI(); return; } GUI.color = Color.white; EditorGUILayout.EndHorizontal(); for (int i = 0; i < Template.Creators.Count; i++) { Template.Creators[i].DrawGUI(this); } EditorGUILayout.LabelField("", GUILayout.ExpandHeight(true)); EditorExtensions.Seperator(); if (GUILayout.Button("Create Stamp Template")) { CreateTemplate(); GUIUtility.ExitGUI(); return; } GUILayout.BeginHorizontal(); TargetInjectionTemplate = (WorldStampTemplate)EditorGUILayout.ObjectField(TargetInjectionTemplate, typeof(WorldStampTemplate), true); GUI.enabled = TargetInjectionTemplate; if (GUILayout.Button("Replace Existing Stamp Template", GUILayout.Width(220))) { CreateTemplate(TargetInjectionTemplate); GUIUtility.ExitGUI(); return; } GUI.enabled = true; GUILayout.EndHorizontal(); EditorExtensions.Seperator(); Template.Layer = EditorGUILayout.LayerField("Create Stamp On Layer:", Template.Layer); if (GUILayout.Button("Create New Stamp")) { CreateStamp(); GUIUtility.ExitGUI(); return; } EditorGUILayout.BeginHorizontal(); TargetInjectionStamp = (WorldStamp)EditorGUILayout.ObjectField(TargetInjectionStamp, typeof(WorldStamp), true); GUI.enabled = TargetInjectionStamp; if (GUILayout.Button("Replace Existing Stamp", GUILayout.Width(220))) { CreateStamp(TargetInjectionStamp); GUIUtility.ExitGUI(); return; } GUI.enabled = true; EditorGUILayout.EndHorizontal(); }