Esempio n. 1
0
        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);
        }