Add simulation decorator
This commit is contained in:
parent
bdf703c33a
commit
86023a2bb5
4 changed files with 53 additions and 0 deletions
25
api/static/simulation.py
Normal file
25
api/static/simulation.py
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
import inspect
|
||||
import typing
|
||||
|
||||
class SimulationInput:
|
||||
class DeltaTime: pass
|
||||
class ElapsedTime: pass
|
||||
|
||||
def simulation(block: typing.Callable[typing.Any, 'Geometry']):
|
||||
"""
|
||||
Create a simulation input/output block.
|
||||
|
||||
> Only available in the `geometry-node-simulation` branch of Blender 3.5.
|
||||
"""
|
||||
def wrapped(geometry: 'Geometry', *args, **kwargs):
|
||||
from geometry_script import simulation_input, simulation_output
|
||||
simulation_in = simulation_input(geometry=geometry)
|
||||
signature = inspect.signature(block)
|
||||
for key, value in signature.parameters.items():
|
||||
match value.annotation:
|
||||
case SimulationInput.DeltaTime:
|
||||
kwargs[key] = simulation_in.delta_time
|
||||
case SimulationInput.ElapsedTime:
|
||||
kwargs[key] = simulation_in.elapsed_time
|
||||
return simulation_output(geometry=block(simulation_in.geometry, *args, **kwargs)).geometry
|
||||
return wrapped
|
||||
Reference in a new issue