コード例 #1
0
ファイル: diffusion.cpp プロジェクト: BrandonTheHamm/osgPPU
    bool handle(const osgGA::GUIEventAdapter& ea,osgGA::GUIActionAdapter&)
    {
        if (!unit || !dt || !intensity) return false;

        float i,t;
        intensity->get(i);
        dt->get(t);

        switch(ea.getEventType())
        {
            case(osgGA::GUIEventAdapter::KEYDOWN):
            case(osgGA::GUIEventAdapter::KEYUP):
            {
                // iteration
                if (ea.getKey() == osgGA::GUIEventAdapter::KEY_F2)
                {
                    unit->setNumIterations(unit->getNumIterations()+1);
                }else if (ea.getKey() == osgGA::GUIEventAdapter::KEY_F1)
                {
                    unit->setNumIterations(unit->getNumIterations()-1);
                }

                // intenisty
                if (ea.getKey() == osgGA::GUIEventAdapter::KEY_F3)
                {
                    intensity->set(i-0.1f);
                }else if (ea.getKey() == osgGA::GUIEventAdapter::KEY_F4)
                {
                    intensity->set(i+0.1f);
                }

                // dt
                if (ea.getKey() == osgGA::GUIEventAdapter::KEY_F5)
                {
                    dt->set(t-0.001f);
                }else if (ea.getKey() == osgGA::GUIEventAdapter::KEY_F6)
                {
                    dt->set(t+0.001f);
                }
                break;
            }
            default:
                break;
        }
        return false;
    }