[Bf-blender-cvs] [9af1dfb] object_nodes: Fix for default values of array types.
Lukas Tönne
noreply at git.blender.org
Wed Dec 23 12:47:37 CET 2015
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;
}
More information about the Bf-blender-cvs
mailing list