{"id":13663853,"url":"https://github.com/Antypodish/ECS-Octree","last_synced_at":"2025-04-25T18:31:26.564Z","repository":{"id":41186770,"uuid":"164271810","full_name":"Antypodish/ECS-Octree","owner":"Antypodish","description":"Unity ECS based octree.","archived":false,"fork":false,"pushed_at":"2020-02-17T04:02:53.000Z","size":364,"stargazers_count":151,"open_issues_count":1,"forks_count":24,"subscribers_count":16,"default_branch":"master","last_synced_at":"2024-11-10T20:38:37.911Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Antypodish.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-01-06T03:25:04.000Z","updated_at":"2024-07-15T13:43:17.000Z","dependencies_parsed_at":"2022-09-03T02:20:55.428Z","dependency_job_id":null,"html_url":"https://github.com/Antypodish/ECS-Octree","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Antypodish%2FECS-Octree","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Antypodish%2FECS-Octree/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Antypodish%2FECS-Octree/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Antypodish%2FECS-Octree/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Antypodish","download_url":"https://codeload.github.com/Antypodish/ECS-Octree/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250872068,"owners_count":21500758,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-02T05:02:39.010Z","updated_at":"2025-04-25T18:31:26.556Z","avatar_url":"https://github.com/Antypodish.png","language":"C#","funding_links":[],"categories":["C\\#","ECS"],"sub_categories":[],"readme":"# Unity DOTS (ECS) Octree\n\n[![Watch the video](https://forum.unity.com/attachments/upload_2019-1-9_8-21-26-png.355738/)](https://www.youtube.com/watch?v=OlGUWbtUBsM)\n\nThis Unity project is inspired by Unity-Technologies/UnityOctree github repository (https://github.com/Unity-Technologies/UnityOctree) which is Classic OOP based octree system.\nIn this Unity project, aim is to develop pure, or Hybrid ECS based octree system, for which each octree, is represented by own entity.\nOctree nodes, are stored as BufferArrays.\n\nECS scripts are located in Scripts/ECS/Octree folder.\nThere is also OOP-Testing directory, which contains Linearization folder, with intermidiate step, just for testing.\nAnd Originals folder, which contain initial project, from which this project is being derived.\n\nECS Octree Directory, contains AddRemove, CollisionChecks and Core folders.\nAddRemove folder contains ECS systems, which allows to initialize Octree as entity, which stores data as components and BufferArrays.\nThere is also add and remove instances systems, which manages octree node behind scene.\nCollision checks folder, contains systems, which can be triggered by relevant tags, to check, if ray intersaction, or bounds overlap ocures.\nCore folder, contains general octree files. There is Octreecomponents.cs file, which may be of interest.\n\nAdding and removing instances, expnads and shrinks octree, and its nodes.\nAdded instances, return unique ID, if for example raycast collision checks is conducted.\nWhen adding new instance, it is repsonsibility of user, to ensure, that ID do not exists in octree.\nFurther instance ID, can be representing Entity index. It will require additional pairing with entity version, to construct actual entity, if that what is required.\n\nWork in progress.\n\nTODO: \n* Bounds vectors-floats to check.\n* Comply with Burst. (mostly done now)\n* ~~Replace collision check List, with BufferArray.~~\n* ~~Convert GameObjects into ECS mesh renderings.~~\n* ~~Implement multithreading into systems, for multiple parallel octrees checks.~~\n* Convert some integers to bytes, and uInt, where applicable.\n\n\n### Links\nMain Unity forum thread for this project.\n[WIP] Octree in Pure ECS : BufferArray based with source code\nhttps://forum.unity.com/threads/wip-octree-in-pure-ecs-bufferarray-based-with-source-code.546240/#post-4071661\n\n#### Conversion from Unity 2018.3b to 2020.1a (Update 2019 December 11)\n\nUpgrade form\n* Entitities 0.0.12 p 21 to 0.2.0 p 18\n* Burst 0.2.4 p37 to 1.2.0 p 10\n* Collections 0.0.9 to 0.2.0 p 13\n* Jobs 0.0.7 to 0.2.1 p 3\n* Mathematics 0.0.12 p 19 to 1.1.0\n\nAdded:\n* Hybrid Renderer 0.2.0\n* \"Antypodish\" to namespace.\n\n#### Ray Highlight implemented  (Update 2019 January 09)\n\nMost relevant systems are burst complaint. There may be still a bit room to work on that.\nImplemented ray, highlighting blocks, for confirming working raycast.\nThere is in total 8 example systems. 4 for Ray-Octree, and 4 for Bounds-Octree.\nWhere 2 of each are checking only if is colliding, and other two of each, returns list of colliding instances.\nIn case of Ray-Octree examples, nearest collision instance is returned, along with its ID and distance.\nOne example should be run at the time. Multiple example at the same time were not tested.\n\nInstances now hold additional information, allowing to store either single ID, which must be unique per tree, or using this ID as Entity index, with conjunction of Entity version. Otherwise version can be ignored.\n\nTODO:\n* Optimize examples\n\n#### Rays - Octrees in parallel (Update 2019 January 07)\n\nBig code clean up.\nRemoved debugging commented out references, to linearized form.\n\nImplemented two Rays to Octree and Octrees to Ray multithreaded collision checks systems.\nRay to Octree system checks, for collision between many rays and one or more octrees.\nOctree to Ray system checks, for collision between many octrees and one or more rays.\nOctree Entity to Ray Entity and Ray Entity to Octree Entity can be paired, for relevant checks.\nTwo example systems with OnCreate () were added, which allows run selected method.\n\nNote:\nThese systems has disabled main debugging atm.\n\nTODO:\n* ~~Bounds octree-instance collision checks systems on multithreading.~~\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAntypodish%2FECS-Octree","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FAntypodish%2FECS-Octree","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAntypodish%2FECS-Octree/lists"}