/// <summary> /// </summary> /// <param name="url">url to access image</param> /// <param name="wall">wall orientation</param> /// <param name="x">x coordinate for corresponding wall based on left lower anchor</param> /// <param name="y">x coordinate for corresponding wall based on left lower anchor</param> public Displayal Display(string url, WallOrientation wall, float x, float y, float w, float h, bool lightOn = true, string audioUrl = null) { Debug.Log(string.Format("{0}, {1}, {2}/{3}, {4}/{5}", url, wall, x, y, w, h)); var displayal = Instantiate(PlanePrefab); var go = GameObject.Find("VirtualExhibitionManager"); if (go.GetComponent <VREPController>().Settings.PlaygroundEnabled) { //var r = displayal.AddComponent<Rigidbody>(); //r.useGravity = false; /*var i = displayal.AddComponent<Interactable>(); * i.hideHandOnAttach = true; * i.useHandObjectAttachmentPoint = true; * i.handFollowTransformPosition = true; * i.handFollowTransformRotation = true; * i.highlightOnHover = true; * var t = displayal.AddComponent<Throwable>(); * t.releaseVelocityStyle = ReleaseStyle.NoChange; * t.restoreOriginalParent = false;*/ } if (!LightingActivated || !lightOn) { displayal.transform.Find("Directional light").gameObject.SetActive(false); } var disp = displayal.gameObject.GetComponent <Displayal>(); var image = displayal.transform.Find("Plane").gameObject.AddComponent <ImageLoader>(); // Displayal var mycanv = displayal.transform.Find("MyCanvas").gameObject.AddComponent <Paintable>(); //ImageLoader image = displayal.AddComponent<ImageLoader>();// ImageDisplayPlane image.ReloadImage(url); Debug.Log(GetWallForOrientation(wall)); var pos = GetWallForOrientation(wall).CalculatePosition(transform.position, new Vector2(x, y)); var rot = GetWallForOrientation(wall).CalculateRotation(); displayal.transform.position = pos; displayal.transform.rotation = Quaternion.Euler(rot); displayal.transform.localScale = ScalingUtility.convertMeters2PlaneScaleSize(w, h); if (audioUrl != null) { Debug.Log("added audio to display object"); var closenessDetector = displayal.AddComponent <ClosenessDetector>(); closenessDetector.url = audioUrl; } displayedImages.Add(displayal); return(disp); }
public void AttachExhibits() { // TODO Make displayal configurable var prefab = ObjectFactory.GetDisplayalPrefab(); foreach (var e in WallData.exhibits) { GameObject displayal = Instantiate(prefab); displayal.name = "Displayal (" + e.name + ")"; displayal.transform.parent = Anchor.transform; var pos = new Vector3(e.position.x, e.position.y, -ExhibitionBuildingSettings.Instance.WallOffset); displayal.transform.localPosition = pos; //displayal.transform.rotation = Quaternion.Euler(ObjectFactory.CalculateRotation(WallData.direction)); var rot = Quaternion.Euler(92.5f, 0, 180); // Non-90° as they would tip over othervise displayal.transform.localRotation = rot; // Because prefab is messed up if (!VREPController.Instance.Settings.SpotsEnabled || !e.light) { displayal.transform.Find("Directional light").gameObject.SetActive(false); } Displayal disp = displayal.gameObject.GetComponent <Displayal>(); disp.SetExhibitModel(e); disp.OriginalPosition = pos; disp.OriginalRotation = rot; Displayals.Add(disp); ImageLoader image = displayal.transform.Find("Plane").gameObject.AddComponent <ImageLoader>(); // Displayal //ImageLoader image = displayal.AddComponent<ImageLoader>();// ImageDisplayPlane image.ReloadImage(e.GetURLEncodedPath()); displayal.transform.localScale = ScalingUtility.convertMeters2PlaneScaleSize(e.size.x, e.size.y); if (e.audio != null) { Debug.Log("added audio to display object"); var closenessDetector = displayal.AddComponent <ClosenessDetector>(); closenessDetector.url = e.GetURLEncodedAudioPath(); } } }
public void AttachExhibits() { // TODO Make displayal configurable var prefab = ObjectFactory.GetDisplayalPrefab(); foreach (var e in WallData.exhibits) { if (e.name != "Masterpiece") { var displayal = Instantiate(prefab); displayal.name = "Displayal (" + e.name + ")"; displayal.transform.parent = Anchor.transform; var pos = new Vector3(e.position.x, e.position.y, -ExhibitionBuildingSettings.Instance.WallOffset); displayal.transform.localPosition = pos; var rot = Quaternion.Euler(90, 0, 180); displayal.transform.localRotation = rot; // Because prefab is messed up var disp = displayal.gameObject.GetComponent <Displayal>(); disp.SetExhibitModel(e); disp.OriginalPosition = pos; disp.OriginalRotation = rot; // Make the Boxcollider trigger in Displayal disp.GetComponent <BoxCollider>().isTrigger = true; Displayals.Add(disp); var image = displayal.transform.Find("Plane").gameObject.AddComponent <ImageLoader>(); // Displayal image.ReloadImage(e.GetURLEncodedPath()); displayal.transform.localScale = ScalingUtility.convertMeters2PlaneScaleSize(e.size.x, e.size.y); if (e.audio != null) { Debug.Log("added audio to display object"); var closenessDetector = displayal.AddComponent <ClosenessDetector>(); closenessDetector.url = e.audio; } } else { // Canvas only gets created if there is no Canvas already if (MyExhibitionBuilder.Masterpiece == false) { var prefab2 = ObjectFactory.GetCanvasPrefab(); var displayalCanvas = Instantiate(prefab2); displayalCanvas.name = "Displayal (" + e.name + ")"; displayalCanvas.transform.parent = Anchor.transform; var pos = new Vector3(e.position.x, e.position.y, -ExhibitionBuildingSettings.Instance.WallOffset); displayalCanvas.transform.localPosition = pos; var rot = Quaternion.Euler(90, 0, 180); displayalCanvas.transform.localRotation = rot; // Because prefab is messed up var disp = displayalCanvas.gameObject.GetComponent <Displayal>(); disp.SetExhibitModel(e); disp.OriginalPosition = pos; disp.OriginalRotation = rot; displayalCanvas.transform.localScale = ScalingUtility.convertMeters2PlaneScaleSize(e.size.x, e.size.y); Displayals.Add(disp); MyExhibitionBuilder.Masterpiece = true; } } } }