Пример #1
0
int main(void)
{
	auto renderWindow = CreateRenderWindow();
	auto inputComponent = CreateInputHandler(renderWindow);

	auto gameBoard = CreateGameBoard();
	const auto numTiles = gameBoard->GetNumTiles();

	auto renderComponent = CreateGameRenderer(*gameBoard, renderWindow);
	auto boardController = std::make_unique<BoardController>(std::move(gameBoard));
	auto playerController = CreatePlayerController(NUM_PLAYERS);

	{
		auto chooser = std::make_shared<TileChooser>(NUM_PLAYERS, 10, *renderComponent);
		inputComponent->AddObserver(chooser);
		chooser->ChooseTiles();
		//chooser->AutoChooseTiles();
		chooser->AssignTilesToPlayers(*playerController);
	}

	{
		auto manager = std::make_shared<GameManager>(std::move(renderComponent), std::move(boardController), playerController);
		inputComponent->AddObserver(manager);
		playerController->ObserveTimers(manager);

		manager->StartGame();
	}

	glfwDestroyWindow(renderWindow);
	glfwTerminate();
}
CRTTransferSession::CRTTransferSession()
: RTJSBuffer()
, RTTransfer()
, m_transferSessId("")
{
    AddObserver(this);
}
Пример #3
0
void iARenderer::setAreaPicker()
{
	auto areaPicker = vtkSmartPointer<vtkAreaPicker>::New();
	interactor->SetPicker(areaPicker);
	auto style = vtkSmartPointer<MouseInteractorStyle>::New();
	interactor->SetInteractorStyle(style);

	auto keyPressCallback = vtkSmartPointer<vtkCallbackCommand>::New();
	keyPressCallback->SetCallback(KeyPressCallbackFunction);
	keyPressCallback->SetClientData(this);
	interactor->AddObserver(vtkCommand::KeyReleaseEvent, keyPressCallback, 1.0);

	auto pickCallback = vtkSmartPointer<vtkCallbackCommand>::New();
	pickCallback->SetCallback(PickCallbackFunction);
	pickCallback->SetClientData(this);
	areaPicker->AddObserver(vtkCommand::EndPickEvent, pickCallback, 1.0);

	finalSelection = vtkSmartPointer<vtkUnstructuredGrid>::New();
	selectedMapper = vtkSmartPointer<vtkDataSetMapper>::New();
	selectedMapper->SetScalarModeToUseCellData();
	selectedMapper->SetInputData(finalSelection);
	selectedActor = vtkSmartPointer<vtkActor>::New();
	QColor c(255, 0, 0);
	selectedActor->SetMapper(selectedMapper);
	selectedActor->GetProperty()->SetColor(c.redF(), c.greenF(), c.blueF());
	selectedActor->GetProperty()->SetRepresentationToWireframe();
	selectedActor->GetProperty()->EdgeVisibilityOn();
	selectedActor->GetProperty()->SetEdgeColor(c.redF(), c.greenF(), c.blueF());
	selectedActor->GetProperty()->SetLineWidth(3);
}
CRTConnection::CRTConnection(void)
: m_pBuffer(NULL)
, m_nBufLen(0)
, m_nBufOffset(0)
{
	m_nBufLen = kRequestBufferSizeInBytes;
	m_pBuffer = new char[m_nBufLen];
    AddObserver(this);
}
Пример #5
0
int main(){
    auto p = new design::Observer();
    auto pt = new design::Target();
    pt->AddObserver(p);
    pt->ChangeState();

    delete p , pt;
    return 1;
}
Пример #6
0
void
pcl::visualization::PCLVisualizerInteractorStyle::Initialize ()
{
  modifier_ = pcl::visualization::INTERACTOR_KB_MOD_ALT;
  // Set windows size (width, height) to unknown (-1)
  win_height_ = win_width_ = -1;
  win_pos_x_ = win_pos_y_ = 0;
  max_win_height_ = max_win_width_ = -1;

  // Grid is disabled by default
  grid_enabled_ = false;
  grid_actor_ = vtkSmartPointer<vtkLegendScaleActor>::New ();

  // LUT is disabled by default
  lut_enabled_ = false;
  lut_actor_ = vtkSmartPointer<vtkScalarBarActor>::New ();
  lut_actor_->SetTitle ("");
  lut_actor_->SetOrientationToHorizontal ();
  lut_actor_->SetPosition (0.05, 0.01);
  lut_actor_->SetWidth (0.9);
  lut_actor_->SetHeight (0.1);
  lut_actor_->SetNumberOfLabels (lut_actor_->GetNumberOfLabels () * 2);
  vtkSmartPointer<vtkTextProperty> prop = lut_actor_->GetLabelTextProperty ();
  prop->SetFontSize (10);
  lut_actor_->SetLabelTextProperty (prop);
  lut_actor_->SetTitleTextProperty (prop);

  // Create the image filter and PNG writer objects
  wif_ = vtkSmartPointer<vtkWindowToImageFilter>::New ();
  snapshot_writer_ = vtkSmartPointer<vtkPNGWriter>::New ();
  snapshot_writer_->SetInputConnection (wif_->GetOutputPort ());

  init_ = true;

  stereo_anaglyph_mask_default_ = true;

  // Start in orient mode
  Superclass::CurrentMode = ORIENT_MODE;

  // Add our own mouse callback before any user callback. Used for accurate point picking.
  mouse_callback_ = vtkSmartPointer<pcl::visualization::PointPickingCallback>::New ();
  AddObserver (vtkCommand::LeftButtonPressEvent, mouse_callback_);
  AddObserver (vtkCommand::LeftButtonReleaseEvent, mouse_callback_);
}
Пример #7
0
NS_IMETHODIMP
nsHTTPIndex::AddObserver(nsIRDFObserver *aObserver)
{
	nsresult	rv = NS_ERROR_UNEXPECTED;
	if (mInner)
	{
		rv = mInner->AddObserver(aObserver);
	}
	return(rv);
}
Пример #8
0
SupplyDropBehavior::SupplyDropBehavior( Actor* actor, World* world, Vector2& destination, SoundHandler* soundHandler )
    : Behavior(actor, world), zSoundHandler(soundHandler)
{
    AddObserver(this->zSoundHandler);

    this->zMoving = true;
    this->zSupplyCrateLanded= false;

    if(!world->IsInside( destination) )
        destination = this->zWorld->GetWorldCenter();

    float yValue = world->CalcHeightAtWorldPos(destination);
    this->zDestination = Vector3(destination.x, yValue, destination.y);

    this->zVelocity = this->zDestination - this->zActor->GetPosition();
    this->zVelocity.Normalize();

    SupplyActor* sActor = dynamic_cast<SupplyActor*>(zActor);

    if( sActor )
    {
        Vector3 pos = sActor->GetPosition();

        //Check Heights
        if( sActor->IsParachuteAttached() )
        {
            if( pos.y > MAX_AIRBORN_HEIGHT )
            {
                pos.y = MAX_AIRBORN_HEIGHT;
                sActor->SetPosition(pos, false);
            }
            else if( pos.y < MAX_FALL_HEIGHT )
            {
                pos.y = MAX_FALL_HEIGHT;
                sActor->SetPosition(pos);
            }
        }
        else
        {
            if( pos.y > MAX_FALL_HEIGHT )
            {
                pos.y = MAX_FALL_HEIGHT;
                sActor->SetPosition(pos, false);
            }
            else if( pos.y < 0 )
            {
                pos.y = MAX_FALL_HEIGHT;
                sActor->SetPosition(pos);
            }
        }

    }

}
DRTTransferSession::DRTTransferSession()
: RTJSBuffer()
, RTTransfer()
, m_lastUpdateTime(0)
, m_moduleId("")
, m_transferSessId("")
, m_addr("")
, m_port(0)
, m_connectingStatus(0)
{
    AddObserver(this);
}
Пример #10
0
void
CDocument::AddWindow(
	CDocWindow *window)
{
	D_WINDOW(("CDocument::AddWindow(%s)\n", window->Name()));

	CWriteLock lock(this);
	AddObserver(window);
	if (window->IsMasterWindow())
		m_masterWindow = window;
	else
		m_windows.AddItem(window);
}
MRTTransferSession::MRTTransferSession(pms::ETransferModule module)
: RTTcp()
, RTJSBuffer()
, RTTransfer()
, m_lastUpdateTime(0)
, m_moduleId("")
, m_transferSessId("")
, m_module(module)
, m_addr("")
, m_port(0)
, m_connectingStatus(0)
{
    AddObserver(this);
}
LRTGroupSession::LRTGroupSession()
: RTJSBuffer()
, LRTGrpConnTcp()
, m_lastUpdateTime(0)
, m_moduleId("")
, m_transferSessId("")
, m_addr("")
, m_port(0)
, m_connectingStatus(0)
, m_wNewMsgId(0)
{
    AddObserver(this);
    printf("LRTGroupSession was called\n");
}
Пример #13
0
void
WorkerThread::SetWorker(const WorkerThreadFriendKey& /* aKey */,
                        WorkerPrivate* aWorkerPrivate)
{
  MOZ_ASSERT(PR_GetCurrentThread() == mThread);

  if (aWorkerPrivate) {
    {
      MutexAutoLock lock(mLock);

      MOZ_ASSERT(!mWorkerPrivate);
      MOZ_ASSERT(mAcceptingNonWorkerRunnables);

      mWorkerPrivate = aWorkerPrivate;
#ifdef DEBUG
      mAcceptingNonWorkerRunnables = false;
#endif
    }

    mObserver = new Observer(aWorkerPrivate);
    MOZ_ALWAYS_SUCCEEDS(AddObserver(mObserver));
  } else {
    MOZ_ALWAYS_SUCCEEDS(RemoveObserver(mObserver));
    mObserver = nullptr;

    {
      MutexAutoLock lock(mLock);

      MOZ_ASSERT(mWorkerPrivate);
      MOZ_ASSERT(!mAcceptingNonWorkerRunnables);
      MOZ_ASSERT(!mOtherThreadsDispatchingViaEventTarget,
                 "XPCOM Dispatch hapenning at the same time our thread is "
                 "being unset! This should not be possible!");

      while (mOtherThreadsDispatchingViaEventTarget) {
        mWorkerPrivateCondVar.Wait();
      }

#ifdef DEBUG
      mAcceptingNonWorkerRunnables = true;
#endif
      mWorkerPrivate = nullptr;
    }
  }
}
Пример #14
0
void QmitkAbstractDataStorageModel::SetDataStorage(mitk::DataStorage* dataStorage)
{
  if (m_DataStorage == dataStorage)
  {
    return;
  }

  if (!m_DataStorage.IsExpired())
  {
    auto dataStorage = m_DataStorage.Lock();

    // remove Listener for the data storage itself
    dataStorage->RemoveObserver(m_DataStorageDeletedTag);

    // remove listener from old data storage
    dataStorage->AddNodeEvent.RemoveListener(
      mitk::MessageDelegate1<QmitkAbstractDataStorageModel, const mitk::DataNode*>(this, &QmitkAbstractDataStorageModel::NodeAdded));
    dataStorage->RemoveNodeEvent.RemoveListener(
      mitk::MessageDelegate1<QmitkAbstractDataStorageModel, const mitk::DataNode*>(this, &QmitkAbstractDataStorageModel::NodeRemoved));
    dataStorage->ChangedNodeEvent.RemoveListener(
      mitk::MessageDelegate1<QmitkAbstractDataStorageModel, const mitk::DataNode*>(this, &QmitkAbstractDataStorageModel::NodeChanged));
  }

  m_DataStorage = dataStorage;

  if (!m_DataStorage.IsExpired())
  {
    auto dataStorage = m_DataStorage.Lock();

    // add Listener for the data storage itself
    auto command = itk::SimpleMemberCommand<QmitkAbstractDataStorageModel>::New();
    command->SetCallbackFunction(this, &QmitkAbstractDataStorageModel::SetDataStorageDeleted);
    m_DataStorageDeletedTag = dataStorage->AddObserver(itk::DeleteEvent(), command);

    // add listener for new data storage
    dataStorage->AddNodeEvent.AddListener(
      mitk::MessageDelegate1<QmitkAbstractDataStorageModel, const mitk::DataNode*>(this, &QmitkAbstractDataStorageModel::NodeAdded));
    dataStorage->RemoveNodeEvent.AddListener(
      mitk::MessageDelegate1<QmitkAbstractDataStorageModel, const mitk::DataNode*>(this, &QmitkAbstractDataStorageModel::NodeRemoved));
    dataStorage->ChangedNodeEvent.AddListener(
      mitk::MessageDelegate1<QmitkAbstractDataStorageModel, const mitk::DataNode*>(this, &QmitkAbstractDataStorageModel::NodeChanged));
  }
  // update model if the data storage has been changed
  DataStorageChanged();
}
Пример #15
0
void TextField::OnFocusGain()
{
    KeyboardCursor::GetInstance().SetHwndId(GetHwndId());
    UIManager::GetInstance().DirtyRenderList(mHwndId);

    auto mani = UIManager::GetInstance().GetTextManipulator();
    mani->AddObserver(ITextManipulatorObserver::Default, std::dynamic_pointer_cast<ITextManipulatorObserver>(mSelfPtr.lock()));
    mani->SetText(&mTextw);


    auto propertyList = IsInPropertyList();
    if (propertyList)
    {
        ListItem* listItem = (ListItem*)GetParent().get();
        propertyList->SetFocusRow(listItem->GetRowIndex());
    }

    KeyboardCursor::GetInstance().SetScissorRegion(GetScissorRegion());
}
void QmitkAbstractNodeSelectionWidget::SetDataStorage(mitk::DataStorage* dataStorage)
{
  if (m_DataStorage == dataStorage)
  {
    return;
  }

  if (!m_DataStorage.IsExpired())
  {
    auto oldStorage = m_DataStorage.Lock();

    // remove Listener for the data storage itself
    oldStorage->RemoveObserver(m_DataStorageDeletedTag);

    // remove listener from old data storage
    oldStorage->RemoveNodeEvent.RemoveListener(
      mitk::MessageDelegate1<QmitkAbstractNodeSelectionWidget, const mitk::DataNode*>(this, &QmitkAbstractNodeSelectionWidget::NodeRemovedFromStorage));
  }

  m_DataStorage = dataStorage;

  if (!m_DataStorage.IsExpired())
  {
    auto newStorage = m_DataStorage.Lock();

    // add Listener for the data storage itself
    auto command = itk::SimpleMemberCommand<QmitkAbstractNodeSelectionWidget>::New();
    command->SetCallbackFunction(this, &QmitkAbstractNodeSelectionWidget::SetDataStorageDeleted);
    m_DataStorageDeletedTag = newStorage->AddObserver(itk::DeleteEvent(), command);

    // add listener for new data storage
    newStorage->RemoveNodeEvent.AddListener(
      mitk::MessageDelegate1<QmitkAbstractNodeSelectionWidget, const mitk::DataNode*>(this, &QmitkAbstractNodeSelectionWidget::NodeRemovedFromStorage));
  }

  // update model if the data storage has been changed
  m_DataStorage = dataStorage;
  this->OnDataStorageChanged();
  this->UpdateInfo();
};
Пример #17
0
zx_status_t Dispatcher::add_observer(StateObserver* observer) {
    if (!is_waitable())
        return ZX_ERR_NOT_SUPPORTED;
    AddObserver(observer, nullptr);
    return ZX_OK;
}
Пример #18
0
  nsresult
      AddObserver (const char *p1, C *p2, bool p3)
	{
	  AddObserver (p1, p2, p3);
	}
Пример #19
0
	MultiplexingDataObserver :: MultiplexingDataObserver(IDataObserver* apObserver1, IDataObserver* apObserver2)
	{
		AddObserver(apObserver1);
		AddObserver(apObserver2);
	}
Пример #20
0
bool CDownloadQueue::SendNextUDPPacket()
{
	if ( m_filelist.empty() || !theApp->serverconnect->IsUDPSocketAvailable() || !theApp->IsConnectedED2K()) {
		return false;
	}

	// Start monitoring the server and the files list
	if ( !m_queueServers.IsActive() ) {
		AddObserver( &m_queueFiles );
		
		theApp->serverlist->AddObserver( &m_queueServers );
	}
	

 	bool packetSent = false;
 	while ( !packetSent ) {
 		// Get max files ids per packet for current server
 		int filesAllowed = GetMaxFilesPerUDPServerPacket();
 
 		if (filesAllowed < 1 || !m_udpserver || IsConnectedServer(m_udpserver)) {
 			// Select the next server to ask, must not be the connected server
 			do {
				m_udpserver = m_queueServers.GetNext();
			} while (IsConnectedServer(m_udpserver));
	
 			m_cRequestsSentToServer = 0;
 			filesAllowed = GetMaxFilesPerUDPServerPacket();
  		}
 
 		
 		// Check if we have asked all servers, in which case we are done
 		if (m_udpserver == NULL) {
 			DoStopUDPRequests();
 			
 			return false;
  		}
  
 		// Memoryfile containing the hash of every file to request
		// 28bytes allocation because 16b + 4b + 8b is the worse case scenario.
 		CMemFile hashlist( 28 );
 		
		CPartFile* file = m_queueFiles.GetNext();
		
		while ( file && filesAllowed ) {
 			uint8 status = file->GetStatus();
 			
			if ( ( status == PS_READY || status == PS_EMPTY ) && file->GetSourceCount() < thePrefs::GetMaxSourcePerFileUDP() ) {
				if (file->IsLargeFile() && !m_udpserver->SupportsLargeFilesUDP()) {
					AddDebugLogLineN(logDownloadQueue, wxT("UDP Request for sources on a large file ignored: server doesn't support it"));
				} else {
					++m_cRequestsSentToServer;
					hashlist.WriteHash( file->GetFileHash() );
					// See the notes on TCP packet
					if ( m_udpserver->GetUDPFlags() & SRV_UDPFLG_EXT_GETSOURCES2 ) {
						if (file->IsLargeFile()) {
							wxASSERT(m_udpserver->SupportsLargeFilesUDP());
							hashlist.WriteUInt32( 0 );
							hashlist.WriteUInt64( file->GetFileSize() );
						} else {
							hashlist.WriteUInt32( file->GetFileSize() );
						}
					}
					--filesAllowed;
				}
  			}
		
			// Avoid skipping a file if we can't send any more currently
			if ( filesAllowed ) {
				file = m_queueFiles.GetNext();
			}
		}
		
		// See if we have anything to send
 		if ( hashlist.GetLength() ) {
 			packetSent = SendGlobGetSourcesUDPPacket(hashlist);
		}
 		
 		// Check if we've covered every file
		if ( file == NULL ) {
 			// Reset the list of asked files so that the loop will start over
			m_queueFiles.Reset();
			
 			// Unset the server so that the next server will be used
 			m_udpserver = NULL;
  		}
  	}
	
	return true;
}