getData() public method

public getData ( ) : Body[]
return Body[]
コード例 #1
0
    // Update is called once per frame
    void Update () {
        int state = 0;

        //If we don't have a body manager Game Object
        if( bodyManagerGO == null )
        {
            //Exit the function
            return;
        }

        //Try to get the body manager game object's BodyManager component
        bodyManager = bodyManagerGO.GetComponent<BodyManager>();

        //If the body manager game object doesn't have a BodyManager component
        if (bodyManager == null)
        {
            //Exit the function
            return;
        }

        //Create a local copy of the bodyManager data
        Body[] data = bodyManager.getData();

        //If that data doesn't exist
        if( data == null )
        {
            //Exit the function
            return;
        }


        //List of tracked body ID numbers
        List<ulong> trackedIDs = new List<ulong>();


        //Fill that list
        //For each body in Kinect FOV
        foreach ( var body in data )
        {
            //If the body data is empty
            if( body == null )
            {
                //Skip this entry
                continue;
            }

            //If the body is being tracked
            if( body.IsTracked )
            {
                //Add its ID to the trackedIDs list
                trackedIDs.Add(body.TrackingId);
            }
        }

        //Get list of all body gameobjec
        List<ulong> knownIDs = new List<ulong>(_Bodies.Keys);

        //Delete GameObjects for bodies that aren't being tracked
        foreach ( ulong trackingID in knownIDs )
        {
            //If the currently tracked body ID list doesn't contain a body with this tracking ID
            if( !trackedIDs.Contains(trackingID) )
            {
                //Delete the GameObject
                Destroy(_Bodies[trackingID]);
                //Remove the body from the list of gameObjects
                _Bodies.Remove(trackingID);
            }
        }


        //Update body objects that need to be updated and create body objects that need to be created

        foreach ( var body in data )
        {
            //If the body doesn't exist
            if( body == null )
            {
                //Skip it
                continue;
            }

            //If the body is tracked
            if( body.IsTracked )
            {
                //If the body GameObject dictionary doesn't contain the body's tracking ID
                if( !_Bodies.ContainsKey(body.TrackingId) )
                {
                    //Create a body object with thr body's tracking ID and add it to the body GameObject dictionary (using the tracking ID as a key)
                    _Bodies[body.TrackingId] = CreateBodyObject(body.TrackingId);
                }

                //Refresh the body object
                RefreshBodyObject(body, _Bodies[body.TrackingId]);
            }
        }
	}