/// <summary> /// Update distance /// </summary> /// <param name="list">list of distance cadre model</param> /// <param name="src">list of cadre model</param> /// <param name="cmChanged">cadre model that has changed</param> public static void UpdateDistance(List <DistanceCadreModel> list, List <CadreModel> src, CadreModel cmChanged) { list.FindAll(a => { if (a.Get(refCadreModelPositiveIndexName, 0) == cmChanged.Index || a.Get(refCadreModelNegativeIndexName, 0) == cmChanged.Index) { return(true); } else { return(false); } }).ForEach(a => { if (a.Get(refCadreModelPositiveIndexName, 0) == cmChanged.Index) { CadreModel cm = DistanceCadreModel.Find(src, a.Get(refCadreModelNegativeIndexName, 0)); a.Uniform(cmChanged, cm); a.AimentedContact(cmChanged, cm); cmChanged.AimentedMove(); } else { CadreModel cm = DistanceCadreModel.Find(src, a.Get(refCadreModelPositiveIndexName, 0)); a.Uniform(cm, cmChanged); a.AimentedContact(cm, cmChanged); cm.AimentedMove(); } }); }
/// <summary> /// Constructor with two cadre model /// </summary> /// <param name="cm1">cadre model one</param> /// <param name="cm2">cadre model two</param> public DistanceCadreModel(CadreModel cm1, CadreModel cm2) { if (cm1.Index > cm2.Index) { this.Uniform(cm2, cm1); this.AimentedContact(cm2, cm1); cm2.AimentedMove(); } else { this.Uniform(cm1, cm2); this.AimentedContact(cm1, cm2); cm1.AimentedMove(); } }