Example #1
0
void CBaseInput::RemoveDeviceHoldSymbols( EInputDeviceType deviceType, uint8 deviceIndex )
{
	if (!m_holdSymbols.empty())
	{
		TInputSymbols::iterator begin = m_holdSymbols.begin();
		for (TInputSymbols::iterator it = begin; it != m_holdSymbols.end(); )
		{
			SInputSymbol* symbol = *it;
			if (symbol->deviceType == deviceType && symbol->deviceIndex == deviceIndex)
			{
				SInputEvent releaseEvent;
				releaseEvent.deviceType = deviceType;
				releaseEvent.deviceIndex = deviceIndex;
				releaseEvent.state = eIS_Released;
				releaseEvent.keyName = symbol->name;
				releaseEvent.keyId = symbol->keyId;
				releaseEvent.pSymbol = symbol;

				if (g_pInputCVars->i_debug)
				{
					gEnv->pLog->Log("InputDebug: RemoveDeviceHoldSymbols Device %d %d, Symbol %s %d", deviceType, deviceIndex, releaseEvent.keyName.c_str(), releaseEvent.keyId );
				}

				SendEventToListeners(releaseEvent);

				it = m_holdSymbols.erase(it);
			}
			else
			{
				++it;
			}
		}
	}
}
void CBaseInput::PostUnicodeEvent( const SUnicodeEvent &event, bool bForce )
{
	FUNCTION_PROFILER( GetISystem(),PROFILE_INPUT );
	assert(event.inputChar != 0 && Unicode::Validate(event.inputChar) && "Attempt to post invalid unicode event");

	if(!bForce && !m_enableEventPosting) 
	{
		return;
	}

	if (g_pInputCVars->i_debug)
	{
		char utf8_buf[5];
		Unicode::Convert(utf8_buf, event.inputChar);
		gEnv->pLog->Log("InputDebug: Unicode input codepoint (%u), %s", event.inputChar, utf8_buf);
	}

	if (!SendEventToListeners(event))
		return;
}
Example #3
0
void CBaseInput::PostInputEvent( const SInputEvent &event, bool bForce )
{
	FUNCTION_PROFILER( GetISystem(),PROFILE_INPUT );
	//CryAutoCriticalSection postInputLock(m_postInputEventMutex);

	if(!bForce && !m_enableEventPosting) 
	{
		return;
	}

	if(event.keyId == eKI_Unknown && event.state != eIS_UI)
	{
		return;
	}

	if (g_pInputCVars->i_debug)
	{
		// log out key press and release events
		if (event.state == eIS_Pressed || event.state == eIS_Released)
			gEnv->pLog->Log("InputDebug: '%s' - %s", event.keyName.c_str(), event.state == eIS_Pressed?"pressed":"released");
		else if ((event.state == eIS_Changed) && (g_pInputCVars->i_debug == 2))
			gEnv->pLog->Log("InputDebug (Changed): '%s' - %.4f", event.keyName.c_str(), event.value);
	}

	if (!SendEventToListeners(event))
		return;
	AddEventToHoldSymbols(event);	

	if (event.keyId == eKI_SYS_DisconnectDevice)
	{
		// Zero everything out
		RemoveDeviceHoldSymbols(event.deviceType, event.deviceIndex);
		ClearKeyState();
		ClearAnalogKeyState();
	}
}