Lukas Toenne [Thu, 26 Jul 2012 11:40:58 +0000 (11:40 +0000)]
Added a particle index output to the Particle Info Cycles node. This is required to get consistent ID numbers for particles. The Object ID is not usable since it's a user defined value of the instanced object, which does not vary per instance. Also the random value from the object info node is not consistent over time, since it only depends on the index in the dupli list (so each emitted or dying particle shifts the value).
The particle index is always the same for a specific particle. Randomized values can be generated from this with the use of a noise texture.
Jens Verwiebe [Thu, 26 Jul 2012 11:08:56 +0000 (11:08 +0000)]
OSX/scons: fix compiling on the new OSX 10.8 (Mountain Lion) with delivered Xcode 4.4
Sergey Sharybin [Thu, 26 Jul 2012 10:53:59 +0000 (10:53 +0000)]
Fix #31550: Active Armature bone hardly distinguishable from other selected bones
Made active bone color a bit brighter and made it a userpref option.
Campbell Barton [Thu, 26 Jul 2012 10:52:59 +0000 (10:52 +0000)]
mask/image: rotate about 2d cursor now works.
Sergey Sharybin [Thu, 26 Jul 2012 10:06:08 +0000 (10:06 +0000)]
Fix typo and change shortcuts to Q and E. Works better when emulate numpad is used.
Campbell Barton [Thu, 26 Jul 2012 09:54:52 +0000 (09:54 +0000)]
mask/image editor now works for border select and lasso
Sergey Sharybin [Thu, 26 Jul 2012 09:50:27 +0000 (09:50 +0000)]
Shortcuts to set solver frames: alt-1 for Keyframe A, alt-2 for keyframe B.
Mitchell Stokes [Thu, 26 Jul 2012 09:35:52 +0000 (09:35 +0000)]
Fix for [#32185] "Incorrect physics for LibLoaded dupligroups" reported by Daniel Stokes (Kupoman). I'm not sure if this is the "correct" fix, but it at least allows all physics objects to be evaluated at least once by the new environment. This allows the new environment to sync up physics shapes for static objects.
Sergey Sharybin [Thu, 26 Jul 2012 09:29:37 +0000 (09:29 +0000)]
Fix #32123: Blender crashes when zoomed in and rotating around 3d cursor
Fix deadlock in drawArc caused by precision error. Helper widget could
look wrong, that's because of not enough precision of floats used by
Blender.
This is known issue of Blender and wouldn't consider a bug.
Campbell Barton [Thu, 26 Jul 2012 09:06:23 +0000 (09:06 +0000)]
image histogram/sample line couldn't show HDR colors. now allow zooming the view to see colors up to 10.0
Sergey Sharybin [Thu, 26 Jul 2012 08:57:41 +0000 (08:57 +0000)]
Fix #32138: material trancpareny setting
Sergey Sharybin [Thu, 26 Jul 2012 08:41:55 +0000 (08:41 +0000)]
Fix #32139: Making vertex parent hides faces
Call normals update and re-tesselate the BMesh before generating
derived mesh for vertex parent. this is needed for proper display
of mesh in edit mode.
Tried to use EDBM_update_generic, but it gave artifacts due to it
doesn't update normals. usually it's not a problem, because it's used
at the end of operator and all needed data is handles by depsgraph.
It doesn't work for vertex parent because derived mesh is being
created here outside of generic object update, so one extra manual
step seems to be needed here.
Sv. Lockal [Wed, 25 Jul 2012 23:28:17 +0000 (23:28 +0000)]
Fix [#31609] save .EXR defaults to uncompressed, causes segfault.
IMB_filterN now generates 32-bit int representation of float images for mipmap generation if such representation does not exist.
Campbell Barton [Wed, 25 Jul 2012 22:37:52 +0000 (22:37 +0000)]
code cleanup: use BKE_pain_ prefix for paint funcs. also minor style edits
Campbell Barton [Wed, 25 Jul 2012 20:39:49 +0000 (20:39 +0000)]
mask/image viewer now works with non 1:1 image aspect, editing masks in the image viewer should be generally usable now though still some TODO's left.
Sergey Sharybin [Wed, 25 Jul 2012 20:25:47 +0000 (20:25 +0000)]
Make Cycles compatible with older boost versions.
Patch by IRIE Shinsuke, thanks!
Sergey Sharybin [Wed, 25 Jul 2012 20:17:38 +0000 (20:17 +0000)]
Select Linked no works from Datablocks outliner view as well
Sergey Sharybin [Wed, 25 Jul 2012 19:45:34 +0000 (19:45 +0000)]
Implement operator to select linked data from outliner
Supports selecting using object data, material and library.
Would be nice to hide this menu item from menus appearing for
datablocks which does not support such a selection, but that
could be done separately.
Sergey Sharybin [Wed, 25 Jul 2012 19:45:31 +0000 (19:45 +0000)]
Separate Select Linked operator into smaller function which could be reused.
Should be no functional changes.
Campbell Barton [Wed, 25 Jul 2012 19:36:59 +0000 (19:36 +0000)]
mask transform now works in the image space
Dalai Felinto [Wed, 25 Jul 2012 18:42:52 +0000 (18:42 +0000)]
updating blenderplayer stubs after spaceimage set mask function
Sergey Sharybin [Wed, 25 Jul 2012 16:53:56 +0000 (16:53 +0000)]
Fix #32004: Up/down arrow keys can move index out of actual range of template_list
Fixed by clamping current index value to 0..list_size-1 range in list event
handling function. This shouldn't give any regressions since this clamping\
happens only after template was already displayed so items counter should be
correct here.
It is still possible to set index to meaningless value by directly changing
the index value via python, but that's not in the scope of interface engine
and not currently considered a bug.
Campbell Barton [Wed, 25 Jul 2012 16:46:46 +0000 (16:46 +0000)]
don't pass the same value to axis_angle_to_quat() for axis & quat.
-/-This line, and those below, will be ignored--
M mathutils_Quaternion.c
Sergey Sharybin [Wed, 25 Jul 2012 16:37:24 +0000 (16:37 +0000)]
Fix regression introduced in svn rev49122
Would rather have mathematical functions consistent from using
the same vector for input and output values point of view then
introducing questionable optimizations.
Campbell Barton [Wed, 25 Jul 2012 16:30:53 +0000 (16:30 +0000)]
match function names for clip/image spaces
Campbell Barton [Wed, 25 Jul 2012 16:03:08 +0000 (16:03 +0000)]
fix some crashes with mask/image transfor, a few more areas working now.
Sergey Sharybin [Wed, 25 Jul 2012 15:05:50 +0000 (15:05 +0000)]
Proxies building progress bar used to be displayed wrong in cases
when start scene frame is not 1.
Campbell Barton [Wed, 25 Jul 2012 14:46:38 +0000 (14:46 +0000)]
add mask keymap to image window.
debug prints for events when --debug-events is used to help track down why a key is/isnt used.
Campbell Barton [Wed, 25 Jul 2012 13:55:16 +0000 (13:55 +0000)]
edit fix for [#32177] - drawing text isnt really needed for selections.
Campbell Barton [Wed, 25 Jul 2012 13:44:59 +0000 (13:44 +0000)]
mask now draws in the image view, misc minor edits.
Campbell Barton [Wed, 25 Jul 2012 13:44:07 +0000 (13:44 +0000)]
add mask buttons into the image space
Campbell Barton [Wed, 25 Jul 2012 13:09:12 +0000 (13:09 +0000)]
split out mask UI into their own classes.
Bastien Montagne [Wed, 25 Jul 2012 12:55:55 +0000 (12:55 +0000)]
Fix [#32177] 'Display Pivot' segfaults blender (Rigid Body Constraint + 3dview)
draw_rigid_body_pivot() didn't check it could actualy use the given ob_wire_col...
Also silenced a compiler warning, and removed (replaced) a potential dengerous pointer cast (char *[4] -> int* is not safe on 64bit machines!).
Campbell Barton [Wed, 25 Jul 2012 12:15:22 +0000 (12:15 +0000)]
mask UI for space image
Lukas Toenne [Wed, 25 Jul 2012 12:07:19 +0000 (12:07 +0000)]
Fix #31419, Changing Boid-Properties impossible with pinned Particle Menu.
Boid operators now retrieve the particle settings from the context directly, instead of always using the particle system (which is only needed to get to the settings anyway). When particle settings are pinned there is no particle system in the context, causing the operators to fail.
Lukas Toenne [Wed, 25 Jul 2012 11:26:10 +0000 (11:26 +0000)]
Fix #31339, Modifying mesh destroys particle system.
The particle system modifier has to ensure tesselation before testing for topology changes. It compares the number of vertices, edges and tesselation faces to the previously stored values.
Note that this test only detects a subset of actual topology changes (where the number of elements differs), but this is a known limitation we have to live with for now.
Campbell Barton [Wed, 25 Jul 2012 11:25:10 +0000 (11:25 +0000)]
image space now has a mode for view/paint/mask editing.
Campbell Barton [Wed, 25 Jul 2012 10:55:45 +0000 (10:55 +0000)]
code cleanup: comment deprecated defines
Jeroen Bakker [Wed, 25 Jul 2012 10:46:19 +0000 (10:46 +0000)]
Defocus node.
added some maxblur optimizations. Per tile the max blur is calcualted,
will save some unneeded CPU/GPU loops
GPU: 1:09 => 0:21
CPU: 1:50 => 0:35
Campbell Barton [Wed, 25 Jul 2012 10:39:54 +0000 (10:39 +0000)]
wip mask/image commit, mostly internal function & added some TODO's
Lukas Toenne [Wed, 25 Jul 2012 10:37:31 +0000 (10:37 +0000)]
Added a missing forward declaration, causing compiler error in r49192.
Lukas Toenne [Wed, 25 Jul 2012 10:25:53 +0000 (10:25 +0000)]
Fix #32178, Adding "File Output" node crashes when a video output type is selected.
The image format for the node and sockets were not properly initialized. The file output node only supports image types (not movies), so it needs to check for proper format type after copying from the render settings.
Campbell Barton [Wed, 25 Jul 2012 10:15:24 +0000 (10:15 +0000)]
move ED_image functions into their own file.
Campbell Barton [Wed, 25 Jul 2012 09:04:59 +0000 (09:04 +0000)]
fix annoying bug where image open from ID template didn't open in the existing images path.
Mitchell Stokes [Wed, 25 Jul 2012 04:29:48 +0000 (04:29 +0000)]
BGE: A better fix for using the Action Actuator with the Actuator Sensor. This one still allows frame properties to be updated after receiving a negative pulse. This also fixes bug [#32179] "Action Actuator in Loop End stops updating the Frame Property after no longer receives positive signal" reported by Dalai.
Campbell Barton [Tue, 24 Jul 2012 21:07:29 +0000 (21:07 +0000)]
change behavior of ediutmesh separate not to cleanup geometry - its not really needed and caused a bug with some of my recent edits.
If its important it could be added back but dont think its worthwhile.
Campbell Barton [Tue, 24 Jul 2012 20:33:55 +0000 (20:33 +0000)]
move mask and draw settings into its own struct to be shared between spaces.
Campbell Barton [Tue, 24 Jul 2012 19:29:24 +0000 (19:29 +0000)]
initial commit for supporting masks in the image view, currently active seq strip is used as the mask source.
also unify mask drawing code for clip/sequencer/image
Sergey Sharybin [Tue, 24 Jul 2012 15:51:26 +0000 (15:51 +0000)]
Fix #32165: context_set_value didn't make an undo push when changing scene settings
This lead to such issues as changing mesh selection mode wasn't doing undo push
when it need to.
Sergey Sharybin [Tue, 24 Jul 2012 15:17:03 +0000 (15:17 +0000)]
Debug option for guarded allocation: store name of original datablock
when using MEM_dupallocN. This helps figuring out issues with non-freed
dup_alloc blocks,
Simply enable DEBUG_MEMDUPLINAME in mallocn.c file.
Campbell Barton [Tue, 24 Jul 2012 13:01:55 +0000 (13:01 +0000)]
add prints for texture loading (we're running into texture limit a lot so its handy to see whats actually loading from the blend files)
Campbell Barton [Tue, 24 Jul 2012 12:35:41 +0000 (12:35 +0000)]
fix/workaround for glitch with node editing active texture bug - where a node texture in a group could get `stuck` and the buttons UI wouldnt update to other active nodes.
Files saved with this error will still give problems, toggling group edit will fix.
Lukas Toenne [Tue, 24 Jul 2012 12:00:02 +0000 (12:00 +0000)]
Fix for RNA struct registration: the bpy_class_validate function would only check the immediate functions/properties of the pointer struct type, but not potential base structs. Now it first validates the base struct recursively before the actual properties of the registered class.
Does not have any effect for current registerable types (Operator, Menu, Panel, etc.), since none of those actually have a base struct, but will be required for future types with an actual hierarchy (custom nodes).
Campbell Barton [Tue, 24 Jul 2012 10:28:29 +0000 (10:28 +0000)]
warn when getting a context member fails because of type mismatch
Campbell Barton [Tue, 24 Jul 2012 09:53:29 +0000 (09:53 +0000)]
generalize mask poll functions and sequencer mask code.
Sergey Sharybin [Tue, 24 Jul 2012 09:08:27 +0000 (09:08 +0000)]
Hopefully Blender compiles again with MSVC
Seems to be a conflict between different areas defining
round() function.
Sergey Sharybin [Tue, 24 Jul 2012 09:00:58 +0000 (09:00 +0000)]
Fix corrupted frames producing by fog glare node
Seems to be simple non-initialized buffer used in math, but additional
check would be welcome here.
At least now result doesn't seems to be corrupted and seems to behaving
the same way as non-tile compositor.
Dalai Felinto [Tue, 24 Jul 2012 07:08:33 +0000 (07:08 +0000)]
no need for renaming actions that are not linked anywhere
talked with Joshua Leung (aligorith) and he agreed on that
Campbell Barton [Mon, 23 Jul 2012 22:39:26 +0000 (22:39 +0000)]
use 2d vectors for mask point access.
Campbell Barton [Mon, 23 Jul 2012 21:47:11 +0000 (21:47 +0000)]
mask layer rna api: add exception when removing incorrect masklayer from mask, add mask.layers.clear()
Mitchell Stokes [Mon, 23 Jul 2012 20:24:35 +0000 (20:24 +0000)]
BGE: Bringing over the dynamic lamp properties fixes from Cucumber (thanks to Daniel Stokes). This means the following KX_LightObject properties now have support when using GLSL materials (in addition to those already supported):
* distance
* lin_attenuation
* quad_attenuation
* spotsize
* spotblend
Bastien Montagne [Mon, 23 Jul 2012 19:08:02 +0000 (19:08 +0000)]
Grrr... Minkowski... :p
Sergey Sharybin [Mon, 23 Jul 2012 18:27:06 +0000 (18:27 +0000)]
Keying: apply garbage / core mattes after clamping
Applying this mattes before clamping produced ugly outline around
matte boundaries.
Campbell Barton [Mon, 23 Jul 2012 16:41:04 +0000 (16:41 +0000)]
view3d - enable background images and footage with `Only Render`, useful for previewing models with footage.
Campbell Barton [Mon, 23 Jul 2012 14:48:19 +0000 (14:48 +0000)]
fix for cycles bug in localview: see r48269, bits used for localview gave collisions with PathRayFlag's
Joshua Leung [Mon, 23 Jul 2012 13:33:09 +0000 (13:33 +0000)]
Bugfix [#31994] Blend from Shape "Add" mode incorrectly added the full mesh
shape instead of just the difference/deltas applied by the source shape
Apparently this was a regression from that crept in during the BMesh merge. I've
just restored the pre-BMesh method, adapted for the BMesh style.
Also, removed a somewhat superfluous (?) copy at the end of each step (from co
back to sco). It didn't seem to be serving any purpose (i.e. we're not trying to
modify the source shape at all).
Bastien Montagne [Mon, 23 Jul 2012 12:27:26 +0000 (12:27 +0000)]
Fix [#32163] vertex groups get wiped.
Usual "persistent" operator option... I guess there are still a few others that keep hiding in the dust! :)
Joshua Leung [Mon, 23 Jul 2012 12:22:09 +0000 (12:22 +0000)]
Minor style cleanup - remove invalid/unneeded comments
Bastien Montagne [Mon, 23 Jul 2012 12:10:21 +0000 (12:10 +0000)]
Portuguese is now over 60% (also finisehd old portuguse_brazilian->portuguese move).
Joshua Leung [Mon, 23 Jul 2012 12:10:02 +0000 (12:10 +0000)]
Bugfix [#32155] Driver error saves in file and isnt reset on load
Error flags set on Drivers and F-Curves when they can't be evaluated or flushed
properly are now cleared when loading files, allowing drivers to be re-evaluated
when a file is reloaded. This means that if a driver couldn't be used in the
previous session due to the set of extension modules active at the time (and was
thus disabled), reloading the file with the necessary extensions loaded means
that the driver can work out of the box without manually re-enabling.
Mitchell Stokes [Mon, 23 Jul 2012 01:00:56 +0000 (01:00 +0000)]
Fix for bug [#26122] "Overlay scene gets transparent when motion blur is enabled" reported by Alberto Torres Ruiz (dithi).
The problem is motion blur was being treated as a per scene operation, but all scenes were trying to use the same accumulation buffer. Now motion blur is done in EndFrame() instead of PostRenderScene().
Janne Karhu [Sun, 22 Jul 2012 23:07:43 +0000 (23:07 +0000)]
Fix for #32162 psys rotation causes size issues for particle instances
- The original scaling of the object wasn't taken into account when not using the particle dupliobject rotation option.
Mitchell Stokes [Sun, 22 Jul 2012 22:58:12 +0000 (22:58 +0000)]
BGE LibLoad: Allow the user to disable loading text datablocks if they want to attempt to increase security by not loading potential Python scripts.
Campbell Barton [Sun, 22 Jul 2012 21:13:32 +0000 (21:13 +0000)]
patch [#31925] Add a BMElemSeq.sort() method
from Antonio Ospite (ao2)
wrap bmesh sort function for python api, eg:
bm.faces.sort(key=lambda f: f.material_index)
Campbell Barton [Sun, 22 Jul 2012 18:40:50 +0000 (18:40 +0000)]
code cleanup: replace cos(M_PI / 4) and sin(M_PI / 4) with M_SQRT1_2 define
also some minor style cleanup.
Campbell Barton [Sun, 22 Jul 2012 18:31:08 +0000 (18:31 +0000)]
code cleanup: simplify view orbit operator
Campbell Barton [Sun, 22 Jul 2012 17:49:56 +0000 (17:49 +0000)]
code cleanup: remove unused math functions (where already noted as deprecated)
Campbell Barton [Sun, 22 Jul 2012 17:35:43 +0000 (17:35 +0000)]
code cleanup: use cosf and sinf when both args and results are float values.
also remove local math functions in KX_Camera
Joshua Leung [Sun, 22 Jul 2012 16:14:57 +0000 (16:14 +0000)]
Bugfix [#32017] Infinite recursion in depsgraph material/node driver handling
When initially coding this functionality, I was aware of the potential for
infinite recursion here, just not how frequently such setups are actually
used/created out in the wild (nodetree.ma_node -> ma -> ma.nodetree is all too
common, and often even with several levels of indirection!).
However, the best fix for these problems was not immediately clear. Alternatives
considered included...
1) checking for common recursive cases. This was the solution employed for one
of the early patches committed to try and get around this. However, it's all too
easy to defeat these measures (with all the possible combinations of indirection
node groups bring).
2) arbitrarily restricting recursion to only go down 2/3 levels? Has the risk
of missing some deeply chained/nested drivers, but at least we're guaranteed to
not get too bad. (Plus, who creates such setups anyway ;)
*3) using the generic LIB_DOIT flag (check for tagged items and not recurse down
there). Not as future-proof if some new code suddenly decides to start adding
these tags to materials along the way, but is easiest to add, and should be
flexible enough to catch most cases, since we only care that at some point those
drivers will be evaluated if they're attached to stuff we're interested in.
4) introducing a separate flag for Materials indicating they've been checked
already. Similar to 3) and solves the future-proofing, but this leads to...
5) why bother with remembering to clear flags before traversing for drivers to
evaluate, when they should be tagged for evaluation like everything else?
Downside - requires depsgraph refactor so that we can actually track the fact
that there are dependencies to/from the material datablock, and not just to the
object using said material. (i.e. Currently infeasible)
Campbell Barton [Sun, 22 Jul 2012 15:49:20 +0000 (15:49 +0000)]
fix for own error using uninitialized memory for scale compo node.
Campbell Barton [Sun, 22 Jul 2012 15:31:12 +0000 (15:31 +0000)]
fix for more new[]/delete[] mismatches
Campbell Barton [Sun, 22 Jul 2012 15:15:39 +0000 (15:15 +0000)]
fix for compositor new[]/delete[] mismatch.
Sergey Sharybin [Sun, 22 Jul 2012 14:22:07 +0000 (14:22 +0000)]
Fix #32156: Blender crashes on linking armature with custom shape
Crash was caused by using NULL pointer as a wire color for drawing
object selection when drawing flag is set to DRAW_CONSTCOLOR.
Solved by not calling drawObjectSelect when DRAW_CONSTCOLOR flag
is set, which seems reasonable -- rather than adding checks deeper
in all possible functions which are being called there easier to
just not call that functions using a single check.
Antony Riakiotakis [Sun, 22 Jul 2012 14:19:06 +0000 (14:19 +0000)]
Add property to stitch operator to clear seam flag of stitched edges (on
by default, since people usually want the layout to be updated).
Motivation has been confused user that tried to use live unwrap
afterwards and found that it would not work as it should.
Campbell Barton [Sun, 22 Jul 2012 13:13:36 +0000 (13:13 +0000)]
fix for node editor re-rendering when the background image was moved in the view.
Sergey Sharybin [Sun, 22 Jul 2012 12:48:19 +0000 (12:48 +0000)]
Increase maximal video bitrate to 64K
Aimed to #32153: H.264 Output Bitrate Max of 14000 kb/s is Too Low
Lukas Toenne [Sun, 22 Jul 2012 11:21:36 +0000 (11:21 +0000)]
Removed nested comment, which causes compiler errors.
Campbell Barton [Sat, 21 Jul 2012 22:58:08 +0000 (22:58 +0000)]
style cleanup
Sergey Sharybin [Sat, 21 Jul 2012 19:19:45 +0000 (19:19 +0000)]
Boolean modifier: prevent crashes when carve returns bad topology
For sure actual issue is in carve's triangulation system which need
to be investigated and fixed. For now only fixed by re-shuffling a
bit existing degenerative faces check and added extra checks there.
Would look into actual fix a bit later.
Campbell Barton [Sat, 21 Jul 2012 16:21:42 +0000 (16:21 +0000)]
style cleanup
Campbell Barton [Sat, 21 Jul 2012 15:27:40 +0000 (15:27 +0000)]
use fabsf when using floats.
Sergey Sharybin [Sat, 21 Jul 2012 09:01:39 +0000 (09:01 +0000)]
Merge mask fixes from tomato branch
--
svn merge -r49075:49076 -r49086:49087 ^/branches/soc-2011-tomato
Sergey Sharybin [Sat, 21 Jul 2012 08:50:11 +0000 (08:50 +0000)]
Fix incorrect RNA access in parenting operator
Campbell Barton [Sat, 21 Jul 2012 01:09:11 +0000 (01:09 +0000)]
remove BMO_OP_FLAG_RATIONALIZE_NORMALS option which wasnt used anywhere.
Campbell Barton [Sat, 21 Jul 2012 00:58:02 +0000 (00:58 +0000)]
add option so operators can be called with a flag, currently the only flag is to respect hidden geometry.
this is useful for bmesh tools that operate in object mode or for modifiers which would previously use hidden faces in some cases.
Campbell Barton [Fri, 20 Jul 2012 19:11:47 +0000 (19:11 +0000)]
patch [#32152] Make NlaTrack.is_solo settable
from Peter Amstutz (tetron)
Lukas Toenne [Fri, 20 Jul 2012 15:07:06 +0000 (15:07 +0000)]
Fix #32118, Reroute nodes inside groups get created in wonky places.
Previous attempt was not taking into account parent nodes of the group nodes (i.e. frames). The nodeFromView function should be used to convert between relative node location to absolute view space. Also added this in the node_add_node helper function, which is used in a number of operators for adding nodes in a specific location.
Campbell Barton [Fri, 20 Jul 2012 14:01:43 +0000 (14:01 +0000)]
fix for compositor bug, mix node operation `clamp` was uninitialized.
made HSV node randomly clamp values from 0-1.
Campbell Barton [Fri, 20 Jul 2012 13:54:05 +0000 (13:54 +0000)]
ignore hidden faces when splitting by loose parts of materials.
Joshua Leung [Fri, 20 Jul 2012 12:33:35 +0000 (12:33 +0000)]
Commented out "Filter" FModifier type entry in type enum. This doesn't exist
yet, and likely won't exist for a while.