示例#1
0
void CAXModel::UpdateMatrix(void)
{
	D3DXMATRIX matPosition;
	D3DXMATRIX matSize;
	D3DXMATRIX matRotate;
	D3DXMATRIX matAnchorPoint;
	D3DXMATRIX matComplate;
	
	D3DXMATRIX mT;
	{
		AVector3 vLeft(1.0f, 0.0f, 0.0f);
		AVector3 vUp(0.0f, 1.0f, 0.0f);
		AVector3 vLook(0.0f, 0.0f, 1.0f);
		AVector3 vUpNew, vLeftNew, vLookNew;
		D3DXMATRIX mX, mY, mZ;

		D3DXMatrixRotationX(&mX, m_fRotX);
		D3DXMatrixRotationY(&mY, m_fRotY);
		D3DXMatrixRotationZ(&mZ, -m_fRotZ);

		D3DXMatrixTranslation(&mT, vUp.x, vUp.y, vUp.z);
		mT *= mX; D3DXMatrixTranslation(&mT, mT._41, mT._42, mT._43);
		mT *= mY; D3DXMatrixTranslation(&mT, mT._41, mT._42, mT._43);
		mT *= mZ; vUpNew = AVector3(mT._41, mT._42, mT._43);

		D3DXMatrixTranslation(&mT, vLeft.x, vLeft.y, vLeft.z);
		mT *= mX; D3DXMatrixTranslation(&mT, mT._41, mT._42, mT._43);
		mT *= mY; D3DXMatrixTranslation(&mT, mT._41, mT._42, mT._43);
		mT *= mZ; vLeftNew = AVector3(mT._41, mT._42, mT._43);

		D3DXMatrixTranslation(&mT, vLook.x, vLook.y, vLook.z);
		mT *= mX; D3DXMatrixTranslation(&mT, mT._41, mT._42, mT._43);
		mT *= mY; D3DXMatrixTranslation(&mT, mT._41, mT._42, mT._43);
		mT *= mZ; vLookNew = AVector3(mT._41, mT._42, mT._43);

		mT._11 = vLeftNew.x;   mT._12 = vLeftNew.y;   mT._13 = vLeftNew.z;   mT._14 = 0.0f;		// Left Vector
		mT._21 = vUpNew.x;     mT._22 = vUpNew.y;     mT._23 = vUpNew.z;     mT._24 = 0.0f;		// Up Vector
		mT._31 = vLookNew.x;   mT._32 = vLookNew.y;   mT._33 = vLookNew.z;   mT._34 = 0.0f;		// Front Vector
		mT._41 = 0.0f;         mT._42 = 0.0f;         mT._43 = 0.0f;         mT._44 = 1.0f;		// Translation
	}

	D3DXMatrixTranslation(&matAnchorPoint, m_vAnchorPoint.x, m_vAnchorPoint.y, m_vAnchorPoint.z);
	D3DXMatrixScaling(&matSize, m_vSize.x, m_vSize.y, m_vSize.z);
	D3DXMatrixTranslation(&matPosition, m_vPosition.x, m_vPosition.y, m_vPosition.z);

	m_matComplate = matAnchorPoint * matSize * mT * matPosition;
	
	m_bUpdateMatrix = false;
}
示例#2
0
 int totalNQueens(int n) {
     // Start typing your C/C++ solution below
     // DO NOT write int main() function
     vector<bool> vCol(n);
     vector<bool> vLeft(2 * n - 1);
     vector<bool> vRight(2 * n - 1);
     
     int ans = 0;
     
     for (int i = 0; i < n; i++) {
         vCol[i] = false;
     }
     for (int i = 0; i < 2 * n - 1; i++) {
         vLeft[i] = vRight[i] = false;
     }
     
     vector<int> a;
     DFS(ans, a, vCol, vLeft, vRight, 0, n);
     
     return ans;
 }
示例#3
0
void TextExplainNode::UpdateText(Node* rootWidget, const string* text, int cfgId)
{
    
    auto node_TextExplain = rootWidget->getChildByName<Node*>("Node_TextExplain");
    node_TextExplain->setVisible(true);
    
    auto layout_FullScreen = node_TextExplain->getChildByName<Layout*>("Layout_FullScreen");

    layout_FullScreen->setVisible(true);
    layout_FullScreen->setTouchEnabled(true);
    layout_FullScreen->setSwallowTouches(false);
    layout_FullScreen->addClickEventListener([=](Ref* sender)
     {
         node_TextExplain->setVisible(false);
         layout_FullScreen->setVisible(false);
         layout_FullScreen->setTouchEnabled(false);
     });

    auto layout_Background = node_TextExplain->getChildByName<Layout*>("Layout_Background");
    auto text_Explain = layout_Background->getChildByName<Text*>("Text_Explain");
    text_Explain->setString(text->c_str());
    
    auto layout_restrain = layout_Background->getChildByName<Layout*>("Layout_Restrain");
    if ( cfgId == 0 || (cfgId / 1000000 != 205) ) {
        layout_restrain->setVisible(false);
        return;
    }
    layout_restrain->setVisible(true);
    
    auto layout_propMain = layout_restrain->getChildByName<Layout*>("Layout_PropMain");
    UIUtils::getInstance()->showProperImg(layout_propMain, cfgId, false);
    
    CfgDataRow dataRow(cfgId);
    // 属性配置表的id与item的属性字段id不统一,故作如下转换
    auto properId = (int)ProCfgId::CfgBaseId + dataRow.GetValue(CfgField::PropertyID)->asInt();
    CfgDataRow proDataRow(properId);
    
    // 1001 ~ 1005
    float result = 1.0;
    vector<int> vLeft(2, 0);
    vector<int> vRight(2, 0);
    int leftIdx = 0;
    int rightIdx = 0;
    for (int proId = 1001; proId <= 1005; ++proId) {
        switch (proId) {
            case (int)ProCfgId::MeleeCo :
                result = proDataRow.GetValue(CfgField::MeleeCo_F)->asFloat();
                break;
            case (int)ProCfgId::FighterCo :
                result = proDataRow.GetValue(CfgField::FighterCo_F)->asFloat();
                break;
            case (int)ProCfgId::MagicCo :
                result = proDataRow.GetValue(CfgField::MagicCo_F)->asFloat();
                break;
            case (int)ProCfgId::RangedCo :
                result = proDataRow.GetValue(CfgField::RangedCo_F)->asFloat();
                break;
            case (int)ProCfgId::FlyingCo :
                result = proDataRow.GetValue(CfgField::FlyingCo_F)->asFloat();
                break;
        }
        
        if (result < 1) {
            vLeft[leftIdx++] = proId;
        }
        else if(result > 1) {
            vRight[rightIdx++] = proId;
        }
    }
    
    int i = 1;
    for(int proId : vLeft) {
        auto leftProNode = layout_restrain->getChildByName(StringUtils::format("Layout_PropLeft%d", i++));
        UIUtils::getInstance()->showRealProper(leftProNode, proId, false);
    }
    
    i = 1;
    for(int proId : vRight) {
        auto RightProNode = layout_restrain->getChildByName(StringUtils::format("Layout_PropRight%d", i++));
        UIUtils::getInstance()->showRealProper(RightProNode, proId, false);
    }
    
    // 技能、buff、属性描述
    auto text_Buff = layout_restrain->getChildByName<Text *>("Text_Buff");
    auto text_Skill = layout_restrain->getChildByName<Text *>("Text_Skill");
    auto text_Attr = layout_restrain->getChildByName<Text *>("Text_Attr");
    
    auto vi_skill = dataRow.GetValue(CfgField::SkillID_V)->asValueVector();
    auto iter_skill = vi_skill.begin();
    auto skillId = iter_skill->asInt();
    
    CfgDataRow dataRow_Skill(skillId);
    
    auto langText = MultiLanguage::getInstance()->GetText((int)LanguageIdEnum::SkillId);
    langText += MultiLanguage::getInstance()->GetText(dataRow_Skill.GetValue(CfgField::Name)->asInt());
    text_Skill->setString(langText);
    
    auto bufferData = dataRow_Skill.GetValue(CfgField::BuffID_V)->asValueVector();
    if (!bufferData.empty()) {
        auto iter_buff = bufferData.begin();
        auto bufferId = iter_buff->asInt();
        langText = MultiLanguage::getInstance()->GetText((int)LanguageIdEnum::BufferId);
        CfgDataRow dataRow_Buffer(bufferId);
        langText += MultiLanguage::getInstance()->GetText(dataRow_Buffer.GetValue(CfgField::Name)->asInt());
        text_Buff->setString(langText);
        text_Buff->setVisible(true);
    }else
    {
        text_Buff->setVisible(false);
    }
    
    langText = MultiLanguage::getInstance()->GetText((int)LanguageIdEnum::LifeId);
    langText += StringUtils::format("%d", dataRow.GetValue(CfgField::Hp)->asInt());
    
    langText += " " + MultiLanguage::getInstance()->GetText((int)LanguageIdEnum::PowerId);
    langText += StringUtils::format("%d", dataRow.GetValue(CfgField::Atk)->asInt());
    
    langText += " " + MultiLanguage::getInstance()->GetText((int)LanguageIdEnum::SpeedId);
    langText += StringUtils::format("%g", dataRow.GetValue(CfgField::Spd_F)->asFloat());
    
    text_Attr->setString(langText);
    
}