diff options
author | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2016-05-07 20:47:37 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2016-05-22 18:29:24 +0300 |
commit | ec51175f1fd6c91d53b0d24daccfd5cc9bddf59d (patch) | |
tree | 1ad5b06b2318998cc4f03d78a8e7b1ce38e7cbf3 /intern/cycles/graph/node.h | |
parent | 841d008b98de5d0fa106ff3fa4731be63fc29f9a (diff) |
Code refactor: add generic Cycles node infrastructure.
Differential Revision: https://developer.blender.org/D2016
Diffstat (limited to 'intern/cycles/graph/node.h')
-rw-r--r-- | intern/cycles/graph/node.h | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/intern/cycles/graph/node.h b/intern/cycles/graph/node.h new file mode 100644 index 00000000000..33971fa714a --- /dev/null +++ b/intern/cycles/graph/node.h @@ -0,0 +1,90 @@ +/* + * Copyright 2011-2016 Blender Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once + +#include "node_type.h" + +#include "util_map.h" +#include "util_param.h" +#include "util_vector.h" + +CCL_NAMESPACE_BEGIN + +struct Node; +struct NodeType; +struct Transform; + +/* Node */ + +struct Node +{ + explicit Node(const NodeType *type, ustring name = ustring()); + virtual ~Node(); + + /* set values */ + void set(const SocketType& input, bool value); + void set(const SocketType& input, int value); + void set(const SocketType& input, float value); + void set(const SocketType& input, float2 value); + void set(const SocketType& input, float3 value); + void set(const SocketType& input, ustring value); + void set(const SocketType& input, const Transform& value); + void set(const SocketType& input, Node *value); + + /* set array values. the memory from the input array will taken over + * by the node and the input array will be empty after return */ + void set(const SocketType& input, array<bool>& value); + void set(const SocketType& input, array<int>& value); + void set(const SocketType& input, array<float>& value); + void set(const SocketType& input, array<float2>& value); + void set(const SocketType& input, array<float3>& value); + void set(const SocketType& input, array<ustring>& value); + void set(const SocketType& input, array<Transform>& value); + void set(const SocketType& input, array<Node*>& value); + + /* get values */ + bool get_bool(const SocketType& input) const; + int get_int(const SocketType& input) const; + float get_float(const SocketType& input) const; + float2 get_float2(const SocketType& input) const; + float3 get_float3(const SocketType& input) const; + ustring get_string(const SocketType& input) const; + Transform get_transform(const SocketType& input) const; + Node *get_node(const SocketType& input) const; + + /* get array values */ + const array<bool>& get_bool_array(const SocketType& input) const; + const array<int>& get_int_array(const SocketType& input) const; + const array<float>& get_float_array(const SocketType& input) const; + const array<float2>& get_float2_array(const SocketType& input) const; + const array<float3>& get_float3_array(const SocketType& input) const; + const array<ustring>& get_string_array(const SocketType& input) const; + const array<Transform>& get_transform_array(const SocketType& input) const; + const array<Node*>& get_node_array(const SocketType& input) const; + + /* default values */ + bool has_default_value(const SocketType& input) const; + + /* modified */ + bool modified(const Node& other); + + ustring name; + const NodeType *type; +}; + +CCL_NAMESPACE_END + |