Merge branch 'master' into reflection-mapping

This commit is contained in:
Lynix
2017-02-23 00:08:57 +01:00
48 changed files with 325 additions and 108 deletions

View File

@@ -43,27 +43,27 @@ namespace Nz
bool Create(SoundStream* soundStream);
void Destroy();
void EnableLooping(bool loop);
void EnableLooping(bool loop) override;
UInt32 GetDuration() const;
UInt32 GetDuration() const override;
AudioFormat GetFormat() const;
UInt32 GetPlayingOffset() const;
UInt32 GetPlayingOffset() const override;
UInt64 GetSampleCount() const;
UInt32 GetSampleRate() const;
SoundStatus GetStatus() const;
SoundStatus GetStatus() const override;
bool IsLooping() const;
bool IsLooping() const override;
bool OpenFromFile(const String& filePath, const MusicParams& params = MusicParams());
bool OpenFromMemory(const void* data, std::size_t size, const MusicParams& params = MusicParams());
bool OpenFromStream(Stream& stream, const MusicParams& params = MusicParams());
void Pause();
void Play();
void Pause() override;
void Play() override;
void SetPlayingOffset(UInt32 offset);
void Stop();
void Stop() override;
Music& operator=(const Music&) = delete;
Music& operator=(Music&&) = delete; ///TODO

View File

@@ -23,14 +23,14 @@ namespace Nz
Sound(Sound&&) = default;
~Sound();
void EnableLooping(bool loop);
void EnableLooping(bool loop) override;
const SoundBuffer* GetBuffer() const;
UInt32 GetDuration() const;
UInt32 GetPlayingOffset() const;
SoundStatus GetStatus() const;
UInt32 GetDuration() const override;
UInt32 GetPlayingOffset() const override;
SoundStatus GetStatus() const override;
bool IsLooping() const;
bool IsLooping() const override;
bool IsPlayable() const;
bool IsPlaying() const;
@@ -38,13 +38,13 @@ namespace Nz
bool LoadFromMemory(const void* data, std::size_t size, const SoundBufferParams& params = SoundBufferParams());
bool LoadFromStream(Stream& stream, const SoundBufferParams& params = SoundBufferParams());
void Pause();
void Play();
void Pause() override;
void Play() override;
void SetBuffer(const SoundBuffer* buffer);
void SetPlayingOffset(UInt32 offset);
void Stop();
void Stop() override;
Sound& operator=(const Sound&) = delete; ///TODO?
Sound& operator=(Sound&&) = default;

View File

@@ -24,7 +24,7 @@ namespace Nz
ByteStream(const void* ptr, Nz::UInt64 size);
ByteStream(const ByteStream&) = delete;
inline ByteStream(ByteStream&& stream);
~ByteStream();
virtual ~ByteStream();
inline Endianness GetDataEndianness() const;
inline Nz::UInt64 GetSize() const;

View File

@@ -25,7 +25,7 @@ namespace Nz
{
FunctorWithoutArgs(F func);
void Run();
void Run() override;
private:
F m_func;
@@ -36,7 +36,7 @@ namespace Nz
{
FunctorWithArgs(F func, Args&&... args);
void Run();
void Run() override;
private:
F m_func;
@@ -48,7 +48,7 @@ namespace Nz
{
MemberWithoutArgs(void (C::*func)(), C* object);
void Run();
void Run() override;
private:
void (C::*m_func)();

View File

@@ -26,9 +26,9 @@ namespace Nz
ColorBackground(const ColorBackground&) = default;
ColorBackground(ColorBackground&&) = delete;
void Draw(const AbstractViewer* viewer) const;
void Draw(const AbstractViewer* viewer) const override;
BackgroundType GetBackgroundType() const;
BackgroundType GetBackgroundType() const override;
Color GetColor() const;
void SetColor(const Color& color);

View File

@@ -29,8 +29,8 @@ namespace Nz
float GetBrightThreshold() const;
Texture* GetTexture(unsigned int i) const;
bool Process(const SceneData& sceneData, unsigned int firstWorkTexture, unsigned int secondWorkTexture) const;
bool Resize(const Vector2ui& dimensions);
bool Process(const SceneData& sceneData, unsigned int firstWorkTexture, unsigned int secondWorkTexture) const override;
bool Resize(const Vector2ui& dimensions) override;
void SetBlurPassCount(unsigned int passCount);
void SetBrightLuminance(float luminance);

View File

@@ -23,8 +23,8 @@ namespace Nz
DeferredDOFPass();
virtual ~DeferredDOFPass();
bool Process(const SceneData& sceneData, unsigned int firstWorkTexture, unsigned int secondWorkTexture) const;
bool Resize(const Vector2ui& dimensions);
bool Process(const SceneData& sceneData, unsigned int firstWorkTexture, unsigned int secondWorkTexture) const override;
bool Resize(const Vector2ui& dimensions) override;
protected:
RenderTexture m_dofRTT;

View File

@@ -21,7 +21,7 @@ namespace Nz
DeferredFXAAPass();
virtual ~DeferredFXAAPass();
bool Process(const SceneData& sceneData, unsigned int firstWorkTexture, unsigned int secondWorkTexture) const;
bool Process(const SceneData& sceneData, unsigned int firstWorkTexture, unsigned int secondWorkTexture) const override;
protected:
RenderStates m_states;

View File

@@ -21,7 +21,7 @@ namespace Nz
DeferredFinalPass();
virtual ~DeferredFinalPass();
bool Process(const SceneData& sceneData, unsigned int firstWorkTexture, unsigned int secondWorkTexture) const;
bool Process(const SceneData& sceneData, unsigned int firstWorkTexture, unsigned int secondWorkTexture) const override;
protected:
RenderStates m_states;

View File

@@ -21,7 +21,7 @@ namespace Nz
DeferredFogPass();
virtual ~DeferredFogPass();
bool Process(const SceneData& sceneData, unsigned int firstWorkTexture, unsigned int secondWorkTexture) const;
bool Process(const SceneData& sceneData, unsigned int firstWorkTexture, unsigned int secondWorkTexture) const override;
protected:
RenderStates m_states;

View File

@@ -20,8 +20,8 @@ namespace Nz
DeferredForwardPass();
virtual ~DeferredForwardPass();
void Initialize(DeferredRenderTechnique* technique);
bool Process(const SceneData& sceneData, unsigned int workTexture, unsigned int sceneTexture) const;
void Initialize(DeferredRenderTechnique* technique) override;
bool Process(const SceneData& sceneData, unsigned int workTexture, unsigned int sceneTexture) const override;
protected:
const ForwardRenderTechnique* m_forwardTechnique;

View File

@@ -21,8 +21,8 @@ namespace Nz
DeferredGeometryPass();
virtual ~DeferredGeometryPass();
bool Process(const SceneData& sceneData, unsigned int firstWorkTexture, unsigned int secondWorkTexture) const;
bool Resize(const Vector2ui& dimensions);
bool Process(const SceneData& sceneData, unsigned int firstWorkTexture, unsigned int secondWorkTexture) const override;
bool Resize(const Vector2ui& dimensions) override;
protected:
struct ShaderUniforms;

View File

@@ -28,7 +28,7 @@ namespace Nz
bool IsLightMeshesDrawingEnabled() const;
bool Process(const SceneData& sceneData, unsigned int firstWorkTexture, unsigned int secondWorkTexture) const;
bool Process(const SceneData& sceneData, unsigned int firstWorkTexture, unsigned int secondWorkTexture) const override;
protected:
LightUniforms m_directionalLightUniforms;

View File

@@ -24,9 +24,9 @@ namespace Nz
public:
TextureBackground(TextureRef texture = TextureRef());
void Draw(const AbstractViewer* viewer) const;
void Draw(const AbstractViewer* viewer) const override;
BackgroundType GetBackgroundType() const;
BackgroundType GetBackgroundType() const override;
inline const TextureRef& GetTexture() const;
inline void SetTexture(TextureRef texture);

View File

@@ -15,7 +15,7 @@ namespace Nz
{
public:
MixerBase();
~MixerBase() = default;
virtual ~MixerBase() = default;
virtual float Get(float x, float y, float scale) const = 0;
virtual float Get(float x, float y, float z, float scale) const = 0;

View File

@@ -19,7 +19,7 @@ namespace Nz
{
public:
NoiseBase(unsigned int seed = 0);
~NoiseBase() = default;
virtual ~NoiseBase() = default;
virtual float Get(float x, float y, float scale) const = 0;
virtual float Get(float x, float y, float z, float scale) const = 0;

View File

@@ -35,15 +35,22 @@ namespace Nz
friend RigidBody2D;
public:
Collider2D() = default;
inline Collider2D();
Collider2D(const Collider2D&) = delete;
Collider2D(Collider2D&&) = delete;
virtual ~Collider2D();
virtual float ComputeInertialMatrix(float mass) const = 0;
inline unsigned int GetCollisionId() const;
virtual ColliderType2D GetType() const = 0;
inline bool IsTrigger() const;
inline void SetCollisionId(unsigned long typeId);
inline void SetTrigger(bool trigger);
Collider2D& operator=(const Collider2D&) = delete;
Collider2D& operator=(Collider2D&&) = delete;
@@ -53,6 +60,12 @@ namespace Nz
protected:
virtual std::vector<cpShape*> CreateShapes(RigidBody2D* body) const = 0;
bool m_trigger;
unsigned int m_collisionId;
private:
virtual std::vector<cpShape*> GenerateShapes(RigidBody2D* body) const;
static Collider2DLibrary::LibraryMap s_library;
};

View File

@@ -7,6 +7,32 @@
namespace Nz
{
inline Collider2D::Collider2D() :
m_collisionId(0),
m_trigger(false)
{
}
inline unsigned int Collider2D::GetCollisionId() const
{
return m_collisionId;
}
inline bool Collider2D::IsTrigger() const
{
return m_trigger;
}
inline void Collider2D::SetCollisionId(unsigned long typeId)
{
m_collisionId = typeId;
}
inline void Collider2D::SetTrigger(bool trigger)
{
m_trigger = trigger;
}
inline const Rectf& BoxCollider2D::GetRect() const
{
return m_rect;
@@ -82,3 +108,4 @@ namespace Nz
}
#include <Nazara/Physics2D/DebugOff.hpp>
#include "Collider2D.hpp"

View File

@@ -10,14 +10,26 @@
#include <Nazara/Prerequesites.hpp>
#include <Nazara/Math/Vector2.hpp>
#include <Nazara/Physics2D/Config.hpp>
#include <memory>
#include <unordered_map>
struct cpCollisionHandler;
struct cpSpace;
namespace Nz
{
class RigidBody2D;
class NAZARA_PHYSICS2D_API PhysWorld2D
{
using ContactEndCallback = void(*)(PhysWorld2D& world, RigidBody2D& bodyA, RigidBody2D& bodyB, void* userdata);
using ContactPreSolveCallback = bool(*)(PhysWorld2D& world, RigidBody2D& bodyA, RigidBody2D& bodyB, void* userdata);
using ContactPostSolveCallback = void(*)(PhysWorld2D& world, RigidBody2D& bodyA, RigidBody2D& bodyB, void* userdata);
using ContactStartCallback = bool(*)(PhysWorld2D& world, RigidBody2D& bodyA, RigidBody2D& bodyB, void* userdata);
public:
struct Callback;
PhysWorld2D();
PhysWorld2D(const PhysWorld2D&) = delete;
PhysWorld2D(PhysWorld2D&&) = delete; ///TODO
@@ -27,8 +39,10 @@ namespace Nz
cpSpace* GetHandle() const;
float GetStepSize() const;
void RegisterCallbacks(unsigned int collisionId, const Callback& callbacks);
void RegisterCallbacks(unsigned int collisionIdA, unsigned int collisionIdB, const Callback& callbacks);
void SetGravity(const Vector2f& gravity);
void SetSolverModel(unsigned int model);
void SetStepSize(float stepSize);
void Step(float timestep);
@@ -36,7 +50,19 @@ namespace Nz
PhysWorld2D& operator=(const PhysWorld2D&) = delete;
PhysWorld2D& operator=(PhysWorld2D&&) = delete; ///TODO
struct Callback
{
ContactEndCallback endCallback;
ContactPreSolveCallback preSolveCallback;
ContactPostSolveCallback postSolveCallback;
ContactStartCallback startCallback;
void* userdata;
};
private:
void InitCallbacks(cpCollisionHandler* handler, const Callback& callbacks);
std::unordered_map<cpCollisionHandler*, std::unique_ptr<Callback>> m_callbacks;
cpSpace* m_handle;
float m_stepSize;
float m_timestepAccumulator;

View File

@@ -9,6 +9,7 @@
#include <Nazara/Prerequesites.hpp>
#include <Nazara/Core/Enums.hpp>
#include <Nazara/Core/Signal.hpp>
#include <Nazara/Math/Matrix4.hpp>
#include <Nazara/Math/Quaternion.hpp>
#include <Nazara/Math/Rect.hpp>
@@ -43,6 +44,7 @@ namespace Nz
float GetMass() const;
Vector2f GetPosition() const;
float GetRotation() const;
void* GetUserdata() const;
Vector2f GetVelocity() const;
bool IsMoveable() const;
@@ -54,11 +56,15 @@ namespace Nz
void SetMassCenter(const Vector2f& center);
void SetPosition(const Vector2f& position);
void SetRotation(float rotation);
void SetUserdata(void* ud);
void SetVelocity(const Vector2f& velocity);
RigidBody2D& operator=(const RigidBody2D& object);
RigidBody2D& operator=(RigidBody2D&& object);
NazaraSignal(OnRigidBody2DMove, RigidBody2D* /*oldPointer*/, RigidBody2D* /*newPointer*/);
NazaraSignal(OnRigidBody2DRelease, RigidBody2D* /*rigidBody*/);
private:
void Create(float mass = 1.f, float moment = 1.f);
void Destroy();
@@ -66,6 +72,7 @@ namespace Nz
std::vector<cpShape*> m_shapes;
Collider2DRef m_geom;
cpBody* m_handle;
void* m_userData;
PhysWorld2D* m_world;
float m_gravityFactor;
float m_mass;

View File

@@ -18,7 +18,7 @@ namespace Nz
UberShaderInstancePreprocessor(const Shader* shader);
virtual ~UberShaderInstancePreprocessor();
bool Activate() const;
bool Activate() const override;
};
}

View File

@@ -29,7 +29,7 @@ namespace Nz
UberShaderPreprocessor() = default;
~UberShaderPreprocessor();
UberShaderInstance* Get(const ParameterList& parameters) const;
UberShaderInstance* Get(const ParameterList& parameters) const override;
void SetShader(ShaderStageType stage, const String& source, const String& shaderFlags, const String& requiredFlags = String());
bool SetShaderFromFile(ShaderStageType stage, const String& filePath, const String& shaderFlags, const String& requiredFlags = String());

View File

@@ -8,7 +8,8 @@
namespace Nz
{
inline EventHandler::EventHandler(const EventHandler&)
inline EventHandler::EventHandler(const EventHandler& other) :
HandledObject(other)
{
}

View File

@@ -78,18 +78,18 @@ namespace Nz
bool FlipVertically();
const UInt8* GetConstPixels(unsigned int x = 0, unsigned int y = 0, unsigned int z = 0, UInt8 level = 0) const;
unsigned int GetDepth(UInt8 level = 0) const;
PixelFormatType GetFormat() const;
unsigned int GetHeight(UInt8 level = 0) const;
UInt8 GetLevelCount() const;
UInt8 GetMaxLevel() const;
std::size_t GetMemoryUsage() const;
std::size_t GetMemoryUsage(UInt8 level) const;
unsigned int GetDepth(UInt8 level = 0) const override;
PixelFormatType GetFormat() const override;
unsigned int GetHeight(UInt8 level = 0) const override;
UInt8 GetLevelCount() const override;
UInt8 GetMaxLevel() const override;
std::size_t GetMemoryUsage() const override;
std::size_t GetMemoryUsage(UInt8 level) const override;
Color GetPixelColor(unsigned int x, unsigned int y = 0, unsigned int z = 0) const;
UInt8* GetPixels(unsigned int x = 0, unsigned int y = 0, unsigned int z = 0, UInt8 level = 0);
Vector3ui GetSize(UInt8 level = 0) const;
ImageType GetType() const;
unsigned int GetWidth(UInt8 level = 0) const;
Vector3ui GetSize(UInt8 level = 0) const override;
ImageType GetType() const override;
unsigned int GetWidth(UInt8 level = 0) const override;
bool HasAlpha() const;
@@ -126,9 +126,9 @@ namespace Nz
void SetLevelCount(UInt8 levelCount);
bool SetPixelColor(const Color& color, unsigned int x, unsigned int y = 0, unsigned int z = 0);
bool Update(const UInt8* pixels, unsigned int srcWidth = 0, unsigned int srcHeight = 0, UInt8 level = 0);
bool Update(const UInt8* pixels, const Boxui& box, unsigned int srcWidth = 0, unsigned int srcHeight = 0, UInt8 level = 0);
bool Update(const UInt8* pixels, const Rectui& rect, unsigned int z = 0, unsigned int srcWidth = 0, unsigned int srcHeight = 0, UInt8 level = 0);
bool Update(const UInt8* pixels, unsigned int srcWidth = 0, unsigned int srcHeight = 0, UInt8 level = 0) override;
bool Update(const UInt8* pixels, const Boxui& box, unsigned int srcWidth = 0, unsigned int srcHeight = 0, UInt8 level = 0) override;
bool Update(const UInt8* pixels, const Rectui& rect, unsigned int z = 0, unsigned int srcWidth = 0, unsigned int srcHeight = 0, UInt8 level = 0) override;
Image& operator=(const Image& image);

View File

@@ -35,7 +35,7 @@ namespace Nz
void SetName(const String& name);
private:
void InvalidateNode();
void InvalidateNode() override;
void UpdateSkinningMatrix() const;
Matrix4f m_inverseBindMatrix;

View File

@@ -29,13 +29,13 @@ namespace Nz
void Destroy();
const Boxf& GetAABB() const override;
AnimationType GetAnimationType() const final;
AnimationType GetAnimationType() const final override;
const IndexBuffer* GetIndexBuffer() const override;
VertexBuffer* GetVertexBuffer();
const VertexBuffer* GetVertexBuffer() const;
unsigned int GetVertexCount() const override;
bool IsAnimated() const final;
bool IsAnimated() const final override;
bool IsValid() const;
void SetAABB(const Boxf& aabb);

View File

@@ -32,13 +32,13 @@ namespace Nz
bool GenerateAABB();
const Boxf& GetAABB() const override;
AnimationType GetAnimationType() const final;
AnimationType GetAnimationType() const final override;
const IndexBuffer* GetIndexBuffer() const override;
VertexBuffer* GetVertexBuffer();
const VertexBuffer* GetVertexBuffer() const;
unsigned int GetVertexCount() const override;
bool IsAnimated() const final;
bool IsAnimated() const final override;
bool IsValid() const;
void SetAABB(const Boxf& aabb);