/// <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); }
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>(); }