📄 gameobjectparticle.cpp
字号:
// ***************************************************************
// GameObjectParticle version: 1.0
// -------------------------------------------------------------
// File Name: GameObjectParticle.cpp
// Created: 2007/07/19
// Modified: 2007/07/19 11:38
// Author: Ben
// Msn: bwenpig@gmail.com
// Email: bwenpig@gmail.com
// Description:
//
// Purpose:
// -------------------------------------------------------------
// license:
//
// The contents of this file are subject to the Mozilla Public
// License Version 1.1 (the "License"); you may not use this file
// except in compliance with the License. You may obtain a copy
// of the License at http://www.mozilla.org/MPL/ Software dis-
// tributed under the License is distributed on an "AS IS"
// basis, WITHOUT WARRANTY OF ANY KIND, either express or im-
// plied. See the License for the specific language governing
// rights and limitations under the License.
//
// The Initial Developer of the Original Code is Ben .
// Copyright (C) 2007 - All Rights Reserved.
// ***************************************************************
#include "StdAfx.h"
#include ".\gameobjectparticle.h"
CGameObjectParticle::CGameObjectParticle(void)
{
m_hgeSprite = NULL;
m_hgeParticle = NULL;
m_hgePsi = NULL;
m_Type = 0;
}
CGameObjectParticle::~CGameObjectParticle(void)
{
SafeDelete(m_hgeSprite);
SafeDelete(m_hgeParticle);
}
//************************************
// <p>Description: Create 粒子创建</p>
// <p>Parameters: </p>
// <p> LPCTSTR lpName 对象名字</p>
// <p> _SIZE siSize 对象大小</p>
// <p> HTEXTURE Texture 纹理</p>
// <p> _CString szPsiFileName 粒子属性文件</p>
//
// <p>Returns: bool</p>
//************************************
bool CGameObjectParticle::Create(LPCTSTR lpName,_SIZE siSize,CResource* pResource,_CString szPsiFileName){
__super::Create(lpName,siSize,Type_Particle);
_SIZE size = pResource->GetSize();
m_hgeSprite = new hgeSprite(pResource->GetTexture(),0,0,size.cx,size.cy);
m_hgeParticle = new hgeParticleSystem(szPsiFileName,m_hgeSprite);
Fire();
return true;
}
//************************************
// <p>Description: Create 粒子创建</p>
// <p>Parameters: </p>
// <p> LPCTSTR lpName 对象名字</p>
// <p> _SIZE siSize 对象大小</p>
// <p> HTEXTURE Texture 纹理</p>
// <p> DWORD dwType 粒子类型</p>
//
// <p>Returns: bool</p>
//************************************
bool CGameObjectParticle::Create(LPCTSTR lpName,_SIZE siSize,CResource* pResource,DWORD dwType,_CString szPsiFileName){
__super::Create(lpName,siSize,Type_Particle);
int nLength,nHeight; //纹理中的行数与列数
_POINT poiPt; //粒子纹理起始点
_SIZE TextureSize = pResource->GetSize(); //纹理大小
nLength = (int)(TextureSize.cx / siSize.cx);
nHeight = (int)(TextureSize.cy / siSize.cy);
poiPt.x = (dwType%nLength)*siSize.cx;
poiPt.y = (dwType/nHeight)*siSize.cy;
m_hgeSprite = new hgeSprite(pResource->GetTexture(),poiPt.x,poiPt.y,siSize.cx,siSize.cy);
m_hgeParticle = new hgeParticleSystem(szPsiFileName,m_hgeSprite);
Fire();
return true;
}
//************************************
// <p>Description: Render 渲染粒子</p>
// <p>Parameters: </p>
// <p> WPARAM wParam Update时间</p>
//
// <p>Returns: void</p>
//************************************
void CGameObjectParticle::Render(WPARAM wParam/* =NULL */){
m_hgeParticle->Update(*((float*)wParam));
m_hgeParticle->Render();
return;
}
//************************************
// <p>Description: Fire 粒子开始</p>
// <p>Parameters: </p>
//
// <p>Returns: void</p>
//************************************
void CGameObjectParticle::Fire(){
m_hgeParticle->Fire();
return;
}
//************************************
// <p>Description: FireAt 粒子从某点开始</p>
// <p>Parameters: </p>
// <p> _POINT poiFirePoint 粒子从该点开始</p>
//
// <p>Returns: void</p>
//************************************
void CGameObjectParticle::FireAt(_POINT poiFirePoint){
m_hgeParticle->FireAt(poiFirePoint.x,poiFirePoint.y);
return;
}
//************************************
// <p>Description: Stop 粒子停止</p>
// <p>Parameters: </p>
//
// <p>Returns: void</p>
//************************************
void CGameObjectParticle::Stop(){
m_hgeParticle->Stop();
return;
}
//************************************
// <p>Description: GetAge 返回粒子生命值</p>
// <p>Parameters: </p>
//
// <p>Returns: int</p>
//************************************
int CGameObjectParticle::GetAge(){
return (int)m_hgeParticle->GetAge();
}
//************************************
// <p>Description: GetParticlesAlive 返回粒子生还数目</p>
// <p>Parameters: </p>
//
// <p>Returns: int</p>
//************************************
int CGameObjectParticle::GetParticlesAlive(){
return m_hgeParticle->GetParticlesAlive();
}
//************************************
// <p>Description: GetParticleInfo 返回粒子属性指针</p>
// <p>Parameters: </p>
//
// <p>Returns: hgeParticleSystemInfo*</p>
//************************************
hgeParticleSystemInfo* CGameObjectParticle::GetParticleInfo(){
return &(m_hgeParticle->info);
}
//************************************
// <p>Description: QueryInterface 查询接口</p>
// <p>Parameters: </p>
// <p> const IID & Guid 接口GUID</p>
// <p> DWORD dwQueryVer 接口版本</p>
//
// <p>Returns: void*</p>
//************************************
void* CGameObjectParticle::QueryInterface(const IID & Guid, DWORD dwQueryVer){
QUERYINTERFACE(IGameObjectParticle,Guid,dwQueryVer);
QUERYINTERFACE(IGameObject,Guid,dwQueryVer);
QUERYINTERFACE(IBaseObject,Guid,dwQueryVer);
QUERYINTERFACE_IUNKNOWNEX(IGameObjectParticle,Guid,dwQueryVer);
return NULL;
}
//************************************
// <p>Description: =操作重载</p>
// <p>Parameters: </p>
// <p> const CGameObjectParticle & GameObject</p>
//
// <p>Returns: CGameObjectParticle&</p>
//************************************
CGameObjectParticle& CGameObjectParticle::operator=(CGameObjectParticle& GameObject){
CGameObject* pOtherBaseClass = static_cast<CGameObject *>(&GameObject);
CGameObject* pMySelfBaseClass = static_cast<CGameObject *>(this);
*pMySelfBaseClass = *pOtherBaseClass;
m_Type = GameObject.m_Type;
if(m_hgeSprite)
SafeDelete(m_hgeSprite);
if(m_hgeParticle)
SafeDelete(m_hgeParticle);
return *this;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -