Skip to content

Commit

Permalink
feat: Canvasのenabled設定に対応
Browse files Browse the repository at this point in the history
  • Loading branch information
pspkurara committed Nov 8, 2020
1 parent 71c3054 commit 8250c77
Show file tree
Hide file tree
Showing 5 changed files with 114 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
using UnityEngine;

namespace Pspkurara.UI.Skinner
{

[SkinPartsInspector(typeof(CanvasEnable))]
internal sealed class CanvasEnableInspector : SkinPartsOnArrayInspector<Canvas>
{

protected override void CleanupFieldsOtherThanObjectReference(EditorSkinPartsPropertryWithoutObjectReference property)
{
SkinnerEditorUtility.CleanArray(property.floatValues, CanvasEnable.FloatLength, SkinDefaultValue.Boolean);
SkinnerEditorUtility.CleanArray(property.vector4Values);
SkinnerEditorUtility.CleanArray(property.stringValues);
}

protected override void ResetArrayOtherThanObjectReference(EditorSkinPartsPropertryWithoutObjectReference property)
{
SkinnerEditorUtility.ResetArray(property.floatValues, CanvasEnable.FloatLength, SkinDefaultValue.Boolean);
}

protected override void DrawOptionProperty(EditorSkinPartsPropertry property)
{
SkinnerEditorGUILayout.Toggle(SkinContent.Enabled, property.floatValues.GetArrayElementAtIndex(CanvasEnable.FlagIndex));
}

}

}

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

62 changes: 62 additions & 0 deletions Packages/uGUI-Skinner/Runtime/SkinParts/CanvasEnable.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
using System.Collections.Generic;
using UnityEngine;
using System.Linq;

namespace Pspkurara.UI.Skinner
{

[SkinParts(SkinPartsType.CanvasEnable, typeof(Logic))]
public static class CanvasEnable
{

public const int FlagIndex = 0;
public const int FloatLength = FlagIndex + 1;

/// <summary>
/// 適応ロジック
/// </summary>
internal sealed class Logic : SkinLogicOnArray<Canvas>
{

/// <summary>
/// enabledフラグ
/// </summary>
private bool activeFlag;

/// <summary>
/// 値をオブジェクトに反映させる
/// </summary>
/// <param name="property">プロパティ</param>
public override void SetValues(SkinLogicProperty property)
{
//値がないなら何もしない
if (property.floatValues.Count < FloatLength) return;
activeFlag = property.floatValues[FlagIndex].ToBool();
base.SetValues(property);
}

protected override void OnApplyValue(Canvas obj)
{
obj.enabled = activeFlag;
}

}

/// <summary>
/// 対象のスキンパーツを生成
/// </summary>
/// <param name="outlines">設定したいGraphic</param>
/// <param name="color">Graphicのenabled</param>
/// <returns>生成したスキンパーツ</returns>
public static SkinParts CreateSkinParts(IEnumerable<Canvas> graphics, bool enabled)
{
var parts = new SkinParts();
SkinnerUtility.ResetList(parts.property.floatValues, FloatLength);
parts.property.objectReferenceValues.AddRange(graphics.Cast<Object>());
parts.property.floatValues[FlagIndex] = enabled.ToFloat();
return parts;
}

}

}
11 changes: 11 additions & 0 deletions Packages/uGUI-Skinner/Runtime/SkinParts/CanvasEnable.cs.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Packages/uGUI-Skinner/Runtime/SkinPartsType.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ public enum SkinPartsType
OutlineColor = 7,
BaseMeshEffectEnable = 8,
GraphicEnable = 9,
CanvasEnable = 10,

TransformRotation = 12,
TransformScale = 13,
Expand Down

0 comments on commit 8250c77

Please sign in to comment.