Fixed some memory leaks
This commit is contained in:
@@ -125,7 +125,7 @@ struct ModelJob : RenderJob
|
|||||||
if (Skeleton != nullptr) {
|
if (Skeleton != nullptr) {
|
||||||
|
|
||||||
EntityWrapper entityWrapper = EntityWrapper(world, modelComponent.EntityID);
|
EntityWrapper entityWrapper = EntityWrapper(world, modelComponent.EntityID);
|
||||||
BlendTree = new ::BlendTree(entityWrapper, Skeleton);
|
BlendTree = std::shared_ptr<::BlendTree>(new ::BlendTree(entityWrapper, Skeleton));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -149,7 +149,7 @@ struct ModelJob : RenderJob
|
|||||||
std::vector<::Skeleton::AnimationData> Animations;
|
std::vector<::Skeleton::AnimationData> Animations;
|
||||||
::Skeleton::AnimationOffset AnimationOffset;
|
::Skeleton::AnimationOffset AnimationOffset;
|
||||||
|
|
||||||
::BlendTree* BlendTree = nullptr;
|
std::shared_ptr<::BlendTree> BlendTree = nullptr;
|
||||||
|
|
||||||
glm::vec4 DiffuseColor;
|
glm::vec4 DiffuseColor;
|
||||||
glm::vec4 SpecularColor;
|
glm::vec4 SpecularColor;
|
||||||
|
|||||||
@@ -68,6 +68,7 @@
|
|||||||
<c:Blend>
|
<c:Blend>
|
||||||
<Pose1>BlendOverride</Pose1>
|
<Pose1>BlendOverride</Pose1>
|
||||||
<Pose2>AimAdditive</Pose2>
|
<Pose2>AimAdditive</Pose2>
|
||||||
|
<Weight>1</Weight>
|
||||||
</c:Blend>
|
</c:Blend>
|
||||||
<c:Model>
|
<c:Model>
|
||||||
<Resource>Models/Characters/Assault/AssaultAnimations.mesh</Resource>
|
<Resource>Models/Characters/Assault/AssaultAnimations.mesh</Resource>
|
||||||
@@ -93,7 +94,7 @@
|
|||||||
<Components>
|
<Components>
|
||||||
<c:Animation>
|
<c:Animation>
|
||||||
<AnimationName>AimRifle</AnimationName>
|
<AnimationName>AimRifle</AnimationName>
|
||||||
<Time>0.1120316470564493</Time>
|
<Time>0.13031392561420052</Time>
|
||||||
<Speed>0.5</Speed>
|
<Speed>0.5</Speed>
|
||||||
<Additive>true</Additive>
|
<Additive>true</Additive>
|
||||||
</c:Animation>
|
</c:Animation>
|
||||||
@@ -106,6 +107,7 @@
|
|||||||
<c:BlendOverride>
|
<c:BlendOverride>
|
||||||
<Master>ShootRifleAnimation</Master>
|
<Master>ShootRifleAnimation</Master>
|
||||||
<Slave>BlendWalkRun</Slave>
|
<Slave>BlendWalkRun</Slave>
|
||||||
|
<Weight>0</Weight>
|
||||||
</c:BlendOverride>
|
</c:BlendOverride>
|
||||||
<c:Transform/>
|
<c:Transform/>
|
||||||
</Components>
|
</Components>
|
||||||
@@ -124,7 +126,7 @@
|
|||||||
<Components>
|
<Components>
|
||||||
<c:Animation>
|
<c:Animation>
|
||||||
<AnimationName>Run</AnimationName>
|
<AnimationName>Run</AnimationName>
|
||||||
<Time>0.22406329411289949</Time>
|
<Time>0.26062785122840193</Time>
|
||||||
<Speed>1</Speed>
|
<Speed>1</Speed>
|
||||||
</c:Animation>
|
</c:Animation>
|
||||||
<c:Transform/>
|
<c:Transform/>
|
||||||
@@ -135,7 +137,7 @@
|
|||||||
<Components>
|
<Components>
|
||||||
<c:Animation>
|
<c:Animation>
|
||||||
<AnimationName>Walk</AnimationName>
|
<AnimationName>Walk</AnimationName>
|
||||||
<Time>0.22406329411289949</Time>
|
<Time>0.26101654028221088</Time>
|
||||||
<Speed>1</Speed>
|
<Speed>1</Speed>
|
||||||
</c:Animation>
|
</c:Animation>
|
||||||
<c:Transform/>
|
<c:Transform/>
|
||||||
@@ -148,7 +150,7 @@
|
|||||||
<Components>
|
<Components>
|
||||||
<c:Animation>
|
<c:Animation>
|
||||||
<AnimationName>ShootFastRifle</AnimationName>
|
<AnimationName>ShootFastRifle</AnimationName>
|
||||||
<Time>0.024060340702750871</Time>
|
<Time>0.061012901418647347</Time>
|
||||||
<Speed>1</Speed>
|
<Speed>1</Speed>
|
||||||
</c:Animation>
|
</c:Animation>
|
||||||
<c:Transform/>
|
<c:Transform/>
|
||||||
|
|||||||
@@ -53,7 +53,25 @@ BlendTree::BlendTree(EntityWrapper ModelEntity, Skeleton* skeleton)
|
|||||||
|
|
||||||
BlendTree::~BlendTree()
|
BlendTree::~BlendTree()
|
||||||
{
|
{
|
||||||
|
Node* currentNode = m_Root;
|
||||||
|
|
||||||
|
while (currentNode->Child[0] != nullptr) {
|
||||||
|
currentNode = currentNode->Child[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
std::list<Node*> m_NodesToRemove;
|
||||||
|
|
||||||
|
while (currentNode != nullptr) {
|
||||||
|
currentNode = currentNode->Next();
|
||||||
|
m_NodesToRemove.push_back(currentNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (auto it = m_NodesToRemove.begin(); it != m_NodesToRemove.end(); it++) {
|
||||||
|
if ((*it) != nullptr) {
|
||||||
|
delete (*it);
|
||||||
|
(*it) = nullptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void BlendTree::PrintTree()
|
void BlendTree::PrintTree()
|
||||||
|
|||||||
@@ -591,12 +591,14 @@ std::vector<glm::mat4> Skeleton::OverridePose(std::vector<glm::mat4> overridePos
|
|||||||
return finalPose;
|
return finalPose;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < overridePose.size(); i++) {
|
for (int i = 0; i < targetPose.size(); i++) {
|
||||||
if(overridePose[i] != glm::mat4(1)) {
|
if(overridePose[i] != glm::mat4(1)) {
|
||||||
finalPose.push_back(overridePose[i]);
|
finalPose.push_back(overridePose[i]);
|
||||||
} else {
|
} else {
|
||||||
finalPose.push_back(targetPose[i]);
|
finalPose.push_back(targetPose[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//finalPose.push_back(overridePose[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return finalPose;
|
return finalPose;
|
||||||
|
|||||||
Reference in New Issue
Block a user