bool Ship::addImpulse(Brick* brick, vec3 pos, vec3 impulse)
{
	if (brick == m_base)
		return false;

	Transform t = invTransform(m_body->getTransform());
	vec3 _pos = transformVec3(pos, t);
	vec3 _impulse = rotate(impulse, t.q);

	m_minAxis = abs(_impulse.x) > abs(_impulse.z) ? X : Z;

	// clear flow network
	clearFlowNetwork(brick, _impulse, _pos, g_tick++);

	//bool destroy = false;

	bool destroy = checkAxis(brick, impulse, pos, X);

	if (!destroy)
		destroy = checkAxis(brick, impulse, pos, Z);

	//if (!destroy)
	//	destroy = checkVertical(brick, abs(_impulse.y), impulse, pos);

	//if (destroy)
	//{
	//	m_body->applyImpulse(-impulse, pos);
	//}

	return destroy;
}
Exemple #2
0
bool pointInCuboid(GLfloat *p, GLfloat *ecke1, GLfloat *ecke2)
{
    for(int i = 0; i < 3; i++)
    {
        if(checkAxis(p[i], ecke1[i], ecke2[i]) == false)
            return false;
    }
    return true;
}
bool DistArrayProtocol::one_to_one(int axis) const
{
  checkAxis(axis);
  return dim_data[axis].one_to_one;
}
bool DistArrayProtocol::periodic(int axis) const
{
  checkAxis(axis);
  return dim_data[axis].periodic;
}
int DistArrayProtocol::block_size(int axis) const
{
  checkAxis(axis);
  return dim_data[axis].block_size;
}
PaddingType DistArrayProtocol::padding(int axis) const
{
  checkAxis(axis);
  return dim_data[axis].padding;
}
IndicesType DistArrayProtocol::indices(int axis) const
{
  checkAxis(axis);
  return dim_data[axis].indices;
}
int DistArrayProtocol::stop(int axis) const
{
  checkAxis(axis);
  return dim_data[axis].stop;
}
int DistArrayProtocol::proc_grid_rank(int axis) const
{
  checkAxis(axis);
  return dim_data[axis].proc_grid_rank;
}
Exemple #10
0
DistributionType DistArrayProtocol::dist_type(int axis) const
{
  checkAxis(axis);
  return dim_data[axis].dist_type;
}