Added viola

This commit is contained in:
Vladislav Khorev 2026-04-01 13:02:39 +03:00
parent 56ce826205
commit 7840bfdb4e
5 changed files with 85888 additions and 2 deletions

42311
resources/idleviola_uv010.txt Normal file

File diff suppressed because it is too large Load Diff

BIN
resources/viola.png (Stored with Git LFS) Normal file

Binary file not shown.

43494
resources/walkviola_uv010.txt Normal file

File diff suppressed because it is too large Load Diff

View File

@ -171,7 +171,11 @@ namespace ZL
benchMesh.data.Move({ -2.1, 0.5, -7.9 });
benchMesh.RefreshVBO();
violaIdleModel.LoadFromFile("resources/idleviola_uv010.txt", CONST_ZIP_FILE);
violaWalkModel.LoadFromFile("resources/walkviola_uv010.txt", CONST_ZIP_FILE);
violaTexture = std::make_unique<Texture>(CreateTextureDataFromPng("resources/viola.png", CONST_ZIP_FILE));
loadingCompleted = true;
}
@ -205,7 +209,7 @@ namespace ZL
renderer.LoadIdentity();
renderer.TranslateMatrix({ 0,0, -1.0f * Environment::zoom });
renderer.TranslateMatrix({ 0, -6.f, 0 }); //Ship camera offset
//renderer.TranslateMatrix({ 0, -6.f, 0 });
renderer.RotateMatrix(Eigen::Quaternionf(Eigen::AngleAxisf(M_PI * 30 / 180.f, Eigen::Vector3f::UnitX())).toRotationMatrix());
@ -219,6 +223,34 @@ namespace ZL
glBindTexture(GL_TEXTURE_2D, benchTexture->getTexID());
renderer.DrawVertexRenderStruct(benchMesh);
renderer.PushMatrix();
renderer.ScaleMatrix(0.2);
renderer.RotateMatrix(Eigen::Quaternionf(Eigen::AngleAxisf(-M_PI * 0.5f, Eigen::Vector3f::UnitX())).toRotationMatrix());
renderer.RotateMatrix(Eigen::Quaternionf(Eigen::AngleAxisf(M_PI, Eigen::Vector3f::UnitZ())).toRotationMatrix());
//renderer.RotateMatrix(QuatFromRotateAroundX(-M_PI / 2.0));
//renderer.RotateMatrix(QuatFromRotateAroundZ(M_PI));
if (violaCurrentAnimation == 0) {
violaIdleModelMutable.AssignFrom(violaIdleModel.mesh);
violaIdleModelMutable.RefreshVBO();
glBindTexture(GL_TEXTURE_2D, violaTexture->getTexID());
renderer.DrawVertexRenderStruct(violaIdleModelMutable);
}
else if (violaCurrentAnimation == 1) {
violaWalkModelMutable.AssignFrom(violaWalkModel.mesh);
violaWalkModelMutable.RefreshVBO();
glBindTexture(GL_TEXTURE_2D, violaTexture->getTexID());
renderer.DrawVertexRenderStruct(violaWalkModelMutable);
}
renderer.PopMatrix();
renderer.PopMatrix();
renderer.PopProjectionMatrix();
@ -294,7 +326,37 @@ namespace ZL
int64_t delta = newTickCount - lastTickCount;
lastTickCount = newTickCount;
if (violaCurrentAnimation == 0) {
violaCurrentIdleFrame += delta / 24.f;
while (violaCurrentIdleFrame >= 40) {
violaCurrentIdleFrame -= 40;
}
if (int(violaCurrentIdleFrame) != violaLastIdleFrame) {
violaIdleModel.Interpolate(int(violaCurrentIdleFrame));
violaLastIdleFrame = int(violaCurrentIdleFrame);
}
}
else if (violaCurrentAnimation == 1) {
violaCurrentWalkFrame += delta / 24.f;
while (violaCurrentWalkFrame >= 30) {
violaCurrentWalkFrame -= 30;
}
if (int(violaCurrentWalkFrame) != violaLastWalkFrame) {
violaWalkModel.Interpolate(int(violaCurrentWalkFrame));
violaLastWalkFrame = int(violaCurrentWalkFrame);
}
}
}
}
void Game::render() {

View File

@ -1,5 +1,5 @@
#pragma once
#include "BoneAnimatedModel.h"
#include "render/Renderer.h"
#include "Environment.h"
#include "render/TextureManager.h"
@ -56,6 +56,22 @@ namespace ZL {
std::shared_ptr<Texture> benchTexture;
VertexRenderStruct benchMesh;
BoneSystem violaIdleModel;
VertexRenderStruct violaIdleModelMutable;
BoneSystem violaWalkModel;
VertexRenderStruct violaWalkModelMutable;
std::shared_ptr<Texture> violaTexture;
float violaCurrentIdleFrame = 0;
float violaCurrentWalkFrame = 0;
int violaLastIdleFrame = 0;
int violaLastWalkFrame = 0;
int violaCurrentAnimation = 0;
private:
int64_t getSyncTimeMs();
void processTickCount();