# Visualization Library

A lightweight C++ OpenGL middleware for 2D/3D graphics

[Home] [Tutorials] [All Classes] [Grouped Classes]

- Main Page
- Related Pages
- Namespaces
- Classes
- Files

- File List
- File Members

# D:/VL/BuildSystem/VL_DISTRO/Visualization_Library_SDK/src/vlGraphics/MorphingCallback.hpp

Go to the documentation of this file.

    00001 /**************************************************************************************/
    00002 /*                                                                                    */
    00003 /*  Visualization Library                                                             */
    00004 /*  http://www.visualizationlibrary.org                                               */
    00005 /*                                                                                    */
    00006 /*  Copyright (c) 2005-2010, Michele Bosi                                             */
    00007 /*  All rights reserved.                                                              */
    00008 /*                                                                                    */
    00009 /*  Redistribution and use in source and binary forms, with or without modification,  */
    00010 /*  are permitted provided that the following conditions are met:                     */
    00011 /*                                                                                    */
    00012 /*  - Redistributions of source code must retain the above copyright notice, this     */
    00013 /*  list of conditions and the following disclaimer.                                  */
    00014 /*                                                                                    */
    00015 /*  - Redistributions in binary form must reproduce the above copyright notice, this  */
    00016 /*  list of conditions and the following disclaimer in the documentation and/or       */
    00017 /*  other materials provided with the distribution.                                   */
    00018 /*                                                                                    */
    00019 /*  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND   */
    00020 /*  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED     */
    00021 /*  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE            */
    00022 /*  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR  */
    00023 /*  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES    */
    00024 /*  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;      */
    00025 /*  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON    */
    00026 /*  ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT           */
    00027 /*  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS     */
    00028 /*  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.                      */
    00029 /*                                                                                    */
    00030 /**************************************************************************************/
    00031
    00032 #ifndef MorphingCallback_INCLUDE_ONCE
    00033 #define MorphingCallback_INCLUDE_ONCE
    00034
    00035 #include <vlGraphics/Actor.hpp>
    00036 #include <vlGraphics/Geometry.hpp>
    00037
    00038 namespace vl
    00039 {
    00040   class ResourceDatabase;
    00041
    00044   class VLGRAPHICS_EXPORT MorphingCallback: public ActorEventCallback
    00045   {
    00046     VL_INSTRUMENT_CLASS(vl::MorphingCallback, ActorEventCallback)
    00047
    00048   public:
    00049     MorphingCallback();
    00050
    00051     ~MorphingCallback();
    00052
    00053     virtual void onActorRenderStarted(Actor* actor, real frame_clock, const Camera* cam, Renderable* renderable, const Shader*, int pass);
    00054
    00055     virtual void onActorDelete(Actor*) {}
    00056
    00057     void bindActor(Actor* actor);
    00058
    00069     void init(ResourceDatabase* res_db);
    00070
    00071     void blendFrames(int a, int b, float t);
    00072
    00073     void setAnimation(int start, int end, float period);
    00074
    00075     void startAnimation(real time = -1);
    00076
    00077     void stopAnimation();
    00078
    00079     void initFrom(MorphingCallback* morph_cb);
    00080
    00081     void resetGLSLBindings();
    00082
    00083     bool glslVertexBlendEnabled() const { return mGLSLVertexBlendEnabled; }
    00084     void setGLSLVertexBlendEnabled(bool enable) { mGLSLVertexBlendEnabled = enable; }
    00085
    00086     Geometry* geometry() { return mGeometry.get(); }
    00087     const Geometry* geometry() const { return mGeometry.get(); }
    00088
    00089     bool animationStarted() const { return mAnimationStarted; }
    00090
    00091   protected:
    00092     ref<Geometry> mGeometry;
    00093     ref<ArrayFloat3> mVertices;
    00094     ref<ArrayFloat3> mNormals;
    00095     std::vector< ref<ArrayFloat3> > mVertexFrames;
    00096     std::vector< ref<ArrayFloat3> > mNormalFrames;
    00097
    00098     real mLastUpdate;
    00099     real mElapsedTime;
    00100     real mAnimationStartTime;
    00101     int mAnimationStart;
    00102     int mAnimationEnd;
    00103     float mAnimationPeriod;
    00104     bool mAnimationStarted;
    00105     int mFrame1;
    00106     int mFrame2;
    00107
    00108     bool mGLSLVertexBlendEnabled;
    00109     int mVertex2_Binding;
    00110     int mNormal2_Binding;
    00111     int mAnim_t_Binding;
    00112     float mAnim_t;
    00113   };
    00114   //-----------------------------------------------------------------------------
    00115 }
    00116
    00117 #endif

Visualization Library v2011.09.1162 Reference Documentation
Copyright 2005-2011 Michele Bosi. All rights reserved.
Updated on Thu Jan 26 2012 00:43:39.
Permission is granted to use this page to write and publish articles regarding Visualization Library.