summaryrefslogtreecommitdiff
path: root/movieobjects/dmeunpackoperators.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'movieobjects/dmeunpackoperators.cpp')
-rw-r--r--movieobjects/dmeunpackoperators.cpp335
1 files changed, 335 insertions, 0 deletions
diff --git a/movieobjects/dmeunpackoperators.cpp b/movieobjects/dmeunpackoperators.cpp
new file mode 100644
index 0000000..d9e8c8b
--- /dev/null
+++ b/movieobjects/dmeunpackoperators.cpp
@@ -0,0 +1,335 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+//=============================================================================
+#include "movieobjects/dmeunpackoperators.h"
+#include "movieobjects_interfaces.h"
+#include "datamodel/dmelementfactoryhelper.h"
+#include "datamodel/dmattribute.h"
+
+// memdbgon must be the last include file in a .cpp file!!!
+#include "tier0/memdbgon.h"
+
+
+//-----------------------------------------------------------------------------
+// CDmeUnpackColorOperator
+//-----------------------------------------------------------------------------
+IMPLEMENT_ELEMENT_FACTORY( DmeUnpackColorOperator, CDmeUnpackColorOperator );
+
+void CDmeUnpackColorOperator::OnConstruction()
+{
+ m_color.Init( this, "color" );
+ m_red .Init( this, "red" );
+ m_green.Init( this, "green" );
+ m_blue .Init( this, "blue" );
+ m_alpha.Init( this, "alpha" );
+}
+
+void CDmeUnpackColorOperator::OnDestruction()
+{
+}
+
+bool CDmeUnpackColorOperator::IsDirty()
+{
+ const Color &c = m_color.Get();
+// float s = 255.999f;
+// return c.r() != s*m_red.Get() || c.g() != s*m_green.Get() || c.b() != s*m_blue.Get() || c.a() != s*m_alpha.Get();
+ return c.r() != m_red.Get() || c.g() != m_green.Get() || c.b() != m_blue.Get() || c.a() != m_alpha.Get();
+}
+
+void CDmeUnpackColorOperator::Operate()
+{
+// float s = 255.999f;
+// m_color.Set( Color( s*m_red.Get(), s*m_green.Get(), s*m_blue.Get(), s*m_alpha.Get() ) );
+ m_red .Set( m_color.Get().r() );
+ m_green.Set( m_color.Get().g() );
+ m_blue .Set( m_color.Get().b() );
+ m_alpha.Set( m_color.Get().a() );
+}
+
+void CDmeUnpackColorOperator::GetInputAttributes( CUtlVector< CDmAttribute * > &attrs )
+{
+ attrs.AddToTail( m_color.GetAttribute() );
+}
+
+void CDmeUnpackColorOperator::GetOutputAttributes( CUtlVector< CDmAttribute * > &attrs )
+{
+ attrs.AddToTail( m_red.GetAttribute() );
+ attrs.AddToTail( m_green.GetAttribute() );
+ attrs.AddToTail( m_blue.GetAttribute() );
+ attrs.AddToTail( m_alpha.GetAttribute() );
+}
+
+
+//-----------------------------------------------------------------------------
+// CDmeUnpackVector2Operator
+//-----------------------------------------------------------------------------
+IMPLEMENT_ELEMENT_FACTORY( DmeUnpackVector2Operator, CDmeUnpackVector2Operator );
+
+void CDmeUnpackVector2Operator::OnConstruction()
+{
+ m_vector.Init( this, "vector" );
+ m_x.Init( this, "x" );
+ m_y.Init( this, "y" );
+}
+
+void CDmeUnpackVector2Operator::OnDestruction()
+{
+}
+
+bool CDmeUnpackVector2Operator::IsDirty()
+{
+ const Vector2D &v = m_vector.Get();
+ return v.x != m_x.Get() || v.y != m_y.Get();
+}
+
+void CDmeUnpackVector2Operator::Operate()
+{
+ m_x.Set( m_vector.Get().x );
+ m_y.Set( m_vector.Get().y );
+}
+
+void CDmeUnpackVector2Operator::GetInputAttributes( CUtlVector< CDmAttribute * > &attrs )
+{
+ attrs.AddToTail( m_vector.GetAttribute() );
+}
+
+void CDmeUnpackVector2Operator::GetOutputAttributes( CUtlVector< CDmAttribute * > &attrs )
+{
+ attrs.AddToTail( m_x.GetAttribute() );
+ attrs.AddToTail( m_y.GetAttribute() );
+}
+
+
+//-----------------------------------------------------------------------------
+// CDmeUnpackVector3Operator
+//-----------------------------------------------------------------------------
+IMPLEMENT_ELEMENT_FACTORY( DmeUnpackVector3Operator, CDmeUnpackVector3Operator );
+
+void CDmeUnpackVector3Operator::OnConstruction()
+{
+ m_vector.Init( this, "vector" );
+ m_x.Init( this, "x" );
+ m_y.Init( this, "y" );
+ m_z.Init( this, "z" );
+}
+
+void CDmeUnpackVector3Operator::OnDestruction()
+{
+}
+
+bool CDmeUnpackVector3Operator::IsDirty()
+{
+ const Vector &v = m_vector.Get();
+ return v.x != m_x.Get() || v.y != m_y.Get() || v.z != m_z.Get();
+}
+
+void CDmeUnpackVector3Operator::Operate()
+{
+ m_x.Set( m_vector.Get().x );
+ m_y.Set( m_vector.Get().y );
+ m_z.Set( m_vector.Get().z );
+}
+
+void CDmeUnpackVector3Operator::GetInputAttributes( CUtlVector< CDmAttribute * > &attrs )
+{
+ attrs.AddToTail( m_vector.GetAttribute() );
+}
+
+void CDmeUnpackVector3Operator::GetOutputAttributes( CUtlVector< CDmAttribute * > &attrs )
+{
+ attrs.AddToTail( m_x.GetAttribute() );
+ attrs.AddToTail( m_y.GetAttribute() );
+ attrs.AddToTail( m_z.GetAttribute() );
+}
+
+
+//-----------------------------------------------------------------------------
+// CDmeUnpackVector4Operator
+//-----------------------------------------------------------------------------
+IMPLEMENT_ELEMENT_FACTORY( DmeUnpackVector4Operator, CDmeUnpackVector4Operator );
+
+void CDmeUnpackVector4Operator::OnConstruction()
+{
+ m_vector.Init( this, "vector" );
+ m_x.Init( this, "x" );
+ m_y.Init( this, "y" );
+ m_z.Init( this, "z" );
+ m_w.Init( this, "w" );
+}
+
+void CDmeUnpackVector4Operator::OnDestruction()
+{
+}
+
+bool CDmeUnpackVector4Operator::IsDirty()
+{
+ const Vector4D &v = m_vector.Get();
+ return v.x != m_x.Get() || v.y != m_y.Get() || v.z != m_z.Get() || v.w != m_w.Get();
+}
+
+void CDmeUnpackVector4Operator::Operate()
+{
+ m_x.Set( m_vector.Get().x );
+ m_y.Set( m_vector.Get().y );
+ m_z.Set( m_vector.Get().z );
+ m_w.Set( m_vector.Get().w );
+}
+
+void CDmeUnpackVector4Operator::GetInputAttributes( CUtlVector< CDmAttribute * > &attrs )
+{
+ attrs.AddToTail( m_vector.GetAttribute() );
+}
+
+void CDmeUnpackVector4Operator::GetOutputAttributes( CUtlVector< CDmAttribute * > &attrs )
+{
+ attrs.AddToTail( m_x.GetAttribute() );
+ attrs.AddToTail( m_y.GetAttribute() );
+ attrs.AddToTail( m_z.GetAttribute() );
+ attrs.AddToTail( m_w.GetAttribute() );
+}
+
+
+//-----------------------------------------------------------------------------
+// CDmeUnpackQAngleOperator
+//-----------------------------------------------------------------------------
+IMPLEMENT_ELEMENT_FACTORY( DmeUnpackQAngleOperator, CDmeUnpackQAngleOperator );
+
+void CDmeUnpackQAngleOperator::OnConstruction()
+{
+ m_qangle.Init( this, "qangle" );
+ m_x.Init( this, "x" );
+ m_y.Init( this, "y" );
+ m_z.Init( this, "z" );
+}
+
+void CDmeUnpackQAngleOperator::OnDestruction()
+{
+}
+
+bool CDmeUnpackQAngleOperator::IsDirty()
+{
+ const QAngle &q = m_qangle.Get();
+ return q.x != m_x.Get() || q.y != m_y.Get() || q.z != m_z.Get();
+}
+
+void CDmeUnpackQAngleOperator::Operate()
+{
+ m_x.Set( m_qangle.Get().x );
+ m_y.Set( m_qangle.Get().y );
+ m_z.Set( m_qangle.Get().z );
+}
+
+void CDmeUnpackQAngleOperator::GetInputAttributes( CUtlVector< CDmAttribute * > &attrs )
+{
+ attrs.AddToTail( m_qangle.GetAttribute() );
+}
+
+void CDmeUnpackQAngleOperator::GetOutputAttributes( CUtlVector< CDmAttribute * > &attrs )
+{
+ attrs.AddToTail( m_x.GetAttribute() );
+ attrs.AddToTail( m_y.GetAttribute() );
+ attrs.AddToTail( m_z.GetAttribute() );
+}
+
+
+//-----------------------------------------------------------------------------
+// CDmeUnpackQuaternionOperator
+//-----------------------------------------------------------------------------
+IMPLEMENT_ELEMENT_FACTORY( DmeUnpackQuaternionOperator, CDmeUnpackQuaternionOperator );
+
+void CDmeUnpackQuaternionOperator::OnConstruction()
+{
+ m_quaternion.Init( this, "quaternion" );
+ m_x.Init( this, "x" );
+ m_y.Init( this, "y" );
+ m_z.Init( this, "z" );
+ m_w.Init( this, "w" );
+}
+
+void CDmeUnpackQuaternionOperator::OnDestruction()
+{
+}
+
+bool CDmeUnpackQuaternionOperator::IsDirty()
+{
+ const Quaternion &q = m_quaternion.Get();
+ return q.x != m_x.Get() || q.y != m_y.Get() || q.z != m_z.Get() || q.w != m_w.Get();
+}
+
+void CDmeUnpackQuaternionOperator::Operate()
+{
+ m_x.Set( m_quaternion.Get().x );
+ m_y.Set( m_quaternion.Get().y );
+ m_z.Set( m_quaternion.Get().z );
+ m_w.Set( m_quaternion.Get().w );
+}
+
+void CDmeUnpackQuaternionOperator::GetInputAttributes( CUtlVector< CDmAttribute * > &attrs )
+{
+ attrs.AddToTail( m_quaternion.GetAttribute() );
+}
+
+void CDmeUnpackQuaternionOperator::GetOutputAttributes( CUtlVector< CDmAttribute * > &attrs )
+{
+ attrs.AddToTail( m_x.GetAttribute() );
+ attrs.AddToTail( m_y.GetAttribute() );
+ attrs.AddToTail( m_z.GetAttribute() );
+ attrs.AddToTail( m_w.GetAttribute() );
+}
+
+
+//-----------------------------------------------------------------------------
+// CDmeUnpackVMatrixOperator
+//-----------------------------------------------------------------------------
+IMPLEMENT_ELEMENT_FACTORY( DmeUnpackVMatrixOperator, CDmeUnpackVMatrixOperator );
+
+void CDmeUnpackVMatrixOperator::OnConstruction()
+{
+ m_vmatrix.Init( this, "vmatrix" );
+ char name[ 4 ];
+ for ( uint i = 0; i < 16; ++i )
+ {
+ Q_snprintf( name, sizeof(name), "m%d%d", i >> 2, i & 0x3 );
+ m_cells[ i ].Init( this, name );
+ }
+}
+
+void CDmeUnpackVMatrixOperator::OnDestruction()
+{
+}
+
+bool CDmeUnpackVMatrixOperator::IsDirty()
+{
+ const VMatrix &v = m_vmatrix.Get();
+ for ( uint i = 0; i < 16; ++i )
+ {
+ if ( *( v[ i ] ) != m_cells[ i ].Get() )
+ return true;
+ }
+ return false;
+}
+
+void CDmeUnpackVMatrixOperator::Operate()
+{
+ VMatrix v;
+ for ( uint i = 0; i < 16; ++i )
+ {
+ m_cells[ i ].Set( *( v[ i ] ) );
+ }
+ m_vmatrix.Set( v );
+}
+
+void CDmeUnpackVMatrixOperator::GetInputAttributes( CUtlVector< CDmAttribute * > &attrs )
+{
+ attrs.AddToTail( m_vmatrix.GetAttribute() );
+}
+
+void CDmeUnpackVMatrixOperator::GetOutputAttributes( CUtlVector< CDmAttribute * > &attrs )
+{
+ for ( uint i = 0; i < 16; ++i )
+ {
+ attrs.AddToTail( m_cells[i].GetAttribute() );
+ }
+}