//----------------------------------------------------------------------------
void BoxSurface::UpdateSurface ()
{
	int permute[3];
	TriMesh* mesh;
	VertexFormat* vformat;
	VertexBuffer* vbuffer;

	// u faces
	permute[0] = 1;
	permute[1] = 2;
	permute[2] = 0;

	// u = 0
	mesh = StaticCast<TriMesh>(GetChild(0));
	vformat = mesh->GetVertexFormat();
	vbuffer = mesh->GetVertexBuffer();
	UpdateFace(mNumWSamples, mNumVSamples, vformat, vbuffer, false, 0.0f,
		permute);
	mesh->UpdateModelSpace(Renderable::GU_NORMALS);
	Renderer::UpdateAll(vbuffer);

	// u = 1
	mesh = StaticCast<TriMesh>(GetChild(1));
	vformat = mesh->GetVertexFormat();
	vbuffer = mesh->GetVertexBuffer();
	UpdateFace(mNumWSamples, mNumVSamples, vformat, vbuffer, true, 1.0f,
		permute);
	mesh->UpdateModelSpace(Renderable::GU_NORMALS);
	Renderer::UpdateAll(vbuffer);

	// v faces
	permute[0] = 0;
	permute[1] = 2;
	permute[2] = 1;

	// v = 0
	mesh = StaticCast<TriMesh>(GetChild(2));
	vformat = mesh->GetVertexFormat();
	vbuffer = mesh->GetVertexBuffer();
	UpdateFace(mNumWSamples, mNumUSamples, vformat, vbuffer, true, 0.0f,
		permute);
	mesh->UpdateModelSpace(Renderable::GU_NORMALS);
	Renderer::UpdateAll(vbuffer);

	// v = 1
	mesh = StaticCast<TriMesh>(GetChild(3));
	vformat = mesh->GetVertexFormat();
	vbuffer = mesh->GetVertexBuffer();
	UpdateFace(mNumWSamples, mNumUSamples, vformat, vbuffer, false, 1.0f,
		permute);
	mesh->UpdateModelSpace(Renderable::GU_NORMALS);
	Renderer::UpdateAll(vbuffer);

	// w faces
	permute[0] = 0;
	permute[1] = 1;
	permute[2] = 2;

	// w = 0
	mesh = StaticCast<TriMesh>(GetChild(4));
	vformat = mesh->GetVertexFormat();
	vbuffer = mesh->GetVertexBuffer();
	UpdateFace(mNumVSamples, mNumUSamples, vformat, vbuffer, false, 0.0f,
		permute);
	mesh->UpdateModelSpace(Renderable::GU_NORMALS);
	Renderer::UpdateAll(vbuffer);

	// w = 1
	mesh = StaticCast<TriMesh>(GetChild(5));
	vformat = mesh->GetVertexFormat();
	vbuffer = mesh->GetVertexBuffer();
	UpdateFace(mNumVSamples, mNumUSamples, vformat, vbuffer, true, 1.0f,
		permute);
	mesh->UpdateModelSpace(Renderable::GU_NORMALS);
	Renderer::UpdateAll(vbuffer);
}