nenuzhno-engine_iter1/src/scene/Scene.cpp

68 lines
1.3 KiB
C++

#include <stdint.h>
#include "log.h"
#include "renderer/renderer.h"
#include "scene/Scene.h"
Scene::Scene():objects(),dynamicObjects(),skyBox(0),sunDirection(0){
}
void Scene::Update(float delta){
for(uint32_t i=0;i<dynamicObjects.size();i++){
dynamicObjects[i]->Update(delta);
}
}
void Scene::Draw(IRenderer *r){
for(uint32_t i=0;i<objects.size();i++){
objects[i]->Draw(r);
}
for(uint32_t i=0;i<dynamicObjects.size();i++){
dynamicObjects[i]->Draw(r);
}
}
void Scene::AddObject(SceneObject *obj){
if(obj->dynamic)
dynamicObjects.push_back(obj);
else
objects.push_back(obj);
}
void Scene::RemoveObject(SceneObject *obj){
for(std::vector<SceneObject*>::iterator it = dynamicObjects.begin();it!=dynamicObjects.end();it++){
if(*it==obj){
dynamicObjects.erase(it);
return;
}
}
Log("RemoveObject(%p) can't find\n",obj);
}
SceneObject *Scene::Find(const char *name){
for(std::vector<SceneObject*>::iterator it = dynamicObjects.begin();it!=dynamicObjects.end();it++){
if((*it)->name==name){
return *it;
}
}
Log("Find(%s) can't find\n",name);
return 0;
}
void Scene::AddLight(LightObject *l){
lights.push_back(l);
}
StaticModel::StaticModel():SceneObject(){
dynamic = false;
mdl = 0;
}
void StaticModel::Draw(IRenderer *r){
if(!mdl)
return;
r->DrawModel(mdl,modelMtx);
}