diff --git a/libs/generic/vector.h b/libs/generic/vector.h index 6b66a876..5592fbbb 100644 --- a/libs/generic/vector.h +++ b/libs/generic/vector.h @@ -108,6 +108,13 @@ public: return m_elements; } + BasicVector2& vec2(){ + return reinterpret_cast&>( x() ); + } + const BasicVector2& vec2() const { + return reinterpret_cast&>( x() ); + } + void set( const Element value ){ x() = y() = z() = value; } diff --git a/plugins/entity/namedentity.h b/plugins/entity/namedentity.h index f618c14b..86e6c3a2 100644 --- a/plugins/entity/namedentity.h +++ b/plugins/entity/namedentity.h @@ -143,8 +143,7 @@ public: matrix4_transform_vector4( volume.GetViewport(), position ); // globalOutputStream() << position << " Viewport\n"; // globalOutputStream() << volume.GetViewport()[0] << " " << volume.GetViewport()[5] << " Viewport size\n"; - m_label.screenPos.x() = position.x(); - m_label.screenPos.y() = position.y(); + m_label.screenPos = position.vec3().vec2(); // globalOutputStream() << m_label.screenPos << "\n"; renderer.PushState(); diff --git a/radiant/brush_primit.cpp b/radiant/brush_primit.cpp index b0744558..c930f8eb 100644 --- a/radiant/brush_primit.cpp +++ b/radiant/brush_primit.cpp @@ -312,9 +312,7 @@ void Texdef_EmitTextureCoordinates( const TextureProjection& projection, std::si for ( Winding::iterator i = w.begin(); i != w.end(); ++i ) { - Vector3 texcoord = matrix4_transformed_point( local2tex, ( *i ).vertex ); - ( *i ).texcoord[0] = texcoord[0]; - ( *i ).texcoord[1] = texcoord[1]; + ( *i ).texcoord = matrix4_transformed_point( local2tex, ( *i ).vertex ).vec2(); ( *i ).tangent = tangent; ( *i ).bitangent = bitangent; diff --git a/radiant/camwindow.cpp b/radiant/camwindow.cpp index 6c358215..1b01556e 100644 --- a/radiant/camwindow.cpp +++ b/radiant/camwindow.cpp @@ -782,8 +782,7 @@ public: for( std::size_t i = 0; i < 3; ++i ){ if( points[i].w() > 0.005f ){ updateTex( i, bounds.extents[i] ); - m_labels[i].screenPos.x() = points[i].x(); - m_labels[i].screenPos.y() = points[i].y(); + m_labels[i].screenPos = points[i].vec3().vec2(); renderer.addRenderable( m_labels[i], g_matrix4_identity ); } } diff --git a/radiant/patch.cpp b/radiant/patch.cpp index 9fb2d337..bfae2b2d 100644 --- a/radiant/patch.cpp +++ b/radiant/patch.cpp @@ -1239,9 +1239,7 @@ void Patch::ProjectTexture( TextureProjection projection, const Vector3& normal for ( PatchControlIter i = m_ctrl.data(); i != m_ctrl.data() + m_ctrl.size(); ++i ) { - Vector3 texcoord = matrix4_transformed_point( local2tex, ( *i ).m_vertex ); - ( *i ).m_texcoord[0] = texcoord[0]; - ( *i ).m_texcoord[1] = texcoord[1]; + ( *i ).m_texcoord = matrix4_transformed_point( local2tex, ( *i ).m_vertex ).vec2(); } controlPointsChanged(); @@ -1256,9 +1254,7 @@ void Patch::ProjectTexture( const texdef_t& texdef, const Vector3* direction ){ for ( PatchControlIter i = m_ctrl.data(); i != m_ctrl.data() + m_ctrl.size(); ++i ) { - Vector3 texcoord = matrix4_transformed_point( local2tex, ( *i ).m_vertex ); - ( *i ).m_texcoord[0] = texcoord[0]; - ( *i ).m_texcoord[1] = texcoord[1]; + ( *i ).m_texcoord = matrix4_transformed_point( local2tex, ( *i ).m_vertex ).vec2(); } controlPointsChanged(); diff --git a/radiant/selection.cpp b/radiant/selection.cpp index aeb6e005..015f534d 100644 --- a/radiant/selection.cpp +++ b/radiant/selection.cpp @@ -5850,8 +5850,7 @@ private: const Matrix4 uvTransform = transform_local2object( matrix4_affine_inverse( transform ), m_faceLocal2tex, m_faceTex2local ); for( std::size_t i = 0; i < m_patchCtrl.size(); ++i ){ const Vector3 uv = matrix4_transformed_point( uvTransform, Vector3( m_patchCtrl[i].m_texcoord ) ); - m_patch->getControlPointsTransformed()[i].m_texcoord.x() = uv.x(); - m_patch->getControlPointsTransformed()[i].m_texcoord.y() = uv.y(); + m_patch->getControlPointsTransformed()[i].m_texcoord = uv.vec2(); } // m_patch->controlPointsChanged(); m_patch->UpdateCachedData(); @@ -6461,8 +6460,7 @@ public: const Matrix4 translation = matrix4_translation_for_vec3( result ); for( std::size_t i : indices ){ const Vector3 uv = matrix4_transformed_point( translation, Vector3( m_patchCtrl[i].m_texcoord ) ); - m_patch->getControlPointsTransformed()[i].m_texcoord.x() = uv.x(); - m_patch->getControlPointsTransformed()[i].m_texcoord.y() = uv.y(); + m_patch->getControlPointsTransformed()[i].m_texcoord = uv.vec2(); m_patchRenderPoints.m_points[i].vertex = vertex3f_for_vector3( uv ); }