|
@@ -46,6 +46,8 @@ MeshAttachment::MeshAttachment(const String &name) : VertexAttachment(name), Has
|
|
_regionHeight(0),
|
|
_regionHeight(0),
|
|
_regionOriginalWidth(0),
|
|
_regionOriginalWidth(0),
|
|
_regionOriginalHeight(0),
|
|
_regionOriginalHeight(0),
|
|
|
|
+ _regionTextureWidth(0),
|
|
|
|
+ _regionTextureHeight(0),
|
|
_parentMesh(NULL),
|
|
_parentMesh(NULL),
|
|
_path(),
|
|
_path(),
|
|
_regionU(0),
|
|
_regionU(0),
|
|
@@ -63,17 +65,24 @@ MeshAttachment::MeshAttachment(const String &name) : VertexAttachment(name), Has
|
|
MeshAttachment::~MeshAttachment() {}
|
|
MeshAttachment::~MeshAttachment() {}
|
|
|
|
|
|
void MeshAttachment::updateUVs() {
|
|
void MeshAttachment::updateUVs() {
|
|
- float u = _regionU, v = _regionV, width = _regionU2 - _regionU, height = _regionV2 - _regionV;
|
|
|
|
if (_uvs.size() != _regionUVs.size()) {
|
|
if (_uvs.size() != _regionUVs.size()) {
|
|
_uvs.setSize(_regionUVs.size(), 0);
|
|
_uvs.setSize(_regionUVs.size(), 0);
|
|
}
|
|
}
|
|
|
|
|
|
if (_regionRotate) {
|
|
if (_regionRotate) {
|
|
|
|
+ float u = _regionU - (_regionOriginalHeight - _regionOffsetY - _regionHeight) / _regionTextureWidth;
|
|
|
|
+ float v = _regionV - (_regionOriginalWidth - _regionOffsetX - _regionWidth) / _regionTextureHeight;
|
|
|
|
+ float width = _regionOriginalHeight / _regionTextureWidth;
|
|
|
|
+ float height = _regionOriginalWidth / _regionTextureHeight;
|
|
for (size_t i = 0, n = _uvs.size(); i < n; i += 2) {
|
|
for (size_t i = 0, n = _uvs.size(); i < n; i += 2) {
|
|
_uvs[i] = u + _regionUVs[i + 1] * width;
|
|
_uvs[i] = u + _regionUVs[i + 1] * width;
|
|
_uvs[i + 1] = v + height - _regionUVs[i] * height;
|
|
_uvs[i + 1] = v + height - _regionUVs[i] * height;
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
|
|
+ float u = _regionU - _regionOffsetX / _regionTextureWidth;
|
|
|
|
+ float v = _regionV - (_regionOriginalHeight - _regionOffsetY - _regionHeight) / _regionTextureHeight;
|
|
|
|
+ float width = _regionOriginalWidth / _regionTextureWidth;
|
|
|
|
+ float height = _regionOriginalHeight / _regionTextureHeight;
|
|
for (size_t i = 0, n = _uvs.size(); i < n; i += 2) {
|
|
for (size_t i = 0, n = _uvs.size(); i < n; i += 2) {
|
|
_uvs[i] = u + _regionUVs[i] * width;
|
|
_uvs[i] = u + _regionUVs[i] * width;
|
|
_uvs[i + 1] = v + _regionUVs[i + 1] * height;
|
|
_uvs[i + 1] = v + _regionUVs[i + 1] * height;
|