Class Vaadoom
- All Implemented Interfaces:
com.vaadin.flow.component.AttachNotifier, com.vaadin.flow.component.DetachNotifier, com.vaadin.flow.component.HasElement, com.vaadin.flow.component.HasSize, com.vaadin.flow.component.HasStyle, Serializable
DOOM runs inside a NOMMU Linux which itself runs on Adrian Cable's single-instruction
SUBLEQ virtual machine, compiled to WebAssembly and driven from a Web Worker. The
worker paints the emulated framebuffer onto an OffscreenCanvas inside the
<vaadoom-viewport> custom element.
The DOOM framebuffer is 800×512. By default the
component is sized to those pixels; use HasSize.setWidth(String) /
HasSize.setHeight(String) (from HasSize) to scale the viewport.
The engine boots a NOMMU Linux and auto-launches fbdoom; first paint takes a few
tens of seconds (a loading overlay is shown meanwhile). It is render-only (the DOOM
attract/demo loop) and needs a browser with OffscreenCanvas, WebAssembly
and DecompressionStream. No cross-origin-isolation headers are required.
- See Also:
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleanvoidsetAutostart(boolean autostart) Whether the emulator starts automatically when the component is attached.Methods inherited from class com.vaadin.flow.component.Component
addListener, bindVisible, findAncestor, fireEvent, from, get, getChildren, getElement, getEventBus, getId, getListeners, getLocale, getParent, getTestId, getTranslation, getTranslation, getTranslation, getTranslation, getTranslation, getTranslation, getUI, hasListener, isAttached, isTemplateMapped, isVisible, onAttach, onDetach, onEnabledStateChanged, removeFromParent, scrollIntoView, scrollIntoView, set, setElement, setId, setTestId, setVisibleMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface com.vaadin.flow.component.AttachNotifier
addAttachListenerMethods inherited from interface com.vaadin.flow.component.DetachNotifier
addDetachListenerMethods inherited from interface com.vaadin.flow.component.HasSize
bindHeight, bindWidth, getHeight, getHeightUnit, getMaxHeight, getMaxWidth, getMinHeight, getMinWidth, getWidth, getWidthUnit, setHeight, setHeight, setHeightFull, setMaxHeight, setMaxHeight, setMaxWidth, setMaxWidth, setMinHeight, setMinHeight, setMinWidth, setMinWidth, setSizeFull, setSizeUndefined, setWidth, setWidth, setWidthFullMethods inherited from interface com.vaadin.flow.component.HasStyle
addClassName, addClassNames, bindClassName, bindClassNames, getClassName, getClassNames, getStyle, hasClassName, removeClassName, removeClassNames, setClassName, setClassName
-
Field Details
-
FB_WIDTH
public static final int FB_WIDTHNative width, in pixels, of the DOOM framebuffer.- See Also:
-
FB_HEIGHT
public static final int FB_HEIGHTNative height, in pixels, of the DOOM framebuffer.- See Also:
-
-
Constructor Details
-
Vaadoom
-
-
Method Details
-
setAutostart
public void setAutostart(boolean autostart) Whether the emulator starts automatically when the component is attached. Defaults totrue.- Parameters:
autostart-trueto start on attach
-
isAutostart
public boolean isAutostart()- Returns:
- whether the emulator starts automatically on attach
-