// // BtPhysTest // // Copyright: (c) 2009-2013 Benjamin "Touky" Huet // (c) 2012 Sam Hocevar // #pragma once class CatShaderData : public GpuShaderData { friend class CRenderer; public: //--- CatShaderData(uint32_t vert_decl_flags, Shader* shader); //--- void SetupDefaultData(); virtual void SetupShaderDatas(mat4 const &model); //-- virtual lol::String GetInVertexName() { return lol::String("in_vertex"); } virtual lol::String GetInNormalName() { return lol::String("in_normal"); } virtual lol::String GetInColorName() { return lol::String("in_color"); } virtual lol::String GetInTexCoordName() { return lol::String("in_texcoord"); } TextureUniform m_tex_uniform; float m_sprite_orientation; float m_sprite_flip; }; class BtPhysTest : public WorldEntity { public: BtPhysTest(bool editor = false); virtual ~BtPhysTest(); char const *GetName() { return ""; } protected: virtual void TickGame(float seconds); virtual void TickDraw(float seconds, Scene &scene); void InitApp(); private: //MeshViewerInput --------------------------------------------------------- struct BtPhysTestKeyInputBase : public StructSafeEnum { enum Type { KEY_START = 0, KEY_MOVE_FORWARD = KEY_START, KEY_MOVE_BACK, KEY_MOVE_LEFT, KEY_MOVE_RIGHT, KEY_MOVE_UP, KEY_MOVE_DOWN, KEY_MOVE_JUMP, KEY_QUIT, KEY_MAX }; protected: virtual bool BuildEnumMap(map& enum_map) { enum_map[KEY_MOVE_FORWARD] = g_name_key_Up; enum_map[KEY_MOVE_BACK] = g_name_key_Down; enum_map[KEY_MOVE_LEFT] = g_name_key_Left; enum_map[KEY_MOVE_RIGHT] = g_name_key_Right; enum_map[KEY_MOVE_UP] = g_name_key_PageUp; enum_map[KEY_MOVE_DOWN] = g_name_key_PageDown; enum_map[KEY_MOVE_JUMP] = g_name_key_Space; enum_map[KEY_QUIT] = g_name_key_Escape; return true; } }; typedef SafeEnum BtPhysTestKeyInput; TileSet* m_cat_texture; Shader* m_cat_shader; CatShaderData* m_cat_sdata; Camera* m_camera; Controller* m_controller; InputProfile m_profile; Light* m_light1; Light* m_light2; int m_init_status; bool m_ready; lol::phys::Simulation* m_simulation; array m_constraint_list; array m_physobj_list; array m_ground_list; array m_platform_list; array m_character_list; array m_stairs_list; float m_loop_value; float m_target_timer; int m_cam_target; float m_fov_dp; float m_loc_dp; };