modelmateriallayer.h

来自「骨骼动画....把魔兽模型解出的代码..」· C头文件 代码 · 共 100 行

H
100
字号
//+-----------------------------------------------------------------------------
//| Inclusion guard
//+-----------------------------------------------------------------------------
#ifndef MAGOS_MODEL_MATERIAL_LAYER_H
#define MAGOS_MODEL_MATERIAL_LAYER_H


//+-----------------------------------------------------------------------------
//| Included files
//+-----------------------------------------------------------------------------
#include "ModelBase.h"


//+-----------------------------------------------------------------------------
//| Model materiallayer data structure
//+-----------------------------------------------------------------------------
struct MODEL_MATERIAL_LAYER_DATA
{
	MODEL_MATERIAL_LAYER_DATA()
	{
		FilterMode = FILTER_MODE_NONE;

		AnimatedTextureId.SetStaticScalarInt(0, "TextureID");
		Alpha.SetStaticScalar(1.0f, "Alpha");

		TextureId = INVALID_INDEX;
		TextureAnimationId = INVALID_INDEX;

		Unshaded = FALSE;
		Unfogged = FALSE;
		TwoSided = FALSE;
		SphereEnvironmentMap = FALSE;
		NoDepthTest = FALSE;
		NoDepthSet = FALSE;
	}

	FILTER_MODE FilterMode;

	INTERPOLATOR AnimatedTextureId;
	INTERPOLATOR Alpha;

	INT TextureId;
	INT TextureAnimationId;

	BOOL Unshaded;
	BOOL Unfogged;
	BOOL TwoSided;
	BOOL SphereEnvironmentMap;
	BOOL NoDepthTest;
	BOOL NoDepthSet;
};


//+-----------------------------------------------------------------------------
//| Model material layer class
//+-----------------------------------------------------------------------------
class MODEL_MATERIAL_LAYER
{
	public:
		CONSTRUCTOR MODEL_MATERIAL_LAYER();
		DESTRUCTOR ~MODEL_MATERIAL_LAYER();

		VOID Clear();
		INT GetSize();

		MODEL_MATERIAL_LAYER_DATA& Data();
		MODEL_MATERIAL_LAYER_DATA& NewData();

		VOID MarkAsUpdated();
		VOID UpdateDataIfNeccessary();

		INT GetRenderOrder();

		VOID UseMaterial(CONST SEQUENCE_TIME& Time);

	protected:
		MODEL_MATERIAL_LAYER_DATA MaterialLayerData;

		BOOL MaterialLayerChanged;
		MODEL_MATERIAL_LAYER_DATA MaterialLayerNewData;

	public:
		REFERENCE<MODEL_MATERIAL_LAYER*, MODEL_TEXTURE*> TextureNode;
		REFERENCE<MODEL_MATERIAL_LAYER*, MODEL_TEXTURE*> NewTextureNode;
		REFERENCE<MODEL_MATERIAL_LAYER*, MODEL_TEXTURE_ANIMATION*> TextureAnimationNode;
		REFERENCE<MODEL_MATERIAL_LAYER*, MODEL_TEXTURE_ANIMATION*> NewTextureAnimationNode;
};


//+-----------------------------------------------------------------------------
//| Post-included files
//+-----------------------------------------------------------------------------
#include "Graphics.h"


//+-----------------------------------------------------------------------------
//| End of inclusion guard
//+-----------------------------------------------------------------------------
#endif

⌨️ 快捷键说明

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