#include "SceneEntity.h" #include "glInterface.h" #include "Geometry.h" #include "Material.h" #include "RenderState.h" namespace CHCDemoEngine { SceneEntity::SceneEntity(Geometry *geometry, Material *mat, Matrix4x4 *trafo): mGeometry(geometry), mMaterial(mat), mTransform(trafo), mRenderQueueBucket(NULL) { } SceneEntity::~SceneEntity() { } void SceneEntity::Render(RenderState *state) { if (mMaterial) mMaterial->Render(state); if (mTransform) { glPushMatrix(); glMultMatrixf((float *)mTransform->x); mGeometry->Render(state); glPopMatrix(); } else { mGeometry->Render(state); } } void SceneEntity::SetGeometry(Geometry *geom) { mGeometry = geom; } void SceneEntity::SetTransformation(Matrix4x4 *trafo) { mTransform = trafo; } void SceneEntity::SetMaterial(Material *mat) { mMaterial = mat; } void SceneEntity::SetLastRendered(int lastRendered) { mLastRendered = lastRendered; } int SceneEntity::GetLastRendered() const { return mLastRendered; } AxisAlignedBox3 SceneEntity::GetBoundingBox() const { AxisAlignedBox3 box = mGeometry->GetBoundingBox(); if (mTransform) Transform(box, *mTransform); return box; } }