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; } } } } }
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; } } } }
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; } } }
internal DrawingContextEffectResources([NotNull] DrawingContext drawingContext) { SolidColorBrush = EffectResource.CreateSolidColorBrushEffectResource(drawingContext); LinearGradientBrush = EffectResource.CreateLinearGradientBrushEffectResource(drawingContext); }
public void AddVisualEffect(VisualEffectName handle, EffectResource resource) { VisualEffect visualEffect = EffectHelper.FindVisualEffect(handle, resource); this.mVisualEffectSection.Items.Add(item: new VisualEffectBuilder(handle, visualEffect, resource)); }
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); }
public static VisualEffect FindVisualEffect(VisualEffectName handle, EffectResource resource) { return(resource.VisualEffectSections.Items[(int)handle.Index] as VisualEffect); }
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))); }
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()); }