void CRatingMgr::GivePlayerAdditive(char * pszName) { ADDITIVE * pAdditive = GetAdditive(pszName); if (!pAdditive) { // assert out here return; } GivePlayerAdditive(pAdditive); }
void wxSVGAnimateTransformElement::ApplyAnimation() { wxSVGElement* targetElement = GetTargetElement(); if (targetElement == NULL || GetDur() <= 0 || (GetTo().GetPropertyType() != wxSVG_ANIMATED_LENGTH && GetTo().GetPropertyType() != wxSVG_ANIMATED_LENGTH_LIST)) return; wxSVGLengthList values; if (GetCurrentTime() >= GetStartTime() + GetDur()) { if (GetTo().GetPropertyType() == wxSVG_ANIMATED_LENGTH) { values.push_back(GetTo().GetLength()); } else { values = GetTo().GetLengthList(); } } else if (GetCurrentTime() >= GetStartTime() && GetFrom().GetPropertyType() == GetTo().GetPropertyType() && GetFrom().GetLengthList().size() == GetTo().GetLengthList().size()) { if (GetTo().GetPropertyType() == wxSVG_ANIMATED_LENGTH) { values.Add(wxSVGLength(GetTo().GetLength().GetUnitType(), GetFrom().GetLength().GetValue() + (GetTo().GetLength().GetValue() - GetFrom().GetLength().GetValue())* (GetCurrentTime() - GetStartTime())/GetDur())); } else { for (unsigned int i = 0; i < GetFrom().GetLengthList().size(); i++) { const wxSVGLength& from = GetFrom().GetLengthList()[i]; const wxSVGLength& to = GetTo().GetLengthList()[i]; values.Add(wxSVGLength(to.GetUnitType(), from.GetValue() + (to.GetValue() - from.GetValue())*(GetCurrentTime() - GetStartTime())/GetDur())); } } } else { return; } wxSVGTransformable* transformable = wxSVGTransformable::GetSVGTransformable(*targetElement); if (transformable != NULL) { if (m_transformIdx == -1 || m_transformIdx >= (int) transformable->GetTransformList().GetAnimVal().size()) { wxSVGTransformList& transforms = transformable->GetTransformList().GetAnimVal(); if (GetAdditive() != wxSVG_ANIMATION_ADDITIVE_SUM) { transforms.Clear(); } wxSVGTransform* transform = new wxSVGTransform(); UpdateTransform(*transform, GetType(), values); transforms.Add(transform); m_transformIdx = transforms.size() - 1; } else { UpdateTransform(transformable->GetTransformList().GetAnimVal()[m_transformIdx], GetType(), values); } } else { wxSVGTransformList transforms; wxSVGTransform* transform = new wxSVGTransform(); UpdateTransform(*transform, GetType(), values); transforms.Add(transform); targetElement->SetAnimatedValue(GetAttributeName(), wxSVGAnimatedType(transforms)); } }
bool CRatingMgr::PlayerHasAdditive(char * pszName) { ASSERT (pszName != LTNULL); ADDITIVE * pAdd = GetAdditive(pszName); if (!pAdd) return false; if (pAdd->nSlot == -1) return false; return true; }
void SpriteBase::OnDraw() { auto TexPtr = App::GetApp()->GetResource<TextureResource>(m_TextureResName); auto Dev = App::GetApp()->GetDeviceResources(); auto pD3D11DeviceContext = Dev->GetD3DDeviceContext(); auto RenderState = Dev->GetRenderState(); //ワールド行列の決定 Mat4x4 World; World.affineTransformation2D( m_Scale, //スケーリング Vec2(0, 0), //回転の中心(重心) m_Rot, //回転角度 m_Pos //位置 ); //射影行列の決定 float w = static_cast<float>(App::GetApp()->GetGameWidth()); float h = static_cast<float>(App::GetApp()->GetGameHeight()); Mat4x4 Proj(XMMatrixOrthographicLH(w, h, -1.0, 1.0f)); //行列の合成 World *= Proj; //コンスタントバッファの準備 SpriteConstantBuffer sb; //エミッシブ加算。 sb.Emissive = m_Emissive; //行列の設定 sb.World = World; //コンスタントバッファの更新 pD3D11DeviceContext->UpdateSubresource(CBSprite::GetPtr()->GetBuffer(), 0, nullptr, &sb, 0, 0); //ストライドとオフセット UINT stride = sizeof(VertexPositionColorTexture); UINT offset = 0; //頂点バッファのセット pD3D11DeviceContext->IASetVertexBuffers(0, 1, m_SquareMesh->GetVertexBuffer().GetAddressOf(), &stride, &offset); //インデックスバッファのセット pD3D11DeviceContext->IASetIndexBuffer(m_SquareMesh->GetIndexBuffer().Get(), DXGI_FORMAT_R16_UINT, 0); //描画方法(3角形) pD3D11DeviceContext->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST); //コンスタントバッファの設定 ID3D11Buffer* pConstantBuffer = CBSprite::GetPtr()->GetBuffer(); ID3D11Buffer* pNullConstantBuffer = nullptr; //頂点シェーダに渡す pD3D11DeviceContext->VSSetConstantBuffers(0, 1, &pConstantBuffer); //ピクセルシェーダに渡す pD3D11DeviceContext->PSSetConstantBuffers(0, 1, &pConstantBuffer); //シェーダの設定 pD3D11DeviceContext->VSSetShader(VSPCTSprite::GetPtr()->GetShader(), nullptr, 0); pD3D11DeviceContext->PSSetShader(PSPCTSprite::GetPtr()->GetShader(), nullptr, 0); //インプットレイアウトの設定 pD3D11DeviceContext->IASetInputLayout(VSPCTSprite::GetPtr()->GetInputLayout()); //ブレンドステート switch (m_BlendState) { case BlendState::Opaque: pD3D11DeviceContext->OMSetBlendState(RenderState->GetOpaque(), nullptr, 0xffffffff); break; case BlendState::Trace: pD3D11DeviceContext->OMSetBlendState(RenderState->GetAlphaBlendEx(), nullptr, 0xffffffff); break; case BlendState::Additive: pD3D11DeviceContext->OMSetBlendState(RenderState->GetAdditive(), nullptr, 0xffffffff); break; } //デプスステンシルステート pD3D11DeviceContext->OMSetDepthStencilState(RenderState->GetDepthNone(), 0); //ラスタライザステート pD3D11DeviceContext->RSSetState(RenderState->GetCullBack()); //テクスチャとサンプラーの設定 ID3D11ShaderResourceView* pNull[1] = { 0 }; pD3D11DeviceContext->PSSetShaderResources(0, 1, TexPtr->GetShaderResourceView().GetAddressOf()); //ラッピングサンプラー ID3D11SamplerState* pSampler = RenderState->GetLinearWrap(); pD3D11DeviceContext->PSSetSamplers(0, 1, &pSampler); //描画 pD3D11DeviceContext->DrawIndexed(m_SquareMesh->GetNumIndicis(), 0, 0); //後始末 Dev->InitializeStates(); }