public WarpSourceData(Project p, string command, IEnumerable<string> values,
FileParser parser, IList<int> spacing)
: base(p, command, values, -1, parser, spacing)
{
// Find type
for (int i=0; i<WarpCommands.Length; i++) {
string s = WarpCommands[i];
if (this.CommandLowerCase == s.ToLower()) {
_type = (WarpSourceType)i;
break;
}
}
SetValueReferences(warpValueReferences[(int)WarpSourceType]);
referencedDestData = GetReferencedDestData();
if (referencedDestData != null)
referencedDestData.AddReference(this);
this.AddDataModifiedHandler(delegate(object sender, EventArgs e) {
WarpDestData newDestData = GetReferencedDestData();
if (newDestData != referencedDestData) {
// Update DestData reference
if (referencedDestData != null)
referencedDestData.RemoveReference(this);
referencedDestData = newDestData;
if (newDestData != null)
newDestData.AddReference(this);
}
});
}