Valid object source wins, do not also check surface.
Preserve ValidateDistances() range check for surface-liquid hits.
Do not allow water merely below grass/terrain.
181 {
182 surfaceType = string.Empty;
183
185 if (isValidInteract)
186 return false;
187
190 return false;
191
193 SurfaceDetectionResult surfaceResult = new SurfaceDetectionResult();
195 return false;
196
197 if (!surfaceResult)
198 return false;
199
201 if (!surfaceInfo)
202 return false;
203
205 if (surfaceType ==
string.
Empty)
206 return false;
207
208 float surfaceHeight = surfaceResult.
height;
209 float heightDiffSurface = Math.AbsFloat(hitPosition[1] - surfaceHeight);
210 float playerToSurfaceHeight = Math.AbsFloat(playerPos[1] - surfaceHeight);
211
214 return false;
215
216 vector liquidSurfacePos = hitPosition;
217 liquidSurfacePos[1] = surfaceHeight;
218
221 return false;
222
223 vector surfacePos = liquidSurfacePos;
225
227 return false;
228
229 if (targetObj)
230 {
231 if (heightDiffSurface > 0.25)
232 return false;
233
235 return false;
236 }
237 else
238 {
240 return false;
241 }
242
244 return false;
245
247 return true;
248 }
bool HasClearPathToLiquidSurface(PlayerBase player, vector surfacePos)
bool IsCursorActuallyOnLiquidSurface(vector hitPosition, vector liquidSurfacePos)
bool IsNearlyZero(vector value)
ref SurfaceDetectionParameters m_SurfaceDetectionParams
float m_MaxActionDistance
static const float LIQUID_SURFACE_RAYCAST_OFFSET
SurfaceInfo surface
Returned SurfaceInfo, plain pointer.
float height
Height position.
proto int GetLiquidType()
See 'LiquidTypes' in 'constants.c'.
proto string GetSurfaceType()