/*==LICENSE==* CyanWorlds.com Engine - MMOG client, server and tools Copyright (C) 2011 Cyan Worlds, 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 . You can contact Cyan Worlds, Inc. by email legal@cyan.com or by snail mail at: Cyan Worlds, Inc. 14617 N Newport Hwy Mead, WA 99021 *==LICENSE==*/ #ifndef plFixedWaterState7_inc #define plFixedWaterState7_inc #include "hsGeometry3.h" #include "hsColorRGBA.h" #include "pnTimer/plTimedValue.h" class hsStream; class plFixedWaterState7 { public: class WaveState { public: plTimedSimple fMaxLength; plTimedSimple fMinLength; plTimedSimple fAmpOverLen; plTimedSimple fChop; plTimedSimple fAngleDev; void Set(const WaveState& w, hsScalar secs); void Read(hsStream* s); void Write(hsStream* s) const; }; // Main body of water state // Geometric waves WaveState fGeoState; // Texture waves WaveState fTexState; plTimedSimple fRippleScale; // Geometric and Texture share wind direction plTimedCompound fWindDir; // Level of noise added during summation of texture waves enum { kNoise = 0, kSpecStart = 1, kSpecEnd = 2 }; plTimedCompound fSpecVec; // (Noise, SpecStart, SpecEnd); // Depth parameters. Affect how the depth of // the water vertex is interpreted into water // surface properties. plTimedSimple fWaterHeight; plTimedCompound fWaterOffset; plTimedCompound fMaxAtten; plTimedCompound fMinAtten; plTimedCompound fDepthFalloff; // Shore parameters // Appearance plTimedSimple fWispiness; plTimedCompound fShoreTint; // Next two only used in generation of bubble layer plTimedCompound fMaxColor; plTimedCompound fMinColor; plTimedSimple fEdgeOpac; plTimedSimple fEdgeRadius; // Simulation plTimedSimple fPeriod; plTimedSimple fFingerLength; // The rest aren't really part of the state, that is they are normally controlled // by something exterior to the state. They are included here to allow a convenient // override during development. // Water appearance. plTimedCompound fWaterTint; plTimedCompound fSpecularTint; plTimedCompound fEnvCenter; plTimedSimple fEnvRefresh; plTimedSimple fEnvRadius; void Set(const plFixedWaterState7& s, hsScalar secs); void Read(hsStream* s); void Write(hsStream* s) const; }; #endif // plFixedWaterState7_inc