Ejemplo n.º 1
0
        /// <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_)
Ejemplo n.º 2
0
        /// <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));
        }
Ejemplo n.º 3
0
        static public Func <MeshElements> BuildStructureWithPalletMeshElements
            (IEnumerable <GameObject> children, Transform tfBase)
        {
            var mmts = FromObject.QueryMeshMatsTransform_IfHaving(children).ToArray();

            return(BuildStructureWithPalletMeshElements(mmts, tfBase));
        }
Ejemplo n.º 4
0
        /// <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));
        }
Ejemplo n.º 5
0
 public ToFro(FromModel fromModel, FromObject fromObject)
 {
     FromModel = fromModel;
     FromObject = fromObject;
 }
Ejemplo n.º 6
0
        /// <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
            }
        }
Ejemplo n.º 7
0
 public ToFro(FromModel fromModel, FromObject fromObject)
 {
     FromModel  = fromModel;
     FromObject = fromObject;
 }