GameObjectPtr VoxelWorldTemplate::CreateGameObject() { GameObjectPtr pObj = m_pManager->CreateGameObject(L"VoxelWorld"); VoxelWorldPtr pWorld = m_pManager->GetAllocator()->AllocObject<VoxelWorld>(m_pManager); pObj->AddComponent(pWorld); VoxelWorldRendererPtr pRenderer = m_pManager->GetAllocator()->AllocObject<VoxelWorldRenderer>(m_pManager); pObj->AddComponent(pRenderer); return pObj; }
GameObjectPtr Tpl_Sphere::CreateGameObject() { GameObjectPtr pObj = m_pManager->CreateGameObject(L"Sphere"); MeshDataPtr pMD = boost::shared_dynamic_cast<MeshData>(m_pManager->CreateComponent(L"MeshData")); pMD->SetMeshAsset(L"_sphere_"); pObj->AddComponent(pMD); MeshRendererPtr pMR = boost::shared_dynamic_cast<MeshRenderer>(m_pManager->CreateComponent(L"MeshRenderer")); pObj->AddComponent(pMR); return pObj; }
GameObjectPtr DirLightTpl::CreateGameObject() { GameObjectPtr pObj = m_pManager->CreateGameObject(L"Directional Light"); GameObjectComponentPtr pLight = m_pManager->CreateComponent(L"DirectionalLight"); pObj->AddComponent(pLight); return pObj; }
GameObjectPtr PointLightTpl::CreateGameObject() { GameObjectPtr pObj = m_pManager->CreateGameObject(L"Point Light"); GameObjectComponentPtr pLight = m_pManager->CreateComponent(L"PointLight"); pObj->AddComponent(pLight); return pObj; }
GameObjectPtr CubeTpl::CreateGameObject() { GameObjectPtr pObj = m_pManager->CreateGameObject(L"Cube"); RenderSystemPtr pRS = m_pManager->GetRenderSystem(); MaterialPtr pMaterial = pRS->CreateMaterialFromFile("./assets/standard/material/editor_shape.fx"); MeshPtr pMesh = MeshUtil::CreateCube(2, pMaterial); MeshDataPtr pMD = boost::shared_dynamic_cast<MeshData>(m_pManager->CreateComponent(L"MeshData")); pMD->SetMesh(pMesh); pObj->AddComponent(pMD); MeshRendererPtr pMR = boost::shared_dynamic_cast<MeshRenderer>(m_pManager->CreateComponent(L"MeshRenderer")); pObj->AddComponent(pMR); return pObj; }
void FbxParser::LoadMesh(GameObjectPtr node, FbxNode * fbxNode) { FbxMesh* fbxMesh = static_cast<FbxMesh*>(fbxNode->GetNodeAttribute()); auto mesh = CreateMesh(node, fbxNode); auto renderer = MeshRender::Create(); renderer->mMesh = mesh; renderer->mMaterial = Material::Create(); node->AddComponent(renderer); }
bool Scene::UnSerializeObject(GameObjectPtr pObj, DataStream* pStream) { std::string name; pStream->ReadString(name); pObj->SetName(name); math::Matrix44 local; pStream->Read(&local, sizeof(local)); pObj->SetLocalTransform(local); uint16 nCom = 0; nCom = pStream->ReadInt16(); for(uint16 i = 0; i < nCom; ++i) { std::string comName; pStream->ReadString(comName); GameObjectComponentPtr pCom = m_pObjectManager->CreateComponent(comName); if(pCom == nullptr) { logger() << "failed to create component: " << comName << "\n"; return false; } pObj->AddComponent(pCom); if(false == pCom->UnSerialize(pStream)) { logger() << "failed to load component: " << comName << "\n"; return false; } } uint16 nChild = 0; nChild = pStream->ReadInt16(); for(uint16 i = 0; i < nChild; ++i) { GameObjectPtr pChild = m_pObjectManager->CreateGameObject(""); if(false == UnSerializeObject(pChild, pStream)) { pChild->Clear(); pChild.reset(); return false; } pChild->LinkTo(pObj); } return true; }
GameObjectPtr Tpl_SkyLight::CreateGameObject() { GameObjectPtr pObj = m_pManager->CreateGameObject("Sky Light"); GameObjectComponentPtr pLight = m_pManager->CreateComponent("SkyLight"); if(false == pObj->AddComponent(pLight)) { pObj->Clear(); pObj.reset(); return GameObjectPtr(); } return pObj; }
engine::GameObjectPtr GameScene::CreateObject(const std::wstring& name) { using namespace engine; CString full_name; full_name.Format(L"%s-%d", name.c_str(), m_objNo); GameObjectPtr pObj = m_pCore->CreateGameObject(full_name.GetString()); GameObjectComponentPtr pPM = CreateGameObjectComponent(L"DT_Gizmo"); pObj->AddComponent(pPM); m_objNo++; return pObj; }
void CMainFrame::OnComponentMenu(UINT nID) { using namespace engine; ExtPackage::ComponentClass* pClass = FindClassByMenuID(nID); GameObjectPtr pObj = Project::Instance()->GetSelObject(); if(pObj->GetComponent(pClass->m_name) != GameObjectComponentPtr()) { CString str = pClass->m_name.c_str() + CString(L" can only be added once per object"); MessageBox(str, L"Component Error", MB_ICONERROR); return; } GameObjectComponentPtr pCom = Project::Instance()->CreateGameObjectComponent(pClass->m_name); pObj->AddComponent(pCom); UpdatePropGrid(pObj); return; }