public void Update() { // Must set message before returning. mHasPosition = false; mResultCount = 0; mYOffset += QEUtil.GetYFactor(); Vector3 trash; QEUtil.SearchResult result = QEUtil.HandleStandardPolySearch(mHelper, out trash, out mPosition, out mMessage); mHasPosition = (result & QEUtil.SearchResult.HitNavmesh) != 0; if (!mHasPosition) { return; } Vector3 pos = mPosition.point; for (int i = 0; i < mSearchPoly.Length; i++) { mSearchPoly[i] = pos + mBasePoly[i]; mSearchPoly[i].y += mYOffset; } 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.polyRef, mSearchPoly , 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; 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() { 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(); if (mPolyRefs.HandleResize()) { int size = mPolyRefs.MaxElementCount; mParentRefs = new uint[size]; mCentroids = new Vector3[size]; } NavStatus status = mHelper.query.GetPolysLocal(mPosition, mSearchRadius , mHelper.filter , mPolyRefs.buffer, mParentRefs, out mResultCount); mMessage = "GetPolysLocal: " + 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() { // Must set message before returning. mHasPosition = false; mHasNearestPoint = false; if (Input.GetKeyDown(StdButtons.SelectA)) { Vector3 trash; QEUtil.SearchResult result = QEUtil.HandleStandardPolySearch(mHelper, out trash, out mNearest, out mMessage); mHasPosition = (result & QEUtil.SearchResult.HitGeometry) != 0; if ((result & QEUtil.SearchResult.HitNavmesh) == 0) { // Could not find polygon. mPolyRef[0] = 0; } else if (mNearest.polyRef == mPolyRef[0]) { // Toggle off the selection. mPolyRef[0] = 0; } else { // New good selection. mPolyRef[0] = mNearest.polyRef; } } if (mPolyRef[0] == 0) { mMessage = "No polygon selected."; return; } RaycastHit hit; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (!Physics.Raycast(ray, out hit, 100)) { mMessage = "Outside source geometry."; return; } mPosition.point = hit.point; mHasPosition = true; mYOffset += QEUtil.GetYFactor(); mPosition.point.y += mYOffset; NavStatus status = mHelper.query.GetNearestPointF( mNearest.polyRef, mPosition.point, out mNearest.point); mMessage = "GetNearestPointF: " + status.ToString(); if (NavUtil.Failed(status)) { return; } mHasNearestPoint = true; }