!B (Sandbox) (CE-21795) Importing models with multisubmaterials via fbx switches...
[CRYENGINE.git] / Code / Sandbox / Plugins / LodGeneratorPlugin / Util / Vector.h
blobe35332ccb1bafcb0ac1d2645a89e4d5423ae242f
1 #pragma once
3 #include <vector>
4 #include "Allocator.h"
6 namespace LODGenerator
8 template<class T>
9 class CVector
11 public:
12 CVector()
16 CVector(uint size)
18 m_List.resize(size);
21 void resize(uint size)
23 m_List.resize(size);
26 void resize(uint size,T v)
28 m_List.resize(size,v);
31 CVector(const CVector& rhs)
33 m_List.clear();
34 for (int i=0;i<v.size();i++)
36 m_List.push_back(v[i]);
40 void allocate(unsigned int n)
42 clear();
43 m_List.reserve(n);
46 void zero()
48 for (std::vector<T>::iterator iter = m_List.begin();iter != m_List.end();iter++)
50 *iter = 0;
54 void operator += (const CVector& v)
56 ASSERT(m_List.size() != v.size());
57 for (int i=0;i<m_List.size();i++)
59 m_List[i] += v[i];
63 void operator -= (const CVector& v)
65 ASSERT(m_List.size() != v.size());
66 for (int i=0;i<m_List.size();i++)
68 m_List[i] -= v[i];
72 void operator=(const CVector& v)
74 ASSERT(m_List.size() != v.size());
75 for (int i=0;i<m_List.size();i++)
77 m_List[i] -= v[i];
81 T& operator [] (int seat)
83 ASSERT(seat < m_List.size());
84 return m_List[seat];
87 T operator [] (int seat) const
89 ASSERT(seat < m_List.size());
90 return m_List[seat];
93 T& operator () (int seat)
95 ASSERT(seat < m_List.size());
96 return m_List[seat];
99 T operator () (int seat) const
101 ASSERT(seat < m_List.size());
102 return m_List[seat];
105 int size() const
107 return m_List.size();
110 bool has_nan()
112 for(unsigned int i=0; i<m_List.size(); i++) {
113 if(_isnan(m_List[i])) {
114 return true ;
117 return false ;
120 T* data()
122 return m_List.data();
125 const T* data() const
127 return m_List.data();
130 void clear()
132 m_List.clear();
135 public:
136 std::vector<T> m_List;
139 typedef CVector<double> CVectorD;
140 typedef CVector<int> CVectorI;