IssuesWidget::IssuesWidget(Context* context) : AEWidget(context), issuelayout_(0) { context_->RegisterSubsystem(this); UI* tbui = GetSubsystem<UI>(); tbui->LoadResourceFile(delegate_, "AtomicEditor/editor/ui/issueswidget.tb.txt"); issuelayout_ = delegate_->GetWidgetByIDAndType<TBLayout>(TBIDC("issuelayout")); assert(issuelayout_); issueList_ = new ListView(context_, "issuelist"); TBWidgetDelegate* issueListWD = issueList_->GetWidgetDelegate(); issueListWD->SetGravity(WIDGET_GRAVITY_ALL); issuelayout_->AddChild(issueListWD); SubscribeToEvent(E_EDITORSHUTDOWN, HANDLER(IssuesWidget, HandleEditorShutdown)); }
SceneEditor3D ::SceneEditor3D(Context* context, const String &fullpath, TBTabContainer *container) : ResourceEditor(context, fullpath, container) { ResourceCache* cache = GetSubsystem<ResourceCache>(); scene_ = new Scene(context_); SharedPtr<File> xmlFile = cache->GetFile(fullpath); if (GetExtension(fullpath) == ".scene") scene_->LoadXML(*xmlFile); else scene_->Load(*xmlFile); scene_->SetUpdateEnabled(false); sceneView_ = new SceneView3D(context_, this); // EARLY ACCESS if (fullpath.Find(String("ToonTown")) != String::NPOS) { sceneView_->GetCameraNode()->SetWorldPosition(Vector3(-119.073, 76.1121, 16.47763)); Quaternion q(0.55, 0.14, 0.8, -0.2); sceneView_->SetYaw(q.YawAngle()); sceneView_->SetPitch(q.PitchAngle()); sceneView_->GetCameraNode()->SetWorldRotation(q); } else { Node* playerSpawn = scene_->GetChild("PlayerInfoStart", true); if (playerSpawn) { sceneView_->GetCameraNode()->SetPosition(playerSpawn->GetPosition()); sceneView_->SetYaw(playerSpawn->GetRotation().EulerAngles().y_); } } TBWidgetDelegate* delegate = sceneView_->GetWidgetDelegate(); delegate->SetGravity(WIDGET_GRAVITY_ALL); rootContentWidget_->AddChild(delegate); gizmo3D_ = new Gizmo3D(context_); gizmo3D_->SetView(sceneView_); gizmo3D_->Show(); SubscribeToEvent(E_UPDATE, HANDLER(SceneEditor3D, HandleUpdate)); SubscribeToEvent(E_EDITORACTIVENODECHANGE, HANDLER(SceneEditor3D, HandleEditorActiveNodeChange)); // FIXME: Set the size at the end of setup, so all children are updated accordingly // future size changes will be handled automatically TBRect rect = container_->GetContentRoot()->GetRect(); rootContentWidget_->SetSize(rect.w, rect.h); // TODO: generate this event properly VariantMap eventData; eventData[EditorActiveSceneChange::P_SCENE] = scene_; SendEvent(E_EDITORACTIVESCENECHANGE, eventData); SubscribeToEvent(E_EDITORPLAYSTARTED, HANDLER(SceneEditor3D, HandlePlayStarted)); SubscribeToEvent(E_EDITORPLAYSTOPPED, HANDLER(SceneEditor3D, HandlePlayStopped)); }