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; } }
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); }
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 ); } } } }