public void Update() { float offset = QEUtil.GetXZFactor(); mHelper.extents[0] += offset; mHelper.extents[1] += QEUtil.GetYFactor(); mHelper.extents[2] += offset; mHasSearchPoint = false; mFoundPoly = false; QEUtil.SearchResult result = QEUtil.HandleStandardPolySearch( mHelper, out mSearchPoint, out mNavmeshPoint, out mMessage); mFoundPoly = (result & QEUtil.SearchResult.HitNavmesh) != 0; mHasSearchPoint = mFoundPoly || ((result & QEUtil.SearchResult.HitGeometry) != 0); }
public void Update() { // Must set message before returning. mHasPosition = false; mResultCount = 0; Vector3 trash; QEUtil.SearchResult result = QEUtil.HandleStandardPolySearch(mHelper, out trash, out mPosition, out mMessage); mHasPosition = (result & QEUtil.SearchResult.HitNavmesh) != 0; if (!mHasPosition) { return; } mYOffset += QEUtil.GetYFactor(); mPosition.point.y += mYOffset; mSearchRadius += QEUtil.GetXZFactor(); mSearchRadius = Mathf.Max(0.01f, mSearchRadius); if (mPolyRefs.HandleResize()) { int size = mPolyRefs.MaxElementCount; mParentRefs = new uint[size]; mCosts = new float[size]; mCentroids = new Vector3[size]; } NavStatus status = mHelper.query.FindPolys(mPosition, mSearchRadius , mHelper.filter , mPolyRefs.buffer, mParentRefs, mCosts, out mResultCount); mMessage = "FindPolys: " + status.ToString(); if (mResultCount > 0) { NavDebug.GetCentroids(mHelper.mesh, mPolyRefs.buffer, mResultCount, mCentroids); } }
public void Update() { float offset = QEUtil.GetXZFactor(); mHelper.extents[0] += offset; mHelper.extents[1] += QEUtil.GetYFactor(); mHelper.extents[2] += offset; mPolyRefs.HandleResize(); mResultCount = 0; mHasPosition = QEUtil.hasHit; if (!mHasPosition) { mMessage = "Outside source geometry."; return; } mHasPosition = true; mPosition = QEUtil.hitPosition; for (int i = 0; i < mPolyRefs.buffer.Length; i++) { mPolyRefs.buffer[i] = 0; } NavStatus status = mHelper.query.GetPolys(mPosition , mHelper.extents, mHelper.filter , mPolyRefs.buffer, out mResultCount); for (int i = 0; i < mResultCount; i++) { if (mPolyRefs.buffer[i] == 0) { Debug.Log("Invalid poly"); } } mMessage = "GetPolys: " + status.ToString(); }
public void Update() { mHasPosition = false; mHasWallHit = false; mWallDistance = 0; mSearchRadius += QEUtil.GetXZFactor(); Vector3 trash; QEUtil.SearchResult result = QEUtil.HandleStandardPolySearch(mHelper, out trash, out mPosition, out mMessage); mHasPosition = (result & QEUtil.SearchResult.HitNavmesh) != 0; if (!mHasPosition) { return; } NavStatus status = mHelper.query.FindDistanceToWall(mPosition, mSearchRadius , mHelper.filter , out mWallDistance, out mWallHitPoint, out mWallNormal); mMessage = "FindDistanceToWall: " + status.ToString() + "."; if ((status & NavStatus.Sucess) == 0) { return; } if (mWallDistance == mSearchRadius) { mMessage += " Nearest wall is outside search radius."; } else { mHasWallHit = true; } }