forked from aya/aya
Initial commit
This commit is contained in:
79
engine/network/src/MechanismItem.hpp
Normal file
79
engine/network/src/MechanismItem.hpp
Normal file
@@ -0,0 +1,79 @@
|
||||
#pragma once
|
||||
|
||||
#include "DataModel/PartInstance.hpp"
|
||||
|
||||
#include "Utility/PV.hpp"
|
||||
|
||||
#include "Memory.hpp"
|
||||
|
||||
#include "Debug.hpp"
|
||||
|
||||
#include "Array.hpp"
|
||||
#include "CompactCFrame.hpp"
|
||||
#include "RakNet/RakNetTime.hpp"
|
||||
|
||||
namespace Aya
|
||||
{
|
||||
|
||||
class Primitive;
|
||||
|
||||
class AssemblyItem : public boost::noncopyable
|
||||
{
|
||||
public:
|
||||
shared_ptr<PartInstance> rootPart;
|
||||
Aya::PV pv;
|
||||
G3D::Array<CompactCFrame> motorAngles;
|
||||
|
||||
void reset()
|
||||
{
|
||||
rootPart.reset();
|
||||
motorAngles.fastClear();
|
||||
}
|
||||
|
||||
AssemblyItem()
|
||||
{
|
||||
reset();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
class MechanismItem : boost::noncopyable
|
||||
{
|
||||
private:
|
||||
// TODO: Replace with intrusive list of AssemblyItem
|
||||
G3D::Array<AssemblyItem*> buffer;
|
||||
|
||||
int currentElements;
|
||||
|
||||
public:
|
||||
RakNet::Time networkTime;
|
||||
unsigned char networkHumanoidState;
|
||||
bool hasVelocity;
|
||||
|
||||
void reset(int numElements = 0);
|
||||
|
||||
MechanismItem()
|
||||
{
|
||||
reset();
|
||||
}
|
||||
|
||||
~MechanismItem();
|
||||
|
||||
AssemblyItem& appendAssembly();
|
||||
|
||||
int numAssemblies() const
|
||||
{
|
||||
return currentElements;
|
||||
}
|
||||
|
||||
AssemblyItem& getAssemblyItem(int i) const
|
||||
{
|
||||
AYAASSERT(i < currentElements);
|
||||
return *buffer[i];
|
||||
}
|
||||
|
||||
static bool consistent(const MechanismItem* before, const MechanismItem* after);
|
||||
|
||||
static void lerp(const MechanismItem* before, const MechanismItem* after, MechanismItem* out, float lerpAlpha);
|
||||
};
|
||||
} // namespace Aya
|
||||
Reference in New Issue
Block a user