Alphabetical Class Index  Class Hierarchy   File Members   Compound Members   File List  

InheritanceManager.h
00001 #pragma once
00002 
00003 #include <slapi/model/texture_writer.h>
00004 #include <slapi/model/component_instance.h>
00005 #include <slapi/model/group.h>
00006 #include <slapi/model/image.h>
00007 #include <slapi/model/face.h>
00008 #include <slapi/model/edge.h>
00009 #include <slapi/model/layer.h>
00010 #include <slapi/model/material.h>
00011 
00012 #include <vector>
00013 
00014 class SKPTransform
00015 {
00016 public:
00017 
00018     SKPTransform();
00019     SKPTransform(double m[16]);
00020     ~SKPTransform();
00021 
00022     void            SetMatrix(double m[16]);
00023     void            SetToIdenity();
00024 
00025     SUPoint3D       operator* (const SUPoint3D& pt) const;
00026     SUVector3D      operator* (const SUVector3D& vec) const;
00027     SKPTransform    operator* (const SKPTransform& t) const;
00028 
00029 protected:
00030 
00031     double m_t[16];
00032 
00033 };
00034 
00035 class InheritanceManager
00036 {
00037 public:
00038     InheritanceManager();
00039     virtual ~InheritanceManager();
00040 
00041     void            SetTextureWriter(SUTextureWriterRef textureWriter);
00042     void            SetMaterialsByLayer(bool materialsByLayer) { m_materialsByLayer = materialsByLayer; }
00043 
00044     void            PushElement(SUComponentInstanceRef pElement);
00045     void            PushElement(SUGroupRef pElement);
00046     void            PushElement(SUImageRef pElement);
00047     void            PushElement(SUFaceRef pElement);
00048     void            PushElement(SUEdgeRef pElement);
00049     void            PopElement();
00050 
00051     SULayerRef      GetCurrentLayer();
00052     SKPTransform    GetCurrentTransform();
00053     SUMaterialRef   GetCurrentFrontMaterial();
00054     SUMaterialRef   GetCurrentBackMaterial();
00055     int32_t         GetCurrentTextureHandle();
00056 
00057 protected:
00058     void            PushTransform(SKPTransform t);
00059     void            PushTextureHandle(int32_t textureHandle);
00060 
00061     bool                        m_materialsByLayer;
00062     std::vector<SKPTransform>   m_transforms;
00063     std::vector<SULayerRef>     m_layers;
00064     std::vector<SUMaterialRef>  m_frontMaterials;
00065     std::vector<SUMaterialRef>  m_backMaterials;
00066     std::vector<int32_t>        m_textureHandles;
00067     SUTextureWriterRef          m_textureWriter;
00068 };