示例#1
0
        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);
        }
示例#2
0
        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();
        }