Esempio n. 1
0
	bool DebugGuiWindowDebugProp::processInputEvent( const InputEvent& inputEvent, const DebugGuiInputState& state )
	{
		if ( ( inputEvent.eventType == InputEventType_Mouse_ButtonDown || inputEvent.eventType == InputEventType_Mouse_ButtonUp ) && inputEvent.data.mouseButton.button == MouseButton_Left )
		{
			TreeNode* pNearestNode = findNearestNode( state.mousePosition, true, nullptr );
			if ( inputEvent.eventType == InputEventType_Mouse_ButtonDown )
			{
				m_pInputNode = pNearestNode;
			}
			else if ( inputEvent.eventType == InputEventType_Mouse_ButtonUp && m_pInputNode == pNearestNode )
			{
				m_pSelectedNode = m_pInputNode;
			}
		}
		else if ( inputEvent.eventType == InputEventType_Keyboard_Down )
		{			
			m_inputTimer = 0.0;

			switch ( inputEvent.data.keybaordKey.key )
			{
			case KeyboardKey_Up:
				m_inputAction = InputAction_MoveUp;
				break;

			case KeyboardKey_Down:
				m_inputAction = InputAction_MoveDown;
				break;

			case KeyboardKey_Left:
				if ( m_pSelectedNode != nullptr )
				{
					m_inputAction = InputAction_Decrese;
				}
				break;

			case KeyboardKey_Right:
				if ( m_pSelectedNode != nullptr )
				{
					m_inputAction = InputAction_Increse;
				}
				break;

			default:
				break;
			}
		}
		else if ( inputEvent.eventType == InputEventType_Keyboard_Up )
		{
			m_inputAction	= InputAction_Invalid;
			m_inputTimer	= 0.0;
			m_holdTimer		= 0.0;
		}

		return DebugGuiWindow::processInputEvent( inputEvent, state );
	}
Esempio n. 2
0
void Bot::updateNearestNode() {
  float minDist = slm::distance(position, nearestNode->position);
  
  if(minDist > 2*map->distance) {
    findNearestNode();
    return;
  }
  AIMap_Node* newNearest = nearestNode;
  for(int i = 0; i < nearestNode->neighbours.size(); i++) {
    float tmpDist = slm::distance(position, nearestNode->neighbours[i]->position);
    if(tmpDist < minDist) {
      minDist = tmpDist;
      newNearest = nearestNode->neighbours[i];
    }
  }
  nearestNode = newNearest;
}
Esempio n. 3
0
	void DebugGuiWindowDebugProp::update( double elapsedTime )
	{
		if ( m_inputAction != InputAction_Invalid )
		{
			m_inputTimer	-= elapsedTime;
			m_holdTimer		+= elapsedTime;

			if ( m_inputTimer < 0.0 )
			{
				switch ( m_inputAction )
				{
				case InputAction_MoveUp:
				case InputAction_MoveDown:
					{
						const bool up = ( m_inputAction == InputAction_MoveUp );

						if ( m_pSelectedNode != nullptr )
						{
							m_pSelectedNode = findNearestNode( m_pSelectedNode->nodeLayout.getRectangle().getXY(), up, m_pSelectedNode );
						}

						if ( m_pSelectedNode == nullptr )
						{
							const float multiplier = ( up ? 1.0f : -1.0f );
							m_pSelectedNode = findNearestNode( vector::create( 0.0f, 100000.0f * multiplier ), up, nullptr );
						}
					}
					break;

				case InputAction_Decrese:
					{
						if ( m_pSelectedNode == nullptr )
						{
							break;
						}
						else if ( m_pSelectedNode->type == TreeNodeType_Folder )
						{
							collapseFolderNode( *(TreeFolderNode*)m_pSelectedNode );
						}
						else if ( m_pSelectedNode->type == TreeNodeType_Property )
						{
							changePropNode( *(TreePropNode*)m_pSelectedNode, false );
						}
					}
					break;

				case InputAction_Increse:
					{
						if ( m_pSelectedNode == nullptr )
						{
							break;
						}
						else if ( m_pSelectedNode->type == TreeNodeType_Folder )
						{
							expandFolderNode( *(TreeFolderNode*)m_pSelectedNode );
						}
						else if ( m_pSelectedNode->type == TreeNodeType_Property )
						{
							changePropNode( *(TreePropNode*)m_pSelectedNode, true );
						}
					}
					break;

				default:
					break;
				}

				m_inputTimer = 0.35 / TIKI_MAX( 1.0, m_holdTimer );
			}
		}

		DebugGuiWindow::update( elapsedTime );
	}