| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- #include <Atomic/IO/Log.h>
- #include <Atomic/Input/InputEvents.h>
- #include <Atomic/Resource/ResourceCache.h>
- #include <Atomic/Graphics/Renderer.h>
- #include <Atomic/Graphics/Camera.h>
- #include "Player.h"
- namespace AtomicPlayer
- {
- Player::Player(Context* context) :
- Object(context)
- {
- viewport_ = new Viewport(context_);
- GetSubsystem<Renderer>()->SetViewport(0, viewport_);
- SubscribeToEvent(E_EXITREQUESTED, HANDLER(Player, HandleExitRequested));
- }
- Player::~Player()
- {
- }
- void Player::HandleExitRequested(StringHash eventType, VariantMap& eventData)
- {
- currentScene_ = 0;
- viewport_ = 0;
- }
- Scene* Player::LoadScene(const String& filename, Camera *camera)
- {
- ResourceCache* cache = GetSubsystem<ResourceCache>();
- SharedPtr<File> file = cache->GetFile(filename);
- if (!file->IsOpen())
- {
- return 0;
- }
- Scene* scene = new Scene(context_);
- if (!scene->LoadXML(*file))
- {
- scene->ReleaseRef();
- return 0;
- }
- if (currentScene_.Null())
- {
- currentScene_ = scene;
- if(!camera)
- {
- PODVector<Node*> cameraNodes;
- scene->GetChildrenWithComponent(cameraNodes, Camera::GetTypeStatic(), true);
- if (cameraNodes.Size())
- {
- camera = cameraNodes[0]->GetComponent<Camera>();
- }
- }
- viewport_->SetScene(scene);
- if (camera)
- viewport_->SetCamera(camera);
- }
- return scene;
- }
- }
|