示例#1
0
 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);
 }
示例#2
0
 public void SetSocial(int mouse, MouseMousePoint mmp)
 {
     if (!relationshipsView.Contains(mouse))
     {
         relationshipsView.Add(mouse);
     }
     partner            = mouse;
     callbackMousePoint = mmp;
     ChangeState(MSTATE.USEMP);
 }