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


C++ WorldObject::getCorrectAtomic方法代码示例

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


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

示例1: releaseIfInactive

void Instance::releaseIfInactive(void)
{
	WorldObject *op = static_cast<WorldObject*>(objectList->get(id));

	float dist = cam->distanceTo(position)/renderer->lodMult;
	int ai = op->getCorrectAtomic(dist);

	if (ai < 0 && isActive) {
		op->decRefCount();
		isActive = false;
	}
}
开发者ID:aap,项目名称:gtatools,代码行数:12,代码来源:world.cpp

示例2: addToRenderList

void Instance::addToRenderList(void)
{
	const float fadeThrshd = FADE;

	// set by 'addOpaqueObject'
	if (wasAdded)
		return;

	WorldObject *op = static_cast<WorldObject*>(objectList->get(id));

	float dist = cam->distanceTo(position)/renderer->lodMult - fadeThrshd;
	int ai = op->getCorrectAtomic(dist);

	// frustum cull
	if (op->canDraw())
		if (isCulled() && !(op->flags & 128))
			return;

	// if the instance is too far away, try the LOD version
	if (ai < 0) {
		addLodToRenderList();
		goto release;
	}

	if (isHidden)
		return;

	if (op->modelName == "LODDUMMY")
		return;

	// check for interior (if intr < 0 everything is drawn)
	int intr;
	intr = world->getInterior();
	if (interior != intr && intr >= 0 && !renderer->doCol) {
		if (game == GTAVC) {
			if (interior != 13)
				goto release;
		} if (game == GTASA) {
			// Gotta figure out what's the meaning of this.
			if (interior != 13 && interior != 256 &&
			    interior != 269 && interior != 2048 &&
			    interior != 768 && interior != 512 &&
			    interior != 6144 &&
			    interior != 1024 && interior != 4096)
				goto release;
		}
	}

	// check for time
	if (op->isTimed && !op->isVisibleAtTime(timeCycle.getHour()) &&
	    !renderer->doCol)
		goto release;

	// request model
	if (!isActive) {
		op->incRefCount();
		isActive = true;
	}

	if (!op->canDraw()) {
		addLodToRenderList();
		return;
	}

	float drawDist, distDiff;
	drawDist = op->getDrawDistance(-1);
	distDiff = drawDist - dist;

	if (distDiff < fadeThrshd)
		setFading(distDiff/fadeThrshd);
	else if (getFading() != 1.0f)
		// Increment fading value for instances that are
		// well within the draw dist.
		setFading(getFading()+0.25f);
	else if (op->isFreshlyLoaded)
		setFading(0.0f);
		// Retain the freshlyLoaded flag for other instances.
		// It is cleared by Renderer.
	else
		setFading(1.0f);

	// If a new instance is being faded in or out, also draw LOD
	if (getFading() != 1.0f)
		addLodToRenderList();

	if (!isActive)
		cout << name << " this can't be\n";

	if (op->type == ANIM)
		renderer->addOpaqueObject(this, -1);
	else
		renderer->addOpaqueObject(this, ai);
	return;

release:
	if (isActive) {
		op->decRefCount();
		isActive = false;
	}
	return;
//.........这里部分代码省略.........
开发者ID:aap,项目名称:gtatools,代码行数:101,代码来源:world.cpp


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