Skip to content

Commit 1005475

Browse files
Remove crappy animators, add a next task for Przemog
1 parent 76ebc02 commit 1005475

12 files changed

+24
-868
lines changed

include/ISkinnedMeshSceneNode.h

Lines changed: 0 additions & 137 deletions
This file was deleted.

include/nbl/asset/IAnimationLibrary.h

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -102,46 +102,44 @@ class IAnimationLibrary : public virtual core::IReferenceCounted
102102
//
103103
inline const SBufferBinding<const BufferType>& getKeyframeStorageBinding() const
104104
{
105-
return reinterpret_cast<const SBufferBinding<const BufferType>*>(m_keyframeStorageBinding);
105+
return reinterpret_cast<const SBufferBinding<const BufferType>&>(m_keyframeStorageBinding);
106106
}
107107
inline const SBufferBinding<const BufferType>& getTimestampStorageBinding() const
108108
{
109-
return reinterpret_cast<const SBufferBinding<const BufferType>*>(m_timestampStorageBinding);
109+
return reinterpret_cast<const SBufferBinding<const BufferType>&>(m_timestampStorageBinding);
110110
}
111111

112112
//
113113
inline const SBufferRange<const BufferType>& getAnimationStorageRange() const
114114
{
115-
return reinterpret_cast<const SBufferRange<const BufferType>*>(m_animationStorageRange);
115+
return reinterpret_cast<const SBufferRange<const BufferType>&>(m_animationStorageRange);
116116
}
117117

118118
//
119119
inline uint32_t getAnimationCapacity() const
120120
{
121-
return m_animationStorageRange.size() / sizeof(Animation);
121+
return m_animationStorageRange.size/sizeof(Animation);
122122
}
123123

124124
inline uint32_t getAnimationOffsetFromName(const char* animationName) const
125125
{
126-
auto found = m_nameToAnimation.find(animationName);
126+
m_temporaryString = animationName;
127+
auto found = m_nameToAnimation.find(0xffffffffu);
128+
m_temporaryString = nullptr;
127129
if (found != m_nameToAnimation.end())
128130
return found->second;
129131
return getAnimationCapacity();
130132
}
131133

132-
inline const auto& getNameToAnimationMap() const
133-
{
134-
return m_nameToAnimation;
135-
}
136-
137134

138135
protected:
139136
IAnimationLibrary(SBufferBinding<BufferType>&& _keyframeStorageBinding, SBufferBinding<BufferType>&& _timestampStorageBinding, uint32_t _keyframeCount, SBufferRange<BufferType>&& _animationStorageRange) :
140-
m_stringPool(), m_nameToAnimation(StringComparator(&m_stringPool)), m_keyframeStorageBinding(std::move(_keyframeStorageBinding)), m_timestampStorageBinding(std::move(_timestampStorageBinding)),
137+
m_stringPool(), m_temporaryString(nullptr), m_nameToAnimation(StringComparator(&m_stringPool,&m_temporaryString)),
138+
m_keyframeStorageBinding(std::move(_keyframeStorageBinding)), m_timestampStorageBinding(std::move(_timestampStorageBinding)),
141139
m_animationStorageRange(std::move(_animationStorageRange)), m_keyframeCount(_keyframeCount)
142140
{
143-
assert(m_keyframeStorageBinding.buffer && (m_keyframeStorageBinding.offset%sizeof(Keyframe)==0u) && m_keyframeStorageBinding.offset+sizeof(Keyframe)*m_keyframeCount<=m_keyframeStorageBinding.buffer->getSize());
144-
assert(m_timestampStorageBinding.buffer && (m_timestampStorageBinding.offset%sizeof(Keyframe)==0u) && m_timestampStorageBinding.offset+sizeof(timestamp_t)*m_keyframeCount<=m_timestampStorageBinding.buffer->getSize());
141+
assert(m_keyframeStorageBinding.buffer && m_keyframeStorageBinding.offset+sizeof(Keyframe)*m_keyframeCount<=m_keyframeStorageBinding.buffer->getSize());
142+
assert(m_timestampStorageBinding.buffer && m_timestampStorageBinding.offset+sizeof(timestamp_t)*m_keyframeCount<=m_timestampStorageBinding.buffer->getSize());
145143

146144
if (!m_animationStorageRange.isValid())
147145
return;
@@ -204,17 +202,21 @@ class IAnimationLibrary : public virtual core::IReferenceCounted
204202

205203
struct StringComparator
206204
{
207-
StringComparator(const core::vector<char>* const _stringPool) : stringPool(_stringPool) {}
205+
StringComparator(const core::vector<char>* const _stringPool, const char* const* _temporaryString) : stringPool(_stringPool), temporaryString(_temporaryString) {}
208206

209-
inline bool operator()(const uint32_t lhs, const uint32_t rhs) const
207+
inline bool operator()(const uint32_t _lhs, const uint32_t _rhs) const
210208
{
211-
return strcmp(stringPool->data()+lhs,stringPool->data()+rhs)<0;
209+
const char* lhs = _lhs!=0xffffffffu ? (stringPool->data()+_lhs):(*temporaryString);
210+
const char* rhs = _rhs!=0xffffffffu ? (stringPool->data()+_rhs):(*temporaryString);
211+
return strcmp(lhs,rhs)<0;
212212
}
213213

214214
private:
215215
const core::vector<char>* stringPool;
216+
const char* const* temporaryString;
216217
};
217218
core::vector<char> m_stringPool;
219+
mutable const char* m_temporaryString;
218220
core::map<uint32_t,uint32_t,StringComparator> m_nameToAnimation;
219221

220222
SBufferBinding<BufferType> m_keyframeStorageBinding,m_timestampStorageBinding;

include/nbl/video/IGPUObjectFromAssetConverter.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1164,7 +1164,7 @@ auto IGPUObjectFromAssetConverter::create(const asset::ICPUAnimationLibrary** _b
11641164
size_t bufIter = 0ull;
11651165
for (ptrdiff_t i = 0u; i<assetCount; ++i)
11661166
{
1167-
const asset::ICPUAnimationLibrary* cpuanim = _begin[i];
1167+
const asset::IAnimationLibrary<asset::ICPUBuffer>* cpuanim = _begin[i];
11681168

11691169
asset::SBufferBinding<IGPUBuffer> keyframeBinding,timestampBinding;
11701170
{

include/splines.h

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,16 @@ namespace nbl
1717
namespace core
1818
{
1919

20-
20+
// TODO @Przemog
21+
// TODO: Rename to Follow Curve Animator
22+
// TODO: Refactor into an interpolator so we can use it for rotations too
23+
// TODO: Refactor the `BlockChange` stuff into an ext::baw::Animators
2124
class ISpline// : public AllocationOverrideDefault
2225
{
2326
public:
2427
virtual ~ISpline() {}
2528

26-
//
29+
// TODO: add pingpong option
2730
virtual bool isLooping() const {return isLoop;}
2831
virtual size_t getSegmentCount() const = 0;
2932
virtual float getSplineLength() const = 0;

source/Nabla/CSceneNodeAnimatorDelete.cpp

Lines changed: 0 additions & 48 deletions
This file was deleted.

source/Nabla/CSceneNodeAnimatorDelete.h

Lines changed: 0 additions & 47 deletions
This file was deleted.

0 commit comments

Comments
 (0)