void NodeGraphDisplay::clearSelected()
{
	for(auto c : selectedControls)
		c->selected = false;
	selectedControls.clear();

	setActiveNode(nullptr);
}
Beispiel #2
0
void StackGraph::updateGraph(StackNode* node) {
    resetView();

    if(activeNode != 0) delete activeNode;
    activeNode = 0;

    setActiveNode(node);
}
void NodeGraphDisplay::selectNode(NodeControl *nc, bool set_active)
{
	if(!nc->selected)
	{
		nc->selected = true;
		selectedControls.push_back(nc);
	}

	if(set_active)
		setActiveNode(nc);
}
Beispiel #4
0
void StackGraph::updateTransition(float dt) {

    in_transition -= dt;

    alpha = std::max(0.0f, alpha - dt);

    // animate transition_bar

    if(in_transition<=0.0) {
        setActiveNode(selectedNode);
        in_transition  = 0.0;

        resetView();
    }
}
void NodeGraphDisplay::deselectNode(NodeControl *nc)
{
	if(nc->selected)
	{
		for(unsigned int i = 0; i < selectedControls.size(); i++)
		{
			if(selectedControls[i] == nc)
			{
				selectedControls.erase(selectedControls.begin() + i);
				break;
			}
		}
		nc->selected = false;

		if(propDisp && propDisp->getActiveNode() == nc->getNode())
			setActiveNode(chooseActiveNode());
	}
}
void CParticleEditor::loadWorkspace(const std::string &fullPath)
{
	// Add to the path
	std::auto_ptr<CParticleWorkspace> newPW(new CParticleWorkspace);
	newPW->init(fullPath);
	
	// save empty workspace
	try
	{
		newPW->load();
	}
	catch(NLMISC::EStream &e)
	{
		nlerror(e.what());
		return;
	}	
	
	// try to load each ps
	CWorkspaceNode *firstLoadedNode = NULL;
	TPWNodeItr itr = newPW->getNodeList().begin();
	while(itr != newPW->getNodeList().end())
	{
		CWorkspaceNode *node = (*itr);
		try
		{
			node->loadPS();
		}
		catch(NLMISC::EStream &e)
		{
			nlwarning(e.what());
		}
		if (node->isLoaded() && !firstLoadedNode)
			firstLoadedNode = node;
		itr++;
	}
	closeWorkspace();
	_PW = newPW.release();
	setActiveNode(firstLoadedNode);
}
void NodeGraphDisplay::onMouseUp(APoint m_pos, MouseButton b)
{
	if(pointInside(m_pos))
	{
		if(draggedNode)// && valid(b & NODEGRAPH_CONNECT_NODES_BTN))
		{
			std::cout << "NODE CONNECTING WAS INTERRUPTED!\n";	//Except not really...

			draggedNode = nullptr;
			draggedConnector = 0;

			removeConnection(connectionIndex);
			connectionIndex = -1;
		}
		else if(selectionRect.space != TSpace::INVALID && valid(b & NODEGRAPH_SELECT_NODES_BTN))
		{
			/*
			if(selectedControls.size() > 0)
			{
				//Choose which selected control is in focus
				//selectedControls[selectedControls.size() - 1]->setFocus(true);
				if(propDisp)
					propDisp->setActiveNode(chooseActiveNode());
			}
			else if(propDisp)
			{
				//No selected controls
				propDisp->setActiveNode(nullptr);
			}
			*/
		
			setActiveNode(chooseActiveNode());

			selectionRect.space = TSpace::INVALID;
		}
	}
}
void CParticleEditor::closeWorkspace()
{
	setActiveNode(NULL);
	delete _PW;
	_PW = NULL;
}
Beispiel #9
0
void StackGraph::logic(float t, float dt) {

    if(paused) return;

    if(activeNode==0) return;

    StackNode* clickedNode = mouseOverNode = 0;

    StackNode* nodeAtMouse = activeNode->mouseOverChildren(mousepos);

    if(nodeAtMouse != 0 && !nodeAtMouse->isLoading()) {
        mouseOverNode = nodeAtMouse;
        if(mouseclicked) clickedNode = nodeAtMouse;
    }

    if(clickedNode != 0) {

        selectNode(clickedNode);

    } else if(mouseclicked) {

        vec2f barclick = mousepos - corner;

        //select parent node
        if(section_bounds.contains(barclick)) {
            StackNode* parent = activeNode->getParent();

            if(parent != 0) {
                setActiveNode(parent);
                resetView();
            }
        }
    }

    if(in_transition>0.0) {
        updateTransition(dt);
    }
    else if(alpha < 1.0) {
        alpha = std::min(1.0f, alpha + dt);
    }

    if(last_update > gStackGraphFetchDelay) {
        last_update = 0.0;
//        activeNode->fetchBets();
    }

    last_update += dt;

    //update the scale of the graph
    updateScale(dt);

    //update active node bets
    activeNode->updateBets(dt);

    //time
    char datestr[256];
    long currtime = time(0);
    struct tm* timeinfo = localtime ( &currtime );
    strftime(datestr, 256, "%d/%m/%Y %X", timeinfo);

    displaydate = datestr;

    mouseclicked = false;
}