ea::shared_ptr<Technique> Technique::Clone(const ea::string& cloneName) const { ea::shared_ptr<Technique> ret(context_->CreateObject<Technique>()); ret->SetIsDesktop(isDesktop_); ret->SetName(cloneName); // Deep copy passes for (auto i = passes_.begin(); i != passes_.end(); ++i) { Pass* srcPass = i->get(); if (!srcPass) continue; Pass* newPass = ret->CreatePass(srcPass->GetName()); newPass->SetBlendMode(srcPass->GetBlendMode()); newPass->SetDepthTestMode(srcPass->GetDepthTestMode()); newPass->SetLightingMode(srcPass->GetLightingMode()); newPass->SetDepthWrite(srcPass->GetDepthWrite()); newPass->SetAlphaToCoverage(srcPass->GetAlphaToCoverage()); newPass->SetIsDesktop(srcPass->IsDesktop()); newPass->SetVertexShader(srcPass->GetVertexShader()); newPass->SetPixelShader(srcPass->GetPixelShader()); newPass->SetVertexShaderDefines(srcPass->GetVertexShaderDefines()); newPass->SetPixelShaderDefines(srcPass->GetPixelShaderDefines()); newPass->SetVertexShaderDefineExcludes(srcPass->GetVertexShaderDefineExcludes()); newPass->SetPixelShaderDefineExcludes(srcPass->GetPixelShaderDefineExcludes()); } return ret; }
SharedPtr<Technique> Technique::Clone(const String& cloneName) const { SharedPtr<Technique> ret(new Technique(context_)); ret->SetIsDesktop(isDesktop_); ret->SetName(cloneName); // Deep copy passes for (Vector<SharedPtr<Pass> >::ConstIterator i = passes_.Begin(); i != passes_.End(); ++i) { Pass* srcPass = i->Get(); if (!srcPass) continue; Pass* newPass = ret->CreatePass(srcPass->GetName()); newPass->SetBlendMode(srcPass->GetBlendMode()); newPass->SetDepthTestMode(srcPass->GetDepthTestMode()); newPass->SetLightingMode(srcPass->GetLightingMode()); newPass->SetDepthWrite(srcPass->GetDepthWrite()); newPass->SetAlphaToCoverage(srcPass->GetAlphaToCoverage()); newPass->SetIsDesktop(srcPass->IsDesktop()); newPass->SetVertexShader(srcPass->GetVertexShader()); newPass->SetPixelShader(srcPass->GetPixelShader()); newPass->SetVertexShaderDefines(srcPass->GetVertexShaderDefines()); newPass->SetPixelShaderDefines(srcPass->GetPixelShaderDefines()); newPass->SetVertexShaderDefineExcludes(srcPass->GetVertexShaderDefineExcludes()); newPass->SetPixelShaderDefineExcludes(srcPass->GetPixelShaderDefineExcludes()); } return ret; }
ea::vector<ea::string> Technique::GetPassNames() const { ea::vector<ea::string> ret; for (auto i = passes_.begin(); i != passes_.end(); ++i) { Pass* pass = i->get(); if (pass) ret.push_back(pass->GetName()); } return ret; }
Vector<String> Technique::GetPassNames() const { Vector<String> ret; for (Vector<SharedPtr<Pass> >::ConstIterator i = passes_.Begin(); i != passes_.End(); ++i) { Pass* pass = i->Get(); if (pass) ret.Push(pass->GetName()); } return ret; }