ViewPtr CreateView(const ViewType::Enum& type, const KinectControllerPtr& kinectController, int width, int height) { ViewPtr ptr; switch (type) { case ViewType::Normal: ptr.reset(new View(kinectController, width, height)); break; case ViewType::BwView: ptr.reset(new BwView(kinectController, width, height)); break; case ViewType::BwShaderView: ptr.reset(new BwShaderView(kinectController, width, height)); break; case ViewType::ColorInvertShaderView: ptr.reset(new ColorInvertShaderView(kinectController, width, height)); break; case ViewType::ColorDepthShaderView: ptr.reset(new ColorDepthShaderView(kinectController, width, height)); break; case ViewType::MeshView: ptr.reset(new MeshView(kinectController, width, height)); break; case ViewType::NormalMapView: ptr.reset(new NormalMapView(kinectController, width, height)); break; case ViewType::FatSuitView: ptr.reset(new FatSuitView(kinectController, width, height)); break; case ViewType::PointCloudView: ptr.reset(new MeshView(kinectController, width, height, true)); break; case ViewType::OutlineView: ptr.reset(new OutlineView(kinectController, width, height)); break; case ViewType::Idle: ptr.reset(new IdleView(kinectController, width, height)); break; case ViewType::TestView: ptr.reset(new TestView(kinectController, width, height)); break; case ViewType::FatSuitWireView: ptr.reset(new FatSuitWireView(kinectController, width, height)); break; default: ptr.reset(new View(kinectController, width, height)); break; } return ptr; }