public static bool PropertiesMatch(ThingPropertiesCopySettings flags, Thing source, Thing target) { // Built-in properties if (flags.Type && source.Type != target.Type) { return(false); } if (flags.Angle && source.AngleDoom != target.AngleDoom) { return(false); } if (flags.Action && source.Action != target.Action) { return(false); } if (flags.Arguments) { // Classic args for (int i = 0; i < source.Args.Length; i++) { if (source.Args[i] != target.Args[i]) { return(false); } } // String args if (General.Map.UDMF) { if (!UniFields.ValuesMatch("arg0str", source, target)) { return(false); } if (!UniFields.ValuesMatch("arg1str", source, target)) { return(false); } if (!UniFields.ValuesMatch("arg2str", source, target)) { return(false); } if (!UniFields.ValuesMatch("arg3str", source, target)) { return(false); } if (!UniFields.ValuesMatch("arg4str", source, target)) { return(false); } } } if (flags.Tag && source.Tag != target.Tag) { return(false); } if (flags.Flags && !FlagsMatch(source.GetEnabledFlags(), target.GetEnabledFlags())) { return(false); } if (!General.Map.UDMF) { return(true); } // UDMF-specific properties if (flags.Pitch && source.Pitch != target.Pitch) { return(false); } if (flags.Roll && source.Roll != target.Roll) { return(false); } if (flags.Scale && (source.ScaleX != target.ScaleX) || (source.ScaleY != target.ScaleY)) { return(false); } // UI fields if (!UIFieldsMatch(flags, source, target)) { return(false); } // Custom fields return(!flags.Fields || UniFields.CustomFieldsMatch(source.Fields, target.Fields)); }
//mxd. Applies selected settings public void Apply(ICollection <Thing> things, ThingPropertiesCopySettings settings) { foreach (Thing t in things) { if (settings.Type) { t.Type = type; } // Update the setting from the configuration after changing the type. This makes sure all the following // actions work, since there can be problems when changing the type from or to thing that has a model defined t.UpdateConfiguration(); if (settings.Angle) { t.Rotate(angle); } if (settings.ZHeight) { t.Move(t.Position.x, t.Position.y, zheight); } if (settings.Pitch) { t.SetPitch(pitch); } if (settings.Roll) { t.SetRoll(roll); } if (settings.Scale) { t.SetScale(scalex, scaley); } if (settings.Flags) { t.ClearFlags(); foreach (KeyValuePair <string, bool> f in flags) { t.SetFlag(f.Key, f.Value); } } if (settings.Tag) { t.Tag = tag; } if (settings.Action) { t.Action = action; } if (settings.Arguments) { for (int i = 0; i < t.Args.Length; i++) { t.Args[i] = args[i]; } } } // Should we bother? if (!General.Map.UDMF) { return; } foreach (Thing t in things) { // Apply fields t.Fields.BeforeFieldsChange(); // Apply string arguments if (settings.Arguments) { Apply(t.Fields, "arg0str"); //TODO: re-enable when UI part is ready //Apply(t.Fields, "arg1str"); //Apply(t.Fields, "arg2str"); //Apply(t.Fields, "arg3str"); //Apply(t.Fields, "arg4str"); } // Apply custom fields if (settings.Fields) { ApplyCustomFields(t.Fields); } } // Apply UI fields ApplyUIFields(things, settings); }
//mxd. Applies selected settings public void Apply(ICollection <Thing> things, ThingPropertiesCopySettings settings) { foreach (Thing t in things) { if (settings.Type) { t.Type = type; } if (settings.Angle) { t.Rotate(angle); } if (settings.ZHeight) { t.Move(t.Position.x, t.Position.y, zheight); } if (settings.Pitch) { t.SetPitch(pitch); } if (settings.Roll) { t.SetRoll(roll); } if (settings.Scale) { t.SetScale(scalex, scaley); } if (settings.Flags) { t.ClearFlags(); foreach (KeyValuePair <string, bool> f in flags) { t.SetFlag(f.Key, f.Value); } } if (settings.Tag) { t.Tag = tag; } if (settings.Action) { t.Action = action; } if (settings.Arguments) { for (int i = 0; i < t.Args.Length; i++) { t.Args[i] = args[i]; } } } // Should we bother? if (!General.Map.UDMF) { return; } foreach (Thing t in things) { // Apply fields t.Fields.BeforeFieldsChange(); // Apply string arguments if (settings.Arguments) { Apply(t.Fields, "arg0str"); //TODO: re-enable when UI part is ready //Apply(t.Fields, "arg1str"); //Apply(t.Fields, "arg2str"); //Apply(t.Fields, "arg3str"); //Apply(t.Fields, "arg4str"); } // Apply custom fields if (settings.Fields) { ApplyCustomFields(t.Fields); } } // Apply UI fields ApplyUIFields(things, settings); }