| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- /*
- * PolyScene.cpp
- * Poly
- *
- * Created by Ivan Safrin on 3/18/08.
- * Copyright 2008 __MyCompanyName__. All rights reserved.
- *
- */
- #include "PolyScene.h"
- using namespace Polycode;
- Scene::Scene() : EventDispatcher() {
- defaultCamera = new Camera(this);
- CoreServices::getInstance()->getSceneManager()->addScene(this);
- fogEnabled = false;
- lightingEnabled = false;
- enabled = true;
- isSceneVirtual = false;
- }
- void Scene::setVirtual(bool val) {
- isSceneVirtual = val;
- }
- bool Scene::isVirtual() {
- return isSceneVirtual;
- }
- void Scene::setEnabled(bool enabled) {
- this->enabled = enabled;
- }
- bool Scene::isEnabled() {
- return enabled;
- }
- void Scene::Update() {
- }
- Scene::~Scene() {
- Logger::log("Cleaning scene...\n");
- for(int i=0; i < entities.size(); i++) {
- // delete entities[i];
- }
- entities.clear();
- CoreServices::getInstance()->getSceneManager()->removeScene(this);
- // delete defaultCamera;
- }
- void Scene::enableLighting(bool enable) {
- lightingEnabled = enable;
- CoreServices::getInstance()->getRenderer()->enableLighting(enable);
- }
- void Scene::enableFog(bool enable) {
- fogEnabled = enable;
- if(enable)
- CoreServices::getInstance()->getRenderer()->setFogProperties(fogMode, fogColor, fogDensity, fogStartDepth, fogEndDepth);
- CoreServices::getInstance()->getRenderer()->enableFog(enable);
-
- }
- void Scene::setFogProperties(int fogMode, Color color, Number density, Number startDepth, Number endDepth) {
- this->fogMode = fogMode;
- fogColor = color;
- fogDensity = density;
- fogStartDepth = startDepth;
- fogEndDepth = endDepth;
- if(fogEnabled)
- CoreServices::getInstance()->getRenderer()->setFogProperties(fogMode, fogColor, fogDensity, fogStartDepth, fogEndDepth);
-
- }
- SceneEntity *Scene::getEntityAtCursor(Number x, Number y) {
- for(int i =0; i< entities.size(); i++) {
- if(entities[i]->testMouseCollision(x,y)) {
- return entities[i];
- }
- }
- return NULL;
- }
- void Scene::addEntity(SceneEntity *entity) {
- entity->setRenderer(CoreServices::getInstance()->getRenderer());
- entities.push_back(entity);
- }
- void Scene::removeEntity(SceneEntity *entity) {
- for(int i=0; i < entities.size(); i++) {
- if(entities[i] == entity) {
- entities.erase(entities.begin()+i);
- return;
- }
- }
- }
- Camera *Scene::getDefaultCamera() {
- return defaultCamera;
- }
|