Prechádzať zdrojové kódy

initial keyboard api

dmuratshin 9 rokov pred
rodič
commit
9de3f50f8c

+ 1 - 2
oxygine/src/PointerState.h

@@ -13,8 +13,7 @@ namespace oxygine
         MouseButton_Touch = 0,
         MouseButton_Touch = 0,
         MouseButton_Left = 0,
         MouseButton_Left = 0,
         MouseButton_Middle = 1,
         MouseButton_Middle = 1,
-        MouseButton_Right = 2,
-        MouseButton_Count
+        MouseButton_Right = 2
     };
     };
 
 
     class PointerState
     class PointerState

+ 4 - 3
oxygine/src/STDRenderer.h

@@ -11,6 +11,8 @@ namespace oxygine
     public:
     public:
 
 
         static STDRenderer* instance;
         static STDRenderer* instance;
+        /**Sets default rendering OpenGL options for 2D*/
+        static void setDefaultSettings();
         /**Initializes internal classes. Called automatically from oxygine::init();*/
         /**Initializes internal classes. Called automatically from oxygine::init();*/
         static void initialize();
         static void initialize();
         /**Clears internal data*/
         /**Clears internal data*/
@@ -42,9 +44,11 @@ namespace oxygine
 
 
 
 
         void setDriver(IVideoDriver*);
         void setDriver(IVideoDriver*);
+
         OXYGINE_DEPRECATED
         OXYGINE_DEPRECATED
         void setViewProjTransform(const Matrix& view, const Matrix& proj);
         void setViewProjTransform(const Matrix& view, const Matrix& proj);
         void setViewProjTransform(const Matrix& viewProj);
         void setViewProjTransform(const Matrix& viewProj);
+        void setVertexDeclaration(const VertexDeclaration* decl);
         void setUberShaderProgram(UberShaderProgram* pr);
         void setUberShaderProgram(UberShaderProgram* pr);
         /**Sets blend mode. Default value is blend_premultiplied_alpha*/
         /**Sets blend mode. Default value is blend_premultiplied_alpha*/
         void setBlendMode(blend_mode blend);
         void setBlendMode(blend_mode blend);
@@ -81,9 +85,6 @@ namespace oxygine
 #endif
 #endif
 
 
     protected:
     protected:
-
-        void setVertexDeclaration(const VertexDeclaration* decl);
-
         Transform _transform;
         Transform _transform;
 
 
         STDRenderer* _previous;
         STDRenderer* _previous;

+ 39 - 0
oxygine/src/key.cpp

@@ -0,0 +1,39 @@
+#include "key.h"
+#include "SDL.h"
+#include <algorithm>
+
+namespace oxygine
+{
+    namespace key
+    {
+        const int KEYS = 256;
+        unsigned char _keys[KEYS];
+
+        void update()
+        {
+            int num = 0;
+            const Uint8* data = SDL_GetKeyboardState(&num);
+            num = std::min(num, KEYS);
+            memcpy(_keys, data, num);
+        }
+
+
+        bool wasPressed(keycode k)
+        {
+            const Uint8* data = SDL_GetKeyboardState(0);
+            return data[k] && !_keys[k];
+        }
+
+        bool wasReleased(keycode key)
+        {
+            const Uint8* data = SDL_GetKeyboardState(0);
+            return !data[key] && _keys[key];
+        }
+
+        bool isPressed(keycode k)
+        {
+            const Uint8* data = SDL_GetKeyboardState(0);
+            return data[k] != 0;
+        }
+    }
+}

+ 17 - 0
oxygine/src/key.h

@@ -0,0 +1,17 @@
+#pragma once
+#include "oxygine_include.h"
+#include "SDL_keyboard.h"
+namespace oxygine
+{
+    namespace key
+    {
+        /**should be called before core::update*/
+        void update();
+
+        typedef int keycode;
+
+        bool wasPressed(keycode);
+        bool wasReleased(keycode);
+        bool isPressed(keycode);
+    }
+}

+ 1 - 0
oxygine/src/oxygine-framework.h

@@ -42,6 +42,7 @@
 #include "Serialize.h"
 #include "Serialize.h"
 #include "STDRenderer.h"
 #include "STDRenderer.h"
 #include "WebImage.h"
 #include "WebImage.h"
+#include "key.h"
 
 
 //closure/
 //closure/
 #include "closure/closure.h"
 #include "closure/closure.h"