Beispiel #1
0
void MinimapEyeshot::loadMinimapMask()
{
	if(!m_pMinimapMask)
	{
		m_pMinimapMask = getRenderEngine()->getRenderSystem()->getTextureManager()->createTextureFromFile("data\\Maps\\MinimapMask.raw",FO_POINT,FO_POINT,FO_NONE,TAM_CLAMP_TO_EDGE,TAM_CLAMP_TO_EDGE);
	}
}
Beispiel #2
0
void GroundEyeshot::drawTileLine()
{
	int nViewTopX = m_Eyeshot.getViewTopX();
	int nViewTopY = m_Eyeshot.getViewTopY();
	xs::Point ktl(nViewTopX / 64,nViewTopY / 32);

	int col = m_Eyeshot.getViewWidth() / 64 + 2;
	int row = m_Eyeshot.getViewHeight() / 32 + 2;
	int w =  col * 64;
	int h = col * 32;

	IRenderEngine *pRenderEngine = getRenderEngine();
	IRenderSystem *pRenderSystem = pRenderEngine->getRenderSystem();
	ColorValue color = pRenderSystem->getColor();
	pRenderSystem->beginPrimitive(PT_LINES);
	// 绿色
	pRenderSystem->setColor(ColorValue(0,0.48f,0));

	int x = -(nViewTopX - ktl.x * 64);
	int y = -(nViewTopY - ktl.y * 32) - h + 16;
	for(int i = 0; i < col; i++)
	{
		xs::Point ptFrom (x,y);
		xs::Point ptTo (x + w, y + h);
		pRenderSystem->sendVertex(Vector3(ptFrom.x,ptFrom.y,-0.998));
		pRenderSystem->sendVertex(Vector3(ptTo.x,ptTo.y,-0.998));
		y += 32;
	}

	for(int i = 0; i < row; i++)
	{
		xs::Point ptFrom (x,y);
		xs::Point ptTo (x + w, y + h);

		pRenderSystem->sendVertex(Vector3(ptFrom.x,ptFrom.y,-0.998));
		pRenderSystem->sendVertex(Vector3(ptTo.x,ptTo.y,-0.998));
		ptFrom.x = x; ptFrom.y = y;
		ptTo.x = x + w; ptTo.y = y - h;

		pRenderSystem->sendVertex(Vector3(ptFrom.x,ptFrom.y,-0.998));
		pRenderSystem->sendVertex(Vector3(ptTo.x,ptTo.y,-0.998));

		y += 32;
	}

	for(int i = 0; i < col; i++)
	{
		xs::Point ptFrom (x,y);
		xs::Point ptTo (x + w, y - h);

		pRenderSystem->sendVertex(Vector3(ptFrom.x,ptFrom.y,-0.998));
		pRenderSystem->sendVertex(Vector3(ptTo.x,ptTo.y,-0.998));

		y += 32;
	}
	pRenderSystem->endPrimitive();
	pRenderSystem->setColor(color);
}
Beispiel #3
0
ITexture* MinimapTile::loadResource()
{
	const std::string& path = m_pParent->getPath();
	char filename[MAX_PATH];
	sprintf(filename,"%s\\%d_%d.dds",path.c_str(),m_ptCoord.x,m_ptCoord.y);

	m_pParent->loadMinimapMask();
	return getRenderEngine()->getRenderSystem()->getTextureManager()->createTextureFromFile(filename,FO_LINEAR,FO_LINEAR,FO_NONE,TAM_CLAMP_TO_EDGE,TAM_CLAMP_TO_EDGE);
}
Beispiel #4
0
	ModelInstance::~ModelInstance()
	{
		STLDeleteSequence(m_vRibbonSystem);
		STLDeleteSequence(m_vParticleSystem);
		STLDeleteSequence(m_vMmParticleSystem);
		STLDeleteSequence(m_subModels);
		IModelManager *pModelManager = getRenderEngine()->getModelManager();
		pModelManager->releaseModel(m_pModel);
	}
Beispiel #5
0
void GroundEyeshot::setDefaultTexture(const char* szFileName)
{
	m_defaultTexture = szFileName;
	if(m_pDefaultTexture)
	{
		m_pDefaultTexture->release();
	}
	m_pDefaultTexture = getRenderEngine()->getRenderSystem()->getTextureManager()->createTextureFromFile(szFileName,FO_POINT,FO_POINT,FO_NONE,TAM_WRAP,TAM_WRAP);
}
Beispiel #6
0
void CClientGameEngine::update(float elapsedTime)
{
	m_inputEngine->onFrame(elapsedTime);
	getRenderEngine()->onFrame(elapsedTime);

	m_syncTime += elapsedTime;
	if(m_syncTime >= 0.25f)
	{
		boost::shared_ptr<CEvent> syncHero(new CHeroSyncEvent());
		getEventEngine()->newEvent(syncHero);
		m_syncTime = 0;
	}
}
Beispiel #7
0
	void Material::initialize()
	{
		ITextureManager *pTextureManager = getRenderEngine()->getRenderSystem()->getTextureManager();

		size_t size = m_vLayers.size();
		for(size_t i = 0;i < size;i++)
		{
			MaterialLayer& layer = m_vLayers[i];
			if(!layer.m_szTexture.empty())
			{
				layer.m_pTexture = pTextureManager->createTextureFromFile(layer.m_szTexture,FO_LINEAR,FO_LINEAR,FO_LINEAR);
			}
		}
	}
EdgeblurPostEffect::EdgeblurPostEffect()
{
	EffectMacro macro;
	macro.name = "MAX_BONE_NUM";
	macro.define = "59";
	if(postEffect == 0)
	{
		//Shader
		postEffect = getRenderEngine()->getRenderSystem()->getEffectFileManager()->getEffectFile(_T("Shader\\Edgeblur.fx"),&macro, 1);
		if (!postEffect)
		{
			MERRORLN(_T("加载Edgeblur全屏后处理Shader失败!!"));
		}
	}
	resetBlendFactor();

	enableMask = PEM_BLUR;
	enabled = true;
}
Beispiel #9
0
//  设置远景贴图;
//  @param szFileName 贴图文件名;
void GroundEyeshot::SetDistanceTexture(const char* szFileName)
{
    if (szFileName == NULL)
    {
        ASSERT(false);
        return;
    }

    m_strDistanceTextureFileName = szFileName;
    if(m_pDistanceTexture != NULL)
    {
        m_pDistanceTexture->release();
        m_pDistanceTexture = NULL;
    }
    if (!m_strDistanceTextureFileName.empty())
    {
        m_pDistanceTexture = getRenderEngine()->getRenderSystem()->getTextureManager()->createTextureFromFile(m_strDistanceTextureFileName,
            FO_POINT, FO_POINT, FO_NONE,TAM_WRAP, TAM_WRAP);
        ASSERT(m_pDistanceTexture != NULL);
    }
}
Beispiel #10
0
	void SubModelInstance::setTexture(int layer,const char* szName)
	{
		Assert(layer >= 0 && layer < m_mtlOrigin.numLayers());
		MaterialLayer *pLayer = m_mtl.getLayer(layer);

		const std::string& textureName = pLayer->m_szTexture;
		if(StringHelper::casecmp(textureName,szName) == 0)return;

		safeRelease(pLayer->m_pTexture);
		pLayer->m_szTexture = "";

		if(!szName)return;

		IRenderEngine *pRenderEngine = getRenderEngine();
		IRenderSystem *pRenderSystem = pRenderEngine->getRenderSystem();
		ITextureManager *pTextureManager = pRenderSystem->getTextureManager();
		pLayer->m_pTexture = pTextureManager->createTextureFromFile(szName,FO_LINEAR,FO_LINEAR,FO_LINEAR);
		if(pLayer->m_pTexture)
		{
			pLayer->m_szTexture = szName;
		}
	}
Beispiel #11
0
	bool ModelInstance::setModel(const char* modelName,ModelNode *pNode)
	{
		IModelManager *pModelManager = getRenderEngine()->getModelManager();
		IModel *pModel = pModelManager->loadModel(modelName);
		if(!pModel)return false;

		m_pModel = pModel;
		m_pNode = pNode;

		//设置buffer		
		m_pIB = m_pModel->getIndexBuffer();
		m_pVBTexcoord = m_pModel->getTexcoordBuffer();
		m_pVBBlendWeight = m_pModel->getBlendWeightBuffer();
		m_pBlendShaderProgram = m_pModel->getBlendShaderProgram();//需要再构造SubModelInstance前设置
		m_needDrawShadow = m_pModel->needDrawShadow();

		//创建子mesh
		uint numSubModels = m_pModel->getNumSubModels();
		for(uint i = 0;i < numSubModels;i++)
		{
			ISubModel *pSubModel = m_pModel->getSubModel(i);
			SubModelInstance *pSubModelInstance = new SubModelInstance(this,pSubModel, i);
			m_subModels.push_back(pSubModelInstance);
			m_vBlendIndices.push_back( m_pModel->getBlendIndicesBuffer(i));//保存骨骼混合的索引buffer
		}

		//创建骨骼树
		if( !m_skeleton.create(m_pModel->getCoreSkeletion() ) )
		{
			return false;
		}
		//uint numBones = m_pModel->numBones();
		//for(uint i = 0;i < numBones;i++)
		//{
		//	BoneData *pData = m_pModel->getBone(i);
		//	Bone *pBone = m_skeleton.createBone(m_pNode);
		//	loadBone(pBone,pData);
		//}
		////骨骼树形结构构建
		//for(size_t i = 0;i < numBones;i++)
		//{
		//	BoneData *pBone = m_pModel->getBone(i);
		//	if(pBone->parentId != -1)
		//	{
		//		for(size_t j = 0;j < numBones;j++)
		//		{
		//			BoneData *pParent = m_pModel->getBone(j);
		//			if(pBone->parentId == pParent->objectId)
		//			{
		//				m_skeleton.getBone(i)->setParent(m_skeleton.getBone(j));
		//				break;
		//			}
		//		}
		//	}
		//	m_skeleton.getBone(i)->setPrecomputeMatrix(pBone->precomputeMtx);
		//}

		//ParticleSystem
		size_t size = m_pModel->numParticleSystem();
		for(size_t j = 0;j < size;j++)
		{
			ParticleSystem *pParticleSystem = new ParticleSystem;
			pParticleSystem->m_pData = m_pModel->getParticleSystemData(j);
			pParticleSystem->m_pBone = m_skeleton.getBone(pParticleSystem->m_pData->boneObjectId);
			pParticleSystem->m_pNode = m_pNode;
			m_vParticleSystem.push_back(pParticleSystem);
		}

		//RibbonSystem
		size = m_pModel->numRibbonSystem();
		for(size_t j = 0;j < size;j++)
		{
			RibbonSystem *pRibbonSystem = new RibbonSystem;
			pRibbonSystem->m_pData = m_pModel->getRibbonSystemData(j);
			pRibbonSystem->m_pBone = m_skeleton.getBone(pRibbonSystem->m_pData->boneObjectId);
			pRibbonSystem->m_pNode = m_pNode;
			m_vRibbonSystem.push_back(pRibbonSystem);
		}

		//MmParticleSystem
		size = m_pModel->numMmParticleSystem();
		for(size_t j = 0;j < size;j++)
		{
			MmParticleSystem *pMmPs = new MmParticleSystem;
			pMmPs->m_pData = m_pModel->getMmParticleSystem(j);
			pMmPs->m_pNode = m_pNode;
			pMmPs->m_pBone = m_skeleton.getBone(pMmPs->m_pData->bone);
			m_vMmParticleSystem.push_back(pMmPs);
		}

		if(m_pModel->getAnimationCount())
			setCurrentAnimation(pModel->getAnimation(0)->getName());

		return true;
	}