コード例 #1
0
    public override void OnInspectorGUI()
    {
        serializedObject.Update();
        ColorVolume volume = target as ColorVolume;

        SerializedProperty modeProperty         = serializedObject.FindProperty("Mode");
        SerializedProperty gradientTypeProperty = serializedObject.FindProperty("GradientType");
        SerializedProperty colorProperty        = serializedObject.FindProperty("Color");
        SerializedProperty gradientProperty     = serializedObject.FindProperty("Gradient");
        SerializedProperty offsetProperty       = serializedObject.FindProperty("GradientOffset");
        SerializedProperty invertProperty       = serializedObject.FindProperty("InvertGradient");


        EditorGUILayout.Space(20.0f);
        EditorGUILayout.BeginHorizontal();
        GUILayout.FlexibleSpace();

        if (GUILayout.Button("Apply", GUILayout.Width(200)))
        {
            volume.Apply();
        }

        if (GUILayout.Button("Apply & Remove", GUILayout.Width(200)))
        {
            volume.ApplyAndRemove();
        }

        GUILayout.FlexibleSpace();
        EditorGUILayout.EndHorizontal();


        InspectorUtilities.Header("Settings");
        InspectorUtilities.EnumToolbar <VolumeMode>(modeProperty, "Mode");
        VolumeMode mode = (VolumeMode)modeProperty.enumValueIndex;

        if (mode == VolumeMode.Color)
        {
            EditorGUILayout.PropertyField(colorProperty, true);
        }
        else
        {
            InspectorUtilities.EnumToolbar <GradientType>(gradientTypeProperty, "Gradient Type");
            EditorGUILayout.PropertyField(gradientProperty, true);
            EditorGUILayout.PropertyField(offsetProperty, true);
            EditorGUILayout.PropertyField(invertProperty, true);
        }


        EditorGUILayout.Space(20.0f);
        if (target != null)
        {
            serializedObject.ApplyModifiedProperties();
        }
    }
コード例 #2
0
        /// <summary>
        /// Get SerializableVolume data based on Volume mode. Editor only.
        /// </summary>
        /// <param name="mode">Mode for generating Volumes.</param>
        public static SerializableVolume[] GetVolumeData(VolumeMode mode, int autoSubdivisions = 0)
        {
            switch (mode)
            {
            case VolumeMode.Auto:
                return(GetVolumeDataAuto(autoSubdivisions));

            case VolumeMode.Manual:
                return(GetVolumeDataManual());

            case VolumeMode.Hybrid:
                var volumesAuto = GetVolumeDataAuto(autoSubdivisions);
                return(volumesAuto.Union(GetVolumeDataManual(volumesAuto.Length)).ToArray());

            default:
                Debug.LogError("Not a valid Volume mode!");
                return(null);
            }
        }
コード例 #3
0
 public VolumeSlider(Point btnPos, int btnHeight, int btnWidth, Texture2D btnImage0, Texture2D btnImage1, Texture2D btnImage2,
                     Texture2D btnImage3, Texture2D btnImage4, Texture2D btnImage5, Texture2D btnImage6, Texture2D btnImage7,
                     Texture2D btnImage8, Texture2D btnImage9, Texture2D btnImage10,
                     VolumeMode mode = VolumeMode.MasterVolume)
 {
     mBtnImages = new List <Texture2D>
     {
         btnImage0,
         btnImage1,
         btnImage2,
         btnImage3,
         btnImage4,
         btnImage5,
         btnImage6,
         btnImage7,
         btnImage8,
         btnImage9,
         btnImage10
     };
     mBtnPos    = btnPos;
     mBtnHeight = btnHeight;
     mBtnWidth  = btnWidth;
     mMode      = mode;
 }
コード例 #4
0
ファイル: Helper.cs プロジェクト: jung-kuei/Halite
    public static Volume GetVolume(this Map map, int N, int myId, ushort x, ushort y, VolumeMode mode = VolumeMode.Production | VolumeMode.Strength | VolumeMode.Territory)
    {
        int  count         = 0;
        bool hasProduction = (mode & VolumeMode.Production) == VolumeMode.Production;

        if (hasProduction)
        {
            count++;
        }
        bool hasStrength = (mode & VolumeMode.Strength) == VolumeMode.Strength;

        if (hasStrength)
        {
            count++;
        }
        bool hasTerritory = (mode & VolumeMode.Territory) == VolumeMode.Territory;

        if (hasTerritory)
        {
            count++;
        }
        bool has255 = (mode & VolumeMode.Only255) == VolumeMode.Only255;

        if (has255)
        {
            count++;
        }
        bool hasBorder = (mode & VolumeMode.HasBorder) == VolumeMode.HasBorder;

        if (hasBorder)
        {
            count++;
        }

        var vol = new Volume(N, N, count, 0);

        for (var dx = -N / 2; dx <= N / 2; dx++)
        {
            for (var dy = -N / 2; dy <= N / 2; dy++)
            {
                int n    = 0;
                var site = map[Helper.Mod(x + dx, map.Width), Helper.Mod(y + dy, map.Height)];

                if (hasProduction)
                {
                    vol.Set(dx + N / 2, dy + N / 2, n++, site.Production / 20.0 - 0.5);
                }

                if (hasStrength)
                {
                    vol.Set(dx + N / 2, dy + N / 2, n++, site.Strength / 255.0 - 0.5);
                }

                if (hasTerritory)
                {
                    vol.Set(dx + N / 2, dy + N / 2, n++, site.Owner == myId ? 1.0 : (site.Owner != 0 ? -1.0 : 0.0));
                }

                if (has255)
                {
                    vol.Set(dx + N / 2, dy + N / 2, n++, site.Strength == 255 ? 1.0 : 0.0);
                }

                if (hasBorder)
                {
                    bool foundBorder = false;
                    foreach (Direction dir in Enum.GetValues(typeof(Direction)))
                    {
                        var neighbour = map.GetSite((ushort)(dx + N / 2), (ushort)(dy + N / 2), dir);
                        if (neighbour.Owner != myId)
                        {
                            foundBorder = true;
                            break;
                        }
                    }

                    vol.Set(dx + N / 2, dy + N / 2, n++, foundBorder ? 1.0 : 0.0);
                }
            }
        }
        return(vol);
    }