void CToolSetTileHeight::OnEvent(ip::CInputDevice::SEvent & event)
{	
	COperator * pOperator = CXFile::GetInstance()->GetOperator();
	CTerrainMesh * pTerrainMesh = CXFile::GetInstance()->GetTerrainMesh();

	switch ( event.eType )
	{
	case ip::EIET_KB_KEYUP:
		{
			// shrink brush
			if ( event.dwData == DIK_MINUS )
			{
				if ( pOperator->GetBrushSize() > 1 ) pOperator->DecBrushSize();
			}
			
			// amplify brush
			if ( event.dwData == DIK_EQUALS )
			{
				pOperator->IncBrushSize();
			}
			
			//switch(event.dwData)
			//{
			//case DIK_3:
			//	{
			//		pOperator->SetHeightType((COperator::ESET_HEIGHT_TYPE)((pOperator->GetHeightType() + 1) % pOperator->GetHeightTypeCount()));
			//	}
			//break;

			//case DIK_4:
			//	{
			//		pOperator->SetAxisType((COperator::EAXIS_TYPE)((pOperator->GetAxisType() + 1) % pOperator->GetAxisTypeCount()));
			//	}
			//break;

			//case DIK_5:
			//	{
			//		pOperator->SetWayType((COperator::ESET_WAY_TYPE)((pOperator->GetWayType() + 1) % pOperator->GetWayTypeCount()));
			//	}
			//break;
			//}
		}
	break;
	
	case ip::EIET_MS_BTNUP :
	case ip::EIET_MS_MOVE :	
		{
			if ( ip::CInputDevice::GetInstance()->GetButtonState(MK_LBUTTON) )
			{
				DWORD dwTextureHandleHot = pOperator->GetTextureHandleHot();
				DWORD dwLayerHot = pOperator->GetLayerHot();
	
				CCmdSetVertexHeight * pCmd = new CCmdSetVertexHeight;
				
				// set grids via brush size
				if ( pOperator->GetGridIndexHot() != INVALID )
				{
					DWORD dwCnt = 4*pOperator->GetBrushSize()*pOperator->GetBrushSize();
					
					DWORD dwGridIndex = pOperator->GetGridIndexHot() - pOperator->GetBrushSize() - pOperator->GetBrushSize() * pTerrainMesh->GetWidth();
	
					for ( DWORD j = 0; j < dwCnt; j++)
					{
						if ( j )
						{
							if ( !(j % (2 * pOperator->GetBrushSize())) ) 
								dwGridIndex += pTerrainMesh->GetWidth() - 2*pOperator->GetBrushSize() + 1;
							else
								++dwGridIndex;
						}

						// check for valid grid
						if ( dwGridIndex < 0 || dwGridIndex > pTerrainMesh->GetDepth() * pTerrainMesh->GetWidth() )
						{
							continue;
						}

						CTerrainMesh::SGrid & grid = pTerrainMesh->GetGrid(dwGridIndex);

						for ( int i = 0; i < 4; i++)
						{
							pCmd->AddVertex(grid.dwVertexIndex[i]);
						}
					}
				}

				CCmdMgr::GetInstance()->Do(pCmd);
			}
		}
		break;
	}
}