Giter VIP home page Giter VIP logo

packet's People

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

packet's Issues

Add merge functionality for compressed mode

Make converters handle merging files, this way some packet data can be merged with another one.
By verifying the file data/time this system must be able to detect files that can be automatically merged and others that need manual merge, calling all necessary callbacks.

Allow runtime resource edit

I must implement some sort of edit mode for resources, the idea that I have in mind is:

  • Lock the resource: This means that no other thread can edit the resource at the same time, and of course if the lock was made from a valid instance it (resource) cannot be destroyed during this.
  • Perform the edit: This must be resource dependent, the resource must have a way to modify itself and then call a base method that will swap the old resource for the new one.
  • Unlock the resource.

I imagine that the best way of updating a resource is swapping it for the new one when the new version is totally ready to be used, this way we can ensure a continuous usage every time.

Add condensed mode manifesto functionality

Add the necessary functionality to generate a manifesto with all included files and compare this manifesto with another one, returning the differences (files that need to be updated).

Add CI

Add some sort of continuous integration, maybe with azure pipelines.

Add compressed generation functionality

Missing files and functionality:

Functionality:

  • File Manager functions
  • File Manager operation mode objects

Files/Classes:

  • Compressed file indexer
  • Compressed file loader

Add condensed mode file updater

By using a manifesto with all the files that needs to be updated, add the functionality to merge files from a determined folder into the current condensed packet filesystem.

Plain indexing takes too long

Visiting and opening each file takes a huge slice of time, there are better ways to approach this:

1 - Only index what was used/requested
2 - Index all superficial data (paths + filenames) but only index internal data (icon + references) when the file is requested or modified
3 - Asynchronously do this processing (not a good idea, would take a long time anyway)
4 - Use a cache and one of the approaches below, I believe a mix of this and the option 2 would be the best idea

This fix shouldn't imply in any external changes for existing projects so any ongoing development with the updated branch can continue without problems.

Resource references requires the resource to be already loaded

When requesting a resource reference, the resource itself must be already loaded, as it can be seen below.

When requesting a reference:
return PacketResourceReferencePtr<ResourceClass>(static_cast<ResourceClass*>(m_ReferenceObject));

Reference constructor:
m_PacketResourceObject->IncrementNumberIndirectReferences();

If the resource is still null or somehow invalid, the reference constructor could cause a crash (or lead into a malformed reference). I need to add support for null resources and some check when creating the reference itself (if the instance isn't ready, create the reference using a null resource).

Release objects on shutdown

Until now there is no decent shutdown method for the resource manager, I must implement a shutdown function that will proper wait for all resources that are being loaded and destroy all of them afterwards.

Use custom extension for packet files

Until now there is no standard extension for imported files, one must be chosen and used instead relying on the default extension for the original file.
All the methods that deal with these files must be updated to handle the custom-extension update.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.