BlankMat 0.1.0
Free open-source 3D texture creation application
Loading...
Searching...
No Matches
IPrimitive< V, I > Class Template Reference
Inheritance diagram for IPrimitive< V, I >:
Collaboration diagram for IPrimitive< V, I >:

Public Member Functions

void Draw (Shader *shader, State *state, Material *defaultMat, const glm::mat4 &viewProj, bool drawMats=false) override
 
void DrawShadows (Shader *shader, State *state) override
 
const std::vector< V > & GetVertices () const
 
const std::vector< I > & GetIndices () const
 
 IPrimitive (const std::string &name, const std::string &scope, Material *material=nullptr, const float lineWidth=0.1f, const bool drawOver=false, const glm::vec3 &pos=glm::vec3(0.0f), const glm::vec3 &rot=glm::vec3(0.0f), const glm::vec3 &scale=glm::vec3(1.0f))
 
 IPrimitive (const std::string &name, const std::string &scope="", std::string material="", const float lineWidth=0.1f, const bool drawOver=false, const glm::vec3 &pos=glm::vec3(0.0f), const glm::vec3 &rot=glm::vec3(0.0f), const glm::vec3 &scale=glm::vec3(1.0f))
 
 ~IPrimitive ()
 
- Public Member Functions inherited from IEntity
virtual const glm::vec3 GetPos ()
 
virtual const glm::vec3 GetRot ()
 
virtual const glm::vec3 GetScale ()
 
virtual MaterialGetMaterial ()
 
const glm::vec3 GetUp ()
 
const glm::vec3 GetRight ()
 
const glm::vec3 GetFront ()
 
void Translate (const glm::vec3 &delta)
 
void Rotate (const glm::vec3 &delta)
 
void Scale (const glm::vec3 &delta)
 
const glm::vec3 GetWorldPos ()
 
virtual void SetPos (const glm::vec3 &pos)
 
virtual void SetRot (const glm::vec3 &rot)
 
virtual void SetScale (const glm::vec3 &scale)
 
void CalcBasis ()
 
void LoadMaterial (MaterialContainer *materials)
 
virtual void SetMaterial (Material *material)
 
bool IsEnabled ()
 
bool IsEnabledInHierarchy ()
 
void Enable (bool shouldEnable=true)
 
void EnableParent (bool shouldEnable)
 
bool ToggleEnabled ()
 
virtual void SetParentModelMatrix (const glm::mat4 &parentModelMatrix)
 
const glm::mat4 & GetModelMatrix ()
 
const glm::mat4 & GetParentModelMatrix ()
 
const glm::mat4 & GetSelfModelMatrix ()
 
const glm::mat3 & GetNormalModelMatrix ()
 
 IEntity (const std::string &name="", const std::string &scope="", Material *material=nullptr, bool drawOver=false, const glm::vec3 &pos=glm::vec3(0.0f), const glm::vec3 &rot=glm::vec3(0.0f), const glm::vec3 &scale=glm::vec3(1.0f))
 
 IEntity (const std::string &name, const std::string &scope, const std::string &material, bool drawOver=false, const glm::vec3 &pos=glm::vec3(0.0f), const glm::vec3 &rot=glm::vec3(0.0f), const glm::vec3 &scale=glm::vec3(1.0f))
 
virtual void Cleanup ()
 
- Public Member Functions inherited from ISelectable
virtual SelectableType GetSelectableType ()
 Returns the type of the selectable.
 
 ISelectable (SelectableType type=SelectableType::NONE)
 Sets the type of the selectable.
 
- Public Member Functions inherited from INameable
virtual void Rename (const std::string &newName, bool includeScope=true)
 Renames the object, setting the scope to be the scoped part of the name.
 
virtual void SetName (const std::string &name)
 Sets the name of the object. Note: Does not set the scope variable. If renaming based on raw input, use Rename() instead to set the scope.
 
virtual void SetScope (const std::string &scope)
 Sets the scope of the object.
 
std::string GetUnscopedName ()
 Returns the unscoped name of the object.
 
std::string GetScope ()
 Returns the scope of the object.
 
std::string GetScopedName ()
 Returns the scoped name of the object.
 
void InitName (const std::string &name, const std::string &scope="")
 Initializes the nameable object with the given name and scope.
 
 INameable ()
 Creates a default nameable object without name or scope.
 

Protected Member Functions

void GenBuffers () override
 
- Protected Member Functions inherited from IEntity
virtual void RecalcMatrices ()
 
virtual void UpdateEnabledStatus ()
 

Protected Attributes

float mLineWidth
 
bool mIsWireframe
 
unsigned int mIndexLen
 
std::vector< V > mVertices
 
std::vector< I > mIndices
 
- Protected Attributes inherited from IEntity
unsigned int mVAO = 0
 
unsigned int mVBO = 0
 
unsigned int mEBO = 0
 
bool mDrawOver = false
 
glm::vec3 mFront = glm::vec3(0.0f)
 
glm::vec3 mRight = glm::vec3(0.0f)
 
glm::vec3 mUp = glm::vec3(0.0f)
 
glm::vec3 mPos = glm::vec3(0.0f)
 
glm::vec3 mRot = glm::vec3(0.0f)
 
glm::vec3 mScale = glm::vec3(1.0f)
 
bool mIsEnabled = true
 
bool mIsEnabledSelf = true
 
bool mIsEnabledParent = true
 
MaterialmMaterial = nullptr
 
std::string mMaterialName = ""
 
bool mRecalcMatrices = true
 
glm::mat4 mParentModelMatrix = glm::mat4(1.0f)
 
glm::mat4 mSelfModelMatrix = glm::mat4(1.0f)
 
glm::mat4 mModelMatrix = glm::mat4(1.0f)
 
glm::mat3 mNormalModelMatrix = glm::mat3(1.0f)
 
- Protected Attributes inherited from ISelectable
SelectableType mSelectableType = SelectableType::NONE
 Type of the selectable.
 
- Protected Attributes inherited from INameable
std::string mName = ""
 Name of the object.
 
std::string mScope = ""
 Scope of the object.
 

Additional Inherited Members

- Static Public Member Functions inherited from IEntity
static const std::string GetNameNullSafe (IEntity *entity)
 

Constructor & Destructor Documentation

◆ IPrimitive() [1/2]

template<typename V , typename I >
IPrimitive< V, I >::IPrimitive ( const std::string &  name,
const std::string &  scope,
Material material = nullptr,
const float  lineWidth = 0.1f,
const bool  drawOver = false,
const glm::vec3 &  pos = glm::vec3(0.0f),
const glm::vec3 &  rot = glm::vec3(0.0f),
const glm::vec3 &  scale = glm::vec3(1.0f) 
)
inline

◆ IPrimitive() [2/2]

template<typename V , typename I >
IPrimitive< V, I >::IPrimitive ( const std::string &  name,
const std::string &  scope = "",
std::string  material = "",
const float  lineWidth = 0.1f,
const bool  drawOver = false,
const glm::vec3 &  pos = glm::vec3(0.0f),
const glm::vec3 &  rot = glm::vec3(0.0f),
const glm::vec3 &  scale = glm::vec3(1.0f) 
)
inline

◆ ~IPrimitive()

template<typename V , typename I >
IPrimitive< V, I >::~IPrimitive ( )
inline

Member Function Documentation

◆ Draw()

template<typename V , typename I >
void IPrimitive< V, I >::Draw ( Shader shader,
State state,
Material defaultMat,
const glm::mat4 &  viewProj,
bool  drawMats = false 
)
inlineoverridevirtual

Implements IEntity.

◆ DrawShadows()

template<typename V , typename I >
void IPrimitive< V, I >::DrawShadows ( Shader shader,
State state 
)
inlineoverridevirtual

Implements IEntity.

◆ GenBuffers()

template<typename V , typename I >
void IPrimitive< V, I >::GenBuffers ( )
inlineoverrideprotectedvirtual

Implements IEntity.

Reimplemented in Mesh.

◆ GetIndices()

template<typename V , typename I >
const std::vector< I > & IPrimitive< V, I >::GetIndices ( ) const
inline

◆ GetVertices()

template<typename V , typename I >
const std::vector< V > & IPrimitive< V, I >::GetVertices ( ) const
inline

Member Data Documentation

◆ mIndexLen

template<typename V , typename I >
unsigned int IPrimitive< V, I >::mIndexLen
protected

◆ mIndices

template<typename V , typename I >
std::vector<I> IPrimitive< V, I >::mIndices
protected

◆ mIsWireframe

template<typename V , typename I >
bool IPrimitive< V, I >::mIsWireframe
protected

◆ mLineWidth

template<typename V , typename I >
float IPrimitive< V, I >::mLineWidth
protected

◆ mVertices

template<typename V , typename I >
std::vector<V> IPrimitive< V, I >::mVertices
protected