コード例 #1
0
 public static void CopyProperties(this IObject3D copyTo, IObject3D copyFrom, Object3DPropertyFlags flags)
 {
     if (flags.HasFlag(Object3DPropertyFlags.Matrix))
     {
         copyTo.Matrix = copyFrom.Matrix;
     }
     if (flags.HasFlag(Object3DPropertyFlags.Color))
     {
         copyTo.Color = copyFrom.Color;
     }
     if (flags.HasFlag(Object3DPropertyFlags.MaterialIndex))
     {
         copyTo.MaterialIndex = copyFrom.MaterialIndex;
     }
     if (flags.HasFlag(Object3DPropertyFlags.Name))
     {
         copyTo.Name = copyFrom.Name;
     }
     if (flags.HasFlag(Object3DPropertyFlags.OutputType))
     {
         copyTo.OutputType = copyFrom.OutputType;
     }
     if (flags.HasFlag(Object3DPropertyFlags.Visible))
     {
         copyTo.Visible = copyFrom.Visible;
     }
 }
コード例 #2
0
        public void ResetMeshWrapperMeshes(Object3DPropertyFlags flags, CancellationToken cancellationToken)
        {
            using (RebuildLock())
            {
                this.DebugDepth("Reset MWM");

                // Remove everything above the objects that have the meshes we are wrapping that are mesh wrappers
                var wrappers = this.Descendants().Where(o => o.OwnerID == this.ID).ToList();
                foreach (var wrapper in wrappers)
                {
                    using (wrapper.RebuildLock())
                    {
                        var remove = wrapper.Parent;
                        while (remove is ModifiedMeshObject3D)
                        {
                            var hold = remove;
                            remove.Remove(null);
                            remove = hold.Parent;
                        }
                    }
                }

                // if there are not already, wrap all meshes with our id (some inner object may have changed it's meshes)
                AddMeshWrapperToAllChildren();

                this.Mesh = null;
                var participants = this.Descendants().Where(o => o.OwnerID == this.ID).ToList();
                foreach (var item in participants)
                {
                    var firstChild = item.Children.First();
                    using (item.RebuildLock())
                    {
                        // set the mesh back to a copy of the child mesh
                        item.Mesh = firstChild.Mesh.Copy(cancellationToken);
                        // and reset the properties
                        item.CopyProperties(firstChild, flags & (~Object3DPropertyFlags.Matrix));
                    }
                }
            }
        }
コード例 #3
0
ファイル: IObject3D.cs プロジェクト: lamest/agg-sharp
        public static void CopyWorldProperties(this IObject3D copyTo,
                                               IObject3D copyFrom,
                                               IObject3D root,
                                               Object3DPropertyFlags flags,
                                               bool includingRoot = true)
        {
            if (flags.HasFlag(Object3DPropertyFlags.Matrix))
            {
                copyTo.Matrix = copyFrom.WorldMatrix(root, includingRoot);
            }

            if (flags.HasFlag(Object3DPropertyFlags.Color))
            {
                copyTo.Color = copyFrom.WorldColor(root, includingRoot);
            }

            if (flags.HasFlag(Object3DPropertyFlags.MaterialIndex))
            {
                copyTo.MaterialIndex = copyFrom.WorldMaterialIndex(root, includingRoot);
            }

            if (flags.HasFlag(Object3DPropertyFlags.Name))
            {
                copyTo.Name = copyFrom.Name;
            }

            if (flags.HasFlag(Object3DPropertyFlags.OutputType))
            {
                copyTo.OutputType = copyFrom.WorldOutputType(root, includingRoot);
            }

            if (flags.HasFlag(Object3DPropertyFlags.Visible))
            {
                copyTo.Visible = copyFrom.WorldVisible(root, includingRoot);
            }
        }