ソースを参照

Missed some changes to Form.cpp in previous commit.

Adam Blake 13 年 前
コミット
b341d853d3
1 ファイル変更34 行追加1 行削除
  1. 34 1
      gameplay/src/Form.cpp

+ 34 - 1
gameplay/src/Form.cpp

@@ -586,6 +586,21 @@ const char* Form::getType() const
     return "form";
     return "form";
 }
 }
 
 
+void Form::updateInternal(float elapsedTime)
+{
+    size_t size = __forms.size();
+    for (size_t i = 0; i < size; ++i)
+    {
+        Form* form = __forms[i];
+        GP_ASSERT(form);
+
+        if (form->isEnabled() && form->isVisible())
+        {
+            form->update(elapsedTime);
+        }
+    }
+}
+
 bool Form::touchEventInternal(Touch::TouchEvent evt, int x, int y, unsigned int contactIndex)
 bool Form::touchEventInternal(Touch::TouchEvent evt, int x, int y, unsigned int contactIndex)
 {
 {
     // Check for a collision with each Form in __forms.
     // Check for a collision with each Form in __forms.
@@ -643,7 +658,7 @@ bool Form::keyEventInternal(Keyboard::KeyEvent evt, int key)
     {
     {
         Form* form = __forms[i];
         Form* form = __forms[i];
         GP_ASSERT(form);
         GP_ASSERT(form);
-        if (form->isEnabled() && form->isVisible())
+        if (form->isEnabled() && form->isVisible() && form->getState() == Control::FOCUS)
         {
         {
             if (form->keyEvent(evt, key))
             if (form->keyEvent(evt, key))
                 return true;
                 return true;
@@ -706,6 +721,24 @@ bool Form::mouseEventInternal(Mouse::MouseEvent evt, int x, int y, int wheelDelt
     return eventConsumed;
     return eventConsumed;
 }
 }
 
 
+bool Form::gamepadEventInternal(Gamepad::GamepadEvent evt, Gamepad* gamepad, unsigned int analogIndex)
+{
+    bool eventConsumed = false;
+
+    for (size_t i = 0; i < __forms.size(); ++i)
+    {
+        Form* form = __forms[i];
+        GP_ASSERT(form);
+
+        if (form->isEnabled() && form->isVisible())
+        {
+            eventConsumed |= form->gamepadEvent(evt, gamepad, analogIndex);
+        }
+    }
+
+    return eventConsumed;
+}
+
 bool Form::projectPoint(int x, int y, Vector3* point)
 bool Form::projectPoint(int x, int y, Vector3* point)
 {
 {
     Scene* scene = _node->getScene();
     Scene* scene = _node->getScene();