Exemplo n.º 1
0
void CDoorPanel::ProcessEvent( SEntityEvent& entityEvent )
{
	switch(entityEvent.event)
	{
	case ENTITY_EVENT_RESET:
		{
			const bool bEnteringGameMode = ( entityEvent.nParam[ 0 ] == 1 );
			Reset( bEnteringGameMode );
		}
		break;
	case ENTITY_EVENT_UNHIDE:
		{
			GetGameObject()->EnableUpdateSlot( this, DOOR_PANEL_MODEL_NORMAL_SLOT );
			if (m_fVisibleDistanceSq < 0.0f)
			{
				m_bFlashVisible = true;
				SDoorPanelVisibleEvent visibleEvent( true );
				StateMachineHandleEventBehavior( visibleEvent );
			}
		}
		break;
	case ENTITY_EVENT_HIDE:
		{
			GetGameObject()->DisableUpdateSlot( this, DOOR_PANEL_MODEL_NORMAL_SLOT );
			m_bFlashVisible = false;
			SDoorPanelVisibleEvent visibleEvent( false );
			StateMachineHandleEventBehavior( visibleEvent );
		}
		break;
	case ENTITY_EVENT_LINK:
		{
			IEntityLink* pLink = (IEntityLink*)entityEvent.nParam[ 0 ];
			CRY_ASSERT(pLink != NULL);
			if (pLink && (stricmp(pLink->name, "ShareScreen") == 0))
			{
				const EntityId entityToShareTo = pLink->entityId;
				stl::push_back_unique( m_screenSharingEntities, entityToShareTo );
			}
		}
		break;
	case ENTITY_EVENT_DELINK:
		{
			IEntityLink* pLink = (IEntityLink*)entityEvent.nParam[ 0 ];
			CRY_ASSERT(pLink != NULL);
			if (pLink && (stricmp(pLink->name, "ShareScreen") == 0))
			{
				const EntityId entityToShareTo = pLink->entityId;
				stl::find_and_erase(m_screenSharingEntities, entityToShareTo);
			}
		}
		break;
	}
}
Exemplo n.º 2
0
QVariant KWidget::itemChange( GraphicsItemChange change, const QVariant & value )
{
    if(change == QGraphicsItem::ItemParentHasChanged
        || change == QGraphicsItem::ItemParentChange)
    {
        clearThemeCheckFlag();
    }
    else if(change == QGraphicsItem::ItemScenePositionHasChanged)
    {
        emit scenePosition(value.toPointF());
    }
    else if(change == QGraphicsItem::ItemVisibleHasChanged)
    {
        bool bvis = isVisible();
        visibleEvent(bvis);
        if(bvis)
        {
            showEvent();
        }
        else
        {
            hideEvent();
        }
    }
    return QGraphicsWidget::itemChange(change, value);
}
Exemplo n.º 3
0
void CDoorPanel::Update( SEntityUpdateContext& ctx, int slot )
{
	if (m_bHasDelayedStateEvent)
	{
		if (m_fDelayedStateEventTimeDelay > FLT_EPSILON)
		{
			m_fDelayedStateEventTimeDelay -= ctx.fFrameTime;
		}
		else
		{
			m_fDelayedStateEventTimeDelay = -1.0f;
			m_bHasDelayedStateEvent = false;
			const EDoorPanelBehaviorState delayedState = m_delayedState;
			m_delayedState = eDoorPanelBehaviorState_Invalid;
			SetStateById(delayedState);
		}		
	}

	// Check visible distance
	if (m_fVisibleDistanceSq > 0.0f)
	{
		const float fCurTime = ctx.fCurrTime;
		if ((fCurTime - m_fLastVisibleDistanceCheckTime) >= GetGameConstCVar(g_flashdoorpanel_distancecheckinterval))
		{
			m_fLastVisibleDistanceCheckTime = fCurTime;
			const Vec3& clientPos = CHUDUtils::GetClientPos();
			const float fDistSqFromClientToObject = clientPos.GetSquaredDistance(GetEntity()->GetWorldPos());
			const bool bVisible = fDistSqFromClientToObject <= m_fVisibleDistanceSq;
			if (bVisible != m_bFlashVisible)
			{
				m_bFlashVisible = bVisible;
				SDoorPanelVisibleEvent visibleEvent( bVisible );
				StateMachineHandleEventBehavior( visibleEvent );
			}
		}
	}
}