亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? attachment.cpp

?? 3D游戲展示程序
?? CPP
字號:
//--------------------------------------------------
//  Desc: M2 Attachment
//  From: WOW Model Viewer
//  I just coding in my own ways!
//--------------------------------------------------

#include "M2Loader.h"
#include "Attachment.h"
#include "Common.h"

Attachment::Attachment()
{
	m_pParent = NULL;
	m_pModel = NULL;
	m_BoneID = -1;
	m_Slot = -1;

	m_Scale = 1.0f;
	m_Rotate = D3DXVECTOR3(0.0f, 0.0f, 0.0f);
	m_Position = D3DXVECTOR3(0.0f, 0.0f, 0.0f);
}

Attachment::~Attachment()
{
	ReleaseChildren();

	m_pParent = NULL;
	if(m_pModel)
	{
		delete m_pModel;
		m_pModel = NULL;
	}
}

bool Attachment::Load(Attachment *pParent, CM2Loader *pModel, int BoneId, int Slot)
{
	m_pParent = pParent;
	m_pModel = pModel;
	m_BoneID = BoneId;
	m_Slot = Slot;
	return true;
}

void Attachment::Update(void)
{
	if(m_pModel)
	{
		m_pModel->UpdateAnimation();
	}
	for(size_t i=0; i<m_Children.size(); i++)
		m_Children[i]->Update();
}

void Attachment::Render(void)
{
	D3DXMATRIX matWorld;
	g_pD3DDevice->GetTransform(D3DTS_WORLD, &matWorld);
	if(m_pModel)
	{
		D3DXMATRIX matTemp;
		D3DXMATRIX matRetsult;
		D3DXMatrixIdentity(&matRetsult);
		if(m_Scale != 1.0f)
		{
			D3DXMatrixScaling(&matTemp, m_Scale, m_Scale, m_Scale);
			matRetsult *= matTemp;
		}
		if(m_Rotate != D3DXVECTOR3(0.0f, 0.0f, 0.0f))
		{
			D3DXMatrixRotationX(&matTemp, m_Rotate.x);
			matRetsult *= matTemp;
			D3DXMatrixRotationY(&matTemp, m_Rotate.x);
			matRetsult *= matTemp;
			D3DXMatrixRotationZ(&matTemp, m_Rotate.x);
			matRetsult *= matTemp;
		}
		if(m_Position != D3DXVECTOR3(0.0f, 0.0f, 0.0f))
		{
			D3DXMatrixTranslation(&matTemp, m_Position.x, m_Position.y, m_Position.z);
			matRetsult *= matTemp;
		}
		if(m_pParent)
		{
			if(m_pParent->m_pModel)
			{
				matRetsult *= m_pParent->m_pModel->GetAttachmentMatrix(m_BoneID);
			}
		}
		
		matRetsult *= matWorld;
		g_pD3DDevice->SetTransform(D3DTS_WORLD, &matRetsult);
		
		m_pModel->Render();
	}

	for(size_t i=0; i<m_Children.size(); i++)
		m_Children[i]->Render();
	g_pD3DDevice->SetTransform(D3DTS_WORLD, &matWorld);
}

void Attachment::SetRender(bool bRender)
{
	if(m_pModel)
	{
		m_pModel->SetRender(bRender);
	}

	for(size_t i=0; i<m_Children.size(); i++)
		m_Children[i]->SetRender(bRender);
}

void Attachment::UpdateParticle(void)
{
	if(m_pModel && m_pModel->HasParticle())
	{
		m_pModel->UpdatePaticle();
	}
	for(size_t i=0; i<m_Children.size(); i++)
		m_Children[i]->UpdateParticle();
}

void Attachment::RenderParticle(const D3DXMATRIX &matRotate)
{
	D3DXMATRIX matWorld;
	g_pD3DDevice->GetTransform(D3DTS_WORLD, &matWorld);
	if(m_pModel && m_pModel->HasParticle())
	{
		D3DXMATRIX matTemp;
		D3DXMATRIX matRetsult;
		D3DXMatrixIdentity(&matRetsult);
		if(m_Scale != 1.0f)
		{
			D3DXMatrixScaling(&matTemp, m_Scale, m_Scale, m_Scale);
			matRetsult *= matTemp;
		}
		if(m_Rotate != D3DXVECTOR3(0.0f, 0.0f, 0.0f))
		{
			D3DXMatrixRotationX(&matTemp, m_Rotate.x);
			matRetsult *= matTemp;
			D3DXMatrixRotationY(&matTemp, m_Rotate.x);
			matRetsult *= matTemp;
			D3DXMatrixRotationZ(&matTemp, m_Rotate.x);
			matRetsult *= matTemp;
		}
		if(m_Position != D3DXVECTOR3(0.0f, 0.0f, 0.0f))
		{
			D3DXMatrixTranslation(&matTemp, m_Position.x, m_Position.y, m_Position.z);
			matRetsult *= matTemp;
		}
		if(m_pParent)
		{
			if(m_pParent->m_pModel)
			{
				matRetsult *= m_pParent->m_pModel->GetAttachmentMatrix(m_BoneID);
			}
		}
		matRetsult *= matWorld;
		g_pD3DDevice->SetTransform(D3DTS_WORLD, &matRetsult);

		m_pModel->RenderParticle(matRotate);
	}
	for(size_t i=0; i<m_Children.size(); i++)
		m_Children[i]->RenderParticle(matRotate);
	g_pD3DDevice->SetTransform(D3DTS_WORLD, &matWorld);
}

void Attachment::ReleaseChildren(void)
{
	for(size_t i=0; i<m_Children.size(); i++)
	{
		m_Children[i]->ReleaseChildren();
		// m_pModel在傳入參數外分配內存
		// m_Children[i]在此類內分配內存
		if(m_Children[i]->m_pModel)
		{
			delete m_Children[i]->m_pModel;
			m_Children[i]->m_pModel = NULL;
		}
		delete (m_Children[i]);
		m_Children[i] = NULL;
	}

	m_Children.clear();
}

void Attachment::SetScale(float scale)
{
	m_Scale = scale;
}

void Attachment::SetRotate(const D3DXVECTOR3 &rotate)
{
	m_Rotate = rotate;
}

void Attachment::SetPosition(const D3DXVECTOR3 &pos)
{
	m_Position = pos;
}

Attachment* Attachment::AddChild(const char *filename, int id, int slot, float scale /* = 1.0f */, 
								 D3DXVECTOR3 rotate /* = D3DXVECTOR3(0.0f, 0.0f, 0.0f) */,
								 D3DXVECTOR3 pos /* = D3DXVECTOR3(0.0f, 0.0f, 0.0f) */)
{
	if(filename==NULL || filename[0]==0 || id<0)
		return NULL;

	CM2Loader *pModel = new CM2Loader;
	if(pModel==NULL)	return NULL;
	if(pModel->Load(filename))
	{
		return AddChild(pModel, id, slot, scale, rotate, pos);
	}
	else
	{
		delete pModel;
		return NULL;
	}
}

Attachment* Attachment::AddChild(CM2Loader *model, int id, int slot, float scale /* = 1.0f */, 
								 D3DXVECTOR3 rotate /* = D3DXVECTOR3(0.0f, 0.0f, 0.0f) */,
								 D3DXVECTOR3 pos /* = D3DXVECTOR3(0.0f, 0.0f, 0.0f) */)
{
	if(model == NULL)	return NULL;

	Attachment *pAttach = new Attachment();
	if(pAttach == NULL)	return NULL;

	pAttach->Load(this, model, id, slot);
	pAttach->SetScale(scale);
	pAttach->SetRotate(rotate);
	pAttach->SetPosition(pos);
	m_Children.push_back(pAttach);
	return pAttach;
}

void Attachment::ReleaseSlot(int slot)
{
	for(size_t i=0; i<m_Children.size(); i++)
	{
		if(m_Children[i]->m_Slot == slot)
		{
			delete m_Children[i];
			m_Children.erase(m_Children.begin() + i);
			continue;
		}
	}
}




?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产精品久久人人爱蜜臀 | 国产乱码精品一区二区三区五月婷| 国产丝袜欧美中文另类| 在线观看国产一区二区| 丰满岳乱妇一区二区三区| 首页国产丝袜综合| 亚洲视频一区在线| 国产欧美日韩久久| 日韩欧美国产一区二区三区 | 制服丝袜激情欧洲亚洲| av亚洲精华国产精华| 国产在线不卡一区| 日本美女一区二区三区| 亚洲自拍偷拍欧美| 亚洲欧美怡红院| 久久久一区二区| 精品美女一区二区| 日韩欧美一区中文| 337p亚洲精品色噜噜噜| 色美美综合视频| 91在线码无精品| 国产成人免费av在线| 国产中文字幕一区| 看电视剧不卡顿的网站| 日韩成人伦理电影在线观看| 亚洲一区二区三区精品在线| 亚洲欧洲日韩综合一区二区| 国产精品免费aⅴ片在线观看| 久久欧美一区二区| 欧美精品一区二区三| 精品国产91乱码一区二区三区 | 久久色在线观看| 精品久久久久久久人人人人传媒 | 欧美一区二区三区在线看| 欧美午夜宅男影院| 欧美色视频一区| 欧美在线视频不卡| 欧美日韩国产免费一区二区| 欧美日韩成人综合在线一区二区| 欧美性猛交xxxxxxxx| 欧美色窝79yyyycom| 欧美亚洲高清一区| 欧美裸体bbwbbwbbw| 欧美肥妇毛茸茸| 欧美一级生活片| 精品少妇一区二区三区视频免付费| 欧美一级免费观看| 欧美va在线播放| 国产日本亚洲高清| 亚洲欧洲av在线| 亚洲另类色综合网站| 亚洲国产成人精品视频| av一区二区三区在线| 91老师国产黑色丝袜在线| 色天使色偷偷av一区二区| 欧美在线一区二区三区| 欧美一区二区免费视频| 久久久久国色av免费看影院| 国产精品视频免费| 亚洲最大成人综合| 奇米影视一区二区三区| 国产suv一区二区三区88区| 91农村精品一区二区在线| 欧美视频三区在线播放| 精品噜噜噜噜久久久久久久久试看| 久久久久国产免费免费| 亚洲激情综合网| 美女mm1313爽爽久久久蜜臀| 国产成都精品91一区二区三| 日本久久一区二区| 欧美成人一区二区三区| 中文字幕一区二区三区视频| 亚洲国产欧美一区二区三区丁香婷 | 日韩视频在线永久播放| 国产精品色在线| 午夜婷婷国产麻豆精品| 国产在线精品一区二区夜色 | 欧美伦理电影网| 久久久精品黄色| 亚洲线精品一区二区三区| 狠狠色狠狠色综合日日91app| 99久久精品情趣| 欧美一区二区三区思思人| 国产三级精品视频| 爽好多水快深点欧美视频| 国产成人精品免费| 欧美一二三在线| 亚洲欧美国产77777| 久久99深爱久久99精品| 91视视频在线观看入口直接观看www | 欧美大片拔萝卜| 亚洲欧洲中文日韩久久av乱码| 美国十次了思思久久精品导航| 97久久精品人人澡人人爽| 日韩午夜激情免费电影| 亚洲图片激情小说| 国产一区二区不卡老阿姨| 欧美日本一区二区三区四区 | 亚洲一区二区在线视频| 国产精品一区二区黑丝| 欧美一区二区在线看| 亚洲九九爱视频| 国产成人av福利| 亚洲综合成人网| fc2成人免费人成在线观看播放| 欧美va在线播放| 水野朝阳av一区二区三区| 日本高清成人免费播放| 中文字幕一区在线观看| 国产激情一区二区三区四区 | 视频在线在亚洲| 色欧美片视频在线观看在线视频| 国产亚洲人成网站| 麻豆成人久久精品二区三区小说| 91福利视频在线| 亚洲欧美激情视频在线观看一区二区三区| 国产久卡久卡久卡久卡视频精品| 日韩欧美一区二区免费| 日本伊人精品一区二区三区观看方式| 日本乱人伦一区| 一区二区视频在线看| av综合在线播放| 最新日韩av在线| 91在线高清观看| 国产精品人妖ts系列视频| 国产老妇另类xxxxx| 久久久久久久综合日本| 国产大陆亚洲精品国产| 久久久久久久精| 盗摄精品av一区二区三区| 国产欧美一二三区| 成人免费高清视频在线观看| 国产日产欧美精品一区二区三区| 国产传媒日韩欧美成人| 国产欧美日韩久久| av亚洲精华国产精华| 亚洲卡通欧美制服中文| 欧美日韩在线精品一区二区三区激情| 一区二区激情视频| 欧美男同性恋视频网站| 石原莉奈在线亚洲三区| 日韩一区二区不卡| 精东粉嫩av免费一区二区三区| 欧美大片国产精品| 国产福利一区二区三区视频 | 欧美va亚洲va香蕉在线| 国模套图日韩精品一区二区| 久久综合久久综合九色| 丰满少妇久久久久久久| 亚洲四区在线观看| 欧美日韩亚洲综合一区| 久久99日本精品| 欧美激情综合五月色丁香小说| 成人激情小说网站| 玉足女爽爽91| 在线播放一区二区三区| 麻豆精品一区二区av白丝在线| 久久蜜桃一区二区| 91在线观看高清| 日韩精品高清不卡| 久久一区二区三区四区| 成人av在线播放网站| 亚洲综合男人的天堂| 欧美一区二区三区在| 国产成人av电影| 亚洲一区二区三区自拍| 日韩午夜激情av| 成人激情图片网| 日日夜夜精品视频免费| 久久夜色精品国产噜噜av| 99re这里只有精品视频首页| 99麻豆久久久国产精品免费优播| 伊人一区二区三区| 日韩美女一区二区三区| av午夜一区麻豆| 日韩avvvv在线播放| 欧美激情一区二区三区全黄| 欧美在线一二三| 国内精品伊人久久久久av一坑 | 国产午夜精品美女毛片视频| 91福利区一区二区三区| 国产永久精品大片wwwapp | 国产精品77777| 亚洲一区免费观看| 欧美激情一区二区三区在线| 欧美日韩激情在线| 成人激情图片网| 久久国产精品第一页| 亚洲免费高清视频在线| 久久综合资源网| 欧美日本高清视频在线观看| a在线欧美一区| 国产曰批免费观看久久久| 夜夜嗨av一区二区三区网页| 国产亚洲污的网站| 欧美一级夜夜爽| 欧美日韩在线三区| 94-欧美-setu| 成人午夜碰碰视频| 九九九久久久精品|