/*
* Copyright (C) 2006-2010 - Frictional Games
*
* This file is part of Penumbra Overture.
*
* Penumbra Overture 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.
*
* Penumbra Overture 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 Penumbra Overture. If not, see .
*/
#ifndef GAME_SAVE_TYPES_H
#define GAME_SAVE_TYPES_H
#include "StdAfx.h"
using namespace hpl;
//------------------------------------------
class cEngineBody_SaveData : public iSerializable
{
kSerializableClassInit(cEngineBody_SaveData)
public:
void FromBody(iPhysicsBody *pBody);
void ToBody(iPhysicsBody *pBody);
float mfMass;
bool mbActive;
bool mbCollideCharacter;
cVector3f mvLinearVelocity;
cVector3f mvAngularVelocity;
cMatrixf m_mtxTransform;
};
//------------------------------------------
class cEngineJointController_SaveData : public iSerializable
{
kSerializableClassInit(cEngineJointController_SaveData)
public:
tString msName;
float mfDestValue;
bool mbActive;
};
//------------------------------------------
class cEngineJoint_SaveData : public iSerializable
{
kSerializableClassInit(cEngineJoint_SaveData)
public:
void FromJoint(iPhysicsJoint *apJoint);
void ToJoint(iPhysicsJoint *apJoint);
tString msName;
float mfMinLimit;
float mfMaxLimit;
tString msOnMinCallback;
tString msOnMaxCallback;
cContainerVec mvControllers;
};
//------------------------------------------
class cEnginePSEmitter_SaveData : public iSerializable
{
kSerializableClassInit(cEnginePSEmitter_SaveData)
public:
bool mbActive;
};
class cEnginePS_SaveData : public iSerializable
{
kSerializableClassInit(cEnginePS_SaveData)
public:
void FromPS(cParticleSystem3D *apPS);
void ToPS(cParticleSystem3D *apPS);
tString msName;
tString msType;
cVector3f mvSize;
cMatrixf m_mtxTransform;
cContainerVec mvEmitterActive;
};
//------------------------------------------
class cEngineBeam_SaveData : public iSerializable
{
kSerializableClassInit(cEngineBeam_SaveData)
public:
void FromBeam(cBeam *apBeam);
void ToBeam(cBeam *apBeam);
tString msName;
tString msFile;
cVector3f mvStartPos;
cVector3f mvEndPos;
};
//------------------------------------------
class cEngineSound_SaveData : public iSerializable
{
kSerializableClassInit(cEngineSound_SaveData)
public:
void FromSound(cSoundEntity* apSound);
void ToSound(cSoundEntity* apSound);
tString msName;
bool mbActive;
bool mbStopped;
};
//------------------------------------------
class cEngineLightAttachBB_SaveData : public iSerializable
{
kSerializableClassInit(cEngineLightAttachBB_SaveData)
public:
tString msName;
};
class cEngineLight_SaveData : public iSerializable
{
kSerializableClassInit(cEngineLight_SaveData)
public:
void FromLight(iLight3D *apLight);
void ToLight(iLight3D *apLight);
tString msName;
bool mbActive;
bool mbVisible;
cColor mDiffuseColor;
float mfFarAttenuation;
cContainerVec mvBillboards;
bool mbFlickering;
tString msFlickerOffSound;
tString msFlickerOnSound;
tString msFlickerOffPS;
tString msFlickerOnPS;
float mfFlickerOnMinLength;
float mfFlickerOffMinLength;
float mfFlickerOnMaxLength;
float mfFlickerOffMaxLength;
cColor mFlickerOffColor;
float mfFlickerOffRadius;
bool mbFlickerFade;
float mfFlickerOnFadeLength;
float mfFlickerOffFadeLength;
};
//------------------------------------------
#endif // GAME_SAVE_TYPES_H