This repository has been archived on 2025-02-27. You can view files and clone it, but cannot push or open issues or pull requests.
CnC_Renegade/Code/ww3d2/layer.cpp

289 lines
16 KiB
C++

/*
** Command & Conquer Renegade(tm)
** Copyright 2025 Electronic Arts Inc.
**
** This program is free software: you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation, either version 3 of the License, or
** (at your option) any later version.
**
** This program is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU General Public License for more details.
**
** You should have received a copy of the GNU General Public License
** along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/***********************************************************************************************
*** C O N F I D E N T I A L --- W E S T W O O D S T U D I O S ***
***********************************************************************************************
* *
* Project Name : WW3D *
* *
* $Archive:: /VSS_Sync/ww3d2/layer.cpp $*
* *
* $Author:: Vss_sync $*
* *
* $Modtime:: 8/29/01 7:29p $*
* *
* $Revision:: 3 $*
* *
*---------------------------------------------------------------------------------------------*
* Functions: *
* LayerClass::LayerClass -- constructor *
* LayerClass::~LayerClass -- destructor *
* LayerClass::Set_Scene -- Set the scene used by this layer *
* LayerClass::Get_Scene -- get the scene being rendered by this layer *
* LayerClass::Peek_Scene -- get the scene being rendered by this layer w/o a ref *
* LayerClass::Set_Camera -- Set the camera being used by this layer *
* LayerClass::Get_Camera -- get the camera being used by this layer *
* LayerClass::LayerClass -- default constructor *
* LC::Peek_Camera -- Get copy of camera. *
* LC::Set -- Kinda like an assignment operator. *
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
#include "layer.h"
#include "scene.h"
#include "camera.h"
/***********************************************************************************************
* LayerClass::LayerClass -- default constructor *
* *
* INPUT: *
* *
* OUTPUT: *
* *
* WARNINGS: *
* *
* HISTORY: *
* 3/27/98 GTH : Created. *
*=============================================================================================*/
LayerClass::LayerClass(void) :
Scene(NULL),
Camera(NULL),
Clear(false),
ClearZ(true),
ClearColor(0,0,0)
{
}
LayerClass::LayerClass(const LayerClass &src) :
Scene(src.Get_Scene()),
Camera(src.Get_Camera()),
Clear(src.Clear),
ClearZ(src.ClearZ),
ClearColor(src.ClearColor)
{
}
/***********************************************************************************************
* LayerClass::LayerClass -- constructor *
* *
* simply constructs a layer class, initialized with the desired settings *
* *
* *
* INPUT: *
* *
* OUTPUT: *
* *
* WARNINGS: *
* *
* HISTORY: *
* 3/27/98 GTH : Created. *
*=============================================================================================*/
LayerClass::LayerClass
(
SceneClass * scene,
CameraClass * cam,
bool clear,
bool clearz,
const Vector3 & color
)
{
if (scene) scene->Add_Ref();
Scene = scene;
if (cam) cam->Add_Ref();
Camera = cam;
Clear = clear;
ClearZ = clearz;
ClearColor = color;
}
/***********************************************************************************************
* LayerClass::~LayerClass -- destructor *
* *
* INPUT: *
* *
* OUTPUT: *
* *
* WARNINGS: *
* *
* HISTORY: *
* 3/27/98 GTH : Created. *
*=============================================================================================*/
LayerClass::~LayerClass(void)
{
if (Scene) {
Scene->Release_Ref();
Scene=0;
}
if (Camera) {
Camera->Release_Ref();
Camera=0;
}
}
/***********************************************************************************************
* LayerClass::Set_Scene -- Set the scene used by this layer *
* *
* INPUT: *
* *
* OUTPUT: *
* *
* WARNINGS: *
* *
* HISTORY: *
* 3/27/98 GTH : Created. *
*=============================================================================================*/
void LayerClass::Set_Scene(SceneClass * scene)
{
if (Scene) {
Scene->Release_Ref();
}
Scene = scene;
if (Scene) {
Scene->Add_Ref();
}
}
/***********************************************************************************************
* LayerClass::Get_Scene -- get the scene being rendered by this layer *
* *
* INPUT: *
* *
* OUTPUT: *
* *
* WARNINGS: *
* *
* HISTORY: *
* 3/27/98 GTH : Created. *
*=============================================================================================*/
SceneClass * LayerClass::Get_Scene(void) const
{
if (Scene) {
Scene->Add_Ref();
}
return Scene;
}
/***********************************************************************************************
* LayerClass::Peek_Scene -- get the scene being rendered by this layer *
* *
* INPUT: *
* *
* OUTPUT: *
* *
* WARNINGS: *
* *
* HISTORY: *
* 3/8/99 NH : Created. *
*=============================================================================================*/
SceneClass * LayerClass::Peek_Scene(void) const
{
return Scene;
}
/***********************************************************************************************
* LayerClass::Set_Camera -- Set the camera being used by this layer *
* *
* INPUT: *
* *
* OUTPUT: *
* *
* WARNINGS: *
* *
* HISTORY: *
* 3/27/98 GTH : Created. *
*=============================================================================================*/
void LayerClass::Set_Camera(CameraClass * cam)
{
if (Camera) {
Camera->Release_Ref();
}
Camera = cam;
if (Camera) {
Camera->Add_Ref();
}
}
/***********************************************************************************************
* LayerClass::Get_Camera -- get the camera being used by this layer *
* *
* INPUT: *
* *
* OUTPUT: *
* *
* WARNINGS: *
* *
* HISTORY: *
* 3/27/98 GTH : Created. *
*=============================================================================================*/
CameraClass * LayerClass::Get_Camera(void) const
{
if (Camera) {
Camera->Add_Ref();
}
return Camera;
}
/***********************************************************************************************
* LC::Peek_Camera -- Get copy of camera. *
* *
* INPUT: *
* *
* OUTPUT: *
* *
* WARNINGS: *
* *
* HISTORY: *
* 08/14/2001 SKB : Created. *
*=============================================================================================*/
CameraClass * LayerClass::Peek_Camera(void) const
{
return Camera;
}
/***********************************************************************************************
* LC::Set -- Kinda like an assignment operator. *
* *
* INPUT: *
* *
* OUTPUT: *
* *
* WARNINGS: *
* *
* HISTORY: *
* 08/14/2001 SKB : Created. *
*=============================================================================================*/
void LayerClass::Set(const LayerClass & layer)
{
Set_Camera(layer.Peek_Camera());
Set_Scene(layer.Peek_Scene());
Clear = layer.Clear;
ClearZ = layer.ClearZ;
ClearColor = layer.ClearColor;
}