コード例 #1
0
 /// <summary>
 /// Checks to determine if all bits in a provided mask are set.
 /// </summary>
 /// <param name="a"><see cref="ManipulationHandler.ReleaseBehaviorType"/> value.</param>
 /// <param name="b"><see cref="ManipulationHandler.ReleaseBehaviorType"/> mask.</param>
 /// <returns>
 /// True if all of the bits in the specified mask are set in the current value.
 /// </returns>
 public static bool IsMaskSet(this ManipulationHandler.ReleaseBehaviorType a, ManipulationHandler.ReleaseBehaviorType b)
 {
     return((a & b) == b);
 }
コード例 #2
0
    public void LoadObject()
    {
        GameObject playspace = this.gameObject;
        GameObject camera    = playspace.transform.Find("Main Camera").gameObject;

        model = new GameObject(model_name);
        model.transform.parent = playspace.transform;
        model.AddComponent <MeshRenderer>();
        model.AddComponent <StepToggle>();


        Vector3 camera_pos = camera.transform.position;
        Vector3 camera_dir = camera.transform.forward;

        model.transform.position   = camera_pos + camera_dir;
        model.transform.position  += new Vector3(0.0f, -0.05f, 0.6f);
        model.transform.localScale = new Vector3(0.0005f, 0.0005f, 0.0005f);

        AssetBundle.UnloadAllAssetBundles(true);
        var myLoadedAssetBundle = AssetBundle.LoadFromFile(Path.Combine("file:///", Application.streamingAssetsPath, model_name));

        if (myLoadedAssetBundle == null)
        {
            Debug.Log("Failed to load AssetBundle!");
            return;
        }
        var fileArray = myLoadedAssetBundle.LoadAllAssets <GameObject>();

        foreach (var obj in fileArray)
        {
            if (obj.name.Contains("step"))
            {
                GameObject step_model = Instantiate(obj);
                step_model.transform.parent = model.transform;
                //get step number to set the right order
                int step_num = int.Parse(string.Join("", obj.name.Substring(obj.name.IndexOf("step")).ToCharArray().Where(Char.IsDigit)));
                step_model.transform.SetSiblingIndex(step_num);
                //AddLines(step_model);
                step_model.transform.localPosition = new Vector3(0.0f, 0.0f, 0.0f);
                step_model.transform.localScale    = new Vector3(1.0f, 1.0f, 1.0f);
                step_model.transform.GetChild(0).gameObject.AddComponent <StepHighlighter>();
            }
            else if (obj.name.Equals(model_name) || obj.name.Equals(model_name.ToLower()))
            {
                GameObject model_small = Instantiate(obj);
                model_small.transform.parent = camera.transform.GetChild(1).gameObject.transform;
                //AddLines(model_small);
                model_small.transform.localPosition = new Vector3(0f, -6.7f, -0.7f);
                model_small.transform.localRotation = new Quaternion(0.165f, -73.45901f, 31.383f, 0);
                model_small.transform.localScale    = new Vector3(0.5f, 0.5f, 0.5f);

                float canvas_width = model_small.transform.parent.GetComponent <RectTransform>().rect.width *model_small.transform.parent.GetComponent <RectTransform>().transform.localScale.x;
                float bb_width     = model_small.transform.GetChild(0).gameObject.GetComponent <MeshRenderer>().bounds.size.x * 2.25f;

                model_small.transform.localScale = new Vector3(canvas_width / bb_width, canvas_width / bb_width, canvas_width / bb_width);

                RotatingObject ro = model_small.AddComponent <RotatingObject>();
                ro.yAngle = 2;
                ro.speed  = 0.2f;
            }
            else
            {
                //bricks.Add(obj.name, obj);
            }
        }

        // make small model canvas visible
        camera.transform.Find("Canvas").gameObject.SetActive(true);
        // make model picker menu invisible
        playspace.transform.Find("Canvas").gameObject.SetActive(false);

        ConfigSpeechInputHandler();

        // add components to move and scale the model
        ManipulationHandler mh = model.AddComponent <ManipulationHandler>();

        ManipulationHandler.ReleaseBehaviorType ReleaseBehaviorType = ManipulationHandler.ReleaseBehaviorType.KeepVelocity & ManipulationHandler.ReleaseBehaviorType.KeepAngularVelocity;
        mh.ReleaseBehavior = ReleaseBehaviorType;
        model.AddComponent <BoundingBox>();
        Rigidbody modelRigidBody = model.AddComponent <Rigidbody>();

        modelRigidBody.useGravity = false;
        model.AddComponent <NearInteractionGrabbable>();
    }