55#include " GLMReadWrite.hpp"
66
77NE::SerializationInfo TransformationMatrixNode::serializationInfo (NE::ObjectVersion (1 ));
8- NE::DynamicSerializationInfo TranslationMatrixNode::serializationInfo (NE::ObjectId (" {7F1B6F2F-2DE7-48FC-A926-5137FB9CFFF5}" ), NE::ObjectVersion (1 ), TranslationMatrixNode::CreateSerializableInstance);
8+ NE::DynamicSerializationInfo TranslationMatrixNode::serializationInfo (NE::ObjectId (" {DDB65DA8-1E2C-47EF-9658-96819C29259D}" ), NE::ObjectVersion (1 ), TranslationMatrixNode::CreateSerializableInstance);
9+ NE::DynamicSerializationInfo TranslationMatrixXYZNode::serializationInfo (NE::ObjectId (" {7F1B6F2F-2DE7-48FC-A926-5137FB9CFFF5}" ), NE::ObjectVersion (1 ), TranslationMatrixXYZNode::CreateSerializableInstance);
910NE::DynamicSerializationInfo RotationMatrixNode::serializationInfo (NE::ObjectId (" {2F11941E-6B80-49A0-A553-BD230AC0336C}" ), NE::ObjectVersion (1 ), RotationMatrixNode::CreateSerializableInstance);
1011NE::DynamicSerializationInfo ScaleMatrixNode::serializationInfo (NE::ObjectId (" {9E070858-8AC9-42DE-95A6-0C2AB6807426}" ), NE::ObjectVersion (1 ), ScaleMatrixNode::CreateSerializableInstance);
1112NE::DynamicSerializationInfo MatrixCombinationNode::serializationInfo (NE::ObjectId (" {E6FC2758-00D6-47F6-B321-AE46ECEA66C5}" ), NE::ObjectVersion (1 ), MatrixCombinationNode::CreateSerializableInstance);
@@ -54,6 +55,57 @@ TranslationMatrixNode::TranslationMatrixNode (const std::wstring& name, const NU
5455}
5556
5657void TranslationMatrixNode::Initialize ()
58+ {
59+ TransformationMatrixNode::Initialize ();
60+ RegisterUIInputSlot (NUIE::UIInputSlotPtr (new NUIE::UIInputSlot (NE::SlotId (" offset" ), L" Offset" , NE::ValuePtr (new PointValue (glm::vec3 (0 .0f ))), NE::OutputSlotConnectionMode::Single)));
61+ RegisterUIOutputSlot (NUIE::UIOutputSlotPtr (new NUIE::UIOutputSlot (NE::SlotId (" transformation" ), L" Transformation" )));
62+ }
63+
64+ NE::ValueConstPtr TranslationMatrixNode::Calculate (NE::EvaluationEnv& env) const
65+ {
66+ NE::ValueConstPtr offsetValue = EvaluateInputSlot (NE::SlotId (" offset" ), env);
67+ if (!NE::IsComplexType<CoordinateValue> (offsetValue)) {
68+ return nullptr ;
69+ }
70+
71+ NE::ListValuePtr result (new NE::ListValue ());
72+ BI::CombineValues (this , {offsetValue}, [&] (const NE::ValueCombination& combination) {
73+ glm::vec3 offset = CoordinateValue::Get (combination.GetValue (0 ));
74+ glm::mat4 transformation = glm::translate (glm::mat4 (1 .0f ), offset);
75+ result->Push (NE::ValuePtr (new TransformationValue (transformation)));
76+ return true ;
77+ });
78+
79+ return result;
80+ }
81+
82+ NE::Stream::Status TranslationMatrixNode::Read (NE::InputStream& inputStream)
83+ {
84+ NE::ObjectHeader header (inputStream);
85+ TransformationMatrixNode::Read (inputStream);
86+ return inputStream.GetStatus ();
87+ }
88+
89+ NE::Stream::Status TranslationMatrixNode::Write (NE::OutputStream& outputStream) const
90+ {
91+ NE::ObjectHeader header (outputStream, serializationInfo);
92+ TransformationMatrixNode::Write (outputStream);
93+ return outputStream.GetStatus ();
94+ }
95+
96+ TranslationMatrixXYZNode::TranslationMatrixXYZNode () :
97+ TranslationMatrixXYZNode (L" " , NUIE::Point ())
98+ {
99+
100+ }
101+
102+ TranslationMatrixXYZNode::TranslationMatrixXYZNode (const std::wstring& name, const NUIE::Point& position) :
103+ TransformationMatrixNode (name, position)
104+ {
105+
106+ }
107+
108+ void TranslationMatrixXYZNode::Initialize ()
57109{
58110 TransformationMatrixNode::Initialize ();
59111 RegisterUIInputSlot (NUIE::UIInputSlotPtr (new NUIE::UIInputSlot (NE::SlotId (" offsetx" ), L" Offset X" , NE::ValuePtr (new NE::FloatValue (0.0 )), NE::OutputSlotConnectionMode::Single)));
@@ -62,12 +114,11 @@ void TranslationMatrixNode::Initialize ()
62114 RegisterUIOutputSlot (NUIE::UIOutputSlotPtr (new NUIE::UIOutputSlot (NE::SlotId (" transformation" ), L" Transformation" )));
63115}
64116
65- NE::ValueConstPtr TranslationMatrixNode ::Calculate (NE::EvaluationEnv& env) const
117+ NE::ValueConstPtr TranslationMatrixXYZNode ::Calculate (NE::EvaluationEnv& env) const
66118{
67119 NE::ValueConstPtr offsetXValue = EvaluateInputSlot (NE::SlotId (" offsetx" ), env);
68120 NE::ValueConstPtr offsetYValue = EvaluateInputSlot (NE::SlotId (" offsety" ), env);
69121 NE::ValueConstPtr offsetZValue = EvaluateInputSlot (NE::SlotId (" offsetz" ), env);
70-
71122 if (!NE::IsComplexType<NE::NumberValue> (offsetXValue) || !NE::IsComplexType<NE::NumberValue> (offsetYValue) || !NE::IsComplexType<NE::NumberValue> (offsetZValue)) {
72123 return nullptr ;
73124 }
@@ -87,22 +138,22 @@ NE::ValueConstPtr TranslationMatrixNode::Calculate (NE::EvaluationEnv& env) cons
87138 return result;
88139}
89140
90- void TranslationMatrixNode ::RegisterParameters (NUIE::NodeParameterList& parameterList) const
141+ void TranslationMatrixXYZNode ::RegisterParameters (NUIE::NodeParameterList& parameterList) const
91142{
92143 TransformationMatrixNode::RegisterParameters (parameterList);
93- NUIE::RegisterSlotDefaultValueNodeParameter<TranslationMatrixNode , NE::FloatValue> (parameterList, L" Offset X" , NUIE::ParameterType::Float, NE::SlotId (" offsetx" ));
94- NUIE::RegisterSlotDefaultValueNodeParameter<TranslationMatrixNode , NE::FloatValue> (parameterList, L" Offset Y" , NUIE::ParameterType::Float, NE::SlotId (" offsety" ));
95- NUIE::RegisterSlotDefaultValueNodeParameter<TranslationMatrixNode , NE::FloatValue> (parameterList, L" Offset Z" , NUIE::ParameterType::Float, NE::SlotId (" offsetz" ));
144+ NUIE::RegisterSlotDefaultValueNodeParameter<TranslationMatrixXYZNode , NE::FloatValue> (parameterList, L" Offset X" , NUIE::ParameterType::Float, NE::SlotId (" offsetx" ));
145+ NUIE::RegisterSlotDefaultValueNodeParameter<TranslationMatrixXYZNode , NE::FloatValue> (parameterList, L" Offset Y" , NUIE::ParameterType::Float, NE::SlotId (" offsety" ));
146+ NUIE::RegisterSlotDefaultValueNodeParameter<TranslationMatrixXYZNode , NE::FloatValue> (parameterList, L" Offset Z" , NUIE::ParameterType::Float, NE::SlotId (" offsetz" ));
96147}
97148
98- NE::Stream::Status TranslationMatrixNode ::Read (NE::InputStream& inputStream)
149+ NE::Stream::Status TranslationMatrixXYZNode ::Read (NE::InputStream& inputStream)
99150{
100151 NE::ObjectHeader header (inputStream);
101152 TransformationMatrixNode::Read (inputStream);
102153 return inputStream.GetStatus ();
103154}
104155
105- NE::Stream::Status TranslationMatrixNode ::Write (NE::OutputStream& outputStream) const
156+ NE::Stream::Status TranslationMatrixXYZNode ::Write (NE::OutputStream& outputStream) const
106157{
107158 NE::ObjectHeader header (outputStream, serializationInfo);
108159 TransformationMatrixNode::Write (outputStream);
0 commit comments