Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
|
|
Since those nodes did not exist for shader node trees before,
I implemented them directly as "function nodes". Those could later
be used in shader node trees as well.
Differential Revision: https://developer.blender.org/D7424
|
|
This makes a subset of the shader nodes available in simulation node trees.
More can be made available in the future, but we might not be able to actually
implement all the nodes before the release.
For now, their name remains `ShaderNode...`. We should rename them to
e.g. `FunctionNode...` and move them to a separate folder in the future.
Differential Revision: https://developer.blender.org/D7422
|
|
Differential Revision: https://developer.blender.org/D7384
|
|
|
|
|
|
|
|
influence-and-control-flow-socket-types
|
|
|
|
|
|
|
|
|
|
|
|
|
|
We do not really care about those, so just avoid the noise when loading
very old files...
Re T75389.
|
|
|
|
|
|
Allows to open newer files in older Blender after new distortion model
has been added.
It will behave as if this is a polynomial model with all 0 coefficients
which are then being refined and assigned explicitly after solving the
motion.
|
|
|
|
The loop of datablocks was using the scene datablock (3D View) only, but all others datablocks were ignored.
Now the loop consider any annotation datablock.
|
|
Edit-mode bone selection now cycles on successive clicks.
This now cycles through multiple edit-objects & bones.
|
|
|
|
|
|
This is part of T73324.
The shapes and colors of the sockets will most likely change later on.
This script can be used to create a node with the new socket types:
```
import bpy
class MyCustomNode(bpy.types.Node):
bl_idname = 'CustomNodeType'
bl_label = "Custom Node"
def init(self, context):
self.inputs.new('NodeSocketEmitters', "Emitters")
self.inputs.new('NodeSocketEvents', "Events")
self.inputs.new('NodeSocketForces', "Forces")
self.inputs.new('NodeSocketControlFlow', "Control Flow")
self.outputs.new('NodeSocketEmitters', "Emitters")
self.outputs.new('NodeSocketEvents', "Events")
self.outputs.new('NodeSocketForces', "Forces")
self.outputs.new('NodeSocketControlFlow', "Control Flow")
bpy.utils.register_class(MyCustomNode)
if len(bpy.data.simulations) == 0:
bpy.data.simulations.new("Simulation")
sim = bpy.data.simulations[0]
sim.node_tree.nodes.new("CustomNodeType")
```
Differential Revision: https://developer.blender.org/D7349
|
|
The main difficulty with adding these types is that they are the first sockets types
that reference ID data in their `default_value`. That means that I had to add some
new logic in a few places to deal with reference counting. I hope I found all the places...
It seems to work fine in my tests.
For now these socket types can only be created using a script like the one below:
```
import bpy
class MyCustomNode(bpy.types.Node):
bl_idname = 'CustomNodeType'
bl_label = "Custom Node"
def init(self, context):
self.inputs.new('NodeSocketObject', "Object")
self.inputs.new('NodeSocketImage', "Image")
bpy.utils.register_class(MyCustomNode)
if len(bpy.data.simulations) == 0:
bpy.data.simulations.new("Simulation")
sim = bpy.data.simulations[0]
sim.node_tree.nodes.new("CustomNodeType")
```
After running the script, go to the simulation editor and select the newly created simulation.
---
We might want to change `readfile.c` so that linked objects/images are only loaded,
when the socket is not connected. Otherwise it can be tricky to figure out why certain
id data blocks are still referenced by the node tree later on.
Differential Revision: https://developer.blender.org/D7347
|
|
|
|
|
|
|
|
|
|
During recent refactoring of the edit weight overlay we moved a
assignment before it was valid. Making everything one frame off what
resulted in a flashing frame during TAA, not drawing the overlay until a
second action happened, making overlays too bright.
The reason whas that the painting overlay wasn't initialized in the
first sample, but the draw passes and groups were filled. Resulting in
rendering the overlay twice or not at all.
This change moves the assignment to where it is valid.
|
|
|
|
|
|
Resolves regression from 2.7x
|
|
Limit offsets, so each strip contains at least 1 frame of content.
Reviewed By: campbellbarton
Differential Revision: https://developer.blender.org/D7288
|
|
Feature can be enabled or disabled in timeline view menu item "Show F-Curves".
Author a.monti
Reviewed By: ISS
Differential Revision: https://developer.blender.org/D7205
|
|
Don't set 'special preview' or Solo mode if scrubbing in scrubbing region.
Author: a.monti
Reviewed By: Severin
Differential Revision: https://developer.blender.org/D7234
|
|
|
|
|
|
This can be used by external renderers that can load OpenVDB files.
|
|
Pointer search buttons created with `uiItemPointerR()` (which allows
also passing a collection property to search in) did not work with the
split property layout (i.e. `uiLayout.use_property_split`).
For example vertex group search buttons typically use this.
Note that decorators (`uiLayout.use_property_decorate`) are not
supported yet. Although if they are enabled, the decorator column is
still created to keep the layout alignment visually intact. Also re-uses
the existing hack to allow placing multiple items in the row before the
decorator column.
Needed for some in-progress changes to the modifier stack UI.
|
|
|
|
When updating the active button, the search data wasn't updated, so it
kept using the old pointers. A check in `ui_rna_collection_search_cb()`
relied on this incorrect behavior so I had to fix that too. Note that
the previous commit was also needed for the second fix to work.
Caused by c46dcdf8871e.
|
|
If the `uiButStore` data was freed after the buttons/blocks were updated
from previous instances (see `UI_block_update_from_old()`), e.g. by
delaying that to the "afterfuncs" (`ui_apply_but_funcs_after()`), the
data would get lost. As result, the button pointers that the API is
supposed to keep valid would point to freed memory.
This wasn't an issue so far since the API didn't happen to be used this
way. That changes with the next commit.
|
|
|
|
Took me an unreasonable amount of time to understand what was happening
here... Our beloved proxies, as usual, need some specific careful
handling.
|
|
|
|
The material displayed in the error message due to the lack of active
texture was that of the previous slot.
|