From 8ed85c80c8e6d7769ff67f450eebe216bb539301 Mon Sep 17 00:00:00 2001 From: rdb Date: Fri, 6 Oct 2017 23:59:17 +0200 Subject: [PATCH] linmath: permit single-argument/fill value for UnalignedLVecBase4 --- panda/src/linmath/lvecBase4_src.I | 21 +++++++++++++++++++++ panda/src/linmath/lvecBase4_src.h | 2 ++ 2 files changed, 23 insertions(+) diff --git a/panda/src/linmath/lvecBase4_src.I b/panda/src/linmath/lvecBase4_src.I index 70a376a3bf..464cd6fa12 100644 --- a/panda/src/linmath/lvecBase4_src.I +++ b/panda/src/linmath/lvecBase4_src.I @@ -903,6 +903,14 @@ FLOATNAME(UnalignedLVecBase4)(const FLOATNAME(LVecBase4) ©) { set(copy[0], copy[1], copy[2], copy[3]); } +/** + * + */ +INLINE_LINMATH FLOATNAME(UnalignedLVecBase4):: +FLOATNAME(UnalignedLVecBase4)(FLOATTYPE fill_value) { + fill(fill_value); +} + /** * */ @@ -912,6 +920,19 @@ FLOATNAME(UnalignedLVecBase4)(FLOATTYPE x, FLOATTYPE y, FLOATTYPE z, FLOATTYPE w set(x, y, z, w); } +/** + * Sets each element of the vector to the indicated fill_value. This is + * particularly useful for initializing to zero. + */ +INLINE_LINMATH void FLOATNAME(UnalignedLVecBase4):: +fill(FLOATTYPE fill_value) { + TAU_PROFILE("void UnalignedLVecBase4::fill()", " ", TAU_USER); + _v(0) = fill_value; + _v(1) = fill_value; + _v(2) = fill_value; + _v(3) = fill_value; +} + /** * */ diff --git a/panda/src/linmath/lvecBase4_src.h b/panda/src/linmath/lvecBase4_src.h index b6e1a4df35..fdd81dad4b 100644 --- a/panda/src/linmath/lvecBase4_src.h +++ b/panda/src/linmath/lvecBase4_src.h @@ -230,8 +230,10 @@ PUBLISHED: INLINE_LINMATH FLOATNAME(UnalignedLVecBase4)() DEFAULT_CTOR; INLINE_LINMATH FLOATNAME(UnalignedLVecBase4)(const FLOATNAME(LVecBase4) ©); + INLINE_LINMATH FLOATNAME(UnalignedLVecBase4)(FLOATTYPE fill_value); INLINE_LINMATH FLOATNAME(UnalignedLVecBase4)(FLOATTYPE x, FLOATTYPE y, FLOATTYPE z, FLOATTYPE w); + INLINE_LINMATH void fill(FLOATTYPE fill_value); INLINE_LINMATH void set(FLOATTYPE x, FLOATTYPE y, FLOATTYPE z, FLOATTYPE w); INLINE_LINMATH FLOATTYPE operator [](int i) const;