// Magica Cloth.
// Copyright (c) MagicaSoft, 2020-2022.
// https://magicasoft.jp
using System.Collections.Generic;
using UnityEngine;
namespace MagicaReductionMesh
{
///
/// 最終メッシュデータ
/// ※シリアライズ設定していますが基本的には使い捨てを想定して作成されています
///
[System.Serializable]
public class FinalData
{
//=========================================================================================
// マージメッシュ情報
public List vertices = new List();
public List normals = new List();
public List tangents = new List();
public List uvs = new List();
public List boneWeights = new List();
public List bindPoses = new List();
public List bones = new List();
public List lines = new List();
public List triangles = new List();
public List tetras = new List();
public List tetraSizes = new List();
///
/// マージ頂点ごとのバインドポーズ
///
public List vertexBindPoses = new List();
///
/// マージ頂点が影響を与える子メッシュ頂点リスト
/// データはuintでパッキングされ、上位16bitが[子メッシュインデックス]、下位16bitが[子頂点インデックス]
///
[System.Serializable]
public class MeshIndexData
{
public List meshIndexPackList = new List();
}
public List vertexToMeshIndexList = new List();
///
/// マージ頂点が所属するトライアングル情報リスト
///
public List vertexToTriangleCountList = new List(); // 所属トライアングルの数
public List vertexToTriangleStartList = new List(); // vertexToTriangleIndexListの開始位置
public List vertexToTriangleIndexList = new List(); // 所属トライアングルインデックスリスト(これは頂点数とは一致しない)
//=========================================================================================
///
/// 子メッシュ情報
///
[System.Serializable]
public class MeshInfo
{
public int meshIndex;
public Mesh mesh;
public List vertices = new List();
public List normals = new List();
public List tangents = new List();
public List boneWeights = new List();
///
/// 元々属していた親マージ頂点インデックス
///
public List parents = new List();
///
/// 頂点数
///
public int VertexCount
{
get
{
return vertices.Count;
}
}
}
public List meshList = new List();
//=========================================================================================
///
/// データが有効か判定する
///
public bool IsValid
{
get
{
return vertices.Count > 0;
}
}
///
/// 頂点数
///
public int VertexCount
{
get
{
return vertices.Count;
}
}
///
/// ライン数
///
public int LineCount
{
get
{
return lines.Count / 2;
}
}
///
/// トライアングル数
///
public int TriangleCount
{
get
{
return triangles.Count / 3;
}
}
///
/// テトラ数
///
public int TetraCount
{
get
{
return tetras.Count / 4;
}
}
///
/// ボーン数
///
public int BoneCount
{
get
{
return bones.Count;
}
}
///
/// スキンメッシュかどうか
///
public bool IsSkinning
{
get
{
//return bones.Count > 1;
return true; // 基本的にすべてスキニング
}
}
///
/// 子メッシュ数
///
public int MeshCount
{
get
{
return meshList.Count;
}
}
}
}