コード例 #1
0
    public override void OnInspectorGUI()
    {
        GUILayout.Box(_logo, GUIStyle.none);
        EditorGUILayout.LabelField("Ver. 2.2");

        _screenSaturation.floatValue = EditorGUILayout.Slider("Saturation", Target.screenSaturation, 0.0f, 1.0f);

        _foldChromaticAberration = UEditor.BeginGroup(null, "Chromatic Aberration", _foldChromaticAberration, Color.Lerp(Color.gray, Color.white, 0.4f));
        if (_foldChromaticAberration)
        {
            _chromaticAberrationPattern.objectReferenceValue = EditorGUILayout.ObjectField("Pattern", Target.chromaticAberrationPattern, typeof(Texture), false) as Texture;
            _chromaticAberrationMagnetude.floatValue         = EditorGUILayout.Slider("Magnetude", Target.chromaticAberrationMagnetude, 0.0f, 1.0f);
        }
        UEditor.EndGroup();

        _foldNoise = UEditor.BeginGroup(null, "Noise", _foldNoise, Color.Lerp(Color.gray, Color.white, 0.4f));
        if (_foldNoise)
        {
            _noisePattern.objectReferenceValue = EditorGUILayout.ObjectField("Pattern", Target.noisePattern, typeof(Texture), false) as Texture;
            _noiseMagnetude.floatValue         = EditorGUILayout.Slider("Magnetude", Target.noiseMagnetude, -1.0f, 1.0f);
        }
        UEditor.EndGroup();

        _foldStatic = UEditor.BeginGroup(null, "Static", _foldStatic, Color.Lerp(Color.gray, Color.white, 0.4f));
        if (_foldStatic)
        {
            _staticPattern.objectReferenceValue = EditorGUILayout.ObjectField("Pattern", Target.staticPattern, typeof(Texture), false) as Texture;
            _staticMask.objectReferenceValue    = EditorGUILayout.ObjectField("Mask", Target.staticMask, typeof(Texture), false) as Texture;
            _staticVertical.floatValue          = EditorGUILayout.Slider("Vertical", Target.staticVertical, 0.0f, 1.0f);
            _staticMagnetude.floatValue         = EditorGUILayout.Slider("Magnetude", Target.staticMagnetude, 0.0f, 1.0f);
        }
        UEditor.EndGroup();

        serializedObject.ApplyModifiedProperties();
    }
コード例 #2
0
        private static void RayBulletGUI()
        {
            GUILayout.BeginVertical(EditorStyles.helpBox);
            GUILayout.Space(5);
            GUILayout.Label(ContentProperties.BaseOptions, UEditorStyles.SectionHeaderLabel);
            GUILayout.Space(7);
            rayBullet.SetModel(EditorGUILayout.TextField(ContentProperties.Model, rayBullet.GetModel()));
            rayBullet.SetDamage(EditorGUILayout.IntField(ContentProperties.Damage, rayBullet.GetDamage()));
            rayBullet.SetVariance(EditorGUILayout.FloatField(ContentProperties.Variance, rayBullet.GetVariance()));
            rayBullet.SetNumberBullet(EditorGUILayout.IntField(ContentProperties.NumberBullet, rayBullet.GetNumberBullet()));
            rayBullet.SetDecalProperties(UEditor.ObjectField <DecalProperties>(ContentProperties.DecalProperties, rayBullet.GetDecalProperties(), false));

            GUILayout.Space(5);
            UEditor.HorizontalLine();
            GUILayout.Space(5);

            EditorGUI.BeginDisabledGroup(string.IsNullOrEmpty(rayBullet.GetModel()));
            if (UEditor.Button("Create", "Right", GUILayout.Width(70)))
            {
                string path = EditorUtility.SaveFilePanelInProject("Create new RayBullet", rayBullet.GetModel(), "", "");
                if (!string.IsNullOrEmpty(path))
                {
                    string name = System.IO.Path.GetFileName(path);
                    path = path.Replace(name, "");
                    ScriptableObjectUtility.CreateAsset(rayBullet, path, name);
                    CreateInstances();
                }
            }
            EditorGUI.EndDisabledGroup();
            GUILayout.Space(5);
            GUILayout.EndVertical();
        }
コード例 #3
0
ファイル: OLDTVTubeEditor.cs プロジェクト: monkeykane/ARGhost
    public override void OnInspectorGUI()
    {
        GUILayout.BeginVertical();
        GUILayout.Box(_logo, GUIStyle.none);
        EditorGUILayout.LabelField("Ver. 2.1");

        //_material.objectReferenceValue = EditorGUILayout.ObjectField( "Material", Target.tvMaterialTube, typeof( Material ), false ) as Material;

        // SCANLINE PROPERTIES
        _foldScanline = UEditor.BeginGroup(null, "Scanline", _foldScanline, Color.Lerp(Color.gray, Color.white, 0.4f));
        if (_foldScanline)
        {
            // Select the scanline texture pattern
            _scanlinePattern.objectReferenceValue = EditorGUILayout.ObjectField("Pattern", Target.scanlinePattern, typeof(Texture), false) as Texture;
            // Adjust the screen resolution for the scanline
            //GUILayout.BeginHorizontal();
            _scanlineCount.intValue      = EditorGUILayout.IntField("Line Count", Target.scanlineCount);
            _scanlineCountAuto.boolValue = EditorGUILayout.Toggle("Auto Line Count", Target.scanlineCountAuto);
            //GUILayout.EndHorizontal();
            if ((target as OLDTVTube).scanlineCountAuto)
            {
                UEditor.BeginBox("Using screen height as line counter.", Color.yellow); UEditor.EndBox();
            }

            // Adjust the scanline bright
            float tMin = Target.scanlineBrightMin;
            float tMax = Target.scanlineBrightMax;
            EditorGUILayout.MinMaxSlider(new GUIContent("Bright"), ref tMin, ref tMax, 0.0f, 1.0f);
            _scanlineBrightMin.floatValue = tMin;
            _scanlineBrightMax.floatValue = tMax;

            _scanlineBrightMin.floatValue = EditorGUILayout.Slider("Min Bright", Target.scanlineBrightMin, 0.0f, 1.0f);
            _scanlineBrightMax.floatValue = EditorGUILayout.Slider("Max Bright", Target.scanlineBrightMax, 0.0f, 1.0f);

            if (_scanlineBrightMin.floatValue > _scanlineBrightMax.floatValue)
            {
                _scanlineBrightMin.floatValue = _scanlineBrightMax.floatValue;
            }
        }
        UEditor.EndGroup();

        // TUBE PROPERTIES
        _foldTube = UEditor.BeginGroup(null, "Tube", _foldTube, Color.Lerp(Color.gray, Color.white, 0.4f));
        if (_foldTube)
        {
            _tubeMask.objectReferenceValue   = EditorGUILayout.ObjectField("Mask", Target.mask, typeof(Texture), false) as Texture;
            _tubeReflex.objectReferenceValue = EditorGUILayout.ObjectField("Reflex", Target.reflex, typeof(Texture), false) as Texture;

            _tubeReflexMagnetude.floatValue  = EditorGUILayout.Slider("Reflex Magnetude", Target.reflexMagnetude, 0.0f, 1.0f);
            _tubeRadialDistortion.floatValue = EditorGUILayout.Slider("Radial Distortion", Target.radialDistortion, -1.0f, 1.0f);

            //_scanlinePattern.objectReferenceValue = EditorGUILayout.ObjectField( "Reflex", _scanlinePattern.objectReferenceValue, typeof( Texture2D ), false ) as Texture2D;
        }
        UEditor.EndGroup();
        GUILayout.EndVertical();

        // Apply the values
        serializedObject.ApplyModifiedProperties();
        Repaint();
    }
コード例 #4
0
        private static void DrawProperties()
        {
            GUILayout.BeginVertical(EditorStyles.helpBox);
            GUILayout.Space(5);
            GUILayout.Label("Base Options", UEditorStyles.SectionHeaderLabel);
            GUILayout.Space(5);
            if (properties != null)
            {
                properties.SetAIType((AIProperties.AIType)EditorGUILayout.EnumPopup(ContentProperties.Type, properties.GetAIType()));
                properties.SetName(EditorGUILayout.DelayedTextField(ContentProperties.Name, properties.GetName()));
                if (properties.GetName() == "")
                {
                    properties.SetDefaultName();
                }
                properties.SetModel((GameObject)EditorGUILayout.ObjectField(ContentProperties.Model, properties.GetModel(), typeof(GameObject), true));
                if (properties.GetModel() == null)
                {
                    UEditorHelpBoxMessages.Error("AI model cannot be empty!", "Add AI model.");
                }
                properties.SetController((AnimatorController)EditorGUILayout.ObjectField(ContentProperties.Controller, properties.GetController(), typeof(AnimatorController), true));
                properties.DefaultPreset(EditorGUILayout.Toggle(ContentProperties.DefaultPreset, properties.DefaultPreset()));

                if (properties.DefaultPreset())
                {
                    properties.SetDefaultPreset();
                }

                EditorGUI.BeginDisabledGroup(properties.DefaultPreset());
                LayerMask targetMask = EditorGUILayout.MaskField(ContentProperties.Tagrets, InternalEditorUtility.LayerMaskToConcatenatedLayersMask(properties.GetTargets()), InternalEditorUtility.layers);
                properties.SetTargets(InternalEditorUtility.ConcatenatedLayersMaskToLayerMask(targetMask));
                LayerMask obstacleMask = EditorGUILayout.MaskField(ContentProperties.Obstacles, InternalEditorUtility.LayerMaskToConcatenatedLayersMask(properties.GetObstacles()), InternalEditorUtility.layers);
                properties.SetObstacles(InternalEditorUtility.ConcatenatedLayersMaskToLayerMask(obstacleMask));
                EditorGUI.EndDisabledGroup();

                GUILayout.Space(5);
                UEditor.HorizontalLine();
                GUILayout.Space(5);
                EditorGUI.BeginDisabledGroup(!properties.GetModel());
                if (UEditor.Button("Create", "Right", GUILayout.Width(70)))
                {
                    _AI = CreateAI(properties);
                }
                if (_AI != null && delay.WaitForSeconds())
                {
                    if (UDisplayDialogs.Message("Create Successful", "AI was created on scene!\nSetup AI components before start play.", "Select", "Ok"))
                    {
                        Selection.activeGameObject = _AI;
                    }
                    _AI = null;
                }
                EditorGUI.EndDisabledGroup();
            }
            else
            {
                UEditorHelpBoxMessages.Error("Properties not loaded...", "Try to reload UProject Manager window.", true);
            }
            GUILayout.Space(5);
            GUILayout.EndVertical();
        }
コード例 #5
0
        private static void PhysicsBulletGUI()
        {
            GUILayout.BeginVertical(EditorStyles.helpBox);
            GUILayout.Space(5);
            GUILayout.Label(ContentProperties.BaseOptions, UEditorStyles.SectionHeaderLabel);
            GUILayout.Space(7);

            physicsBulletProperties.SetBulletType((PhysicsBullet.BulletType)EditorGUILayout.EnumPopup(ContentProperties.BulletType, physicsBulletProperties.GetBulletType()));
            physicsBulletProperties.SetBullet(UEditor.ObjectField <GameObject>(new GUIContent("Bullet", "Bullet gameobject."), physicsBulletProperties.GetBullet(), true));
            if (physicsBulletProperties.GetBullet() == null)
            {
                UEditorHelpBoxMessages.Error("Bullet object cannot be empty!", "Add bullet gameobject.");
            }
            physicsBulletProperties.SetModel(EditorGUILayout.TextField(ContentProperties.Model, physicsBulletProperties.GetModel()));
            physicsBulletProperties.SetDamage(EditorGUILayout.IntField(ContentProperties.Damage, physicsBulletProperties.GetDamage()));
            physicsBulletProperties.SetDelay(EditorGUILayout.FloatField(ContentProperties.Delay, physicsBulletProperties.GetDelay()));

            if (physicsBulletProperties.GetBulletType() == PhysicsBullet.BulletType.Standard)
            {
                physicsBulletProperties.SetVariance(EditorGUILayout.FloatField(ContentProperties.Variance, physicsBulletProperties.GetVariance()));
                physicsBulletProperties.SetNumberBullet(EditorGUILayout.IntField(ContentProperties.NumberBullet, physicsBulletProperties.GetNumberBullet()));
            }
            else if (physicsBulletProperties.GetBulletType() == PhysicsBullet.BulletType.Rocket)
            {
                physicsBulletProperties.SetExplosionRadius(EditorGUILayout.FloatField(ContentProperties.B_ExplosionRadius, physicsBulletProperties.GetExplosionRadius()));
                physicsBulletProperties.SetExplosionPower(EditorGUILayout.FloatField(ContentProperties.B_ExplosionPower, physicsBulletProperties.GetExplosionPower()));
                physicsBulletProperties.SetExplosionEffect(UEditor.ObjectField <ParticleSystem>(ContentProperties.B_ExplosionEffect, physicsBulletProperties.GetExplosionEffect(), true));
                physicsBulletProperties.SetExplosionSound(UEditor.ObjectField <AudioClip>(ContentProperties.ExplosionSound, physicsBulletProperties.GetExplosionSound(), true));
            }
            physicsBulletProperties.SetDecalProperties(UEditor.ObjectField <DecalProperties>(ContentProperties.DecalProperties, physicsBulletProperties.GetDecalProperties(), false));

            GUILayout.Space(5);
            UEditor.HorizontalLine();
            GUILayout.Space(5);

            EditorGUI.BeginDisabledGroup(string.IsNullOrEmpty(physicsBulletProperties.GetModel()) || physicsBulletProperties.GetBullet() == null);
            if (UEditor.Button("Create", "Right", GUILayout.Width(70)))
            {
                createdObject = CreatePhysicsBullet(physicsBulletProperties);
            }
            EditorGUI.EndDisabledGroup();

            if (createdObject != null && editorDelay.WaitForSeconds())
            {
                if (UDisplayDialogs.Message("Create Successful", "Physics bullet was created on scene!\nSetup bullet components before start play.", "Select", "Ok"))
                {
                    Selection.activeGameObject = createdObject;
                }
                createdObject = null;
            }
            GUILayout.Space(5);
            GUILayout.EndVertical();
        }
        private static void DrawFPWeaponGUI()
        {
            GUILayout.BeginVertical(EditorStyles.helpBox);
            GUILayout.Space(5);
            GUILayout.Label(ContentProperties.BaseOptions, UEditorStyles.SectionHeaderLabel);
            GUILayout.Space(7);
            properties.SetName(EditorGUILayout.TextField(ContentProperties.WeaponName, properties.GetName()));
            properties.SetWeaponType((WeaponProperties.Type)EditorGUILayout.EnumPopup(ContentProperties.WeaponType, properties.GetWeaponType()));
            properties.SetWeapon(UEditor.ObjectField <GameObject>(ContentProperties.WeaponObject, properties.GetWeapon(), true));
            if (properties.GetWeapon() == null)
            {
                UEditorHelpBoxMessages.Error("Weapon model cannot be empty!", "Add weapon model.");
            }

            properties.SetWeaponID(UEditor.ObjectField <WeaponID>(ContentProperties.WeaponID, properties.GetWeaponID(), true));

            properties.SetController(UEditor.ObjectField <RuntimeAnimatorController>(ContentProperties.WeaponAnimator, properties.GetController(), false));
            GUILayout.Space(10);
            additionalComponentsRL.DoLayoutList();

            GUILayout.Space(5);
            UEditor.HorizontalLine();
            GUILayout.Space(5);

            EditorGUI.BeginDisabledGroup(!properties.NameIsValid() || properties.GetWeapon() == null);
            if (UEditor.Button("Create", "Right", GUILayout.Width(70)))
            {
                weapon = CreateFPWeapon(properties);
            }
            EditorGUI.EndDisabledGroup();

            if (weapon != null && delay.WaitForSeconds())
            {
                if (UDisplayDialogs.Message("Create Successful", "Weapon was created on scene!\nSetup weapon components before start play.", "Select", "Ok"))
                {
                    Selection.activeGameObject = weapon;
                }
                weapon = null;
            }

            GUILayout.Space(5);
            GUILayout.EndVertical();
        }
コード例 #7
0
        private static void GrenadeGUI()
        {
            GUILayout.BeginVertical(EditorStyles.helpBox);
            GUILayout.Space(5);
            GUILayout.Label(ContentProperties.BaseOptions, UEditorStyles.SectionHeaderLabel);
            GUILayout.Space(7);
            grenadeProperties.SetGrenadeObject((GameObject)EditorGUILayout.ObjectField(new GUIContent("Grenade", "Grenade gameobject."), grenadeProperties.GetGrenadeObject(), typeof(GameObject), true));
            if (grenadeProperties.GetGrenadeObject() == null)
            {
                UEditorHelpBoxMessages.Error("Grenade object cannot be empty!", "Add grenade gameobject.");
            }
            grenadeProperties.SetModel(EditorGUILayout.TextField(ContentProperties.Model, grenadeProperties.GetModel()));
            grenadeProperties.SetRadius(EditorGUILayout.FloatField(ContentProperties.G_ExplosionRadius, grenadeProperties.GetRadius()));
            grenadeProperties.SetDelay(EditorGUILayout.FloatField(ContentProperties.Delay, grenadeProperties.GetDelay()));
            grenadeProperties.SetExplosionEffect((ParticleSystem)EditorGUILayout.ObjectField(ContentProperties.G_ExplosionEffect, grenadeProperties.GetExplosionEffect(), typeof(ParticleSystem), true));
            grenadeProperties.SetExplosionSound((AudioClip)EditorGUILayout.ObjectField(ContentProperties.ExplosionSound, grenadeProperties.GetExplosionSound(), typeof(AudioClip), true));
            grenadeProperties.SetExplosionProperties((ExplosionProperties)EditorGUILayout.ObjectField(ContentProperties.ExplosionProperties, grenadeProperties.GetExplosionProperties(), typeof(ExplosionProperties), true));
            grenadeProperties.SetDecalProperties((DecalProperties)EditorGUILayout.ObjectField(ContentProperties.DecalProperties, grenadeProperties.GetDecalProperties(), typeof(DecalProperties), true));

            GUILayout.Space(5);
            UEditor.HorizontalLine();
            GUILayout.Space(5);

            EditorGUI.BeginDisabledGroup(string.IsNullOrEmpty(grenadeProperties.GetModel()) || grenadeProperties.GetGrenadeObject() == null);
            if (UEditor.Button("Create", "Right", GUILayout.Width(70)))
            {
                createdObject = CreateGreanade(grenadeProperties);
            }
            EditorGUI.EndDisabledGroup();

            if (createdObject != null && editorDelay.WaitForSeconds())
            {
                if (UDisplayDialogs.Message("Create Successful", "Greanade was created on scene!\nSetup grenade components before start play.", "Select", "Ok"))
                {
                    Selection.activeGameObject = createdObject;
                }
                createdObject = null;
            }
            GUILayout.Space(5);

            GUILayout.EndVertical();
        }
        private static void DrawPickableWeaponGUI()
        {
            GUILayout.BeginVertical(EditorStyles.helpBox);
            GUILayout.Space(5);
            GUILayout.Label(ContentProperties.BaseOptions, UEditorStyles.SectionHeaderLabel);
            GUILayout.Space(7);

            properties.SetName(EditorGUILayout.TextField(ContentProperties.Name, properties.GetName()));
            properties.SetProcessingType((PickableItem.PickupType)EditorGUILayout.EnumPopup(ContentProperties.PickupType, properties.GetProcessingType()));
            properties.SetObjectType((PickableItem.ItemType)EditorGUILayout.EnumPopup(ContentProperties.ObjecftType, properties.GetObjectType()));

            if (properties.GetProcessingType() == PickableItem.PickupType.ByKey)
            {
                properties.SetPickUpKey((KeyCode)EditorGUILayout.EnumPopup(ContentProperties.PickupKey, properties.GetPickUpKey()));
            }

            GUILayout.Space(10);
            GUILayout.Label(ContentProperties.ItemProperties, UEditorStyles.SectionHeaderLabel);
            GUILayout.Space(7);
            properties.SetClearWeapon(UEditor.ObjectField <GameObject>(ContentProperties.Item, properties.GetClearWeapon(), true));
            if (properties.GetClearWeapon() == null)
            {
                UEditorHelpBoxMessages.Error("Item cannot be empty!", "Add item game object!");
            }
            switch (properties.GetObjectType())
            {
            case PickableItem.ItemType.Weapon:
                properties.SetWeaponID(UEditor.ObjectField <WeaponID>(ContentProperties.Weapon, properties.GetWeaponID(), true));
                properties.AutoActivate(EditorGUILayout.Toggle(ContentProperties.AutoActivate, properties.AutoActivate()));
                break;

            case PickableItem.ItemType.Ammo:
                properties.SetWeaponID(UEditor.ObjectField <WeaponID>(new GUIContent("Target Weapon", "Target weapon for ammo."), properties.GetWeaponID(), true));
                properties.SetValue(EditorGUILayout.IntField(new GUIContent("Bullets", "How many bullet add in weapon ammo."), properties.GetValue()));
                break;

            case PickableItem.ItemType.HealthBox:
                properties.SetValue(EditorGUILayout.IntField(new GUIContent("Health Point", "How many health point add in target."), properties.GetValue()));
                break;
            }
            if (!properties.DestroyAfterUse())
            {
                float refReusableDelay = properties.GetReusableDelay();
                bool  refIsReusable    = properties.IsReusable();
                UEditor.HiddenFloatField(ContentProperties.ReusableDelay, ContentProperties.IsReusable, ref refReusableDelay, ref refIsReusable);
                properties.SetReusableDelay(refReusableDelay);
                properties.IsReusable(refIsReusable);
            }
            else
            {
                EditorGUI.BeginDisabledGroup(true);
                properties.IsReusable(EditorGUILayout.Toggle(ContentProperties.IsReusable, false));
                EditorGUI.EndDisabledGroup();
            }

            if (!properties.IsReusable())
            {
                properties.DestroyAfterUse(EditorGUILayout.Toggle(ContentProperties.DestroyAfterUse, properties.DestroyAfterUse()));
            }
            else
            {
                EditorGUI.BeginDisabledGroup(true);
                properties.DestroyAfterUse(EditorGUILayout.Toggle(ContentProperties.DestroyAfterUse, false));
                EditorGUI.EndDisabledGroup();
            }

            GUILayout.Space(10);
            GUILayout.Label(ContentProperties.UI, UEditorStyles.SectionHeaderLabel);
            GUILayout.Space(7);

            if (properties.GetWeaponID() != null)
            {
                GUILayout.BeginHorizontal();
                properties.SetPickUpMessage(EditorGUILayout.TextField(ContentProperties.PickUpMessage, properties.GetPickUpMessage()));
                if (UEditor.GenerateButton())
                {
                    properties.SetPickUpMessage("HOLD [{0}] TO PICKUP \"{1}\"");
                }
                GUILayout.EndHorizontal();
            }
            else
            {
                properties.SetPickUpMessage(EditorGUILayout.TextField(ContentProperties.PickUpMessage, properties.GetPickUpMessage()));
            }

            if (properties.GetWeapon() != null)
            {
                GUILayout.BeginHorizontal();
                properties.SetReplaceMessage(EditorGUILayout.TextField(ContentProperties.ReplaceMessage, properties.GetReplaceMessage()));
                if (UEditor.GenerateButton())
                {
                    properties.SetPickUpMessage("HOLD [{0}] TO CHANGE \"{1}\"");
                }
                GUILayout.EndHorizontal();
            }
            else
            {
                properties.SetReplaceMessage(EditorGUILayout.TextField(ContentProperties.ReplaceMessage, properties.GetReplaceMessage()));
            }

            GUILayout.Space(10);
            GUILayout.Label(ContentProperties.Effects, UEditorStyles.SectionHeaderLabel);
            GUILayout.Space(7);
            AudioClip se = properties.GetSoundEffect();

            UEditor.ObjectHiddenField <AudioClip>(ContentProperties.P_SoundEffect, ContentProperties.P_SoundEffect, ref se, ref useSoundEffect);
            properties.SetSoundEffect(useSoundEffect ? se : null);

            GUILayout.Space(5);
            UEditor.HorizontalLine();
            GUILayout.Space(5);

            EditorGUI.BeginDisabledGroup(!properties.NameIsValid() || properties.GetClearWeapon() == null);
            if (UEditor.Button("Create", "Right", GUILayout.Width(70)))
            {
                weapon = CreatePickableWeapon(properties);
            }
            EditorGUI.EndDisabledGroup();

            if (weapon != null && delay.WaitForSeconds())
            {
                if (UDisplayDialogs.Message("Create Successful", "Pickable weapon was created on scene!\nSetup weapon components before start play.", "Select", "Ok"))
                {
                    Selection.activeGameObject = weapon;
                }
                weapon = null;
            }

            GUILayout.Space(5);
            GUILayout.EndVertical();
        }
コード例 #9
0
        private static void NewWeaponGUI()
        {
            GUILayout.BeginVertical(EditorStyles.helpBox);
            GUILayout.Space(5);
            GUILayout.Label(ContentProperties.BaseOptions, UEditorStyles.SectionHeaderLabel);
            GUILayout.Space(7);
            GUILayout.BeginHorizontal();
            GUILayout.Label(ContentProperties.ID, GUILayout.Width(100));
            weaponID.SetID(EditorGUILayout.TextField(weaponID.GetID()));
            GUI.SetNextControlName("");
            if (UEditor.GenerateIDButton())
            {
                string id = System.Guid.NewGuid().ToString().ToUpper();
                id = id.Replace("-", "");
                weaponID.SetID(id);
                GUI.FocusControl("");
            }
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Label(ContentProperties.DisplayName, GUILayout.Width(100));
            weaponID.SetDisplayName(EditorGUILayout.TextField(weaponID.GetDisplayName()));
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Label(ContentProperties.Description, GUILayout.Width(100));
            weaponID.SetDescription(EditorGUILayout.TextArea(weaponID.GetDescription()));
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Label(ContentProperties.Group, GUILayout.Width(100));
            weaponID.SetGroup(EditorGUILayout.TextField(weaponID.GetGroup()));
            if (inventory != null)
            {
                GUI.SetNextControlName(ContentProperties.Group.text);
                if (UEditor.ListButton())
                {
                    InventoryGroup[] groups = inventory.GetGroups().ToArray();
                    if (groups != null && groups.Length > 0)
                    {
                        GenericMenu popup = new GenericMenu();
                        for (int i = 0; i < groups.Length; i++)
                        {
                            popup.AddItem(new GUIContent(groups[i].GetName()), false, (x) => { weaponID.SetGroup(x.ToString()); }, groups[i].GetName());
                        }
                        popup.ShowAsContext();
                    }
                    GUI.FocusControl(ContentProperties.Group.text);
                }
            }

            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Label(ContentProperties.Image, GUILayout.Width(100));
            weaponID.SetImage((Sprite)EditorGUILayout.ObjectField(weaponID.GetImage(), typeof(Sprite), false));
            GUILayout.EndHorizontal();

            GUILayout.Space(10);
            GUILayout.Label(ContentProperties.DropProperties, UEditorStyles.SectionHeaderLabel);
            GUILayout.Space(7);
            DropProperties dropProperties = weaponID.GetDropProperties();

            dropProperties.SetDropObject(UEditor.ObjectField <GameObject>(ContentProperties.DropObject, dropProperties.GetDropObject(), false));
            dropProperties.SetForce(EditorGUILayout.FloatField(ContentProperties.Force, dropProperties.GetForce()));
            dropProperties.SetSoundEffect(UEditor.ObjectField <AudioClip>(ContentProperties.SoundEffect, dropProperties.GetSoundEffect(), false));
            dropProperties.SetDistance(EditorGUILayout.FloatField(ContentProperties.Distance, dropProperties.GetDistance()));
            GUILayout.BeginHorizontal();
            GUILayout.Label(ContentProperties.Rotation, GUILayout.Width(145));
            dropProperties.SetRotation(EditorGUILayout.Vector3Field(GUIContent.none, dropProperties.GetRotation()));
            GUILayout.EndHorizontal();

            weaponID.SetDropProperties(dropProperties);

            GUILayout.Space(5);
            UEditor.HorizontalLine();
            GUILayout.Space(5);

            if (UEditor.Button("Create", "Right", GUILayout.Width(70)))
            {
                string path = EditorUtility.SaveFilePanelInProject("Create new Property", weaponID.GetDisplayName(), "", "");
                if (!string.IsNullOrEmpty(path))
                {
                    string name = System.IO.Path.GetFileName(path);
                    path = path.Replace(name, "");
                    ScriptableObjectUtility.CreateAsset(weaponID, path, name);
                    OnEnable();
                }
            }
            GUILayout.Space(5);
            GUILayout.EndVertical();
        }
コード例 #10
0
        private static void WeaponIDsListGUI()
        {
            if (weaponIDs != null && weaponIDs.Count > 0)
            {
                GUILayout.BeginVertical(EditorStyles.helpBox);
                GUILayout.Space(3);

                for (int i = 0; i < weaponIDs.Count; i++)
                {
                    if (i >= weaponIDs.Count)
                    {
                        break;
                    }

                    Object _weaponID = weaponIDs[i];
                    if (_weaponID == null)
                    {
                        OnEnable();
                        continue;
                    }

                    GUILayout.BeginHorizontal();
                    GUILayout.Space(3);
                    GUILayout.Label(_weaponID.name, EditorStyles.boldLabel);

                    GUI.color = new Color32(70, 150, 255, 255);
                    if (GUILayout.Button("Open", "ButtonLeft", GUILayout.Width(70)))
                    {
                        Selection.activeObject = _weaponID;
                    }

#if UNITY_EDITOR_OSX
                    EditorGUI.BeginDisabledGroup(true);
#endif

                    GUI.color = new Color32(70, 220, 70, 255);
                    if (GUILayout.Button("Duplicate", "ButtonMid", GUILayout.Width(70)))
                    {
                        string path = AssetDatabase.GetAssetPath(_weaponID);
                        string name = _weaponID.name;
                        path = path.Replace(_weaponID.name + ".asset", "");
                        AssetDatabase.CopyAsset(AssetDatabase.GetAssetPath(_weaponID), path + name + ".asset");
                        AssetDatabase.Refresh();
                        OnEnable();
                    }

#if UNITY_EDITOR_OSX
                    EditorGUI.EndDisabledGroup();
#endif

                    GUI.color = new Color32(255, 55, 55, 255);
                    if (GUILayout.Button("Delete", "ButtonRight", GUILayout.Width(70)))
                    {
                        if (UDisplayDialogs.Confirmation("Are you really want to delete \"" + _weaponID.name + "\" asset?"))
                        {
                            string path = AssetDatabase.GetAssetPath(_weaponID);
                            AssetDatabase.DeleteAsset(path);
                            AssetDatabase.Refresh();
                            OnEnable();
                            break;
                        }
                    }
                    GUI.color = Color.white;
                    GUILayout.Space(3);
                    GUILayout.EndHorizontal();

                    if (weaponIDs.Count > 1 && i < weaponIDs.Count - 1)
                    {
                        GUILayout.Space(3);
                        UEditor.HorizontalLine();
                        GUILayout.Space(3);
                    }
                    else
                    {
                        GUILayout.Space(3);
                    }
                }
                GUILayout.Space(3);
                GUILayout.EndVertical();
            }
            else
            {
                UEditorHelpBoxMessages.Message("WeaponID's not found...\n" + "Create new property or reload properties", MessageType.Warning);
            }

            GUILayout.Space(5);

            GUILayout.BeginHorizontal();
            GUILayout.FlexibleSpace();
            if (GUILayout.Button(" Refresh Assets ", GUILayout.Width(105.5f)))
            {
                weaponIDs = UEditorInternal.FindAssetsByType <WeaponID>();
            }
            GUILayout.Space(8);
            GUILayout.EndHorizontal();
        }
コード例 #11
0
    public override void OnInspectorGUI()
    {
        this.serializedObject.Update();

        /// generation
        if (foldoutWorldGeneration = EditorGUILayout.Foldout(foldoutWorldGeneration, "Generation", EditorStyles.foldout))
        {
            /// API key
            if (UVariables.mapzenAPIKey == "")
            {
                Color old = GUI.color;
                GUI.color = new Color(0.8f, 0.2f, 0.2f);
                EditorGUILayout.HelpBox("You don\'t have a Mapzen API key.\nYou can change the Mapzen API key in UVariables.cs.\nGet one in: \nhttps://mapzen.com/developers/sign_in", MessageType.Info);
                GUI.color = old;
            }
            else
            {
                EditorGUILayout.BeginVertical(GUI.skin.box);
                EditorGUILayout.LabelField(new GUIContent("Current Mapzen API key is \"" + UVariables.mapzenAPIKey + "\"", "You can change the \"Mapzen API key\" in UVariables.cs.\nIf you don't have one, get it in: \nhttps://mapzen.com/developers/sign_in"));
                EditorGUILayout.EndVertical();
            }

            GUILayout.BeginHorizontal();
            genTerrain.boolValue = UEditor.UToggleButton(genTerrain.boolValue, "Terrain");
            genOSM.boolValue     = UEditor.UToggleButton(genOSM.boolValue, "OSM Data");
            GUILayout.EndHorizontal();
        }

        EditorGUILayout.Space();

        /// chunks options
        if (foldoutChunkOptions = EditorGUILayout.Foldout(foldoutChunkOptions, "Chunk options", EditorStyles.foldout))
        {
            chunkSize.floatValue         = EditorGUILayout.FloatField("Chunk size", chunkSize.floatValue);
            chunkAdjacentLayers.intValue = EditorGUILayout.IntSlider("Chunk adjacent layers", chunkAdjacentLayers.intValue, 0, 10);
            maxResidualChunks.intValue   = EditorGUILayout.IntField("Max residual chunks", maxResidualChunks.intValue);
        }

        EditorGUILayout.Space();

        /// world location
        if (foldoutWorldLocation = EditorGUILayout.Foldout(foldoutWorldLocation, "World location", EditorStyles.foldout))
        {
            GUILayout.BeginHorizontal();
            url = EditorGUILayout.TextField("Google maps URL", url);
            if (UEditor.UToggleButton("Clear", options: GUILayout.Width(50)))
            {
                url = "";
            }
            GUILayout.EndHorizontal();
            string parsedUrl = parserGoogleUrl(url);
            if (parsedUrl != googleParseError)
            {
                startLat.doubleValue = EditorGUILayout.DoubleField("Latitude", double.Parse(parsedUrl.Split(',')[0]));
                startLon.doubleValue = EditorGUILayout.DoubleField("Longitude", double.Parse(parsedUrl.Split(',')[1]));
            }
            else
            {
                startLat.doubleValue = EditorGUILayout.DoubleField("Latitude", startLat.doubleValue);
                startLon.doubleValue = EditorGUILayout.DoubleField("Longitude", startLon.doubleValue);
            }
            zoom.intValue = EditorGUILayout.IntSlider("Zoom", zoom.intValue, 0, 15);
        }
        EditorGUILayout.Space();

        /// clear map
        _clearHashMap.boolValue = UEditor.UToggleButton(_clearHashMap.boolValue, "Clear Map", options: GUILayout.Height(30));

        EditorGUILayout.Space();

        /// debug
        if (foldoutDebugGizmos = EditorGUILayout.Foldout(foldoutDebugGizmos, "Debug Gizmos", EditorStyles.foldout))
        {
            GUILayout.BeginHorizontal();
            debugChunks.boolValue    = UEditor.UToggleButton(debugChunks.boolValue, "Chunks");
            debugDistances.boolValue = UEditor.UToggleButton(debugDistances.boolValue, "Distances");
            debugPositions.boolValue = UEditor.UToggleButton(debugPositions.boolValue, "Positions");
            debugOSM.boolValue       = UEditor.UToggleButton(debugOSM.boolValue, "OSM Data");
            GUILayout.EndHorizontal();
        }

        this.serializedObject.ApplyModifiedProperties();
    }