public override void Launch(bool checkOthers) { // XDevicePlugin.Init(); XDevicePlugin.SetInt(-1, XDevicePlugin.kField_CtxDeviceVersion, 0x3000); // base.Launch(checkOthers); // Create control points in runtime. Transform trackingSpace = VRContext.GetAnchor(VRNode.TrackingSpace); for (int i = 0; i < 3; ++i) { if (docks[i] != null) { GameObject go = Instantiate(docks[i]); Transform t = docks[i].transform; Transform newT = go.transform; // go.name = docks[i].name; newT.SetParent(trackingSpace); newT.localPosition = t.localPosition; newT.localRotation = t.localRotation; newT.localScale = t.localScale; // docks[i] = go; } } // Initialize play area. m_PlayAreaRenderer = docks[2].GetComponentInChildren <PlayAreaRenderer>(); if (m_PlayAreaRenderer != null) { m_PlayArea = m_PlayAreaRenderer.transform; m_BoundaryPtr = NativeMethods.Boundary_Alloc(-1, 4, -2.0f, 2.0f); for (int i = 0, imax = m_PlayAreaRenderer.corners.Length; i < imax; ++i) { NativeMethods.Boundary_SetCorner(m_BoundaryPtr, i, m_PlayAreaRenderer.corners[i].x, -m_PlayAreaRenderer.corners[i].z ); } } // Transform head = VRContext.GetAnchor(VRNode.Head); if (head != null) { TrackedHead trackedHead = head.GetComponent <TrackedHead>(); if (trackedHead != null) { trackedHead.markTransform.localPosition = head.InverseTransformPoint(anchor.position); } } }
protected virtual void DrawPlayAreaFeature() { EditorGUILayout.LabelField("Play Area", m_HeaderStyle); EditorGUI.BeginChangeCheck(); if (DrawToggle("Enabled", "PlayArea.enabled", true)) { // BeginGroup(); PlayAreaRenderer prefab = null; GameObject go = PlayerPrefsEx.GetObject("PlayAreaRenderer") as GameObject; if (go == null) { go = EditorGUILayout.ObjectField("Prefab", null, typeof(GameObject), true) as GameObject; if (go == null) { EndGroup(); return; } else { PlayerPrefsEx.SetObject("PlayAreaRenderer", go); } } if (go != null) { prefab = go.GetComponent <PlayAreaRenderer>(); } if (prefab == null) { EndGroup(); return; } // DrawToggle("Show Camera Model", "PlayArea.showCameraModel", true); //EditorGUILayout.HelpBox("",MessageType.Info); DrawSlider("Warning Distance", "PlayArea.warningDistance", 0.5f, 0.01f, 1.0f); if (DrawToggle("Draw Ground", "PlayArea.drawGround", true)) { if (EditorGUI.EndChangeCheck()) { EditorUtility.SetDirty(m_PlayerPrefsEx); } BeginGroup(); EditorGUI.BeginChangeCheck(); prefab.groundColor = EditorGUILayout.ColorField("Color", prefab.groundColor); prefab.borderThickness = EditorGUILayout.Slider("Thickness", prefab.borderThickness, 0.01f, 1.0f); if (EditorGUI.EndChangeCheck()) { EditorUtility.SetDirty(prefab); } EndGroup(); } else { if (EditorGUI.EndChangeCheck()) { EditorUtility.SetDirty(m_PlayerPrefsEx); } } EditorGUI.BeginChangeCheck(); if (DrawToggle("Draw Wall", "PlayArea.drawWall", true)) { if (EditorGUI.EndChangeCheck()) { EditorUtility.SetDirty(m_PlayerPrefsEx); } BeginGroup(); EditorGUI.BeginChangeCheck(); prefab.wallColor = EditorGUILayout.ColorField("Color", prefab.wallColor); prefab.thickness = EditorGUILayout.Slider("Thickness", prefab.thickness, 0.001f, 1.0f); prefab.cellSize = EditorGUILayout.Slider("Cell Size", prefab.cellSize, 0.01f, 1.0f); prefab.emptySize = EditorGUILayout.Slider("Empty Size", prefab.emptySize, 0.01f, 1.0f); prefab.height = EditorGUILayout.Slider("Height", prefab.height, 1.0f, 3.0f); if (EditorGUI.EndChangeCheck()) { EditorUtility.SetDirty(prefab); } EndGroup(); } EditorGUI.BeginChangeCheck(); if (DrawToggle("Draw Plane", "PlayArea.drawPlane", true)) { if (EditorGUI.EndChangeCheck()) { EditorUtility.SetDirty(m_PlayerPrefsEx); } BeginGroup(); EditorGUI.BeginChangeCheck(); prefab.planeColor = EditorGUILayout.ColorField("Color", prefab.planeColor); if (EditorGUI.EndChangeCheck()) { EditorUtility.SetDirty(prefab); } EndGroup(); } EndGroup(); } }
protected virtual void Start() { m_Transform = transform; // m_TrackerHandle = -1; if (showOnTrackingLost) { XDevicePlugin.Init(); m_TrackerHandle = XDevicePlugin.GetInputDeviceHandle(trackerName); if (m_TrackerHandle < 0) { showOnTrackingLost = false; } } // m_ReadyForModel = (controlPoints.Length == 8); // Cache values. m_CosFovX = Mathf.Cos(Mathf.Deg2Rad * fovX * .5f); m_CosFovY = Mathf.Cos(Mathf.Deg2Rad * fovY * .5f); m_SqrNearZ = nearZ * nearZ; m_SqrFarZ = farZ * farZ; m_SqrOrthographicSize = orthographicSize * .5f; m_SqrOrthographicSize = Vector2.Scale(m_SqrOrthographicSize, m_SqrOrthographicSize); // if (m_Corners != null && m_Corners.Length != 0) { m_CachedCorners = m_Corners; } m_Corners = null; // m_GroundAlpha = PlayerPrefsEx.GetInt("PlayArea.drawGround", 1); m_WallAlpha = PlayerPrefsEx.GetInt("PlayArea.drawWall", 1); autoCreatePlayArea = PlayerPrefsEx.GetBool("PlayArea.enabled", autoCreatePlayArea); showCameraModel = PlayerPrefsEx.GetBool("PlayArea.showCameraModel", showCameraModel); if (m_cameraModel != null) { m_cameraModel.SetActive(showCameraModel); } warningDistance = PlayerPrefsEx.GetFloat("PlayArea.warningDistance", 0.5f); // if (autoCreatePlayArea) { Transform t = null; if (m_PlayArea == null) { // m_PlayArea = new GameObject("_PlayArea", typeof(PlayAreaRenderer)).GetComponent <PlayAreaRenderer>(); m_PlayArea.handedness = -1; m_PlayArea.groundColor = PlayerPrefsEx.GetColor("PlayArea.groundColor", Color.cyan); m_PlayArea.groundMaterial = new Material(Shader.Find("Sprites/Default")); m_PlayArea.borderThickness = PlayerPrefsEx.GetFloat("PlayArea.borderThickness", .15f); m_PlayArea.wallColor = PlayerPrefsEx.GetColor("PlayArea.wallColor", Color.cyan); m_PlayArea.wallMaterial = new Material(Shader.Find("Sprites/Default")); m_PlayArea.thickness = PlayerPrefsEx.GetFloat("PlayArea.thickness", 0.0075f); m_PlayArea.height = PlayerPrefsEx.GetFloat("PlayArea.height", 2.5f); m_PlayArea.cellSize = PlayerPrefsEx.GetFloat("PlayArea.cellSize", 0.25f); m_PlayArea.emptySize = PlayerPrefsEx.GetFloat("PlayArea.emptySize", 0.05f); } t = m_PlayArea.transform; t.SetParent(VRContext.GetAnchor(VRNode.TrackingSpace)); t.localPosition = (VRContext.trackingOrigin == TrackingOrigin.FloorLevel) ? Vector3.zero : new Vector3(0f, -XDevicePlugin.GetFloat(m_TrackerHandle, XDevicePlugin.kField_TrackerHeight, 0f), 0f); t.localRotation = Quaternion.identity; t.localScale = Vector3.one; } // UpdateModel(); }
protected virtual void Start() { m_Transform = transform; // m_TrackerHandle = -1; if (showOnTrackingLost) { XDevicePlugin.Init(); m_TrackerHandle = XDevicePlugin.GetInputDeviceHandle(trackerName); if (m_TrackerHandle < 0) { showOnTrackingLost = false; } } // m_ReadyForModel = (controlPoints.Length == 8); // Cache values. /* * m_CosFovX=Mathf.Cos(Mathf.Deg2Rad*fovX*.5f); * m_CosFovY=Mathf.Cos(Mathf.Deg2Rad*fovY*.5f); * m_SqrNearZ=nearZ*nearZ; * m_SqrFarZ=farZ*farZ; * * m_SqrOrthographicSize=orthographicSize*.5f; * m_SqrOrthographicSize=Vector2.Scale(m_SqrOrthographicSize,m_SqrOrthographicSize); */ // if (m_Corners != null && m_Corners.Length != 0) { m_CachedCorners = m_Corners; } m_Corners = null; // m_GroundAlpha = PlayerPrefsEx.GetInt("PlayArea.drawGround", 1); m_WallAlpha = PlayerPrefsEx.GetInt("PlayArea.drawWall", 1); m_PlaneAlpha = PlayerPrefsEx.GetInt("PlayArea.drawPlane", 1); autoCreatePlayArea = PlayerPrefsEx.GetBool("PlayArea.enabled", autoCreatePlayArea); showCameraModel = PlayerPrefsEx.GetBool("PlayArea.showCameraModel", showCameraModel); if (m_cameraModel != null) { m_cameraModel.SetActive(showCameraModel); } warningDistance = PlayerPrefsEx.GetFloat("PlayArea.warningDistance", 0.5f); // if (autoCreatePlayArea) { Transform t = null; Transform trackingSpaceAnchor = VRContext.GetAnchor(VRNode.TrackingSpace); if (m_PlayArea == null) { if (trackingSpaceAnchor != null) { m_PlayArea = trackingSpaceAnchor.GetComponentInChildren <PlayAreaRenderer>(); } if (m_PlayArea == null) { GameObject go = PlayerPrefsEx.GetObject("PlayAreaRenderer") as GameObject; m_PlayArea = Instantiate(go).GetComponent <PlayAreaRenderer>(); m_PlayArea.name = go.name; } } m_PlayArea.handedness = -1; // t = m_PlayArea.transform; t.SetParent(trackingSpaceAnchor); t.localPosition = (VRContext.trackingOrigin == TrackingOrigin.FloorLevel) ? Vector3.zero : new Vector3(0f, -XDevicePlugin.GetFloat(m_TrackerHandle, XDevicePlugin.kField_TrackerHeightFloat, 0f), 0f); t.localRotation = Quaternion.identity; t.localScale = Vector3.one; } // UpdateModel(); }