Commit: 9af1dfb91dcc175ea186f2114b1172872f5a1dbc
Author: Lukas Tönne
Date:   Tue Dec 22 13:55:26 2015 +0100
Branches: object_nodes
https://developer.blender.org/rB9af1dfb91dcc175ea186f2114b1172872f5a1dbc

Fix for default values of array types.

Now an array can be passed directly to the add_input functions to
construct an ArrayValue.

===================================================================

M       source/blender/blenvm/util/bvm_util_typedesc.h

===================================================================

diff --git a/source/blender/blenvm/util/bvm_util_typedesc.h 
b/source/blender/blenvm/util/bvm_util_typedesc.h
index 2fd873a..c3abd44 100644
--- a/source/blender/blenvm/util/bvm_util_typedesc.h
+++ b/source/blender/blenvm/util/bvm_util_typedesc.h
@@ -602,12 +602,22 @@ struct ArrayValue : public Value {
        typedef array<type> array_t;
        typedef const_array<type> const_array_t;
        
+       ArrayValue(const array_t &data) :
+           Value(TypeDesc(type, BVM_BUFFER_ARRAY)),
+           m_data(data)
+       {}
+       
        ArrayValue(POD *data, size_t size) :
            Value(TypeDesc(type, BVM_BUFFER_ARRAY)),
            m_data(array_t(data, size))
        {}
        
        template <typename T>
+       ArrayValue(T data) :
+           Value(TypeDesc(type, BVM_BUFFER_ARRAY))
+       { (void)data; }
+       
+       template <typename T>
        ArrayValue(T *data, size_t size) :
            Value(TypeDesc(type, BVM_BUFFER_ARRAY))
        { (void)data; (void)size; }
@@ -650,7 +660,7 @@ static Value *create(const TypeDesc &typedesc, T *data, 
size_t size)
                        case BVM_DUPLIS: return new 
ArrayValue<BVM_DUPLIS>(data, size);
                }
        }
-       return 0;
+       return NULL;
 }
 
 template <typename T>
@@ -669,7 +679,20 @@ Value *Value::create(const TypeDesc &typedesc, T data)
                        case BVM_DUPLIS: return new 
SingleValue<BVM_DUPLIS>(data);
                }
        }
-       return 0;
+       else if (typedesc.buffer_type == BVM_BUFFER_ARRAY) {
+               switch (typedesc.base_type) {
+                       case BVM_FLOAT: return new ArrayValue<BVM_FLOAT>(data);
+                       case BVM_FLOAT3: return new 
ArrayValue<BVM_FLOAT3>(data);
+                       case BVM_FLOAT4: return new 
ArrayValue<BVM_FLOAT4>(data);
+                       case BVM_INT: return new ArrayValue<BVM_INT>(data);
+                       case BVM_MATRIX44: return new 
ArrayValue<BVM_MATRIX44>(data);
+                       case BVM_STRING: return new 
ArrayValue<BVM_STRING>(data);
+                       case BVM_POINTER: return new 
ArrayValue<BVM_POINTER>(data);
+                       case BVM_MESH: return new ArrayValue<BVM_MESH>(data);
+                       case BVM_DUPLIS: return new 
ArrayValue<BVM_DUPLIS>(data);
+               }
+       }
+       return NULL;
 }

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to