当前位置: 首页>>代码示例>>C++>>正文


C++ LPENTITY::EncodeRemovePacket方法代码示例

本文整理汇总了C++中LPENTITY::EncodeRemovePacket方法的典型用法代码示例。如果您正苦于以下问题:C++ LPENTITY::EncodeRemovePacket方法的具体用法?C++ LPENTITY::EncodeRemovePacket怎么用?C++ LPENTITY::EncodeRemovePacket使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在LPENTITY的用法示例。


在下文中一共展示了LPENTITY::EncodeRemovePacket方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: ViewRemove

void CEntity::ViewRemove(LPENTITY entity, bool recursive)
{
	ENTITY_MAP::iterator it = m_map_view.find(entity);

	if (it == m_map_view.end())
		return;

	m_map_view.erase(it);

	if (!entity->m_bIsObserver)
		entity->EncodeRemovePacket(this);

	if (recursive)
		entity->ViewRemove(this, false);
}
开发者ID:adi97ida,项目名称:Server,代码行数:15,代码来源:entity_view.cpp

示例2: UpdateSectree

void CEntity::UpdateSectree()
{
	if (!GetSectree())
	{
		if (IsType(ENTITY_CHARACTER))
		{
			LPCHARACTER tch = (LPCHARACTER) this;
			sys_err("null sectree name: %s %d %d",  tch->GetName(), GetX(), GetY());
		}

		return;
	}

	++m_iViewAge;

	CFuncViewInsert f(this); // 나를 섹트리에 있는 사람들에게 추가
	GetSectree()->ForEachAround(f);

	ENTITY_MAP::iterator it, this_it;

	//
	// m_map_view에서 필요 없는 녀석들 지우기
	// 
	if (m_bObserverModeChange)
	{
		if (m_bIsObserver)
		{
			it = m_map_view.begin();

			while (it != m_map_view.end())
			{
				this_it = it++;
				if (this_it->second < m_iViewAge)
				{
					LPENTITY ent = this_it->first;

					// 나로 부터 상대방을 지운다.
					ent->EncodeRemovePacket(this);
					m_map_view.erase(this_it);

					// 상대로 부터 나를 지운다.
					ent->ViewRemove(this, false);
				}
				else
				{

					LPENTITY ent = this_it->first;

					// 나로 부터 상대방을 지운다.
					//ent->EncodeRemovePacket(this);
					//m_map_view.erase(this_it);

					// 상대로 부터 나를 지운다.
					//ent->ViewRemove(this, false);
					EncodeRemovePacket(ent);
				}
			}
		}
		else
		{
			it = m_map_view.begin();

			while (it != m_map_view.end())
			{
				this_it = it++;

				if (this_it->second < m_iViewAge)
				{
					LPENTITY ent = this_it->first;

					// 나로 부터 상대방을 지운다.
					ent->EncodeRemovePacket(this);
					m_map_view.erase(this_it);

					// 상대로 부터 나를 지운다.
					ent->ViewRemove(this, false);
				}
				else
				{
					LPENTITY ent = this_it->first;
					ent->EncodeInsertPacket(this);
					EncodeInsertPacket(ent);

					ent->ViewInsert(this, true);
				}
			}
		}

		m_bObserverModeChange = false;
	}
	else
	{
		if (!m_bIsObserver)
		{
			it = m_map_view.begin();

			while (it != m_map_view.end())
			{
				this_it = it++;

//.........这里部分代码省略.........
开发者ID:adi97ida,项目名称:Server,代码行数:101,代码来源:entity_view.cpp


注:本文中的LPENTITY::EncodeRemovePacket方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。