public override MousePoint GetNearestMousePoint(Mouse m, MSTIMULUS localGoal) { if (MousePoint.points != null && MousePoint.points.Count > 0) { float mindist = float.MaxValue; int best = -1; for (int i = 0; i < MouseMousePoint.socialPoints.Count; ++i) { MouseMousePoint mmpi = MouseMousePoint.socialPoints[i]; if (mmpi.Availability(m.index) == MPRESPONSE.AVAILABLE && mmpi.body.index != m.index) { float dist = Vector3.Distance(m.body.tform.position, mmpi.tform.position); float sdist = mmpi.body.index >= 0 ? 100f * ((10f - m.relationships[mmpi.body.index]) / 10f) : 100f * ((10f - m.protagRelationship) / 10f); float totalSdist = Mathf.Sqrt(dist * dist + sdist * sdist); if (totalSdist < mindist) { best = i; mindist = totalSdist; } } } return(best > -1 ? MouseMousePoint.socialPoints[best] : null); } return(null); }
public void SetSocial(int mouse, MouseMousePoint mmp) { if (!relationshipsView.Contains(mouse)) { relationshipsView.Add(mouse); } partner = mouse; callbackMousePoint = mmp; ChangeState(MSTATE.USEMP); }