bxx's People
bxx's Issues
move scene view_layers to iterator struct
name shadowing
there's too many function names that have the same names as types etc this is stupid
blender crashes if hotswapping while operator ui is rendering
script reloading is unstable
the automatic reloading is kind of unstable and based on a timer. I often enter a buggy state where it gets stuck reading the lockfile and unable to recover
pyobject memory issues
This is a hackaround:
bxx/bxx/classes/property_classes.hpp
Line 224 in d89632f
it shouldn't be necessary to increase references twice, and it suggests something is going wrong with that pyobject for another reason.
remove `operator_builder::m_disable_drawing`
we should check overrides in operator classes instead
sometimes, visual studio cannot find script pdbs
Most of the time it seems like visual studio finds the debug pdbs fine and I can attach to blender and debug my scripts just fine, but sometimes it doesn't find them. This hasn't happened in a while, but making this issue in case it happens again.
weird behavior in app handler callbacks
Lines 13 to 27 in d89632f
flatten 'ref' types so they can be used directly
currently have to write bxx::pointer_property<your_type::ref,...>
but that shouldn't be necessary, just put the fields directly on the types
escape quotes
lots of code depends on quotes so escape those from names
don't store image width/height in image object
context methods incorrectly reference `bpy.context`
these are normal methods
add constraints / modifiers
Constraints are id, so you can get them as pointers. They can be implemented like this:
namespace bxx
{
enum class owner_space
{
WORLD,
CUSTOM,
POSE,
LOCAL_WITH_PARENT,
LOCAL
};
class constraint : public id
{
PYFIELD(bool,active)
PYFIELD(bool,enabled)
PYFIELD(float,error_location)
PYFIELD(float,error_rotation)
PYFIELD(float,influence)
PYFIELD(bool,is_override_data)
PYFIELD(bool,is_valid)
PYFIELD(bool,mute)
PYFIELD(std::string,name)
PYFIELD_STRINGENUM(owner_space,owner_space)
PYFIELD(bool,show_expanded)
PYFIELD(object,space_object)
};
}
clean up and decide python_object / id relationship
This is one of the larger things that I need to do before adding much more to the system right now.
As for the api, we can easily convert between python/id types since python types can just be called as_pointer()
and id types can just use get_full_name
to access pyobject globally. However, if an id type uses mostly python methods i guess that would be slower if we don't support caching it somehow.
Pros of each type
id_ptr
- fast (no refcounting needed)
- multithreaded
- unsafe. dangling pointers can easily happen = program crash, not good.
python
- safe (though i can still null check id), i can check everything
- can dangling pointers happen? what happens to pyobjects after you delete the object they refer to? At least the program shouldn't crash from that.
Type Hierarchy
object_base
- an object that can somehow resolve a PyObject*. Has convenience methods forcall
,setattr
,getattr
etc.id
- generic object that hasget_name
andget_full_name
, extends object_base and resolves PyObject througheval(get_full_name)
etc (could maybe cache that PyObject? since if PyObject is dangling id is too?)id_ptr
- id that has a pointer (template), this can be initialized with apython_object
throughas_pointer
(it could also cache a raw PyObject*?)python_object
- refcountedPyObject*
wrapper, has convenience extensionspython_list
andpython_dict
How do we get children???? of objects
- This is specific to some id types, not all id types can have children.
WE NEED TO CLEARLY MARK UP PYTHON METHODS IN THE DOCUMENTATION
Should python functions have some py_
prefix to make this clear? what is thread safe...
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.