forked from LeenkxTeam/LNXSDK
68 lines
3.2 KiB
Python
68 lines
3.2 KiB
Python
|
from lnx.logicnode.lnx_nodes import *
|
||
|
|
||
|
|
||
|
class DrawImageSequenceNode(LnxLogicTreeNode):
|
||
|
"""Draws a sequence of image (images changing over time). The file names
|
||
|
of images used in a sequence need to follow a certain pattern:
|
||
|
`<prefix><frame-index>.<extension>`, `<prefix>` is an arbitrary filename
|
||
|
that must be constant for the entire sequence, `<frame-index>`
|
||
|
corresponds to the frame number of the image in the sequence.
|
||
|
`<extension>` is the file extension (without a period ".").
|
||
|
|
||
|
Image file names for a valid 2-frame sequence would for example
|
||
|
look like this:
|
||
|
|
||
|
```
|
||
|
myImage1.png
|
||
|
myImage2.png
|
||
|
```
|
||
|
|
||
|
@input Start: Evaluate the image filenames and start the sequence.
|
||
|
If the sequence is currently running, nothing happens. If the
|
||
|
sequence has finished and `Loop` is false, this input restarts
|
||
|
the sequence.
|
||
|
@input Stop: Stops the sequence and its drawing.
|
||
|
@input Image File Prefix: See `<prefix>` above.
|
||
|
@input Image File Extension: See `<extension>` above.
|
||
|
@input Color: The color that the pixels of the images are multiplied with.
|
||
|
@input X/Y: Position of the images, in pixels from the top left corner.
|
||
|
@input Width/Height: Size of the images in pixels. The images
|
||
|
grow towards the bottom right corner.
|
||
|
@input Start Index: The first `<frame-index>` of the sequence (inclusive).
|
||
|
@input End Index: The last `<frame-index>` of the sequence (inclusive).
|
||
|
@input Frame Duration: Duration of a frame in seconds.
|
||
|
@input Loop: Whether the sequence starts again from the first frame after the last frame.
|
||
|
@input Wait For Load: If true, start the sequence only after all
|
||
|
image files have been loaded. If false, the sequence starts immediately,
|
||
|
but images that are not yet loaded are not rendered.
|
||
|
|
||
|
@output On Start: Activated after the sequence has started. This output
|
||
|
is influenced by the `Wait For Load` input.
|
||
|
@output On Stop: Activated if the sequence ends or the `Stop` input
|
||
|
is activated. This is not activated when the sequence restarts
|
||
|
due to looping.
|
||
|
"""
|
||
|
bl_idname = 'LNDrawImageSequenceNode'
|
||
|
bl_label = 'Draw Image Sequence'
|
||
|
lnx_section = 'draw'
|
||
|
lnx_version = 1
|
||
|
|
||
|
def lnx_init(self, context):
|
||
|
self.add_input('LnxNodeSocketAction', 'Start')
|
||
|
self.add_input('LnxNodeSocketAction', 'Stop')
|
||
|
self.add_input('LnxStringSocket', 'Image File Prefix')
|
||
|
self.add_input('LnxStringSocket', 'Image File Extension')
|
||
|
self.add_input('LnxColorSocket', 'Color', default_value=[1.0, 1.0, 1.0, 1.0])
|
||
|
self.add_input('LnxFloatSocket', 'X')
|
||
|
self.add_input('LnxFloatSocket', 'Y')
|
||
|
self.add_input('LnxFloatSocket', 'Width')
|
||
|
self.add_input('LnxFloatSocket', 'Height')
|
||
|
self.add_input('LnxIntSocket', 'Start Index')
|
||
|
self.add_input('LnxIntSocket', 'End Index', default_value=1)
|
||
|
self.add_input('LnxFloatSocket', 'Frame Duration', default_value=1.0)
|
||
|
self.add_input('LnxBoolSocket', 'Loop', default_value=True)
|
||
|
self.add_input('LnxBoolSocket', 'Wait For Load', default_value=True)
|
||
|
|
||
|
self.add_output('LnxNodeSocketAction', 'On Start')
|
||
|
self.add_output('LnxNodeSocketAction', 'On Stop')
|