void DropEffector::InitPoints(BaseObject* op, BaseObject* gen, BaseDocument* doc, EffectorDataStruct* data, MoData* md, BaseThread* thread) { BaseContainer* bc = op->GetDataInstance(); if (!bc) return; if (!rcol) return; ed.mode = bc->GetInt32(DROPEFFECTOR_MODE); ed.maxdist = bc->GetFloat(DROPEFFECTOR_DISTANCE); ed.target = bc->GetObjectLink(DROPEFFECTOR_TARGET, doc); if (!ed.target) return; ed.targmg = ed.target->GetMg(); ed.itargmg = ~ed.targmg; ed.genmg = gen->GetMg(); ed.igenmg = ~ed.genmg; //Add a dependency so that the effector will update if the target changes AddEffectorDependence(ed.target); //Can't init raycollider or the target isn't polygonal, then skip if (!rcol->Init(ed.target)) ed.target = nullptr; else if (!ed.target->IsInstanceOf(Opolygon)) ed.target = nullptr; }