コード例 #1
0
bool CSpaceRestrictorWrapper::inside				(u32 level_vertex_id, bool partially_inside, float radius) const
{
	const Fvector					&position = level_graph().vertex_position(level_vertex_id);
	float							offset = level_graph().header().cell_size()*.5f - EPS_L;
	if (partially_inside)
		return						(
			inside					(construct_position(level_graph(),level_vertex_id,position.x + offset,position.z + offset),radius) || 
			inside					(construct_position(level_graph(),level_vertex_id,position.x + offset,position.z - offset),radius) ||
			inside					(construct_position(level_graph(),level_vertex_id,position.x - offset,position.z + offset),radius) || 
			inside					(construct_position(level_graph(),level_vertex_id,position.x - offset,position.z - offset),radius) ||
			inside					(Fvector().set(position.x,position.y,position.z),radius)
		);
	else
		return						(
			inside					(construct_position(level_graph(),level_vertex_id,position.x + offset,position.z + offset),radius) && 
			inside					(construct_position(level_graph(),level_vertex_id,position.x + offset,position.z - offset),radius) && 
			inside					(construct_position(level_graph(),level_vertex_id,position.x - offset,position.z + offset),radius) && 
			inside					(construct_position(level_graph(),level_vertex_id,position.x - offset,position.z - offset),radius) &&
			inside					(Fvector().set(position.x,position.y,position.z),radius)
		);
}
コード例 #2
0
bool CSpaceRestrictionBase::inside	(u32 level_vertex_id, bool partially_inside, float radius)
{
	const Fvector					&position = ai().level_graph().vertex_position(level_vertex_id);
	float							offset = ai().level_graph().header().cell_size()*.5f - EPS_L;
	if (partially_inside)
		return						(
			CSpaceRestrictionBase_inside(this,construct_position(level_vertex_id,position.x + offset,position.z + offset),radius) || 
			CSpaceRestrictionBase_inside(this,construct_position(level_vertex_id,position.x + offset,position.z - offset),radius) ||
			CSpaceRestrictionBase_inside(this,construct_position(level_vertex_id,position.x - offset,position.z + offset),radius) || 
			CSpaceRestrictionBase_inside(this,construct_position(level_vertex_id,position.x - offset,position.z - offset),radius) ||
			CSpaceRestrictionBase_inside(this,Fvector().set(position.x,position.y,position.z),radius)
		);
	else
		return						(
			CSpaceRestrictionBase_inside(this,construct_position(level_vertex_id,position.x + offset,position.z + offset),radius) && 
			CSpaceRestrictionBase_inside(this,construct_position(level_vertex_id,position.x + offset,position.z - offset),radius) && 
			CSpaceRestrictionBase_inside(this,construct_position(level_vertex_id,position.x - offset,position.z + offset),radius) && 
			CSpaceRestrictionBase_inside(this,construct_position(level_vertex_id,position.x - offset,position.z - offset),radius) &&
			CSpaceRestrictionBase_inside(this,Fvector().set(position.x,position.y,position.z),radius)
		);
}