Proposals for Quimera Engine
The version of the browser you are using is no longer supported. Please upgrade to a supported browser.Dismiss

Comment only
Proposals for Quimera Engine
This board shows a list of proposals made by team members or users with the aim of evaluating them and including them into the development process as new features
OriginLinkProposalDescription / MotivationTypeAcceptedDetailsPriorityProposal dateLast modificationTask
1InternalHandler mode for QFixedArray, at leastInstead of reserving memory and copying an input array, it would be useful to be able to just handle an existing C-style array, without reserving any additional piece of memory.Development*High7/11/20147/11/2014
2InternalQStringUnicode::LastIndexOfAdd the LastIndexOf method, already implemented in QPath.DevelopmentHigh7/11/20147/11/2014650 - QStringUnicode 024
3InternalCopy the code from the CRT to our global deleteWe have to take a look to the code written in any of the CRT implementations and do the same in our version of the global delete operator.DevelopmentHigh7/11/20147/11/2014609 - Preserving original functionality in global delete
4InternalMove every ToString method from the data types to QStringUnicodeSQInteger, SQFloat, SQBoolean and SQVF32 use the ToString method to convert a basic type to a string, It would be more usable to move these conversions to constructors of the QStringUnicode class. This way, when concatenating values in a string (for example, when mixing basic types and strings in a log message) conversions are made implicitly, being much easy for a user to write such sentences. This avoid the necessity of including headers for basic type classes.DevelopmentHigh7/11/20147/11/2014610 - Move ToString method from basic data types to QStringUnicode constructor
5InternalUse default values for some parameters in QStringUnicode's methodsIt's very annoying having to provide an enumeration value to every method that performs comparisons. It would be better to use a default value, E_BinaryCaseSensitive for example.DevelopmentHigh7/11/20147/11/2014611 - Use default values for some parameters in QStringUnicode's methods
6InternalTransform some containers' methods into templatesThose containers' methods that receive iterators that may point to different containers should be transformed into template methods, using the current implementation as a specialization. For example, QList::AddRange should be a template so any iterator of other container type can be used.DevelopmentHigh7/11/20147/11/2014612 - Transform some containers' methods into templates
7InternalSQFloat::ToString(f64)Divide the current implementation into two overloads (f32 y f64) so the user can call whichever he needs. Since this method is going to be moved to QStringUnicode, add this overload to that task.DevelopmentHigh7/11/20147/11/2014
8InternalAdd tests for positive values for QStringUnicode::ToFloatThere are missing tests for the case of positive numbers with a plus sign.DevelopmentHigh7/11/20147/11/2014613 - Test positive input values of QStringUnicode::ToFloat
9InternalMake the parameter of type QTimeZone* mandatory in QDateTime constructorsThere is a problem with QDateTime's constructors, they are sometimes ambiguous since the QTimeZone pointer is treated as an integer when passing null, so the wrong overload is called)DevelopmentHigh7/11/20147/11/2014614 - Make the parameter of type QTimeZone* mandatory in QDateTime constructors
10InternalAdd operator= to Math classesCurrently, they only have an overload for the base class.DevelopmentHigh7/11/20147/11/2014615 - Add operator= to Math classes
11InternalAdd GetContainer to iteratorsThe property would return a constant pointer to the container it is iterating trough.DevelopmentHigh7/11/20147/11/2014616 - Add GetContainer to iterators
12InternalReplace the preprocessor definition _DEBUG with !NDEBUGThe NDEBUG definition is standard whereas _DEBUG is not.DevelopmentHigh7/11/20147/11/2014617 - Replace the preprocessor definition _DEBUG with !NDEBUG
13InternalConfigure Visual Studio projects and makefiles to use multiple coresIn order to speed up compilation times we should enable this options. See - Configure Visual Studio projects use multiple cores
14InternalConfigure makefiles and CodeLite projects to ignore warnings from external librariesEvery time the engine is compiled, thousands of warnings coming from Boost libraries make the compilation results useless.DevelopmentHigh7/11/20147/11/2014619 - Configure CodeLite projects to ignore warnings from external libraries
15Internal to calculate intersections among triangles and among a plane and a triangleThe methods would belong to QTriangle, or to QTriangle2D and QTriangle3D, depending on what's possible, and would imitate existing ones: Intersection() and IntersectionPoint()Development*Low24/10/201324/10/2013
16Internal and IsPerpendicularTo(). Methods that would belong to vectors (QVector2, QVector3 and QVector4) and to the plane (QPlane), and that would indicate whether they are parallel or perpendicular to each one. Development*Low24/10/201324/10/2013
17InternalProvide a way to pass a buffer to containersCurrently, every container uses its own allocator which stores and releases memory. It should be possible to use containers in a "fixed" (no reallocation possible) way using an external buffer so one allocator can manage the memory utilized by containers. One possible way to do this could be providing a buffer, a delegate to an Allocate function and other to a Deallocate function in the constructor of the container; then the buffer would be stored in the internal allocator and, when a reallocation was necessary, the container would check whether it has to ask the allocator or the external allocator and, in the latter case, it would call the Allocate delegate to get the new chunk and then it would call the Deallocate delegate to release the previous block after the copy.Development*Low7/11/20147/11/2014
18InternalAdd some overloads of some containers' methods that would receibe a delegateSome methods of the containers make comparisons using the internal comparator. It may be useful to be able to avoid using the comparator and use a function passed as a parameter, Add some overloads for this purpose.Development*Low7/11/20147/11/2014
19InternalQStringAsciiInstead of using the std::string class for ASCII strings, the engine should provide a class with a interface similar to QStringUnicode. Development*Low9/05/20149/05/2014
20InternalQDateTime::GetDayOfTheYear(). QDateTime should provide a way to calculate the position of a concrete day in the entire year (from 1 to 365). DevelopmentLow9/05/20149/05/2014620 - QDateTime::GetDayOfTheYear()
21Internal, GetRotation and GetScale for QTransformationMatrix.Obtain QRotationMatrix, QTranslationMatrix or QScalingMatrix, one at a time, through GetTranslation, GetRotation and GetScale. Currently it's only possible using the Decompose method. DevelopmentThis feature will be necessary for sure.Low24/10/201324/10/2013621 - GetTranslation, GetRotation and GetScale for QTransformationMatrix
22Internal[] for accessing the components of vectors, quaternions and matricesAdd operator[] for QBaseVector2, QBaseVector3, QBaseVector4, QBaseQuaternion, QBaseMatrix2x2, QBaseMatrix3x3, QBaseMatrix4x3, QBaseMatrix3x4 y QBaseMatrix4x4. It allows to access all class the members sequentially, avoiding the use of pointer arithmetic (more readability and less code). DevelopmentIt shall be useful when copying information from external sources. Low24/10/201324/10/2013622 - Operator[] for accessing the components of vectors, quaternions and matrices
23Internal its name suggests, it would return a point with the location of the hexahedron's centerDevelopmentIt's a simple operation and could improve the readability of the client code. Low24/10/201324/10/2013623 - QHexahedron::GetCenter()
24Internal Add the Lerp method to SQFloat. It would receive 2 numbers between which to interpolate and a number that indicates to which of both will the result tend, being 0.0 one end and 1.0 the other. DevelopmentAt least it would be useful in the client code for calculating configuration values, and inside the engine for calculating the degree of progress in the animations, etc.Low24/10/201324/10/2013624 - SQFloat::Lerp()
25Internal or QPlane::SpaceRelation(vector). It would calculate the spacial relation among a plane and a point, i. e. whether the point is in one side, in the other, or contained in the plane. DevelopmentA very demanded feature. It could be used to simplify parts of the already written code. Low24/10/201324/10/2013625 - QPlane::SpaceRelation(vector)
26Internal same as QRay2D::Reflection but in the three-dimensional space. It could be useful for calculating trajectories. DevelopmentLow24/10/201324/10/2013626 - QRay3D::Reflection()
27Internal IsNull method for QPlane, which would return True in the case A, B and C components were zero. DevelopmentIt would help to simplify many comparisonsLow24/10/201324/10/2013627 - QPlane::IsNull()
28InternalQUri::ValidateAdd a method to validate a Uri.DevelopmentLow7/11/20147/11/2014628 - QUri::Validate
29InternalAdd Constructor and ToString overload to QDateTime that receive a timestamp patternCurrently, there is a constructor that receives a string that must have a concrete format, and the ToString method always prints the date and time in the same way. It would be useful to be able to specify the order in which every part appears in the string.DevelopmentLow7/11/20147/11/2014629 - Add Constructor and ToString overload to QDateTime that receive a timestamp pattern
30InternalAdd a constructor for QStringUnicode that receives a wchar_tThis constructor would be different from which receives a char*, since the concept is different. Char* is treated as bytes (the u8_q type is used) adn whcar_t* should be recognized directly as text of 16 or 32 bits.DevelopmentLow7/11/20147/11/2014630 - Add a constructor for QStringUnicode that receives a wchar_t
31InternalMoveFirst and MoveLast should return an iteratorThe MoveFirst and MoveLast methods of iterators should return a refernce to the iterator itself so it is possible to concatenate operations.DevelopmentLow7/11/20147/11/2014631 - MoveFirst and MoveLast should return an iterator
32InternalAdd GetNext and GetPrevious to QNTreeAdding GetNext and GetPrevious to QNTree allows to get the previous and the next brother node of a given node in the tree. This is not so practical unless you want to use your own traversing algorithm.DevelopmentLow7/11/20147/11/2014632 - Add GetNext and GetPrevious to QNTree
33InternalAdd methods to obtain the parent and the children of a node in QBinarySearchTreeThis feature only makes sense if the user wants to traverse the tree in a custom manner.DevelopmentLow7/11/20147/11/2014633 - Add methods to obtain the parent and the children of a node in QBinarySearchTree
34InternalAdd method to calculate the alignment adjustmentThis method could be added as a static method in QAlignment.DevelopmentLow7/11/20147/11/2014634 - Add method to calculate the alignment adjustment
35InternalAdd operator+ and operator- to iteratorsBoth operators should receive an unsigned integer so the iterator is moved back or forth, returning a copy.DevelopmentLow7/11/20147/11/2014635 - Add operator+ and operator- to iterators
36Internal functions to calculate parabolas and hyperbolas. The functions would receive the necessary data to calculate them and would return a result. It could be useful to calculate trajectories. DevelopmentXA proposal like this already exists.Low24/10/201324/10/2013
37InternalSQTimeZoneFactory should be extensibleThe SQTimeZoneFactory class should allow users to add new time zones to the internal database. DevelopmentLow9/05/20149/05/2014
38InternalConfiguration files should use some kind of version system. As new versions of Quimera Engine are released, configuration files have to be upgraded to new formats. We should think of a system to make this upgrades as easy as possible. A converter will be implemented for every new version so the configuration loader will be backward compatible. DevelopmentLow2/02/20142/02/2014
39Internal Release-Debug configurationAbout adding another compilation configuration, like a mixture of Debug and Release, with the aim of being able to reproduce problems found in Release version having more debugging tools. DevelopmentLow7/01/20137/01/2013
40Internal whose angles are all right. It consists of 6 planes to accelerate certain calculations in concrete situations (oct-trees). DevelopmentLow24/10/201324/10/2013
41Internal whose angles are all right and which would be defined by a width, height and center, in the two-dimensional space. It could be useful to improve the performance in certain processes (it occupies less than QQuadrilateral and some operations are simpler if assuming a special case like this). DevelopmentLow24/10/201324/10/2013
42Internal regular polygon (N > 2) in the two- or three-dimensional space. It could be useful for final users or for building complex figures. DevelopmentLow24/10/201324/10/2013
43Internal or ResizeToFit or Circunscript methods in the QSphere and QCircle classes. They would receive an array of points or some dimensions and would resize the circle or sphere in order to contain all the points. DevelopmentLow24/10/201324/10/2013
44Internal with configurable widthMake ToString of SQFloat returnan exact length, filling the decimals with zeroesDevelopmentLow24/10/201324/10/2013
45Internal It's possible that we need to know when a quaternion is the identity. DevelopmentLow24/10/201324/10/2013
46Internal in the three-dimensional spaceDevelopmentLow24/10/201324/10/2013
47Internal and QEllipse3DAn ellipse in the two-dimensional or three-dimensional space, defined by a center, an height and a witdh. DevelopmentLow24/10/201324/10/2013
48Internal quadrilateral in the three-dimensional space. It would avoid calculations with triangles. DevelopmentLow24/10/201324/10/2013
49Internal and QArc3DAn arc in the two- or three-dimensional space. It could be very useful to calculate trajectories or visibilityDevelopmentLow24/10/201324/10/2013
50Internal and QParabola3DA parabola in the two- or three-dimensional space. It could be very useful to calculate trajectories. Having the data that defines the parabola, one could simply ask for the next value for the parameter value X. DevelopmentLow24/10/201324/10/2013
51Internal and QHiperbola3DA hyperbola in the two- or three-dimensional space. Having the data that defines the hyperbola, one could simply ask for the next value for the parameter value X. DevelopmentLow24/10/201324/10/2013
52Internal cone defined by the center of the base, its radius and a vertex. It could be useful to calculate collisionsDevelopmentLow24/10/201324/10/2013
53Internal cylinder defined by the center of the base, its rqdius and a vector whose module is the height and its direction is the central axis of the cylinder. It could be useful to calculate collisions. DevelopmentLow24/10/201324/10/2013
54Internal for QHexahedron and QQuadrilateral to create cubes and squaresThe constructor would receive one number that would indicate the length of the edge of the equilateral figure to be constructed. DevelopmentLow24/10/201324/10/2013
55Internal and assignation methods that ignore W. Methods for QVector4, apart from the existing operators, what would ignore the W component. DevelopmentLow24/10/201324/10/2013
56Internal Method to obtain the sign of a floating point number. It would return 1, 0 or -1. DevelopmentLow24/10/201324/10/2013
57InternalHeader file to include all header filesProvide an optional header file that includes all header files of Quimera Engine, so all types are available. This could be used by people learning to use the engine since it is very annoying to have to search for the necessary files to include in order to use certain types you do not ever know yet.DevelopmentLow24/08/201424/08/2014
58InternalHeader file to open all namespacesProvide an optional header file that includes using statements for all namespaces of Quimera Engine, so all types are available directly. This could be used by people learning to use the engine so it is easier to discover existing types just by searching on the Intellisense list. DevelopmentLow24/08/201424/08/2014
59InternalQUndirectedCyclicGraphA class that represents an undirected cyclic graph that could be useful to organize scenes, for example.DevelopmentLow7/11/20147/11/2014
60InternalCreate a class similar to QStopWatch that measures the thread timeQStopWatch measures the real time, no matter how long the thread is sleeping. The proposed class should take into account such pauses.DevelopmentLow7/11/20147/11/2014
61InternalBreak dependency between string and enumerationsCurrently, QStringUnicode depends on some enumerations and enumerations depend on QStringUnicode (ToString). Due to this situation, it is not possible to add some enumeration's headers in the QStringUnicode.h file.DevelopmentLow7/11/20147/11/2014
62InternalAdd a changelog to the wiki.It would be useful to add a list of the last changes made to any of the wiki articles.This could be enough: Tools*Medium24/10/201324/10/2013
63InternalOptional parameters in treesSome methods of QNTree and QBinarySearchTree receive an enumertor to know the traversal order of the resultant iterator. This reduces the usability of such methods and could be avoided by using default values. Should we use overloads that do not return an iterator instead?Development*Medium7/11/20147/11/2014
64InternalMake SQAnyTypeToStringConverter work with enumerationsThe idea is to be able to call the ToString method of any enumeration from the Convert method of SQAnyTypeToStringConverter. To achieve this, enumerations could inherit from a common class and fill the internal dictionary in the derived class' constructor. The dictionary would have to be of type u-int and some conversions would be necessary in the middle.Development*Medium7/11/20147/11/2014
65InternalQHashString Copying and comparing string may be expensive. To improve the performance, hashed strings could be used instead of common strings. They would be immutable and stored in a hash table, in a kind of string pool, so they are compared by their hash code and only that hash code would be copied from one string to another. This type could be used for managing textual IDs of entities in special collections. DevelopmentMedium9/05/20149/05/2014
66InternalQUri::HasScheme, HasHostname, etc.Add methods to check whether the URI contains certain parts.DevelopmentMedium7/11/20147/11/2014649 - QUri 002
67InternalAdapt code to underscore prefix in non-public methods conventionIt is necessary to adapt all the existing code to the new convention, adding an underscore to every non-pubic method.DevelopmentMedium7/11/20147/11/2014636 - Adapt code to underscore prefix in non-public methods convention
68InternalAdd artifact to be able to read strings easily when debuggingCurrently, it's very hard to see what's the value of a QStringUnicode instance when debugging. If we could create a class that made this easier. QStringDebugger maybe?DevelopmentMedium7/11/20147/11/2014637 - Add artifact to be able to read strings easily when debugging
69InternalForEach method in containersAdd a method called ForEach that receives a delegate that will be called for each element which will be passed as argument.DevelopmentMedium7/11/20147/11/2014638 - ForEach method in containers
70InternalGetAllocator should return a referenceThe GetAllocartor method of containers should return a reference to the allocator instead of a pointerDevelopmentMedium7/11/20147/11/2014639 - GetAllocator should return a reference
71InternalAdd iterator's container checking in container methodsIt would be useful to check whether an input iterator is pointing to the resident container or not, as an assertion.DevelopmentMedium7/11/20147/11/2014640 - Add iterator's container checking in container methods
72InternalQNTree::GetMaximumChildrenAdd a method to know what's the maximum number of children per node in a QNTree.DevelopmentMedium7/11/20147/11/2014641 - QNTree::GetMaximumChildren
73InternalChange the type of the QStringUnicode::PATTERN_NOT_FOUND constant to unsignedThe constant is currently an int, -1 concretely. In order to be able to cover a wider range of positive numbers, it sould be converted to an unsigned integer, whose value is the same, the maximum unsigned value.DevelopmentMedium7/11/20147/11/2014642 - Change the type of the QStringUnicode::PATTERN_NOT_FOUND constant to unsigned
74InternalAdd constructor to QUri for all partsThe constructor would receive all the parts that form a complete URI.DevelopmentMedium7/11/20147/11/2014643 - Add constructor to QUri for all parts
75InternalWarnings clean-upIt is necessary to solve all the warnings we can.DevelopmentMedium7/11/20147/11/2014644 - Warnings clean-up 001
76InternalMigrate the Test Automation Tool to CodeLiteIt is mandatory to perform the migration of the TAT to CodeLite so it can be used both on Linux and on Mac.ToolsMedium7/11/20147/11/2014645 - Migrate the Test Automation Tool to CodeLite
77InternalQPoolAllocator should receive another buffer for the free block listCurrently, QPoolAllocator only receives an external buffer for the pool, and stores the free block list in another part using the heap. Since this is not an optimized version of a pool allocator, that list cannot be embedded into the pool. The other buffer should be aligned depending on the architecture. A method to calculate the necessary space for this extra buffer would be necessaryDevelopmentMedium7/11/20147/11/2014646 - QPoolAllocator should receive another buffer for the free block list
78InternalRename QStopWatch to QStopwatchDevelopmentMedium7/11/20147/11/2014647 - Rename QStopWatch to QStopwatch
79Internal comparator classes to static classesQComparatorDefault must be converted into SQComparatorDefault.DevelopmentHigh12/11/201412/11/2014648 - Convert comparator classes to static classes
80InternalAdd constructors to QTimespanIt would be a good usability improvement to add some constructors to QTimespan for the most common cases. For example, one that receives the amount of milliseconds and seconds.Development*Medium23/11/201423/11/2014
81InternalUse Boost libraries as DLLIt would be worth to try to use Boost libraries as binaries so the client system does not have to add more dependencies like Boost static librariesDevelopmentLow25/11/201425/11/2014
82InternalResetInternalPointer method for streamsAdd a ResetInternalPointer to QMemoryStream, QFileStream, QBinaryStreamReader, QBinaryStreamWriter, QTextStreamReader, QTextStreamWriterDevelopment*Medium25/11/201425/11/2014
83InternalIsEnd method for streamsAdd a IsEnd method to stream classes so it is easy to know whether the internal pointer points to the end of the streamDevelopment*High27/11/201427/11/2014
84InternalCreate another macro for CLangIt is necessary to create another configuration macro definition for the CLang compiler called QE_COMPILER_CLANGDevelopment*High4/12/20144/12/2014
85InternalUse a structure to store an array, its sizeSome methods return an array stored in the heap and its size as an output parameter. It would be better to just return a structure that stores both values and also destroys the array when its destructor is called (this could be configurable).DevelopmentHigh4/12/20144/12/2014700 - QBasicArray
86InternalUpdate to VS2013Development*High6/12/20146/12/2014
87InternalModify VS projects to separate intermediate directoriesCurrently, al lthe intermediate files of every project are written in the same directory, which seems to produce some collisions and compilation failures. It would be better to make them dump their files into separate directories, one per projectDevelopment*Medium6/12/20146/12/2014
88InternalAdd methods to SQDirectory to get contentsAdd the method SQDirectory::GetContent which returns a list of paths to all contained directory and files (non-recursive)DevelopmentXIt already existsMedium13/12/201413/12/2014
89InternalAdd methods to SQFile to read a full fileAdd the method SQFile::ReadBinaryFile and SQFile::ReadTextFile which would read the entire content of a file and return just the resultDevelopment*High13/12/201413/12/2014
90InternalReview which 3rd party libraries are really necessaryDevelopmentLow15/12/201415/12/2014
InternalReturn a filesystem tree with SQDirectoryAdd a method to SQDirectory in order to gbe able to generate a tree of files/directories starting at a given directory. It would return a QNTree<QPath> instance.Development*Low17/12/201417/12/2014
InternalAdd another Sleep method with higher precisionAdd another method like SQThisThread::Sleep that uses a more precise timer (see nanosleep)DevelopmentLow18/12/201418/12/2014
InternalQuit std::map / QDictionary dependency from enumerationsCurrently, enumerations use an internal container to store the relations between every enum value and its string representation. Since containers are avaiilable in Tools, enumerations in Common cannot have this feature. Furthermore, it would be faster to search for a key in a linear way, using an array, since they will be always very short.DevelopmentHigh19/12/201419/12/2014701 - Quit containers dependency from EQEnumerations
InternalAdd a code file with functions for interoperabilityIt would be useful for users that want to integrate QE with another libraries to provide a way to easily convert external data types to QE data types. This could be done by providing some global functions in a single file like the conversion of a time_t to a QDateTime, or a std::string to QStringUnicode.DevelopmentLow20/12/201420/12/2014
InternalAutoFlushIn order to not having to call Flush every now and then, it could be useful to add a mechanism so the stream writer calls Flush automatically every time an amount of bytes is written. This would be optional.Development*High22/12/201416/01/2015
Main menu