Subversion Repository Public Repository

Divide-Framework

This repository has no backups
This repository's network speed is throttled to 100KB/sec

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#include "Headers/MathClasses.h"
#include "Headers/Quaternion.h"

namespace Divide {
namespace Util {
    vec4<U8> toByteColor(const vec4<F32>& floatColor) {
        return vec4<U8>(static_cast<U8>(floatColor.r * 255),
                        static_cast<U8>(floatColor.g * 255), 
                        static_cast<U8>(floatColor.b * 255),
                        static_cast<U8>(floatColor.a * 255));
    }

    vec3<U8> toByteColor(const vec3<F32>& floatColor) {
        return vec3<U8>(static_cast<U8>(floatColor.r * 255), 
                        static_cast<U8>(floatColor.g * 255), 
                        static_cast<U8>(floatColor.b * 255));
    }

    vec4<F32> toFloatColor(const vec4<U8>& byteColor) {
        return vec4<F32>(static_cast<F32>(byteColor.r / 255),
                         static_cast<F32>(byteColor.g / 255), 
                         static_cast<F32>(byteColor.b / 255), 
                         static_cast<F32>(byteColor.a / 255));
    }

    vec3<F32> toFloatColor(const vec3<U8>& byteColor) {
        return vec3<F32>(static_cast<F32>(byteColor.r / 255), 
                         static_cast<F32>(byteColor.g / 255), 
                         static_cast<F32>(byteColor.b / 255));
    }

    void normalize(vec3<F32>& inputRotation, bool degrees, bool normYaw, bool normPitch, bool normRoll) {
        if (normYaw) {
            F32 yaw = degrees ? RADIANS(inputRotation.yaw) : inputRotation.yaw;
            if (yaw < -M_PI) {
                yaw = fmod(yaw, M_PI * 2.0f);
                if (yaw < -M_PI) {
                    yaw += M_PI * 2.0f;
                }
                inputRotation.yaw = DEGREES(yaw);
            } else if(yaw >M_PI) {
                yaw = fmod(yaw, M_PI * 2.0f);
                if (yaw > M_PI) {
                    yaw -= M_PI * 2.0f;
                }
                inputRotation.yaw = degrees ? DEGREES(yaw) : yaw;
            }
        }
        if (normPitch) {
            F32 pitch = degrees ? RADIANS(inputRotation.pitch) : inputRotation.pitch;
            if (pitch < -M_PI) {
                pitch = fmod(pitch, M_PI * 2.0f);
                if(pitch < -M_PI)
                {
                    pitch += M_PI * 2.0f;
                }
                inputRotation.pitch = DEGREES(pitch);
            } else if(pitch > M_PI) {
                pitch = fmod(pitch,M_PI * 2.0f);
                if (pitch > M_PI) {
                    pitch -= M_PI * 2.0f;
                }
                inputRotation.pitch = degrees ? DEGREES(pitch) : pitch;
            }
        }
        if(normRoll) {
            F32 roll= degrees ? RADIANS(inputRotation.roll) : inputRotation.roll;
            if (roll < -M_PI) {
                roll = fmod(roll, M_PI * 2.0f);
                if(roll < -M_PI)
                {
                    roll += M_PI * 2.0f;
                }
                inputRotation.roll = DEGREES(roll);
            } else if(roll > M_PI) {
                roll = fmod(roll, M_PI * 2.0f);
                if (roll > M_PI) {
                    roll -= M_PI * 2.0f;
                }
                inputRotation.roll = degrees ? DEGREES(roll) : roll;
            }
        }
    }
}
}; //namespace Divide

Commits for Divide-Framework/trunk/Source Code/Core/Math/MathHelper.cpp

Diff revisions: vs.
Revision Author Commited Message
331 Diff Diff IonutCava picture IonutCava Sat 06 Dec, 2014 20:53:45 +0000

[Ionut]
- Limited line length to 132 characters to improve readability and diff-comparisons
- Refactored memory allocation/deallocation functions
- Fixed a few compatibility issues with HashMap.h
- Fixed a bug in GPU Skinning shaders (cast a float to int)

328 Diff Diff IonutCava picture IonutCava Sat 04 Oct, 2014 18:03:36 +0000

[Ionut]
- Added per SceneGraphNode material instances. (Cloned from the SceneNode’s material)
- Improved shader loading for materials

318 Diff Diff IonutCava picture IonutCava Sat 30 Aug, 2014 17:35:53 +0000

[Ionut]
- Wrapped the entire code in a “Divide” namespace
- VertexBuffers now call “shrink_to_fit” on all internal data storage
- Improved some vector performance by preferring “emplace_back” instead of “push_back” + proepr usage of reserve / resize
- Wrapped OIS specific types and classes in Divide::Input namespace
- Added the messageBox.layout file (forgot it in the previous few commits)

241 Diff Diff k1ngp1n picture k1ngp1n Sun 02 Feb, 2014 22:07:51 +0000

[Ionut] [[BR]]
- Implemented a basic ThirdPerson camera [[BR]]
— Does not limit rotations yet [[BR]]
— Does not have on click and drag functionality yet [[BR]]

196 Diff Diff k1ngp1n picture k1ngp1n Tue 03 Dec, 2013 14:35:29 +0000

[Ionut] - experimental revision. stability not guaranteed[[BR]]
- Compile and bug fixes, both GLSL and C++ [[BR]]
- FBO updates and optimizations [[BR]]
- LightManager light selection fixed [[BR]]
- Updated the transform class to take all parent nodes in account [[BR]]
- SkinnedSubMeshes can now be queried about the transform of a specific bone by name [[BR]]
— This allows the binding of a node to a certain part of a skinned mesh (weapons, lights, etc) and adjusting their position based on the current animation frame[[BR]]
— PointLight added to Bob’s Lamp in WarScene (but disabled for now as not all transforms needed are fully implemented) [[BR]]
- CubeMap shadow rendering fixed[[BR]]

152 Diff Diff k1ngp1n picture k1ngp1n Thu 20 Jun, 2013 14:23:31 +0000

[Ionut] [[BR]]
- New rendering pipeline (experimental and unstable): [[BR]]
— OpenGL 3.x clean context (glLight commands are still used for now, but UBO support is there, but not used yet) [[BR]]
— Custom matrix stacks and UBO based shader data (UBOs cause some link errors on some nVidia cards)[[BR]]
— Multi-threaded texture loading and shader compilation (mt shader compilation disabled for now. needs more tests) [[BR]]
— VAO rendering is self contained (no more enable/disable calls before a draw request) [[BR]]
— Render instance class used for rendering information [[BR]]
[[BR]]
- New unique ID generation base class: GUIDWrapper. Each class that derives from this, gets an application wide unique id on construction [[BR]]
- Added base code for an in-game editor using CEGUI [[BR]]
- Replaced some mutex locks with lockless data structures or atomic data [[BR]]
- CEGUI 0.8.2, FTGL-GL3 and GLIM 0.4 modified to support GLEW_MX if defined [[BR]]
- Dropped VS2008 support [[BR]]
- Networking library, server framework and ReCast files are now projects inside the Divide Framework solution [[BR]]
- New console command “setFov” that modifies the horizontal FoV value in realtime [[BR]]
- New console command “recompileShader” that reparses shader files, recompiles shaders and relinks shader programs who’s names match or contain the argument string [[BR]]
- New debug utility: axis angle drawn in corner of the screen if needed [[BR]]
- More ‘const’-s pasted around the code, more loop performance tweaks (allocations before a loop, tighter loops, etc), more utility member functions added to various classes [[BR]]

111 k1ngp1n picture k1ngp1n Tue 08 May, 2012 21:49:31 +0000

[Ionut] [[BR]]
-Added animation support based on Scott Lee’s animation loader library added a few revision’s back [[BR]]
--Added cached skeleton rendering to the library [[BR]]
--Added cached AABB transformations based on current animation frame [[BR]]
--Scene animators are added per submesh and only processed if said submesh is visible and only in the rendering stage: FINAL_STAGE [[BR]]
[[BR]]
-Added support for shader-based VBO data upload (glVertexAttribPointer) with full backwards compatibility to old method (glTexCoordPointer)[[BR]]
-Added support for Index Buffer Object (improper name) indice upload for VBO’s with full backwards compatibility to old method [[BR]]
-Reworked coordination class to better handle AIEntity teams [[BR]]
-Added “updateSceneState(currentTime)” callback that is called once per frame (used for animation update)[[BR]]
-Added “initializeAI/deinitializeAI” scene callbacks for AI creation/destruction [[BR]]
-Templatized the Quaternion class [[BR]]
-Added a “drawLines” subroutine to the rendering api[[BR]]
-Disabled tree loading in MainScene as current ASSIMP implementation is slow. Will be restored after backing and loading models to own format is added in next revision [[BR]]
-Other various small performance tweaks [[BR]]