blob: 1c5f05b2ecb6007236e1a3fa954a69e56abd07bc [file] [log] [blame]
// Copyright 2017 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.
#pragma once
namespace scene_manager {
class Import;
class GpuMemory;
class HostMemory;
class Image;
class ImagePipe;
class Buffer;
class EntityNode;
class Node;
class ShapeNode;
class Scene;
class CircleShape;
class RectangleShape;
class RoundedRectangleShape;
class MeshShape;
class Material;
class DisplayCompositor;
class LayerStack;
class Layer;
class Camera;
class Renderer;
class Scene;
class DirectionalLight;
class ResourceVisitor {
public:
// Memory resources.
virtual void Visit(GpuMemory* r) = 0;
virtual void Visit(HostMemory* r) = 0;
virtual void Visit(Image* r) = 0;
virtual void Visit(ImagePipe* r) = 0;
virtual void Visit(Buffer* r) = 0;
// Nodes.
virtual void Visit(EntityNode* r) = 0;
virtual void Visit(ShapeNode* r) = 0;
// Shapes.
virtual void Visit(CircleShape* r) = 0;
virtual void Visit(RectangleShape* r) = 0;
virtual void Visit(RoundedRectangleShape* r) = 0;
virtual void Visit(MeshShape* r) = 0;
// Materials.
virtual void Visit(Material* r) = 0;
// Layers.
virtual void Visit(DisplayCompositor* r) = 0;
virtual void Visit(LayerStack* r) = 0;
virtual void Visit(Layer* r) = 0;
// Scene, camera, lighting.
virtual void Visit(Scene* r) = 0;
virtual void Visit(Camera* r) = 0;
virtual void Visit(Renderer* r) = 0;
virtual void Visit(DirectionalLight* r) = 0;
// Imported resources.
virtual void Visit(Import* r) = 0;
};
} // namespace scene_manager