MCPcopy Create free account
hub / github.com/9chu/LuaSTGPlus / GameObjectPool

Class GameObjectPool

LuaSTGPlus/GameObjectPool.h:140–274  ·  view source on GitHub ↗

@brief ��Ϸ�����

Source from the content-addressed store, hash-verified

138
139 /// @brief ��Ϸ�����
140 class GameObjectPool
141 {
142 private:
143 lua_State* L = nullptr;
144 FixedObjectPool<GameObject, LGOBJ_MAXCNT> m_ObjectPool;
145
146 // ����αͷ��
147 uint64_t m_iUid = 0;
148 GameObject m_pObjectListHeader, m_pObjectListTail;
149 GameObject m_pRenderListHeader, m_pRenderListTail;
150 GameObject m_pCollisionListHeader[LGOBJ_GROUPCNT], m_pCollisionListTail[LGOBJ_GROUPCNT];
151
152 // �����߽�
153 lua_Number m_BoundLeft = -100.f;
154 lua_Number m_BoundRight = 100.f;
155 lua_Number m_BoundTop = 100.f;
156 lua_Number m_BoundBottom = -100.f;
157 private:
158 GameObject* freeObject(GameObject* p)LNOEXCEPT;
159 public:
160 /// @brief ����Ƿ�Ϊ���߳�
161 bool CheckIsMainThread(lua_State* pL)LNOEXCEPT { return pL == L; }
162
163 /// @brief ��ȡ�ѷ����������
164 size_t GetObjectCount()LNOEXCEPT { return m_ObjectPool.Size(); }
165
166 /// @brief ��ȡ����
167 GameObject* GetPooledObject(size_t i)LNOEXCEPT { return m_ObjectPool.Data(i); }
168
169 /// @brief ִ�ж����Frame����
170 void DoFrame()LNOEXCEPT;
171
172 /// @brief ִ�ж����Render����
173 void DoRender()LNOEXCEPT;
174
175 /// @brief ��ȡ��̨�߽�
176 fcyRect GetBound()LNOEXCEPT
177 {
178 return fcyRect((float)m_BoundLeft, (float)m_BoundTop, (float)m_BoundRight, (float)m_BoundBottom);
179 }
180
181 /// @brief ������̨�߽�
182 void SetBound(lua_Number l, lua_Number r, lua_Number b, lua_Number t)LNOEXCEPT
183 {
184 m_BoundLeft = l;
185 m_BoundRight = r;
186 m_BoundTop = t;
187 m_BoundBottom = b;
188 }
189
190 /// @brief ִ�б߽���
191 void BoundCheck()LNOEXCEPT;
192
193 /// @brief ��ײ���
194 /// @param[in] groupA ������A
195 /// @param[in] groupB ������B
196 void CollisionCheck(size_t groupA, size_t groupB)LNOEXCEPT;
197

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected