Updated some docs, prepping for font.
This commit is contained in:
		@@ -11,4 +11,5 @@ target_sources(${DAWN_TARGET_NAME}
 | 
				
			|||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Subdirs
 | 
					# Subdirs
 | 
				
			||||||
 | 
					add_subdirectory(font)
 | 
				
			||||||
add_subdirectory(mesh)
 | 
					add_subdirectory(mesh)
 | 
				
			||||||
@@ -39,31 +39,105 @@ namespace Dawn {
 | 
				
			|||||||
    public:
 | 
					    public:
 | 
				
			||||||
      SceneItem &item;
 | 
					      SceneItem &item;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      /**
 | 
				
			||||||
 | 
					       * Constructs a new transform instance. Currently I have bound transforms
 | 
				
			||||||
 | 
					       * to their parent SceneItem, but in future I may allow them to become
 | 
				
			||||||
 | 
					       * disconnected from each other, for example I really could use a special
 | 
				
			||||||
 | 
					       * transform designed purely for UI elements, since they don't act like
 | 
				
			||||||
 | 
					       * normal scene items, but for now Transforms and SceneItems are 1:1
 | 
				
			||||||
 | 
					       * 
 | 
				
			||||||
 | 
					       * @param item Item that this transform belongs to.
 | 
				
			||||||
 | 
					       */
 | 
				
			||||||
      Transform(SceneItem &item);
 | 
					      Transform(SceneItem &item);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      /**
 | 
				
			||||||
 | 
					       * Orients this transform to look at a given point in world space.
 | 
				
			||||||
 | 
					       * 
 | 
				
			||||||
 | 
					       * @param position Position of the origin of this transform.
 | 
				
			||||||
 | 
					       * @param look Position in world space this transform looks at.
 | 
				
			||||||
 | 
					       */
 | 
				
			||||||
      void lookAt(glm::vec3 position, glm::vec3 look);
 | 
					      void lookAt(glm::vec3 position, glm::vec3 look);
 | 
				
			||||||
      void lookAt(glm::vec3 position, glm::vec3 look, glm::vec3 up);
 | 
					      void lookAt(glm::vec3 position, glm::vec3 look, glm::vec3 up);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      /**
 | 
				
			||||||
 | 
					       * Returns the local position (position relative to "my parent").
 | 
				
			||||||
 | 
					       * @return The 3D local position in parent-relative space.
 | 
				
			||||||
 | 
					       */
 | 
				
			||||||
      glm::vec3 getLocalPosition();
 | 
					      glm::vec3 getLocalPosition();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      /**
 | 
				
			||||||
 | 
					       * Update / Set the local position of this transform relative to my parent
 | 
				
			||||||
 | 
					       * @param position Position to set for the local transform.
 | 
				
			||||||
 | 
					       */
 | 
				
			||||||
      void setLocalPosition(glm::vec3 position);
 | 
					      void setLocalPosition(glm::vec3 position);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      /**
 | 
				
			||||||
 | 
					       * Retusn the scale of this item, relative to my parent.
 | 
				
			||||||
 | 
					       * @return 3D Scale vector of this item in parent-relative space.
 | 
				
			||||||
 | 
					       */
 | 
				
			||||||
      glm::vec3 getLocalScale();
 | 
					      glm::vec3 getLocalScale();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      /**
 | 
				
			||||||
 | 
					       * Set the local scale of this item.
 | 
				
			||||||
 | 
					       * @param scale Scale of this item, relative to its parent.
 | 
				
			||||||
 | 
					       */
 | 
				
			||||||
      void setLocalScale(glm::vec3 scale);
 | 
					      void setLocalScale(glm::vec3 scale);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      /**
 | 
				
			||||||
 | 
					       * Returns the local rotation for this transform.
 | 
				
			||||||
 | 
					       * @return The local rotation (parent-relative).
 | 
				
			||||||
 | 
					       */
 | 
				
			||||||
      glm::quat getLocalRotation();
 | 
					      glm::quat getLocalRotation();
 | 
				
			||||||
 | 
					      
 | 
				
			||||||
 | 
					      /**
 | 
				
			||||||
 | 
					       * Set the local (parent-relative) rotation for this transform.
 | 
				
			||||||
 | 
					       * @param rotation Rotation in parent relative space.
 | 
				
			||||||
 | 
					       */
 | 
				
			||||||
      void setLocalRotation(glm::quat rotation);
 | 
					      void setLocalRotation(glm::quat rotation);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      /**
 | 
				
			||||||
 | 
					       * Returns the transform matrix for this transform, in parent-relative 
 | 
				
			||||||
 | 
					       * space.
 | 
				
			||||||
 | 
					       * @return The transform origin in parent-relative space.
 | 
				
			||||||
 | 
					       */
 | 
				
			||||||
      glm::mat4 getLocalTransform();
 | 
					      glm::mat4 getLocalTransform();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      /**
 | 
				
			||||||
 | 
					       * Sets the local transform matrix for this transform.
 | 
				
			||||||
 | 
					       * @param transform Local (parent-relative) transform to set.
 | 
				
			||||||
 | 
					       */
 | 
				
			||||||
      void setLocalTransform(glm::mat4 transform);
 | 
					      void setLocalTransform(glm::mat4 transform);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      /**
 | 
				
			||||||
 | 
					       * Returns the transformation matrix for this transform, in world-space.
 | 
				
			||||||
 | 
					       * @return The transform origin in world-space.
 | 
				
			||||||
 | 
					       */
 | 
				
			||||||
      glm::mat4 getWorldTransform();
 | 
					      glm::mat4 getWorldTransform();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      /**
 | 
				
			||||||
 | 
					       * Updates the transform's world-space.
 | 
				
			||||||
 | 
					       * @param transform Sets the transform position in world-space.
 | 
				
			||||||
 | 
					       */
 | 
				
			||||||
      void setWorldTransform(glm::mat4 transform);
 | 
					      void setWorldTransform(glm::mat4 transform);
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
 | 
					      /**
 | 
				
			||||||
 | 
					       * Updates the transform that this transform is a child of. Will also
 | 
				
			||||||
 | 
					       * handle disconnecting any existing parent.
 | 
				
			||||||
 | 
					       * 
 | 
				
			||||||
 | 
					       * @param p Parent that this transform is now a child of.
 | 
				
			||||||
 | 
					       */
 | 
				
			||||||
      void setParent(Transform *p);
 | 
					      void setParent(Transform *p);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      /**
 | 
				
			||||||
 | 
					       * Returns the parent transform of this transform, or nullptr if there is
 | 
				
			||||||
 | 
					       * no parent for this transform.
 | 
				
			||||||
 | 
					       * @return Pointer to the parent transform, or nullptr.
 | 
				
			||||||
 | 
					       */
 | 
				
			||||||
      Transform * getParent();
 | 
					      Transform * getParent();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      /**
 | 
				
			||||||
 | 
					       * Dispose and clenaup this transform, also removes self from parent.
 | 
				
			||||||
 | 
					       */
 | 
				
			||||||
      ~Transform();
 | 
					      ~Transform();
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
} 
 | 
					} 
 | 
				
			||||||
							
								
								
									
										10
									
								
								src/dawn/display/font/CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								src/dawn/display/font/CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,10 @@
 | 
				
			|||||||
 | 
					# Copyright (c) 2022 Dominic Masters
 | 
				
			||||||
 | 
					# 
 | 
				
			||||||
 | 
					# This software is released under the MIT License.
 | 
				
			||||||
 | 
					# https://opensource.org/licenses/MIT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Sources
 | 
				
			||||||
 | 
					target_sources(${DAWN_TARGET_NAME}
 | 
				
			||||||
 | 
					  PRIVATE
 | 
				
			||||||
 | 
					    Font.cpp
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
							
								
								
									
										8
									
								
								src/dawn/display/font/Font.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								src/dawn/display/font/Font.cpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
				
			|||||||
 | 
					// Copyright (c) 2022 Dominic Masters
 | 
				
			||||||
 | 
					// 
 | 
				
			||||||
 | 
					// This software is released under the MIT License.
 | 
				
			||||||
 | 
					// https://opensource.org/licenses/MIT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "Font.hpp"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					using namespace Dawn;
 | 
				
			||||||
							
								
								
									
										44
									
								
								src/dawn/display/font/Font.hpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								src/dawn/display/font/Font.hpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,44 @@
 | 
				
			|||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Copyright (c) 2022 Dominic Masters
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * This software is released under the MIT License.
 | 
				
			||||||
 | 
					 * https://opensource.org/licenses/MIT
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma once
 | 
				
			||||||
 | 
					#include "display/mesh/Mesh.hpp"
 | 
				
			||||||
 | 
					#include "display/Texture.hpp"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Dawn {
 | 
				
			||||||
 | 
					  class FontMeasure {
 | 
				
			||||||
 | 
					    public:
 | 
				
			||||||
 | 
					      virtual float_t getWidth() = 0;
 | 
				
			||||||
 | 
					      virtual float_t getHeight() = 0;
 | 
				
			||||||
 | 
					      virtual int32_t getQuadsOnLine(int32_t line);
 | 
				
			||||||
 | 
					      virtual int32_t getQuadIndexOnLine(int32_t line);
 | 
				
			||||||
 | 
					      virtual int32_t getLineCount();
 | 
				
			||||||
 | 
					      virtual int32_t getQuadCount();
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  class Font {
 | 
				
			||||||
 | 
					    public:
 | 
				
			||||||
 | 
					      Font();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      virtual void init() = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      virtual void buffer(
 | 
				
			||||||
 | 
					        std::string text,
 | 
				
			||||||
 | 
					        float_t fontSize,
 | 
				
			||||||
 | 
					        float_t maxWidth,
 | 
				
			||||||
 | 
					        Mesh &mesh,
 | 
				
			||||||
 | 
					        FontMeasure &measure
 | 
				
			||||||
 | 
					      ) = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      virtual Texture & getTexture() = 0;
 | 
				
			||||||
 | 
					      virtual void draw(Mesh &mesh, int32_t startCharacter, int32_t length) = 0;
 | 
				
			||||||
 | 
					      virtual float_t getLineHeight(float_t fontSize) = 0;
 | 
				
			||||||
 | 
					      virtual float_t getDefaultFontSize() = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      virtual ~Font();
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user