Merge branch 'wl/ui/WL-816b-weapon-costume'
|
|
@ -0,0 +1,26 @@
|
|||
=== WL-816b 최종 굽기 (덩어리 16 · 팔레트 12칸 · 32×32 · Point · 밉 OFF · 무압축) ===
|
||||
기준 머티리얼 M05_ToonP shader=Shader Graphs/Toon _Shades=3 _DiffuseColor=RGBA(0.993, 1.028, 0.874, 1.000)
|
||||
PP_Theme_10_Mace_003 c16 p12 → 덩어리 26 칸 12 verts 7719→7719 tris 3848 dHue mean 2.96 max 3.91
|
||||
→ mesh Assets/WL/Look/Character/Meshes/PP_Theme_10_Mace_003_PAL.asset · pal Assets/WL/Look/Character/Textures/WLPaletteW_PP_Theme_10_Mace_003.png · mat Assets/WL/Look/Character/Materials/PP_Theme_10_Mace_003_ToonP.mat
|
||||
PP_Theme_10_Shield_003 c16 p12 → 덩어리 64 칸 12 verts 7671→7671 tris 4230 dHue mean 0.00 max 0.00
|
||||
→ mesh Assets/WL/Look/Character/Meshes/PP_Theme_10_Shield_003_PAL.asset · pal Assets/WL/Look/Character/Textures/WLPaletteW_PP_Theme_10_Shield_003.png · mat Assets/WL/Look/Character/Materials/PP_Theme_10_Shield_003_ToonP.mat
|
||||
Elven_Sword_01 c16 p12 → 덩어리 16 칸 12 verts 444→500 tris 404 dHue mean 1.35 max 5.95
|
||||
→ mesh Assets/WL/Look/Character/Meshes/Elven_Sword_01_PAL.asset · pal Assets/WL/Look/Character/Textures/WLPaletteW_Elven_Sword_01.png · mat Assets/WL/Look/Character/Materials/Elven_Sword_01_ToonP.mat
|
||||
PP_Theme_08_Mace_003 c16 p12 → 덩어리 106 칸 12 verts 18852→18852 tris 6688 dHue mean 0.07 max 0.47
|
||||
→ mesh Assets/WL/Look/Character/Meshes/PP_Theme_08_Mace_003_PAL.asset · pal Assets/WL/Look/Character/Textures/WLPaletteW_PP_Theme_08_Mace_003.png · mat Assets/WL/Look/Character/Materials/PP_Theme_08_Mace_003_ToonP.mat
|
||||
PP_Theme_08_Shield_003 c16 p12 → 덩어리 28 칸 12 verts 9168→9168 tris 4586 dHue mean 0.02 max 0.28
|
||||
→ mesh Assets/WL/Look/Character/Meshes/PP_Theme_08_Shield_003_PAL.asset · pal Assets/WL/Look/Character/Textures/WLPaletteW_PP_Theme_08_Shield_003.png · mat Assets/WL/Look/Character/Materials/PP_Theme_08_Shield_003_ToonP.mat
|
||||
PP_Theme_05_Bow_003 c16 p12 → 덩어리 54 칸 12 verts 12070→12070 tris 5780 dHue mean 0.00 max 0.00
|
||||
→ mesh Assets/WL/Look/Character/Meshes/PP_Theme_05_Bow_003_PAL.asset · pal Assets/WL/Look/Character/Textures/WLPaletteW_PP_Theme_05_Bow_003.png · mat Assets/WL/Look/Character/Materials/PP_Theme_05_Bow_003_ToonP.mat
|
||||
PP_Theme_05_Bow_004 c16 p12 → 덩어리 100 칸 12 verts 9682→9682 tris 4586 dHue mean 0.01 max 0.03
|
||||
→ mesh Assets/WL/Look/Character/Meshes/PP_Theme_05_Bow_004_PAL.asset · pal Assets/WL/Look/Character/Textures/WLPaletteW_PP_Theme_05_Bow_004.png · mat Assets/WL/Look/Character/Materials/PP_Theme_05_Bow_004_ToonP.mat
|
||||
PP_Theme_03_Scepter_001 c16 p12 → 덩어리 49 칸 12 verts 8464→8464 tris 4184 dHue mean 0.00 max 0.00
|
||||
→ mesh Assets/WL/Look/Character/Meshes/PP_Theme_03_Scepter_001_PAL.asset · pal Assets/WL/Look/Character/Textures/WLPaletteW_PP_Theme_03_Scepter_001.png · mat Assets/WL/Look/Character/Materials/PP_Theme_03_Scepter_001_ToonP.mat
|
||||
PP_Theme_03_Wand_001 c16 p12 → 덩어리 32 칸 12 verts 4749→4749 tris 2296 dHue mean 0.13 max 0.60
|
||||
→ mesh Assets/WL/Look/Character/Meshes/PP_Theme_03_Wand_001_PAL.asset · pal Assets/WL/Look/Character/Textures/WLPaletteW_PP_Theme_03_Wand_001.png · mat Assets/WL/Look/Character/Materials/PP_Theme_03_Wand_001_ToonP.mat
|
||||
Dagger1 c16 p12 → 덩어리 16 칸 12 verts 91→131 tris 76 dHue mean 0.01 max 0.02
|
||||
→ mesh Assets/WL/Look/Character/Meshes/Dagger1_PAL.asset · pal Assets/WL/Look/Character/Textures/WLPaletteW_Dagger1.png · mat Assets/WL/Look/Character/Materials/Dagger1_ToonP.mat
|
||||
Dagger2 c16 p12 → 덩어리 16 칸 12 verts 91→131 tris 76 dHue mean 0.01 max 0.02
|
||||
→ mesh Assets/WL/Look/Character/Meshes/Dagger2_PAL.asset · pal Assets/WL/Look/Character/Textures/WLPaletteW_Dagger2.png · mat Assets/WL/Look/Character/Materials/Dagger2_ToonP.mat
|
||||
|
||||
SO 배선: 무기 11종 · weaponEnabled_=1 · 캐릭터 행 6 무변경
|
||||
|
|
@ -0,0 +1,545 @@
|
|||
// WL-816b — 무기 팔레트 아틀라스 UV 굽기 (814x `WLXBake` 방식을 무기(정적 메시)용으로)
|
||||
// run_script --file AgentScripts/WL816b_Bake.cs --entry WL816bBake.Sweep (에디트 모드)
|
||||
//
|
||||
// 🔴 원본 수정 0 — 원본 메시·텍스처는 **읽기만** 한다. 산출물은 전부 Assets/WL/Look/Character/ 아래 신규 파일.
|
||||
// 🔴 Hue 는 원본 복원 + ±8° 하드 클램프(814v 올리브·814x 초록 사고 재발 방지 · 전역 채널 이득 금지).
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
public static class WL816bBake
|
||||
{
|
||||
public const string MESH_DIR = "Assets/WL/Look/Character/Meshes/";
|
||||
public const string TEX_DIR = "Assets/WL/Look/Character/Textures/";
|
||||
public const string MAT_DIR = "Assets/WL/Look/Character/Materials/";
|
||||
public const string WDIR = "Assets/Res_Addr/Weapon/";
|
||||
const int CELL = 8;
|
||||
const float HUE_LIMIT = 8f; // 🔴 ±8°
|
||||
|
||||
static readonly StringBuilder sb = new StringBuilder();
|
||||
static void L(string s) { sb.AppendLine(s); }
|
||||
|
||||
// ───────────────────────────── 색공간 (814x §4: 평균은 sRGB 에서 낸다)
|
||||
static float S2L(float c) { return c <= 0.04045f ? c / 12.92f : Mathf.Pow((c + 0.055f) / 1.055f, 2.4f); }
|
||||
public struct Lab { public float L, a, b; }
|
||||
public static Lab ToLab(Vector3 srgb)
|
||||
{
|
||||
var lin = new Vector3(S2L(srgb.x), S2L(srgb.y), S2L(srgb.z));
|
||||
float x = 0.4124f * lin.x + 0.3576f * lin.y + 0.1805f * lin.z;
|
||||
float y = 0.2126f * lin.x + 0.7152f * lin.y + 0.0722f * lin.z;
|
||||
float z = 0.0193f * lin.x + 0.1192f * lin.y + 0.9505f * lin.z;
|
||||
x /= 0.95047f; z /= 1.08883f;
|
||||
Func<float, float> f = t => t > 0.008856f ? Mathf.Pow(t, 1f / 3f) : (7.787f * t + 16f / 116f);
|
||||
float fx = f(x), fy = f(y), fz = f(z);
|
||||
return new Lab { L = 116f * fy - 16f, a = 500f * (fx - fy), b = 200f * (fy - fz) };
|
||||
}
|
||||
static float LabD(Lab p, Lab q) { float dl = p.L - q.L, da = p.a - q.a, db = p.b - q.b; return Mathf.Sqrt(dl * dl + da * da + db * db); }
|
||||
public static void RgbToHsv(Vector3 c, out float h, out float s, out float v)
|
||||
{
|
||||
float r = c.x, g = c.y, b = c.z;
|
||||
float mx = Mathf.Max(r, Mathf.Max(g, b)), mn = Mathf.Min(r, Mathf.Min(g, b)), d = mx - mn;
|
||||
h = 0f;
|
||||
if (d > 1e-6f)
|
||||
{
|
||||
if (mx == r) h = ((g - b) / d + 6f) % 6f;
|
||||
else if (mx == g) h = (b - r) / d + 2f;
|
||||
else h = (r - g) / d + 4f;
|
||||
}
|
||||
h *= 60f; s = mx > 1e-6f ? d / mx : 0f; v = mx;
|
||||
}
|
||||
static Vector3 HsvToRgb(float h, float s, float v)
|
||||
{
|
||||
var c = Color.HSVToRGB(((h % 360f) + 360f) % 360f / 360f, Mathf.Clamp01(s), Mathf.Clamp01(v), false);
|
||||
return new Vector3(c.r, c.g, c.b);
|
||||
}
|
||||
static float DHue(float a, float b) { return (b - a + 540f) % 360f - 180f; }
|
||||
|
||||
// ───────────────────────────── 텍스처 읽기 (원본 임포터 무수정)
|
||||
/// <summary>비readable 텍스처를 임포터를 건드리지 않고 sRGB 바이트로 읽는다(원본 meta 수정 0).</summary>
|
||||
public static Texture2D ReadAny(Texture src)
|
||||
{
|
||||
var rt = RenderTexture.GetTemporary(src.width, src.height, 0, RenderTextureFormat.ARGB32, RenderTextureReadWrite.sRGB);
|
||||
var t2d = src as Texture2D; var prevF = t2d != null ? t2d.filterMode : FilterMode.Point;
|
||||
if (t2d != null) t2d.filterMode = FilterMode.Point;
|
||||
Graphics.Blit(src, rt);
|
||||
if (t2d != null) t2d.filterMode = prevF;
|
||||
var prev = RenderTexture.active; RenderTexture.active = rt;
|
||||
var t = new Texture2D(src.width, src.height, TextureFormat.RGBA32, false);
|
||||
t.ReadPixels(new Rect(0, 0, src.width, src.height), 0, 0); t.Apply();
|
||||
RenderTexture.active = prev; RenderTexture.ReleaseTemporary(rt);
|
||||
return t;
|
||||
}
|
||||
|
||||
class Tex { public int w, h; public Vector3[] px; }
|
||||
static readonly Dictionary<string, Tex> s_tex = new Dictionary<string, Tex>();
|
||||
static Tex LoadTex(string path)
|
||||
{
|
||||
Tex t;
|
||||
if (s_tex.TryGetValue(path, out t)) return t;
|
||||
Texture2D tmp = null; bool destroy = true;
|
||||
if (path.EndsWith(".png", StringComparison.OrdinalIgnoreCase) && File.Exists(path))
|
||||
{
|
||||
tmp = new Texture2D(2, 2, TextureFormat.RGBA32, false);
|
||||
tmp.LoadImage(File.ReadAllBytes(path)); // 🔴 디스크 원본(무압축) — 압축 아티팩트 배제
|
||||
}
|
||||
else
|
||||
{
|
||||
tmp = ReadAny(AssetDatabase.LoadAssetAtPath<Texture2D>(path)); // .psd 등은 RT 블릿(임포터 무수정)
|
||||
}
|
||||
var p32 = tmp.GetPixels32();
|
||||
t = new Tex { w = tmp.width, h = tmp.height, px = new Vector3[p32.Length] };
|
||||
for (int i = 0; i < p32.Length; i++) t.px[i] = new Vector3(p32[i].r / 255f, p32[i].g / 255f, p32[i].b / 255f);
|
||||
if (destroy) UnityEngine.Object.DestroyImmediate(tmp);
|
||||
s_tex[path] = t;
|
||||
return t;
|
||||
}
|
||||
static Vector3 Sample(Tex t, float u, float v)
|
||||
{
|
||||
int x = Mathf.Clamp(Mathf.FloorToInt(u * t.w), 0, t.w - 1);
|
||||
int y = Mathf.Clamp(Mathf.FloorToInt(v * t.h), 0, t.h - 1);
|
||||
return t.px[y * t.w + x];
|
||||
}
|
||||
static Vector3 TriAvg(Tex tex, Vector2 a, Vector2 b, Vector2 c)
|
||||
{
|
||||
float au = a.x * tex.w, av = a.y * tex.h, bu = b.x * tex.w, bv = b.y * tex.h, cu = c.x * tex.w, cv = c.y * tex.h;
|
||||
float areaTexels = Mathf.Abs((bu - au) * (cv - av) - (cu - au) * (bv - av)) * 0.5f;
|
||||
int n = Mathf.Clamp(Mathf.CeilToInt(Mathf.Sqrt(areaTexels)) * 2, 8, 64);
|
||||
Vector3 sum = Vector3.zero; int cnt = 0;
|
||||
for (int i = 0; i < n; i++)
|
||||
for (int j = 0; j < n - i; j++)
|
||||
{
|
||||
float w0 = (i + 1f / 3f) / n, w1 = (j + 1f / 3f) / n;
|
||||
if (1f - w0 - w1 < 0f) continue;
|
||||
var uv = a * (1f - w0 - w1) + b * w0 + c * w1;
|
||||
sum += Sample(tex, uv.x, uv.y); cnt++;
|
||||
}
|
||||
if (cnt == 0) return Sample(tex, (a.x + b.x + c.x) / 3f, (a.y + b.y + c.y) / 3f);
|
||||
return sum / cnt;
|
||||
}
|
||||
|
||||
// ───────────────────────────── 덩어리
|
||||
class Face { public int i0, i1, i2; public Vector3 col; public float area; }
|
||||
class Region { public Vector3 sum; public float area; public int count; public float hx, hy, sw; public Vector3 Col { get { return sum / Mathf.Max(area, 1e-9f); } } }
|
||||
|
||||
static long Key(Vector3 v)
|
||||
{
|
||||
long x = (long)Mathf.RoundToInt(v.x * 10000f) & 0x1FFFFF;
|
||||
long y = (long)Mathf.RoundToInt(v.y * 10000f) & 0x1FFFFF;
|
||||
long z = (long)Mathf.RoundToInt(v.z * 10000f) & 0x1FFFFF;
|
||||
return (x << 42) | (y << 21) | z;
|
||||
}
|
||||
static int Find(int[] uf, int i) { while (uf[i] != i) { uf[i] = uf[uf[i]]; i = uf[i]; } return i; }
|
||||
static float Cost(Region a, Region b)
|
||||
{
|
||||
float d = LabD(ToLab(a.Col), ToLab(b.Col));
|
||||
float w = (a.area * b.area) / Mathf.Max(a.area + b.area, 1e-9f);
|
||||
return d * d * w;
|
||||
}
|
||||
static void AccHue(Region r, Vector3 c, float area)
|
||||
{
|
||||
float h, s, v; RgbToHsv(c, out h, out s, out v);
|
||||
float w = s * area;
|
||||
r.hx += w * Mathf.Cos(h * Mathf.Deg2Rad); r.hy += w * Mathf.Sin(h * Mathf.Deg2Rad); r.sw += w;
|
||||
}
|
||||
|
||||
static int Merge(int[] uf, Region[] reg, List<KeyValuePair<int, int>> adj, int target)
|
||||
{
|
||||
var ver = new int[uf.Length];
|
||||
var pq = new SortedSet<(float cost, int a, int b, int va, int vb)>(Comparer<(float, int, int, int, int)>.Create((p, q) =>
|
||||
{
|
||||
int c = p.Item1.CompareTo(q.Item1); if (c != 0) return c;
|
||||
c = p.Item2.CompareTo(q.Item2); if (c != 0) return c;
|
||||
c = p.Item3.CompareTo(q.Item3); if (c != 0) return c;
|
||||
c = p.Item4.CompareTo(q.Item4); if (c != 0) return c;
|
||||
return p.Item5.CompareTo(q.Item5);
|
||||
}));
|
||||
var nb = new Dictionary<int, HashSet<int>>();
|
||||
foreach (var e in adj)
|
||||
{
|
||||
HashSet<int> sa, sbb;
|
||||
if (!nb.TryGetValue(e.Key, out sa)) { sa = new HashSet<int>(); nb[e.Key] = sa; }
|
||||
if (!nb.TryGetValue(e.Value, out sbb)) { sbb = new HashSet<int>(); nb[e.Value] = sbb; }
|
||||
sa.Add(e.Value); sbb.Add(e.Key);
|
||||
}
|
||||
foreach (var kv in nb) foreach (var o in kv.Value) if (kv.Key < o) pq.Add((Cost(reg[kv.Key], reg[o]), kv.Key, o, 0, 0));
|
||||
int count = uf.Length;
|
||||
while (count > target && pq.Count > 0)
|
||||
{
|
||||
var e = pq.Min; pq.Remove(e);
|
||||
int a = Find(uf, e.a), b = Find(uf, e.b);
|
||||
if (a == b) continue;
|
||||
int lo = Mathf.Min(a, b), hi = Mathf.Max(a, b);
|
||||
if (ver[a] != e.va || ver[b] != e.vb) { pq.Add((Cost(reg[a], reg[b]), lo, hi, ver[lo], ver[hi])); continue; }
|
||||
if (count <= 2) break;
|
||||
uf[b] = a;
|
||||
reg[a].sum += reg[b].sum; reg[a].area += reg[b].area; reg[a].count += reg[b].count;
|
||||
reg[a].hx += reg[b].hx; reg[a].hy += reg[b].hy; reg[a].sw += reg[b].sw;
|
||||
ver[a]++; count--;
|
||||
HashSet<int> sb2;
|
||||
if (nb.TryGetValue(b, out sb2))
|
||||
{
|
||||
HashSet<int> sa2;
|
||||
if (!nb.TryGetValue(a, out sa2)) { sa2 = new HashSet<int>(); nb[a] = sa2; }
|
||||
foreach (var o in sb2)
|
||||
{
|
||||
int r = Find(uf, o); if (r == a) continue;
|
||||
sa2.Add(r);
|
||||
HashSet<int> sr; if (nb.TryGetValue(r, out sr)) sr.Add(a);
|
||||
int l2 = Mathf.Min(a, r), h2 = Mathf.Max(a, r);
|
||||
pq.Add((Cost(reg[a], reg[r]), l2, h2, ver[l2], ver[h2]));
|
||||
}
|
||||
}
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
static Vector3[] KMeans(Vector3[] cols, float[] wts, int k)
|
||||
{
|
||||
int n = cols.Length;
|
||||
var labs = cols.Select(ToLab).ToArray();
|
||||
var cent = new Lab[k]; var centRgb = new Vector3[k];
|
||||
var rnd = new System.Random(12345);
|
||||
var d2 = new float[n];
|
||||
int first = 0; float bw = -1;
|
||||
for (int i = 0; i < n; i++) if (wts[i] > bw) { bw = wts[i]; first = i; }
|
||||
cent[0] = labs[first]; centRgb[0] = cols[first];
|
||||
for (int j = 1; j < k; j++)
|
||||
{
|
||||
double tot = 0;
|
||||
for (int i = 0; i < n; i++)
|
||||
{
|
||||
float best = float.MaxValue;
|
||||
for (int q = 0; q < j; q++) { float d = LabD(labs[i], cent[q]); if (d < best) best = d; }
|
||||
d2[i] = best * best * wts[i]; tot += d2[i];
|
||||
}
|
||||
double pick = rnd.NextDouble() * tot, acc = 0; int sel = n - 1;
|
||||
for (int i = 0; i < n; i++) { acc += d2[i]; if (acc >= pick) { sel = i; break; } }
|
||||
cent[j] = labs[sel]; centRgb[j] = cols[sel];
|
||||
}
|
||||
var asg = new int[n];
|
||||
for (int it = 0; it < 80; it++)
|
||||
{
|
||||
bool ch = false;
|
||||
for (int i = 0; i < n; i++)
|
||||
{
|
||||
float bd = float.MaxValue; int bj = 0;
|
||||
for (int j = 0; j < k; j++) { float d = LabD(labs[i], cent[j]); if (d < bd) { bd = d; bj = j; } }
|
||||
if (asg[i] != bj) { asg[i] = bj; ch = true; }
|
||||
}
|
||||
var sumRgb = new Vector3[k]; var sw = new double[k];
|
||||
for (int i = 0; i < n; i++) { sumRgb[asg[i]] += cols[i] * wts[i]; sw[asg[i]] += wts[i]; }
|
||||
for (int j = 0; j < k; j++) if (sw[j] > 1e-9) { centRgb[j] = sumRgb[j] / (float)sw[j]; cent[j] = ToLab(centRgb[j]); }
|
||||
if (!ch) break;
|
||||
}
|
||||
return centRgb;
|
||||
}
|
||||
|
||||
// ───────────────────────────── 결과
|
||||
public class WRes
|
||||
{
|
||||
public string weapon; public Mesh mesh; public Vector3[] palette;
|
||||
public int regions, palUsed, vBefore, vAfter, tris;
|
||||
public float meanDHue, maxDHue; public string palPath, meshPath;
|
||||
}
|
||||
|
||||
public static Mesh SrcMesh(string weapon, out string texPath, out Renderer rend)
|
||||
{
|
||||
texPath = null; rend = null;
|
||||
var pf = AssetDatabase.LoadAssetAtPath<GameObject>(WDIR + weapon + ".prefab");
|
||||
if (pf == null) return null;
|
||||
var mf = pf.GetComponentInChildren<MeshFilter>(true);
|
||||
if (mf == null || mf.sharedMesh == null) return null;
|
||||
rend = mf.GetComponent<Renderer>();
|
||||
var mt = rend != null ? rend.sharedMaterial : null;
|
||||
Texture t = null;
|
||||
if (mt != null && mt.HasProperty("_BaseMap")) t = mt.GetTexture("_BaseMap");
|
||||
if (t == null && mt != null && mt.HasProperty("_MainTex")) t = mt.GetTexture("_MainTex");
|
||||
texPath = t == null ? null : AssetDatabase.GetAssetPath(t);
|
||||
return mf.sharedMesh;
|
||||
}
|
||||
|
||||
/// <summary>무기 1종을 굽는다. save=false 면 수치만 낸다(스윕용).</summary>
|
||||
public static WRes Bake(string weapon, int chunkTarget, int paletteN, string tag, bool save)
|
||||
{
|
||||
string texPath; Renderer rend;
|
||||
var src = SrcMesh(weapon, out texPath, out rend);
|
||||
if (src == null || string.IsNullOrEmpty(texPath)) { L(weapon + " : 메시/텍스처 없음 → 건너뜀"); return null; }
|
||||
var tex = LoadTex(texPath);
|
||||
var vt = src.vertices; var uv = src.uv; var tr = src.triangles;
|
||||
|
||||
var faces = new List<Face>(tr.Length / 3);
|
||||
for (int t = 0; t < tr.Length; t += 3)
|
||||
{
|
||||
int a = tr[t], b = tr[t + 1], c = tr[t + 2];
|
||||
faces.Add(new Face
|
||||
{
|
||||
i0 = a, i1 = b, i2 = c,
|
||||
area = Vector3.Cross(vt[b] - vt[a], vt[c] - vt[a]).magnitude * 0.5f,
|
||||
col = TriAvg(tex, uv[a], uv[b], uv[c])
|
||||
});
|
||||
}
|
||||
|
||||
// 인접 = 위치 용접 후 공유 엣지
|
||||
var map = new Dictionary<long, int>(); var weld = new int[vt.Length];
|
||||
for (int i = 0; i < vt.Length; i++) { long k = Key(vt[i]); int id; if (!map.TryGetValue(k, out id)) { id = map.Count; map[k] = id; } weld[i] = id; }
|
||||
var edgeMap = new Dictionary<long, int>(); var adj = new List<KeyValuePair<int, int>>();
|
||||
for (int f = 0; f < faces.Count; f++)
|
||||
{
|
||||
var fa = faces[f]; int[] ii = { weld[fa.i0], weld[fa.i1], weld[fa.i2] };
|
||||
for (int e = 0; e < 3; e++)
|
||||
{
|
||||
int p = ii[e], q = ii[(e + 1) % 3];
|
||||
long k = p < q ? ((long)p << 32) | (uint)q : ((long)q << 32) | (uint)p;
|
||||
int other;
|
||||
if (edgeMap.TryGetValue(k, out other)) { if (other != f) adj.Add(new KeyValuePair<int, int>(other, f)); }
|
||||
else edgeMap[k] = f;
|
||||
}
|
||||
}
|
||||
|
||||
var regions = new Region[faces.Count]; var uf = new int[faces.Count];
|
||||
for (int i = 0; i < faces.Count; i++)
|
||||
{
|
||||
uf[i] = i;
|
||||
var r = new Region { sum = faces[i].col * faces[i].area, area = faces[i].area, count = 1 };
|
||||
AccHue(r, faces[i].col, faces[i].area);
|
||||
regions[i] = r;
|
||||
}
|
||||
int regionCount = Merge(uf, regions, adj, chunkTarget);
|
||||
|
||||
var roots = new List<int>();
|
||||
{ var seen = new HashSet<int>(); for (int i = 0; i < faces.Count; i++) { int r = Find(uf, i); if (seen.Add(r)) roots.Add(r); } }
|
||||
int N = Mathf.Min(paletteN, roots.Count);
|
||||
var pal = KMeans(roots.Select(r => regions[r].Col).ToArray(), roots.Select(r => regions[r].area).ToArray(), N);
|
||||
var assign = new int[roots.Count];
|
||||
for (int i = 0; i < roots.Count; i++)
|
||||
{
|
||||
var lab = ToLab(regions[roots[i]].Col);
|
||||
float bd = float.MaxValue; int bj = 0;
|
||||
for (int j = 0; j < N; j++) { float d = LabD(lab, ToLab(pal[j])); if (d < bd) { bd = d; bj = j; } }
|
||||
assign[i] = bj;
|
||||
}
|
||||
|
||||
// 🔴 칸의 H·S 를 원본(채도·면적 가중 원형평균)으로 복원 + ±8° 클램프. 전역 채널 이득 금지.
|
||||
var palS = new Vector3[N];
|
||||
for (int j = 0; j < N; j++)
|
||||
{
|
||||
double hx = 0, hy = 0, sw = 0, ssum = 0, aw = 0;
|
||||
for (int i = 0; i < roots.Count; i++)
|
||||
{
|
||||
if (assign[i] != j) continue;
|
||||
var reg = regions[roots[i]];
|
||||
hx += reg.hx; hy += reg.hy; sw += reg.sw;
|
||||
float h2, s2, v2; RgbToHsv(reg.Col, out h2, out s2, out v2);
|
||||
ssum += s2 * reg.area; aw += reg.area;
|
||||
}
|
||||
float ph, ps, pv; RgbToHsv(pal[j], out ph, out ps, out pv);
|
||||
float hue = sw > 1e-6 ? (float)((Math.Atan2(hy, hx) * 180.0 / Math.PI + 360.0) % 360.0) : ph;
|
||||
float d8 = DHue(ph, hue);
|
||||
if (Mathf.Abs(d8) > HUE_LIMIT) hue = ph + Mathf.Sign(d8) * HUE_LIMIT; // 🔴 ±8° 하드 클램프
|
||||
// 🔴 채도는 **되돌리지 않는다** — 칸 평균 채도(ssum/aw)를 쓰면 은·강철처럼 「평균은 회색인데
|
||||
// texel 마다 채도가 있는」 면에서 채도가 부풀어 **금속이 갈색으로 뜬다**(816b 1차 육안 기각의 원인).
|
||||
// ps = 면적가중 평균색 자체의 채도 = 정직한 값. (814x 는 부위별 SGain 으로 이 부풀림을 눌렀다)
|
||||
float satRestored = aw > 1e-6 ? (float)(ssum / aw) : ps;
|
||||
float sat = Mathf.Min(ps, satRestored);
|
||||
palS[j] = HsvToRgb(hue, sat, pv);
|
||||
}
|
||||
|
||||
double dsum = 0, dw = 0; float dmax = 0;
|
||||
for (int i = 0; i < roots.Count; i++)
|
||||
{
|
||||
var reg = regions[roots[i]];
|
||||
float h0, s0, v0, h1, s1, v1;
|
||||
RgbToHsv(reg.Col, out h0, out s0, out v0);
|
||||
RgbToHsv(palS[assign[i]], out h1, out s1, out v1);
|
||||
if (s0 < 0.08f) continue;
|
||||
float d = Mathf.Abs(DHue(h0, h1));
|
||||
dsum += d * reg.area; dw += reg.area; if (d > dmax) dmax = d;
|
||||
}
|
||||
|
||||
int G = Mathf.NextPowerOfTwo(Mathf.CeilToInt(Mathf.Sqrt(N)));
|
||||
var res = new WRes
|
||||
{
|
||||
weapon = weapon, palette = palS, regions = regionCount, palUsed = N,
|
||||
vBefore = src.vertexCount, tris = tr.Length / 3,
|
||||
meanDHue = dw > 1e-6 ? (float)(dsum / dw) : 0f, maxDHue = dmax
|
||||
};
|
||||
|
||||
var rootIndex = new Dictionary<int, int>();
|
||||
for (int i = 0; i < roots.Count; i++) rootIndex[roots[i]] = i;
|
||||
var nm = BuildMesh(src, faces, uf, rootIndex, assign, G);
|
||||
nm.name = weapon + "_PAL" + (string.IsNullOrEmpty(tag) ? "" : "_" + tag);
|
||||
res.mesh = nm; res.vAfter = nm.vertexCount;
|
||||
|
||||
if (save)
|
||||
{
|
||||
int S = G * CELL;
|
||||
res.palPath = TEX_DIR + "WLPaletteW_" + weapon + ".png";
|
||||
WritePalettePng(palS, N, G, S, res.palPath);
|
||||
Directory.CreateDirectory(MESH_DIR);
|
||||
res.meshPath = MESH_DIR + nm.name + ".asset";
|
||||
if (AssetDatabase.LoadAssetAtPath<Mesh>(res.meshPath) != null) AssetDatabase.DeleteAsset(res.meshPath);
|
||||
AssetDatabase.CreateAsset(nm, res.meshPath);
|
||||
AssetDatabase.SaveAssets();
|
||||
}
|
||||
L(string.Format("{0,-24} c{1,-3} p{2,-3} → 덩어리 {3,-3} 칸 {4,-3} verts {5}→{6} tris {7} dHue mean {8:F2} max {9:F2}",
|
||||
weapon, chunkTarget, paletteN, res.regions, res.palUsed, res.vBefore, res.vAfter, res.tris, res.meanDHue, res.maxDHue));
|
||||
return res;
|
||||
}
|
||||
|
||||
static Mesh BuildMesh(Mesh src, List<Face> faces, int[] uf, Dictionary<int, int> rootIndex, int[] assign, int G)
|
||||
{
|
||||
var vt = src.vertices; var nmv = src.normals; var tg = src.tangents;
|
||||
var map = new Dictionary<long, int>();
|
||||
var nv = new List<Vector3>(); var nn = new List<Vector3>(); var nt = new List<Vector4>();
|
||||
var nuv = new List<Vector2>(); var ntri = new List<int>();
|
||||
Func<int, int, int> get = (vi, pal) =>
|
||||
{
|
||||
long k = ((long)vi << 16) | (uint)pal; int id;
|
||||
if (map.TryGetValue(k, out id)) return id;
|
||||
id = nv.Count; map[k] = id;
|
||||
nv.Add(vt[vi]);
|
||||
if (nmv != null && nmv.Length > 0) nn.Add(nmv[vi]);
|
||||
if (tg != null && tg.Length > 0) nt.Add(tg[vi]);
|
||||
nuv.Add(new Vector2((pal % G + 0.5f) / G, (pal / G + 0.5f) / G));
|
||||
return id;
|
||||
};
|
||||
for (int f = 0; f < faces.Count; f++)
|
||||
{
|
||||
int pal = assign[rootIndex[Find(uf, f)]];
|
||||
var fa = faces[f];
|
||||
ntri.Add(get(fa.i0, pal)); ntri.Add(get(fa.i1, pal)); ntri.Add(get(fa.i2, pal));
|
||||
}
|
||||
var mesh = new Mesh();
|
||||
mesh.indexFormat = nv.Count > 65000 ? UnityEngine.Rendering.IndexFormat.UInt32 : UnityEngine.Rendering.IndexFormat.UInt16;
|
||||
mesh.SetVertices(nv);
|
||||
if (nn.Count == nv.Count) mesh.SetNormals(nn);
|
||||
if (nt.Count == nv.Count) mesh.SetTangents(nt);
|
||||
mesh.SetUVs(0, nuv);
|
||||
mesh.SetTriangles(ntri, 0);
|
||||
mesh.RecalculateBounds();
|
||||
return mesh;
|
||||
}
|
||||
|
||||
static void WritePalettePng(Vector3[] palS, int N, int G, int S, string path)
|
||||
{
|
||||
var ptex = new Texture2D(S, S, TextureFormat.RGBA32, false);
|
||||
var ppx = new Color32[S * S];
|
||||
for (int i = 0; i < ppx.Length; i++) ppx[i] = new Color32(255, 0, 255, 255);
|
||||
for (int j = 0; j < N; j++)
|
||||
{
|
||||
int gx = j % G, gy = j / G;
|
||||
var c = new Color32((byte)Mathf.RoundToInt(Mathf.Clamp01(palS[j].x) * 255f),
|
||||
(byte)Mathf.RoundToInt(Mathf.Clamp01(palS[j].y) * 255f),
|
||||
(byte)Mathf.RoundToInt(Mathf.Clamp01(palS[j].z) * 255f), 255);
|
||||
for (int y = 0; y < CELL; y++) for (int x = 0; x < CELL; x++) ppx[(gy * CELL + y) * S + gx * CELL + x] = c;
|
||||
}
|
||||
ptex.SetPixels32(ppx); ptex.Apply();
|
||||
Directory.CreateDirectory(TEX_DIR);
|
||||
File.WriteAllBytes(path, ptex.EncodeToPNG());
|
||||
UnityEngine.Object.DestroyImmediate(ptex);
|
||||
AssetDatabase.ImportAsset(path, ImportAssetOptions.ForceUpdate);
|
||||
var ti = (TextureImporter)AssetImporter.GetAtPath(path);
|
||||
ti.textureType = TextureImporterType.Default;
|
||||
ti.mipmapEnabled = false; // 🔴 밉이 있으면 이웃 칸이 섞인다
|
||||
ti.filterMode = FilterMode.Point;
|
||||
ti.wrapMode = TextureWrapMode.Clamp;
|
||||
ti.sRGBTexture = true;
|
||||
ti.npotScale = TextureImporterNPOTScale.None;
|
||||
ti.maxTextureSize = Mathf.Max(32, Mathf.NextPowerOfTwo(S));
|
||||
ti.textureCompression = TextureImporterCompression.Uncompressed;
|
||||
ti.SaveAndReimport();
|
||||
}
|
||||
|
||||
// ───────────────────────────── 최종 굽기 + 배선
|
||||
// 🔴 무기용 값 = **덩어리 16 · 팔레트 12칸** (인게임 Play 실측 + 육안으로 결정 · WL816b_ITER.txt)
|
||||
// · 캐릭터(40/16)를 그대로 쓰면 과하다 — 무기는 화면이 캐릭터의 1/10(90~1,309 px)이라
|
||||
// 덩어리 40 은 검에서 서로다른색 9.94 %, 16 은 8.33 % 로 **적은 쪽이 낫다**.
|
||||
// · 그렇다고 6칸까지 줄이면 🔴 육안이 깨진다 — 08 방패의 말 문양이 배경과 한 색으로 뭉치고
|
||||
// 05_Bow_004 의 노란 장식이 **초록으로 돈다**(굽기 dHue 최대 30.3° → 12칸에서 0.03°).
|
||||
// · PurePoly 9종은 메시가 **분리된 껍질** 묶음이라 병합이 26~106 에서 바닥을 친다 = 목표값이 그 아래면
|
||||
// 껍질 수가 곧 덩어리 수다(그래서 실제 조절 손잡이는 칸 수뿐이다).
|
||||
public const int FINAL_CHUNKS = 16, FINAL_PALETTE = 12;
|
||||
public static readonly string[] FINAL_WEAPONS = {
|
||||
"PP_Theme_10_Mace_003", "PP_Theme_10_Shield_003", "Elven_Sword_01",
|
||||
"PP_Theme_08_Mace_003", "PP_Theme_08_Shield_003",
|
||||
"PP_Theme_05_Bow_003", "PP_Theme_05_Bow_004",
|
||||
"PP_Theme_03_Scepter_001", "PP_Theme_03_Wand_001",
|
||||
"Dagger1", "Dagger2",
|
||||
// "Orb" — 렌더러가 ParticleSystem 3개뿐이고 메시가 0 이라 팔레트 UV 가 성립하지 않는다(814p 미확인 ②와 같은 이유)
|
||||
};
|
||||
|
||||
public static void BakeFinal()
|
||||
{
|
||||
sb.Length = 0;
|
||||
L("=== WL-816b 최종 굽기 (덩어리 " + FINAL_CHUNKS + " · 팔레트 " + FINAL_PALETTE + "칸 · 32×32 · Point · 밉 OFF · 무압축) ===");
|
||||
var baseMat = AssetDatabase.LoadAssetAtPath<Material>(MAT_DIR + "M05_ToonP.mat");
|
||||
if (baseMat == null) { L("🔴 기준 머티리얼 M05_ToonP.mat 없음 → 중단"); Flush(); return; }
|
||||
L("기준 머티리얼 " + baseMat.name + " shader=" + baseMat.shader.name
|
||||
+ " _Shades=" + (baseMat.HasProperty("_Shades") ? baseMat.GetFloat("_Shades").ToString("F0") : "-")
|
||||
+ " _DiffuseColor=" + (baseMat.HasProperty("_DiffuseColor") ? baseMat.GetColor("_DiffuseColor").ToString("F3") : "-"));
|
||||
|
||||
var names = new List<string>(); var meshes = new List<Mesh>(); var mats = new List<Material>();
|
||||
foreach (var w in FINAL_WEAPONS)
|
||||
{
|
||||
var r = Bake(w, FINAL_CHUNKS, FINAL_PALETTE, null, true);
|
||||
if (r == null) continue;
|
||||
// 머티리얼 = 캐릭터 팔레트 머티리얼(M05_ToonP)의 사본 + _BaseMap 만 이 무기의 팔레트로
|
||||
string mp = MAT_DIR + w + "_ToonP.mat";
|
||||
var m = AssetDatabase.LoadAssetAtPath<Material>(mp);
|
||||
if (m == null) { m = new Material(baseMat); AssetDatabase.CreateAsset(m, mp); }
|
||||
m.shader = baseMat.shader; m.CopyPropertiesFromMaterial(baseMat);
|
||||
var ptex = AssetDatabase.LoadAssetAtPath<Texture2D>(r.palPath);
|
||||
if (m.HasProperty("_BaseMap")) m.SetTexture("_BaseMap", ptex);
|
||||
if (m.HasProperty("_MainTex")) m.SetTexture("_MainTex", ptex);
|
||||
EditorUtility.SetDirty(m);
|
||||
names.Add(w); meshes.Add(AssetDatabase.LoadAssetAtPath<Mesh>(r.meshPath)); mats.Add(m);
|
||||
L(" → mesh " + r.meshPath + " · pal " + r.palPath + " · mat " + mp);
|
||||
}
|
||||
AssetDatabase.SaveAssets();
|
||||
|
||||
// SO 확장 편입 (새 SO 를 만들지 않는다)
|
||||
var so = AssetDatabase.LoadAssetAtPath<WL.Look.Character.WLCharacterPaletteSettings>("Assets/WL/Look/Character/Resources/WL/WLCharacterPaletteSettings.asset");
|
||||
if (so == null) { L("🔴 WLCharacterPaletteSettings.asset 없음 → 배선 실패"); Flush(); return; }
|
||||
so.weaponEnabled_ = 1;
|
||||
so.weaponNames = names.ToArray(); so.weaponMeshes = meshes.ToArray(); so.weaponMaterials = mats.ToArray();
|
||||
EditorUtility.SetDirty(so); AssetDatabase.SaveAssets(); AssetDatabase.Refresh();
|
||||
L("");
|
||||
L("SO 배선: 무기 " + names.Count + "종 · weaponEnabled_=1 · 캐릭터 행 " + (so.rendererNames == null ? 0 : so.rendererNames.Length) + " 무변경");
|
||||
Flush();
|
||||
Debug.Log("[WL816b] bake final done · " + names.Count);
|
||||
}
|
||||
|
||||
static void Flush() { Directory.CreateDirectory("AgentScripts"); File.WriteAllText("AgentScripts/WL816b_BAKE_FINAL.txt", sb.ToString(), new UTF8Encoding(true)); }
|
||||
|
||||
// ───────────────────────────── 스윕 (덩어리·칸 수 실측 결정)
|
||||
public static void Sweep()
|
||||
{
|
||||
sb.Length = 0;
|
||||
L("=== WL-816b 무기 덩어리·팔레트 스윕 (에디트 모드 · 굽기 수치만) ===");
|
||||
string[] ws = { "Elven_Sword_01", "PP_Theme_10_Mace_003", "PP_Theme_10_Shield_003", "Dagger1", "PP_Theme_05_Bow_003" };
|
||||
int[] chunks = { 6, 10, 16, 24, 40 };
|
||||
int[] pals = { 4, 6, 8, 12, 16 };
|
||||
foreach (var w in ws)
|
||||
{
|
||||
L("");
|
||||
L("── " + w);
|
||||
L("| 덩어리목표 | 칸 | 실덩어리 | 실칸 | verts | dHue평균 | dHue최대 |");
|
||||
L("|---|---|---|---|---|---|---|");
|
||||
foreach (var c in chunks)
|
||||
foreach (var p in pals)
|
||||
{
|
||||
if (p > c) continue;
|
||||
var r = Bake(w, c, p, null, false);
|
||||
if (r == null) continue;
|
||||
L(string.Format("| {0} | {1} | {2} | {3} | {4}→{5} | {6:F2} | {7:F2} |", c, p, r.regions, r.palUsed, r.vBefore, r.vAfter, r.meanDHue, r.maxDHue));
|
||||
UnityEngine.Object.DestroyImmediate(r.mesh);
|
||||
}
|
||||
}
|
||||
File.WriteAllText("AgentScripts/WL816b_SWEEP.txt", sb.ToString(), new UTF8Encoding(true));
|
||||
Debug.Log("[WL816b] sweep done");
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
root=PC_LH_M05 키 1.2200 m · center (-0.01, 0.57, 0.00) · rootLossy (1.0527, 1.0527, 1.0527)
|
||||
socket[0] w_shield = w_shield lossy (0.6316, 0.6316, 0.6316)
|
||||
socket[1] w_righthand = w_righthand lossy (1.0527, 0.7369, 1.0527)
|
||||
socket[2] w_onehand = w_onehand lossy (0.8421, 0.8421, 0.8421)
|
||||
socket[3] w_bladedancer_l = w_bladedancer_l lossy (1.0527, 1.0527, 1.0527)
|
||||
socket[4] w_bladedancer_r = w_bladedancer_r lossy (0.8421, 0.8421, 0.8421)
|
||||
socket[5] w_orb = w_orb lossy (0.1053, 0.1053, 0.1053)
|
||||
socket[6] w_archer_l = w_archer_l lossy (1.3685, 1.3685, 1.3685)
|
||||
renderers Arm_m05,Body_m05,Face,Hair05,Head,Leg_M05
|
||||
palette SO enabled=1 rows=6
|
||||
=== 대조군: 무기 0 · ReLook/측정만 12회 반복 ===
|
||||
0회 : 2959 px · 고유색 168 · 비율 5.68 %
|
||||
4회 : 2959 px · 고유색 168 · 비율 5.68 %
|
||||
8회 : 2959 px · 고유색 168 · 비율 5.68 %
|
||||
12회 : 2959 px · 고유색 168 · 비율 5.68 %
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
root=PC_LH_M05 키 1.2200 m · center (-0.01, 0.57, 0.00) · rootLossy (1.0527, 1.0527, 1.0527)
|
||||
socket[0] w_shield = w_shield lossy (0.6316, 0.6316, 0.6316)
|
||||
socket[1] w_righthand = w_righthand lossy (1.0527, 0.7369, 1.0527)
|
||||
socket[2] w_onehand = w_onehand lossy (0.8421, 0.8421, 0.8421)
|
||||
socket[3] w_bladedancer_l = w_bladedancer_l lossy (1.0527, 1.0527, 1.0527)
|
||||
socket[4] w_bladedancer_r = w_bladedancer_r lossy (0.8421, 0.8421, 0.8421)
|
||||
socket[5] w_orb = w_orb lossy (0.1053, 0.1053, 0.1053)
|
||||
socket[6] w_archer_l = w_archer_l lossy (1.3685, 1.3685, 1.3685)
|
||||
renderers Arm_m05,Body_m05,Face,Hair05,Head,Leg_M05
|
||||
palette SO enabled=1 rows=6
|
||||
|
||||
=== 무기 팔레트 후보 비교 (인게임 Play · 포스트 포함 · 1080x1920 · ortho 10) ===
|
||||
캐릭터 기준(무기 없음) : 2962 px · 고유색 166 · 비율 5.60 % · 단계 21
|
||||
|
||||
| 무기 | 안 | 덩어리 | 칸 | verts | 화면 px | 고유색 | 서로다른색 % | 단계 | 굽기 dHue평균/최대 |
|
||||
|---|---|---|---|---|---|---|---|---|---|
|
||||
| Elven_Sword_01 | **지금** | — | — | — | 304 | 253 | 83.22 | 3 | — |
|
||||
| Elven_Sword_01 | c6p6 | 6 | 6 | 444→464 | 312 | 16 | 5.13 | 4 | 1.36/5.95 | 칸단계 1.40/2 | 캐릭 174·5.88% |
|
||||
칸 5개 측정 · 평균 1.40 · 최대 2 · 0:178px/2단 1:26px/1단 2:62px/1단 3:36px/2단 4:10px/1단
|
||||
| Elven_Sword_01 | c16p12 | 16 | 12 | 444→500 | 312 | 26 | 8.33 | 4 | 1.35/5.95 | 칸단계 1.36/2 | 캐릭 174·5.88% |
|
||||
칸 11개 측정 · 평균 1.36 · 최대 2 · 0:104px/1단 1:26px/1단 2:62px/1단 3:36px/2단 4:14px/2단 5:9px/1단 6:10px/1단 7:9px/1단 8:14px/2단 9:8px/2단 10:20px/1단
|
||||
| Elven_Sword_01 | c24p16 | 24 | 16 | 444→532 | 312 | 31 | 9.94 | 5 | 0.72/3.24 | 칸단계 1.29/2 | 캐릭 175·5.91% |
|
||||
칸 14개 측정 · 평균 1.29 · 최대 2 · 0:97px/1단 1:26px/1단 2:21px/1단 3:13px/2단 4:41px/1단 5:23px/1단 6:9px/1단 7:7px/1단 8:8px/1단 9:8px/2단 10:9px/1단 11:14px/2단 13:14px/2단 14:20px/1단
|
||||
| PP_Theme_10_Mace_003 | **지금** | — | — | — | 263 | 72 | 27.38 | 5 | — |
|
||||
| PP_Theme_10_Mace_003 | c6p6 | 26 | 6 | 7719→7719 | 265 | 25 | 9.43 | 4 | 2.96/3.92 | 칸단계 2.17/5 | 캐릭 180·6.08% |
|
||||
칸 6개 측정 · 평균 2.17 · 최대 5 · 0:165px/2단 1:8px/5단 2:12px/2단 3:75px/1단 4:12px/1단 5:5px/2단
|
||||
| PP_Theme_10_Mace_003 | c16p12 | 26 | 12 | 7719→7719 | 265 | 32 | 12.08 | 4 | 2.96/3.91 | 칸단계 1.90/4 | 캐릭 180·6.08% |
|
||||
칸 10개 측정 · 평균 1.90 · 최대 4 · 0:45px/2단 1:5px/4단 2:12px/2단 3:75px/1단 4:3px/1단 5:5px/2단 6:67px/2단 8:53px/2단 9:3px/2단 11:7px/1단
|
||||
| PP_Theme_10_Mace_003 | c24p16 | 26 | 16 | 7719→7719 | 265 | 31 | 11.70 | 4 | 2.96/3.91 | 칸단계 1.90/4 | 캐릭 180·6.08% |
|
||||
칸 10개 측정 · 평균 1.90 · 최대 4 · 0:45px/2단 1:5px/4단 2:12px/2단 3:75px/1단 4:3px/1단 5:5px/2단 6:67px/2단 8:53px/2단 9:3px/2단 11:7px/1단
|
||||
| PP_Theme_10_Shield_003 | **지금** | — | — | — | 1309 | 86 | 6.57 | 9 | — |
|
||||
| PP_Theme_10_Shield_003 | c6p6 | 64 | 6 | 7671→7671 | 1306 | 73 | 5.59 | 9 | 0.00/0.00 | 칸단계 6.00/9 | 캐릭 188·6.35% |
|
||||
칸 3개 측정 · 평균 6.00 · 최대 9 · 0:1157px/7단 1:139px/9단 3:13px/2단
|
||||
| PP_Theme_10_Shield_003 | c16p12 | 64 | 12 | 7671→7671 | 1306 | 73 | 5.59 | 9 | 0.00/0.00 | 칸단계 6.00/9 | 캐릭 188·6.35% |
|
||||
칸 3개 측정 · 평균 6.00 · 최대 9 · 0:1157px/7단 1:139px/9단 3:13px/2단
|
||||
| PP_Theme_10_Shield_003 | c24p16 | 64 | 16 | 7671→7671 | 1306 | 73 | 5.59 | 9 | 0.00/0.00 | 칸단계 6.00/9 | 캐릭 188·6.35% |
|
||||
칸 3개 측정 · 평균 6.00 · 최대 9 · 0:1157px/7단 1:139px/9단 3:13px/2단
|
||||
| PP_Theme_08_Shield_003 | **지금** | — | — | — | 1008 | 119 | 11.81 | 9 | — |
|
||||
| PP_Theme_08_Shield_003 | c6p6 | 28 | 6 | 9168→9168 | 1007 | 60 | 5.96 | 9 | 0.02/0.28 | 칸단계 4.67/8 | 캐릭 175·5.91% |
|
||||
칸 3개 측정 · 평균 4.67 · 최대 8 · 0:962px/8단 3:37px/3단 4:9px/3단
|
||||
| PP_Theme_08_Shield_003 | c16p12 | 28 | 12 | 9168→9168 | 1007 | 60 | 5.96 | 9 | 0.02/0.28 | 칸단계 4.67/8 | 캐릭 175·5.91% |
|
||||
칸 3개 측정 · 평균 4.67 · 최대 8 · 0:962px/8단 3:37px/3단 4:9px/3단
|
||||
| PP_Theme_08_Shield_003 | c24p16 | 28 | 16 | 9168→9168 | 1007 | 60 | 5.96 | 9 | 0.02/0.28 | 칸단계 4.67/8 | 캐릭 175·5.91% |
|
||||
칸 3개 측정 · 평균 4.67 · 최대 8 · 0:962px/8단 3:37px/3단 4:9px/3단
|
||||
| PP_Theme_05_Bow_004 | **지금** | — | — | — | 225 | 65 | 28.89 | 9 | — |
|
||||
| PP_Theme_05_Bow_004 | c6p6 | 100 | 6 | 9682→9682 | 194 | 34 | 17.53 | 7 | 3.69/30.32 | 칸단계 4.00/7 | 캐릭 181·6.12% |
|
||||
칸 4개 측정 · 평균 4.00 · 최대 7 · 0:182px/7단 1:10px/2단 2:21px/4단 3:11px/3단
|
||||
| PP_Theme_05_Bow_004 | c16p12 | 100 | 12 | 9682→9682 | 194 | 35 | 18.04 | 7 | 0.01/0.03 | 칸단계 3.40/5 | 캐릭 182·6.15% |
|
||||
칸 5개 측정 · 평균 3.40 · 최대 5 · 0:98px/3단 1:10px/2단 3:11px/3단 6:21px/4단 8:84px/5단
|
||||
| PP_Theme_05_Bow_004 | c24p16 | 100 | 16 | 9682→9682 | 194 | 35 | 18.04 | 7 | 0.01/0.03 | 칸단계 3.14/5 | 캐릭 182·6.15% |
|
||||
칸 7개 측정 · 평균 3.14 · 최대 5 · 0:98px/3단 1:10px/2단 3:3px/2단 6:12px/4단 8:84px/5단 12:8px/3단 13:9px/3단
|
||||
|
||||
캐릭터 재측정(무기 적용 후) : 2959 px · 고유색 182 · 비율 6.15 % · 단계 24
|
||||
|
|
@ -0,0 +1,76 @@
|
|||
// WL-816b — 무기용 덩어리·팔레트 값 결정 (🔴 인게임 Play · 포스트 포함 · 게임 크기에서만 잰다)
|
||||
// 빌드: scripts 가 한 파일로 합쳐져야 한다 → AgentScripts/WL816b_ALL.cs 로 concat 해서 돌린다.
|
||||
// entry: WL816bIter.Run
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using UnityEngine;
|
||||
|
||||
public static class WL816bIter
|
||||
{
|
||||
// 대표 5종 (우선순위 상위 + 성격이 다른 것)
|
||||
static readonly string[][] TARGETS = {
|
||||
new[]{ "Elven_Sword_01", "2" },
|
||||
new[]{ "PP_Theme_10_Mace_003", "1" },
|
||||
new[]{ "PP_Theme_10_Shield_003", "0" },
|
||||
new[]{ "PP_Theme_08_Shield_003", "0" },
|
||||
new[]{ "PP_Theme_05_Bow_004", "6" },
|
||||
};
|
||||
// 후보 (덩어리목표, 팔레트칸) — 캐릭터는 40/16. 무기는 화면이 10분의 1 이라 작게부터 본다.
|
||||
static readonly int[][] CFG = {
|
||||
new[]{ 6, 6 }, new[]{ 16, 12 }, new[]{ 24, 16 },
|
||||
};
|
||||
|
||||
public static void Run()
|
||||
{
|
||||
WL816b.Reset(); WL816b.PubSetup();
|
||||
WL816b.Log("");
|
||||
WL816b.Log("=== 무기 팔레트 후보 비교 (인게임 Play · 포스트 포함 · 1080x1920 · ortho 10) ===");
|
||||
|
||||
var c0 = WL816b.MeasureChar("m_char0.png", "s_char0.png");
|
||||
WL816b.Log(string.Format("캐릭터 기준(무기 없음) : {0} px · 고유색 {1} · 비율 {2:F2} % · 단계 {3}", c0.px, c0.uniq, c0.ratio, c0.steps));
|
||||
WL816b.Log("");
|
||||
WL816b.Log("| 무기 | 안 | 덩어리 | 칸 | verts | 화면 px | 고유색 | 서로다른색 % | 단계 | 굽기 dHue평균/최대 |");
|
||||
WL816b.Log("|---|---|---|---|---|---|---|---|---|---|");
|
||||
|
||||
foreach (var t in TARGETS)
|
||||
{
|
||||
// ⓐ 지금 (원본)
|
||||
WL816b.Clear();
|
||||
float rb, mult;
|
||||
var go = WL816b.Spawn(t[0], int.Parse(t[1]), out rb, out mult);
|
||||
if (go == null) { WL816b.Log("| " + t[0] + " | 부착실패 | | | | | | | | |"); continue; }
|
||||
WL816b.ReLook();
|
||||
var m0 = WL816b.MeasureNow(go, "m_" + t[0] + "_before.png", "s_" + t[0] + "_before.png");
|
||||
WL816b.Log(string.Format("| {0} | **지금** | — | — | — | {1} | {2} | {3:F2} | {4} | — |", t[0], m0.px, m0.uniq, m0.ratio, m0.steps));
|
||||
|
||||
foreach (var cf in CFG)
|
||||
{
|
||||
WL816b.Clear(); WL816b.FreeTmp();
|
||||
go = WL816b.Spawn(t[0], int.Parse(t[1]), out rb, out mult);
|
||||
var res = WL816bBake.Bake(t[0], cf[0], cf[1], null, false);
|
||||
if (res == null) continue;
|
||||
WL816b.ApplyBaked(go, res.palette, res.mesh);
|
||||
WL816b.ReLook();
|
||||
string tag = "c" + cf[0] + "p" + cf[1];
|
||||
var m = WL816b.MeasureNow(go, "m_" + t[0] + "_" + tag + ".png", "s_" + t[0] + "_" + tag + ".png");
|
||||
int mx; float av; string det = WL816b.CellSteps(go, res.palette, out mx, out av);
|
||||
var cc = WL816b.MeasureChar(null, null);
|
||||
WL816b.Log(string.Format("| {0} | {1} | {2} | {3} | {4}→{5} | {6} | {7} | {8:F2} | {9} | {10:F2}/{11:F2} | 칸단계 {12:F2}/{13} | 캐릭 {14}·{15:F2}% |",
|
||||
t[0], tag, res.regions, res.palUsed, res.vBefore, res.vAfter, m.px, m.uniq, m.ratio, m.steps, res.meanDHue, res.maxDHue, av, mx, cc.uniq, cc.ratio));
|
||||
WL816b.Log(" " + det);
|
||||
}
|
||||
}
|
||||
|
||||
// 캐릭터 악화 확인 (무기 끼운 뒤에도 캐릭터 수치가 그대로인가)
|
||||
var c1 = WL816b.MeasureChar("m_char1.png", "s_char1.png");
|
||||
WL816b.Log("");
|
||||
WL816b.Log(string.Format("캐릭터 재측정(무기 적용 후) : {0} px · 고유색 {1} · 비율 {2:F2} % · 단계 {3}", c1.px, c1.uniq, c1.ratio, c1.steps));
|
||||
|
||||
WL816b.Clear(); WL816b.FreeTmp(); WL816b.PubTeardown();
|
||||
WL816b.Flush("WL816b_ITER.txt");
|
||||
Debug.Log("[WL816b] iter done");
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
root=PC_LH_M05 키 1.2200 m · center (-0.01, 0.57, 0.00) · rootLossy (1.0527, 1.0527, 1.0527)
|
||||
socket[0] w_shield = w_shield lossy (0.6316, 0.6316, 0.6316)
|
||||
socket[1] w_righthand = w_righthand lossy (1.0527, 0.7369, 1.0527)
|
||||
socket[2] w_onehand = w_onehand lossy (0.8421, 0.8421, 0.8421)
|
||||
socket[3] w_bladedancer_l = w_bladedancer_l lossy (1.0527, 1.0527, 1.0527)
|
||||
socket[4] w_bladedancer_r = w_bladedancer_r lossy (0.8421, 0.8421, 0.8421)
|
||||
socket[5] w_orb = w_orb lossy (0.1053, 0.1053, 0.1053)
|
||||
socket[6] w_archer_l = w_archer_l lossy (1.3685, 1.3685, 1.3685)
|
||||
renderers Arm_m05,Body_m05,Face,Hair05,Head,Leg_M05
|
||||
palette SO enabled=1 rows=6
|
||||
|
||||
=== 무기별 화면 실측 (인게임 Play · 포스트 포함 · 1080x1920 · ortho 10) ===
|
||||
캐릭터(무기 없음) : 2959 px · 고유색 171 · 비율 5.78 % · 단계 21
|
||||
|
||||
| 무기 | 소켓 | 클래스 | 배수 | 화면 px | 고유색 | 서로다른색 % | 단계 |
|
||||
|---|---|---|---|---|---|---|---|
|
||||
| PP_Theme_10_Mace_003 | 1 | 10501 기본 | ×0.6746 | **263** | 72 | 27.38 | 5 |
|
||||
| PP_Theme_10_Shield_003 | 0 | 10501 기본 | ×1.0000 | **1309** | 84 | 6.42 | 9 |
|
||||
| Elven_Sword_01 | 2 | 10101/10102 | ×0.5499 | **304** | 252 | 82.89 | 3 |
|
||||
| PP_Theme_08_Mace_003 | 1 | 10502 | ×0.5768 | **269** | 81 | 30.11 | 7 |
|
||||
| PP_Theme_08_Shield_003 | 0 | 10502 | ×0.8182 | **1008** | 122 | 12.10 | 8 |
|
||||
| PP_Theme_05_Bow_003 | 6 | 10402 | ×0.3502 | **131** | 51 | 38.93 | 11 |
|
||||
| PP_Theme_05_Bow_004 | 6 | 10401 | ×0.4068 | **225** | 67 | 29.78 | 9 |
|
||||
| PP_Theme_03_Scepter_001 | 1 | 10303 | ×0.4992 | **168** | 70 | 41.67 | 6 |
|
||||
| PP_Theme_03_Wand_001 | 1 | 10302 | ×1.0000 | **417** | 161 | 38.61 | 11 |
|
||||
| Dagger1 | 3 | 10201/10202 | ×1.0000 | **126** | 55 | 43.65 | 10 |
|
||||
| Dagger2 | 4 | 10201/10202 | ×1.0000 | **90** | 61 | 67.78 | 4 |
|
||||
| Orb | 5 | 10301 | ×1.0000 | **25** | 25 | 100.00 | 16 |
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
=== WL-816b 무기 프로브 ===
|
||||
Dagger1 rend=1 mf=1 smr=0 verts=91 tris=76 sub=1 size=(0.1459, 0.2879, 0.1153)
|
||||
T_Dagger[MK/Toon/URP/Standard/Simple] tex=T_Dagger 1024x1024 fmt=ASTC_6x6 filt=Bilinear mip=11 imp(max=2048 comp=Compressed read=False) path=Assets/ResWork/Suriyun/Cute_Goblin/Textures/Weapon/T_Dagger.png
|
||||
rend 'Dagger1' type=MeshRenderer mats=1
|
||||
Dagger2 rend=1 mf=1 smr=0 verts=91 tris=76 sub=1 size=(0.1459, 0.2879, 0.1153)
|
||||
T_Dagger[MK/Toon/URP/Standard/Simple] tex=T_Dagger 1024x1024 fmt=ASTC_6x6 filt=Bilinear mip=11 imp(max=2048 comp=Compressed read=False) path=Assets/ResWork/Suriyun/Cute_Goblin/Textures/Weapon/T_Dagger.png
|
||||
rend 'Dagger2' type=MeshRenderer mats=1
|
||||
Elven_Sword_01 rend=1 mf=1 smr=0 verts=444 tris=404 sub=1 size=(0.3982, 1.5806, 0.0801)
|
||||
Elven_Sword_01[MK/Toon/URP/Standard/Simple] tex=Elven_Sword_01 256x512 fmt=RGBA32 filt=Bilinear mip=10 imp(max=512 comp=Uncompressed read=False) path=Assets/ResWork/Elven Weapons/Textures/Elven_Sword_01.psd
|
||||
rend 'default' type=MeshRenderer mats=1
|
||||
Orb rend=3 mf=0 smr=0 verts=0 tris=0 sub=0 size=-
|
||||
Mat_fx_HCFX_set_apb[Shader Graphs/HCFX_Particle_apb] tex=- path=(no tex)
|
||||
rend 'circle' type=ParticleSystemRenderer mats=1
|
||||
rend 'inner_glow' type=ParticleSystemRenderer mats=1
|
||||
rend 'particle' type=ParticleSystemRenderer mats=1
|
||||
PP_Theme_03_Scepter_001 rend=1 mf=1 smr=0 verts=8464 tris=4184 sub=1 size=(0.4223, 1.9899, 0.1465)
|
||||
PP_Standard_Material[Toon Shaders Pro/URP/Toon] tex=PP_Color_Palette 256x256 fmt=ASTC_6x6 filt=Bilinear mip=9 imp(max=2048 comp=Compressed read=False) path=Assets/ResWork/PurePoly/Fantasy RPG Weapons/Textures/PP_Color_Palette.png
|
||||
rend 'PP_Theme_03_Scepter_001' type=MeshRenderer mats=1
|
||||
PP_Theme_03_Wand_001 rend=1 mf=1 smr=0 verts=4749 tris=2296 sub=1 size=(0.1871, 0.9376, 0.1655)
|
||||
PP_Standard_Material[Toon Shaders Pro/URP/Toon] tex=PP_Color_Palette 256x256 fmt=ASTC_6x6 filt=Bilinear mip=9 imp(max=2048 comp=Compressed read=False) path=Assets/ResWork/PurePoly/Fantasy RPG Weapons/Textures/PP_Color_Palette.png
|
||||
rend 'PP_Theme_03_Wand_001' type=MeshRenderer mats=1
|
||||
PP_Theme_05_Bow_003 rend=1 mf=1 smr=0 verts=12070 tris=5780 sub=1 size=(0.6233, 1.5272, 0.1039)
|
||||
PP_Standard_Material[Toon Shaders Pro/URP/Toon] tex=PP_Color_Palette 256x256 fmt=ASTC_6x6 filt=Bilinear mip=9 imp(max=2048 comp=Compressed read=False) path=Assets/ResWork/PurePoly/Fantasy RPG Weapons/Textures/PP_Color_Palette.png
|
||||
rend 'PP_Theme_05_Bow_003' type=MeshRenderer mats=1
|
||||
PP_Theme_05_Bow_004 rend=1 mf=1 smr=0 verts=9682 tris=4586 sub=1 size=(0.7213, 1.3148, 0.1245)
|
||||
PP_Standard_Material[Toon Shaders Pro/URP/Toon] tex=PP_Color_Palette 256x256 fmt=ASTC_6x6 filt=Bilinear mip=9 imp(max=2048 comp=Compressed read=False) path=Assets/ResWork/PurePoly/Fantasy RPG Weapons/Textures/PP_Color_Palette.png
|
||||
rend 'PP_Theme_05_Bow_004' type=MeshRenderer mats=1
|
||||
PP_Theme_08_Mace_003 rend=1 mf=1 smr=0 verts=18852 tris=6688 sub=1 size=(0.6317, 1.7221, 0.0750)
|
||||
PP_Standard_Material[Toon Shaders Pro/URP/Toon] tex=PP_Color_Palette 256x256 fmt=ASTC_6x6 filt=Bilinear mip=9 imp(max=2048 comp=Compressed read=False) path=Assets/ResWork/PurePoly/Fantasy RPG Weapons/Textures/PP_Color_Palette.png
|
||||
rend 'PP_Theme_08_Mace_003' type=MeshRenderer mats=1
|
||||
PP_Theme_08_Shield_003 rend=1 mf=1 smr=0 verts=9168 tris=4586 sub=1 size=(0.9615, 1.4164, 0.1710)
|
||||
PP_Standard_Material[Toon Shaders Pro/URP/Toon] tex=PP_Color_Palette 256x256 fmt=ASTC_6x6 filt=Bilinear mip=9 imp(max=2048 comp=Compressed read=False) path=Assets/ResWork/PurePoly/Fantasy RPG Weapons/Textures/PP_Color_Palette.png
|
||||
rend 'PP_Theme_08_Shield_003' type=MeshRenderer mats=1
|
||||
PP_Theme_10_Mace_003 rend=1 mf=1 smr=0 verts=7719 tris=3848 sub=1 size=(0.2749, 1.4726, 0.2578)
|
||||
PP_Standard_Material[Toon Shaders Pro/URP/Toon] tex=PP_Color_Palette 256x256 fmt=ASTC_6x6 filt=Bilinear mip=9 imp(max=2048 comp=Compressed read=False) path=Assets/ResWork/PurePoly/Fantasy RPG Weapons/Textures/PP_Color_Palette.png
|
||||
rend 'PP_Theme_10_Mace_003' type=MeshRenderer mats=1
|
||||
PP_Theme_10_Shield_003 rend=1 mf=1 smr=0 verts=7671 tris=4230 sub=1 size=(1.1342, 1.0895, 0.1466)
|
||||
PP_Standard_Material[Toon Shaders Pro/URP/Toon] tex=PP_Color_Palette 256x256 fmt=ASTC_6x6 filt=Bilinear mip=9 imp(max=2048 comp=Compressed read=False) path=Assets/ResWork/PurePoly/Fantasy RPG Weapons/Textures/PP_Color_Palette.png
|
||||
rend 'PP_Theme_10_Shield_003' type=MeshRenderer mats=1
|
||||
|
||||
=== 텍스처 읽기(블릿) 검증 ===
|
||||
PP_Color_Palette.png 256x256 fmt=ASTC_6x6 고유색=3828 샘플=(255,143,1)
|
||||
Elven_Sword_01.psd 256x512 fmt=RGBA32 고유색=36839 샘플=(185,141,62)
|
||||
T_Dagger.png 1024x1024 fmt=ASTC_6x6 고유색=8921 샘플=(0,0,0)
|
||||
|
|
@ -0,0 +1,429 @@
|
|||
// WL-816b — 🔴 **Play 모드에서만** 재는 무기 측정/촬영 하니스 (814x2~x4 방식 그대로)
|
||||
// 편집 모드 렌더는 스킨 메시가 갱신되지 않아 무의미하다(814x 실측).
|
||||
// run_script --file AgentScripts/WL816b_Play.cs --entry WL816b.Probe (Play 중에 부른다)
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using UnityEngine;
|
||||
using WL.Look.Arena;
|
||||
using WL.Look.Character;
|
||||
|
||||
public static class WL816b
|
||||
{
|
||||
public const string RAW = "Screenshots_WL/WL816b/raw/";
|
||||
const int W = 1080, H = 1920;
|
||||
public const float ORTHO = 10f; // 🔴 게임 크기(814x~x4 와 동일 축)
|
||||
const string WDIR = "Assets/Res_Addr/Weapon/";
|
||||
|
||||
static readonly StringBuilder sb = new StringBuilder();
|
||||
static void L(string s) { sb.AppendLine(s); }
|
||||
|
||||
static GameObject s_root;
|
||||
static Camera s_cam;
|
||||
static Vector3 s_camPos, s_center, s_pos;
|
||||
static Quaternion s_rot, s_camRot;
|
||||
static Animator s_an;
|
||||
static float s_camSize, s_ts;
|
||||
static Transform[] s_sockets;
|
||||
static readonly List<GameObject> s_spawned = new List<GameObject>();
|
||||
static float s_charHeight;
|
||||
|
||||
// ─────────────────────────────────────────────────────────── 표: 무기 → 소켓 index (ClassConfig 실측)
|
||||
public static readonly string[][] WEAPONS = new string[][] {
|
||||
// 이름 소켓idx 클래스
|
||||
new[]{ "PP_Theme_10_Mace_003", "1", "10501 기본" },
|
||||
new[]{ "PP_Theme_10_Shield_003", "0", "10501 기본" },
|
||||
new[]{ "Elven_Sword_01", "2", "10101/10102" },
|
||||
new[]{ "PP_Theme_08_Mace_003", "1", "10502" },
|
||||
new[]{ "PP_Theme_08_Shield_003", "0", "10502" },
|
||||
new[]{ "PP_Theme_05_Bow_003", "6", "10402" },
|
||||
new[]{ "PP_Theme_05_Bow_004", "6", "10401" },
|
||||
new[]{ "PP_Theme_03_Scepter_001","1", "10303" },
|
||||
new[]{ "PP_Theme_03_Wand_001", "1", "10302" },
|
||||
new[]{ "Dagger1", "3", "10201/10202" },
|
||||
new[]{ "Dagger2", "4", "10201/10202" },
|
||||
new[]{ "Orb", "5", "10301" },
|
||||
};
|
||||
|
||||
static void Setup()
|
||||
{
|
||||
s_root = GameObject.Find("PC_LH_M05");
|
||||
if (s_root == null)
|
||||
foreach (var g in UnityEngine.Object.FindObjectsByType<Animator>(FindObjectsSortMode.None))
|
||||
if (g.name.Contains("LH_M05")) { s_root = g.gameObject; break; }
|
||||
s_ts = Time.timeScale; Time.timeScale = 0f;
|
||||
s_an = s_root.GetComponentInChildren<Animator>();
|
||||
if (s_an != null) { s_an.speed = 0f; try { s_an.Play("idle", 0, 0.25f); s_an.Update(0f); } catch { } }
|
||||
|
||||
s_cam = Camera.main ?? UnityEngine.Object.FindObjectsByType<Camera>(FindObjectsSortMode.None).First(c => c.orthographic);
|
||||
s_camPos = s_cam.transform.position; s_camSize = s_cam.orthographicSize; s_camRot = s_cam.transform.rotation;
|
||||
s_root.transform.rotation = Quaternion.Euler(0, s_cam.transform.eulerAngles.y + 180f, 0);
|
||||
s_pos = s_root.transform.position; s_rot = s_root.transform.rotation;
|
||||
|
||||
// 🔴 키 = 소켓 아래(무기)를 뺀 몸 렌더러만. 814p `MeasureBodyLocalHeight` 와 같은 정의.
|
||||
var body = s_root.GetComponentsInChildren<Renderer>(true).Where(r => r.enabled && r.gameObject.activeInHierarchy).ToArray();
|
||||
var b = new Bounds(s_root.transform.position, Vector3.zero);
|
||||
foreach (var r in body) b.Encapsulate(r.bounds);
|
||||
s_center = b.center; s_charHeight = b.size.y;
|
||||
|
||||
// 소켓 — 이름으로 찾는다(LH_M05 본 계층)
|
||||
string[] names = { "w_shield", "w_righthand", "w_onehand", "w_bladedancer_l", "w_bladedancer_r", "w_orb", "w_archer_l" };
|
||||
s_sockets = new Transform[names.Length];
|
||||
foreach (var t in s_root.GetComponentsInChildren<Transform>(true))
|
||||
for (int i = 0; i < names.Length; i++)
|
||||
if (s_sockets[i] == null && t.name == names[i]) s_sockets[i] = t;
|
||||
L("root=" + s_root.name + " 키 " + s_charHeight.ToString("F4") + " m · center " + s_center.ToString("F2")
|
||||
+ " · rootLossy " + s_root.transform.lossyScale.ToString("F4"));
|
||||
for (int i = 0; i < names.Length; i++)
|
||||
L(" socket[" + i + "] " + names[i] + " = " + (s_sockets[i] == null ? "없음" : s_sockets[i].name + " lossy " + s_sockets[i].lossyScale.ToString("F4")));
|
||||
L(" renderers " + string.Join(",", body.Select(r => r.name)));
|
||||
var pc = WLCharacterPaletteSettings.Instance;
|
||||
L(" palette SO enabled=" + (pc == null ? "SO없음" : pc.enabled_.ToString()) + " rows=" + (pc == null || pc.rendererNames == null ? 0 : pc.rendererNames.Length));
|
||||
}
|
||||
|
||||
static void Teardown()
|
||||
{
|
||||
Clear();
|
||||
s_cam.transform.SetPositionAndRotation(s_camPos, s_camRot); s_cam.orthographicSize = s_camSize;
|
||||
Time.timeScale = s_ts;
|
||||
}
|
||||
|
||||
// ────────────────────────────────────────────────────────── 무기 부착 (814p 규칙: 키의 60 % · clamp 0.3~1.0)
|
||||
public static GameObject Spawn(string weapon, int socketIdx, out float ratioBefore, out float mult)
|
||||
{
|
||||
ratioBefore = 0f; mult = 1f;
|
||||
var pf = UnityEditor.AssetDatabase.LoadAssetAtPath<GameObject>(WDIR + weapon + ".prefab");
|
||||
if (pf == null || s_sockets[socketIdx] == null) return null;
|
||||
var go = UnityEngine.Object.Instantiate(pf, s_sockets[socketIdx]);
|
||||
go.name = weapon + "(Clone)"; // 🔴 실제 게임과 같은 이름(DSUtil.Get_Clone) — 팔레트 표 매칭이 이름 기반이다
|
||||
go.transform.localPosition = Vector3.zero; go.transform.localRotation = Quaternion.identity; go.transform.localScale = Vector3.one;
|
||||
s_spawned.Add(go);
|
||||
|
||||
// 길이 = 무기 루트 로컬 공간의 렌더러 localBounds 합 × lossyScale (814p 정의 · 포즈 무관)
|
||||
var rs = go.GetComponentsInChildren<Renderer>(true).Where(r => !(r is ParticleSystemRenderer) && !(r is TrailRenderer) && !(r is LineRenderer)).ToArray();
|
||||
if (rs.Length == 0) return go; // Orb = 파티클만 → 미보정(814p 미확인 ②)
|
||||
var wb = new Bounds(); bool first = true;
|
||||
foreach (var r in rs)
|
||||
{
|
||||
var lb = r.localBounds; var m = go.transform.worldToLocalMatrix * r.transform.localToWorldMatrix;
|
||||
for (int c = 0; c < 8; c++)
|
||||
{
|
||||
var p = m.MultiplyPoint3x4(lb.center + Vector3.Scale(lb.extents, new Vector3((c & 1) == 0 ? -1 : 1, (c & 2) == 0 ? -1 : 1, (c & 4) == 0 ? -1 : 1)));
|
||||
if (first) { wb = new Bounds(p, Vector3.zero); first = false; } else wb.Encapsulate(p);
|
||||
}
|
||||
}
|
||||
var ls = go.transform.lossyScale;
|
||||
float len = Mathf.Max(wb.size.x * Mathf.Abs(ls.x), Mathf.Max(wb.size.y * Mathf.Abs(ls.y), wb.size.z * Mathf.Abs(ls.z)));
|
||||
ratioBefore = len / Mathf.Max(s_charHeight, 1e-6f);
|
||||
mult = Mathf.Clamp(0.60f / Mathf.Max(ratioBefore, 1e-6f), 0.3f, 1.0f);
|
||||
go.transform.localScale = Vector3.one * mult;
|
||||
return go;
|
||||
}
|
||||
|
||||
public static void Clear()
|
||||
{
|
||||
foreach (var g in s_spawned) if (g != null) UnityEngine.Object.DestroyImmediate(g);
|
||||
s_spawned.Clear();
|
||||
}
|
||||
|
||||
// ────────────────────────────────────────────────────────── 렌더
|
||||
class Shot { public Color32[] px; }
|
||||
|
||||
static Shot Render(float ortho)
|
||||
{
|
||||
s_root.transform.SetPositionAndRotation(s_pos, s_rot);
|
||||
if (s_an != null) { s_an.speed = 0f; try { s_an.Play("idle", 0, 0.25f); s_an.Update(0f); } catch { } }
|
||||
s_cam.orthographicSize = ortho;
|
||||
s_cam.transform.SetPositionAndRotation(s_center - (s_camRot * Vector3.forward) * 30f, s_camRot);
|
||||
var rt = new RenderTexture(W, H, 24, RenderTextureFormat.ARGB32, RenderTextureReadWrite.sRGB);
|
||||
rt.antiAliasing = 1; rt.filterMode = FilterMode.Point; rt.Create();
|
||||
var prev = s_cam.targetTexture; s_cam.targetTexture = rt; s_cam.Render(); s_cam.targetTexture = prev;
|
||||
var pa = RenderTexture.active; RenderTexture.active = rt;
|
||||
var t = new Texture2D(W, H, TextureFormat.RGBA32, false); t.ReadPixels(new Rect(0, 0, W, H), 0, 0); t.Apply();
|
||||
RenderTexture.active = pa;
|
||||
var s = new Shot { px = t.GetPixels32() };
|
||||
UnityEngine.Object.Destroy(t); rt.Release(); UnityEngine.Object.Destroy(rt);
|
||||
return s;
|
||||
}
|
||||
|
||||
static void Save(Shot s, string name)
|
||||
{
|
||||
Directory.CreateDirectory(Path.GetDirectoryName(RAW + name));
|
||||
var t = new Texture2D(W, H, TextureFormat.RGBA32, false); t.SetPixels32(s.px); t.Apply();
|
||||
File.WriteAllBytes(RAW + name, t.EncodeToPNG()); UnityEngine.Object.Destroy(t);
|
||||
}
|
||||
|
||||
static void Shoot(string name, float ortho) { Render(ortho); Save(Render(ortho), name); }
|
||||
|
||||
/// <summary>지정한 렌더러만 남긴 흑백 마스크(배경·포스트 off · 레이어 31 단독).</summary>
|
||||
static bool[] Mask(Renderer[] on, float ortho, string savePng)
|
||||
{
|
||||
var all = UnityEngine.Object.FindObjectsByType<Renderer>(FindObjectsSortMode.None);
|
||||
var was = all.Select(r => r.enabled).ToArray();
|
||||
var ucd = s_cam.GetComponent<UnityEngine.Rendering.Universal.UniversalAdditionalCameraData>();
|
||||
bool post = ucd != null && ucd.renderPostProcessing; if (ucd != null) ucd.renderPostProcessing = false;
|
||||
int cull = s_cam.cullingMask; var clr = s_cam.clearFlags; var bg = s_cam.backgroundColor;
|
||||
var lay = on.Select(r => r.gameObject.layer).ToArray();
|
||||
for (int i = 0; i < all.Length; i++) all[i].enabled = on.Contains(all[i]);
|
||||
foreach (var r in on) r.gameObject.layer = 31;
|
||||
s_cam.cullingMask = 1 << 31; s_cam.clearFlags = CameraClearFlags.SolidColor; s_cam.backgroundColor = Color.black;
|
||||
Render(ortho); // 🔴 갓 Instantiate 한 렌더러는 첫 렌더에 안 잡힌다(814x §6-7 과 같은 증상) — 1장 버린다
|
||||
var sh = Render(ortho);
|
||||
for (int i = 0; i < on.Length; i++) on[i].gameObject.layer = lay[i];
|
||||
s_cam.cullingMask = cull; s_cam.clearFlags = clr; s_cam.backgroundColor = bg;
|
||||
for (int i = 0; i < all.Length; i++) if (all[i] != null) all[i].enabled = was[i];
|
||||
if (ucd != null) ucd.renderPostProcessing = post;
|
||||
var m = new bool[sh.px.Length];
|
||||
for (int i = 0; i < m.Length; i++) m[i] = sh.px[i].r + sh.px[i].g + sh.px[i].b > 24;
|
||||
if (!string.IsNullOrEmpty(savePng))
|
||||
{
|
||||
var q = new Shot { px = new Color32[m.Length] };
|
||||
for (int i = 0; i < m.Length; i++) q.px[i] = m[i] ? new Color32(255, 255, 255, 255) : new Color32(0, 0, 0, 255);
|
||||
Save(q, savePng);
|
||||
}
|
||||
return m;
|
||||
}
|
||||
|
||||
public struct Met { public int px, uniq, steps; public float ratio; public Vector3 mean; }
|
||||
|
||||
/// <summary>포스트 포함 게임 렌더에서 마스크 영역의 고유색/비율/단계를 잰다.</summary>
|
||||
static Met Measure(Shot game, bool[] mask)
|
||||
{
|
||||
var set = new HashSet<int>(); int n = 0; long r = 0, g = 0, b = 0;
|
||||
var cols = new List<Color32>();
|
||||
for (int i = 0; i < mask.Length; i++)
|
||||
{
|
||||
if (!mask[i]) continue;
|
||||
var p = game.px[i]; n++; r += p.r; g += p.g; b += p.b;
|
||||
set.Add((p.r << 16) | (p.g << 8) | p.b);
|
||||
cols.Add(p);
|
||||
}
|
||||
var m = new Met { px = n, uniq = set.Count, ratio = n > 0 ? set.Count * 100f / n : 0f };
|
||||
if (n > 0) m.mean = new Vector3(r / (float)n, g / (float)n, b / (float)n);
|
||||
m.steps = Steps(cols);
|
||||
return m;
|
||||
}
|
||||
|
||||
/// <summary>단계 = RGB 거리 16 이내로 묶었을 때 면적 90 % 를 덮는 군집 수(814x 정의).</summary>
|
||||
static int Steps(List<Color32> cols)
|
||||
{
|
||||
if (cols.Count == 0) return 0;
|
||||
var cent = new List<Vector3>(); var cnt = new List<int>();
|
||||
foreach (var c in cols)
|
||||
{
|
||||
var v = new Vector3(c.r, c.g, c.b);
|
||||
int bj = -1; float bd = 16f;
|
||||
for (int j = 0; j < cent.Count; j++) { float d = (cent[j] / cnt[j] - v).magnitude; if (d < bd) { bd = d; bj = j; } }
|
||||
if (bj < 0) { cent.Add(v); cnt.Add(1); }
|
||||
else { cent[bj] += v; cnt[bj]++; }
|
||||
}
|
||||
var order = Enumerable.Range(0, cnt.Count).OrderByDescending(i => cnt[i]).ToArray();
|
||||
int tot = cols.Count, acc = 0, k = 0;
|
||||
foreach (var i in order) { acc += cnt[i]; k++; if (acc >= tot * 0.90f) break; }
|
||||
return k;
|
||||
}
|
||||
|
||||
// ────────────────────────────────────────────────────────── 팔레트 적용 (런타임 · 에셋 저장 0)
|
||||
public static Material s_baseMat;
|
||||
static readonly List<UnityEngine.Object> s_tmp = new List<UnityEngine.Object>();
|
||||
|
||||
/// <summary>구운 결과를 스폰된 무기에 끼운다. 에셋을 만들지 않는다(스윕용).</summary>
|
||||
public static void ApplyBaked(GameObject go, Vector3[] pal, Mesh mesh)
|
||||
{
|
||||
if (s_baseMat == null) s_baseMat = UnityEditor.AssetDatabase.LoadAssetAtPath<Material>("Assets/WL/Look/Character/Materials/M05_ToonP.mat");
|
||||
int N = pal.Length, G = Mathf.NextPowerOfTwo(Mathf.CeilToInt(Mathf.Sqrt(N))), CELL = 8, S = G * CELL;
|
||||
var tex = new Texture2D(S, S, TextureFormat.RGBA32, false); // mip 없음
|
||||
tex.filterMode = FilterMode.Point; tex.wrapMode = TextureWrapMode.Clamp;
|
||||
var px = new Color32[S * S];
|
||||
for (int i = 0; i < px.Length; i++) px[i] = new Color32(255, 0, 255, 255);
|
||||
for (int j = 0; j < N; j++)
|
||||
{
|
||||
int gx = j % G, gy = j / G;
|
||||
var c = new Color32((byte)Mathf.RoundToInt(Mathf.Clamp01(pal[j].x) * 255f), (byte)Mathf.RoundToInt(Mathf.Clamp01(pal[j].y) * 255f), (byte)Mathf.RoundToInt(Mathf.Clamp01(pal[j].z) * 255f), 255);
|
||||
for (int y = 0; y < CELL; y++) for (int x = 0; x < CELL; x++) px[(gy * CELL + y) * S + gx * CELL + x] = c;
|
||||
}
|
||||
tex.SetPixels32(px); tex.Apply(false, false);
|
||||
var mat = new Material(s_baseMat) { name = "W_ToonP_tmp" };
|
||||
if (mat.HasProperty("_BaseMap")) mat.SetTexture("_BaseMap", tex);
|
||||
if (mat.HasProperty("_MainTex")) mat.SetTexture("_MainTex", tex);
|
||||
s_tmp.Add(tex); s_tmp.Add(mat);
|
||||
foreach (var mf in go.GetComponentsInChildren<MeshFilter>(true)) mf.sharedMesh = mesh;
|
||||
foreach (var r in go.GetComponentsInChildren<Renderer>(true))
|
||||
{
|
||||
if (r is ParticleSystemRenderer) continue;
|
||||
var ms = r.sharedMaterials; for (int i = 0; i < ms.Length; i++) ms[i] = mat; r.sharedMaterials = ms;
|
||||
}
|
||||
}
|
||||
|
||||
public static void FreeTmp() { foreach (var o in s_tmp) if (o != null) UnityEngine.Object.DestroyImmediate(o); s_tmp.Clear(); }
|
||||
|
||||
/// <summary>씬의 참조 룩(외곽선·대비)을 새 렌더러까지 포함해 다시 얹는다(멱등).</summary>
|
||||
/// <summary>참조 룩 장식을 벗긴다. 🔴 메시·머티리얼을 갈아끼우기 **전에** 반드시 부른다 —
|
||||
/// 안 그러면 다음 Apply 의 Restore 가 예전 머티리얼을 도로 덮어써서 교체가 사라진다.</summary>
|
||||
public static void UnLook()
|
||||
{
|
||||
WLReferenceLook.Restore();
|
||||
foreach (var g in UnityEngine.Object.FindObjectsByType<GameObject>(FindObjectsInactive.Include, FindObjectsSortMode.None))
|
||||
if (g != null && g.name == "WL814t_ReferenceLook_Volume") UnityEngine.Object.DestroyImmediate(g);
|
||||
}
|
||||
|
||||
public static void ReLook()
|
||||
{
|
||||
var cfg = WLReferenceLookSettings.Instance;
|
||||
if (cfg == null || cfg.enabled_ == 0) return;
|
||||
// 🔴 Play 에서 `Destroy` 는 프레임 끝에 실행된다. run_script 는 한 콜백 안에서 끝나므로
|
||||
// Apply 를 반복하면 임시 Volume 이 겹겹이 살아남아 포스트가 누적된다(캐릭터 수치가 회차마다 나빠진다).
|
||||
// → Restore 로 참조를 끊은 뒤 남은 Volume 을 즉시 지우고 새로 얹는다.
|
||||
WLReferenceLook.Restore();
|
||||
foreach (var g in UnityEngine.Object.FindObjectsByType<GameObject>(FindObjectsInactive.Include, FindObjectsSortMode.None))
|
||||
if (g != null && g.name == "WL814t_ReferenceLook_Volume") UnityEngine.Object.DestroyImmediate(g);
|
||||
WLReferenceLook.Apply(WLReferenceLook.Opt.FromSettings(cfg), cfg);
|
||||
}
|
||||
|
||||
/// <summary>🔴 「부위(팔레트 칸)당 색 단계」 — 814x 정의. 칸마다 고유색을 찍은 지도(Unlit·빛 0)로 칸을 가른다.</summary>
|
||||
public static string CellSteps(GameObject go, Vector3[] pal, out int maxStep, out float avgStep)
|
||||
{
|
||||
maxStep = 0; avgStep = 0f;
|
||||
int N = pal.Length, G = Mathf.NextPowerOfTwo(Mathf.CeilToInt(Mathf.Sqrt(N))), CELL = 8, S = G * CELL;
|
||||
var idTex = new Texture2D(S, S, TextureFormat.RGBA32, false) { filterMode = FilterMode.Point, wrapMode = TextureWrapMode.Clamp };
|
||||
var px = new Color32[S * S]; var idCol = new Color32[N];
|
||||
for (int i = 0; i < px.Length; i++) px[i] = new Color32(0, 0, 0, 255);
|
||||
for (int j = 0; j < N; j++)
|
||||
{
|
||||
idCol[j] = new Color32((byte)(20 + j * 13 % 236), (byte)(250 - j * 29 % 200), (byte)(40 + j * 47 % 200), 255);
|
||||
int gx = j % G, gy = j / G;
|
||||
for (int y = 0; y < CELL; y++) for (int x = 0; x < CELL; x++) px[(gy * CELL + y) * S + gx * CELL + x] = idCol[j];
|
||||
}
|
||||
idTex.SetPixels32(px); idTex.Apply(false, false);
|
||||
var rends = go.GetComponentsInChildren<Renderer>(true).Where(r => !(r is ParticleSystemRenderer)).ToArray();
|
||||
var keep = rends.Select(r => r.sharedMaterials).ToArray();
|
||||
var idMat = new Material(Shader.Find("Unlit/Texture")); idMat.mainTexture = idTex;
|
||||
foreach (var r in rends) { var ms = new Material[r.sharedMaterials.Length]; for (int i = 0; i < ms.Length; i++) ms[i] = idMat; r.sharedMaterials = ms; }
|
||||
var idShot = RenderIsolated(rends);
|
||||
for (int i = 0; i < rends.Length; i++) rends[i].sharedMaterials = keep[i];
|
||||
UnityEngine.Object.DestroyImmediate(idMat); UnityEngine.Object.DestroyImmediate(idTex);
|
||||
|
||||
var game = Render(ORTHO);
|
||||
var sbb = new StringBuilder(); int sum = 0, cnt = 0;
|
||||
for (int j = 0; j < N; j++)
|
||||
{
|
||||
var cols = new List<Color32>();
|
||||
for (int i = 0; i < idShot.px.Length; i++)
|
||||
{
|
||||
var p = idShot.px[i];
|
||||
if (Mathf.Abs(p.r - idCol[j].r) <= 10 && Mathf.Abs(p.g - idCol[j].g) <= 10 && Mathf.Abs(p.b - idCol[j].b) <= 10) cols.Add(game.px[i]);
|
||||
}
|
||||
if (cols.Count < 3) continue; // 3 px 미만 칸은 통계 의미 없음
|
||||
int st = Steps(cols);
|
||||
sbb.Append(j + ":" + cols.Count + "px/" + st + "단 ");
|
||||
if (st > maxStep) maxStep = st;
|
||||
sum += st; cnt++;
|
||||
}
|
||||
avgStep = cnt > 0 ? sum / (float)cnt : 0f;
|
||||
return "칸 " + cnt + "개 측정 · 평균 " + avgStep.ToString("F2") + " · 최대 " + maxStep + " · " + sbb;
|
||||
}
|
||||
|
||||
static Shot RenderIsolated(Renderer[] on)
|
||||
{
|
||||
var all = UnityEngine.Object.FindObjectsByType<Renderer>(FindObjectsSortMode.None);
|
||||
var was = all.Select(r => r.enabled).ToArray();
|
||||
var ucd = s_cam.GetComponent<UnityEngine.Rendering.Universal.UniversalAdditionalCameraData>();
|
||||
bool post = ucd != null && ucd.renderPostProcessing; if (ucd != null) ucd.renderPostProcessing = false;
|
||||
int cull = s_cam.cullingMask; var clr = s_cam.clearFlags; var bg = s_cam.backgroundColor;
|
||||
var lay = on.Select(r => r.gameObject.layer).ToArray();
|
||||
for (int i = 0; i < all.Length; i++) all[i].enabled = on.Contains(all[i]);
|
||||
foreach (var r in on) r.gameObject.layer = 31;
|
||||
s_cam.cullingMask = 1 << 31; s_cam.clearFlags = CameraClearFlags.SolidColor; s_cam.backgroundColor = Color.black;
|
||||
Render(ortho: ORTHO);
|
||||
var sh = Render(ORTHO);
|
||||
for (int i = 0; i < on.Length; i++) on[i].gameObject.layer = lay[i];
|
||||
s_cam.cullingMask = cull; s_cam.clearFlags = clr; s_cam.backgroundColor = bg;
|
||||
for (int i = 0; i < all.Length; i++) if (all[i] != null) all[i].enabled = was[i];
|
||||
if (ucd != null) ucd.renderPostProcessing = post;
|
||||
return sh;
|
||||
}
|
||||
|
||||
public static Met MeasureNow(GameObject go, string maskName, string shotName)
|
||||
{
|
||||
var wr = go.GetComponentsInChildren<Renderer>(true).Where(r => r.enabled && r.gameObject.activeInHierarchy && !(r is ParticleSystemRenderer)).ToArray();
|
||||
var mk = Mask(wr, ORTHO, maskName);
|
||||
var sh = Render(ORTHO); Save(sh, shotName);
|
||||
return Measure(sh, mk);
|
||||
}
|
||||
|
||||
public static Met MeasureChar(string maskName, string shotName)
|
||||
{
|
||||
var br = s_root.GetComponentsInChildren<Renderer>(true).Where(r => r.enabled && r.gameObject.activeInHierarchy
|
||||
&& !r.transform.IsChildOf(s_sockets[0]) && !r.transform.IsChildOf(s_sockets[1]) && !r.transform.IsChildOf(s_sockets[2])
|
||||
&& !r.transform.IsChildOf(s_sockets[3]) && !r.transform.IsChildOf(s_sockets[4]) && !r.transform.IsChildOf(s_sockets[5]) && !r.transform.IsChildOf(s_sockets[6])).ToArray();
|
||||
var mk = Mask(br, ORTHO, maskName);
|
||||
var sh = Render(ORTHO); if (!string.IsNullOrEmpty(shotName)) Save(sh, shotName);
|
||||
return Measure(sh, mk);
|
||||
}
|
||||
|
||||
public static void PubSetup() { Setup(); }
|
||||
public static void PubTeardown() { Teardown(); }
|
||||
public static void Log(string s) { L(s); }
|
||||
public static void Flush(string f) { Directory.CreateDirectory("AgentScripts"); File.WriteAllText("AgentScripts/" + f, sb.ToString(), new UTF8Encoding(true)); }
|
||||
public static void Reset() { sb.Length = 0; }
|
||||
public static void ShootGame(string name) { Shoot(name, ORTHO); }
|
||||
|
||||
// ── 디버그: 마스크가 0 px 로 나온 무기를 캔다
|
||||
public static void Dbg()
|
||||
{
|
||||
sb.Length = 0; Setup();
|
||||
foreach (var wn in new[] { "PP_Theme_10_Mace_003", "PP_Theme_08_Mace_003" })
|
||||
{
|
||||
Clear();
|
||||
float rb, mult; var go = Spawn(wn, 1, out rb, out mult);
|
||||
var r = go.GetComponentsInChildren<Renderer>(true)[0];
|
||||
L(wn + " scale=" + go.transform.localScale.ToString("F4") + " lossy=" + go.transform.lossyScale.ToString("F4")
|
||||
+ " worldBounds=" + r.bounds.ToString("F3") + " vis=" + r.isVisible
|
||||
+ " mat=" + r.sharedMaterial.name + " shader=" + r.sharedMaterial.shader.name
|
||||
+ " layer=" + r.gameObject.layer + " pos=" + go.transform.position.ToString("F3"));
|
||||
var mk = Mask(new[] { r }, ORTHO, "dbg_" + wn + ".png");
|
||||
int n = 0; for (int i = 0; i < mk.Length; i++) if (mk[i]) n++;
|
||||
L(" mask px=" + n);
|
||||
}
|
||||
Clear(); Teardown();
|
||||
File.WriteAllText("AgentScripts/WL816b_DBG.txt", sb.ToString(), new UTF8Encoding(true));
|
||||
}
|
||||
|
||||
// ────────────────────────────────────────────────────────── ① 우선순위 프로브
|
||||
public static void Probe()
|
||||
{
|
||||
sb.Length = 0; Setup();
|
||||
L("");
|
||||
L("=== 무기별 화면 실측 (인게임 Play · 포스트 포함 · 1080x1920 · ortho " + ORTHO.ToString("F0") + ") ===");
|
||||
|
||||
var bodyR = s_root.GetComponentsInChildren<Renderer>(true).Where(r => r.enabled && r.gameObject.activeInHierarchy).ToArray();
|
||||
var mBody = Mask(bodyR, ORTHO, "mask_char.png");
|
||||
var gm = Render(ORTHO); Save(gm, "a_before_none.png");
|
||||
var mc = Measure(gm, mBody);
|
||||
L(string.Format("캐릭터(무기 없음) : {0} px · 고유색 {1} · 비율 {2:F2} % · 단계 {3}", mc.px, mc.uniq, mc.ratio, mc.steps));
|
||||
L("");
|
||||
L("| 무기 | 소켓 | 클래스 | 배수 | 화면 px | 고유색 | 서로다른색 % | 단계 |");
|
||||
L("|---|---|---|---|---|---|---|---|");
|
||||
|
||||
foreach (var w in WEAPONS)
|
||||
{
|
||||
Clear();
|
||||
float rb, mult;
|
||||
var go = Spawn(w[0], int.Parse(w[1]), out rb, out mult);
|
||||
if (go == null) { L("| " + w[0] + " | " + w[1] + " | " + w[2] + " | — | 부착실패 | | | |"); continue; }
|
||||
var wr = go.GetComponentsInChildren<Renderer>(true).Where(r => r.enabled && r.gameObject.activeInHierarchy).ToArray();
|
||||
if (wr.Length == 0) { L("| " + w[0] + " | " + w[1] + " | " + w[2] + " | — | 렌더러 0 | | | |"); continue; }
|
||||
var mk = Mask(wr, ORTHO, "mask_" + w[0] + ".png");
|
||||
var sh = Render(ORTHO); Save(sh, "a_before_" + w[0] + ".png");
|
||||
var mm = Measure(sh, mk);
|
||||
L(string.Format("| {0} | {1} | {2} | ×{3:F4} | **{4}** | {5} | {6:F2} | {7} |",
|
||||
w[0], w[1], w[2], mult, mm.px, mm.uniq, mm.ratio, mm.steps));
|
||||
}
|
||||
Clear(); Teardown();
|
||||
Directory.CreateDirectory("AgentScripts");
|
||||
File.WriteAllText("AgentScripts/WL816b_PLAY_PROBE.txt", sb.ToString(), new UTF8Encoding(true));
|
||||
Debug.Log("[WL816b] play probe done");
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,100 @@
|
|||
// WL-816b — 무기 12종 메시·텍스처 실측 (에디트 모드 · 렌더 없음)
|
||||
// unity command run_script --file AgentScripts/WL816b_Probe.cs --entry WL816b_Probe.Run
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
public static class WL816b_Probe
|
||||
{
|
||||
static readonly StringBuilder sb = new StringBuilder();
|
||||
static void L(string s) { sb.AppendLine(s); }
|
||||
|
||||
public const string WDIR = "Assets/Res_Addr/Weapon/";
|
||||
|
||||
/// <summary>비readable 텍스처를 임포터를 건드리지 않고 sRGB 바이트로 읽는다(원본 meta 수정 0).</summary>
|
||||
public static Texture2D ReadAny(Texture src)
|
||||
{
|
||||
var rt = RenderTexture.GetTemporary(src.width, src.height, 0, RenderTextureFormat.ARGB32, RenderTextureReadWrite.sRGB);
|
||||
var prevF = (src as Texture2D) != null ? (src as Texture2D).filterMode : FilterMode.Point;
|
||||
if (src is Texture2D) ((Texture2D)src).filterMode = FilterMode.Point;
|
||||
Graphics.Blit(src, rt);
|
||||
if (src is Texture2D) ((Texture2D)src).filterMode = prevF;
|
||||
var prev = RenderTexture.active; RenderTexture.active = rt;
|
||||
var t = new Texture2D(src.width, src.height, TextureFormat.RGBA32, false);
|
||||
t.ReadPixels(new Rect(0, 0, src.width, src.height), 0, 0); t.Apply();
|
||||
RenderTexture.active = prev; RenderTexture.ReleaseTemporary(rt);
|
||||
return t;
|
||||
}
|
||||
|
||||
public static void Run()
|
||||
{
|
||||
sb.Length = 0;
|
||||
L("=== WL-816b 무기 프로브 ===");
|
||||
var files = Directory.GetFiles(WDIR, "*.prefab").OrderBy(f => f).ToArray();
|
||||
foreach (var f in files)
|
||||
{
|
||||
var p = f.Replace('\\', '/');
|
||||
var go = AssetDatabase.LoadAssetAtPath<GameObject>(p);
|
||||
if (go == null) { L(Path.GetFileNameWithoutExtension(p) + " : 로드 실패"); continue; }
|
||||
var mfs = go.GetComponentsInChildren<MeshFilter>(true);
|
||||
var smrs = go.GetComponentsInChildren<SkinnedMeshRenderer>(true);
|
||||
var rends = go.GetComponentsInChildren<Renderer>(true);
|
||||
int tris = 0, verts = 0, subs = 0;
|
||||
var bb = new Bounds(Vector3.zero, Vector3.zero); bool first = true;
|
||||
foreach (var mf in mfs)
|
||||
{
|
||||
var m = mf.sharedMesh; if (m == null) continue;
|
||||
verts += m.vertexCount; subs += m.subMeshCount;
|
||||
for (int s = 0; s < m.subMeshCount; s++) tris += (int)(m.GetIndexCount(s) / 3);
|
||||
var b = m.bounds; if (first) { bb = b; first = false; } else bb.Encapsulate(b);
|
||||
}
|
||||
var texs = new List<string>();
|
||||
foreach (var r in rends)
|
||||
foreach (var mt in r.sharedMaterials)
|
||||
{
|
||||
if (mt == null) { texs.Add("(null mat)"); continue; }
|
||||
Texture t = null;
|
||||
if (mt.HasProperty("_BaseMap")) t = mt.GetTexture("_BaseMap");
|
||||
if (t == null && mt.HasProperty("_MainTex")) t = mt.GetTexture("_MainTex");
|
||||
string tp = t == null ? "(no tex)" : AssetDatabase.GetAssetPath(t);
|
||||
var ti = string.IsNullOrEmpty(tp) ? null : AssetImporter.GetAtPath(tp) as TextureImporter;
|
||||
texs.Add(mt.name + "[" + mt.shader.name + "] tex=" + (t == null ? "-" : t.name + " " + t.width + "x" + t.height
|
||||
+ " fmt=" + ((t as Texture2D) != null ? ((Texture2D)t).format.ToString() : "?")
|
||||
+ " filt=" + t.filterMode + " mip=" + t.mipmapCount
|
||||
+ (ti != null ? " imp(max=" + ti.maxTextureSize + " comp=" + ti.textureCompression + " read=" + ti.isReadable + ")" : ""))
|
||||
+ " path=" + tp);
|
||||
}
|
||||
L(string.Format("{0,-26} rend={1} mf={2} smr={3} verts={4} tris={5} sub={6} size={7} ",
|
||||
Path.GetFileNameWithoutExtension(p), rends.Length, mfs.Length, smrs.Length, verts, tris, subs,
|
||||
first ? "-" : bb.size.ToString("F4")));
|
||||
foreach (var t in texs.Distinct()) L(" " + t);
|
||||
foreach (var r in rends) L(" rend '" + r.name + "' type=" + r.GetType().Name + " mats=" + r.sharedMaterials.Length);
|
||||
}
|
||||
|
||||
// 텍스처 읽기 검증 — 비readable 원본을 RT 블릿으로 읽는다
|
||||
L("");
|
||||
L("=== 텍스처 읽기(블릿) 검증 ===");
|
||||
foreach (var tp in new[] {
|
||||
"Assets/ResWork/PurePoly/Fantasy RPG Weapons/Textures/PP_Color_Palette.png",
|
||||
"Assets/ResWork/Elven Weapons/Textures/Elven_Sword_01.psd",
|
||||
"Assets/ResWork/Suriyun/Cute_Goblin/Textures/Weapon/T_Dagger.png" })
|
||||
{
|
||||
var t = AssetDatabase.LoadAssetAtPath<Texture2D>(tp);
|
||||
if (t == null) { L(tp + " : 로드 실패"); continue; }
|
||||
var rd = ReadAny(t);
|
||||
var px = rd.GetPixels32();
|
||||
var set = new HashSet<int>();
|
||||
for (int i = 0; i < px.Length; i++) set.Add((px[i].r << 16) | (px[i].g << 8) | px[i].b);
|
||||
L(string.Format("{0} {1}x{2} fmt={3} 고유색={4} 샘플=({5},{6},{7})", Path.GetFileName(tp), rd.width, rd.height, t.format, set.Count, px[px.Length / 2].r, px[px.Length / 2].g, px[px.Length / 2].b));
|
||||
UnityEngine.Object.DestroyImmediate(rd);
|
||||
}
|
||||
|
||||
Directory.CreateDirectory("AgentScripts");
|
||||
File.WriteAllText("AgentScripts/WL816b_PROBE.txt", sb.ToString(), new UTF8Encoding(true));
|
||||
Debug.Log("[WL816b] probe done → AgentScripts/WL816b_PROBE.txt");
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
weaponEnabled_=0 · WeaponEnabled=False
|
||||
Elven_Sword_01 applied=False mesh default → default · mat Elven_Sword_01 → Elven_Sword_01 · 원본 그대로 ✅
|
||||
PP_Theme_10_Shield_003 applied=False mesh PP_Theme_10_Shield_003 → PP_Theme_10_Shield_003 · mat PP_Standard_Material → PP_Standard_Material · 원본 그대로 ✅
|
||||
Dagger1 applied=False mesh dagger → dagger · mat T_Dagger → T_Dagger · 원본 그대로 ✅
|
||||
weaponEnabled_=1 · WeaponEnabled=True
|
||||
Elven_Sword_01 applied=True mesh default → Elven_Sword_01_PAL · mat Elven_Sword_01 → Elven_Sword_01_ToonP · 팔레트 적용 ✅
|
||||
PP_Theme_10_Shield_003 applied=True mesh PP_Theme_10_Shield_003 → PP_Theme_10_Shield_003_PAL · mat PP_Standard_Material → PP_Theme_10_Shield_003_ToonP · 팔레트 적용 ✅
|
||||
Dagger1 applied=True mesh dagger → Dagger1_PAL · mat T_Dagger → Dagger1_ToonP · 팔레트 적용 ✅
|
||||
복구: weaponEnabled_=1
|
||||
캐릭터 행 6 · enabled_=1 · 무기 행 11
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
// WL-816b — 되돌리기(C8) 실측: weaponEnabled_ = 0 이면 무기는 원본 100 % (에디트 모드)
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
using WL.Look.Character;
|
||||
|
||||
public static class WL816bRevert
|
||||
{
|
||||
public static void Run()
|
||||
{
|
||||
var sb = new StringBuilder();
|
||||
const string SOP = "Assets/WL/Look/Character/Resources/WL/WLCharacterPaletteSettings.asset";
|
||||
var so = AssetDatabase.LoadAssetAtPath<WLCharacterPaletteSettings>(SOP);
|
||||
WLCharacterPaletteSettings.Invalidate();
|
||||
int was = so.weaponEnabled_;
|
||||
string[] test = { "Elven_Sword_01", "PP_Theme_10_Shield_003", "Dagger1" };
|
||||
|
||||
foreach (int flag in new[] { 0, 1 })
|
||||
{
|
||||
so.weaponEnabled_ = flag; EditorUtility.SetDirty(so); AssetDatabase.SaveAssets();
|
||||
WLCharacterPaletteSettings.Invalidate();
|
||||
sb.AppendLine("weaponEnabled_=" + flag + " · WeaponEnabled=" + WLCharacterPaletteSettings.WeaponEnabled);
|
||||
foreach (var w in test)
|
||||
{
|
||||
var pf = AssetDatabase.LoadAssetAtPath<GameObject>("Assets/Res_Addr/Weapon/" + w + ".prefab");
|
||||
var go = UnityEngine.Object.Instantiate(pf); go.name = w + "(Clone)";
|
||||
var mf = go.GetComponentInChildren<MeshFilter>(true);
|
||||
var rd = go.GetComponentsInChildren<Renderer>(true).First(r => !(r is ParticleSystemRenderer));
|
||||
var m0 = mf.sharedMesh; var t0 = rd.sharedMaterial;
|
||||
bool applied = WLWeaponPalette.Apply(go.transform);
|
||||
sb.AppendLine(string.Format(" {0,-24} applied={1,-5} mesh {2} → {3} · mat {4} → {5} · {6}",
|
||||
w, applied, m0.name, mf.sharedMesh.name, t0.name, rd.sharedMaterial.name,
|
||||
flag == 0 ? ((mf.sharedMesh == m0 && rd.sharedMaterial == t0) ? "원본 그대로 ✅" : "🔴 바뀜")
|
||||
: ((mf.sharedMesh != m0 && rd.sharedMaterial != t0) ? "팔레트 적용 ✅" : "🔴 미적용")));
|
||||
UnityEngine.Object.DestroyImmediate(go);
|
||||
}
|
||||
}
|
||||
so.weaponEnabled_ = was; EditorUtility.SetDirty(so); AssetDatabase.SaveAssets();
|
||||
WLCharacterPaletteSettings.Invalidate();
|
||||
sb.AppendLine("복구: weaponEnabled_=" + so.weaponEnabled_);
|
||||
// 캐릭터 표가 그대로인지
|
||||
sb.AppendLine("캐릭터 행 " + (so.rendererNames == null ? 0 : so.rendererNames.Length) + " · enabled_=" + so.enabled_ + " · 무기 행 " + so.weaponNames.Length);
|
||||
File.WriteAllText("AgentScripts/WL816b_REVERT.txt", sb.ToString(), new UTF8Encoding(true));
|
||||
Debug.Log("[WL816b] revert check done");
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,221 @@
|
|||
=== WL-816b 무기 덩어리·팔레트 스윕 (에디트 모드 · 굽기 수치만) ===
|
||||
|
||||
── Elven_Sword_01
|
||||
| 덩어리목표 | 칸 | 실덩어리 | 실칸 | verts | dHue평균 | dHue최대 |
|
||||
|---|---|---|---|---|---|---|
|
||||
Elven_Sword_01 c6 p4 → 덩어리 6 칸 4 verts 444→464 tris 404 dHue mean 2.53 max 21.70
|
||||
| 6 | 4 | 6 | 4 | 444→464 | 2.53 | 21.70 |
|
||||
Elven_Sword_01 c6 p6 → 덩어리 6 칸 6 verts 444→464 tris 404 dHue mean 1.36 max 5.95
|
||||
| 6 | 6 | 6 | 6 | 444→464 | 1.36 | 5.95 |
|
||||
Elven_Sword_01 c10 p4 → 덩어리 10 칸 4 verts 444→468 tris 404 dHue mean 3.13 max 21.56
|
||||
| 10 | 4 | 10 | 4 | 444→468 | 3.13 | 21.56 |
|
||||
Elven_Sword_01 c10 p6 → 덩어리 10 칸 6 verts 444→474 tris 404 dHue mean 1.53 max 5.95
|
||||
| 10 | 6 | 10 | 6 | 444→474 | 1.53 | 5.95 |
|
||||
Elven_Sword_01 c10 p8 → 덩어리 10 칸 8 verts 444→476 tris 404 dHue mean 1.32 max 5.95
|
||||
| 10 | 8 | 10 | 8 | 444→476 | 1.32 | 5.95 |
|
||||
Elven_Sword_01 c16 p4 → 덩어리 16 칸 4 verts 444→480 tris 404 dHue mean 4.69 max 20.87
|
||||
| 16 | 4 | 16 | 4 | 444→480 | 4.69 | 20.87 |
|
||||
Elven_Sword_01 c16 p6 → 덩어리 16 칸 6 verts 444→496 tris 404 dHue mean 2.83 max 21.28
|
||||
| 16 | 6 | 16 | 6 | 444→496 | 2.83 | 21.28 |
|
||||
Elven_Sword_01 c16 p8 → 덩어리 16 칸 8 verts 444→496 tris 404 dHue mean 1.54 max 5.95
|
||||
| 16 | 8 | 16 | 8 | 444→496 | 1.54 | 5.95 |
|
||||
Elven_Sword_01 c16 p12 → 덩어리 16 칸 12 verts 444→500 tris 404 dHue mean 1.35 max 5.95
|
||||
| 16 | 12 | 16 | 12 | 444→500 | 1.35 | 5.95 |
|
||||
Elven_Sword_01 c16 p16 → 덩어리 16 칸 16 verts 444→500 tris 404 dHue mean 1.35 max 5.95
|
||||
| 16 | 16 | 16 | 16 | 444→500 | 1.35 | 5.95 |
|
||||
Elven_Sword_01 c24 p4 → 덩어리 24 칸 4 verts 444→488 tris 404 dHue mean 5.48 max 94.26
|
||||
| 24 | 4 | 24 | 4 | 444→488 | 5.48 | 94.26 |
|
||||
Elven_Sword_01 c24 p6 → 덩어리 24 칸 6 verts 444→516 tris 404 dHue mean 4.09 max 89.07
|
||||
| 24 | 6 | 24 | 6 | 444→516 | 4.09 | 89.07 |
|
||||
Elven_Sword_01 c24 p8 → 덩어리 24 칸 8 verts 444→524 tris 404 dHue mean 2.20 max 89.07
|
||||
| 24 | 8 | 24 | 8 | 444→524 | 2.20 | 89.07 |
|
||||
Elven_Sword_01 c24 p12 → 덩어리 24 칸 12 verts 444→532 tris 404 dHue mean 3.08 max 73.23
|
||||
| 24 | 12 | 24 | 12 | 444→532 | 3.08 | 73.23 |
|
||||
Elven_Sword_01 c24 p16 → 덩어리 24 칸 16 verts 444→532 tris 404 dHue mean 0.72 max 3.24
|
||||
| 24 | 16 | 24 | 16 | 444→532 | 0.72 | 3.24 |
|
||||
Elven_Sword_01 c40 p4 → 덩어리 40 칸 4 verts 444→510 tris 404 dHue mean 6.09 max 94.26
|
||||
| 40 | 4 | 40 | 4 | 444→510 | 6.09 | 94.26 |
|
||||
Elven_Sword_01 c40 p6 → 덩어리 40 칸 6 verts 444→540 tris 404 dHue mean 5.50 max 89.07
|
||||
| 40 | 6 | 40 | 6 | 444→540 | 5.50 | 89.07 |
|
||||
Elven_Sword_01 c40 p8 → 덩어리 40 칸 8 verts 444→552 tris 404 dHue mean 7.30 max 73.23
|
||||
| 40 | 8 | 40 | 8 | 444→552 | 7.30 | 73.23 |
|
||||
Elven_Sword_01 c40 p12 → 덩어리 40 칸 12 verts 444→585 tris 404 dHue mean 4.73 max 73.23
|
||||
| 40 | 12 | 40 | 12 | 444→585 | 4.73 | 73.23 |
|
||||
Elven_Sword_01 c40 p16 → 덩어리 40 칸 16 verts 444→601 tris 404 dHue mean 3.26 max 73.23
|
||||
| 40 | 16 | 40 | 16 | 444→601 | 3.26 | 73.23 |
|
||||
|
||||
── PP_Theme_10_Mace_003
|
||||
| 덩어리목표 | 칸 | 실덩어리 | 실칸 | verts | dHue평균 | dHue최대 |
|
||||
|---|---|---|---|---|---|---|
|
||||
PP_Theme_10_Mace_003 c6 p4 → 덩어리 26 칸 4 verts 7719→7719 tris 3848 dHue mean 2.96 max 3.92
|
||||
| 6 | 4 | 26 | 4 | 7719→7719 | 2.96 | 3.92 |
|
||||
PP_Theme_10_Mace_003 c6 p6 → 덩어리 26 칸 6 verts 7719→7719 tris 3848 dHue mean 2.96 max 3.92
|
||||
| 6 | 6 | 26 | 6 | 7719→7719 | 2.96 | 3.92 |
|
||||
PP_Theme_10_Mace_003 c10 p4 → 덩어리 26 칸 4 verts 7719→7719 tris 3848 dHue mean 2.96 max 3.92
|
||||
| 10 | 4 | 26 | 4 | 7719→7719 | 2.96 | 3.92 |
|
||||
PP_Theme_10_Mace_003 c10 p6 → 덩어리 26 칸 6 verts 7719→7719 tris 3848 dHue mean 2.96 max 3.92
|
||||
| 10 | 6 | 26 | 6 | 7719→7719 | 2.96 | 3.92 |
|
||||
PP_Theme_10_Mace_003 c10 p8 → 덩어리 26 칸 8 verts 7719→7719 tris 3848 dHue mean 2.96 max 3.91
|
||||
| 10 | 8 | 26 | 8 | 7719→7719 | 2.96 | 3.91 |
|
||||
PP_Theme_10_Mace_003 c16 p4 → 덩어리 26 칸 4 verts 7719→7719 tris 3848 dHue mean 2.96 max 3.92
|
||||
| 16 | 4 | 26 | 4 | 7719→7719 | 2.96 | 3.92 |
|
||||
PP_Theme_10_Mace_003 c16 p6 → 덩어리 26 칸 6 verts 7719→7719 tris 3848 dHue mean 2.96 max 3.92
|
||||
| 16 | 6 | 26 | 6 | 7719→7719 | 2.96 | 3.92 |
|
||||
PP_Theme_10_Mace_003 c16 p8 → 덩어리 26 칸 8 verts 7719→7719 tris 3848 dHue mean 2.96 max 3.91
|
||||
| 16 | 8 | 26 | 8 | 7719→7719 | 2.96 | 3.91 |
|
||||
PP_Theme_10_Mace_003 c16 p12 → 덩어리 26 칸 12 verts 7719→7719 tris 3848 dHue mean 2.96 max 3.91
|
||||
| 16 | 12 | 26 | 12 | 7719→7719 | 2.96 | 3.91 |
|
||||
PP_Theme_10_Mace_003 c16 p16 → 덩어리 26 칸 16 verts 7719→7719 tris 3848 dHue mean 2.96 max 3.91
|
||||
| 16 | 16 | 26 | 16 | 7719→7719 | 2.96 | 3.91 |
|
||||
PP_Theme_10_Mace_003 c24 p4 → 덩어리 26 칸 4 verts 7719→7719 tris 3848 dHue mean 2.96 max 3.92
|
||||
| 24 | 4 | 26 | 4 | 7719→7719 | 2.96 | 3.92 |
|
||||
PP_Theme_10_Mace_003 c24 p6 → 덩어리 26 칸 6 verts 7719→7719 tris 3848 dHue mean 2.96 max 3.92
|
||||
| 24 | 6 | 26 | 6 | 7719→7719 | 2.96 | 3.92 |
|
||||
PP_Theme_10_Mace_003 c24 p8 → 덩어리 26 칸 8 verts 7719→7719 tris 3848 dHue mean 2.96 max 3.91
|
||||
| 24 | 8 | 26 | 8 | 7719→7719 | 2.96 | 3.91 |
|
||||
PP_Theme_10_Mace_003 c24 p12 → 덩어리 26 칸 12 verts 7719→7719 tris 3848 dHue mean 2.96 max 3.91
|
||||
| 24 | 12 | 26 | 12 | 7719→7719 | 2.96 | 3.91 |
|
||||
PP_Theme_10_Mace_003 c24 p16 → 덩어리 26 칸 16 verts 7719→7719 tris 3848 dHue mean 2.96 max 3.91
|
||||
| 24 | 16 | 26 | 16 | 7719→7719 | 2.96 | 3.91 |
|
||||
PP_Theme_10_Mace_003 c40 p4 → 덩어리 40 칸 4 verts 7719→7719 tris 3848 dHue mean 0.00 max 0.00
|
||||
| 40 | 4 | 40 | 4 | 7719→7719 | 0.00 | 0.00 |
|
||||
PP_Theme_10_Mace_003 c40 p6 → 덩어리 40 칸 6 verts 7719→7719 tris 3848 dHue mean 0.00 max 0.00
|
||||
| 40 | 6 | 40 | 6 | 7719→7719 | 0.00 | 0.00 |
|
||||
PP_Theme_10_Mace_003 c40 p8 → 덩어리 40 칸 8 verts 7719→7719 tris 3848 dHue mean 0.00 max 0.00
|
||||
| 40 | 8 | 40 | 8 | 7719→7719 | 0.00 | 0.00 |
|
||||
PP_Theme_10_Mace_003 c40 p12 → 덩어리 40 칸 12 verts 7719→7719 tris 3848 dHue mean 0.00 max 0.00
|
||||
| 40 | 12 | 40 | 12 | 7719→7719 | 0.00 | 0.00 |
|
||||
PP_Theme_10_Mace_003 c40 p16 → 덩어리 40 칸 16 verts 7719→7719 tris 3848 dHue mean 0.00 max 0.00
|
||||
| 40 | 16 | 40 | 16 | 7719→7719 | 0.00 | 0.00 |
|
||||
|
||||
── PP_Theme_10_Shield_003
|
||||
| 덩어리목표 | 칸 | 실덩어리 | 실칸 | verts | dHue평균 | dHue최대 |
|
||||
|---|---|---|---|---|---|---|
|
||||
PP_Theme_10_Shield_003 c6 p4 → 덩어리 64 칸 4 verts 7671→7671 tris 4230 dHue mean 0.00 max 0.00
|
||||
| 6 | 4 | 64 | 4 | 7671→7671 | 0.00 | 0.00 |
|
||||
PP_Theme_10_Shield_003 c6 p6 → 덩어리 64 칸 6 verts 7671→7671 tris 4230 dHue mean 0.00 max 0.00
|
||||
| 6 | 6 | 64 | 6 | 7671→7671 | 0.00 | 0.00 |
|
||||
PP_Theme_10_Shield_003 c10 p4 → 덩어리 64 칸 4 verts 7671→7671 tris 4230 dHue mean 0.00 max 0.00
|
||||
| 10 | 4 | 64 | 4 | 7671→7671 | 0.00 | 0.00 |
|
||||
PP_Theme_10_Shield_003 c10 p6 → 덩어리 64 칸 6 verts 7671→7671 tris 4230 dHue mean 0.00 max 0.00
|
||||
| 10 | 6 | 64 | 6 | 7671→7671 | 0.00 | 0.00 |
|
||||
PP_Theme_10_Shield_003 c10 p8 → 덩어리 64 칸 8 verts 7671→7671 tris 4230 dHue mean 0.00 max 0.00
|
||||
| 10 | 8 | 64 | 8 | 7671→7671 | 0.00 | 0.00 |
|
||||
PP_Theme_10_Shield_003 c16 p4 → 덩어리 64 칸 4 verts 7671→7671 tris 4230 dHue mean 0.00 max 0.00
|
||||
| 16 | 4 | 64 | 4 | 7671→7671 | 0.00 | 0.00 |
|
||||
PP_Theme_10_Shield_003 c16 p6 → 덩어리 64 칸 6 verts 7671→7671 tris 4230 dHue mean 0.00 max 0.00
|
||||
| 16 | 6 | 64 | 6 | 7671→7671 | 0.00 | 0.00 |
|
||||
PP_Theme_10_Shield_003 c16 p8 → 덩어리 64 칸 8 verts 7671→7671 tris 4230 dHue mean 0.00 max 0.00
|
||||
| 16 | 8 | 64 | 8 | 7671→7671 | 0.00 | 0.00 |
|
||||
PP_Theme_10_Shield_003 c16 p12 → 덩어리 64 칸 12 verts 7671→7671 tris 4230 dHue mean 0.00 max 0.00
|
||||
| 16 | 12 | 64 | 12 | 7671→7671 | 0.00 | 0.00 |
|
||||
PP_Theme_10_Shield_003 c16 p16 → 덩어리 64 칸 16 verts 7671→7671 tris 4230 dHue mean 0.00 max 0.00
|
||||
| 16 | 16 | 64 | 16 | 7671→7671 | 0.00 | 0.00 |
|
||||
PP_Theme_10_Shield_003 c24 p4 → 덩어리 64 칸 4 verts 7671→7671 tris 4230 dHue mean 0.00 max 0.00
|
||||
| 24 | 4 | 64 | 4 | 7671→7671 | 0.00 | 0.00 |
|
||||
PP_Theme_10_Shield_003 c24 p6 → 덩어리 64 칸 6 verts 7671→7671 tris 4230 dHue mean 0.00 max 0.00
|
||||
| 24 | 6 | 64 | 6 | 7671→7671 | 0.00 | 0.00 |
|
||||
PP_Theme_10_Shield_003 c24 p8 → 덩어리 64 칸 8 verts 7671→7671 tris 4230 dHue mean 0.00 max 0.00
|
||||
| 24 | 8 | 64 | 8 | 7671→7671 | 0.00 | 0.00 |
|
||||
PP_Theme_10_Shield_003 c24 p12 → 덩어리 64 칸 12 verts 7671→7671 tris 4230 dHue mean 0.00 max 0.00
|
||||
| 24 | 12 | 64 | 12 | 7671→7671 | 0.00 | 0.00 |
|
||||
PP_Theme_10_Shield_003 c24 p16 → 덩어리 64 칸 16 verts 7671→7671 tris 4230 dHue mean 0.00 max 0.00
|
||||
| 24 | 16 | 64 | 16 | 7671→7671 | 0.00 | 0.00 |
|
||||
PP_Theme_10_Shield_003 c40 p4 → 덩어리 64 칸 4 verts 7671→7671 tris 4230 dHue mean 0.00 max 0.00
|
||||
| 40 | 4 | 64 | 4 | 7671→7671 | 0.00 | 0.00 |
|
||||
PP_Theme_10_Shield_003 c40 p6 → 덩어리 64 칸 6 verts 7671→7671 tris 4230 dHue mean 0.00 max 0.00
|
||||
| 40 | 6 | 64 | 6 | 7671→7671 | 0.00 | 0.00 |
|
||||
PP_Theme_10_Shield_003 c40 p8 → 덩어리 64 칸 8 verts 7671→7671 tris 4230 dHue mean 0.00 max 0.00
|
||||
| 40 | 8 | 64 | 8 | 7671→7671 | 0.00 | 0.00 |
|
||||
PP_Theme_10_Shield_003 c40 p12 → 덩어리 64 칸 12 verts 7671→7671 tris 4230 dHue mean 0.00 max 0.00
|
||||
| 40 | 12 | 64 | 12 | 7671→7671 | 0.00 | 0.00 |
|
||||
PP_Theme_10_Shield_003 c40 p16 → 덩어리 64 칸 16 verts 7671→7671 tris 4230 dHue mean 0.00 max 0.00
|
||||
| 40 | 16 | 64 | 16 | 7671→7671 | 0.00 | 0.00 |
|
||||
|
||||
── Dagger1
|
||||
| 덩어리목표 | 칸 | 실덩어리 | 실칸 | verts | dHue평균 | dHue최대 |
|
||||
|---|---|---|---|---|---|---|
|
||||
Dagger1 c6 p4 → 덩어리 6 칸 4 verts 91→105 tris 76 dHue mean 0.18 max 1.46
|
||||
| 6 | 4 | 6 | 4 | 91→105 | 0.18 | 1.46 |
|
||||
Dagger1 c6 p6 → 덩어리 6 칸 6 verts 91→109 tris 76 dHue mean 0.01 max 0.02
|
||||
| 6 | 6 | 6 | 6 | 91→109 | 0.01 | 0.02 |
|
||||
Dagger1 c10 p4 → 덩어리 10 칸 4 verts 91→105 tris 76 dHue mean 0.63 max 1.72
|
||||
| 10 | 4 | 10 | 4 | 91→105 | 0.63 | 1.72 |
|
||||
Dagger1 c10 p6 → 덩어리 10 칸 6 verts 91→116 tris 76 dHue mean 0.18 max 1.72
|
||||
| 10 | 6 | 10 | 6 | 91→116 | 0.18 | 1.72 |
|
||||
Dagger1 c10 p8 → 덩어리 10 칸 8 verts 91→123 tris 76 dHue mean 0.01 max 0.02
|
||||
| 10 | 8 | 10 | 8 | 91→123 | 0.01 | 0.02 |
|
||||
Dagger1 c16 p4 → 덩어리 16 칸 4 verts 91→105 tris 76 dHue mean 0.79 max 1.72
|
||||
| 16 | 4 | 16 | 4 | 91→105 | 0.79 | 1.72 |
|
||||
Dagger1 c16 p6 → 덩어리 16 칸 6 verts 91→118 tris 76 dHue mean 0.36 max 1.72
|
||||
| 16 | 6 | 16 | 6 | 91→118 | 0.36 | 1.72 |
|
||||
Dagger1 c16 p8 → 덩어리 16 칸 8 verts 91→130 tris 76 dHue mean 0.02 max 0.43
|
||||
| 16 | 8 | 16 | 8 | 91→130 | 0.02 | 0.43 |
|
||||
Dagger1 c16 p12 → 덩어리 16 칸 12 verts 91→131 tris 76 dHue mean 0.01 max 0.02
|
||||
| 16 | 12 | 16 | 12 | 91→131 | 0.01 | 0.02 |
|
||||
Dagger1 c16 p16 → 덩어리 16 칸 16 verts 91→134 tris 76 dHue mean 0.01 max 0.02
|
||||
| 16 | 16 | 16 | 16 | 91→134 | 0.01 | 0.02 |
|
||||
Dagger1 c24 p4 → 덩어리 24 칸 4 verts 91→105 tris 76 dHue mean 0.79 max 2.17
|
||||
| 24 | 4 | 24 | 4 | 91→105 | 0.79 | 2.17 |
|
||||
Dagger1 c24 p6 → 덩어리 24 칸 6 verts 91→121 tris 76 dHue mean 0.56 max 1.72
|
||||
| 24 | 6 | 24 | 6 | 91→121 | 0.56 | 1.72 |
|
||||
Dagger1 c24 p8 → 덩어리 24 칸 8 verts 91→133 tris 76 dHue mean 0.20 max 1.24
|
||||
| 24 | 8 | 24 | 8 | 91→133 | 0.20 | 1.24 |
|
||||
Dagger1 c24 p12 → 덩어리 24 칸 12 verts 91→141 tris 76 dHue mean 0.01 max 0.02
|
||||
| 24 | 12 | 24 | 12 | 91→141 | 0.01 | 0.02 |
|
||||
Dagger1 c24 p16 → 덩어리 24 칸 16 verts 91→141 tris 76 dHue mean 0.01 max 0.02
|
||||
| 24 | 16 | 24 | 16 | 91→141 | 0.01 | 0.02 |
|
||||
Dagger1 c40 p4 → 덩어리 40 칸 4 verts 91→114 tris 76 dHue mean 0.87 max 2.97
|
||||
| 40 | 4 | 40 | 4 | 91→114 | 0.87 | 2.97 |
|
||||
Dagger1 c40 p6 → 덩어리 40 칸 6 verts 91→126 tris 76 dHue mean 0.71 max 2.97
|
||||
| 40 | 6 | 40 | 6 | 91→126 | 0.71 | 2.97 |
|
||||
Dagger1 c40 p8 → 덩어리 40 칸 8 verts 91→148 tris 76 dHue mean 0.38 max 2.27
|
||||
| 40 | 8 | 40 | 8 | 91→148 | 0.38 | 2.27 |
|
||||
Dagger1 c40 p12 → 덩어리 40 칸 12 verts 91→163 tris 76 dHue mean 0.14 max 1.75
|
||||
| 40 | 12 | 40 | 12 | 91→163 | 0.14 | 1.75 |
|
||||
Dagger1 c40 p16 → 덩어리 40 칸 16 verts 91→163 tris 76 dHue mean 0.04 max 2.17
|
||||
| 40 | 16 | 40 | 16 | 91→163 | 0.04 | 2.17 |
|
||||
|
||||
── PP_Theme_05_Bow_003
|
||||
| 덩어리목표 | 칸 | 실덩어리 | 실칸 | verts | dHue평균 | dHue최대 |
|
||||
|---|---|---|---|---|---|---|
|
||||
PP_Theme_05_Bow_003 c6 p4 → 덩어리 54 칸 4 verts 12070→12070 tris 5780 dHue mean 6.65 max 57.66
|
||||
| 6 | 4 | 54 | 4 | 12070→12070 | 6.65 | 57.66 |
|
||||
PP_Theme_05_Bow_003 c6 p6 → 덩어리 54 칸 6 verts 12070→12070 tris 5780 dHue mean 0.01 max 0.02
|
||||
| 6 | 6 | 54 | 6 | 12070→12070 | 0.01 | 0.02 |
|
||||
PP_Theme_05_Bow_003 c10 p4 → 덩어리 54 칸 4 verts 12070→12070 tris 5780 dHue mean 6.65 max 57.66
|
||||
| 10 | 4 | 54 | 4 | 12070→12070 | 6.65 | 57.66 |
|
||||
PP_Theme_05_Bow_003 c10 p6 → 덩어리 54 칸 6 verts 12070→12070 tris 5780 dHue mean 0.01 max 0.02
|
||||
| 10 | 6 | 54 | 6 | 12070→12070 | 0.01 | 0.02 |
|
||||
PP_Theme_05_Bow_003 c10 p8 → 덩어리 54 칸 8 verts 12070→12070 tris 5780 dHue mean 0.00 max 0.00
|
||||
| 10 | 8 | 54 | 8 | 12070→12070 | 0.00 | 0.00 |
|
||||
PP_Theme_05_Bow_003 c16 p4 → 덩어리 54 칸 4 verts 12070→12070 tris 5780 dHue mean 6.65 max 57.66
|
||||
| 16 | 4 | 54 | 4 | 12070→12070 | 6.65 | 57.66 |
|
||||
PP_Theme_05_Bow_003 c16 p6 → 덩어리 54 칸 6 verts 12070→12070 tris 5780 dHue mean 0.01 max 0.02
|
||||
| 16 | 6 | 54 | 6 | 12070→12070 | 0.01 | 0.02 |
|
||||
PP_Theme_05_Bow_003 c16 p8 → 덩어리 54 칸 8 verts 12070→12070 tris 5780 dHue mean 0.00 max 0.00
|
||||
| 16 | 8 | 54 | 8 | 12070→12070 | 0.00 | 0.00 |
|
||||
PP_Theme_05_Bow_003 c16 p12 → 덩어리 54 칸 12 verts 12070→12070 tris 5780 dHue mean 0.00 max 0.00
|
||||
| 16 | 12 | 54 | 12 | 12070→12070 | 0.00 | 0.00 |
|
||||
PP_Theme_05_Bow_003 c16 p16 → 덩어리 54 칸 16 verts 12070→12070 tris 5780 dHue mean 0.00 max 0.00
|
||||
| 16 | 16 | 54 | 16 | 12070→12070 | 0.00 | 0.00 |
|
||||
PP_Theme_05_Bow_003 c24 p4 → 덩어리 54 칸 4 verts 12070→12070 tris 5780 dHue mean 6.65 max 57.66
|
||||
| 24 | 4 | 54 | 4 | 12070→12070 | 6.65 | 57.66 |
|
||||
PP_Theme_05_Bow_003 c24 p6 → 덩어리 54 칸 6 verts 12070→12070 tris 5780 dHue mean 0.01 max 0.02
|
||||
| 24 | 6 | 54 | 6 | 12070→12070 | 0.01 | 0.02 |
|
||||
PP_Theme_05_Bow_003 c24 p8 → 덩어리 54 칸 8 verts 12070→12070 tris 5780 dHue mean 0.00 max 0.00
|
||||
| 24 | 8 | 54 | 8 | 12070→12070 | 0.00 | 0.00 |
|
||||
PP_Theme_05_Bow_003 c24 p12 → 덩어리 54 칸 12 verts 12070→12070 tris 5780 dHue mean 0.00 max 0.00
|
||||
| 24 | 12 | 54 | 12 | 12070→12070 | 0.00 | 0.00 |
|
||||
PP_Theme_05_Bow_003 c24 p16 → 덩어리 54 칸 16 verts 12070→12070 tris 5780 dHue mean 0.00 max 0.00
|
||||
| 24 | 16 | 54 | 16 | 12070→12070 | 0.00 | 0.00 |
|
||||
PP_Theme_05_Bow_003 c40 p4 → 덩어리 54 칸 4 verts 12070→12070 tris 5780 dHue mean 6.65 max 57.66
|
||||
| 40 | 4 | 54 | 4 | 12070→12070 | 6.65 | 57.66 |
|
||||
PP_Theme_05_Bow_003 c40 p6 → 덩어리 54 칸 6 verts 12070→12070 tris 5780 dHue mean 0.01 max 0.02
|
||||
| 40 | 6 | 54 | 6 | 12070→12070 | 0.01 | 0.02 |
|
||||
PP_Theme_05_Bow_003 c40 p8 → 덩어리 54 칸 8 verts 12070→12070 tris 5780 dHue mean 0.00 max 0.00
|
||||
| 40 | 8 | 54 | 8 | 12070→12070 | 0.00 | 0.00 |
|
||||
PP_Theme_05_Bow_003 c40 p12 → 덩어리 54 칸 12 verts 12070→12070 tris 5780 dHue mean 0.00 max 0.00
|
||||
| 40 | 12 | 54 | 12 | 12070→12070 | 0.00 | 0.00 |
|
||||
PP_Theme_05_Bow_003 c40 p16 → 덩어리 54 칸 16 verts 12070→12070 tris 5780 dHue mean 0.00 max 0.00
|
||||
| 40 | 16 | 54 | 16 | 12070→12070 | 0.00 | 0.00 |
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
root=PC_LH_M05 키 1.2200 m · center (-0.01, 0.57, 0.00) · rootLossy (1.0527, 1.0527, 1.0527)
|
||||
socket[0] w_shield = w_shield lossy (0.6316, 0.6316, 0.6316)
|
||||
socket[1] w_righthand = w_righthand lossy (1.0527, 0.7369, 1.0527)
|
||||
socket[2] w_onehand = w_onehand lossy (0.8421, 0.8421, 0.8421)
|
||||
socket[3] w_bladedancer_l = w_bladedancer_l lossy (1.0527, 1.0527, 1.0527)
|
||||
socket[4] w_bladedancer_r = w_bladedancer_r lossy (0.8421, 0.8421, 0.8421)
|
||||
socket[5] w_orb = w_orb lossy (0.1053, 0.1053, 0.1053)
|
||||
socket[6] w_archer_l = w_archer_l lossy (1.3685, 1.3685, 1.3685)
|
||||
renderers Arm_m05,Body_m05,Face,Hair05,Head,Leg_M05
|
||||
palette SO enabled=1 rows=6
|
||||
|
||||
SO: enabled_=1 weaponEnabled_=1 무기행 11 캐릭터행 6
|
||||
=== 최종 검증 (인게임 Play · 포스트 포함 · 1080x1920 · ortho 10 · 덩어리 16 · 팔레트 12칸) ===
|
||||
캐릭터 (무기 없음 · 시작) : 2959 px · 고유색 167 · 비율 5.64 % · 단계 21
|
||||
|
||||
| 무기 | 화면 px | 고유색 전→후 | 서로다른색 % 전→후 | 칸당단계 평균/최대 | 배수 | 메시/렌더러 교체 |
|
||||
|---|---|---|---|---|---|---|
|
||||
PP_Theme_10_Mace_003 칸 10개 측정 · 평균 1.90 · 최대 4 · 0:45px/2단 1:5px/4단 2:12px/2단 3:75px/1단 4:3px/1단 5:5px/2단 6:67px/2단 8:53px/2단 9:3px/2단 11:7px/1단
|
||||
| PP_Theme_10_Mace_003 | 265 | 72→35 | 27.38→13.21 | 1.90/4 | ×0.6746 | 1/1 |
|
||||
되돌림 확인 PP_Theme_10_Mace_003 : px 263(전 263) · 고유색 72(전 72) · 동일 ✅
|
||||
PP_Theme_10_Shield_003 칸 3개 측정 · 평균 6.00 · 최대 9 · 0:1157px/7단 1:139px/9단 3:13px/2단
|
||||
| PP_Theme_10_Shield_003 | 1306 | 86→70 | 6.57→5.36 | 6.00/9 | ×1.0000 | 1/1 |
|
||||
되돌림 확인 PP_Theme_10_Shield_003 : px 1309(전 1309) · 고유색 86(전 86) · 동일 ✅
|
||||
Elven_Sword_01 칸 11개 측정 · 평균 1.36 · 최대 2 · 0:104px/1단 1:26px/1단 2:62px/1단 3:36px/2단 4:14px/2단 5:9px/1단 6:10px/1단 7:9px/1단 8:14px/2단 9:8px/2단 10:20px/1단
|
||||
| Elven_Sword_01 | 312 | 251→24 | 82.57→7.69 | 1.36/2 | ×0.5499 | 1/1 |
|
||||
되돌림 확인 Elven_Sword_01 : px 304(전 304) · 고유색 251(전 251) · 동일 ✅
|
||||
PP_Theme_08_Mace_003 칸 8개 측정 · 평균 2.13 · 최대 3 · 0:86px/2단 1:126px/2단 2:9px/3단 3:15px/2단 5:11px/2단 6:8px/2단 7:6px/2단 9:3px/2단
|
||||
| PP_Theme_08_Mace_003 | 269 | 81→56 | 30.11→20.82 | 2.13/3 | ×0.5768 | 1/1 |
|
||||
되돌림 확인 PP_Theme_08_Mace_003 : px 269(전 269) · 고유색 81(전 81) · 동일 ✅
|
||||
PP_Theme_08_Shield_003 칸 3개 측정 · 평균 4.67 · 최대 8 · 0:962px/8단 3:37px/3단 4:9px/3단
|
||||
| PP_Theme_08_Shield_003 | 1007 | 120→59 | 11.90→5.86 | 4.67/8 | ×0.8182 | 1/1 |
|
||||
되돌림 확인 PP_Theme_08_Shield_003 : px 1008(전 1008) · 고유색 120(전 120) · 동일 ✅
|
||||
PP_Theme_05_Bow_003 칸 8개 측정 · 평균 2.63 · 최대 4 · 0:63px/1단 2:7px/2단 3:9px/3단 6:9px/3단 7:11px/1단 8:73px/4단 9:6px/3단 11:5px/4단
|
||||
| PP_Theme_05_Bow_003 | 146 | 51→30 | 38.93→20.55 | 2.63/4 | ×0.3502 | 1/1 |
|
||||
되돌림 확인 PP_Theme_05_Bow_003 : px 131(전 131) · 고유색 51(전 51) · 동일 ✅
|
||||
PP_Theme_05_Bow_004 칸 5개 측정 · 평균 3.40 · 최대 5 · 0:98px/3단 1:10px/2단 3:11px/3단 6:21px/4단 8:84px/5단
|
||||
| PP_Theme_05_Bow_004 | 194 | 65→36 | 28.89→18.56 | 3.40/5 | ×0.4068 | 1/1 |
|
||||
되돌림 확인 PP_Theme_05_Bow_004 : px 225(전 225) · 고유색 65(전 65) · 동일 ✅
|
||||
PP_Theme_03_Scepter_001 칸 7개 측정 · 평균 2.14 · 최대 3 · 0:61px/3단 1:34px/2단 3:3px/2단 4:17px/1단 5:6px/1단 6:17px/3단 9:28px/3단
|
||||
| PP_Theme_03_Scepter_001 | 166 | 69→31 | 41.07→18.67 | 2.14/3 | ×0.4992 | 1/1 |
|
||||
되돌림 확인 PP_Theme_03_Scepter_001 : px 168(전 168) · 고유색 69(전 69) · 동일 ✅
|
||||
PP_Theme_03_Wand_001 칸 6개 측정 · 평균 2.67 · 최대 4 · 0:141px/3단 2:103px/2단 3:3px/2단 6:119px/3단 7:6px/2단 10:41px/4단
|
||||
| PP_Theme_03_Wand_001 | 417 | 159→36 | 38.13→8.63 | 2.67/4 | ×1.0000 | 1/1 |
|
||||
되돌림 확인 PP_Theme_03_Wand_001 : px 417(전 417) · 고유색 159(전 159) · 동일 ✅
|
||||
Dagger1 칸 6개 측정 · 평균 2.17 · 최대 4 · 0:51px/4단 1:3px/1단 2:29px/3단 3:6px/1단 5:24px/2단 9:14px/2단
|
||||
| Dagger1 | 126 | 58→22 | 46.03→17.46 | 2.17/4 | ×1.0000 | 1/1 |
|
||||
되돌림 확인 Dagger1 : px 126(전 126) · 고유색 58(전 58) · 동일 ✅
|
||||
Dagger2 칸 9개 측정 · 평균 1.11 · 최대 2 · 0:43px/1단 1:7px/1단 2:4px/2단 4:3px/1단 5:5px/1단 7:13px/1단 9:11px/1단 10:6px/1단 11:6px/1단
|
||||
| Dagger2 | 100 | 59→15 | 65.56→15.00 | 1.11/2 | ×1.0000 | 1/1 |
|
||||
되돌림 확인 Dagger2 : px 90(전 90) · 고유색 61(전 59) · 차이 ⚠
|
||||
| Orb | 0 | 0→0 | 0.00→0.00 | — | ×1.0000 | 표에 없음(Orb) |
|
||||
|
||||
캐릭터 (무기 없음 · 끝) : 2959 px · 고유색 167 · 비율 5.64 % · 단계 21 → 악화 없음 ✅
|
||||
합계 교체: 메시 11 · 렌더러 11
|
||||
|
|
@ -0,0 +1,137 @@
|
|||
// WL-816b — 최종 검증 (🔴 인게임 Play · 포스트 포함 · 게임 크기) · entry WL816bVerify.Run
|
||||
// 실제 런타임 경로(`WLWeaponPalette.Apply`)로만 갈아끼운다 — 하니스 전용 경로를 쓰지 않는다.
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using UnityEngine;
|
||||
using WL.Look.Character;
|
||||
|
||||
public static class WL816bVerify
|
||||
{
|
||||
public static void Run()
|
||||
{
|
||||
WL816b.Reset(); WL816b.PubSetup();
|
||||
var cfg = WLCharacterPaletteSettings.Instance;
|
||||
WL816b.Log("");
|
||||
WL816b.Log("SO: enabled_=" + cfg.enabled_ + " weaponEnabled_=" + cfg.weaponEnabled_
|
||||
+ " 무기행 " + (cfg.weaponNames == null ? 0 : cfg.weaponNames.Length)
|
||||
+ " 캐릭터행 " + (cfg.rendererNames == null ? 0 : cfg.rendererNames.Length));
|
||||
WL816b.Log("=== 최종 검증 (인게임 Play · 포스트 포함 · 1080x1920 · ortho 10 · 덩어리 " + WL816bBake.FINAL_CHUNKS + " · 팔레트 " + WL816bBake.FINAL_PALETTE + "칸) ===");
|
||||
|
||||
var cA = WL816b.MeasureChar("v_char_A.png", null);
|
||||
WL816b.Log(string.Format("캐릭터 (무기 없음 · 시작) : {0} px · 고유색 {1} · 비율 {2:F2} % · 단계 {3}", cA.px, cA.uniq, cA.ratio, cA.steps));
|
||||
WL816b.Log("");
|
||||
WL816b.Log("| 무기 | 화면 px | 고유색 전→후 | 서로다른색 % 전→후 | 칸당단계 평균/최대 | 배수 | 메시/렌더러 교체 |");
|
||||
WL816b.Log("|---|---|---|---|---|---|---|");
|
||||
|
||||
int okMesh = 0, okRend = 0;
|
||||
foreach (var w in WL816b.WEAPONS)
|
||||
{
|
||||
WL816b.Clear();
|
||||
float rb, mult;
|
||||
var go = WL816b.Spawn(w[0], int.Parse(w[1]), out rb, out mult);
|
||||
if (go == null) continue;
|
||||
WL816b.ReLook();
|
||||
var mA = WL816b.MeasureNow(go, "v_" + w[0] + "_maskA.png", "v_" + w[0] + "_A.png");
|
||||
|
||||
// 원본 메시·머티리얼 기록(되돌리기 동일성 확인용)
|
||||
var mf0 = go.GetComponentsInChildren<MeshFilter>(true).Select(f => f.sharedMesh).ToArray();
|
||||
var rm0 = go.GetComponentsInChildren<Renderer>(true).Where(r => !(r is ParticleSystemRenderer)).Select(r => r.sharedMaterial).ToArray();
|
||||
|
||||
WLWeaponPalette.ResetCounters();
|
||||
WL816b.UnLook(); // 🔴 장식을 먼저 벗긴다
|
||||
bool applied = WLWeaponPalette.Apply(go.transform); // 🔴 실제 런타임 경로
|
||||
WL816b.ReLook();
|
||||
var mB = WL816b.MeasureNow(go, "v_" + w[0] + "_maskB.png", "v_" + w[0] + "_B.png");
|
||||
|
||||
string steps = "—"; int mx = 0; float av = 0;
|
||||
if (applied)
|
||||
{
|
||||
var mat = go.GetComponentsInChildren<Renderer>(true).First(r => !(r is ParticleSystemRenderer)).sharedMaterial;
|
||||
var tex = mat.HasProperty("_BaseMap") ? mat.GetTexture("_BaseMap") as Texture2D : null;
|
||||
if (tex != null)
|
||||
{
|
||||
// 팔레트 텍스처에서 칸 색을 되읽어 칸별 단계를 잰다
|
||||
var pal = new List<Vector3>();
|
||||
int G = tex.width / 8;
|
||||
for (int j = 0; j < G * G; j++)
|
||||
{
|
||||
var c = tex.GetPixel((j % G) * 8 + 4, (j / G) * 8 + 4);
|
||||
if (c.r > 0.98f && c.g < 0.02f && c.b > 0.98f) continue; // 미사용 칸(마젠타)
|
||||
pal.Add(new Vector3(c.r, c.g, c.b));
|
||||
}
|
||||
string det = WL816b.CellSteps(go, pal.ToArray(), out mx, out av);
|
||||
steps = av.ToString("F2") + "/" + mx;
|
||||
WL816b.Log(" " + w[0] + " " + det);
|
||||
}
|
||||
okMesh += WLWeaponPalette.AppliedMeshes; okRend += WLWeaponPalette.AppliedRenderers;
|
||||
}
|
||||
WL816b.Log(string.Format("| {0} | {1} | {2}→{3} | {4:F2}→{5:F2} | {6} | ×{7:F4} | {8} |",
|
||||
w[0], mB.px, mA.uniq, mB.uniq, mA.ratio, mB.ratio, steps, mult,
|
||||
applied ? (WLWeaponPalette.AppliedMeshes + "/" + WLWeaponPalette.AppliedRenderers) : "표에 없음(Orb)"));
|
||||
|
||||
// 되돌리기 동일성 — 원본으로 되돌리면 글자 하나까지 같은가
|
||||
if (applied)
|
||||
{
|
||||
WL816b.UnLook();
|
||||
var fs = go.GetComponentsInChildren<MeshFilter>(true);
|
||||
for (int i = 0; i < fs.Length; i++) fs[i].sharedMesh = mf0[i];
|
||||
var rs = go.GetComponentsInChildren<Renderer>(true).Where(r => !(r is ParticleSystemRenderer)).ToArray();
|
||||
for (int i = 0; i < rs.Length; i++) { var ms = rs[i].sharedMaterials; for (int k = 0; k < ms.Length; k++) ms[k] = rm0[i]; rs[i].sharedMaterials = ms; }
|
||||
WL816b.ReLook();
|
||||
var mR = WL816b.MeasureNow(go, null, "v_" + w[0] + "_R.png");
|
||||
WL816b.Log(string.Format(" 되돌림 확인 {0} : px {1}(전 {2}) · 고유색 {3}(전 {4}) · {5}",
|
||||
w[0], mR.px, mA.px, mR.uniq, mA.uniq, (mR.px == mA.px && mR.uniq == mA.uniq) ? "동일 ✅" : "차이 ⚠"));
|
||||
}
|
||||
}
|
||||
|
||||
WL816b.Clear();
|
||||
var cB = WL816b.MeasureChar("v_char_B.png", null);
|
||||
WL816b.Log("");
|
||||
WL816b.Log(string.Format("캐릭터 (무기 없음 · 끝) : {0} px · 고유색 {1} · 비율 {2:F2} % · 단계 {3} → 악화 {4}",
|
||||
cB.px, cB.uniq, cB.ratio, cB.steps, (cB.uniq <= cA.uniq && cB.ratio <= cA.ratio + 0.05f) ? "없음 ✅" : "고유색 " + (cB.uniq - cA.uniq) + " · 비율 " + (cB.ratio - cA.ratio).ToString("F2") + "%p"));
|
||||
WL816b.Log("합계 교체: 메시 " + okMesh + " · 렌더러 " + okRend);
|
||||
|
||||
// ⓐⓑ 전신 캡처 — 기본 클래스(10501) 메이스+방패를 동시에 든 전신
|
||||
WL816b.Clear();
|
||||
float r1, m1, r2, m2;
|
||||
var g1 = WL816b.Spawn("PP_Theme_10_Mace_003", 1, out r1, out m1);
|
||||
var g2 = WL816b.Spawn("PP_Theme_10_Shield_003", 0, out r2, out m2);
|
||||
WL816b.ReLook(); WL816b.ShootGame("a_full_before.png");
|
||||
WL816b.UnLook();
|
||||
WLWeaponPalette.Apply(g1.transform); WLWeaponPalette.Apply(g2.transform);
|
||||
WL816b.ReLook(); WL816b.ShootGame("b_full_after.png");
|
||||
// 한손검 전신도 한 장씩
|
||||
WL816b.Clear();
|
||||
var g3 = WL816b.Spawn("Elven_Sword_01", 2, out r1, out m1);
|
||||
WL816b.ReLook(); WL816b.ShootGame("a_sword_before.png");
|
||||
WL816b.UnLook();
|
||||
WLWeaponPalette.Apply(g3.transform);
|
||||
WL816b.ReLook(); WL816b.ShootGame("b_sword_after.png");
|
||||
|
||||
WL816b.Clear(); WL816b.FreeTmp(); WL816b.PubTeardown();
|
||||
WL816b.Flush("WL816b_VERIFY.txt");
|
||||
Debug.Log("[WL816b] verify done");
|
||||
}
|
||||
|
||||
/// <summary>🔴 대조군 — 무기를 하나도 붙이지 않고 같은 횟수만큼 측정·ReLook 을 반복한다.
|
||||
/// 캐릭터 수치가 여기서도 같은 만큼 흔들리면 그 흔들림은 **하니스 탓**이지 무기 탓이 아니다.</summary>
|
||||
public static void Control()
|
||||
{
|
||||
WL816b.Reset(); WL816b.PubSetup();
|
||||
WL816b.Log("=== 대조군: 무기 0 · ReLook/측정만 12회 반복 ===");
|
||||
var c0 = WL816b.MeasureChar(null, null);
|
||||
WL816b.Log(string.Format("0회 : {0} px · 고유색 {1} · 비율 {2:F2} %", c0.px, c0.uniq, c0.ratio));
|
||||
for (int i = 1; i <= 12; i++)
|
||||
{
|
||||
WL816b.UnLook(); WL816b.ReLook();
|
||||
var c = WL816b.MeasureChar(null, null);
|
||||
if (i % 4 == 0 || i == 12) WL816b.Log(string.Format("{0}회 : {1} px · 고유색 {2} · 비율 {3:F2} %", i, c.px, c.uniq, c.ratio));
|
||||
}
|
||||
WL816b.PubTeardown();
|
||||
WL816b.Flush("WL816b_CONTROL.txt");
|
||||
Debug.Log("[WL816b] control done");
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,89 @@
|
|||
# WL-816b 비교 시트 — 인게임 Play 렌더(게임 크기)를 니어리스트로 확대해 붙인다.
|
||||
# python AgentScripts/WL816b_sheet.py
|
||||
import os
|
||||
import numpy as np
|
||||
from PIL import Image, ImageDraw
|
||||
|
||||
RAW = "Screenshots_WL/WL816b/raw/"
|
||||
OUT = "Screenshots_WL/WL816b/"
|
||||
WEAPONS = ["Elven_Sword_01", "PP_Theme_10_Mace_003", "PP_Theme_10_Shield_003",
|
||||
"PP_Theme_08_Mace_003", "PP_Theme_08_Shield_003",
|
||||
"PP_Theme_05_Bow_003", "PP_Theme_05_Bow_004",
|
||||
"PP_Theme_03_Scepter_001", "PP_Theme_03_Wand_001", "Dagger1", "Dagger2"]
|
||||
|
||||
|
||||
def load(p):
|
||||
return Image.open(RAW + p).convert("RGB")
|
||||
|
||||
|
||||
def bbox_of(mask_png, pad=6):
|
||||
a = np.asarray(Image.open(RAW + mask_png).convert("L"))
|
||||
ys, xs = np.nonzero(a > 127)
|
||||
if len(ys) == 0:
|
||||
return None
|
||||
return (max(0, xs.min() - pad), max(0, ys.min() - pad), min(a.shape[1], xs.max() + 1 + pad), min(a.shape[0], ys.max() + 1 + pad))
|
||||
|
||||
|
||||
def crop_zoom(img, box, z):
|
||||
c = img.crop(box)
|
||||
return c.resize((c.width * z, c.height * z), Image.NEAREST)
|
||||
|
||||
|
||||
def label(im, text, h=22):
|
||||
out = Image.new("RGB", (im.width, im.height + h), (18, 18, 22))
|
||||
out.paste(im, (0, h))
|
||||
ImageDraw.Draw(out).text((4, 5), text, fill=(235, 235, 235))
|
||||
return out
|
||||
|
||||
|
||||
def hstack(ims, gap=10, bg=(18, 18, 22)):
|
||||
w = sum(i.width for i in ims) + gap * (len(ims) - 1)
|
||||
h = max(i.height for i in ims)
|
||||
out = Image.new("RGB", (w, h), bg)
|
||||
x = 0
|
||||
for i in ims:
|
||||
out.paste(i, (x, 0)); x += i.width + gap
|
||||
return out
|
||||
|
||||
|
||||
def vstack(ims, gap=10, bg=(18, 18, 22)):
|
||||
w = max(i.width for i in ims)
|
||||
h = sum(i.height for i in ims) + gap * (len(ims) - 1)
|
||||
out = Image.new("RGB", (w, h), bg)
|
||||
y = 0
|
||||
for i in ims:
|
||||
out.paste(i, (0, y)); y += i.height + gap
|
||||
return out
|
||||
|
||||
|
||||
# ⓒ 전신 좌우 비교 (게임 크기 · 4배)
|
||||
rows = []
|
||||
for tag, a, b in [("기본 클래스 10501 (둔기+방패)", "a_full_before.png", "b_full_after.png"),
|
||||
("한손검 10101 (Elven_Sword_01)", "a_sword_before.png", "b_sword_after.png")]:
|
||||
ia, ib = load(a), load(b)
|
||||
box = (470, 880, 620, 1030)
|
||||
rows.append(label(hstack([label(crop_zoom(ia, box, 4), "지금"), label(crop_zoom(ib, box, 4), "적용 후")]), tag))
|
||||
vstack(rows).save(OUT + "c_compare_full.png")
|
||||
|
||||
# ⓓ 무기 근접 확대 비교 (무기 마스크 bbox · 8배)
|
||||
cells = []
|
||||
for w in WEAPONS:
|
||||
mp = "v_%s_maskA.png" % w
|
||||
if not os.path.exists(RAW + mp):
|
||||
continue
|
||||
box = bbox_of(mp)
|
||||
if box is None:
|
||||
continue
|
||||
a = crop_zoom(load("v_%s_A.png" % w), box, 8)
|
||||
b = crop_zoom(load("v_%s_B.png" % w), box, 8)
|
||||
cells.append(label(hstack([label(a, "지금"), label(b, "적용 후")]), w))
|
||||
# 3열로 접기
|
||||
cols = [[], [], []]
|
||||
for i, c in enumerate(cells):
|
||||
cols[i % 3].append(c)
|
||||
hstack([vstack(c) for c in cols if c]).save(OUT + "d_compare_weapons.png")
|
||||
|
||||
# ⓐⓑ 원본 크기 전신
|
||||
load("a_full_before.png").save(OUT + "a_before_full.png")
|
||||
load("b_full_after.png").save(OUT + "b_after_full.png")
|
||||
print("sheets ->", OUT)
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
# WL-816b 후보 육안 비교 시트 — 지금 vs 후보 3안 (무기 근접 8배 · 니어리스트)
|
||||
import os
|
||||
import numpy as np
|
||||
from PIL import Image, ImageDraw
|
||||
RAW="Screenshots_WL/WL816b/raw/"; OUT="Screenshots_WL/WL816b/"
|
||||
W=["Elven_Sword_01","PP_Theme_10_Mace_003","PP_Theme_10_Shield_003","PP_Theme_08_Shield_003","PP_Theme_05_Bow_004"]
|
||||
TAGS=[("before","지금"),("c6p6","c6p6"),("c16p12","c16p12"),("c24p16","c24p16")]
|
||||
def bbox(p,pad=5):
|
||||
a=np.asarray(Image.open(RAW+p).convert("L")); ys,xs=np.nonzero(a>127)
|
||||
if not len(ys): return None
|
||||
return (max(0,xs.min()-pad),max(0,ys.min()-pad),min(a.shape[1],xs.max()+1+pad),min(a.shape[0],ys.max()+1+pad))
|
||||
def lab(im,t,h=20):
|
||||
o=Image.new("RGB",(im.width,im.height+h),(18,18,22)); o.paste(im,(0,h))
|
||||
ImageDraw.Draw(o).text((3,4),t,fill=(235,235,235)); return o
|
||||
def hs(ims,g=8):
|
||||
w=sum(i.width for i in ims)+g*(len(ims)-1); h=max(i.height for i in ims)
|
||||
o=Image.new("RGB",(w,h),(18,18,22)); x=0
|
||||
for i in ims: o.paste(i,(x,0)); x+=i.width+g
|
||||
return o
|
||||
def vs(ims,g=12):
|
||||
w=max(i.width for i in ims); h=sum(i.height for i in ims)+g*(len(ims)-1)
|
||||
o=Image.new("RGB",(w,h),(18,18,22)); y=0
|
||||
for i in ims: o.paste(i,(0,y)); y+=i.height+g
|
||||
return o
|
||||
rows=[]
|
||||
for w in W:
|
||||
b=bbox("m_%s_before.png"%w)
|
||||
if b is None: continue
|
||||
cells=[]
|
||||
for tg,nm in TAGS:
|
||||
f=RAW+"s_%s_%s.png"%(w,tg)
|
||||
if not os.path.exists(f): continue
|
||||
c=Image.open(f).convert("RGB").crop(b)
|
||||
cells.append(lab(c.resize((c.width*8,c.height*8),Image.NEAREST),nm))
|
||||
if cells: rows.append(lab(hs(cells),w))
|
||||
vs(rows).save(OUT+"e_candidates.png"); print("ok",len(rows))
|
||||
|
|
@ -52,6 +52,8 @@ namespace WL.Character
|
|||
|
||||
// 보정 완료한 무기 인스턴스 ID → 적용한 배수(멱등 · 재장착 시 ID 가 바뀌므로 자동 재계산)
|
||||
readonly Dictionary<int, float> _applied = new Dictionary<int, float>();
|
||||
// 팔레트(WL-816b)를 이미 끼운 무기 인스턴스 ID. 크기 보정과 **따로** 기억한다(스위치가 독립이라).
|
||||
readonly HashSet<int> _paletted = new HashSet<int>();
|
||||
readonly List<int> _live = new List<int>();
|
||||
readonly List<int> _dead = new List<int>();
|
||||
|
||||
|
|
@ -98,7 +100,7 @@ namespace WL.Character
|
|||
/// <summary>마지막 스캔에서 보정한 무기 수(프로브용).</summary>
|
||||
public int LastApplied { get; private set; }
|
||||
|
||||
void OnEnable() { _applied.Clear(); _baseHeight = -1f; }
|
||||
void OnEnable() { _applied.Clear(); _paletted.Clear(); _baseHeight = -1f; }
|
||||
|
||||
void LateUpdate() { Scan(false); }
|
||||
|
||||
|
|
@ -109,8 +111,13 @@ namespace WL.Character
|
|||
var socks = ResolveSockets();
|
||||
if (socks == null || socks.Length == 0) return 0;
|
||||
|
||||
// 🔴 스위치 off = 완전 무동작(기록조차 남기지 않는다 · C8 되돌리기 = 지금 상태 100 %)
|
||||
if (!WLWeaponFitSettings.Enabled) { if (_applied.Count > 0) _applied.Clear(); return 0; }
|
||||
// 🔴 크기 보정 스위치 off = 보정 완전 무동작(C8 되돌리기 = 지금 상태 100 %).
|
||||
// 단 **팔레트(816b)는 이 스위치와 독립**이라 아래 루프는 계속 돈다 —
|
||||
// 보정을 꺼도 도트 화풍은 남고, 팔레트를 꺼도 보정은 남는다.
|
||||
bool fit = WLWeaponFitSettings.Enabled;
|
||||
if (!fit && _applied.Count > 0) _applied.Clear();
|
||||
bool pal = WL.Look.Character.WLCharacterPaletteSettings.WeaponEnabled;
|
||||
if (!fit && !pal) { if (_paletted.Count > 0) _paletted.Clear(); return 0; }
|
||||
_live.Clear();
|
||||
|
||||
for (int s = 0; s < socks.Length; s++)
|
||||
|
|
@ -123,10 +130,18 @@ namespace WL.Character
|
|||
var w = sock.GetChild(c);
|
||||
int id = w.gameObject.GetInstanceID();
|
||||
_live.Add(id);
|
||||
if (!force && _applied.ContainsKey(id)) continue; // 이미 보정한 인스턴스 = 건너뜀(멱등)
|
||||
float k = Fit(w, sock);
|
||||
_applied[id] = k;
|
||||
if (k != 1f) LastApplied++;
|
||||
if (fit && (force || !_applied.ContainsKey(id))) // 이미 보정한 인스턴스 = 건너뜀(멱등)
|
||||
{
|
||||
float k = Fit(w, sock);
|
||||
_applied[id] = k;
|
||||
if (k != 1f) LastApplied++;
|
||||
}
|
||||
// ── 팔레트(WL-816b) — 메시(UV)·머티리얼만 바꾼다. 정점 좌표가 같아 위 배수 계산과 무관하다.
|
||||
if (pal && (force || !_paletted.Contains(id)))
|
||||
{
|
||||
WL.Look.Character.WLWeaponPalette.Apply(w);
|
||||
_paletted.Add(id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -137,6 +152,12 @@ namespace WL.Character
|
|||
foreach (var kv in _applied) if (!_live.Contains(kv.Key)) _dead.Add(kv.Key);
|
||||
for (int i = 0; i < _dead.Count; i++) _applied.Remove(_dead[i]);
|
||||
}
|
||||
if (_paletted.Count > _live.Count)
|
||||
{
|
||||
_dead.Clear();
|
||||
foreach (var id in _paletted) if (!_live.Contains(id)) _dead.Add(id);
|
||||
for (int i = 0; i < _dead.Count; i++) _paletted.Remove(_dead[i]);
|
||||
}
|
||||
return LastApplied;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,101 @@
|
|||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &-1694524201936992554
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 11
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Editor::UnityEditor.Rendering.Universal.AssetVersion
|
||||
version: 10
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 8
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: Dagger1_ToonP
|
||||
m_Shader: {fileID: -6465566751694194690, guid: 378227f8a69213e419dfb0d889d8dd2f,
|
||||
type: 3}
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords:
|
||||
- _OUTLINESENABLED
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap:
|
||||
RenderType: Opaque
|
||||
disabledShaderPasses:
|
||||
- MOTIONVECTORS
|
||||
m_LockedProperties:
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _BaseMap:
|
||||
m_Texture: {fileID: 2800000, guid: aeaf6b88ea371674294fa87450ef07a7, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ShadowBaseMap:
|
||||
m_Texture: {fileID: 2800000, guid: cb59a62e22f03c44381bac391d63c8b2, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_Lightmaps:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_LightmapsInd:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_ShadowMasks:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Ints: []
|
||||
m_Floats:
|
||||
- _AlphaClip: 0
|
||||
- _AlphaToMask: 0
|
||||
- _Blend: 0
|
||||
- _Brightness: 0.25
|
||||
- _CastShadows: 1
|
||||
- _Cloud_Change: 0.005
|
||||
- _Cloud_Cover: 0.5
|
||||
- _Cloud_Density: 0.01
|
||||
- _Cloud_Strength: 1
|
||||
- _Cull: 2
|
||||
- _DepthEdgeStrength: 0.5
|
||||
- _DepthThreshold: 0.01
|
||||
- _DstBlend: 0
|
||||
- _DstBlendAlpha: 0
|
||||
- _MinimumDarkness: 0.2
|
||||
- _NormalEdgeStrength: 0.3
|
||||
- _NormalThreshold: 1
|
||||
- _OUTLINESENABLED: 1
|
||||
- _QueueControl: 0
|
||||
- _QueueOffset: 0
|
||||
- _Shades: 3
|
||||
- _SrcBlend: 1
|
||||
- _SrcBlendAlpha: 1
|
||||
- _Surface: 0
|
||||
- _XRMotionVectorsPass: 1
|
||||
- _ZTest: 4
|
||||
- _ZWrite: 1
|
||||
- _ZWriteControl: 0
|
||||
m_Colors:
|
||||
- _Cloud_Movement: {r: 1, g: 1, b: 0, a: 0}
|
||||
- _Cloud_Step: {r: 13, g: 17, b: 0, a: 0}
|
||||
- _DiffuseColor: {r: 0.993, g: 1.028, b: 0.874, a: 1}
|
||||
- _NormalBias: {r: 1, g: 1, b: 1, a: 0}
|
||||
- _Outline: {r: 0, g: 0, b: 0, a: 0}
|
||||
- _ShadowDiffuseColor: {r: 0.2164, g: 0.2092, b: 0.3713, a: 0}
|
||||
m_BuildTextureStacks: []
|
||||
m_AllowLocking: 1
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 0efa81c472fef8f4f84c8b9355105689
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -0,0 +1,101 @@
|
|||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 8
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: Dagger2_ToonP
|
||||
m_Shader: {fileID: -6465566751694194690, guid: 378227f8a69213e419dfb0d889d8dd2f,
|
||||
type: 3}
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords:
|
||||
- _OUTLINESENABLED
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap:
|
||||
RenderType: Opaque
|
||||
disabledShaderPasses:
|
||||
- MOTIONVECTORS
|
||||
m_LockedProperties:
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _BaseMap:
|
||||
m_Texture: {fileID: 2800000, guid: 0a10f0a08e1d7ca4ab21cdced44c03ca, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ShadowBaseMap:
|
||||
m_Texture: {fileID: 2800000, guid: cb59a62e22f03c44381bac391d63c8b2, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_Lightmaps:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_LightmapsInd:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_ShadowMasks:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Ints: []
|
||||
m_Floats:
|
||||
- _AlphaClip: 0
|
||||
- _AlphaToMask: 0
|
||||
- _Blend: 0
|
||||
- _Brightness: 0.25
|
||||
- _CastShadows: 1
|
||||
- _Cloud_Change: 0.005
|
||||
- _Cloud_Cover: 0.5
|
||||
- _Cloud_Density: 0.01
|
||||
- _Cloud_Strength: 1
|
||||
- _Cull: 2
|
||||
- _DepthEdgeStrength: 0.5
|
||||
- _DepthThreshold: 0.01
|
||||
- _DstBlend: 0
|
||||
- _DstBlendAlpha: 0
|
||||
- _MinimumDarkness: 0.2
|
||||
- _NormalEdgeStrength: 0.3
|
||||
- _NormalThreshold: 1
|
||||
- _OUTLINESENABLED: 1
|
||||
- _QueueControl: 0
|
||||
- _QueueOffset: 0
|
||||
- _Shades: 3
|
||||
- _SrcBlend: 1
|
||||
- _SrcBlendAlpha: 1
|
||||
- _Surface: 0
|
||||
- _XRMotionVectorsPass: 1
|
||||
- _ZTest: 4
|
||||
- _ZWrite: 1
|
||||
- _ZWriteControl: 0
|
||||
m_Colors:
|
||||
- _Cloud_Movement: {r: 1, g: 1, b: 0, a: 0}
|
||||
- _Cloud_Step: {r: 13, g: 17, b: 0, a: 0}
|
||||
- _DiffuseColor: {r: 0.993, g: 1.028, b: 0.874, a: 1}
|
||||
- _NormalBias: {r: 1, g: 1, b: 1, a: 0}
|
||||
- _Outline: {r: 0, g: 0, b: 0, a: 0}
|
||||
- _ShadowDiffuseColor: {r: 0.2164, g: 0.2092, b: 0.3713, a: 0}
|
||||
m_BuildTextureStacks: []
|
||||
m_AllowLocking: 1
|
||||
--- !u!114 &1509348212454977994
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 11
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Editor::UnityEditor.Rendering.Universal.AssetVersion
|
||||
version: 10
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: d704420eb6a91cf42ae799243887b5a7
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -0,0 +1,101 @@
|
|||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &-8350019759939730143
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 11
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Editor::UnityEditor.Rendering.Universal.AssetVersion
|
||||
version: 10
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 8
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: Elven_Sword_01_ToonP
|
||||
m_Shader: {fileID: -6465566751694194690, guid: 378227f8a69213e419dfb0d889d8dd2f,
|
||||
type: 3}
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords:
|
||||
- _OUTLINESENABLED
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap:
|
||||
RenderType: Opaque
|
||||
disabledShaderPasses:
|
||||
- MOTIONVECTORS
|
||||
m_LockedProperties:
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _BaseMap:
|
||||
m_Texture: {fileID: 2800000, guid: 3f6b1bef7cfa6394981e6dacb5120735, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ShadowBaseMap:
|
||||
m_Texture: {fileID: 2800000, guid: cb59a62e22f03c44381bac391d63c8b2, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_Lightmaps:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_LightmapsInd:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_ShadowMasks:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Ints: []
|
||||
m_Floats:
|
||||
- _AlphaClip: 0
|
||||
- _AlphaToMask: 0
|
||||
- _Blend: 0
|
||||
- _Brightness: 0.25
|
||||
- _CastShadows: 1
|
||||
- _Cloud_Change: 0.005
|
||||
- _Cloud_Cover: 0.5
|
||||
- _Cloud_Density: 0.01
|
||||
- _Cloud_Strength: 1
|
||||
- _Cull: 2
|
||||
- _DepthEdgeStrength: 0.5
|
||||
- _DepthThreshold: 0.01
|
||||
- _DstBlend: 0
|
||||
- _DstBlendAlpha: 0
|
||||
- _MinimumDarkness: 0.2
|
||||
- _NormalEdgeStrength: 0.3
|
||||
- _NormalThreshold: 1
|
||||
- _OUTLINESENABLED: 1
|
||||
- _QueueControl: 0
|
||||
- _QueueOffset: 0
|
||||
- _Shades: 3
|
||||
- _SrcBlend: 1
|
||||
- _SrcBlendAlpha: 1
|
||||
- _Surface: 0
|
||||
- _XRMotionVectorsPass: 1
|
||||
- _ZTest: 4
|
||||
- _ZWrite: 1
|
||||
- _ZWriteControl: 0
|
||||
m_Colors:
|
||||
- _Cloud_Movement: {r: 1, g: 1, b: 0, a: 0}
|
||||
- _Cloud_Step: {r: 13, g: 17, b: 0, a: 0}
|
||||
- _DiffuseColor: {r: 0.993, g: 1.028, b: 0.874, a: 1}
|
||||
- _NormalBias: {r: 1, g: 1, b: 1, a: 0}
|
||||
- _Outline: {r: 0, g: 0, b: 0, a: 0}
|
||||
- _ShadowDiffuseColor: {r: 0.2164, g: 0.2092, b: 0.3713, a: 0}
|
||||
m_BuildTextureStacks: []
|
||||
m_AllowLocking: 1
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 9d10b81469392d545a0781fb36d8920c
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -0,0 +1,101 @@
|
|||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &-2939971947185874832
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 11
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Editor::UnityEditor.Rendering.Universal.AssetVersion
|
||||
version: 10
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 8
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: PP_Theme_03_Scepter_001_ToonP
|
||||
m_Shader: {fileID: -6465566751694194690, guid: 378227f8a69213e419dfb0d889d8dd2f,
|
||||
type: 3}
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords:
|
||||
- _OUTLINESENABLED
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap:
|
||||
RenderType: Opaque
|
||||
disabledShaderPasses:
|
||||
- MOTIONVECTORS
|
||||
m_LockedProperties:
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _BaseMap:
|
||||
m_Texture: {fileID: 2800000, guid: a59a3e95b9594db4fb4835483757192b, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ShadowBaseMap:
|
||||
m_Texture: {fileID: 2800000, guid: cb59a62e22f03c44381bac391d63c8b2, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_Lightmaps:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_LightmapsInd:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_ShadowMasks:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Ints: []
|
||||
m_Floats:
|
||||
- _AlphaClip: 0
|
||||
- _AlphaToMask: 0
|
||||
- _Blend: 0
|
||||
- _Brightness: 0.25
|
||||
- _CastShadows: 1
|
||||
- _Cloud_Change: 0.005
|
||||
- _Cloud_Cover: 0.5
|
||||
- _Cloud_Density: 0.01
|
||||
- _Cloud_Strength: 1
|
||||
- _Cull: 2
|
||||
- _DepthEdgeStrength: 0.5
|
||||
- _DepthThreshold: 0.01
|
||||
- _DstBlend: 0
|
||||
- _DstBlendAlpha: 0
|
||||
- _MinimumDarkness: 0.2
|
||||
- _NormalEdgeStrength: 0.3
|
||||
- _NormalThreshold: 1
|
||||
- _OUTLINESENABLED: 1
|
||||
- _QueueControl: 0
|
||||
- _QueueOffset: 0
|
||||
- _Shades: 3
|
||||
- _SrcBlend: 1
|
||||
- _SrcBlendAlpha: 1
|
||||
- _Surface: 0
|
||||
- _XRMotionVectorsPass: 1
|
||||
- _ZTest: 4
|
||||
- _ZWrite: 1
|
||||
- _ZWriteControl: 0
|
||||
m_Colors:
|
||||
- _Cloud_Movement: {r: 1, g: 1, b: 0, a: 0}
|
||||
- _Cloud_Step: {r: 13, g: 17, b: 0, a: 0}
|
||||
- _DiffuseColor: {r: 0.993, g: 1.028, b: 0.874, a: 1}
|
||||
- _NormalBias: {r: 1, g: 1, b: 1, a: 0}
|
||||
- _Outline: {r: 0, g: 0, b: 0, a: 0}
|
||||
- _ShadowDiffuseColor: {r: 0.2164, g: 0.2092, b: 0.3713, a: 0}
|
||||
m_BuildTextureStacks: []
|
||||
m_AllowLocking: 1
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: fc87124b2ca80c645808c630da6597c7
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -0,0 +1,101 @@
|
|||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &-3088660220708026921
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 11
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Editor::UnityEditor.Rendering.Universal.AssetVersion
|
||||
version: 10
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 8
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: PP_Theme_03_Wand_001_ToonP
|
||||
m_Shader: {fileID: -6465566751694194690, guid: 378227f8a69213e419dfb0d889d8dd2f,
|
||||
type: 3}
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords:
|
||||
- _OUTLINESENABLED
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap:
|
||||
RenderType: Opaque
|
||||
disabledShaderPasses:
|
||||
- MOTIONVECTORS
|
||||
m_LockedProperties:
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _BaseMap:
|
||||
m_Texture: {fileID: 2800000, guid: 589c0e856898b0548ae13d4ad0dfbde8, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ShadowBaseMap:
|
||||
m_Texture: {fileID: 2800000, guid: cb59a62e22f03c44381bac391d63c8b2, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_Lightmaps:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_LightmapsInd:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_ShadowMasks:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Ints: []
|
||||
m_Floats:
|
||||
- _AlphaClip: 0
|
||||
- _AlphaToMask: 0
|
||||
- _Blend: 0
|
||||
- _Brightness: 0.25
|
||||
- _CastShadows: 1
|
||||
- _Cloud_Change: 0.005
|
||||
- _Cloud_Cover: 0.5
|
||||
- _Cloud_Density: 0.01
|
||||
- _Cloud_Strength: 1
|
||||
- _Cull: 2
|
||||
- _DepthEdgeStrength: 0.5
|
||||
- _DepthThreshold: 0.01
|
||||
- _DstBlend: 0
|
||||
- _DstBlendAlpha: 0
|
||||
- _MinimumDarkness: 0.2
|
||||
- _NormalEdgeStrength: 0.3
|
||||
- _NormalThreshold: 1
|
||||
- _OUTLINESENABLED: 1
|
||||
- _QueueControl: 0
|
||||
- _QueueOffset: 0
|
||||
- _Shades: 3
|
||||
- _SrcBlend: 1
|
||||
- _SrcBlendAlpha: 1
|
||||
- _Surface: 0
|
||||
- _XRMotionVectorsPass: 1
|
||||
- _ZTest: 4
|
||||
- _ZWrite: 1
|
||||
- _ZWriteControl: 0
|
||||
m_Colors:
|
||||
- _Cloud_Movement: {r: 1, g: 1, b: 0, a: 0}
|
||||
- _Cloud_Step: {r: 13, g: 17, b: 0, a: 0}
|
||||
- _DiffuseColor: {r: 0.993, g: 1.028, b: 0.874, a: 1}
|
||||
- _NormalBias: {r: 1, g: 1, b: 1, a: 0}
|
||||
- _Outline: {r: 0, g: 0, b: 0, a: 0}
|
||||
- _ShadowDiffuseColor: {r: 0.2164, g: 0.2092, b: 0.3713, a: 0}
|
||||
m_BuildTextureStacks: []
|
||||
m_AllowLocking: 1
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 9b9e389e7ccdc4e4ca6546ec65b911e5
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -0,0 +1,101 @@
|
|||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &-5516008983500359056
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 11
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Editor::UnityEditor.Rendering.Universal.AssetVersion
|
||||
version: 10
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 8
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: PP_Theme_05_Bow_003_ToonP
|
||||
m_Shader: {fileID: -6465566751694194690, guid: 378227f8a69213e419dfb0d889d8dd2f,
|
||||
type: 3}
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords:
|
||||
- _OUTLINESENABLED
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap:
|
||||
RenderType: Opaque
|
||||
disabledShaderPasses:
|
||||
- MOTIONVECTORS
|
||||
m_LockedProperties:
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _BaseMap:
|
||||
m_Texture: {fileID: 2800000, guid: 52142b326d0067349b53f4bcb60741a6, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ShadowBaseMap:
|
||||
m_Texture: {fileID: 2800000, guid: cb59a62e22f03c44381bac391d63c8b2, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_Lightmaps:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_LightmapsInd:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_ShadowMasks:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Ints: []
|
||||
m_Floats:
|
||||
- _AlphaClip: 0
|
||||
- _AlphaToMask: 0
|
||||
- _Blend: 0
|
||||
- _Brightness: 0.25
|
||||
- _CastShadows: 1
|
||||
- _Cloud_Change: 0.005
|
||||
- _Cloud_Cover: 0.5
|
||||
- _Cloud_Density: 0.01
|
||||
- _Cloud_Strength: 1
|
||||
- _Cull: 2
|
||||
- _DepthEdgeStrength: 0.5
|
||||
- _DepthThreshold: 0.01
|
||||
- _DstBlend: 0
|
||||
- _DstBlendAlpha: 0
|
||||
- _MinimumDarkness: 0.2
|
||||
- _NormalEdgeStrength: 0.3
|
||||
- _NormalThreshold: 1
|
||||
- _OUTLINESENABLED: 1
|
||||
- _QueueControl: 0
|
||||
- _QueueOffset: 0
|
||||
- _Shades: 3
|
||||
- _SrcBlend: 1
|
||||
- _SrcBlendAlpha: 1
|
||||
- _Surface: 0
|
||||
- _XRMotionVectorsPass: 1
|
||||
- _ZTest: 4
|
||||
- _ZWrite: 1
|
||||
- _ZWriteControl: 0
|
||||
m_Colors:
|
||||
- _Cloud_Movement: {r: 1, g: 1, b: 0, a: 0}
|
||||
- _Cloud_Step: {r: 13, g: 17, b: 0, a: 0}
|
||||
- _DiffuseColor: {r: 0.993, g: 1.028, b: 0.874, a: 1}
|
||||
- _NormalBias: {r: 1, g: 1, b: 1, a: 0}
|
||||
- _Outline: {r: 0, g: 0, b: 0, a: 0}
|
||||
- _ShadowDiffuseColor: {r: 0.2164, g: 0.2092, b: 0.3713, a: 0}
|
||||
m_BuildTextureStacks: []
|
||||
m_AllowLocking: 1
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 61a30f0d232ede944bc0c85e50d952eb
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -0,0 +1,101 @@
|
|||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &-5363582845740079773
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 11
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Editor::UnityEditor.Rendering.Universal.AssetVersion
|
||||
version: 10
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 8
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: PP_Theme_05_Bow_004_ToonP
|
||||
m_Shader: {fileID: -6465566751694194690, guid: 378227f8a69213e419dfb0d889d8dd2f,
|
||||
type: 3}
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords:
|
||||
- _OUTLINESENABLED
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap:
|
||||
RenderType: Opaque
|
||||
disabledShaderPasses:
|
||||
- MOTIONVECTORS
|
||||
m_LockedProperties:
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _BaseMap:
|
||||
m_Texture: {fileID: 2800000, guid: 80789ae82341a0d4185decd9a7226b27, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ShadowBaseMap:
|
||||
m_Texture: {fileID: 2800000, guid: cb59a62e22f03c44381bac391d63c8b2, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_Lightmaps:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_LightmapsInd:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_ShadowMasks:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Ints: []
|
||||
m_Floats:
|
||||
- _AlphaClip: 0
|
||||
- _AlphaToMask: 0
|
||||
- _Blend: 0
|
||||
- _Brightness: 0.25
|
||||
- _CastShadows: 1
|
||||
- _Cloud_Change: 0.005
|
||||
- _Cloud_Cover: 0.5
|
||||
- _Cloud_Density: 0.01
|
||||
- _Cloud_Strength: 1
|
||||
- _Cull: 2
|
||||
- _DepthEdgeStrength: 0.5
|
||||
- _DepthThreshold: 0.01
|
||||
- _DstBlend: 0
|
||||
- _DstBlendAlpha: 0
|
||||
- _MinimumDarkness: 0.2
|
||||
- _NormalEdgeStrength: 0.3
|
||||
- _NormalThreshold: 1
|
||||
- _OUTLINESENABLED: 1
|
||||
- _QueueControl: 0
|
||||
- _QueueOffset: 0
|
||||
- _Shades: 3
|
||||
- _SrcBlend: 1
|
||||
- _SrcBlendAlpha: 1
|
||||
- _Surface: 0
|
||||
- _XRMotionVectorsPass: 1
|
||||
- _ZTest: 4
|
||||
- _ZWrite: 1
|
||||
- _ZWriteControl: 0
|
||||
m_Colors:
|
||||
- _Cloud_Movement: {r: 1, g: 1, b: 0, a: 0}
|
||||
- _Cloud_Step: {r: 13, g: 17, b: 0, a: 0}
|
||||
- _DiffuseColor: {r: 0.993, g: 1.028, b: 0.874, a: 1}
|
||||
- _NormalBias: {r: 1, g: 1, b: 1, a: 0}
|
||||
- _Outline: {r: 0, g: 0, b: 0, a: 0}
|
||||
- _ShadowDiffuseColor: {r: 0.2164, g: 0.2092, b: 0.3713, a: 0}
|
||||
m_BuildTextureStacks: []
|
||||
m_AllowLocking: 1
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 736b8405c0065de45b50f63eceec34e9
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -0,0 +1,101 @@
|
|||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &-5042479520088283815
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 11
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Editor::UnityEditor.Rendering.Universal.AssetVersion
|
||||
version: 10
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 8
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: PP_Theme_08_Mace_003_ToonP
|
||||
m_Shader: {fileID: -6465566751694194690, guid: 378227f8a69213e419dfb0d889d8dd2f,
|
||||
type: 3}
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords:
|
||||
- _OUTLINESENABLED
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap:
|
||||
RenderType: Opaque
|
||||
disabledShaderPasses:
|
||||
- MOTIONVECTORS
|
||||
m_LockedProperties:
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _BaseMap:
|
||||
m_Texture: {fileID: 2800000, guid: d71956d3770613245a1abc264ad651b6, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ShadowBaseMap:
|
||||
m_Texture: {fileID: 2800000, guid: cb59a62e22f03c44381bac391d63c8b2, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_Lightmaps:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_LightmapsInd:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_ShadowMasks:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Ints: []
|
||||
m_Floats:
|
||||
- _AlphaClip: 0
|
||||
- _AlphaToMask: 0
|
||||
- _Blend: 0
|
||||
- _Brightness: 0.25
|
||||
- _CastShadows: 1
|
||||
- _Cloud_Change: 0.005
|
||||
- _Cloud_Cover: 0.5
|
||||
- _Cloud_Density: 0.01
|
||||
- _Cloud_Strength: 1
|
||||
- _Cull: 2
|
||||
- _DepthEdgeStrength: 0.5
|
||||
- _DepthThreshold: 0.01
|
||||
- _DstBlend: 0
|
||||
- _DstBlendAlpha: 0
|
||||
- _MinimumDarkness: 0.2
|
||||
- _NormalEdgeStrength: 0.3
|
||||
- _NormalThreshold: 1
|
||||
- _OUTLINESENABLED: 1
|
||||
- _QueueControl: 0
|
||||
- _QueueOffset: 0
|
||||
- _Shades: 3
|
||||
- _SrcBlend: 1
|
||||
- _SrcBlendAlpha: 1
|
||||
- _Surface: 0
|
||||
- _XRMotionVectorsPass: 1
|
||||
- _ZTest: 4
|
||||
- _ZWrite: 1
|
||||
- _ZWriteControl: 0
|
||||
m_Colors:
|
||||
- _Cloud_Movement: {r: 1, g: 1, b: 0, a: 0}
|
||||
- _Cloud_Step: {r: 13, g: 17, b: 0, a: 0}
|
||||
- _DiffuseColor: {r: 0.993, g: 1.028, b: 0.874, a: 1}
|
||||
- _NormalBias: {r: 1, g: 1, b: 1, a: 0}
|
||||
- _Outline: {r: 0, g: 0, b: 0, a: 0}
|
||||
- _ShadowDiffuseColor: {r: 0.2164, g: 0.2092, b: 0.3713, a: 0}
|
||||
m_BuildTextureStacks: []
|
||||
m_AllowLocking: 1
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 24fab025d2f862147b63fe27c683a1d9
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -0,0 +1,101 @@
|
|||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &-4601532800020121249
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 11
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Editor::UnityEditor.Rendering.Universal.AssetVersion
|
||||
version: 10
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 8
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: PP_Theme_08_Shield_003_ToonP
|
||||
m_Shader: {fileID: -6465566751694194690, guid: 378227f8a69213e419dfb0d889d8dd2f,
|
||||
type: 3}
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords:
|
||||
- _OUTLINESENABLED
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap:
|
||||
RenderType: Opaque
|
||||
disabledShaderPasses:
|
||||
- MOTIONVECTORS
|
||||
m_LockedProperties:
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _BaseMap:
|
||||
m_Texture: {fileID: 2800000, guid: 0fced43cb95899d49a1f68df567864af, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ShadowBaseMap:
|
||||
m_Texture: {fileID: 2800000, guid: cb59a62e22f03c44381bac391d63c8b2, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_Lightmaps:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_LightmapsInd:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_ShadowMasks:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Ints: []
|
||||
m_Floats:
|
||||
- _AlphaClip: 0
|
||||
- _AlphaToMask: 0
|
||||
- _Blend: 0
|
||||
- _Brightness: 0.25
|
||||
- _CastShadows: 1
|
||||
- _Cloud_Change: 0.005
|
||||
- _Cloud_Cover: 0.5
|
||||
- _Cloud_Density: 0.01
|
||||
- _Cloud_Strength: 1
|
||||
- _Cull: 2
|
||||
- _DepthEdgeStrength: 0.5
|
||||
- _DepthThreshold: 0.01
|
||||
- _DstBlend: 0
|
||||
- _DstBlendAlpha: 0
|
||||
- _MinimumDarkness: 0.2
|
||||
- _NormalEdgeStrength: 0.3
|
||||
- _NormalThreshold: 1
|
||||
- _OUTLINESENABLED: 1
|
||||
- _QueueControl: 0
|
||||
- _QueueOffset: 0
|
||||
- _Shades: 3
|
||||
- _SrcBlend: 1
|
||||
- _SrcBlendAlpha: 1
|
||||
- _Surface: 0
|
||||
- _XRMotionVectorsPass: 1
|
||||
- _ZTest: 4
|
||||
- _ZWrite: 1
|
||||
- _ZWriteControl: 0
|
||||
m_Colors:
|
||||
- _Cloud_Movement: {r: 1, g: 1, b: 0, a: 0}
|
||||
- _Cloud_Step: {r: 13, g: 17, b: 0, a: 0}
|
||||
- _DiffuseColor: {r: 0.993, g: 1.028, b: 0.874, a: 1}
|
||||
- _NormalBias: {r: 1, g: 1, b: 1, a: 0}
|
||||
- _Outline: {r: 0, g: 0, b: 0, a: 0}
|
||||
- _ShadowDiffuseColor: {r: 0.2164, g: 0.2092, b: 0.3713, a: 0}
|
||||
m_BuildTextureStacks: []
|
||||
m_AllowLocking: 1
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: d6525b18d7d89be47ba7f5dea33aab6f
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -0,0 +1,101 @@
|
|||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &-6503128971084686790
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 11
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Editor::UnityEditor.Rendering.Universal.AssetVersion
|
||||
version: 10
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 8
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: PP_Theme_10_Mace_003_ToonP
|
||||
m_Shader: {fileID: -6465566751694194690, guid: 378227f8a69213e419dfb0d889d8dd2f,
|
||||
type: 3}
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords:
|
||||
- _OUTLINESENABLED
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap:
|
||||
RenderType: Opaque
|
||||
disabledShaderPasses:
|
||||
- MOTIONVECTORS
|
||||
m_LockedProperties:
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _BaseMap:
|
||||
m_Texture: {fileID: 2800000, guid: d339faf999d879b43a43f2b69dce858f, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ShadowBaseMap:
|
||||
m_Texture: {fileID: 2800000, guid: cb59a62e22f03c44381bac391d63c8b2, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_Lightmaps:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_LightmapsInd:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_ShadowMasks:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Ints: []
|
||||
m_Floats:
|
||||
- _AlphaClip: 0
|
||||
- _AlphaToMask: 0
|
||||
- _Blend: 0
|
||||
- _Brightness: 0.25
|
||||
- _CastShadows: 1
|
||||
- _Cloud_Change: 0.005
|
||||
- _Cloud_Cover: 0.5
|
||||
- _Cloud_Density: 0.01
|
||||
- _Cloud_Strength: 1
|
||||
- _Cull: 2
|
||||
- _DepthEdgeStrength: 0.5
|
||||
- _DepthThreshold: 0.01
|
||||
- _DstBlend: 0
|
||||
- _DstBlendAlpha: 0
|
||||
- _MinimumDarkness: 0.2
|
||||
- _NormalEdgeStrength: 0.3
|
||||
- _NormalThreshold: 1
|
||||
- _OUTLINESENABLED: 1
|
||||
- _QueueControl: 0
|
||||
- _QueueOffset: 0
|
||||
- _Shades: 3
|
||||
- _SrcBlend: 1
|
||||
- _SrcBlendAlpha: 1
|
||||
- _Surface: 0
|
||||
- _XRMotionVectorsPass: 1
|
||||
- _ZTest: 4
|
||||
- _ZWrite: 1
|
||||
- _ZWriteControl: 0
|
||||
m_Colors:
|
||||
- _Cloud_Movement: {r: 1, g: 1, b: 0, a: 0}
|
||||
- _Cloud_Step: {r: 13, g: 17, b: 0, a: 0}
|
||||
- _DiffuseColor: {r: 0.993, g: 1.028, b: 0.874, a: 1}
|
||||
- _NormalBias: {r: 1, g: 1, b: 1, a: 0}
|
||||
- _Outline: {r: 0, g: 0, b: 0, a: 0}
|
||||
- _ShadowDiffuseColor: {r: 0.2164, g: 0.2092, b: 0.3713, a: 0}
|
||||
m_BuildTextureStacks: []
|
||||
m_AllowLocking: 1
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 8f9c0dfc0096e494d9638a681e6af6e8
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -0,0 +1,101 @@
|
|||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 8
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: PP_Theme_10_Shield_003_ToonP
|
||||
m_Shader: {fileID: -6465566751694194690, guid: 378227f8a69213e419dfb0d889d8dd2f,
|
||||
type: 3}
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords:
|
||||
- _OUTLINESENABLED
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap:
|
||||
RenderType: Opaque
|
||||
disabledShaderPasses:
|
||||
- MOTIONVECTORS
|
||||
m_LockedProperties:
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _BaseMap:
|
||||
m_Texture: {fileID: 2800000, guid: 1c3b7e01e19575f4ca979a52a3c7fddb, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ShadowBaseMap:
|
||||
m_Texture: {fileID: 2800000, guid: cb59a62e22f03c44381bac391d63c8b2, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_Lightmaps:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_LightmapsInd:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_ShadowMasks:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Ints: []
|
||||
m_Floats:
|
||||
- _AlphaClip: 0
|
||||
- _AlphaToMask: 0
|
||||
- _Blend: 0
|
||||
- _Brightness: 0.25
|
||||
- _CastShadows: 1
|
||||
- _Cloud_Change: 0.005
|
||||
- _Cloud_Cover: 0.5
|
||||
- _Cloud_Density: 0.01
|
||||
- _Cloud_Strength: 1
|
||||
- _Cull: 2
|
||||
- _DepthEdgeStrength: 0.5
|
||||
- _DepthThreshold: 0.01
|
||||
- _DstBlend: 0
|
||||
- _DstBlendAlpha: 0
|
||||
- _MinimumDarkness: 0.2
|
||||
- _NormalEdgeStrength: 0.3
|
||||
- _NormalThreshold: 1
|
||||
- _OUTLINESENABLED: 1
|
||||
- _QueueControl: 0
|
||||
- _QueueOffset: 0
|
||||
- _Shades: 3
|
||||
- _SrcBlend: 1
|
||||
- _SrcBlendAlpha: 1
|
||||
- _Surface: 0
|
||||
- _XRMotionVectorsPass: 1
|
||||
- _ZTest: 4
|
||||
- _ZWrite: 1
|
||||
- _ZWriteControl: 0
|
||||
m_Colors:
|
||||
- _Cloud_Movement: {r: 1, g: 1, b: 0, a: 0}
|
||||
- _Cloud_Step: {r: 13, g: 17, b: 0, a: 0}
|
||||
- _DiffuseColor: {r: 0.993, g: 1.028, b: 0.874, a: 1}
|
||||
- _NormalBias: {r: 1, g: 1, b: 1, a: 0}
|
||||
- _Outline: {r: 0, g: 0, b: 0, a: 0}
|
||||
- _ShadowDiffuseColor: {r: 0.2164, g: 0.2092, b: 0.3713, a: 0}
|
||||
m_BuildTextureStacks: []
|
||||
m_AllowLocking: 1
|
||||
--- !u!114 &1520003492857789435
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 11
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Editor::UnityEditor.Rendering.Universal.AssetVersion
|
||||
version: 10
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 07a2b800671244f4e8bffc460e22cfc7
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 7fa6cb973906e3c4c9aaabbe11806665
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 4300000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 5c038773b46f2d44d86ed4c74efcd5f5
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 4300000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: f8d08294caa3d2e40a3e868f22324304
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 4300000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 259fb731271c7de4ebf108344f474e6c
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 4300000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 6ba6bc95d6be6c343817c6c4100c796d
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 4300000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 89ac0e4f4f4c65f40aaa08b093c84076
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 4300000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 04dd5d735340fe646b136892118b2e44
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 4300000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 18207f8e909ad214292014f307561ad7
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 4300000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 8a758c13d7cf27f4ead85559000c3f12
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 4300000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: a6eba22c56f2e2f44b776c7c21adbfea
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 4300000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: ccdd49e231668754ca4c9befcfc00cb1
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 4300000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -35,3 +35,40 @@ MonoBehaviour:
|
|||
- {fileID: 2100000, guid: 470ec749ed9afb843a0bca59f47eea68, type: 2}
|
||||
- {fileID: 2100000, guid: 2ad4735b15308b94ca1bd78da99c3ee1, type: 2}
|
||||
- {fileID: 2100000, guid: 9e63e2e61895e324099928771be402cd, type: 2}
|
||||
weaponEnabled_: 1
|
||||
weaponNames:
|
||||
- PP_Theme_10_Mace_003
|
||||
- PP_Theme_10_Shield_003
|
||||
- Elven_Sword_01
|
||||
- PP_Theme_08_Mace_003
|
||||
- PP_Theme_08_Shield_003
|
||||
- PP_Theme_05_Bow_003
|
||||
- PP_Theme_05_Bow_004
|
||||
- PP_Theme_03_Scepter_001
|
||||
- PP_Theme_03_Wand_001
|
||||
- Dagger1
|
||||
- Dagger2
|
||||
weaponMeshes:
|
||||
- {fileID: 4300000, guid: a6eba22c56f2e2f44b776c7c21adbfea, type: 2}
|
||||
- {fileID: 4300000, guid: ccdd49e231668754ca4c9befcfc00cb1, type: 2}
|
||||
- {fileID: 4300000, guid: f8d08294caa3d2e40a3e868f22324304, type: 2}
|
||||
- {fileID: 4300000, guid: 18207f8e909ad214292014f307561ad7, type: 2}
|
||||
- {fileID: 4300000, guid: 8a758c13d7cf27f4ead85559000c3f12, type: 2}
|
||||
- {fileID: 4300000, guid: 89ac0e4f4f4c65f40aaa08b093c84076, type: 2}
|
||||
- {fileID: 4300000, guid: 04dd5d735340fe646b136892118b2e44, type: 2}
|
||||
- {fileID: 4300000, guid: 259fb731271c7de4ebf108344f474e6c, type: 2}
|
||||
- {fileID: 4300000, guid: 6ba6bc95d6be6c343817c6c4100c796d, type: 2}
|
||||
- {fileID: 4300000, guid: 7fa6cb973906e3c4c9aaabbe11806665, type: 2}
|
||||
- {fileID: 4300000, guid: 5c038773b46f2d44d86ed4c74efcd5f5, type: 2}
|
||||
weaponMaterials:
|
||||
- {fileID: 2100000, guid: 8f9c0dfc0096e494d9638a681e6af6e8, type: 2}
|
||||
- {fileID: 2100000, guid: 07a2b800671244f4e8bffc460e22cfc7, type: 2}
|
||||
- {fileID: 2100000, guid: 9d10b81469392d545a0781fb36d8920c, type: 2}
|
||||
- {fileID: 2100000, guid: 24fab025d2f862147b63fe27c683a1d9, type: 2}
|
||||
- {fileID: 2100000, guid: d6525b18d7d89be47ba7f5dea33aab6f, type: 2}
|
||||
- {fileID: 2100000, guid: 61a30f0d232ede944bc0c85e50d952eb, type: 2}
|
||||
- {fileID: 2100000, guid: 736b8405c0065de45b50f63eceec34e9, type: 2}
|
||||
- {fileID: 2100000, guid: fc87124b2ca80c645808c630da6597c7, type: 2}
|
||||
- {fileID: 2100000, guid: 9b9e389e7ccdc4e4ca6546ec65b911e5, type: 2}
|
||||
- {fileID: 2100000, guid: 0efa81c472fef8f4f84c8b9355105689, type: 2}
|
||||
- {fileID: 2100000, guid: d704420eb6a91cf42ae799243887b5a7, type: 2}
|
||||
|
|
|
|||
|
After Width: | Height: | Size: 187 B |
|
|
@ -0,0 +1,181 @@
|
|||
fileFormatVersion: 2
|
||||
guid: aeaf6b88ea371674294fa87450ef07a7
|
||||
TextureImporter:
|
||||
internalIDToNameTable:
|
||||
- first:
|
||||
213: 5331517641176924944
|
||||
second: WLPaletteW_Dagger1_0
|
||||
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: 1
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMipmapLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 0
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 1
|
||||
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: 0
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 0
|
||||
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: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
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: Server
|
||||
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: iOS
|
||||
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:
|
||||
- serializedVersion: 2
|
||||
name: WLPaletteW_Dagger1_0
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 0
|
||||
width: 32
|
||||
height: 32
|
||||
alignment: 0
|
||||
pivot: {x: 0, y: 0}
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
customData:
|
||||
outline: []
|
||||
physicsShape: []
|
||||
tessellationDetail: -1
|
||||
bones: []
|
||||
spriteID: 013441c0c0b5df940800000000000000
|
||||
internalID: 5331517641176924944
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
outline: []
|
||||
customData:
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spriteCustomMetadata:
|
||||
entries: []
|
||||
nameFileIdTable: {}
|
||||
mipmapLimitGroupName:
|
||||
pSDRemoveMatte: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
After Width: | Height: | Size: 187 B |
|
|
@ -0,0 +1,181 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 0a10f0a08e1d7ca4ab21cdced44c03ca
|
||||
TextureImporter:
|
||||
internalIDToNameTable:
|
||||
- first:
|
||||
213: -2751061951280230676
|
||||
second: WLPaletteW_Dagger2_0
|
||||
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: 1
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMipmapLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 0
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 1
|
||||
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: 0
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 0
|
||||
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: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
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: Server
|
||||
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: iOS
|
||||
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:
|
||||
- serializedVersion: 2
|
||||
name: WLPaletteW_Dagger2_0
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 0
|
||||
width: 32
|
||||
height: 32
|
||||
alignment: 0
|
||||
pivot: {x: 0, y: 0}
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
customData:
|
||||
outline: []
|
||||
physicsShape: []
|
||||
tessellationDetail: -1
|
||||
bones: []
|
||||
spriteID: cee49d62bb342d9d0800000000000000
|
||||
internalID: -2751061951280230676
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
outline: []
|
||||
customData:
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spriteCustomMetadata:
|
||||
entries: []
|
||||
nameFileIdTable: {}
|
||||
mipmapLimitGroupName:
|
||||
pSDRemoveMatte: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
After Width: | Height: | Size: 186 B |
|
|
@ -0,0 +1,181 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 3f6b1bef7cfa6394981e6dacb5120735
|
||||
TextureImporter:
|
||||
internalIDToNameTable:
|
||||
- first:
|
||||
213: 8375101949349877521
|
||||
second: WLPaletteW_Elven_Sword_01_0
|
||||
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: 1
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMipmapLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 0
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 1
|
||||
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: 0
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 0
|
||||
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: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
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: Server
|
||||
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: iOS
|
||||
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:
|
||||
- serializedVersion: 2
|
||||
name: WLPaletteW_Elven_Sword_01_0
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 0
|
||||
width: 32
|
||||
height: 32
|
||||
alignment: 0
|
||||
pivot: {x: 0, y: 0}
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
customData:
|
||||
outline: []
|
||||
physicsShape: []
|
||||
tessellationDetail: -1
|
||||
bones: []
|
||||
spriteID: 1175ea889d65a3470800000000000000
|
||||
internalID: 8375101949349877521
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
outline: []
|
||||
customData:
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spriteCustomMetadata:
|
||||
entries: []
|
||||
nameFileIdTable: {}
|
||||
mipmapLimitGroupName:
|
||||
pSDRemoveMatte: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
After Width: | Height: | Size: 174 B |
|
|
@ -0,0 +1,181 @@
|
|||
fileFormatVersion: 2
|
||||
guid: a59a3e95b9594db4fb4835483757192b
|
||||
TextureImporter:
|
||||
internalIDToNameTable:
|
||||
- first:
|
||||
213: -3890099004227723653
|
||||
second: WLPaletteW_PP_Theme_03_Scepter_001_0
|
||||
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: 1
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMipmapLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 0
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 1
|
||||
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: 0
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 0
|
||||
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: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
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: Server
|
||||
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: iOS
|
||||
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:
|
||||
- serializedVersion: 2
|
||||
name: WLPaletteW_PP_Theme_03_Scepter_001_0
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 0
|
||||
width: 32
|
||||
height: 32
|
||||
alignment: 0
|
||||
pivot: {x: 0, y: 0}
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
customData:
|
||||
outline: []
|
||||
physicsShape: []
|
||||
tessellationDetail: -1
|
||||
bones: []
|
||||
spriteID: b7ed7e7f097930ac0800000000000000
|
||||
internalID: -3890099004227723653
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
outline: []
|
||||
customData:
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spriteCustomMetadata:
|
||||
entries: []
|
||||
nameFileIdTable: {}
|
||||
mipmapLimitGroupName:
|
||||
pSDRemoveMatte: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
After Width: | Height: | Size: 183 B |
|
|
@ -0,0 +1,181 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 589c0e856898b0548ae13d4ad0dfbde8
|
||||
TextureImporter:
|
||||
internalIDToNameTable:
|
||||
- first:
|
||||
213: 1244558750658705854
|
||||
second: WLPaletteW_PP_Theme_03_Wand_001_0
|
||||
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: 1
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMipmapLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 0
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 1
|
||||
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: 0
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 0
|
||||
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: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
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: Server
|
||||
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: iOS
|
||||
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:
|
||||
- serializedVersion: 2
|
||||
name: WLPaletteW_PP_Theme_03_Wand_001_0
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 0
|
||||
width: 32
|
||||
height: 32
|
||||
alignment: 0
|
||||
pivot: {x: 0, y: 0}
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
customData:
|
||||
outline: []
|
||||
physicsShape: []
|
||||
tessellationDetail: -1
|
||||
bones: []
|
||||
spriteID: eb9bd1bf69f854110800000000000000
|
||||
internalID: 1244558750658705854
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
outline: []
|
||||
customData:
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spriteCustomMetadata:
|
||||
entries: []
|
||||
nameFileIdTable: {}
|
||||
mipmapLimitGroupName:
|
||||
pSDRemoveMatte: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
After Width: | Height: | Size: 173 B |
|
|
@ -0,0 +1,181 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 52142b326d0067349b53f4bcb60741a6
|
||||
TextureImporter:
|
||||
internalIDToNameTable:
|
||||
- first:
|
||||
213: -3360906276767254405
|
||||
second: WLPaletteW_PP_Theme_05_Bow_003_0
|
||||
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: 1
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMipmapLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 0
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 1
|
||||
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: 0
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 0
|
||||
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: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
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: Server
|
||||
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: iOS
|
||||
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:
|
||||
- serializedVersion: 2
|
||||
name: WLPaletteW_PP_Theme_05_Bow_003_0
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 0
|
||||
width: 32
|
||||
height: 32
|
||||
alignment: 0
|
||||
pivot: {x: 0, y: 0}
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
customData:
|
||||
outline: []
|
||||
physicsShape: []
|
||||
tessellationDetail: -1
|
||||
bones: []
|
||||
spriteID: b7838e15c89ab51d0800000000000000
|
||||
internalID: -3360906276767254405
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
outline: []
|
||||
customData:
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spriteCustomMetadata:
|
||||
entries: []
|
||||
nameFileIdTable: {}
|
||||
mipmapLimitGroupName:
|
||||
pSDRemoveMatte: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
After Width: | Height: | Size: 178 B |
|
|
@ -0,0 +1,181 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 80789ae82341a0d4185decd9a7226b27
|
||||
TextureImporter:
|
||||
internalIDToNameTable:
|
||||
- first:
|
||||
213: -447568681247962588
|
||||
second: WLPaletteW_PP_Theme_05_Bow_004_0
|
||||
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: 1
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMipmapLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 0
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 1
|
||||
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: 0
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 0
|
||||
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: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
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: Server
|
||||
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: iOS
|
||||
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:
|
||||
- serializedVersion: 2
|
||||
name: WLPaletteW_PP_Theme_05_Bow_004_0
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 0
|
||||
width: 32
|
||||
height: 32
|
||||
alignment: 0
|
||||
pivot: {x: 0, y: 0}
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
customData:
|
||||
outline: []
|
||||
physicsShape: []
|
||||
tessellationDetail: -1
|
||||
bones: []
|
||||
spriteID: 42a00add7aae9c9f0800000000000000
|
||||
internalID: -447568681247962588
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
outline: []
|
||||
customData:
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spriteCustomMetadata:
|
||||
entries: []
|
||||
nameFileIdTable: {}
|
||||
mipmapLimitGroupName:
|
||||
pSDRemoveMatte: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
After Width: | Height: | Size: 187 B |
|
|
@ -0,0 +1,181 @@
|
|||
fileFormatVersion: 2
|
||||
guid: d71956d3770613245a1abc264ad651b6
|
||||
TextureImporter:
|
||||
internalIDToNameTable:
|
||||
- first:
|
||||
213: -5740058264201742090
|
||||
second: WLPaletteW_PP_Theme_08_Mace_003_0
|
||||
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: 1
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMipmapLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 0
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 1
|
||||
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: 0
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 0
|
||||
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: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
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: Server
|
||||
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: iOS
|
||||
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:
|
||||
- serializedVersion: 2
|
||||
name: WLPaletteW_PP_Theme_08_Mace_003_0
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 0
|
||||
width: 32
|
||||
height: 32
|
||||
alignment: 0
|
||||
pivot: {x: 0, y: 0}
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
customData:
|
||||
outline: []
|
||||
physicsShape: []
|
||||
tessellationDetail: -1
|
||||
bones: []
|
||||
spriteID: 6f8b53cbb673750b0800000000000000
|
||||
internalID: -5740058264201742090
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
outline: []
|
||||
customData:
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spriteCustomMetadata:
|
||||
entries: []
|
||||
nameFileIdTable: {}
|
||||
mipmapLimitGroupName:
|
||||
pSDRemoveMatte: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
After Width: | Height: | Size: 173 B |
|
|
@ -0,0 +1,181 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 0fced43cb95899d49a1f68df567864af
|
||||
TextureImporter:
|
||||
internalIDToNameTable:
|
||||
- first:
|
||||
213: 8881747265113052769
|
||||
second: WLPaletteW_PP_Theme_08_Shield_003_0
|
||||
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: 1
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMipmapLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 0
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 1
|
||||
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: 0
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 0
|
||||
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: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
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: Server
|
||||
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: iOS
|
||||
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:
|
||||
- serializedVersion: 2
|
||||
name: WLPaletteW_PP_Theme_08_Shield_003_0
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 0
|
||||
width: 32
|
||||
height: 32
|
||||
alignment: 0
|
||||
pivot: {x: 0, y: 0}
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
customData:
|
||||
outline: []
|
||||
physicsShape: []
|
||||
tessellationDetail: -1
|
||||
bones: []
|
||||
spriteID: 1665cd1841e424b70800000000000000
|
||||
internalID: 8881747265113052769
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
outline: []
|
||||
customData:
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spriteCustomMetadata:
|
||||
entries: []
|
||||
nameFileIdTable: {}
|
||||
mipmapLimitGroupName:
|
||||
pSDRemoveMatte: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
After Width: | Height: | Size: 183 B |
|
|
@ -0,0 +1,181 @@
|
|||
fileFormatVersion: 2
|
||||
guid: d339faf999d879b43a43f2b69dce858f
|
||||
TextureImporter:
|
||||
internalIDToNameTable:
|
||||
- first:
|
||||
213: -1139853395363139215
|
||||
second: WLPaletteW_PP_Theme_10_Mace_003_0
|
||||
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: 1
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMipmapLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 0
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 1
|
||||
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: 0
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 0
|
||||
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: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
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: Server
|
||||
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: iOS
|
||||
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:
|
||||
- serializedVersion: 2
|
||||
name: WLPaletteW_PP_Theme_10_Mace_003_0
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 0
|
||||
width: 32
|
||||
height: 32
|
||||
alignment: 0
|
||||
pivot: {x: 0, y: 0}
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
customData:
|
||||
outline: []
|
||||
physicsShape: []
|
||||
tessellationDetail: -1
|
||||
bones: []
|
||||
spriteID: 1717b59406d6e20f0800000000000000
|
||||
internalID: -1139853395363139215
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
outline: []
|
||||
customData:
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spriteCustomMetadata:
|
||||
entries: []
|
||||
nameFileIdTable: {}
|
||||
mipmapLimitGroupName:
|
||||
pSDRemoveMatte: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
After Width: | Height: | Size: 156 B |
|
|
@ -0,0 +1,181 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 1c3b7e01e19575f4ca979a52a3c7fddb
|
||||
TextureImporter:
|
||||
internalIDToNameTable:
|
||||
- first:
|
||||
213: 3695557930503581107
|
||||
second: WLPaletteW_PP_Theme_10_Shield_003_0
|
||||
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: 1
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMipmapLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 0
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 1
|
||||
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: 0
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 0
|
||||
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: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
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: Server
|
||||
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: iOS
|
||||
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:
|
||||
- serializedVersion: 2
|
||||
name: WLPaletteW_PP_Theme_10_Shield_003_0
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 0
|
||||
width: 32
|
||||
height: 32
|
||||
alignment: 0
|
||||
pivot: {x: 0, y: 0}
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
customData:
|
||||
outline: []
|
||||
physicsShape: []
|
||||
tessellationDetail: -1
|
||||
bones: []
|
||||
spriteID: 3bd2b8e9b52494330800000000000000
|
||||
internalID: 3695557930503581107
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
outline: []
|
||||
customData:
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spriteCustomMetadata:
|
||||
entries: []
|
||||
nameFileIdTable: {}
|
||||
mipmapLimitGroupName:
|
||||
pSDRemoveMatte: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -36,6 +36,26 @@ namespace WL.Look.Character
|
|||
[Tooltip("팔레트 머티리얼")]
|
||||
public Material[] paletteMaterials;
|
||||
|
||||
// ───────────────────────────────────────── 무기 (WL-816b · PD 「이 화풍으로 무기와 코스튬으로 넓히자」)
|
||||
// 🔴 캐릭터 스위치(enabled_)와 **별개 스위치**다. 이 칸만 0 으로 두면 무기는 원본 100 %,
|
||||
// 캐릭터는 814x 상태 그대로 남는다. enabled_ = 0 이면 무기도 함께 꺼진다(상위 스위치).
|
||||
// 무기는 소켓에 **비동기로** 붙는다(`PCActor.Make_Weapon` = Addressables 콜백)이라
|
||||
// `WLWeaponFitter` 의 소켓 스캔에 얹어서 새 인스턴스 1회만 갈아끼운다(814p 와 같은 자리).
|
||||
[Header("무기 (WL-816b)")]
|
||||
[Tooltip("0 이면 무기 팔레트만 off (= 무기 원본 100 % · 캐릭터는 그대로)")]
|
||||
public int weaponEnabled_ = 1;
|
||||
|
||||
[Tooltip("무기 프리팹 이름 (Assets/Res_Addr/Weapon/<이름>.prefab · \"(Clone)\" 은 떼고 비교한다)")]
|
||||
public string[] weaponNames;
|
||||
|
||||
[Tooltip("팔레트 UV 메시 복사본 (같은 인덱스)")]
|
||||
public Mesh[] weaponMeshes;
|
||||
|
||||
[Tooltip("팔레트 머티리얼 (같은 인덱스)")]
|
||||
public Material[] weaponMaterials;
|
||||
|
||||
public static bool WeaponEnabled { get { var c = Instance; return c != null && c.enabled_ != 0 && c.weaponEnabled_ != 0; } }
|
||||
|
||||
// ───────────────────────────────────────── 싱글턴(Resources)
|
||||
public const string ResourcePath = "WL/WLCharacterPaletteSettings";
|
||||
static WLCharacterPaletteSettings s_inst;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,117 @@
|
|||
// ─────────────────────────────────────────────────────────────────────────────
|
||||
// WLWeaponPalette.cs — 무기를 팔레트 아틀라스 UV(도트)로 갈아끼운다 (WL-816b)
|
||||
//
|
||||
// PD 지시 #816 「이 화풍으로 무기와 코스튬으로 넓히자」 · 발주서 WL-816b
|
||||
//
|
||||
// ■ 왜 필요한가 (인게임 Play 실측 · 게임 크기 1080×1920 · ortho 10)
|
||||
// 무기는 캐릭터(2,959 px)보다 훨씬 작다 — `Elven_Sword_01` 304 px 뿐인데 **252 색**이 보였다
|
||||
// (서로 다른 색 82.9 % = 캐릭터가 814x 이전에 앓던 「흐린 사진」 그대로다).
|
||||
// PurePoly 9종은 이미 팔레트 텍스처(`PP_Color_Palette`)를 쓰지만 **Bilinear + 밉 + ASTC 압축**이라
|
||||
// 화면에서 칸이 섞여 27~44 %가 나왔다. 그래서 캐릭터와 같은 처방이 그대로 듣는다.
|
||||
//
|
||||
// ■ 무엇을 하나 — 814x 와 동일
|
||||
// 메시 복사본의 UV 를 팔레트 텍스처의 **칸 한가운데**로 보낸다(면이 영구 단색) +
|
||||
// 머티리얼을 캐릭터 팔레트 머티리얼(`M05_ToonP`)과 같은 셰이더·같은 값으로 바꾼다.
|
||||
// 🔴 팔레트 텍스처는 32×32 · 칸 8 px · Point · **밉 OFF** · 무압축 — 밉을 끄는 게 핵심이다.
|
||||
//
|
||||
// ■ 언제 부르나 — `WLWeaponFitter.Scan` (LateUpdate 소켓 스캔)
|
||||
// 무기는 `PCActor.Make_Weapon` 의 **Addressables 비동기 콜백**으로 붙어서 생성 프레임을 알 수 없다.
|
||||
// 814p 가 같은 이유로 만든 소켓 스캔에 얹는다 = 새 훅·새 컴포넌트 0.
|
||||
// 🔴 크기 보정(`WLWeaponFitSettings`)과 **독립**이다 — 그쪽을 꺼도 팔레트는 돈다(반대도 같다).
|
||||
// 메시 복사본은 정점 좌표가 원본과 같아(UV 만 바뀐다) 바운즈가 같으므로 배수 계산에 영향이 없다.
|
||||
//
|
||||
// ■ 되돌리기
|
||||
// `WLCharacterPaletteSettings.weaponEnabled_ = 0` → 무기만 원본 100 %.
|
||||
// `enabled_ = 0` → 캐릭터·무기 전부 off (= 814s + 814t 상태 100 %).
|
||||
//
|
||||
// ■ 성능 / GC
|
||||
// 무기 인스턴스 1개당 1회. 표에 없는 무기는 이름 비교 몇 번으로 끝난다(대입 0).
|
||||
//
|
||||
// 🔴 Debug.LogError / Debug.LogException 을 쓰지 않는다(813z 규칙).
|
||||
// ─────────────────────────────────────────────────────────────────────────────
|
||||
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace WL.Look.Character
|
||||
{
|
||||
public static class WLWeaponPalette
|
||||
{
|
||||
// 진단(프로브가 읽는다)
|
||||
public static int AppliedWeapons, AppliedMeshes, AppliedRenderers;
|
||||
public static string LastLog = "";
|
||||
|
||||
static readonly List<MeshFilter> s_mf = new List<MeshFilter>(8);
|
||||
static readonly List<Renderer> s_rd = new List<Renderer>(8);
|
||||
|
||||
/// <summary>소켓에 새로 붙은 무기 하나를 팔레트 메시·머티리얼로 갈아끼운다. 표에 없으면 무동작.</summary>
|
||||
public static bool Apply(Transform weaponRoot)
|
||||
{
|
||||
if (weaponRoot == null) return false;
|
||||
var cfg = WLCharacterPaletteSettings.Instance;
|
||||
if (cfg == null || cfg.enabled_ == 0 || cfg.weaponEnabled_ == 0) return false;
|
||||
var names = cfg.weaponNames;
|
||||
if (names == null || names.Length == 0) return false;
|
||||
|
||||
int idx = IndexOf(names, Strip(weaponRoot.name));
|
||||
if (idx < 0)
|
||||
{
|
||||
// 이름이 바뀐 인스턴스 대비 — 메시 이름으로 한 번 더 찾는다(원본 FBX/obj 메시 이름).
|
||||
var mf0 = weaponRoot.GetComponentInChildren<MeshFilter>(true);
|
||||
if (mf0 != null && mf0.sharedMesh != null) idx = IndexOf(names, Strip(mf0.sharedMesh.name));
|
||||
if (idx < 0) return false;
|
||||
}
|
||||
|
||||
Mesh mesh = cfg.weaponMeshes != null && idx < cfg.weaponMeshes.Length ? cfg.weaponMeshes[idx] : null;
|
||||
Material mat = cfg.weaponMaterials != null && idx < cfg.weaponMaterials.Length ? cfg.weaponMaterials[idx] : null;
|
||||
if (mesh == null && mat == null) return false;
|
||||
|
||||
int meshes = 0, rends = 0;
|
||||
if (mesh != null)
|
||||
{
|
||||
s_mf.Clear(); weaponRoot.GetComponentsInChildren(true, s_mf);
|
||||
for (int i = 0; i < s_mf.Count; i++)
|
||||
{
|
||||
var f = s_mf[i];
|
||||
if (f == null || f.sharedMesh == mesh) continue;
|
||||
f.sharedMesh = mesh; meshes++;
|
||||
}
|
||||
}
|
||||
if (mat != null)
|
||||
{
|
||||
s_rd.Clear(); weaponRoot.GetComponentsInChildren(true, s_rd);
|
||||
for (int i = 0; i < s_rd.Count; i++)
|
||||
{
|
||||
var r = s_rd[i];
|
||||
if (r == null || r is ParticleSystemRenderer || r is TrailRenderer || r is LineRenderer) continue;
|
||||
var ms = r.sharedMaterials;
|
||||
bool changed = false;
|
||||
for (int s = 0; s < ms.Length; s++) if (ms[s] != mat) { ms[s] = mat; changed = true; }
|
||||
if (changed) { r.sharedMaterials = ms; rends++; }
|
||||
}
|
||||
}
|
||||
|
||||
AppliedWeapons++; AppliedMeshes += meshes; AppliedRenderers += rends;
|
||||
LastLog = names[idx] + " · 메시 " + meshes + " · 렌더러 " + rends;
|
||||
if (cfg.verboseLog != 0) Debug.Log("[WL816b WeaponPalette] " + LastLog);
|
||||
return meshes + rends > 0;
|
||||
}
|
||||
|
||||
/// <summary>인스턴스 접미사 "(Clone)" 을 뗀다.</summary>
|
||||
static string Strip(string n)
|
||||
{
|
||||
if (string.IsNullOrEmpty(n)) return n;
|
||||
int i = n.IndexOf("(Clone)");
|
||||
return i >= 0 ? n.Substring(0, i).TrimEnd() : n;
|
||||
}
|
||||
|
||||
static int IndexOf(string[] names, string n)
|
||||
{
|
||||
for (int i = 0; i < names.Length; i++) if (names[i] == n) return i;
|
||||
return -1;
|
||||
}
|
||||
|
||||
/// <summary>진단 카운터 초기화(프로브 전용).</summary>
|
||||
public static void ResetCounters() { AppliedWeapons = 0; AppliedMeshes = 0; AppliedRenderers = 0; LastLog = ""; }
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
fileFormatVersion: 2
|
||||
guid: d8e88275a05443b49b41a56d715bd91c
|
||||