⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gosfx.cpp

📁 机甲指挥官2源代码
💻 CPP
字号:
//===========================================================================//
// Copyright (C) Microsoft Corporation. All rights reserved.                 //
//===========================================================================//

#include "gosFXHeaders.hpp"

HGOSHEAP
	gosFX::Heap = NULL;

DEFINE_TIMER(gosFX, Animation_Time);
DEFINE_TIMER(gosFX, Draw_Time);
DWORD
	gosFX::Point_Count,
	gosFX::Shard_Count,
	gosFX::Pert_Count,
	gosFX::Card_Count,
	gosFX::Shape_Count,
	gosFX::Profile_Count;

static Stuff::LinearMatrix4D
	Effect_Into_Motion_data(true),
	Effect_Against_Motion_data(true);
const Stuff::LinearMatrix4D&
	gosFX::Effect_Into_Motion = Effect_Into_Motion_data;
const Stuff::LinearMatrix4D&
	gosFX::Effect_Against_Motion = Effect_Against_Motion_data;

//-----------------------------------------------------------------------------
//
void
	gosFX::InitializeClasses()
{
	Verify(FirstFreegosFXClassID <= Stuff::LastgosFXClassID);

	Verify(!Heap);
	Heap = gos_CreateMemoryHeap("gosFX");
	Check_Pointer(Heap);
	gos_PushCurrentHeap(Heap);

	Effect::InitializeClass();
	ParticleCloud::InitializeClass();
	PointCloud::InitializeClass();
	SpinningCloud::InitializeClass();
	ShardCloud::InitializeClass();
	ShapeCloud::InitializeClass();
	PertCloud::InitializeClass();
	CardCloud::InitializeClass();
	EffectCloud::InitializeClass();
	Singleton::InitializeClass();
	Card::InitializeClass();
	Shape::InitializeClass();
	Tube::InitializeClass();
	DebrisCloud::InitializeClass();
	PointLight::InitializeClass();

	EffectLibrary::InitializeClass();

	Effect_Into_Motion_data(1,1) = 0.0f;
	Effect_Into_Motion_data(1,2) = 1.0f;
	Effect_Into_Motion_data(2,1) = -1.0f;
	Effect_Into_Motion_data(2,2) = 0.0f;

	Effect_Against_Motion_data(1,1) = 0.0f;
	Effect_Against_Motion_data(1,2) = -1.0f;
	Effect_Against_Motion_data(2,1) = 1.0f;
	Effect_Against_Motion_data(2,2) = 0.0f;

	gos_PopCurrentHeap();

	StatisticFormat("");
	StatisticFormat("gosFX");
	StatisticFormat("=====");
	StatisticFormat("");

	Initialize_Timer(Animation_Time, "Animation Time");
	Initialize_Timer(Draw_Time, "Draw Time");

	AddStatistic("Points", "prims", gos_DWORD, &Point_Count, Stat_AutoReset);
	AddStatistic("Shards", "prims", gos_DWORD, &Shard_Count, Stat_AutoReset);
	AddStatistic("Perts", "prims", gos_DWORD, &Pert_Count, Stat_AutoReset);
	AddStatistic("Cards", "prims", gos_DWORD, &Card_Count, Stat_AutoReset);
	AddStatistic("Shapes", "prims", gos_DWORD, &Shape_Count, Stat_AutoReset);
	AddStatistic("Profiles", "prims", gos_DWORD, &Profile_Count, Stat_AutoReset);
}

//-----------------------------------------------------------------------------
//
void
	gosFX::TerminateClasses()
{
	// make sure these were actually initialized
	if ( !DebrisCloud::DefaultData )
		return;

	EffectLibrary::TerminateClass();

	PointLight::TerminateClass();
	DebrisCloud::TerminateClass();
	Tube::TerminateClass();
	Shape::TerminateClass();
	Card::TerminateClass();
	Singleton::TerminateClass();
	EffectCloud::TerminateClass();
	CardCloud::TerminateClass();
	PertCloud::TerminateClass();
	ShapeCloud::TerminateClass();
	ShardCloud::TerminateClass();
	SpinningCloud::TerminateClass();
	PointCloud::TerminateClass();
	ParticleCloud::TerminateClass();
	Effect::TerminateClass();

	Check_Pointer(Heap);
	gos_DestroyMemoryHeap(Heap,true);
	Heap = NULL;
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
int
	gosFX::ReadGFXVersion(Stuff::MemoryStream *erf_stream)
{
	Check_Object(erf_stream);

	int erf_signature;
	*erf_stream >> erf_signature;
	Verify(erf_signature == 'GFX#');
	int version;
	*erf_stream >> version;
	if (version > CurrentGFXVersion)
		STOP(("Application must be rebuilt to use this version of GFX data"));
	return version;
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
void
	gosFX::WriteGFXVersion(Stuff::MemoryStream *erf_stream)
{
	Check_Object(erf_stream);
	*erf_stream << 'GFX#' << static_cast<int>(CurrentGFXVersion);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -