IEnumerator RenderTilesWithRightAxis(ViveSR_StaticColliderInfo cldInfo, Vector3 right) { //Vector3 up, forward; targetLengthX = Prefab.transform.localScale.x; targetLengthY = Prefab.transform.localScale.y; targetLengthZ = Prefab.transform.localScale.z; List <Vector3> locations = new List <Vector3>(); Quaternion outRot; cldInfo.GetColliderUsableLocationsWithRightAxis(targetLengthX, targetLengthZ, targetLengthY, locations, out outRot, ref right); List <GameObject> renderingTiles = new List <GameObject>(); for (int i = 0; i < locations.Count; i++) { GameObject tile = Instantiate(Prefab, locations[i], outRot); tileMgr.AddTile(tile); renderingTiles.Add(tile); } for (int j = 0; j <= growFrequence; j++) { for (int i = 0; i < renderingTiles.Count; i++) { renderingTiles[i].transform.localScale = new Vector3(targetLengthX * targetScale / growFrequence * j, targetLengthY * targetScale / growFrequence * j, targetLengthZ * targetScale / growFrequence * j); } yield return(new WaitForSeconds(timeInterval / growFrequence)); } }
void UpdateRaycastMode() { Vector3 forward = RaycastStartPoint.transform.forward; Vector3 startPos = RaycastStartPoint.transform.position; Physics.Raycast(startPos, forward, out hit); if (hit.collider) { ViveSR_StaticColliderInfo cldInfo = hit.collider.gameObject.GetComponent <ViveSR_StaticColliderInfo>(); if (CheckHorizontalValidHit(hit, cldInfo)) { raycastMode = RaycastMode.ValidHit_Horizontal; hitCldInfo = cldInfo; } else if (CheckValidHit(hit, cldInfo)) { raycastMode = RaycastMode.ValidHit; hitCldInfo = cldInfo; } else { raycastMode = RaycastMode.InvalidHit; } } else { raycastMode = RaycastMode.NoHit; } }
bool CheckHorizontalValidHit(RaycastHit hitInfo, ViveSR_StaticColliderInfo cldInfo) { if (hitInfo.collider != null && cldInfo != null && (cldInfo.Orientation == PlaneOrientation.HORIZONTAL)) { return(true); } return(false); }
void ShowCollider(ViveSR_StaticColliderInfo cldInfo) { MeshRenderer rnd = cldInfo.GetComponent <MeshRenderer>(); Material wireframe = new Material(Shader.Find("ViveSR/Wireframe")); wireframe.SetFloat("_ZTest", 0); wireframe.SetFloat("_Thickness", 0); rnd.sharedMaterial = wireframe; rnd.enabled = true; }
bool CheckValidHit(RaycastHit hitInfo, ViveSR_StaticColliderInfo cldInfo) { if (hitInfo.collider != null && cldInfo != null && (/*cldInfo.Orientation == PlaneOrientation.HORIZONTAL || */ cldInfo.Orientation == PlaneOrientation.VERTICAL || cldInfo.Orientation == PlaneOrientation.OBLIQUE)) { return(true); } return(false); }