diff options
Diffstat (limited to 'Source/Asura.Engine')
113 files changed, 1750 insertions, 0 deletions
diff --git a/Source/Asura.Engine/AI/BehaviorTree.cpp b/Source/Asura.Engine/AI/BehaviorTree.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/AI/BehaviorTree.cpp diff --git a/Source/Asura.Engine/AI/BehaviorTree.h b/Source/Asura.Engine/AI/BehaviorTree.h new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/AI/BehaviorTree.h diff --git a/Source/Asura.Engine/AI/StateMachine.cpp b/Source/Asura.Engine/AI/StateMachine.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/AI/StateMachine.cpp diff --git a/Source/Asura.Engine/AI/StateMachine.h b/Source/Asura.Engine/AI/StateMachine.h new file mode 100644 index 0000000..17f8945 --- /dev/null +++ b/Source/Asura.Engine/AI/StateMachine.h @@ -0,0 +1,33 @@ +#ifndef __AE_STATEMACHINE_H__ +#define __AE_STATEMACHINE_H__ + +#include "StateMap.h" +#include "Component.h" + +namespace AsuraEngine +{ + namespace AI + { + + /// + /// Ϊstate mapĴ + /// + class StateMachine : public Component + { + public: + + + + private: + + /// + /// Statemachine ʹõstateͼ + /// + StateMap* mStateMap; + + }; + + } +} + +#endif
\ No newline at end of file diff --git a/Source/Asura.Engine/AI/StateMap.cpp b/Source/Asura.Engine/AI/StateMap.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/AI/StateMap.cpp diff --git a/Source/Asura.Engine/AI/StateMap.h b/Source/Asura.Engine/AI/StateMap.h new file mode 100644 index 0000000..873e1d9 --- /dev/null +++ b/Source/Asura.Engine/AI/StateMap.h @@ -0,0 +1,25 @@ +#ifndef __AE_STATEMAP_H__ +#define __AE_STATEMAP_H__ + +#include "Filesystem/Asset.h" + +namespace AsuraEngine +{ + namespace AI + { + + class StateMap : public Filesystem::Asset + { + public: + + + private: + + + + }; + + } +} + +#endif
\ No newline at end of file diff --git a/Source/Asura.Engine/Asura.h b/Source/Asura.Engine/Asura.h new file mode 100644 index 0000000..dfa0fa5 --- /dev/null +++ b/Source/Asura.Engine/Asura.h @@ -0,0 +1,6 @@ +#ifndef __AE_H__ +#define __AE_H__ + + + +#endif
\ No newline at end of file diff --git a/Source/Asura.Engine/Audio/Sound.cpp b/Source/Asura.Engine/Audio/Sound.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Audio/Sound.cpp diff --git a/Source/Asura.Engine/Audio/Sound.h b/Source/Asura.Engine/Audio/Sound.h new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Audio/Sound.h diff --git a/Source/Asura.Engine/Audio/Source.cpp b/Source/Asura.Engine/Audio/Source.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Audio/Source.cpp diff --git a/Source/Asura.Engine/Audio/Source.h b/Source/Asura.Engine/Audio/Source.h new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Audio/Source.h diff --git a/Source/Asura.Engine/Component.cpp b/Source/Asura.Engine/Component.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Component.cpp diff --git a/Source/Asura.Engine/Component.h b/Source/Asura.Engine/Component.h new file mode 100644 index 0000000..807bbba --- /dev/null +++ b/Source/Asura.Engine/Component.h @@ -0,0 +1,43 @@ +#ifndef __AE_COMPONENT_H__ +#define __AE_COMPONENT_H__ + +#include "GameObject.h" + +namespace AsuraEngine +{ + + class GameObject; + + /// + /// ComponentͨprefabGameObjectϡ + /// + class Component : public Object + { + public: + + virtual void OnEnable(); + virtual void OnEvent(); + virtual void OnUpdate(uint32 milliseconds); + virtual void OnRender(); + virtual void OnDisable(); + + protected: + + enum class EnableCallback + { + OnEnable = 1, + OnEvent = 1 << 1, + OnUpdate = 1 << 2, + OnRender = 1 << 3, + OnDisable = 1 << 4, + }; + + EnableCallback mEnabledCallbacks; + + GameObject* mGameObject; + + }; + +} + +#endif
\ No newline at end of file diff --git a/Source/Asura.Engine/Containers/Map.cpp b/Source/Asura.Engine/Containers/Map.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Containers/Map.cpp diff --git a/Source/Asura.Engine/Containers/Map.h b/Source/Asura.Engine/Containers/Map.h new file mode 100644 index 0000000..2caedef --- /dev/null +++ b/Source/Asura.Engine/Containers/Map.h @@ -0,0 +1,17 @@ +#ifndef __AE_MAP_H__ +#define __AE_MAP_H__ + +#include <map> + +namespace AsuraEngine +{ + namespace Containers + { + + template<typename key_type, typename value_type> + using Map = std::map<key_type, value_type>; + + } +} + +#endif
\ No newline at end of file diff --git a/Source/Asura.Engine/Containers/Stack.cpp b/Source/Asura.Engine/Containers/Stack.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Containers/Stack.cpp diff --git a/Source/Asura.Engine/Containers/Stack.h b/Source/Asura.Engine/Containers/Stack.h new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Containers/Stack.h diff --git a/Source/Asura.Engine/Containers/String.cpp b/Source/Asura.Engine/Containers/String.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Containers/String.cpp diff --git a/Source/Asura.Engine/Containers/String.h b/Source/Asura.Engine/Containers/String.h new file mode 100644 index 0000000..3c806fb --- /dev/null +++ b/Source/Asura.Engine/Containers/String.h @@ -0,0 +1,78 @@ +#ifndef __AE_STRING_H__ +#define __AE_STRING_H__ + +#include <string> + +namespace AsuraEngine +{ + namespace Containers + { + + /// + /// װstd::string + /// + class String : public std::string + { + public: + inline String() + : std::string() + { + } + + inline String(const std::string& str) + : std::string(str) + { + } + + inline String(const String& str) + : std::string(str) + { + } + + inline String(const char* str) + : std::string(str) + { + } + + inline String& operator = (const String& str) + { + std::string::operator=(str); + return *this; + } + + inline operator const char* () const + { + return this->c_str(); + } + + inline const char* str() const + { + return this->c_str(); + } + + inline String(const String& s2, size_type pos2, size_type len2) + : std::string(s2, pos2, len2) + { + } + + inline String(const char* buf, size_type bufsize) + : std::string(buf, bufsize) + { + } + + inline String(size_type repetitions, char c) + : std::string(repetitions, c) + { + } + + inline int length() const + { + return size(); + } + + }; + + } +} + +#endif
\ No newline at end of file diff --git a/Source/Asura.Engine/Containers/StringMap.cpp b/Source/Asura.Engine/Containers/StringMap.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Containers/StringMap.cpp diff --git a/Source/Asura.Engine/Containers/StringMap.hpp b/Source/Asura.Engine/Containers/StringMap.hpp new file mode 100644 index 0000000..94858a7 --- /dev/null +++ b/Source/Asura.Engine/Containers/StringMap.hpp @@ -0,0 +1,32 @@ +#ifndef __AE_STRINGMAP_H__ +#define __AE_STRINGMAP_H__ + +#include "String.h" + +namespace AsuraEngine +{ + namespace Containers + { + + /// + /// һ˫һһӦӳ䣬shader uniformsstatemathine state parameterID + /// + template<typename key_type> + class StringMap + { + public: + + bool ContainsKey(const key_type& key); + + bool ContainsString(const String& str); + + String GetStringByKey(const key_type& key); + + key_type GetKeyByString(const String& str); + + }; + + } +} + +#endif
\ No newline at end of file diff --git a/Source/Asura.Engine/Containers/UnorderedMap.hpp b/Source/Asura.Engine/Containers/UnorderedMap.hpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Containers/UnorderedMap.hpp diff --git a/Source/Asura.Engine/Containers/Vector.hpp b/Source/Asura.Engine/Containers/Vector.hpp new file mode 100644 index 0000000..9fbd52a --- /dev/null +++ b/Source/Asura.Engine/Containers/Vector.hpp @@ -0,0 +1,16 @@ +#ifndef __AE_VECTOR_HPP__ +#define __AE_VECTOR_HPP__ + +#include <vector> + +namespace AsuraEngine +{ + namespace Containers + { + template<typename T> + using Vector = std::vector<T>; + + } +} + +#endif
\ No newline at end of file diff --git a/Source/Asura.Engine/Exceptions/Exception.cpp b/Source/Asura.Engine/Exceptions/Exception.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Exceptions/Exception.cpp diff --git a/Source/Asura.Engine/Exceptions/Exception.h b/Source/Asura.Engine/Exceptions/Exception.h new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Exceptions/Exception.h diff --git a/Source/Asura.Engine/Factory.h b/Source/Asura.Engine/Factory.h new file mode 100644 index 0000000..0cccab2 --- /dev/null +++ b/Source/Asura.Engine/Factory.h @@ -0,0 +1,14 @@ +#ifndef __AE_FACTORY_H__ +#define __AE_FACTORY_H__ + +namespace AsuraEngine +{ + + class Factory + { + + }; + +} + +#endif
\ No newline at end of file diff --git a/Source/Asura.Engine/FileSystem/AnimationImpoter.h b/Source/Asura.Engine/FileSystem/AnimationImpoter.h new file mode 100644 index 0000000..57fdfdb --- /dev/null +++ b/Source/Asura.Engine/FileSystem/AnimationImpoter.h @@ -0,0 +1,20 @@ +#ifndef __AE_IMAGE_IMPORTER_H__ +#define __AE_IMAGE_IMPORTER_H___ + +namespace AsuraEngine +{ + namespace Filesystem + { + + /// + /// .asranimation + /// + class AnimationImporter + { + + }; + + } +} + +#endif
\ No newline at end of file diff --git a/Source/Asura.Engine/FileSystem/Asset.cpp b/Source/Asura.Engine/FileSystem/Asset.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/FileSystem/Asset.cpp diff --git a/Source/Asura.Engine/FileSystem/Asset.h b/Source/Asura.Engine/FileSystem/Asset.h new file mode 100644 index 0000000..9fc6607 --- /dev/null +++ b/Source/Asura.Engine/FileSystem/Asset.h @@ -0,0 +1,22 @@ +#ifndef __AE_ASSET_H__ +#define __AE_ASSET_H__ + +#include "Object.h" + +namespace AsuraEngine +{ + namespace Filesystem + { + + /// + /// AssetΪ + /// + class Asset : public Object + { + + }; + + } +} + +#endif
\ No newline at end of file diff --git a/Source/Asura.Engine/FileSystem/ImageImpoter.h b/Source/Asura.Engine/FileSystem/ImageImpoter.h new file mode 100644 index 0000000..ca7cb9a --- /dev/null +++ b/Source/Asura.Engine/FileSystem/ImageImpoter.h @@ -0,0 +1,20 @@ +#ifndef __AE_IMAGE_IMPORTER_H__ +#define __AE_IMAGE_IMPORTER_H___ + +namespace AsuraEngine +{ + namespace Filesystem + { + + /// + /// .asrimage + /// + class ImageImporter + { + + }; + + } +} + +#endif
\ No newline at end of file diff --git a/Source/Asura.Engine/FileSystem/Importer.h b/Source/Asura.Engine/FileSystem/Importer.h new file mode 100644 index 0000000..b343a92 --- /dev/null +++ b/Source/Asura.Engine/FileSystem/Importer.h @@ -0,0 +1,17 @@ +#ifndef __AE_IMPORTER_H__ +#define __AE_IMPORTER_H__ + +namespace AsuraEngine +{ + namespace Filesystem + { + + class Importer + { + + }; + + } +} + +#endif
\ No newline at end of file diff --git a/Source/Asura.Engine/FileSystem/ParticleSystemImpoter.h b/Source/Asura.Engine/FileSystem/ParticleSystemImpoter.h new file mode 100644 index 0000000..92796f3 --- /dev/null +++ b/Source/Asura.Engine/FileSystem/ParticleSystemImpoter.h @@ -0,0 +1,20 @@ +#ifndef __AE_IMAGE_IMPORTER_H__ +#define __AE_IMAGE_IMPORTER_H___ + +namespace AsuraEngine +{ + namespace Filesystem + { + + /// + /// .asrparticle system + /// + class ParticleSystemImporter + { + + }; + + } +} + +#endif
\ No newline at end of file diff --git a/Source/Asura.Engine/FileSystem/SpriteImpoter.h b/Source/Asura.Engine/FileSystem/SpriteImpoter.h new file mode 100644 index 0000000..0e157c1 --- /dev/null +++ b/Source/Asura.Engine/FileSystem/SpriteImpoter.h @@ -0,0 +1,20 @@ +#ifndef __AE_IMAGE_IMPORTER_H__ +#define __AE_IMAGE_IMPORTER_H___ + +namespace AsuraEngine +{ + namespace Filesystem + { + + /// + /// .asrsprite + /// + class SpriteImporter + { + + }; + + } +} + +#endif
\ No newline at end of file diff --git a/Source/Asura.Engine/Font/TrueTypeFont.cpp b/Source/Asura.Engine/Font/TrueTypeFont.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Font/TrueTypeFont.cpp diff --git a/Source/Asura.Engine/Font/TrueTypeFont.h b/Source/Asura.Engine/Font/TrueTypeFont.h new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Font/TrueTypeFont.h diff --git a/Source/Asura.Engine/GUI/Button.cpp b/Source/Asura.Engine/GUI/Button.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/GUI/Button.cpp diff --git a/Source/Asura.Engine/GUI/README.md b/Source/Asura.Engine/GUI/README.md new file mode 100644 index 0000000..3e367c7 --- /dev/null +++ b/Source/Asura.Engine/GUI/README.md @@ -0,0 +1 @@ +immediate mode game gui
\ No newline at end of file diff --git a/Source/Asura.Engine/GameObject.cpp b/Source/Asura.Engine/GameObject.cpp new file mode 100644 index 0000000..322f798 --- /dev/null +++ b/Source/Asura.Engine/GameObject.cpp @@ -0,0 +1,11 @@ +#include "GameObject.h" + +namespace AsuraEngine +{ + + void GameObject::OnUpdate(uint32 milliseconds) + { + + } + +} diff --git a/Source/Asura.Engine/GameObject.h b/Source/Asura.Engine/GameObject.h new file mode 100644 index 0000000..85dc87f --- /dev/null +++ b/Source/Asura.Engine/GameObject.h @@ -0,0 +1,56 @@ +#ifndef __AE_GAMEOBJECT_H__ +#define __AE_GAMEOBJECT_H__ + +#include "./Containers/Vector.hpp" +#include "./Math/Vector2.h" + +#include "Object.h" +#include "Component.h" +#include "Transform.h" +#include "Manager.hpp" + +namespace AsuraEngine +{ + + /// + /// Ϸʵ壬 + /// + class GameObject final : public Object + { + public: + + // Ļص + + void OnEnable(); + void OnEvent(); + void OnUpdate(uint32 milliseconds); + void OnRender(); + void OnDisable(); + + // transformͨкGameObjectλáźת + + const Transform& GetTransform(); + const Math::Vector2& GetPosition(); + const Math::Vector2& GetScale(); + const Math::Vector2& GetRotation(); + void SetTransform(const Transform& transform); + void SetPosition(const Math::Vector2& position); + void SetScale(const Math::Vector2& scale); + void SetRotation(const Math::Vector2& rotation); + + template<typename T> + inline T GetComponent() + { + return NULL; + } + + private: + + Transform mTransform; + Containers::Vector<Component*> mComponents; + + }; + +} + +#endif
\ No newline at end of file diff --git a/Source/Asura.Engine/Graphics/Animation.cpp b/Source/Asura.Engine/Graphics/Animation.cpp new file mode 100644 index 0000000..47643aa --- /dev/null +++ b/Source/Asura.Engine/Graphics/Animation.cpp @@ -0,0 +1,21 @@ +#include "Animation.h" + +namespace AsuraEngine +{ + namespace Graphics + { + + void Animation::OnEnable() + { + mSpriteRenderer = mGameObject->GetComponent<SpriteRenderer*>(); + } + + void Animation::OnUpdate(uint32 milliseconds) + { + if (!mSpriteRenderer) + return; + mSpriteRenderer->SetSprite(NULL); + } + + } +} diff --git a/Source/Asura.Engine/Graphics/Animation.h b/Source/Asura.Engine/Graphics/Animation.h new file mode 100644 index 0000000..391da22 --- /dev/null +++ b/Source/Asura.Engine/Graphics/Animation.h @@ -0,0 +1,128 @@ +#ifndef __AE_ANIMATION_H__ +#define __AE_ANIMATION_H__ + +#include "Sprite.h" +#include "Component.h" +#include "Manager.hpp" +#include "SpriteRenderer.h" +#include "Containers/Map.h" +#include "Containers/Vector.hpp" +#include "Containers/StringMap.hpp" +#include "Filesystem/Asset.h" + +namespace AsuraEngine +{ + namespace Graphics + { + + /// + /// ؼ֡ + /// + struct Frame + { + uint mask; // + float time; + Sprite* sprite; + }; + + /// + /// SpriteԸıspriteĴСתšimageAnimationͨanimatorġ + /// + class Animation final : public Filesystem::Asset + { + public: + + enum UpdateMask + { + Scale = 1, + Position = 1 << 1, + Rotation = 1 << 2, + Sprite = 1 << 3 + }; + + struct Definition + { + + }; + + /// + /// ʱһ֡ + /// + Frame GetFrame(float t); + + /// + /// ùؼ֡ + /// + uint GetKeyFrameCount(); + + /// + /// Ƿѭ + /// + uint GetLoop(); + + /// + /// ȡʱ + /// + uint GetDuration(); + + private: + + /// + /// ؼ֡ + /// + Containers::Vector<Frame> mFrames; + + /// + /// ʱ + /// + float mDuration; + + /// + /// Ƿѭ + /// + bool mLoop; + + /// + /// ID + /// + uint mID; + + UpdateMask mUpdateMask; + + }; + + class AnimationManager : public Manager + { + public: + + Containers::String GetAnimationName(uint ID); + + uint GetAnimationID(const Containers::String& name); + + Animation* GetAnimation(uint ID); + + Animation* GetAnimation(const Containers::String& name); + + /// + /// ӶID + /// + uint AddAnimation(Animation* animation); + + private: + + /// + /// ӳIDanimation + /// + Containers::StringMap<uint> mAnimationIDs; + + /// + /// ӳkeyanimation + /// + Containers::Map<uint, Animation*> mAnimations; + + }; + + } +} + +#endif
\ No newline at end of file diff --git a/Source/Asura.Engine/Graphics/Animator.cpp b/Source/Asura.Engine/Graphics/Animator.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Graphics/Animator.cpp diff --git a/Source/Asura.Engine/Graphics/Animator.h b/Source/Asura.Engine/Graphics/Animator.h new file mode 100644 index 0000000..4d3d269 --- /dev/null +++ b/Source/Asura.Engine/Graphics/Animator.h @@ -0,0 +1,96 @@ +#ifndef __AE_ANIMATOR_H__ +#define __AE_ANIMATOR_H__ + +#include "Component.h" +#include "Animation.h" + +namespace AsuraEngine +{ + namespace Graphics + { + + /// + /// animationҪΪanimationĴ + /// + class Animator final : public Component + { + public: + + void OnEnable() override; + void OnUpdate(uint32 milliseconds) override; + + /// + /// animation + /// + void SetAnimation(uint ID); + + /// + /// animation + /// + void SetAnimation(Animation* animation); + + /// + /// animation״̬ + /// + void SetTime(float time); + + /// + /// IJٶ + /// + void SetSpeed(float speed); + + /// + /// Ƿѭ + /// + void SetLoop(bool isloop); + + /// + /// ݹؼ֡animation + /// + void SetKeyFrame(uint keyFrame); + + /// + /// õ + /// + void SetToBegin(); + + /// + /// õʼ + /// + void SetToEnd(); + + /// + /// ͣ + /// + void Pause(); + + private: + + /// + /// ǰanimation + /// + Animation* mAnimation; + + /// + /// AnimationҪһsprite renderer + /// + SpriteRenderer* mSpriteRenderer; + + /// + /// ٶȣĬΪ1dt = mSpeed * DELTA_TIME + /// + float mSpeed; + + /// + /// ǰִеʱ + /// + float mTime; + + bool mLoop; + + }; + + } +} + +#endif
\ No newline at end of file diff --git a/Source/Asura.Engine/Graphics/Camera.cpp b/Source/Asura.Engine/Graphics/Camera.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Graphics/Camera.cpp diff --git a/Source/Asura.Engine/Graphics/Camera.h b/Source/Asura.Engine/Graphics/Camera.h new file mode 100644 index 0000000..699d342 --- /dev/null +++ b/Source/Asura.Engine/Graphics/Camera.h @@ -0,0 +1,42 @@ +#ifndef __AE_CAMERA_H__ +#define __AE_CAMERA_H__ + +#include "RenderTarget.h" +#include "Component.h" + +namespace AsuraEngine +{ + namespace Graphics + { + + /// + /// Orthographic Camera. + /// + class Camera : public Component + { + public: + + + private: + + /// + /// ȾĿ + /// + RenderTarget* mRenderTarget; + + /// + /// ǷȾĻ + /// + bool mIsOnScreen; + + /// + /// ü + /// + bool mIsCulling; + + }; + + } +} + +#endif diff --git a/Source/Asura.Engine/Graphics/Canvas.cpp b/Source/Asura.Engine/Graphics/Canvas.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Graphics/Canvas.cpp diff --git a/Source/Asura.Engine/Graphics/Canvas.h b/Source/Asura.Engine/Graphics/Canvas.h new file mode 100644 index 0000000..cd78194 --- /dev/null +++ b/Source/Asura.Engine/Graphics/Canvas.h @@ -0,0 +1,20 @@ +#ifndef __AE_Canvas_H__ +#define __AE_Canvas_H__ + +#include "Component.h" +#include "Texture.h" + +namespace AsuraEngine +{ + namespace Graphics + { + + class Canvas : public Texture, public Component + { + + }; + + } +} + +#endif
\ No newline at end of file diff --git a/Source/Asura.Engine/Graphics/CanvasRenderer.cpp b/Source/Asura.Engine/Graphics/CanvasRenderer.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Graphics/CanvasRenderer.cpp diff --git a/Source/Asura.Engine/Graphics/CanvasRenderer.h b/Source/Asura.Engine/Graphics/CanvasRenderer.h new file mode 100644 index 0000000..ef188a5 --- /dev/null +++ b/Source/Asura.Engine/Graphics/CanvasRenderer.h @@ -0,0 +1,30 @@ +#ifndef __AE_CANVAS_RENDERER_H__ +#define __AE_CANVAS_RENDERER_H__ + +#include "Canvas.h" +#include "Renderer.h" + +namespace AsuraEngine +{ + namespace Graphics + { + + class CanvasRenderer : public Renderer + { + public: + + void SetCanvas(Canvas* canvas); + Canvas* GetCanvas(); + + void SetBlendMode(); + + private: + + Canvas * mCanvas; + + }; + + } +} + +#endif
\ No newline at end of file diff --git a/Source/Asura.Engine/Graphics/Color.cpp b/Source/Asura.Engine/Graphics/Color.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Graphics/Color.cpp diff --git a/Source/Asura.Engine/Graphics/Color.h b/Source/Asura.Engine/Graphics/Color.h new file mode 100644 index 0000000..f172156 --- /dev/null +++ b/Source/Asura.Engine/Graphics/Color.h @@ -0,0 +1,30 @@ +#ifndef __AE_COLOR_H__ +#define __AE_COLOR_H__ + +#include "Type.h" + +namespace AsuraEngine +{ + namespace Graphics + { + + /// + /// 32bitsɫ + /// + class Color + { + public: + + Color(byte r, byte g, byte b, byte a); + ~Color(); + + private: + + byte mR, mG, mB, mA; + + }; + + } +} + +#endif
\ No newline at end of file diff --git a/Source/Asura.Engine/Graphics/Image.cpp b/Source/Asura.Engine/Graphics/Image.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Graphics/Image.cpp diff --git a/Source/Asura.Engine/Graphics/Image.h b/Source/Asura.Engine/Graphics/Image.h new file mode 100644 index 0000000..5b27079 --- /dev/null +++ b/Source/Asura.Engine/Graphics/Image.h @@ -0,0 +1,119 @@ +#ifndef __AE_IMAGE_H__ +#define __AE_IMAGE_H__ + +#include "Math/Vector2.h" +#include "Manager.hpp" +#include "Texture.h" +#include "Color.h" +#include "Factory.h" + +namespace AsuraEngine +{ + namespace Graphics + { + + class ImageFactory; + + /// + /// ImageͼƬڴȡϷĽһImageڴ桢ԴֻᱣһݣҪ + /// imageêλãźתǶȣʹspriteһֻࡣ + /// + class Image final : public Texture, public Filesystem::Asset + { + public: + + uint GetWidth(); + uint GetHeight(); + + /// + /// ijһλõ + /// + Color GetPixel(uint x, uint y); + + private: + + friend class ImageFactory; + + Image(Color* pixels, int width, int height); + ~Image(); + + /// + /// СΪλ + /// + uint mWidth, mHeight; + Color* mPixels; + + /// + /// ID + /// + uint mID; + + }; + + /// + /// + /// + class ImageManager : public Manager + { + public: + + /// + /// ͨIDȡ·dzͼƬString::Null + /// + Containers::String GetImagePath(uint ID); + + /// + /// ͨID·ȡIDûҵ0 + /// + uint GetImageID(const Containers::String& path); + + Image* GetImage(const Containers::String& path); + + Image* GetImage(const Containers::String& ID); + + uint AddImage(const Containers::String& path, Image* image); + + uint AddImage(Image* image); + + bool RemoveImage(uint ID); + + bool RemoveImage(Image* image); + + private: + + /// + /// еimage + /// + Containers::Map<uint, Image*> mImages; + + /// + /// image·IDӳ䡣Դ.asrimageͨ·õimageԲеimageڴmapС + /// ɳimageֻͨIDȡԳҪID + /// + Containers::StringMap<uint> mImageIDs; + + }; + + /// + /// + /// + class ImageFactory : public Factory + { + public: + + /// + /// image pixelйimage + /// + Image* ReadBuffer(Color* pixels, int width, int height); + + /// + /// image externݲ + /// + Image* Decode(); + + }; + + } +} + +#endif
\ No newline at end of file diff --git a/Source/Asura.Engine/Graphics/Material.cpp b/Source/Asura.Engine/Graphics/Material.cpp new file mode 100644 index 0000000..eaf9742 --- /dev/null +++ b/Source/Asura.Engine/Graphics/Material.cpp @@ -0,0 +1,18 @@ +#include "Material.h" + +namespace AsuraEngine +{ + namespace Graphics + { + + + + //-------------------------------------------------------------------------------------------------------- + + int Material::l_SetColor(lua_State* L) + { + + } + + } +} diff --git a/Source/Asura.Engine/Graphics/Material.h b/Source/Asura.Engine/Graphics/Material.h new file mode 100644 index 0000000..1cb3c88 --- /dev/null +++ b/Source/Asura.Engine/Graphics/Material.h @@ -0,0 +1,189 @@ +#ifndef __AE_MATERIAL_H__ +#define __AE_MATERIAL_H__ + +#include "Containers/Vector.hpp" +#include "Containers/String.h" +#include "Math/Vector2.h" +#include "Math/Vector3.h" +#include "Math/Vector4.h" +#include "Math/Matrix44.h" +#include "Scripting/Luax.hpp" + +#include "Shader.h" +#include "Texture.h" +#include "Manager.hpp" + +namespace AsuraEngine +{ + namespace Graphics + { + + class MaterialFactory; + + /// + /// ͨʵShaderеuniformsShaderĵı¶materialÿʿԲ컯ͬɫ + /// ͬͨļ(.mat)ʵ֣ڴáAsuraУShaderֱӦõȾ̶һ + /// ʹɲshaderuniformsmaterial䵱shaderĴ + /// + class Material final : public Filesystem::Asset + { + public: + + enum class UniformsType + { + None = 0, + Float, + Int, + Vector2, + Vector3, + Vector4, + Matrix44, + Texture, + Color, + }; + + struct UniformsInfo + { + uint ID; // uniformID + UniformsType type; // uniform + union + { + float f; + int i; + Math::Vector2 v2; + Math::Vector3 v3; + Math::Vector4 v4; + Math::Matrix44 m44; + Texture* tex; + Color col; + }value; // uniformֵ + }; + + void SetShader(Shader* shader); + + // UniformڲУȾʱϴGPU + + /// + /// uniformIDIDnamemapshader乲uniformֵʱͨIDѯuniform + /// shaderҵuniform locationlocationֵ + /// + static int GetUniformID(const Containers::String& name); + + void SetTexture(uint ID, Texture* texture); + void SetVector2(uint ID, Math::Vector2* vector2); + void SetVector3(uint ID, Math::Vector3* vector3); + void SetVector4(uint ID, Math::Vector4* vector4); + void SetMatrix44(uint ID, Math::Matrix44* matrix44); + void SetFloat(uint ID, float value); + void SetInteger(uint ID, int value); + void SetColor(uint ID, Color color); + + UniformsInfo GetUniformInfo(uint ID); + float GetUniformInfof(uint ID); + int GetUniformInfoi(uint ID); + Math::Vector2 GetUniformInfov2(uint ID); + Math::Vector3 GetUniformInfov3(uint ID); + Math::Vector4 GetUniformInfov4(uint ID); + Math::Matrix44 GetUniformInfom44(uint ID); + Texture* GetUniformInfotex(uint ID); + Color GetUniformInfocol(uint ID); + + // ϴ + + void SetVertexAttributes(); + + private: + + friend class MaterialFactory; + + Material(); + Material(const Material& src); + ~Material(); + + /// + /// + /// + uint mID; + + /// + /// + /// + Shader* mShader; + + /// + /// UniformsֵӳIDֵ + /// + Containers::Map<int, UniformsInfo> mUniforms; + + /// + /// ǷǹIJ + /// + bool mIsShared; + + //---------------------------------------------------------------------------------------------------- + + LUAX_DECL_FACTORY(Material); + + LUAX_DECL_METHOD(l_Clone); + + LUAX_DECL_METHOD(l_SetShader); + + LUAX_DECL_METHOD(l_SetTexture); + LUAX_DECL_METHOD(l_SetVector2); + LUAX_DECL_METHOD(l_SetVector3); + LUAX_DECL_METHOD(l_SetVector4); + LUAX_DECL_METHOD(l_SetMatrix44); + LUAX_DECL_METHOD(l_SetFloat); + LUAX_DECL_METHOD(l_SetInteger); + LUAX_DECL_METHOD(l_SetColor); + + LUAX_DECL_METHOD(l_GetUniformInfo); + LUAX_DECL_METHOD(l_GetUniformInfof); + LUAX_DECL_METHOD(l_GetUniformInfoi); + LUAX_DECL_METHOD(l_GetUniformInfov2); + LUAX_DECL_METHOD(l_GetUniformInfov3); + LUAX_DECL_METHOD(l_GetUniformInfov4); + LUAX_DECL_METHOD(l_GetUniformInfom44); + LUAX_DECL_METHOD(l_GetUniformInfotex); + LUAX_DECL_METHOD(l_GetUniformInfocol); + + LUAX_DECL_METHOD(l_SetVertexAttributes); + + }; + + class MaterialManager : public Manager + { + public: + + private: + + /// + /// еimage + /// + Containers::Map<uint, Image*> mImages; + + /// + /// image·IDӳ䡣Դ.asrimageͨ·õimageԲеimageڴmapС + /// ɳimageֻͨIDȡԳҪID + /// + Containers::StringMap<uint> mImageIDs; + + }; + + class MaterialFactory : public Factory + { + public: + + /// + /// һmaterial + /// + Material* Clone(Material* src); + + Material* Create(); + + }; + + } +} + +#endif
\ No newline at end of file diff --git a/Source/Asura.Engine/Graphics/Mesh2D.cpp b/Source/Asura.Engine/Graphics/Mesh2D.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Graphics/Mesh2D.cpp diff --git a/Source/Asura.Engine/Graphics/Mesh2D.h b/Source/Asura.Engine/Graphics/Mesh2D.h new file mode 100644 index 0000000..a113f4c --- /dev/null +++ b/Source/Asura.Engine/Graphics/Mesh2D.h @@ -0,0 +1,20 @@ +#ifndef __AE_MESH2D_H__ +#define __AE_MESH2D_H__ + +namespace AsuraEngine +{ + namespace Graphics + { + + /// + /// 2D meshһЩUV + /// + class Mesh2D + { + + }; + + } +} + +#endif
\ No newline at end of file diff --git a/Source/Asura.Engine/Graphics/Mesh2DRenderer.cpp b/Source/Asura.Engine/Graphics/Mesh2DRenderer.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Graphics/Mesh2DRenderer.cpp diff --git a/Source/Asura.Engine/Graphics/Mesh2DRenderer.h b/Source/Asura.Engine/Graphics/Mesh2DRenderer.h new file mode 100644 index 0000000..fcbfd2c --- /dev/null +++ b/Source/Asura.Engine/Graphics/Mesh2DRenderer.h @@ -0,0 +1,19 @@ +#ifndef __AE_MESH2D_H__ +#define __AE_MESH2D_H__ + +#include "FileSystem/Asset.h" + +namespace AsuraEngine +{ + namespace Graphics + { + + class Mesh2D : public Filesystem::Asset + { + + }; + + } +} + +#endif
\ No newline at end of file diff --git a/Source/Asura.Engine/Graphics/OpenGL.cpp b/Source/Asura.Engine/Graphics/OpenGL.cpp new file mode 100644 index 0000000..ec23f52 --- /dev/null +++ b/Source/Asura.Engine/Graphics/OpenGL.cpp @@ -0,0 +1,11 @@ +#include "OpenGL.h" + +namespace AsuraEngine +{ + namespace Graphics + { + + + + } +}
\ No newline at end of file diff --git a/Source/Asura.Engine/Graphics/OpenGL.h b/Source/Asura.Engine/Graphics/OpenGL.h new file mode 100644 index 0000000..f46497b --- /dev/null +++ b/Source/Asura.Engine/Graphics/OpenGL.h @@ -0,0 +1,17 @@ +#ifndef __AE_OPENGL_H__ +#define __AE_OPENGL_H__ + +namespace AsuraEngine +{ + namespace Graphics + { + + class OpenGL + { + + }; + + } +} + +#endif
\ No newline at end of file diff --git a/Source/Asura.Engine/Graphics/ParticleSystem.cpp b/Source/Asura.Engine/Graphics/ParticleSystem.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Graphics/ParticleSystem.cpp diff --git a/Source/Asura.Engine/Graphics/ParticleSystem.h b/Source/Asura.Engine/Graphics/ParticleSystem.h new file mode 100644 index 0000000..078427a --- /dev/null +++ b/Source/Asura.Engine/Graphics/ParticleSystem.h @@ -0,0 +1,22 @@ +#ifndef __AE_PARTICLESYSTEM_H__ +#define __AE_PARTICLESYSTEM_H__ + +#include "Component.h" + +namespace AsuraEngine +{ + namespace Graphics + { + + /// + /// ϵͳ + /// + class ParticleSystem final : public Component + { + + }; + + } +} + +#endif
\ No newline at end of file diff --git a/Source/Asura.Engine/Graphics/Prefab.cpp b/Source/Asura.Engine/Graphics/Prefab.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Graphics/Prefab.cpp diff --git a/Source/Asura.Engine/Graphics/Prefab.h b/Source/Asura.Engine/Graphics/Prefab.h new file mode 100644 index 0000000..82a8da2 --- /dev/null +++ b/Source/Asura.Engine/Graphics/Prefab.h @@ -0,0 +1,30 @@ +#ifndef __AE_PREFAB_H__ +#define __AE_PREFAB_H__ + +#include "Manager.hpp" +#include "FileSystem/Asset.h" + +namespace AsuraEngine +{ + + /// + /// PrefabGameObject + /// + class Prefab : public Filesystem::Asset + { + + }; + + class PrefabManager : public Manager + { + + }; + + class PrefabFactory + { + + }; + +} + +#endif
\ No newline at end of file diff --git a/Source/Asura.Engine/Graphics/Renderer.cpp b/Source/Asura.Engine/Graphics/Renderer.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Graphics/Renderer.cpp diff --git a/Source/Asura.Engine/Graphics/Renderer.h b/Source/Asura.Engine/Graphics/Renderer.h new file mode 100644 index 0000000..c3677a7 --- /dev/null +++ b/Source/Asura.Engine/Graphics/Renderer.h @@ -0,0 +1,39 @@ +#ifndef __AE_RENDERER_H__ +#define __AE_RENDERER_H__ + +#include "Component.h" +#include "Material.h" + +namespace AsuraEngine +{ + namespace Graphics + { + + /// + /// ࣬ȾRendererദÿRenderer߱һʡ + /// + class Renderer : public Component + { + public: + + /// + /// һô˷ͻ´shared materialô˷ζҪmaterialýģʱʹõIJ + /// shared materialҪһݣӰrenderer + /// + Material* GetMaterial(); + + /// + /// Ⱦص + /// + virtual void OnRender() = 0; + + protected: + + Material* mMaterial; + + }; + + } +} + +#endif
\ No newline at end of file diff --git a/Source/Asura.Engine/Graphics/Shader.cpp b/Source/Asura.Engine/Graphics/Shader.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Graphics/Shader.cpp diff --git a/Source/Asura.Engine/Graphics/Shader.h b/Source/Asura.Engine/Graphics/Shader.h new file mode 100644 index 0000000..c3c67ad --- /dev/null +++ b/Source/Asura.Engine/Graphics/Shader.h @@ -0,0 +1,67 @@ +#ifndef __AE_SHADER_H__ +#define __AE_SHADER_H__ + +#include "luax/luax.h" + +#include "FileSystem/Asset.h" +#include "Containers/Map.h" +#include "Containers/StringMap.hpp" +#include "Object.h" +#include "Color.h" +#include "Manager.hpp" + +namespace AsuraEngine +{ + namespace Graphics + { + + class Material; + + /// + /// һshaderһڲʼ乲ijShaderuniformsͶݣֻuniforms location + /// + class Shader final : public Filesystem::Asset + { + public: + + Shader(); + ~Shader(); + + private: + + friend class Material; + + /// + /// shaderuniformsIDӳ䡣 + /// + static Containers::StringMap<int> sUniformsID; + + /// + /// uniformID + /// + static int GetUniformID(const Containers::String& name); + + /// + /// ñ + /// vec2 Asura_Time xֵΪ뵱ǰʼʱ䣬yֵΪһ֡ʱ + /// vec2 Asura_RenderTargetSize RTĴСΪλ + /// Texture Asura_MainTexture + /// + void SetBuiltInUniforms(); + + /// + /// ӳuniforms IDlocation + /// + Containers::Map<int, int> mLocations; + + }; + + class ShaderManager final : public Manager + { + + }; + + } +} + +#endif
\ No newline at end of file diff --git a/Source/Asura.Engine/Graphics/ShapeRenderer.cpp b/Source/Asura.Engine/Graphics/ShapeRenderer.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Graphics/ShapeRenderer.cpp diff --git a/Source/Asura.Engine/Graphics/ShapeRenderer.h b/Source/Asura.Engine/Graphics/ShapeRenderer.h new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Graphics/ShapeRenderer.h diff --git a/Source/Asura.Engine/Graphics/Sprite.cpp b/Source/Asura.Engine/Graphics/Sprite.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Graphics/Sprite.cpp diff --git a/Source/Asura.Engine/Graphics/Sprite.h b/Source/Asura.Engine/Graphics/Sprite.h new file mode 100644 index 0000000..b621f1b --- /dev/null +++ b/Source/Asura.Engine/Graphics/Sprite.h @@ -0,0 +1,71 @@ +#ifndef __AE_SPRITE_H__ +#define __AE_SPRITE_H__ + +#include "Math/Vector2.h" +#include "Transform.h" +#include "Component.h" +#include "Image.h" + +namespace AsuraEngine +{ + namespace Graphics + { + + /// + /// SpriteǿimageĴimagesprite乲ݣspriteimageԣתŵȡ + /// + class Sprite final : public Filesystem::Asset + { + public: + + enum Type + { + + }; + + /// + /// 뷽ʽ + /// + enum Align + { + + }; + + struct SpriteDef + { + Image* image; + Align align; + Math::Vector2 anchor; + Math::Vector2 size; + }; + + Sprite(SpriteDef definition); + ~Sprite(); + + private: + + /// + /// ê + /// + Math::Vector2 mAnchor; + + /// + /// С + /// + Math::Vector2 mSize; + + /// + /// image + /// + Image* mImage; + + //---------------------------------------------------------------------------------------------------- + + + + }; + + } +} + +#endif
\ No newline at end of file diff --git a/Source/Asura.Engine/Graphics/SpriteBatch.cpp b/Source/Asura.Engine/Graphics/SpriteBatch.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Graphics/SpriteBatch.cpp diff --git a/Source/Asura.Engine/Graphics/SpriteBatch.h b/Source/Asura.Engine/Graphics/SpriteBatch.h new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Graphics/SpriteBatch.h diff --git a/Source/Asura.Engine/Graphics/SpriteRenderer.cpp b/Source/Asura.Engine/Graphics/SpriteRenderer.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Graphics/SpriteRenderer.cpp diff --git a/Source/Asura.Engine/Graphics/SpriteRenderer.h b/Source/Asura.Engine/Graphics/SpriteRenderer.h new file mode 100644 index 0000000..bd81509 --- /dev/null +++ b/Source/Asura.Engine/Graphics/SpriteRenderer.h @@ -0,0 +1,32 @@ +#ifndef __AE_SPRITE_RENDERER_H__ +#define __AE_SPRITE_RENDERER_H__ + +#include "Renderer.h" +#include "Sprite.h" + +namespace AsuraEngine +{ + namespace Graphics + { + + class SpriteRenderer final : public Renderer + { + public: + + void SetSprite(Sprite* sprite); + + void OnRender() override; + + private: + + /// + /// Ⱦsprite + /// + Sprite* mSprite; + + }; + + } +} + +#endif
\ No newline at end of file diff --git a/Source/Asura.Engine/Graphics/Texture.cpp b/Source/Asura.Engine/Graphics/Texture.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Graphics/Texture.cpp diff --git a/Source/Asura.Engine/Graphics/Texture.h b/Source/Asura.Engine/Graphics/Texture.h new file mode 100644 index 0000000..8195fc9 --- /dev/null +++ b/Source/Asura.Engine/Graphics/Texture.h @@ -0,0 +1,22 @@ +#ifndef __AE_TEXTURE_H__ +#define __AE_TEXTURE_H__ + +#include "Object.h" + +namespace AsuraEngine +{ + namespace Graphics + { + + /// + /// 2Dࣩ2d meshrender targetбʹ + /// + class Texture : public Object + { + + }; + + } +} + +#endif
\ No newline at end of file diff --git a/Source/Asura.Engine/Input/Keyboard.cpp b/Source/Asura.Engine/Input/Keyboard.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Input/Keyboard.cpp diff --git a/Source/Asura.Engine/Input/Keyboard.h b/Source/Asura.Engine/Input/Keyboard.h new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Input/Keyboard.h diff --git a/Source/Asura.Engine/Layer.cpp b/Source/Asura.Engine/Layer.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Layer.cpp diff --git a/Source/Asura.Engine/Layer.h b/Source/Asura.Engine/Layer.h new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Layer.h diff --git a/Source/Asura.Engine/Manager.hpp b/Source/Asura.Engine/Manager.hpp new file mode 100644 index 0000000..5a94889 --- /dev/null +++ b/Source/Asura.Engine/Manager.hpp @@ -0,0 +1,14 @@ +#ifndef __AE_MANAGER_H__ +#define __AE_MANAGER_H__ + +namespace AsuraEngine +{ + + class Manager + { + + }; + +} + +#endif
\ No newline at end of file diff --git a/Source/Asura.Engine/Math/Curve.cpp b/Source/Asura.Engine/Math/Curve.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Math/Curve.cpp diff --git a/Source/Asura.Engine/Math/Curve.h b/Source/Asura.Engine/Math/Curve.h new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Math/Curve.h diff --git a/Source/Asura.Engine/Math/Functions.cpp b/Source/Asura.Engine/Math/Functions.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Math/Functions.cpp diff --git a/Source/Asura.Engine/Math/Functions.h b/Source/Asura.Engine/Math/Functions.h new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Math/Functions.h diff --git a/Source/Asura.Engine/Math/Matrix44.cpp b/Source/Asura.Engine/Math/Matrix44.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Math/Matrix44.cpp diff --git a/Source/Asura.Engine/Math/Matrix44.h b/Source/Asura.Engine/Math/Matrix44.h new file mode 100644 index 0000000..5bc44e7 --- /dev/null +++ b/Source/Asura.Engine/Math/Matrix44.h @@ -0,0 +1,24 @@ +#ifndef __AE_MATRIX44_H__ +#define __AE_MATRIX44_H__ + +namespace AsuraEngine +{ + namespace Math + { + + /// + /// 4x4 + /// + class Matrix44 + { + public: + + private: + + + }; + + } +} + +#endif
\ No newline at end of file diff --git a/Source/Asura.Engine/Math/RangedValue.cpp b/Source/Asura.Engine/Math/RangedValue.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Math/RangedValue.cpp diff --git a/Source/Asura.Engine/Math/RangedValue.h b/Source/Asura.Engine/Math/RangedValue.h new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Math/RangedValue.h diff --git a/Source/Asura.Engine/Math/Vector2.cpp b/Source/Asura.Engine/Math/Vector2.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Math/Vector2.cpp diff --git a/Source/Asura.Engine/Math/Vector2.h b/Source/Asura.Engine/Math/Vector2.h new file mode 100644 index 0000000..d5f8739 --- /dev/null +++ b/Source/Asura.Engine/Math/Vector2.h @@ -0,0 +1,17 @@ +#ifndef __AE_VECTOR2_H__ +#define __AE_VECTOR2_H__ + +namespace AsuraEngine +{ + namespace Math + { + + class Vector2 + { + + }; + + } +} + +#endif
\ No newline at end of file diff --git a/Source/Asura.Engine/Math/Vector3.cpp b/Source/Asura.Engine/Math/Vector3.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Math/Vector3.cpp diff --git a/Source/Asura.Engine/Math/Vector3.h b/Source/Asura.Engine/Math/Vector3.h new file mode 100644 index 0000000..14fdd88 --- /dev/null +++ b/Source/Asura.Engine/Math/Vector3.h @@ -0,0 +1,17 @@ +#ifndef __AE_VECTOR3_H__ +#define __AE_VECTOR3_H__ + +namespace AsuraEngine +{ + namespace Math + { + + class Vector3 + { + + }; + + } +} + +#endif
\ No newline at end of file diff --git a/Source/Asura.Engine/Math/Vector4.cpp b/Source/Asura.Engine/Math/Vector4.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Math/Vector4.cpp diff --git a/Source/Asura.Engine/Math/Vector4.h b/Source/Asura.Engine/Math/Vector4.h new file mode 100644 index 0000000..a6e8b38 --- /dev/null +++ b/Source/Asura.Engine/Math/Vector4.h @@ -0,0 +1,17 @@ +#ifndef __AE_VECTOR4_H__ +#define __AE_VECTOR4_H__ + +namespace AsuraEngine +{ + namespace Math + { + + class Vector4 + { + + }; + + } +} + +#endif
\ No newline at end of file diff --git a/Source/Asura.Engine/Object.cpp b/Source/Asura.Engine/Object.cpp new file mode 100644 index 0000000..587dca7 --- /dev/null +++ b/Source/Asura.Engine/Object.cpp @@ -0,0 +1,23 @@ +#include "Object.h" + +namespace AsuraEngine +{ + + Object::Object() + : mRC(0) + { + + } + + void Object::Retain(Object* obj) + { + ++obj->mRC; + } + + void Object::Release(Object* obj) + { + if (--obj->mRC == 0) + delete obj; + } + +}
\ No newline at end of file diff --git a/Source/Asura.Engine/Object.h b/Source/Asura.Engine/Object.h new file mode 100644 index 0000000..3dace26 --- /dev/null +++ b/Source/Asura.Engine/Object.h @@ -0,0 +1,32 @@ +#ifndef __AE_OBJECT_H__ +#define __AE_OBJECT_H__ + +#include "Type.h" + +namespace AsuraEngine +{ + + /// + /// + /// + class Object + { + public: + + Object(); + + virtual ~Object(); + + static void Retain(Object* obj); + + static void Release(Object* obj); + + private: + + int mRC; // + + }; + +} + +#endif
\ No newline at end of file diff --git a/Source/Asura.Engine/ObjectPool.cpp b/Source/Asura.Engine/ObjectPool.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/ObjectPool.cpp diff --git a/Source/Asura.Engine/ObjectPool.h b/Source/Asura.Engine/ObjectPool.h new file mode 100644 index 0000000..bf97858 --- /dev/null +++ b/Source/Asura.Engine/ObjectPool.h @@ -0,0 +1,14 @@ +#ifndef __AE_OBJECT_POOL_H__ +#define __AE_OBJECT_POOL_H__ + +namespace AsuraEngine +{ + + class ObjectPool + { + + }; + +} + +#endif
\ No newline at end of file diff --git a/Source/Asura.Engine/Physics/World.h b/Source/Asura.Engine/Physics/World.h new file mode 100644 index 0000000..7000351 --- /dev/null +++ b/Source/Asura.Engine/Physics/World.h @@ -0,0 +1,14 @@ +#ifndef __AE_WORLD_H__ +#define __AE_WORLD_H__ + +namespace AsuraEngine +{ + namespace Physics + { + + + + } +} + +#endif
\ No newline at end of file diff --git a/Source/Asura.Engine/Profiler/Stats.cpp b/Source/Asura.Engine/Profiler/Stats.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Profiler/Stats.cpp diff --git a/Source/Asura.Engine/Profiler/Stats.h b/Source/Asura.Engine/Profiler/Stats.h new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Profiler/Stats.h diff --git a/Source/Asura.Engine/Scene.cpp b/Source/Asura.Engine/Scene.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Scene.cpp diff --git a/Source/Asura.Engine/Scene.h b/Source/Asura.Engine/Scene.h new file mode 100644 index 0000000..742d872 --- /dev/null +++ b/Source/Asura.Engine/Scene.h @@ -0,0 +1,28 @@ +#ifndef __AE_SCENE_H__ +#define __AE_SCENE_H__ + +#include "FileSystem/Asset.h" +#include "Containers/Vector.hpp" +#include "GameObject.h" + +namespace AsuraEngine +{ + + /// + /// Ϸ + /// + class Scene final : public Filesystem::Asset + { + public: + + // + + private: + + Containers::Vector<GameObject*> mGameObjects; + + }; + +} + +#endif
\ No newline at end of file diff --git a/Source/Asura.Engine/Scripting/Luax.hpp b/Source/Asura.Engine/Scripting/Luax.hpp new file mode 100644 index 0000000..b371166 --- /dev/null +++ b/Source/Asura.Engine/Scripting/Luax.hpp @@ -0,0 +1,8 @@ +#ifndef __AE_LUAX_H__ +#define __AE_LUAX_H__ + +#include "Lua51/lua.h" +#include "Lua51/lauxlib.h" +#include "Luax/luax.h" + +#endif
\ No newline at end of file diff --git a/Source/Asura.Engine/Time/Timer.cpp b/Source/Asura.Engine/Time/Timer.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Time/Timer.cpp diff --git a/Source/Asura.Engine/Time/Timer.h b/Source/Asura.Engine/Time/Timer.h new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Time/Timer.h diff --git a/Source/Asura.Engine/Transform.cpp b/Source/Asura.Engine/Transform.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/Asura.Engine/Transform.cpp diff --git a/Source/Asura.Engine/Transform.h b/Source/Asura.Engine/Transform.h new file mode 100644 index 0000000..cca7575 --- /dev/null +++ b/Source/Asura.Engine/Transform.h @@ -0,0 +1,24 @@ +#ifndef __AE_TRANSFORM_H__ +#define __AE_TRANSFORM_H__ + +#include "Object.h" +#include "Math/Vector2.h" + +namespace AsuraEngine +{ + + /// + /// TransformΪԣΪ + /// + class Transform final : public Object + { + private: + Math::Vector2 position; + Math::Vector2 rotation; + Math::Vector2 scale; + + }; + +} + +#endif
\ No newline at end of file diff --git a/Source/Asura.Engine/Type.h b/Source/Asura.Engine/Type.h new file mode 100644 index 0000000..2a2bc70 --- /dev/null +++ b/Source/Asura.Engine/Type.h @@ -0,0 +1,24 @@ +#ifndef __AE_TYPE_H__ +#define __AE_TYPE_H__ + +#include <stdint.h> + +namespace AsuraEngine +{ + + typedef int8_t int8; + typedef uint8_t uint8; + typedef uint8 byte; + typedef int16_t int16; + typedef uint16_t uint16; + typedef int32_t int32; + typedef uint32_t uint32; + typedef int64_t int64; + typedef uint64_t uint64; + + typedef uint32_t uint; + typedef int32_t sint; + +} + +#endif
\ No newline at end of file |