public ChContactSMC(ChContactContainer mcontainer, //< contact container Ta mobjA, //< collidable object A Tb mobjB, //< collidable object B collision.ChCollisionInfo cinfo //< data for the contact pair ) : base(mcontainer, mobjA, mobjB, cinfo) { // m_Jac = null; Reset(mobjA, mobjB, cinfo); }
public ChContactNSC(ChContactContainer mcontainer, //< contact container Ta mobjA, //< collidable object A Tb mobjB, //< collidable object B collision.ChCollisionInfo cinfo //< data for the contact pair ) : base(mcontainer, mobjA, mobjB, cinfo) { Nx.SetTangentialConstraintU(Tu); Nx.SetTangentialConstraintV(Tv); Reset(mobjA, mobjB, cinfo); }
public ChContactNSCrolling(ChContactContainer mcontainer, //< contact container Ta mobjA, //< collidable object A Tb mobjB, //< collidable object B collision.ChCollisionInfo cinfo //< data for the contact pair ) : base(mcontainer, mobjA, mobjB, cinfo) { Rx.SetRollingConstraintU(this.Ru); Rx.SetRollingConstraintV(this.Rv); Rx.SetNormalConstraint(this.Nx); Reset(mobjA, mobjB, cinfo); }
public ChContactTuple(ChContactContainer mcontainer, //< contact container Ta mobjA, //< ChContactable object A Tb mobjB, //< ChContactable object B collision.ChCollisionInfo cinfo //< data for the contact pair ) { // Debug.Assert(mcontainer != null); // Debug.Assert(mobjA); // Debug.Assert(mobjB); container = mcontainer; Reset(mobjA, mobjB, cinfo); }
public void _OptimalContactInsert <Ta, Tb, Tcont, Titer>(ref List <Tcont> contactlist, //< contact list ref IEnumerator <Titer> lastcontact, //< last contact acquired // ref Titer lastcontact, //< last contact acquired // ref IEnumerator<ChContactNSC<ChContactable_1vars<IntInterface.Six>, ChContactable_1vars<IntInterface.Six>>> lastcontact, ref int n_added, //< number of contact inserted ChContactContainer mcontainer, //< contact container Ta objA, //< collidable object A Tb objB, //< collidable object B collision.ChCollisionInfo cinfo //< collision informations ) // where Titer: object // where Tcont : ChContactSMC <ChContactable_1vars <IntInterface.Six>, ChContactable_1vars <IntInterface.Six> > where Titer : ChContactSMC <ChContactable_1vars <IntInterface.Six>, ChContactable_1vars <IntInterface.Six> > where Ta : ChContactable_1vars <IntInterface.Six> where Tb : ChContactable_1vars <IntInterface.Six> { if (/*lastcontact != null && */ lastcontact.Current != contactlist.LastOrDefault()) { // reuse old contacts lastcontact.MoveNext(); ((IEnumerator <ChContactSMC <ChContactable_1vars <IntInterface.Six>, ChContactable_1vars <IntInterface.Six> > >)lastcontact).Current.Reset(objA, objB, cinfo); } else { ChContactSMC <ChContactable_1vars <IntInterface.Six>, ChContactable_1vars <IntInterface.Six> > mc = new ChContactSMC <ChContactable_1vars <IntInterface.Six>, ChContactable_1vars <IntInterface.Six> >(mcontainer, objA, objB, cinfo); Tcont coont = (Tcont)mc; contactlist.Add(coont); // move to last element in list IEnumerator <Tcont> iter = contactlist.GetEnumerator(); for (int i = 0; i < contactlist.Count; i++) { iter.MoveNext(); } lastcontact = (IEnumerator <Titer>)iter; // lastcontact = (dynamic)contactlist.GetEnumerator(); } n_added++; }
public ChContactContainer(ChContactContainer other) { add_contact_callback = other.add_contact_callback; report_contact_callback = other.report_contact_callback; }