__UFNHGGI_H__

Members
  • Content count

    4
  • Joined

  • Last visited

Community Reputation

305 Neutral

About __UFNHGGI_H__

  • Rank
    Newbie
  1. Component based system

    https://github.com/UFNHGGI/CBGE   try it   sample : ///////////////////FreeMove.h #pragma once #include <Engine.h> class CFreeMove : CComponent { SVec2 moveSpeed; COMPONENT_REG_BEGIN(CFreeMove, true) COMPONENT_REG_VAR(moveSpeed, true) //automatic registration :O COMPONENT_REG_END() void onCreate() { moveSpeed = SVec2(RandRange(1, 5)); } void onUpdate() { if(CInput::KeyDown('D')) owner()->position.x += moveSpeed.x; else if(CInput::KeyDown('A')) owner()->position.x -= moveSpeed.x; if(CInput::KeyDown('W')) owner()->position.y -= moveSpeed.y; else if(CInput::KeyDown('S')) owner()->position.y += moveSpeed.y; } }; ///////////////FreeMove.cpp #include "FreeMove.h" COMPONENT_IMPL(CFreeMove);
  2. Component Or Entity ?

    in the name of god && coding Hi Programmers Wich Is Beter ?  ComponentBase (like unity3d) or EntityBase (like cryengine) why? When? My previous choice was the Component.  But now, I chose the Entity. What is your opinion ? sory if my english is not good thanks
  3. How do you check collision against 1000x1000 objects?

    hehe 1000 * 1000 == BOOOM [img]http://public.gamedev.net//public/style_emoticons/default/biggrin.png[/img] The first solution :: [CODE] class Object { bool receiveCollision; }; //player.receiveCollision = true; //block.receiveCollision = false; //items.receiveCollision = false; for(int i = 0; i < objects.size(); ++i) { Object* obj = objects[i]; if(obj->receiveCollision) { for(int j = 0; j < objects.size(); ++i) { collisionCheck(obj, objects[j]) } } } [/CODE] The second solution :: [CODE] enum Tags { TagPlayer, TagEnemy, TagBlock, TagWeapons}; class Object { Tags tag; std::vector<Tags> collisionTags; }; for(int i = 0; i < objects.size(); ++i) { Object* obj = objects[i]; for(int j = 0; j < obj->collisionTags.size(); ++i) { for(int k = 0; k < objects.size(); ++k) { if(obj->collisionTags[j] == objects[k].tag ) { collisionCheck(obj, objects[k]); } } } } [/CODE] [img]http://public.gamedev.net//public/style_emoticons/default/happy.png[/img]
  4. Accessing other game objects

    u can use template && typeid() :-) sample :: [CODE] #include <vector> #include <Windows.h> #include <iostream> class GameObject { public: float x,y; //position :-) virtual void onUpdate(){}; }; class Scene { std::vector<GameObject*> objects; //all objects in scene public: void update(); //update all objects //Add New Object To Scene :-> template < class T> T* addObject(float _x, float _y) { T* l_maintype = new T; GameObject* l_obj = (GameObject*)l_maintype; l_obj->x = _x; l_obj->y = _y; objects.push_back(l_obj); return l_maintype; } template < class T> T* getObjectFromFirst() { int l_size = objects.size(); int i = 0; const type_info& l_type = typeid(T); while( i < l_size) { if(typeid(*objects[i]) == l_type) return (T*)objects[i]; i++; } return NULL; } template < class T> T* getObjectFromLast() { int l_size = objects.size()-1; const type_info& l_type = typeid(T); while(l_size > -1) { if(typeid(*objects[l_size]) == l_type) return (T*)objects[l_size]; l_size--; } return NULL; } template < class T> std::vector<T*> getObjects() { std::vector<T*> l_vec; int l_size = objects.size(); int i = 0; const type_info& l_type = typeid(T); while( i < l_size) { if(typeid(*objects[i]) == l_type) l_vec.push_back( (T*)objects[i] ); i++; } return l_vec; } }; void Scene::update() { int l_size = objects.size(); int i = 0; while(i < l_size) { objects[i]->onUpdate(); i++; } } //---------------------------- class Player : public GameObject { public: float m_speed; void onUpdate(); }; void Player::onUpdate() { x += m_speed; y += m_speed; } int main(int argc, char* argv[]) { Scene l_scene; l_scene.addObject<Player>(0, 0)->m_speed = 2; l_scene.addObject<Player>(100, 100)->m_speed = 4; l_scene.addObject<Player>(256, 256)->m_speed = 8; while(1) { l_scene.update(); Sleep(1000); std::cout << l_scene.getObjectFromFirst<Player>()->x << '\n'; } std::cin.get(); return 0; } [/CODE]