示例#1
0
 private void EmitEventNewBody(BodyGameObject newBody)
 {
     foreach (GameObject g in bodyEventListeners)
     {
         g.SendMessage("Kinect_BodyFound", newBody, SendMessageOptions.RequireReceiver);
     }
 }
    void Kinect_BodyFound(object args)
    {
        //Found player, add parts to dictionary
        BodyGameObject bodyFound = (BodyGameObject)args;

        bodies.Add(bodyFound);
    }
示例#3
0
    void Kinect_BodyFound(object args)
    {
        BodyGameObject bodyFound = (BodyGameObject)args;

        bodies.Add(bodyFound);
        Debug.Log("Body found: " + bodyFound.ID);
        Player p = Instantiate(playerPrefab);

        players.Add(p);
        p.ID   = bodyFound.ID;
        p.body = bodyFound;
    }
示例#4
0
    void Kinect_BodyFound(object args)
    {
        BodyGameObject bodyFound = (BodyGameObject)args;

        bodies.Add(bodyFound);
    }
示例#5
0
    void Update()
    {
        if (BodySourceManager == null)
        {
            return;
        }

        _BodyManager = BodySourceManager.GetComponent <BodySourceManager>();
        if (_BodyManager == null)
        {
            return;
        }

        Kinect.Body[] data = _BodyManager.GetData();
        if (data == null)
        {
            return;
        }

        List <ulong> trackedIds = new List <ulong>();

        foreach (var body in data)
        {
            if (body == null)
            {
                continue;
            }

            if (body.IsTracked)
            {
                trackedIds.Add(body.TrackingId);
            }
        }

        List <ulong> knownIds = new List <ulong>(_Bodies.Keys);

        // First delete untracked bodies
        foreach (ulong trackingId in knownIds)
        {
            if (!trackedIds.Contains(trackingId))
            {
                //body lost
                Destroy(_Bodies[trackingId]);
                _Bodies.Remove(trackingId);
                bodiesGameObjects.Remove(trackingId);
                EmitEventBodyLost(trackingId);
            }
        }

        foreach (var body in data)
        {
            if (body == null)
            {
                continue;
            }

            if (body.IsTracked)
            {
                if (!_Bodies.ContainsKey(body.TrackingId))
                {
                    //new body found
                    GameObject parentBody = CreateBodyObject(body.TrackingId);
                    _Bodies[body.TrackingId] = parentBody;
                    BodyGameObject gameBodyObject = new BodyGameObject(parentBody, body.TrackingId);
                    bodiesGameObjects.Add(gameBodyObject.ID, gameBodyObject);
                    EmitEventNewBody(gameBodyObject);
                }

                RefreshBodyObject(body, _Bodies[body.TrackingId]);
            }
        }
    }
示例#6
0
 public BodyGameObject[] GetBodies()
 {
     BodyGameObject[] ret = new BodyGameObject[_Bodies.Values.Count];
     bodiesGameObjects.Values.CopyTo(ret, 0);
     return(ret);
 }