/// <summary> /// 全テクスチャを結合して、ソースとなったオブジェクトのUVと材質を差し替える。 /// 材質は、元同じだったもの同士は、新しい材質でも同じものを共有する。 /// </summary> public static void PackTextureAndTranslateUv(IEnumerable <GameObject> targetObjects) { var mmts = FromObject.QueryMeshMatsTransform_IfHaving(targetObjects).ToArray(); // 重複のない材質配列を生成。 var dstMats = (from x in mmts select x.mats) .To(MaterialCombined.QueryCombine) .ToArray() ; // テクスチャを結合する。 var(dstTexture, uvRects) = packTexture_(dstMats); // UV位置→頂点数情報割り当て→UV配列生成→メッシュUVに割り当て uvRects .To(x => queryJoinUvRectToVtxInfo_PerSubPerMesh_(x, mmts, dstMats)) .To(x => queryCreateNewUvs_PerMesh_(x, mmts)) .To(x => translateUvsInMeshes_(x, mmts)) ; // 全材質を新テクスチャー材質に差し替える。 setNewMats_(dstMats, dstTexture, mmts); return; (Texture, Rect[]) packTexture_(IEnumerable <Material> qDstMats_)
/// <summary> /// Mesh 要素を結合するデリゲートを返す。位置のみ。 /// </summary> static public Func <MeshElements> BuildBaseMeshElements (IEnumerable <GameObject> gameObjects, Transform tfBase, bool isCombineSubMeshes = true) { var mmts = FromObject.QueryMeshMatsTransform_IfHaving(gameObjects).ToArray(); return(BuildBaseMeshElements(mmts, tfBase, isCombineSubMeshes)); }
static public Func <MeshElements> BuildStructureWithPalletMeshElements (IEnumerable <GameObject> children, Transform tfBase) { var mmts = FromObject.QueryMeshMatsTransform_IfHaving(children).ToArray(); return(BuildStructureWithPalletMeshElements(mmts, tfBase)); }
/// <summary> /// Mesh 要素を結合するデリゲートを返す。Structure オブジェクト用。 /// </summary> static public Func <MeshElements> BuildStructureWithPalletMeshElements (IEnumerable <StructurePartAuthoring> parts, Transform tfBase) { var gameObjects = from part in parts select part.gameObject; var mmts = FromObject.QueryMeshMatsTransform_IfHaving(gameObjects).ToArray(); return(BuildStructureWithPalletMeshElements(mmts, tfBase)); }
public ToFro(FromModel fromModel, FromObject fromObject) { FromModel = fromModel; FromObject = fromObject; }
/// <summary> /// Assigns Value in given direction between Control and DataSource Target /// </summary> /// <param name="aDirection"> /// Direction of data <see cref="EDataDirection"/> /// </param> /// <param name="aObject"> /// Object which contains data <see cref="System.Object"/> /// </param> /// <param name="aControl"> /// Control used to edit <see cref="System.Object"/> /// </param> /// <returns> /// Returns true if successful <see cref="System.Boolean"/> /// </returns> public bool AssignValueToObject(EDataDirection aDirection, object aObject, object aControl) { bool res = false; // Check if if (IsGlobal == true) { if (aDirection == EDataDirection.FromControlToDataSource) { throw new ExceptionGlobalMappingAssignedFromControlToTarget(); } #if NEWCACHE if (dataCache == null) { dataCache = new CachedProperty(Adaptor.FinalTarget, Name); } if (controlCache == null) { controlCache = new CachedProperty(aControl, MappingTarget); } if (controlCache.IsCached == true) { object val; if (dataCache.IsCached == true) { if (dataCache.GetValue(out val) == true) { if (controlCache.SetValue(val) == true) { val = null; return(true); } } } } return(false); #endif #if OLDCACHE object FromObject = aObject; object ToObject = aControl; string FromProperty = Name; string ToProperty = MappingTarget; // assign, direction is already correct res = ConnectionProvider.CopyPropertyValue(FromObject, FromProperty, ToObject, ToProperty); FromObject = null; ToObject = null; return(res); #endif } else { #if NEWCACHE CachedProperty FromObject; CachedProperty ToObject; bool canbedone; if (aDirection == EDataDirection.FromControlToDataSource) { FromObject = controlCache; ToObject = dataCache; canbedone = AllowedToWrite; if (ToObject is IObserveable) { (ToObject as IObserveable).ResetChangeCallCheckup(); } } else { FromObject = dataCache; ToObject = controlCache; canbedone = AllowedToRead; } if (controlCache == null) { controlCache = new CachedProperty(aControl, MappingTarget); } object val = null; // assign in set direction if ((canbedone == true) && (FromObject != null) && (ToObject != null)) { if (FromObject.GetValue(out val) == true) { if (ToObject.SetValue(val) == true) { if (aDirection == EDataDirection.FromControlToDataSource) { if ((ToObject is IObserveable) == false) { DataSourceController.CallChangedFor(ToObject); } else if ((ToObject as IObserveable).HasCalledForChange == false) { (ToObject as IObserveable).HasChanged = true; } } } res = true; } } FromObject = null; ToObject = null; return(res); #endif #if OLDCACHE object FromObject; object ToObject; string FromProperty; string ToProperty; bool canbedone; // swap direction if needed if (aDirection == EDataDirection.FromControlToDataSource) { FromObject = aControl; ToObject = aObject; FromProperty = MappingTarget; ToProperty = Name; canbedone = AllowedToWrite; if (ToObject is IObserveable) { (ToObject as IObserveable).ResetChangeCallCheckup(); } } else { FromObject = aObject; ToObject = aControl; FromProperty = Name; ToProperty = MappingTarget; canbedone = AllowedToRead; } // assign in set direction if (canbedone == true) { if (ConnectionProvider.CopyPropertyValue(FromObject, FromProperty, ToObject, ToProperty) == true) { if (aDirection == EDataDirection.FromControlToDataSource) { if ((ToObject is IObserveable) == false) { DataSourceController.CallChangedFor(ToObject); } else if ((ToObject as IObserveable).HasCalledForChange == false) { (ToObject as IObserveable).HasChanged = true; } } res = true; } // else // Debug.Warning ("MappedProperty.AssignValueToObject", "CopyPropertyValue not successful"); } FromObject = null; ToObject = null; return(res); #endif } }
public ToFro(FromModel fromModel, FromObject fromObject) { FromModel = fromModel; FromObject = fromObject; }