| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 | //-----------------------------------------------------------------------------// Copyright (c) 2012 GarageGames, LLC//// Permission is hereby granted, free of charge, to any person obtaining a copy// of this software and associated documentation files (the "Software"), to// deal in the Software without restriction, including without limitation the// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or// sell copies of the Software, and to permit persons to whom the Software is// furnished to do so, subject to the following conditions://// The above copyright notice and this permission notice shall be included in// all copies or substantial portions of the Software.//// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS// IN THE SOFTWARE.//-----------------------------------------------------------------------------#include "renderInstance/renderPassStateToken.h"#include "console/consoleTypes.h"#include "console/engineAPI.h"IMPLEMENT_CONOBJECT(RenderPassStateToken);ConsoleDocClass( RenderPassStateToken,   "@brief Abstract base class for RenderFormatToken, used to manipulate what goes on in the render manager\n\n"   "You cannot actually instantiate RenderPassToken, only its child: RenderFormatToken. "   "RenderFormatToken is an implementation which changes the format of the "   "back buffer and/or the depth buffer.\n\n"      "The RenderPassStateBin manager changes the rendering state associated with "   "a token it is declared with. In stock Torque 3D, a single example exists in the "   "way of AL_FormatToken (found in renderManager." TORQUE_SCRIPT_EXTENSION "). In that script file, all the "   "render managers are intialized, and a single RenderFormatToken is used. This "   "implementation basically exists to ensure Advanced Lighting works with MSAA.\n\n"   "@see RenderFormatToken\n"   "@see RenderPassStateBin\n"   "@see game/core/scripts/client/renderManager." TORQUE_SCRIPT_EXTENSION "\n"   "@ingroup RenderBin\n");void RenderPassStateToken::process(SceneRenderState *state, RenderPassStateBin *callingBin){   TORQUE_UNUSED(state);   TORQUE_UNUSED(callingBin);   AssertWarn(false, "RenderPassStateToken is an abstract class, you must re-implement process()");}void RenderPassStateToken::reset(){   AssertWarn(false, "RenderPassStateToken is an abstract class, you must re-implement reset()");}void RenderPassStateToken::enable( bool enabled /*= true*/ ){   TORQUE_UNUSED(enabled);   AssertWarn(false, "RenderPassStateToken is an abstract class, you must re-implement enable()");}bool RenderPassStateToken::isEnabled() const{   AssertWarn(false, "RenderPassStateToken is an abstract class, you must re-implement isEnabled()");   return false;}static bool _set_enable( void *object, const char *index, const char *data ){   reinterpret_cast<RenderPassStateToken *>(object)->enable(dAtob(data));   return false;}static const char *_get_enable(void* obj, const char* data){   TORQUE_UNUSED(data);   return reinterpret_cast<RenderPassStateToken *>(obj)->isEnabled() ? "true" : "false";}void RenderPassStateToken::initPersistFields(){   docsURL;   addProtectedField("enabled", TypeBool, 0, &_set_enable, &_get_enable, "Enables or disables this token.");   Parent::initPersistFields();}//------------------------------------------------------------------------------//------------------------------------------------------------------------------IMPLEMENT_CONOBJECT(RenderPassStateBin);ConsoleDocClass( RenderPassStateBin,   "@brief A non-rendering render bin used to enable/disable a RenderPassStateToken.\n\n"   "This is a utility RenderBinManager which does not render any render instances.  Its only "   "used to define a point in the render bin order at which a RenderPassStateToken is triggered.\n\n"      "@see RenderPassStateToken\n"   "@ingroup RenderBin\n");RenderPassStateBin::RenderPassStateBin()    : Parent(){}RenderPassStateBin::~RenderPassStateBin(){}void RenderPassStateBin::render(SceneRenderState *state){   if(mStateToken.isValid())      mStateToken->process(state, this);}void RenderPassStateBin::clear(){   if(mStateToken.isValid())      mStateToken->reset();}void RenderPassStateBin::sort(){}void RenderPassStateBin::initPersistFields(){   docsURL;   addProtectedField( "stateToken", TYPEID< RenderPassStateToken >(), Offset( mStateToken, RenderPassStateBin ),      _setStateToken, _getStateToken, "");      Parent::initPersistFields();}//------------------------------------------------------------------------------DefineEngineMethod(RenderPassStateToken, enable, void, (),,   "@brief Enables the token." ){   object->enable(true);}DefineEngineMethod(RenderPassStateToken, disable, void, (),,   "@brief Disables the token."){   object->enable(false);}DefineEngineMethod(RenderPassStateToken, toggle, void, (),,   "@brief Toggles the token from enabled to disabled or vice versa." ){   object->enable(!object->isEnabled());}
 |