28 template <
typename VoxelType>
29 template <
typename DerivedVolumeType>
35 ,m_eWrapMode(WrapModes::
Border)
37 ,m_bIsCurrentPositionValidInX(false)
38 ,m_bIsCurrentPositionValidInY(false)
39 ,m_bIsCurrentPositionValidInZ(false)
43 template <
typename VoxelType>
44 template <
typename DerivedVolumeType>
49 template <
typename VoxelType>
50 template <
typename DerivedVolumeType>
53 return Vector3DInt32(mXPosInVolume, mYPosInVolume, mZPosInVolume);
56 template <
typename VoxelType>
57 template <
typename DerivedVolumeType>
60 return mVolume->getVoxelAt(mXPosInVolume, mYPosInVolume, mZPosInVolume);
63 template <
typename VoxelType>
64 template <
typename DerivedVolumeType>
67 return m_bIsCurrentPositionValidInX && m_bIsCurrentPositionValidInY && m_bIsCurrentPositionValidInZ;
70 template <
typename VoxelType>
71 template <
typename DerivedVolumeType>
74 setPosition(v3dNewPos.
getX(), v3dNewPos.
getY(), v3dNewPos.
getZ());
77 template <
typename VoxelType>
78 template <
typename DerivedVolumeType>
85 m_bIsCurrentPositionValidInX = mVolume->getEnclosingRegion().containsPointInX(xPos);
86 m_bIsCurrentPositionValidInY = mVolume->getEnclosingRegion().containsPointInY(yPos);
87 m_bIsCurrentPositionValidInZ = mVolume->getEnclosingRegion().containsPointInZ(zPos);
90 template <
typename VoxelType>
91 template <
typename DerivedVolumeType>
94 return mVolume->
setVoxelAt(mXPosInVolume, mYPosInVolume, mZPosInVolume, tValue);
97 template <
typename VoxelType>
98 template <
typename DerivedVolumeType>
101 m_eWrapMode = eWrapMode;
105 template <
typename VoxelType>
106 template <
typename DerivedVolumeType>
113 template <
typename VoxelType>
114 template <
typename DerivedVolumeType>
121 template <
typename VoxelType>
122 template <
typename DerivedVolumeType>
129 template <
typename VoxelType>
130 template <
typename DerivedVolumeType>
137 template <
typename VoxelType>
138 template <
typename DerivedVolumeType>
145 template <
typename VoxelType>
146 template <
typename DerivedVolumeType>
153 template <
typename VoxelType>
154 template <
typename DerivedVolumeType>
157 return getVoxelAt(mXPosInVolume - 1, mYPosInVolume - 1, mZPosInVolume - 1);
160 template <
typename VoxelType>
161 template <
typename DerivedVolumeType>
164 return getVoxelAt(mXPosInVolume - 1, mYPosInVolume - 1, mZPosInVolume );
167 template <
typename VoxelType>
168 template <
typename DerivedVolumeType>
171 return getVoxelAt(mXPosInVolume - 1, mYPosInVolume - 1, mZPosInVolume + 1);
174 template <
typename VoxelType>
175 template <
typename DerivedVolumeType>
178 return getVoxelAt(mXPosInVolume - 1, mYPosInVolume , mZPosInVolume - 1);
181 template <
typename VoxelType>
182 template <
typename DerivedVolumeType>
185 return getVoxelAt(mXPosInVolume - 1, mYPosInVolume , mZPosInVolume );
188 template <
typename VoxelType>
189 template <
typename DerivedVolumeType>
192 return getVoxelAt(mXPosInVolume - 1, mYPosInVolume , mZPosInVolume + 1);
195 template <
typename VoxelType>
196 template <
typename DerivedVolumeType>
199 return getVoxelAt(mXPosInVolume - 1, mYPosInVolume + 1, mZPosInVolume - 1);
202 template <
typename VoxelType>
203 template <
typename DerivedVolumeType>
206 return getVoxelAt(mXPosInVolume - 1, mYPosInVolume + 1, mZPosInVolume );
209 template <
typename VoxelType>
210 template <
typename DerivedVolumeType>
213 return getVoxelAt(mXPosInVolume - 1, mYPosInVolume + 1, mZPosInVolume + 1);
218 template <
typename VoxelType>
219 template <
typename DerivedVolumeType>
222 return getVoxelAt(mXPosInVolume , mYPosInVolume - 1, mZPosInVolume - 1);
225 template <
typename VoxelType>
226 template <
typename DerivedVolumeType>
229 return getVoxelAt(mXPosInVolume , mYPosInVolume - 1, mZPosInVolume );
232 template <
typename VoxelType>
233 template <
typename DerivedVolumeType>
236 return getVoxelAt(mXPosInVolume , mYPosInVolume - 1, mZPosInVolume + 1);
239 template <
typename VoxelType>
240 template <
typename DerivedVolumeType>
243 return getVoxelAt(mXPosInVolume , mYPosInVolume , mZPosInVolume - 1);
246 template <
typename VoxelType>
247 template <
typename DerivedVolumeType>
250 return getVoxelAt(mXPosInVolume , mYPosInVolume , mZPosInVolume );
253 template <
typename VoxelType>
254 template <
typename DerivedVolumeType>
257 return getVoxelAt(mXPosInVolume , mYPosInVolume , mZPosInVolume + 1);
260 template <
typename VoxelType>
261 template <
typename DerivedVolumeType>
264 return getVoxelAt(mXPosInVolume , mYPosInVolume + 1, mZPosInVolume - 1);
267 template <
typename VoxelType>
268 template <
typename DerivedVolumeType>
271 return getVoxelAt(mXPosInVolume , mYPosInVolume + 1, mZPosInVolume );
274 template <
typename VoxelType>
275 template <
typename DerivedVolumeType>
278 return getVoxelAt(mXPosInVolume , mYPosInVolume + 1, mZPosInVolume + 1);
283 template <
typename VoxelType>
284 template <
typename DerivedVolumeType>
287 return getVoxelAt(mXPosInVolume + 1, mYPosInVolume - 1, mZPosInVolume - 1);
290 template <
typename VoxelType>
291 template <
typename DerivedVolumeType>
294 return getVoxelAt(mXPosInVolume + 1, mYPosInVolume - 1, mZPosInVolume );
297 template <
typename VoxelType>
298 template <
typename DerivedVolumeType>
301 return getVoxelAt(mXPosInVolume + 1, mYPosInVolume - 1, mZPosInVolume + 1);
304 template <
typename VoxelType>
305 template <
typename DerivedVolumeType>
308 return getVoxelAt(mXPosInVolume + 1, mYPosInVolume , mZPosInVolume - 1);
311 template <
typename VoxelType>
312 template <
typename DerivedVolumeType>
315 return getVoxelAt(mXPosInVolume + 1, mYPosInVolume , mZPosInVolume );
318 template <
typename VoxelType>
319 template <
typename DerivedVolumeType>
322 return getVoxelAt(mXPosInVolume + 1, mYPosInVolume , mZPosInVolume + 1);
325 template <
typename VoxelType>
326 template <
typename DerivedVolumeType>
329 return getVoxelAt(mXPosInVolume + 1, mYPosInVolume + 1, mZPosInVolume - 1);
332 template <
typename VoxelType>
333 template <
typename DerivedVolumeType>
336 return getVoxelAt(mXPosInVolume + 1, mYPosInVolume + 1, mZPosInVolume );
339 template <
typename VoxelType>
340 template <
typename DerivedVolumeType>
343 return getVoxelAt(mXPosInVolume + 1, mYPosInVolume + 1, mZPosInVolume + 1);
346 template <
typename VoxelType>
347 template <
typename DerivedVolumeType>
350 if(mVolume->getEnclosingRegion().containsPoint(uXPos, uYPos, uZPos))
352 return mVolume->getVoxelAt(uXPos, uYPos, uZPos);
360 const Vector3DInt32& lowerCorner = mVolume->m_regValidRegion.getLowerCorner();
361 const Vector3DInt32& upperCorner = mVolume->m_regValidRegion.getUpperCorner();
367 return mVolume->getVoxelAt(iClampedX, iClampedY, iClampedZ);