Example #1
0
    /// <summary>
    /// Checks for voxels in collider.
    /// </summary>
    /// <returns><c>true</c>, if for voxels in collider was checked, <c>false</c> otherwise.</returns>
    bool checkForVoxelsInCollider()
    {
        Vector3 max = cubeswitch.bounds.center + cubeswitch.bounds.extents;
        Vector3 min = cubeswitch.bounds.center - cubeswitch.bounds.extents;

        for (float i = min.x; i <= max.x; i += vxe.voxel_size)
        {
            for (float j = min.y; j <= max.y; j += vxe.voxel_size)
            {
                for (float k = min.z; k <= max.z; k += vxe.voxel_size)
                {
                    if (vxe.isVoxelThere(new Vector3(i, j, k)))
                    {
                        if (audio != null)
                        {
                            audio.Play();
                        }
                        return(true);
                    }
                }
            }
        }

        return(false);
    }
Example #2
0
    public void checkWeirdPosition()
    {
        float distsqr = (transform.position - vxe.camera.transform.position).sqrMagnitude;

        //if (distsqr < minDistSqr)
        {
            //low quality check
            voxelBelow = vxe.isVoxelThere(myTrans.position + Vector3.down * 0.5f * vxe.voxel_size);
            //voxelBelow |= vxe.isVoxelThere (myTrans.position + Vector3.down * 0.5f * vxe.voxel_size + Vector3.right * 0.2f * vxe.voxel_size);
            //voxelBelow |= vxe.isVoxelThere (myTrans.position + Vector3.down * 0.5f * vxe.voxel_size + Vector3.left * 0.2f * vxe.voxel_size);
            //voxelBelow |= vxe.isVoxelThere (myTrans.position + Vector3.down * 0.5f * vxe.voxel_size + Vector3.forward * 0.2f * vxe.voxel_size);
            //voxelBelow |= vxe.isVoxelThere (myTrans.position + Vector3.down * 0.5f * vxe.voxel_size + Vector3.back * 0.2f * vxe.voxel_size);

            stuckInVoxel = vxe.isVoxelThere(myTrans.position + Vector3.up * 0.5f * vxe.voxel_size);
            //stuckInVoxel |= vxe.isVoxelThere (myTrans.position + Vector3.up * 0.5f * vxe.voxel_size + Vector3.right * 0.2f * vxe.voxel_size);
            //stuckInVoxel |= vxe.isVoxelThere (myTrans.position + Vector3.up * 0.5f * vxe.voxel_size + Vector3.left * 0.2f * vxe.voxel_size);
            //stuckInVoxel |= vxe.isVoxelThere (myTrans.position + Vector3.up * 0.5f * vxe.voxel_size + Vector3.forward * 0.2f * vxe.voxel_size);
            //stuckInVoxel |= vxe.isVoxelThere (myTrans.position + Vector3.up * 0.5f * vxe.voxel_size + Vector3.back * 0.2f * vxe.voxel_size);

            if (stuckInVoxel)
            {
                myTrans.position += Vector3.up * vxe.voxel_size;
            }
            else if (!voxelBelow)
            {
                myTrans.position -= Vector3.up * vxe.voxel_size;
            }
        }
    }
Example #3
0
    bool checkForVoxelsInCollider()
    {
        float   step   = vxe.voxel_size * 0.5f;
        float   eps    = vxe.voxel_size * 0.1f;
        Vector3 center = mycollider.bounds.center;
        Vector3 max    = center + mycollider.bounds.extents + Vector3.one * eps;
        Vector3 min    = center - mycollider.bounds.extents - Vector3.one * eps;


        for (float i = min.x; i <= max.x; i += step)
        {
            for (float j = min.y; j <= max.y; j += step)
            {
                for (float k = min.z; k <= max.z; k += step)
                {
                    Vector3 vc = new Vector3(i, j, k);
                    if (vxe.isVoxelThere(vc))
                    {
                        vxe.grid.unSetVoxel(vxe.getVoxelCoordsFromPt(vc));
                        return(true);
                    }
                }
            }
        }

        return(false);
    }
Example #4
0
    /// <summary>
    /// Checks for voxels in collider dir.
    /// </summary>
    /// <returns><c>true</c>, if for voxels in collider dir was checked, <c>false</c> otherwise.</returns>
    /// <param name="pushdir">Pushdir.</param>
    bool checkForVoxelsInColliderDir(ref Vector3 pushdir)
    {
        Vector3 center = mycollider.bounds.center;
        Vector3 max    = center + mycollider.bounds.extents;
        Vector3 min    = center - mycollider.bounds.extents;

        for (float i = min.x; i <= max.x; i += vxe.voxel_size)
        {
            for (float j = min.y; j <= max.y; j += vxe.voxel_size)
            {
                for (float k = min.z; k <= max.z; k += vxe.voxel_size)
                {
                    if (vxe.isVoxelThere(new Vector3(i, j, k)))
                    {
                        Vector3 dir = Vector3.zero;

                        if (i < center.x)
                        {
                            pushdir += Vector3.right;
                        }
                        else
                        {
                            pushdir += Vector3.left;
                        }

                        if (k < center.z)
                        {
                            pushdir += Vector3.forward;
                        }
                        else
                        {
                            pushdir += Vector3.back;
                        }

                        if (up_credits > 0)
                        {
                            pushdir += Vector3.up;
                            up_credits--;
                        }
                        return(true);
                    }
                }
            }
        }

        return(false);
    }