CameraComponent class

CameraComponent is a component through which a World is observed.

A camera consists of two parts: a Viewport, and a Viewfinder. It also references a World component, which is not mounted to the camera, but the camera still knows about it. The world must be mounted somewhere else in the game tree.

A camera is a regular component that can be placed anywhere in the game tree. Most games will have at least one "main" camera for displaying the main game world. However, additional cameras may also be used for some special effects. These extra cameras may be placed either in parallel with the main camera, or within the world. It is even possible to create a camera that looks at itself. FlameGame has one CameraComponent added by default which is called just

Since CameraComponent is a Component, it is possible to attach other components to it. In particular, adding components directly to the camera is equivalent to adding them to the camera's parent. Components added to the viewport will be affected by the viewport's position, but not by its clip mask. Such components will be rendered on top of the viewport. Components added to the viewfinder will be rendered as if they were part of the world. That is, they will be affected both by the viewport and the viewfinder.



CameraComponent({World? world, Viewport? viewport, Viewfinder? viewfinder, Component? backdrop, List<Component>? hudComponents})
CameraComponent.withFixedResolution({required double width, required double height, World? world, Viewfinder? viewfinder, Component? backdrop, List<Component>? hudComponents})
Create a camera that shows a portion of the game world of fixed size width x height.


backdrop Component
The backdrop component is rendered statically behind the world.
getter/setter pair
children ComponentSet
The children components of this component.
no setterinherited
debugColor Color
The color that the debug output should be rendered with.
getter/setter pairinherited
debugCoordinatesPrecision int?
How many decimal digits to print when displaying coordinates in the debug mode. Setting this to null will suppress all coordinates from the output.
getter/setter pairinherited
debugMode bool
Returns whether this Component is in debug mode or not. When a child is added to the Component it gets the same debugMode as its parent has when it is prepared.
getter/setter pairinherited
debugPaint Paint
The debugColor represented as a Paint object.
no setterinherited
debugTextPaint TextPaint
Returns a TextPaint object with the debugColor set as color for the text.
no setterinherited
hasChildren bool
no setterinherited
hashCode int
The hash code for this object.
no setterinherited
isLoaded bool
Whether this component has completed its onLoad step.
no setterinherited
isLoading bool
Whether the component is currently executing its onLoad step.
no setterinherited
isMounted bool
Whether this component is currently added to a component tree.
no setterinherited
isMounting bool
no setterinherited
isRemoved bool
Whether the component has been removed. Originally this flag is false, but it becomes true after the component was mounted and then removed from its parent. The flag becomes false again when the component is mounted to a new parent.
no setterinherited
isRemoving bool
Whether the component is scheduled to be removed.
no setterinherited
key ComponentKey?
A key that can be used to identify this component in the tree.
loaded Future<void>
A future that completes when this component finishes loading.
no setterinherited
mounted Future<void>
A future that will complete once the component is mounted on its parent.
no setterinherited
parent Component?
Who owns this component in the component tree.
getter/setter pairinherited
priority int
Render priority of this component. This allows you to control the order in which your components are rendered.
getter/setter pairinherited
removed Future<void>
A future that completes when this component is removed from its parent.
no setterinherited
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
viewfinder Viewfinder
The viewfinder controls which part of the world is seen through the viewport.
getter/setter pair
viewport Viewport
The viewport is the "window" through which the game world is observed.
getter/setter pair
visibleWorldRect Rect
The axis-aligned bounding rectangle of a world region which is currently visible through the viewport.
no setter
world World?
Special component that is designed to be the root of a game world.
getter/setter pair


add(Component component) FutureOr<void>
Schedules component to be added as a child to this component.
addAll(Iterable<Component> components) Future<void>
A convenience method to add multiple children at once.
addToParent(Component parent) FutureOr<void>
Adds this component as a child of parent (see add for details).
ancestors({bool includeSelf = false}) Iterable<Component>
An iterator producing this component's parent, then its parent's parent, then the great-grand-parent, and so on, until it reaches a component without a parent.
canSee(PositionComponent component, {World? componentWorld}) bool
Returns true if this camera is able to see the component. Will always return false if
componentsAtLocation<T>(T locationContext, List<T>? nestedContexts, T? transformContext(CoordinateTransform, T), bool checkContains(Component, T)) Iterable<Component>
This is a generic implementation of componentsAtPoint; refer to those docs for context.
componentsAtPoint(Vector2 point, [List<Vector2>? nestedPoints]) Iterable<Component>
An iterable of descendant components intersecting the given point. The point is in the local coordinate space.
contains(Component c) bool
Whether the children list contains the given component.
containsLocalPoint(Vector2 point) bool
Checks whether the point is within this component's bounds.
containsPoint(Vector2 point) bool
Same as containsLocalPoint, but for a "global" point.
createComponentSet() ComponentSet
This method creates the children container for the current component. Override this method if you need to have a custom ComponentSet within a particular class.
descendants({bool includeSelf = false, bool reversed = false}) Iterable<Component>
Recursively enumerates all nested children.
findGame() FlameGame<World>?
Fetches the nearest FlameGame ancestor to the component.
findParent<T extends Component>({bool includeSelf = false}) → T?
Returns the closest parent further up the hierarchy that satisfies type=T, or null if no such parent can be found.
findRootGame() FlameGame<World>?
Fetches the root FlameGame ancestor to the component.
firstChild<T extends Component>() → T?
Returns the first child that matches the given type T, or null if there are no such children.
follow(ReadOnlyPositionProvider target, {double maxSpeed = double.infinity, bool horizontalOnly = false, bool verticalOnly = false, bool snap = false}) → void
Makes the viewfinder follow the given target.
globalToLocal(Vector2 point, {Vector2? output}) Vector2
Converts from the global (canvas) coordinate space to local (camera = viewport + viewfinder).
handleLifecycleEventAdd(Component parent) → LifecycleEventStatus
handleLifecycleEventMove(Component newParent) → LifecycleEventStatus
handleLifecycleEventRemove(Component parent) → LifecycleEventStatus
handleResize(Vector2 size) → void
lastChild<T extends Component>() → T?
Returns the last child that matches the given type T, or null if there are no such children.
localToGlobal(Vector2 position, {Vector2? output}) Vector2
Converts from the local (camera = viewport + viewfinder) coordinate space to global (canvas).
moveBy(Vector2 offset, {double speed = double.infinity}) → void
Move the camera by the given offset.
moveTo(Vector2 point, {double speed = double.infinity}) → void
Moves the camera towards the specified world point.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
onChildrenChanged(Component child, ChildrenChangeType type) → void
This method will be invoked from lifecycle if child has been added to or removed from its parent children list.
onGameResize(Vector2 size) → void
Called whenever the size of the top-level Canvas changes.
onLoad() FutureOr<void>
Late initialization method for Component.
onMount() → void
Called when the component is added to its parent.
onParentResize(Vector2 maxSize) → void
Called whenever the parent of this component changes size; and also once before onMount.
onRemove() → void
Called right before the component is removed from the game.
propagateToChildren<T extends Component>(bool handler(T), {bool includeSelf = false}) bool
This method first calls the passed handler on the leaves in the tree, the children without any children of their own. Then it continues through all other children. The propagation continues until the handler returns false, which means "do not continue", or when the handler has been called with all children.
remove(Component component) → void
Removes a component from the component tree.
removeAll(Iterable<Component> components) → void
Removes all the children in the list and calls onRemove for all of them and their children.
removeFromParent() → void
Remove the component from its parent in the next tick.
removeWhere(bool test(Component component)) → void
Removes all the children for which the test function returns true.
render(Canvas canvas) → void
renderDebugMode(Canvas canvas) → void
renderTree(Canvas canvas) → void
Renders the world as seen through this camera.
setBounds(Shape? bounds, {bool considerViewport = false}) → void
Sets or clears the world bounds for the camera's viewfinder.
setLoaded() → void
Used by the FlameGame to set the loaded state of the component, since the game isn't going through the whole normal component life cycle.
setMounted() → void
Used by the FlameGame to set the mounted state of the component, since the game isn't going through the whole normal component life cycle.
setRemoved() → void
Used by the FlameGame to set the removed state of the component, since the game isn't going through the whole normal component life cycle.
stop() → void
Removes all movement effects or behaviors from the viewfinder.
toString() String
A string representation of this object.
update(double dt) → void
This method is called periodically by the game engine to request that your component updates itself.
updateTree(double dt) → void
This method traverses the component tree and calls update on all its children according to their priority order, relative to the priority of the direct siblings, not the children or the ancestors.


operator ==(Object other) bool
The equality operator.

Static Properties

currentCamera CameraComponent?
A camera that currently performs rendering.
no setter
currentCameras List<CameraComponent>
Stack of all current cameras in the render tree.
maxCamerasDepth int
Maximum number of nested cameras that will be rendered.
getter/setter pair