// Magica Cloth 2. // Copyright (c) 2024 MagicaSoft. // https://magicasoft.jp using System; using System.Collections.Generic; using UnityEngine; namespace MagicaCloth2 { /// /// PreBuildの保存データ /// [System.Serializable] public class PreBuildSerializeData : ITransform { /// /// 有効状態 /// Valid state. /// public bool enabled = false; /// /// ビルド識別ID /// public string buildId; /// /// ビルドデータの共有部分 /// このデータは複数のインスタンスで共有されるためScriptableObjectとして外部アセットとして保存される /// public PreBuildScriptableObject preBuildScriptableObject = null; /// /// ビルドデータの固有部分 /// このデータはインスタンスごとに固有となる /// public UniquePreBuildData uniquePreBuildData; //========================================================================================= /// /// PreBuild利用の有無 /// /// public bool UsePreBuild() => enabled; /// /// PreBuildデータの検証 /// /// public ResultCode DataValidate() { if (uniquePreBuildData == null) return new ResultCode(Define.Result.PreBuildData_Empty); var preBuildData = GetSharePreBuildData(); if (preBuildData == null) return new ResultCode(Define.Result.PreBuildData_Empty); var result = preBuildData.DataValidate(); if (result.IsFaild()) return result; result = uniquePreBuildData.DataValidate(); if (result.IsFaild()) return result; return ResultCode.Success; } public SharePreBuildData GetSharePreBuildData() { if (preBuildScriptableObject == null) return null; if (string.IsNullOrEmpty(buildId)) return null; return preBuildScriptableObject.GetPreBuildData(buildId); ; } /// /// ビルドIDを生成する(英数字8文字) /// /// public static string GenerateBuildID() { Guid g = Guid.NewGuid(); return g.ToString().Substring(0, 8); } public void GetUsedTransform(HashSet transformSet) { uniquePreBuildData.GetUsedTransform(transformSet); } public void ReplaceTransform(Dictionary replaceDict) { uniquePreBuildData.ReplaceTransform(replaceDict); } } }