Example #1
0
        public static void SetAllEffectReferences(string oldEffectName, string newEffectName,
                                                  EffectResource resource)
        {
            oldEffectName = CreateSafeEffectName(oldEffectName, true);
            newEffectName = CreateSafeEffectName(newEffectName, false);
            int i;

            EffectResource.EffectSection metaSection = FindEffectSection(VisualEffectType.Metaparticle, resource);
            if (metaSection != null)
            {
                MetaparticleEffect metaEffect;
                int metaCount = metaSection.Items.Count;
                for (i = 0; i < metaCount; i++)
                {
                    metaEffect = metaSection.Items[i] as MetaparticleEffect;
                    if (metaEffect.ComponentName.ToLowerInvariant() == oldEffectName)
                    {
                        metaEffect.ComponentName = newEffectName;
                    }
                    if (metaEffect.ComponentType.ToLowerInvariant() == oldEffectName)
                    {
                        metaEffect.ComponentType = newEffectName;
                    }
                }
            }
            EffectResource.EffectSection seqSection = FindEffectSection(VisualEffectType.Sequence, resource);
            if (seqSection != null)
            {
                SequenceEffect seqEffect;
                int            seqCount = seqSection.Items.Count;
                for (i = 0; i < seqCount; i++)
                {
                    seqEffect = seqSection.Items[i] as SequenceEffect;
                    for (int j = 0; j < seqEffect.Elements.Count; j++)
                    {
                        if (seqEffect.Elements[j].EffectName.ToLowerInvariant() == oldEffectName)
                        {
                            seqEffect.Elements[j].EffectName = newEffectName;
                        }
                    }
                }
            }
        }
Example #2
0
 private void LocateSeqReferences(VisualEffectName handle, EffectResource resource,
     List<VisualEffectHandleContainer> references)
 {
     SequenceEffect[] seqEffects = EffectHelper.FindEffects<SequenceEffect>(handle, resource);
     if (seqEffects != null && seqEffects.Length > 0)
     {
         int i, j, k;
         VisualEffectName dep;
         SequenceEffect seqEffect;
         string effectName;
         bool flag = false;
         for (i = 0; i < seqEffects.Length; i++)
         {
             seqEffect = seqEffects[i];
             for (j = 0; j < seqEffect.Elements.Count; j++)
             {
                 // compensate for variations in casing
                 effectName = seqEffect.Elements[j].EffectName.ToLowerInvariant();
                 for (k = 0; k < references.Count && !flag; k++)
                 {
                     if (references[k].OriginalName == effectName)
                     {
                         //references[j].Dependents.Add(seqEffects[i]);
                         flag = true;
                     }
                 }
                 if (!flag)
                 {
                     dep = EffectHelper.FindVisualEffectHandle(effectName, resource);
                     if (dep != null)
                     {
                         references.Add(new VisualEffectHandleContainer(
                             new VisualEffectName(0, null, dep), resource));
                         this.LocateSeqReferences(dep, resource, references);
                     }
                 }
                 flag = false;
             }
         }
     }
 }
Example #3
0
 private void LocateMetaReferences(VisualEffectName handle, EffectResource resource,
     List<VisualEffectHandleContainer> references)
 {
     MetaparticleEffect[] metaEffects = EffectHelper.FindEffects<MetaparticleEffect>(handle, resource);
     if (metaEffects != null && metaEffects.Length > 0)
     {
         int i, j;
         VisualEffectName dep;
         string effectName;
         bool flag = false;
         for (i = 0; i < metaEffects.Length; i++)
         {
             // compensate for variations in casing
             effectName = metaEffects[i].ComponentName.ToLowerInvariant();
             for (j = 0; j < references.Count && !flag; j++)
             {
                 if (references[j].OriginalName == effectName)
                 {
                     //references[j].Dependents.Add(metaEffects[i]);
                     flag = true;
                 }
             }
             if (!flag)
             {
                 dep = EffectHelper.FindVisualEffectHandle(effectName, resource);
                 if (dep != null)
                 {
                     references.Add(new VisualEffectHandleContainer(
                         new VisualEffectName(0, null, dep), resource));
                     this.LocateMetaReferences(dep, resource, references);
                 }
             }
             flag = false;
             // compensate for variations in casing
             effectName = metaEffects[i].ComponentType.ToLowerInvariant();
             for (j = 0; j < references.Count && !flag; j++)
             {
                 if (references[j].OriginalName == effectName)
                 {
                     //references[j].Dependents.Add(metaEffects[i]);
                     flag = true;
                 }
             }
             if (!flag)
             {
                 dep = EffectHelper.FindVisualEffectHandle(effectName, resource);
                 if (dep != null)
                 {
                     references.Add(new VisualEffectHandleContainer(
                         new VisualEffectName(0, null, dep), resource));
                     this.LocateMetaReferences(dep, resource, references);
                 }
             }
             flag = false;
         }
     }
 }
Example #4
0
 internal DrawingContextEffectResources([NotNull] DrawingContext drawingContext)
 {
     SolidColorBrush     = EffectResource.CreateSolidColorBrushEffectResource(drawingContext);
     LinearGradientBrush = EffectResource.CreateLinearGradientBrushEffectResource(drawingContext);
 }
Example #5
0
        public void AddVisualEffect(VisualEffectName handle, EffectResource resource)
        {
            VisualEffect visualEffect = EffectHelper.FindVisualEffect(handle, resource);

            this.mVisualEffectSection.Items.Add(item: new VisualEffectBuilder(handle, visualEffect, resource));
        }
Example #6
0
        public static EffectResource.EffectSection FindEffectSection(VisualEffectType eType, EffectResource resource)
        {
            int effectSectionCount = resource.EffectSections.Count;

            EffectResource.EffectSection eSection;
            for (int i = 0; i < effectSectionCount; i++)
            {
                eSection = resource.EffectSections[i];
                if (eSection.Type == (ushort)eType)
                {
                    return(eSection);
                }
            }
            return(null);
        }
Example #7
0
 public static VisualEffect FindVisualEffect(VisualEffectName handle, EffectResource resource)
 {
     return(resource.VisualEffectSections.Items[(int)handle.Index] as VisualEffect);
 }
Example #8
0
 public static int BinarySearchForEffectHandle(string name, EffectResource resource)
 {
     //VisualEffectHandle target = new VisualEffectHandle(0, null);
     //target.EffectName = CreateSafeEffectName(name);
     return(resource.VisualEffectNames.BinarySearch(null, new StringHandleComparer(name)));
 }
Example #9
0
        public static string[] GetSurfaceStrings(VisualEffectName handle, EffectResource resource)
        {
            byte pEffectType = (byte)VisualEffectType.Particle;
            byte mEffectType = (byte)VisualEffectType.Metaparticle;
            byte dEffectType = (byte)VisualEffectType.Distribute;

            EffectResource.EffectSection pEffects = FindEffectSection(VisualEffectType.Particle, resource);
            EffectResource.EffectSection mEffects = FindEffectSection(VisualEffectType.Metaparticle, resource);
            EffectResource.EffectSection dEffects = FindEffectSection(VisualEffectType.Distribute, resource);

            List <string>             surfaceStrings = new List <string>();
            DataList <Effect.Surface> surfaces;
            VisualEffect visualEffect = FindVisualEffect(handle, resource);

            VisualEffect.Description index;
            Effect.Surface           surface;
            int i, j, count, indexCount = visualEffect.Descriptions.Count;

            for (i = 0; i < indexCount; i++)
            {
                index = visualEffect.Descriptions[i] as VisualEffect.Description;
                if (index.ComponentType == pEffectType)
                {
                    ParticleEffect particle = pEffects.Items[index.ComponentIndex] as ParticleEffect;
                    surfaces = particle.Surfaces;
                    count    = surfaces.Count;
                    for (j = 0; j < count; j++)
                    {
                        surface = surfaces[j];
                        if (!string.IsNullOrEmpty(surface.String01))
                        {
                            surfaceStrings.Add(string.Format("{0:X4}(P).Surfaces[{1}].String01:{2}", i, j, surface.String01));
                        }
                        if (!string.IsNullOrEmpty(surface.String02))
                        {
                            surfaceStrings.Add(string.Format("{0:X4}(P).Surfaces[{1}].String02:{2}", i, j, surface.String02));
                        }
                    }
                }
                if (index.ComponentType == mEffectType)
                {
                    MetaparticleEffect metaparticle = mEffects.Items[index.ComponentIndex] as MetaparticleEffect;
                    surfaces = metaparticle.Surfaces;
                    count    = surfaces.Count;
                    for (j = 0; j < count; j++)
                    {
                        surface = metaparticle.Surfaces[j];
                        if (!string.IsNullOrEmpty(surface.String01))
                        {
                            surfaceStrings.Add(string.Format("{0:X4}(M).Surfaces[{1}].String01:{2}", i, j, surface.String01));
                        }
                        if (!string.IsNullOrEmpty(surface.String02))
                        {
                            surfaceStrings.Add(string.Format("{0:X4}(M).Surfaces[{1}].String02:{2}", i, j, surface.String02));
                        }
                    }
                }
                if (index.ComponentType == dEffectType)
                {
                    DistributeEffect distribute = dEffects.Items[index.ComponentIndex] as DistributeEffect;
                    surfaces = distribute.Surfaces;
                    count    = surfaces.Count;
                    for (j = 0; j < count; j++)
                    {
                        surface = surfaces[j];
                        if (!string.IsNullOrEmpty(surface.String01))
                        {
                            surfaceStrings.Add(string.Format("{0:X4}(D).Surfaces[{1}].String01:{2}", i, j, surface.String01));
                        }
                        if (!string.IsNullOrEmpty(surface.String02))
                        {
                            surfaceStrings.Add(string.Format("{0:X4}(D).Surfaces[{1}].String02:{2}", i, j, surface.String02));
                        }
                    }
                }
            }
            return(surfaceStrings.ToArray());
        }