12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- #pragma once
- #include <cstddef>
- #include <cstdint>
- namespace WwiseGTE
- {
- struct IndexAttribute
- {
-
- inline IndexAttribute(void* inSource = nullptr, size_t inSize = 0)
- :
- source(inSource),
- size(inSize)
- {
- }
-
- inline void SetTriangle(uint32_t t, uint32_t v0, uint32_t v1, uint32_t v2)
- {
- if (size == sizeof(uint32_t))
- {
- uint32_t* index = reinterpret_cast<uint32_t*>(source) + 3 * t;
- index[0] = v0;
- index[1] = v1;
- index[2] = v2;
- return;
- }
- if (size == sizeof(uint16_t))
- {
- uint16_t* index = reinterpret_cast<uint16_t*>(source) + 3 * t;
- index[0] = static_cast<uint16_t>(v0);
- index[1] = static_cast<uint16_t>(v1);
- index[2] = static_cast<uint16_t>(v2);
- return;
- }
-
- }
- inline void GetTriangle(uint32_t t, uint32_t& v0, uint32_t& v1, uint32_t& v2) const
- {
- if (size == sizeof(uint32_t))
- {
- uint32_t* index = reinterpret_cast<uint32_t*>(source) + 3 * t;
- v0 = index[0];
- v1 = index[1];
- v2 = index[2];
- return;
- }
- if (size == sizeof(uint16_t))
- {
- uint16_t* index = reinterpret_cast<uint16_t*>(source) + 3 * t;
- v0 = static_cast<uint32_t>(index[0]);
- v1 = static_cast<uint32_t>(index[1]);
- v2 = static_cast<uint32_t>(index[2]);
- return;
- }
-
- v0 = 0;
- v1 = 0;
- v2 = 0;
- }
-
-
-
- void* source;
- size_t size;
- };
- }
|