*
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
#ifndef IOBJECT_H__
|
||||
#define IOBJECT_H__
|
||||
|
||||
#include "LString.h"
|
||||
#include "render/IMaterialProxy.h"
|
||||
#include "Globals.h"
|
||||
#include "math/LifeMath.h"
|
||||
#include "IGraphicsNode.h"
|
||||
#include "camera/Camera.h"
|
||||
|
||||
namespace LifeGraphics
|
||||
{
|
||||
struct PER_OBJECT_CONSTANTS
|
||||
{
|
||||
LifeMath::float4x4 mWorld;
|
||||
};
|
||||
|
||||
class Submesh
|
||||
{
|
||||
public:
|
||||
String name;
|
||||
int offset;
|
||||
int length;
|
||||
};
|
||||
class IObject : public IGraphicsNode
|
||||
{
|
||||
protected:
|
||||
IMaterialProxy** materials;
|
||||
Submesh* subsets;
|
||||
IConstantBuffer* perObjectCb;
|
||||
IConstantBuffer* materialCb;
|
||||
|
||||
public:
|
||||
IObject()
|
||||
{
|
||||
perObjectCb = CG::me()->GetRenderer()->CreateConstantBuffer(sizeof(PER_OBJECT_CONSTANTS));
|
||||
}
|
||||
virtual ~IObject(){}
|
||||
virtual void bind() = 0;
|
||||
virtual int getSumbeshCount() const = 0;
|
||||
virtual void setMaterial(IMaterial* mat, int submesh, bool genShaders) = 0;
|
||||
Submesh* getSubmesh(int id)
|
||||
{
|
||||
return subsets + id;
|
||||
}
|
||||
const IMaterialProxy* getMaterial(int submesh) const
|
||||
{
|
||||
return materials[submesh];
|
||||
}
|
||||
IMaterialProxy* getMaterial(int submesh)
|
||||
{
|
||||
return materials[submesh];
|
||||
}
|
||||
/*const IMaterial* getMaterial(String submesh) const
|
||||
{
|
||||
int count = getSumbeshCount();
|
||||
for(int i = 0; i < count; i++)
|
||||
{
|
||||
if(*getSubmeshName(i) == submesh)
|
||||
return materials + i;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
IMaterial* getMaterial(String submesh)
|
||||
{
|
||||
int count = getSumbeshCount();
|
||||
for(int i = 0; i < count; i++)
|
||||
{
|
||||
if(*getSubmeshName(i) == submesh)
|
||||
return materials + i;
|
||||
}
|
||||
return NULL;
|
||||
}*/
|
||||
|
||||
//virtual const String* getSubmeshName(int submesh) const = 0;
|
||||
//virtual const LifeMath::float3intersect(const LifeMath::float3& rayStart, const LifeMath::float3& rayDir) const = 0;
|
||||
//virtual const LifeMath::float3intersectSubmesh(const LifeMath::float3& rayStart, const LifeMath::float3& rayDir, int submesh) const = 0;
|
||||
//virtual const LifeMath::float3intersectSubmesh(const LifeMath::float3& rayStart, const LifeMath::float3& rayDir, const String& submesh) const = 0;
|
||||
virtual void selectLod(int lodNum) = 0;
|
||||
virtual void selectLod(const Camera* cam) = 0;
|
||||
virtual void render(int submesh) = 0;
|
||||
//virtual int getVertexCount(int submesh) = 0;
|
||||
//virtual int getFaceCount(int submesh) = 0;
|
||||
};
|
||||
}
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user