Commit 73e5e1c6 authored by ElderLich's avatar ElderLich

Feature: Extra Deck Toggle Tab Integrated With Panel Frame

Adjusted the Extra Deck view toggle button layout so it is visually attached to the card list window header (MD-like), removing the detached/floating tab look in both single-column and 3-column modes.
parent 0e359545
...@@ -346,6 +346,9 @@ MonoBehaviour: ...@@ -346,6 +346,9 @@ MonoBehaviour:
listOpRemoved: {fileID: 21300000, guid: 066065a6b1b767c418d2889597305402, type: 3} listOpRemoved: {fileID: 21300000, guid: 066065a6b1b767c418d2889597305402, type: 3}
listMyXyz: {fileID: 21300000, guid: dcbfe2b5c52ef9c45a945e6099f96860, type: 3} listMyXyz: {fileID: 21300000, guid: dcbfe2b5c52ef9c45a945e6099f96860, type: 3}
listOpXyz: {fileID: 21300000, guid: dc626d3f4895db448969ee261eac22c6, type: 3} listOpXyz: {fileID: 21300000, guid: dc626d3f4895db448969ee261eac22c6, type: 3}
listSingleColumn: {fileID: 21300000, guid: 1593fc89217af42499c6ab1514ab1709, type: 3}
listViewIconExpand: {fileID: 21300000, guid: 838190b6b8c45334bab89da28a238150, type: 3}
listViewIconDefault: {fileID: 21300000, guid: 9f9e97c267d35b84db512595c857ffba, type: 3}
CardAffectDisable: {fileID: 21300000, guid: 5e4f5281aaf73274c888adbe5afce0e0, type: 3} CardAffectDisable: {fileID: 21300000, guid: 5e4f5281aaf73274c888adbe5afce0e0, type: 3}
CardAffectEquip: {fileID: 21300000, guid: 1a678cbbdf93a5449aa105d7c2d6d83a, type: 3} CardAffectEquip: {fileID: 21300000, guid: 1a678cbbdf93a5449aa105d7c2d6d83a, type: 3}
CardAffectField: {fileID: 21300000, guid: 4185642e1b53a404ea1e358e5ccda6fe, type: 3} CardAffectField: {fileID: 21300000, guid: 4185642e1b53a404ea1e358e5ccda6fe, type: 3}
......
...@@ -10,6 +10,22 @@ namespace MDPro3.UI ...@@ -10,6 +10,22 @@ namespace MDPro3.UI
{ {
public class CardList : MonoBehaviour public class CardList : MonoBehaviour
{ {
const float SingleColumnItemStep = 140f;
const int ExtraDeckColumns = 3;
const float ExtraDeckBaseItemWidth = 78f;
const float ExtraDeckVisualItemHeight = 124f;
const float ExtraDeckScrollbarWidth = 20f;
const float ExtraDeckHorizontalInset = 10f;
const float ExtraDeckHorizontalGap = 16f;
const float ExtraDeckVerticalGap = 20f;
const float ExtraDeckRowLineHeight = 2f;
const float ExtraDeckToggleButtonWidth = 64f;
const float ExtraDeckToggleButtonHeight = 62f;
const float ExtraDeckToggleButtonIconSize = 42f;
const float ExtraDeckToggleButtonOverlap = 4f;
const float ExtraDeckToggleButtonTopInset = 0f;
const float HiddenPadding = 20f;
public RectTransform baseRect; public RectTransform baseRect;
public Image locationIcon; public Image locationIcon;
public ScrollRect scrollRect; public ScrollRect scrollRect;
...@@ -23,6 +39,11 @@ namespace MDPro3.UI ...@@ -23,6 +39,11 @@ namespace MDPro3.UI
CardLocation location; CardLocation location;
int controller; int controller;
bool showWithCloseDuelLog = false; bool showWithCloseDuelLog = false;
float defaultBaseWidth = -1f;
bool extraDeckGridMode = false;
Button extraDeckModeButton;
Image extraDeckModeButtonIcon;
public void Show(List<GameCard> cards, CardLocation location, int controller) public void Show(List<GameCard> cards, CardLocation location, int controller)
{ {
if(OcgCore.cantCheckGrave && location == CardLocation.Grave) if(OcgCore.cantCheckGrave && location == CardLocation.Grave)
...@@ -31,9 +52,12 @@ namespace MDPro3.UI ...@@ -31,9 +52,12 @@ namespace MDPro3.UI
return; return;
} }
var previousLocation = this.location;
this.cards = cards; this.cards = cards;
this.location = location; this.location = location;
this.controller = controller; this.controller = controller;
if ((this.location & CardLocation.Extra) > 0 && (!showing || (previousLocation & CardLocation.Extra) == 0))
extraDeckGridMode = false;
if (!showing) if (!showing)
{ {
...@@ -48,7 +72,7 @@ namespace MDPro3.UI ...@@ -48,7 +72,7 @@ namespace MDPro3.UI
} }
else else
{ {
baseRect.DOAnchorPosX(150, transitionTime).OnComplete(() => baseRect.DOAnchorPosX(GetHiddenPosX(), transitionTime).OnComplete(() =>
{ {
RefreshList(); RefreshList();
baseRect.DOAnchorPosX(-30, transitionTime);// TODO: tween in tween baseRect.DOAnchorPosX(-30, transitionTime);// TODO: tween in tween
...@@ -64,7 +88,9 @@ namespace MDPro3.UI ...@@ -64,7 +88,9 @@ namespace MDPro3.UI
if (!showing) if (!showing)
return; return;
showing = false; showing = false;
baseRect.DOAnchorPosX(150f * Config.GetUIScale(1.18f) + SafeAreaAdapter.GetSafeAreaRightOffset(), 0.3f); if (extraDeckModeButton != null)
extraDeckModeButton.gameObject.SetActive(false);
baseRect.DOAnchorPosX(GetHiddenPosX(), 0.3f);
if(showWithCloseDuelLog) if(showWithCloseDuelLog)
{ {
showWithCloseDuelLog = false; showWithCloseDuelLog = false;
...@@ -74,21 +100,227 @@ namespace MDPro3.UI ...@@ -74,21 +100,227 @@ namespace MDPro3.UI
void RefreshList() void RefreshList()
{ {
EnsureWidthForLocation();
EnsureExtraDeckModeToggle();
UpdateExtraDeckModeToggle();
locationIcon.sprite = GetListLocationIcon(location, controller); locationIcon.sprite = GetListLocationIcon(location, controller);
ClearList(); ClearList();
scrollRect.content.sizeDelta = new Vector2(scrollRect.content.sizeDelta.x, 140 * cards.Count);
if (ShouldUseExtraDeckGrid())
{
RefreshExtraDeckGrid();
return;
}
scrollRect.content.sizeDelta = new Vector2(scrollRect.content.sizeDelta.x, SingleColumnItemStep * cards.Count);
for (int i = 0; i < cards.Count; i++)
{
var go = Instantiate(item);
go.SetActive(true);
cardObjs.Add(go);
go.transform.SetParent(scrollRect.content, false);
go.GetComponent<RectTransform>().anchoredPosition = new Vector2(0, -SingleColumnItemStep * (cards.Count - 1 - i));
var mono = go.GetComponent<CardListItem>();
mono.card = cards[i];
}
}
void RefreshExtraDeckGrid()
{
var rowCount = Mathf.CeilToInt(cards.Count / (float)ExtraDeckColumns);
var usableWidth = Mathf.Max(ExtraDeckBaseItemWidth,
baseRect.rect.width - ExtraDeckScrollbarWidth - ExtraDeckHorizontalInset * 2f);
var itemScale = Mathf.Clamp(
(usableWidth - ExtraDeckHorizontalGap * (ExtraDeckColumns - 1)) / (ExtraDeckBaseItemWidth * ExtraDeckColumns),
0.35f, 1f);
var scaledItemWidth = ExtraDeckBaseItemWidth * itemScale;
var scaledItemHeight = ExtraDeckVisualItemHeight * itemScale;
var rowHeight = scaledItemHeight + ExtraDeckVerticalGap;
var usedWidth = scaledItemWidth * ExtraDeckColumns + ExtraDeckHorizontalGap * (ExtraDeckColumns - 1);
var startX = Mathf.Max(0f, (usableWidth - usedWidth) * 0.5f) + ExtraDeckHorizontalInset;
scrollRect.content.sizeDelta = new Vector2(scrollRect.content.sizeDelta.x, rowHeight * rowCount);
AddExtraDeckRowLines(rowCount, usableWidth, rowHeight);
for (int i = 0; i < cards.Count; i++) for (int i = 0; i < cards.Count; i++)
{ {
var go = Instantiate(item); var go = Instantiate(item);
go.SetActive(true); go.SetActive(true);
cardObjs.Add(go); cardObjs.Add(go);
go.transform.SetParent(scrollRect.content, false); go.transform.SetParent(scrollRect.content, false);
go.GetComponent<RectTransform>().anchoredPosition = new Vector2(0, -140 * (cards.Count - 1 - i));
var visualIndex = cards.Count - 1 - i;
var row = visualIndex / ExtraDeckColumns;
var column = visualIndex % ExtraDeckColumns;
var rect = go.GetComponent<RectTransform>();
rect.anchorMin = new Vector2(0f, 1f);
rect.anchorMax = new Vector2(0f, 1f);
rect.pivot = new Vector2(0f, 1f);
rect.sizeDelta = new Vector2(ExtraDeckBaseItemWidth, ExtraDeckRowLineHeight);
rect.localScale = Vector3.one * itemScale;
rect.anchoredPosition = new Vector2(
startX + column * (scaledItemWidth + ExtraDeckHorizontalGap),
-row * rowHeight);
if (go.TryGetComponent(out Image cardLineImage))
{
var c = cardLineImage.color;
c.a = 0f;
cardLineImage.color = c;
}
var mono = go.GetComponent<CardListItem>(); var mono = go.GetComponent<CardListItem>();
mono.card = cards[i]; mono.card = cards[i];
} }
} }
void AddExtraDeckRowLines(int rowCount, float usableWidth, float rowHeight)
{
var lineSprite = item != null && item.TryGetComponent(out Image itemBg) ? itemBg.sprite : null;
for (int i = 0; i <= rowCount; i++)
{
var line = new GameObject($"ExtraDeckRowLine_{i}", typeof(RectTransform), typeof(CanvasRenderer), typeof(Image));
line.transform.SetParent(scrollRect.content, false);
cardObjs.Add(line);
var lineRect = line.GetComponent<RectTransform>();
lineRect.anchorMin = new Vector2(0f, 1f);
lineRect.anchorMax = new Vector2(0f, 1f);
lineRect.pivot = new Vector2(0f, 1f);
lineRect.sizeDelta = new Vector2(usableWidth, ExtraDeckRowLineHeight);
lineRect.anchoredPosition = new Vector2(ExtraDeckHorizontalInset, -i * rowHeight);
var image = line.GetComponent<Image>();
image.sprite = lineSprite;
image.type = Image.Type.Simple;
image.color = new Color(0.85f, 0.85f, 0.85f, 0.85f);
image.raycastTarget = false;
}
}
void EnsureWidthForLocation()
{
if (defaultBaseWidth < 0f)
defaultBaseWidth = baseRect.sizeDelta.x;
var targetWidth = defaultBaseWidth;
if (ShouldUseExtraDeckGrid())
targetWidth = Mathf.Max(defaultBaseWidth, GetExtraDeckRequiredWidth());
if (!Mathf.Approximately(baseRect.sizeDelta.x, targetWidth))
baseRect.sizeDelta = new Vector2(targetWidth, baseRect.sizeDelta.y);
}
float GetExtraDeckRequiredWidth()
{
return ExtraDeckScrollbarWidth
+ ExtraDeckHorizontalInset * 2f
+ ExtraDeckBaseItemWidth * ExtraDeckColumns
+ ExtraDeckHorizontalGap * (ExtraDeckColumns - 1);
}
bool ShouldUseExtraDeckGrid()
{
return (location & CardLocation.Extra) > 0 && extraDeckGridMode;
}
void EnsureExtraDeckModeToggle()
{
if (extraDeckModeButton != null)
return;
var parent = baseRect;
if (parent == null)
return;
var go = new GameObject("ExtraDeckViewToggle", typeof(RectTransform), typeof(CanvasRenderer), typeof(Image), typeof(Button));
go.transform.SetParent(parent, false);
go.transform.SetSiblingIndex(0);
var rect = go.GetComponent<RectTransform>();
rect.anchorMin = new Vector2(0f, 1f);
rect.anchorMax = new Vector2(0f, 1f);
rect.pivot = new Vector2(0f, 1f);
rect.anchoredPosition = new Vector2(GetExtraDeckToggleAnchoredX(), -ExtraDeckToggleButtonTopInset);
rect.sizeDelta = new Vector2(ExtraDeckToggleButtonWidth, ExtraDeckToggleButtonHeight);
var bgImage = go.GetComponent<Image>();
var baseImage = baseRect != null ? baseRect.GetComponent<Image>() : null;
if (baseImage != null)
{
bgImage.sprite = baseImage.sprite;
bgImage.type = baseImage.type;
bgImage.color = baseImage.color;
}
bgImage.raycastTarget = true;
extraDeckModeButton = go.GetComponent<Button>();
extraDeckModeButton.targetGraphic = bgImage;
extraDeckModeButton.onClick.AddListener(OnExtraDeckModeButtonClick);
var icon = new GameObject("Icon", typeof(RectTransform), typeof(CanvasRenderer), typeof(Image));
icon.transform.SetParent(go.transform, false);
var iconRect = icon.GetComponent<RectTransform>();
iconRect.anchorMin = new Vector2(0.5f, 0.5f);
iconRect.anchorMax = new Vector2(0.5f, 0.5f);
iconRect.pivot = new Vector2(0.5f, 0.5f);
iconRect.anchoredPosition = Vector2.zero;
iconRect.sizeDelta = new Vector2(ExtraDeckToggleButtonIconSize, ExtraDeckToggleButtonIconSize);
extraDeckModeButtonIcon = icon.GetComponent<Image>();
extraDeckModeButtonIcon.preserveAspect = true;
extraDeckModeButtonIcon.color = Color.white;
extraDeckModeButtonIcon.raycastTarget = false;
}
void UpdateExtraDeckModeToggle()
{
if (extraDeckModeButton == null || extraDeckModeButtonIcon == null)
return;
var isExtraLocation = (location & CardLocation.Extra) > 0;
extraDeckModeButton.gameObject.SetActive(isExtraLocation);
if (!isExtraLocation)
return;
if (ShouldUseExtraDeckGrid())
extraDeckModeButtonIcon.sprite = TextureManager.container.listViewIconDefault != null
? TextureManager.container.listViewIconDefault
: TextureManager.container.listMyDeck;
else
extraDeckModeButtonIcon.sprite = TextureManager.container.listViewIconExpand != null
? TextureManager.container.listViewIconExpand
: (controller == 0 ? TextureManager.container.listMyDeck : TextureManager.container.listOpDeck);
}
void OnExtraDeckModeButtonClick()
{
if ((location & CardLocation.Extra) == 0)
return;
extraDeckGridMode = !extraDeckGridMode;
RefreshList();
}
float GetHiddenPosX()
{
return (baseRect.sizeDelta.x + HiddenPadding + GetToggleLeftProtrusion()) * Config.GetUIScale(1.18f)
+ SafeAreaAdapter.GetSafeAreaRightOffset();
}
float GetToggleLeftProtrusion()
{
if (extraDeckModeButton == null || !extraDeckModeButton.gameObject.activeSelf)
return 0f;
if (extraDeckModeButton.transform is RectTransform rt)
return Mathf.Max(0f, -rt.anchoredPosition.x);
return Mathf.Max(0f, -GetExtraDeckToggleAnchoredX());
}
float GetExtraDeckToggleAnchoredX()
{
return -ExtraDeckToggleButtonWidth + ExtraDeckToggleButtonOverlap;
}
void ClearList() void ClearList()
{ {
foreach (var obj in cardObjs) foreach (var obj in cardObjs)
......
...@@ -298,6 +298,9 @@ namespace MDPro3 ...@@ -298,6 +298,9 @@ namespace MDPro3
public Sprite listOpRemoved; public Sprite listOpRemoved;
public Sprite listMyXyz; public Sprite listMyXyz;
public Sprite listOpXyz; public Sprite listOpXyz;
public Sprite listSingleColumn;
public Sprite listViewIconExpand;
public Sprite listViewIconDefault;
[Header("Card Affect")] [Header("Card Affect")]
public Sprite CardAffectDisable; public Sprite CardAffectDisable;
......
fileFormatVersion: 2
guid: 9f9e97c267d35b84db512595c857ffba
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: WindowsStoreApps
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 838190b6b8c45334bab89da28a238150
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: WindowsStoreApps
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment