blob: 7ed9c16b291b20292b2686037e78374747137e51 [file] [log] [blame]
// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef SRC_UI_LIB_ESCHER_PAPER_PAPER_SCENE_H_
#define SRC_UI_LIB_ESCHER_PAPER_PAPER_SCENE_H_
#include "src/ui/lib/escher/base/reffable.h"
#include "src/ui/lib/escher/geometry/bounding_box.h"
#include "src/ui/lib/escher/paper/paper_light.h"
#include "src/ui/lib/escher/paper/paper_readme.h"
namespace escher {
// PaperScene describes high-level scene parameters, such the number of point
// lights and their parameters, and the scene's bounding-box.
//
// NOTE: this is a placeholder; we may want to be more elaborate here. Should
// this provide virtual methods? Or should it become dumber: a non-reffable
// struct that is copied into PaperRenderer::FrameData.
class PaperScene : public Reffable {
public:
BoundingBox bounding_box;
PaperAmbientLight ambient_light;
std::vector<PaperPointLight> point_lights;
float width() const { return bounding_box.width(); }
float height() const { return bounding_box.height(); }
float depth() const { return bounding_box.depth(); }
size_t num_point_lights() const { return point_lights.size(); }
};
} // namespace escher
#endif // SRC_UI_LIB_ESCHER_PAPER_PAPER_SCENE_H_