コード例 #1
0
    /// <summary>
    /// Spawns the brain for one subject- this may be "fsaverage_joel", the average brain.  This will try to use assetBundles and call ObjSpawn if it can't.
    /// </summary>
    /// <returns>The spawn.</returns>
    /// <param name="subject">Subject.</param>
    /// <param name="average_brain">If set to <c>true</c> average brain.</param>
    public override IEnumerator Spawn(string subject, bool average_brain = false)
    {
        CoroutineWithData subjectListRequest = new CoroutineWithData(this, RhinoRequestor.AssetBundleRequest(subject));

        yield return(subjectListRequest.coroutine);

        Debug.Log(subjectListRequest.result);
        if (subjectListRequest.result == null)
        {
            loadingText.text = "AssetBundle not found. Performing alternative (slower) load. Please wait.";
            ObjSpawn(subject, average_brain);
            yield break;
        }
        AssetBundle bundle      = (AssetBundle)subjectListRequest.result;
        GameObject  brainPrefab = bundle.LoadAsset <GameObject>(subject);
        GameObject  brain       = Instantiate(brainPrefab);

        brain.transform.parent = gameObject.transform;
        dk             = brain.transform.GetChild(1).gameObject;
        hcp            = brain.transform.GetChild(0).gameObject;
        dkLeftParent   = dk.transform.GetChild(0).gameObject;
        dkRightParent  = dk.transform.GetChild(1).gameObject;
        hcpLeftParent  = hcp.transform.GetChild(0).gameObject;
        hcpRightParent = hcp.transform.GetChild(1).gameObject;

        currentBundle = bundle;

        //due to weirdness, flip everything
        //gameObject.transform.localScale = new Vector3 (-gameObject.transform.localScale.x, gameObject.transform.localScale.y, gameObject.transform.localScale.z);

        hcp.SetActive(false);
    }