// Created on: 2013-09-25 // Created by: Denis BOGOLEPOV // Copyright (c) 2013-2014 OPEN CASCADE SAS // // This file is part of Open CASCADE Technology software library. // // This library is free software; you can redistribute it and/or modify it under // the terms of the GNU Lesser General Public License version 2.1 as published // by the Free Software Foundation, with special exception defined in the file // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT // distribution for complete text of the license and disclaimer of any warranty. // // Alternatively, this file may be used under the terms of Open CASCADE // commercial license or contractual agreement. // ======================================================================= // function : As // purpose : Returns variable value casted to specified type // ======================================================================= template inline T& Graphic3d_ValueInterface::As() { Graphic3d_UniformValue* aPtr = dynamic_cast*> (this); return aPtr->Value; } // ======================================================================= // function : As // purpose : Returns variable value casted to specified type // ======================================================================= template inline const T& Graphic3d_ValueInterface::As() const { const Graphic3d_UniformValue* aPtr = dynamic_cast*> (this); return aPtr->Value; } // ======================================================================= // function : TypeID // purpose : Returns unique identifier of value type // ======================================================================= template inline Standard_Size Graphic3d_UniformValue::TypeID() const { return Graphic3d_UniformValueTypeID::ID; } // ======================================================================= // function : Create // purpose : Creates initialized shader variable // ======================================================================= template inline Graphic3d_ShaderVariable* Graphic3d_ShaderVariable::Create (const TCollection_AsciiString& theName, const T& theValue) { Graphic3d_ShaderVariable* theVariable = new Graphic3d_ShaderVariable (theName); theVariable->myValue = new Graphic3d_UniformValue (theValue); return theVariable; }