示例#1
0
CFixedStringListW::~CFixedStringListW( void )
{
	PopAll( true );

	delete m_ptList;

	return;
}
示例#2
0
/*
 * WriteMem - write some memory, using toolhelp or wdebug.386
 */
DWORD WriteMem( WORD sel, DWORD off, LPVOID buff, DWORD size )
{
    DWORD       rc;
    if( WDebug386 ) {
        return( CopyMemory386( sel, off, FP_SEG( buff ), FP_OFF( buff ), size ) );
    } else {
        PushAll();
        rc = MemoryWrite( sel, off, buff, size );
        PopAll();
        return( rc );
    }

} /* WriteMem */
inline void StateStackClass::pvtDrawObject(UInt32 operation, ObjectInstance *objInst, const Pmatrix *rot, const Ppoint *pos, const float sx, const float sy, const float sz, const float scale)
{
	UInt32 clipFlag;
	float MaxLODRange;
	static int in = 0;

	ShiAssert(objInst);

	PushAll();

	// Set up our transformations
	CompoundTransform(rot,pos);


	SetWorld(rot,pos);

	if(operation & OP_WARP)
	{
		Pmatrix	tempM;

		ShiAssert((sx > 0.0f) && (sx <= 1.0f));
		ShiAssert((sy > 0.0f) && (sy <= 1.0f));
		ShiAssert((sz > 0.0f) && (sz <= 1.0f));

		Pmatrix	stretchM = {	sx,		0.f,	0.f,
								0.f,	sy,		0.f,
								0.f,	0.f,	sz	};

		tempM = Rotation;
		MatrixMult(&tempM,&stretchM,&Rotation);

		D3DFrame::Matrix mS,mT;
		mT = mW;
		mS.InitIdentity();
		mS.m[0][0]=sx; mS.m[1][1]=sy; mS.m[2][2]=sz;
		mW = mS*mT;
	}

	if(scale != 1.f)
	{
		Pmatrix	tempM;

		Pmatrix scaleM = {	scale,	0.f,	0.f,
							0.f,	scale,	0.f,
							0.f,	0.f,	scale };

		tempM = Rotation;
		MatrixMult(&tempM,&scaleM,&Rotation);

		D3DFrame::Matrix mS,mT;
		mT = mW;
		mS.InitIdentity();
		mS.m[0][0]=scale; mS.m[1][1]=scale; mS.m[2][2]=scale;
		mW = mS*mT;
	}

	// Store the adjusted range for LOD determinations
	LODRange = Xlation.x * LODBiasInv;

	// Choose the appropriate LOD of the object to be drawn
	CurrentInstance = objInst;

	if (objInst->ParentObject)
	{
		if (g_bSlowButSafe && F4IsBadCodePtr((FARPROC) objInst->ParentObject)) // JB 010220 CTD (too much CPU)
			CurrentLOD = 0; // JB 010220 CTD
		else // JB 010220 CTD
		if (objInst->id < 0 || objInst->id >= TheObjectListLength || objInst->TextureSet < 0) // JB 010705 CTD second try
		{
			ShiAssert(FALSE);
			CurrentLOD = 0;
		}
		else 
			CurrentLOD = objInst->ParentObject->ChooseLOD(LODRange,&LODused,&MaxLODRange);

		if(CurrentLOD)
		{
			// Decide if we need clipping, or if the object is totally off screen
			clipFlag = CheckBoundingSphereClipping();

			// Continue only if some part of the bounding volume is on screen
			if (clipFlag != OFF_SCREEN)
			{
				// Set the jump pointers to turn on/off clipping
				if (clipFlag == ON_SCREEN)
				{
					Transform = TransformNoClip;
					DrawPrimJumpTable = DrawPrimNoClipJumpTable;
				}
				else
				{
					Transform = TransformWithClip;
					DrawPrimJumpTable = DrawPrimWithClipJumpTable;
				}

				// Choose perspective correction or not
	//			if ((Xlation.x > CurrentInstance->Radius() * PERSP_CORR_RADIUS_MULTIPLIER) && 
	//				!(CurrentLOD->flags & ObjectLOD::PERSP_CORR))
	//			{
	//				RenderStateTable = RenderStateTableNPC;
	//			}
	//			else
	//			{
					RenderStateTable = RenderStateTablePC;
	//			}

				in ++;

				if (in == 1)
				{
					verts = 0;
				}

				// Draw the object
				CurrentLOD->Draw();

//				if (in == 1)
//				{
//					if (verts)
//					{
//						MonoPrint ("Obj %d:%d %d : %d\n", objInst->id, LODused, (int) MaxLODRange, verts);
//					}
//				}

				in --;
			}
		}
	}

	PopAll();
}
示例#4
0
cStateManager::~cStateManager() 
{
  PopAll();
}
示例#5
0
CCliReq::~CCliReq()
{
	PopAll();
}
示例#6
0
	cStateManager::~cStateManager(){
		PopAll(NULL);
	}
示例#7
0
	cProcessManager::~cProcessManager()
	{
		PopAll(NULL);
	}
示例#8
0
CCliArg::~CCliArg()
{
    PopAll();
}