This repository has been archived on 2025-03-20. You can view files and clone it, but cannot push or open issues or pull requests.
The-Powder-Toy/src/render/RenderModel.cpp
jacob1 95cc715d71 render preset buttons in render options interface, also shift + 1 life view shortcut
modify it if you don't like how it looks, but it turned out better than I expected
2012-09-26 16:46:03 +01:00

144 lines
2.6 KiB
C++

/*
* RenderModel.cpp
*
* Created on: Jan 23, 2012
* Author: Simon
*/
#include "RenderModel.h"
RenderModel::RenderModel():
renderer(NULL)
{
}
void RenderModel::AddObserver(RenderView * observer)
{
observers.push_back(observer);
observer->NotifyRendererChanged(this);
observer->NotifyRenderChanged(this);
observer->NotifyDisplayChanged(this);
observer->NotifyColourChanged(this);
}
void RenderModel::SetRenderMode(unsigned int renderMode)
{
if(renderer)
renderer->AddRenderMode(renderMode);
notifyRenderChanged();
}
void RenderModel::UnsetRenderMode(unsigned int renderMode)
{
if(renderer)
renderer->RemoveRenderMode(renderMode);
notifyRenderChanged();
}
unsigned int RenderModel::GetRenderMode()
{
if(renderer)
return renderer->render_mode;
else
return 0;
}
void RenderModel::SetDisplayMode(unsigned int displayMode)
{
if(renderer)
renderer->AddDisplayMode(displayMode);
notifyDisplayChanged();
}
void RenderModel::UnsetDisplayMode(unsigned int displayMode)
{
if(renderer)
renderer->RemoveDisplayMode(displayMode);
notifyDisplayChanged();
}
unsigned int RenderModel::GetDisplayMode()
{
if(renderer)
return renderer->display_mode;
else
return 0;
}
void RenderModel::SetColourMode(unsigned int colourMode)
{
if(renderer)
renderer->SetColourMode(colourMode);
notifyColourChanged();
}
unsigned int RenderModel::GetColourMode()
{
if(renderer)
return renderer->colour_mode;
else
return 0;
}
void RenderModel::LoadRenderPreset(int presetNum)
{
RenderPreset preset = renderer->renderModePresets[presetNum];
renderer->SetRenderMode(preset.RenderModes);
renderer->SetDisplayMode(preset.DisplayModes);
renderer->SetColourMode(preset.ColourMode);
notifyRenderChanged();
notifyDisplayChanged();
notifyColourChanged();
}
void RenderModel::SetRenderer(Renderer * ren)
{
renderer = ren;
notifyRendererChanged();
notifyRenderChanged();
notifyDisplayChanged();
notifyColourChanged();
}
Renderer * RenderModel::GetRenderer()
{
return renderer;
}
void RenderModel::notifyRendererChanged()
{
for(int i = 0; i < observers.size(); i++)
{
observers[i]->NotifyRendererChanged(this);
}
}
void RenderModel::notifyRenderChanged()
{
for(int i = 0; i < observers.size(); i++)
{
observers[i]->NotifyRenderChanged(this);
}
}
void RenderModel::notifyDisplayChanged()
{
for(int i = 0; i < observers.size(); i++)
{
observers[i]->NotifyDisplayChanged(this);
}
}
void RenderModel::notifyColourChanged()
{
for(int i = 0; i < observers.size(); i++)
{
observers[i]->NotifyColourChanged(this);
}
}
RenderModel::~RenderModel() {
// TODO Auto-generated destructor stub
}