diff --git a/applications/sandbox/assets/scenes/Scene Test.cornflake b/applications/sandbox/assets/scenes/Scene Test.cornflake
deleted file mode 100644
index 48bb34ee4..000000000
--- a/applications/sandbox/assets/scenes/Scene Test.cornflake
+++ /dev/null
@@ -1,1932 +0,0 @@
-{
- "class legion::core::ecs::entity_handle": {
- "Name": "Scene Test",
- "Id": 33,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 33,
- "Component Type": 5290901135681259365,
- "Component Name": "legion::core::scenemanagement::scene",
- "NAME": "Scene"
- },
- {
- "Owner": 33,
- "Component Type": 14234945005408008119,
- "Component Name": "legion::core::hierarchy"
- }
- ],
- "Children": [
- {
- "Name": "Skybox",
- "Id": 2,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 2,
- "Component Type": 14234945005408008119,
- "Component Name": "legion::core::hierarchy"
- },
- {
- "Owner": 2,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 8436013952758271681,
- "Filepath": "assets:\\\\models\\uvsphere.obj"
- },
- {
- "Owner": 2,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\skybox.material"
- }
- },
- {
- "Owner": 2,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 1.0,
- "y": 1.0,
- "z": 1.0
- },
- {
- "Owner": 2,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.0,
- "y": 0.0,
- "z": 0.0,
- "w": 1.0
- },
- {
- "Owner": 2,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- }
- ],
- "Children": []
- },
- {
- "Name": "Ground Plane",
- "Id": 3,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 3,
- "Component Type": 14234945005408008119,
- "Component Name": "legion::core::hierarchy"
- },
- {
- "Owner": 3,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 3566131216048347293,
- "Filepath": "assets:\\\\models\\plane.obj"
- },
- {
- "Owner": 3,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\floor.material"
- }
- },
- {
- "Owner": 3,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 1.0,
- "y": 1.0,
- "z": 1.0
- },
- {
- "Owner": 3,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.0,
- "y": 0.0,
- "z": 0.0,
- "w": 1.0
- },
- {
- "Owner": 3,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- }
- ],
- "Children": []
- },
- {
- "Name": "",
- "Id": 4,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 4,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 1.0,
- "y": 1.0,
- "z": 1.0
- },
- {
- "Owner": 4,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.16837938129901887,
- "y": 0.6738424897193909,
- "z": -0.16186246275901795,
- "w": 0.70098876953125
- },
- {
- "Owner": 4,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": -22.988643646240236,
- "y": 17.683238983154298,
- "z": -2.940082311630249
- },
- {
- "Owner": 4,
- "Component Type": 11518894322830570044,
- "Component Name": "legion::audio::audio_listener"
- },
- {
- "Owner": 4,
- "Component Type": 15654855102072282618,
- "Component Name": "legion::rendering::camera",
- "Fov": 22.5,
- "NearZ": 0.0010000000474974514,
- "FarZ": 1000.0
- },
- {
- "Owner": 4,
- "Component Type": 14234945005408008119,
- "Component Name": "legion::core::hierarchy"
- }
- ],
- "Children": []
- },
- {
- "Name": "Decal",
- "Id": 5,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 5,
- "Component Type": 14234945005408008119,
- "Component Name": "legion::core::hierarchy"
- },
- {
- "Owner": 5,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 2.999999761581421,
- "y": 2.0,
- "z": 2.999999761581421
- },
- {
- "Owner": 5,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.0,
- "y": 0.3826834559440613,
- "z": 0.0,
- "w": 0.9238795638084412
- },
- {
- "Owner": 5,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 5.0,
- "y": 0.0,
- "z": 5.0
- },
- {
- "Owner": 5,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 7109538280558967578,
- "Filepath": "assets:\\\\models\\cube.obj"
- },
- {
- "Owner": 5,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\decal.material"
- }
- }
- ],
- "Children": []
- },
- {
- "Name": "Defaut Plane",
- "Id": 6,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 6,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 3566131216048347293,
- "Filepath": "assets:\\\\models\\plane.obj"
- },
- {
- "Owner": 6,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\default.material"
- }
- },
- {
- "Owner": 6,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 10.0,
- "y": 10.0,
- "z": 10.0
- },
- {
- "Owner": 6,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.0,
- "y": 0.0,
- "z": 0.0,
- "w": 1.0
- },
- {
- "Owner": 6,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 0.0,
- "y": 0.009999999776482582,
- "z": 0.0
- },
- {
- "Owner": 6,
- "Component Type": 14234945005408008119,
- "Component Name": "legion::core::hierarchy"
- }
- ],
- "Children": []
- },
- {
- "Name": "Copper Plane",
- "Id": 7,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 7,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 3566131216048347293,
- "Filepath": "assets:\\\\models\\plane.obj"
- },
- {
- "Owner": 7,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\copper.material"
- }
- },
- {
- "Owner": 7,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 10.0,
- "y": 10.0,
- "z": 10.0
- },
- {
- "Owner": 7,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.0,
- "y": 0.0,
- "z": 0.0,
- "w": 1.0
- },
- {
- "Owner": 7,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 10.0,
- "y": 0.009999999776482582,
- "z": 0.0
- },
- {
- "Owner": 7,
- "Component Type": 14234945005408008119,
- "Component Name": "legion::core::hierarchy"
- }
- ],
- "Children": []
- },
- {
- "Name": "Rock Plane",
- "Id": 8,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 8,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 3566131216048347293,
- "Filepath": "assets:\\\\models\\plane.obj"
- },
- {
- "Owner": 8,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\rock.material"
- }
- },
- {
- "Owner": 8,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 10.0,
- "y": 10.0,
- "z": 10.0
- },
- {
- "Owner": 8,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.0,
- "y": 0.0,
- "z": 0.0,
- "w": 1.0
- },
- {
- "Owner": 8,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 10.956764221191407,
- "y": 0.009999992325901986,
- "z": 11.581987380981446
- },
- {
- "Owner": 8,
- "Component Type": 14234945005408008119,
- "Component Name": "legion::core::hierarchy"
- }
- ],
- "Children": []
- },
- {
- "Name": "Granite Plane",
- "Id": 9,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 9,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 3566131216048347293,
- "Filepath": "assets:\\\\models\\plane.obj"
- },
- {
- "Owner": 9,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\granite.material"
- }
- },
- {
- "Owner": 9,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 10.0,
- "y": 10.0,
- "z": 10.0
- },
- {
- "Owner": 9,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.0,
- "y": 0.0,
- "z": 0.0,
- "w": 1.0
- },
- {
- "Owner": 9,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 10.0,
- "y": 0.009999999776482582,
- "z": -10.0
- },
- {
- "Owner": 9,
- "Component Type": 14234945005408008119,
- "Component Name": "legion::core::hierarchy"
- }
- ],
- "Children": []
- },
- {
- "Name": "UV Plane",
- "Id": 10,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 10,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 3566131216048347293,
- "Filepath": "assets:\\\\models\\plane.obj"
- },
- {
- "Owner": 10,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\uv.material"
- }
- },
- {
- "Owner": 10,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 10.0,
- "y": 10.0,
- "z": 10.0
- },
- {
- "Owner": 10,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.0,
- "y": 0.0,
- "z": 0.0,
- "w": 1.0
- },
- {
- "Owner": 10,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": -14.415493965148926,
- "y": 0.010000031441450119,
- "z": -2.4945240020751955
- },
- {
- "Owner": 10,
- "Component Type": 14234945005408008119,
- "Component Name": "legion::core::hierarchy"
- }
- ],
- "Children": []
- },
- {
- "Name": "Normal Plane",
- "Id": 11,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 11,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 3566131216048347293,
- "Filepath": "assets:\\\\models\\plane.obj"
- },
- {
- "Owner": 11,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\normal.material"
- }
- },
- {
- "Owner": 11,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 9.994988441467286,
- "y": 9.999067306518555,
- "z": 9.999065399169922
- },
- {
- "Owner": 11,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": -7.004159670032095e-7,
- "y": 0.7372754216194153,
- "z": -0.6755922436714172,
- "w": 5.825457378705323e-7
- },
- {
- "Owner": 11,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": -12.0,
- "y": 5.0,
- "z": 13.0
- },
- {
- "Owner": 11,
- "Component Type": 14234945005408008119,
- "Component Name": "legion::core::hierarchy"
- }
- ],
- "Children": []
- },
- {
- "Name": "Wireframe Plane",
- "Id": 12,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 12,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 3566131216048347293,
- "Filepath": "assets:\\\\models\\plane.obj"
- },
- {
- "Owner": 12,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\wireframe.material"
- }
- },
- {
- "Owner": 12,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 10.0,
- "y": 10.0,
- "z": 10.0
- },
- {
- "Owner": 12,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.0,
- "y": 0.0,
- "z": 0.0,
- "w": 1.0
- },
- {
- "Owner": 12,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 0.0,
- "y": 0.009999999776482582,
- "z": 10.0
- },
- {
- "Owner": 12,
- "Component Type": 14234945005408008119,
- "Component Name": "legion::core::hierarchy"
- }
- ],
- "Children": []
- },
- {
- "Name": "Vertex Color Plane",
- "Id": 13,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 13,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 3566131216048347293,
- "Filepath": "assets:\\\\models\\plane.obj"
- },
- {
- "Owner": 13,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\vertex color.material"
- }
- },
- {
- "Owner": 13,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 10.0,
- "y": 10.0,
- "z": 10.0
- },
- {
- "Owner": 13,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.0,
- "y": 0.0,
- "z": 0.0,
- "w": 1.0
- },
- {
- "Owner": 13,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": -0.9283102750778198,
- "y": 0.010000022128224373,
- "z": -13.383755683898926
- },
- {
- "Owner": 13,
- "Component Type": 14234945005408008119,
- "Component Name": "legion::core::hierarchy"
- }
- ],
- "Children": []
- },
- {
- "Name": "Entity 14",
- "Id": 14,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 14,
- "Component Type": 14234945005408008119,
- "Component Name": "legion::core::hierarchy"
- }
- ],
- "Children": []
- },
- {
- "Name": "Green Spotlight 0",
- "Id": 15,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 15,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 12356534967552134382,
- "Filepath": "assets:\\\\models\\spot-light.obj"
- },
- {
- "Owner": 15,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\spot light.material"
- }
- },
- {
- "Owner": 15,
- "Component Type": 17923777057385106779,
- "Component Name": "legion::rendering::light",
- "LightType": 2,
- "Attenuation": 50.0,
- "Intensity": 0.5,
- "Index": 4,
- "Direction": {
- "x": 0.0,
- "y": 0.0,
- "z": 1.0
- },
- "Falloff": 3.141592025756836,
- "Position": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "Angle": 0.7853981852531433,
- "Color": {
- "x": 0.0,
- "y": 1.0,
- "z": 0.0,
- "w": 1.0
- }
- },
- {
- "Owner": 15,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 1.0,
- "y": 1.0,
- "z": 1.0
- },
- {
- "Owner": 15,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.0,
- "y": 0.0,
- "z": 0.0,
- "w": 1.0
- },
- {
- "Owner": 15,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": -10.0,
- "y": 0.5,
- "z": -10.0
- },
- {
- "Owner": 15,
- "Component Type": 14234945005408008119,
- "Component Name": "legion::core::hierarchy"
- }
- ],
- "Children": []
- },
- {
- "Name": "Green Spotlight 1",
- "Id": 16,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 16,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 12356534967552134382,
- "Filepath": "assets:\\\\models\\spot-light.obj"
- },
- {
- "Owner": 16,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\spot light.material"
- }
- },
- {
- "Owner": 16,
- "Component Type": 17923777057385106779,
- "Component Name": "legion::rendering::light",
- "LightType": 2,
- "Attenuation": 50.0,
- "Intensity": 0.5,
- "Index": 7,
- "Direction": {
- "x": 0.0,
- "y": 0.0,
- "z": 1.0
- },
- "Falloff": 3.141592025756836,
- "Position": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "Angle": 0.7853981852531433,
- "Color": {
- "x": 0.0,
- "y": 1.0,
- "z": 0.0,
- "w": 1.0
- }
- },
- {
- "Owner": 16,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 1.0,
- "y": 1.0,
- "z": 1.0
- },
- {
- "Owner": 16,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.0,
- "y": 0.0,
- "z": 0.0,
- "w": 1.0
- },
- {
- "Owner": 16,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 0.0,
- "y": 0.5,
- "z": -10.0
- },
- {
- "Owner": 16,
- "Component Type": 14234945005408008119,
- "Component Name": "legion::core::hierarchy"
- }
- ],
- "Children": []
- },
- {
- "Name": "Green Spotlight 2",
- "Id": 17,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 17,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 12356534967552134382,
- "Filepath": "assets:\\\\models\\spot-light.obj"
- },
- {
- "Owner": 17,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\spot light.material"
- }
- },
- {
- "Owner": 17,
- "Component Type": 17923777057385106779,
- "Component Name": "legion::rendering::light",
- "LightType": 2,
- "Attenuation": 50.0,
- "Intensity": 0.5,
- "Index": 10,
- "Direction": {
- "x": 0.0,
- "y": 0.0,
- "z": 1.0
- },
- "Falloff": 3.141592025756836,
- "Position": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "Angle": 0.7853981852531433,
- "Color": {
- "x": 0.0,
- "y": 1.0,
- "z": 0.0,
- "w": 1.0
- }
- },
- {
- "Owner": 17,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 1.0,
- "y": 1.0,
- "z": 1.0
- },
- {
- "Owner": 17,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.0,
- "y": 0.0,
- "z": 0.0,
- "w": 1.0
- },
- {
- "Owner": 17,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 10.0,
- "y": 0.5,
- "z": -10.0
- },
- {
- "Owner": 17,
- "Component Type": 14234945005408008119,
- "Component Name": "legion::core::hierarchy"
- }
- ],
- "Children": []
- },
- {
- "Name": "Red Pointlight 1",
- "Id": 18,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 18,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 18342160618331844328,
- "Filepath": "assets:\\\\models\\point-light.obj"
- },
- {
- "Owner": 18,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\point light.material"
- }
- },
- {
- "Owner": 18,
- "Component Type": 17923777057385106779,
- "Component Name": "legion::rendering::light",
- "LightType": 0,
- "Attenuation": 50.0,
- "Intensity": 0.5,
- "Index": 13,
- "Direction": {
- "x": 0.0,
- "y": 0.0,
- "z": 1.0
- },
- "Falloff": 3.141592025756836,
- "Position": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "Angle": 0.7853981852531433,
- "Color": {
- "x": 1.0,
- "y": 0.0,
- "z": 0.0,
- "w": 1.0
- }
- },
- {
- "Owner": 18,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 1.0,
- "y": 1.0,
- "z": 1.0
- },
- {
- "Owner": 18,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.0,
- "y": 0.0,
- "z": 0.0,
- "w": 1.0
- },
- {
- "Owner": 18,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 0.0,
- "y": 1.0,
- "z": 0.0
- },
- {
- "Owner": 18,
- "Component Type": 14234945005408008119,
- "Component Name": "legion::core::hierarchy"
- }
- ],
- "Children": []
- },
- {
- "Name": "Red pointlight 0",
- "Id": 19,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 19,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 18342160618331844328,
- "Filepath": "assets:\\\\models\\point-light.obj"
- },
- {
- "Owner": 19,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\point light.material"
- }
- },
- {
- "Owner": 19,
- "Component Type": 17923777057385106779,
- "Component Name": "legion::rendering::light",
- "LightType": 0,
- "Attenuation": 50.0,
- "Intensity": 0.5,
- "Index": 16,
- "Direction": {
- "x": 0.0,
- "y": 0.0,
- "z": 1.0
- },
- "Falloff": 3.141592025756836,
- "Position": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "Angle": 0.7853981852531433,
- "Color": {
- "x": 1.0,
- "y": 0.0,
- "z": 0.0,
- "w": 1.0
- }
- },
- {
- "Owner": 19,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 1.0,
- "y": 1.0,
- "z": 1.0
- },
- {
- "Owner": 19,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.0,
- "y": 0.0,
- "z": 0.0,
- "w": 1.0
- },
- {
- "Owner": 19,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": -10.0,
- "y": 1.0,
- "z": 0.0
- },
- {
- "Owner": 19,
- "Component Type": 14234945005408008119,
- "Component Name": "legion::core::hierarchy"
- }
- ],
- "Children": []
- },
- {
- "Name": "Red Pointlight 2",
- "Id": 20,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 20,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 18342160618331844328,
- "Filepath": "assets:\\\\models\\point-light.obj"
- },
- {
- "Owner": 20,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\point light.material"
- }
- },
- {
- "Owner": 20,
- "Component Type": 17923777057385106779,
- "Component Name": "legion::rendering::light",
- "LightType": 0,
- "Attenuation": 50.0,
- "Intensity": 0.5,
- "Index": 19,
- "Direction": {
- "x": 0.0,
- "y": 0.0,
- "z": 1.0
- },
- "Falloff": 3.141592025756836,
- "Position": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "Angle": 0.7853981852531433,
- "Color": {
- "x": 1.0,
- "y": 0.0,
- "z": 0.0,
- "w": 1.0
- }
- },
- {
- "Owner": 20,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 1.0,
- "y": 1.0,
- "z": 1.0
- },
- {
- "Owner": 20,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.0,
- "y": 0.0,
- "z": 0.0,
- "w": 1.0
- },
- {
- "Owner": 20,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 10.0,
- "y": 1.0,
- "z": 0.0
- },
- {
- "Owner": 20,
- "Component Type": 14234945005408008119,
- "Component Name": "legion::core::hierarchy"
- }
- ],
- "Children": []
- },
- {
- "Name": "Embedded Material Suzzane",
- "Id": 21,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 21,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 6546381963644500447,
- "Filepath": "assets:\\\\models\\suzanne-test.obj"
- },
- {
- "Owner": 21,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\suzanne\\Material.001.material"
- }
- },
- {
- "Owner": 21,
- "Component Type": 9566391368147235142,
- "Component Name": "legion::core::use_embedded_material",
- "EmbeddedMaterialPath": "assets://models/suzanne-test.obj",
- "MaterialName": "suzanne/Material.001"
- },
- {
- "Owner": 21,
- "Component Type": 13028145369583378910,
- "Component Name": "custom_component"
- },
- {
- "Owner": 21,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 1.001564860343933,
- "y": 0.9999997615814209,
- "z": 1.001565933227539
- },
- {
- "Owner": 21,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.00003474406912573613,
- "y": 0.2931915819644928,
- "z": -0.00001827613596105948,
- "w": 0.9600598812103272
- },
- {
- "Owner": 21,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 0.0,
- "y": 3.0,
- "z": 5.099999904632568
- },
- {
- "Owner": 21,
- "Component Type": 14234945005408008119,
- "Component Name": "legion::core::hierarchy"
- }
- ],
- "Children": []
- },
- {
- "Name": "Wireframe Suzanne",
- "Id": 22,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 22,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 2198368113600752348,
- "Filepath": "assets:\\\\models\\suzanne-test.obj"
- },
- {
- "Owner": 22,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\wireframe.material"
- }
- },
- {
- "Owner": 22,
- "Component Type": 13028145369583378910,
- "Component Name": "custom_component"
- },
- {
- "Owner": 22,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 1.0213717222213746,
- "y": 0.9999997615814209,
- "z": 1.0213708877563477
- },
- {
- "Owner": 22,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.000027855361622641796,
- "y": -0.3172142803668976,
- "z": -0.000023673990654060618,
- "w": -0.9517044425010681
- },
- {
- "Owner": 22,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 0.0,
- "y": 3.0,
- "z": 8.100000381469727
- },
- {
- "Owner": 22,
- "Component Type": 14234945005408008119,
- "Component Name": "legion::core::hierarchy"
- }
- ],
- "Children": []
- },
- {
- "Name": "Copper Suzanne",
- "Id": 23,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 23,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 2198368113600752348,
- "Filepath": "assets:\\\\models\\suzanne-test.obj"
- },
- {
- "Owner": 23,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\copper.material"
- }
- },
- {
- "Owner": 23,
- "Component Type": 13028145369583378910,
- "Component Name": "custom_component"
- },
- {
- "Owner": 23,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 1.00273597240448,
- "y": 0.9999998807907105,
- "z": 1.0027371644973755
- },
- {
- "Owner": 23,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": -0.000012020113899779972,
- "y": -0.32635098695755007,
- "z": 0.000011627163075900171,
- "w": -0.9480004906654358
- },
- {
- "Owner": 23,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 0.0,
- "y": 3.0,
- "z": 11.100000381469727
- },
- {
- "Owner": 23,
- "Component Type": 14234945005408008119,
- "Component Name": "legion::core::hierarchy"
- }
- ],
- "Children": []
- },
- {
- "Name": "Test Cube",
- "Id": 24,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 24,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 7109538280558967578,
- "Filepath": "assets:\\\\models\\cube.obj"
- },
- {
- "Owner": 24,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\default.material"
- }
- },
- {
- "Owner": 24,
- "Component Type": 13028145369583378910,
- "Component Name": "custom_component"
- },
- {
- "Owner": 24,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 1.0350501537322999,
- "y": 0.9999995827674866,
- "z": 1.035048246383667
- },
- {
- "Owner": 24,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.000029796141461702065,
- "y": 0.31285515427589419,
- "z": -0.00005751029311795719,
- "w": 0.9502673745155335
- },
- {
- "Owner": 24,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 5.099999904632568,
- "y": 9.0,
- "z": 0.0
- },
- {
- "Owner": 24,
- "Component Type": 14234945005408008119,
- "Component Name": "legion::core::hierarchy"
- }
- ],
- "Children": []
- },
- {
- "Name": "Copper Ball",
- "Id": 25,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 25,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 7189033483858936074,
- "Filepath": "assets:\\\\models\\sphere.obj"
- },
- {
- "Owner": 25,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\copper.material"
- }
- },
- {
- "Owner": 25,
- "Component Type": 13028145369583378910,
- "Component Name": "custom_component"
- },
- {
- "Owner": 25,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 1.0435477495193482,
- "y": 0.9999998807907105,
- "z": 1.0435477495193482
- },
- {
- "Owner": 25,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": -0.000008761940080148634,
- "y": 0.35315263271331789,
- "z": 0.000013634088645630982,
- "w": 0.9355693459510803
- },
- {
- "Owner": 25,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 0.0,
- "y": 3.0,
- "z": -5.099999904632568
- },
- {
- "Owner": 25,
- "Component Type": 14234945005408008119,
- "Component Name": "legion::core::hierarchy"
- }
- ],
- "Children": []
- },
- {
- "Name": "",
- "Id": 26,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 26,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 7189033483858936074,
- "Filepath": "assets:\\\\models\\sphere.obj"
- },
- {
- "Owner": 26,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\granite2.material"
- }
- },
- {
- "Owner": 26,
- "Component Type": 13028145369583378910,
- "Component Name": "custom_component"
- },
- {
- "Owner": 26,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 1.0,
- "y": 1.0,
- "z": 1.0
- },
- {
- "Owner": 26,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.0,
- "y": 0.4072188436985016,
- "z": 0.0,
- "w": 0.9325306415557861
- },
- {
- "Owner": 26,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 0.0,
- "y": 3.0,
- "z": -8.0
- },
- {
- "Owner": 26,
- "Component Type": 14234945005408008119,
- "Component Name": "legion::core::hierarchy"
- }
- ],
- "Children": []
- },
- {
- "Name": "",
- "Id": 27,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 27,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 7189033483858936074,
- "Filepath": "assets:\\\\models\\sphere.obj"
- },
- {
- "Owner": 27,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\rock2.material"
- }
- },
- {
- "Owner": 27,
- "Component Type": 13028145369583378910,
- "Component Name": "custom_component"
- },
- {
- "Owner": 27,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 1.0,
- "y": 1.0,
- "z": 1.0
- },
- {
- "Owner": 27,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.0,
- "y": 0.4048698842525482,
- "z": 0.0,
- "w": 0.9335601329803467
- },
- {
- "Owner": 27,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 0.0,
- "y": 3.0,
- "z": -2.200000047683716
- },
- {
- "Owner": 27,
- "Component Type": 14234945005408008119,
- "Component Name": "legion::core::hierarchy"
- }
- ],
- "Children": []
- },
- {
- "Name": "",
- "Id": 28,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 28,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 7189033483858936074,
- "Filepath": "assets:\\\\models\\sphere.obj"
- },
- {
- "Owner": 28,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\default.material"
- }
- },
- {
- "Owner": 28,
- "Component Type": 13028145369583378910,
- "Component Name": "custom_component"
- },
- {
- "Owner": 28,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 1.0,
- "y": 1.0,
- "z": 1.0
- },
- {
- "Owner": 28,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.0,
- "y": 0.4023154675960541,
- "z": 0.0,
- "w": 0.9346229434013367
- },
- {
- "Owner": 28,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 4.0,
- "y": 3.0,
- "z": -8.0
- },
- {
- "Owner": 28,
- "Component Type": 14234945005408008119,
- "Component Name": "legion::core::hierarchy"
- }
- ],
- "Children": []
- },
- {
- "Name": "",
- "Id": 29,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 29,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 8436013952758271681,
- "Filepath": "assets:\\\\models\\uvsphere.obj"
- },
- {
- "Owner": 29,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\copper.material"
- }
- },
- {
- "Owner": 29,
- "Component Type": 13028145369583378910,
- "Component Name": "custom_component"
- },
- {
- "Owner": 29,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 1.0,
- "y": 1.0,
- "z": 1.0
- },
- {
- "Owner": 29,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.0,
- "y": 0.4000115692615509,
- "z": 0.0,
- "w": 0.9356839060783386
- },
- {
- "Owner": 29,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 0.0,
- "y": 3.0,
- "z": -3.5999999046325685
- },
- {
- "Owner": 29,
- "Component Type": 14234945005408008119,
- "Component Name": "legion::core::hierarchy"
- }
- ],
- "Children": []
- },
- {
- "Name": "",
- "Id": 30,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 30,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 8436013952758271681,
- "Filepath": "assets:\\\\models\\uvsphere.obj"
- },
- {
- "Owner": 30,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\granite2.material"
- }
- },
- {
- "Owner": 30,
- "Component Type": 13028145369583378910,
- "Component Name": "custom_component"
- },
- {
- "Owner": 30,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 1.0,
- "y": 1.0,
- "z": 1.0
- },
- {
- "Owner": 30,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.0,
- "y": 0.39871278405189516,
- "z": 0.0,
- "w": 0.9362139105796814
- },
- {
- "Owner": 30,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 0.0,
- "y": 3.0,
- "z": -6.5
- },
- {
- "Owner": 30,
- "Component Type": 14234945005408008119,
- "Component Name": "legion::core::hierarchy"
- }
- ],
- "Children": []
- },
- {
- "Name": "",
- "Id": 31,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 31,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 8436013952758271681,
- "Filepath": "assets:\\\\models\\uvsphere.obj"
- },
- {
- "Owner": 31,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\rock2.material"
- }
- },
- {
- "Owner": 31,
- "Component Type": 13028145369583378910,
- "Component Name": "custom_component"
- },
- {
- "Owner": 31,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 1.0,
- "y": 1.0,
- "z": 1.0
- },
- {
- "Owner": 31,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.0,
- "y": 0.39700275659561159,
- "z": 0.0,
- "w": 0.9369962811470032
- },
- {
- "Owner": 31,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 0.0,
- "y": 3.0,
- "z": -0.699999988079071
- },
- {
- "Owner": 31,
- "Component Type": 14234945005408008119,
- "Component Name": "legion::core::hierarchy"
- }
- ],
- "Children": []
- },
- {
- "Name": "",
- "Id": 32,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 32,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 8436013952758271681,
- "Filepath": "assets:\\\\models\\uvsphere.obj"
- },
- {
- "Owner": 32,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\default.material"
- }
- },
- {
- "Owner": 32,
- "Component Type": 13028145369583378910,
- "Component Name": "custom_component"
- },
- {
- "Owner": 32,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 1.0,
- "y": 1.0,
- "z": 1.0
- },
- {
- "Owner": 32,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.0,
- "y": 0.39544665813446047,
- "z": 0.0,
- "w": 0.9376160502433777
- },
- {
- "Owner": 32,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 4.0,
- "y": 3.0,
- "z": -6.5
- },
- {
- "Owner": 32,
- "Component Type": 14234945005408008119,
- "Component Name": "legion::core::hierarchy"
- }
- ],
- "Children": []
- },
- {
- "Name": "Sun",
- "Id": 34,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 34,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 7757082633988396914,
- "Filepath": "assets:\\\\models\\directional-light.obj"
- },
- {
- "Owner": 34,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\directional light.material"
- }
- },
- {
- "Owner": 34,
- "Component Type": 17923777057385106779,
- "Component Name": "legion::rendering::light",
- "LightType": 1,
- "Attenuation": 10.0,
- "Intensity": 10.0,
- "Index": 22,
- "Direction": {
- "x": 0.0,
- "y": 0.0,
- "z": 1.0
- },
- "Falloff": 3.1415927410125734,
- "Position": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "Angle": 0.7853981852531433,
- "Color": {
- "x": 1.0,
- "y": 1.0,
- "z": 0.800000011920929,
- "w": 1.0
- }
- },
- {
- "Owner": 34,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 1.0,
- "y": 1.0,
- "z": 1.0
- },
- {
- "Owner": 34,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.115916907787323,
- "y": -0.8804763555526733,
- "z": 0.2798481583595276,
- "w": 0.3647052049636841
- },
- {
- "Owner": 34,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 10.0,
- "y": 10.0,
- "z": 10.0
- },
- {
- "Owner": 34,
- "Component Type": 14234945005408008119,
- "Component Name": "legion::core::hierarchy"
- }
- ],
- "Children": []
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/applications/sandbox/assets/scenes/Scene.cornflake b/applications/sandbox/assets/scenes/Scene.cornflake
deleted file mode 100644
index 1fbed6537..000000000
--- a/applications/sandbox/assets/scenes/Scene.cornflake
+++ /dev/null
@@ -1,1779 +0,0 @@
-{
- "class legion::core::ecs::entity_handle": {
- "Name": "Scene",
- "Id": 33,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 33,
- "Component Type": 5290901135681259365,
- "Component Name": "legion::core::scenemanagement::scene",
- "NAME": "Scene"
- },
- {
- "Owner": 33,
- "Component Type": 14234945005408008119,
- "Component Name": "legion::core::hierarchy"
- }
- ],
- "Children": [
- {
- "Name": "Skybox",
- "Id": 2,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 2,
- "Component Type": 14234945005408008119,
- "Component Name": "legion::core::hierarchy"
- },
- {
- "Owner": 2,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 16147701225056486911,
- "Filepath": "assets:\\\\models\\uvsphere.obj"
- },
- {
- "Owner": 2,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\skybox.material"
- }
- },
- {
- "Owner": 2,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 1.0,
- "y": 1.0,
- "z": 1.0
- },
- {
- "Owner": 2,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.0,
- "y": 0.0,
- "z": 0.0,
- "w": 1.0
- },
- {
- "Owner": 2,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- }
- ],
- "Children": []
- },
- {
- "Name": "Ground Plane",
- "Id": 3,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 3,
- "Component Type": 14234945005408008119,
- "Component Name": "legion::core::hierarchy"
- },
- {
- "Owner": 3,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 11545668865037648829,
- "Filepath": "assets:\\\\models\\plane.obj"
- },
- {
- "Owner": 3,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\floor.material"
- }
- },
- {
- "Owner": 3,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 1.0,
- "y": 1.0,
- "z": 1.0
- },
- {
- "Owner": 3,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.0,
- "y": 0.0,
- "z": 0.0,
- "w": 1.0
- },
- {
- "Owner": 3,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- }
- ],
- "Children": []
- },
- {
- "Name": "",
- "Id": 4,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 4,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 1.0,
- "y": 1.0,
- "z": 1.0
- },
- {
- "Owner": 4,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": -0.0,
- "y": -0.0,
- "z": -0.0,
- "w": 1.0
- },
- {
- "Owner": 4,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 0.0,
- "y": 3.0,
- "z": 0.0
- },
- {
- "Owner": 4,
- "Component Type": 11518894322830570044,
- "Component Name": "legion::audio::audio_listener"
- },
- {
- "Owner": 4,
- "Component Type": 15654855102072282618,
- "Component Name": "legion::rendering::camera",
- "Fov": 22.5,
- "NearZ": 0.0010000000474974514,
- "FarZ": 1000.0
- }
- ],
- "Children": []
- },
- {
- "Name": "Decal",
- "Id": 5,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 5,
- "Component Type": 14234945005408008119,
- "Component Name": "legion::core::hierarchy"
- },
- {
- "Owner": 5,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 3.0,
- "y": 2.0,
- "z": 3.0
- },
- {
- "Owner": 5,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.0,
- "y": 0.3826834559440613,
- "z": 0.0,
- "w": 0.9238795042037964
- },
- {
- "Owner": 5,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 5.0,
- "y": 0.0,
- "z": 5.0
- },
- {
- "Owner": 5,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 5503224543670688896,
- "Filepath": "assets:\\\\models\\cube.obj"
- },
- {
- "Owner": 5,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\decal.material"
- }
- }
- ],
- "Children": []
- },
- {
- "Name": "",
- "Id": 6,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 6,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 18257050065998780757,
- "Filepath": "assets:\\\\models\\plane.obj"
- },
- {
- "Owner": 6,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\default.material"
- }
- },
- {
- "Owner": 6,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 10.0,
- "y": 10.0,
- "z": 10.0
- },
- {
- "Owner": 6,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.0,
- "y": 0.0,
- "z": 0.0,
- "w": 1.0
- },
- {
- "Owner": 6,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 0.0,
- "y": 0.009999999776482582,
- "z": 0.0
- }
- ],
- "Children": []
- },
- {
- "Name": "",
- "Id": 7,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 7,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 18257050065998780757,
- "Filepath": "assets:\\\\models\\plane.obj"
- },
- {
- "Owner": 7,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\copper.material"
- }
- },
- {
- "Owner": 7,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 10.0,
- "y": 10.0,
- "z": 10.0
- },
- {
- "Owner": 7,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.0,
- "y": 0.0,
- "z": 0.0,
- "w": 1.0
- },
- {
- "Owner": 7,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 10.0,
- "y": 0.009999999776482582,
- "z": 0.0
- }
- ],
- "Children": []
- },
- {
- "Name": "",
- "Id": 8,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 8,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 18257050065998780757,
- "Filepath": "assets:\\\\models\\plane.obj"
- },
- {
- "Owner": 8,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\rock.material"
- }
- },
- {
- "Owner": 8,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 10.0,
- "y": 10.0,
- "z": 10.0
- },
- {
- "Owner": 8,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.0,
- "y": 0.0,
- "z": 0.0,
- "w": 1.0
- },
- {
- "Owner": 8,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 10.0,
- "y": 0.009999999776482582,
- "z": 10.0
- }
- ],
- "Children": []
- },
- {
- "Name": "",
- "Id": 9,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 9,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 18257050065998780757,
- "Filepath": "assets:\\\\models\\plane.obj"
- },
- {
- "Owner": 9,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\granite.material"
- }
- },
- {
- "Owner": 9,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 10.0,
- "y": 10.0,
- "z": 10.0
- },
- {
- "Owner": 9,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.0,
- "y": 0.0,
- "z": 0.0,
- "w": 1.0
- },
- {
- "Owner": 9,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 10.0,
- "y": 0.009999999776482582,
- "z": -10.0
- }
- ],
- "Children": []
- },
- {
- "Name": "",
- "Id": 10,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 10,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 18257050065998780757,
- "Filepath": "assets:\\\\models\\plane.obj"
- },
- {
- "Owner": 10,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\uv.material"
- }
- },
- {
- "Owner": 10,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 10.0,
- "y": 10.0,
- "z": 10.0
- },
- {
- "Owner": 10,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.0,
- "y": 0.0,
- "z": 0.0,
- "w": 1.0
- },
- {
- "Owner": 10,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": -10.0,
- "y": 0.009999999776482582,
- "z": 0.0
- }
- ],
- "Children": []
- },
- {
- "Name": "",
- "Id": 11,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 11,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 18257050065998780757,
- "Filepath": "assets:\\\\models\\plane.obj"
- },
- {
- "Owner": 11,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\normal.material"
- }
- },
- {
- "Owner": 11,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 10.0,
- "y": 10.0,
- "z": 10.0
- },
- {
- "Owner": 11,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.0,
- "y": 0.0,
- "z": 0.0,
- "w": 1.0
- },
- {
- "Owner": 11,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": -10.0,
- "y": 0.009999999776482582,
- "z": 10.0
- }
- ],
- "Children": []
- },
- {
- "Name": "",
- "Id": 12,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 12,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 18257050065998780757,
- "Filepath": "assets:\\\\models\\plane.obj"
- },
- {
- "Owner": 12,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\wireframe.material"
- }
- },
- {
- "Owner": 12,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 10.0,
- "y": 10.0,
- "z": 10.0
- },
- {
- "Owner": 12,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.0,
- "y": 0.0,
- "z": 0.0,
- "w": 1.0
- },
- {
- "Owner": 12,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 0.0,
- "y": 0.009999999776482582,
- "z": 10.0
- }
- ],
- "Children": []
- },
- {
- "Name": "",
- "Id": 13,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 13,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 18257050065998780757,
- "Filepath": "assets:\\\\models\\plane.obj"
- },
- {
- "Owner": 13,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\vertex color.material"
- }
- },
- {
- "Owner": 13,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 10.0,
- "y": 10.0,
- "z": 10.0
- },
- {
- "Owner": 13,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.0,
- "y": 0.0,
- "z": 0.0,
- "w": 1.0
- },
- {
- "Owner": 13,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 0.0,
- "y": 0.009999999776482582,
- "z": -10.0
- }
- ],
- "Children": []
- },
- {
- "Name": "",
- "Id": 14,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 14,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 5112364170975192303,
- "Filepath": "assets:\\\\models\\directional-light.obj"
- },
- {
- "Owner": 14,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\directional light.material"
- }
- },
- {
- "Owner": 14,
- "Component Type": 17923777057385106779,
- "Component Name": "legion::rendering::light",
- "LightType": 1,
- "Attenuation": 10.0,
- "Intensity": 10.0,
- "Index": 1,
- "Direction": {
- "x": 0.0,
- "y": 0.0,
- "z": 1.0
- },
- "Falloff": 3.1415927410125734,
- "Position": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "Angle": 0.7853981852531433,
- "Color": {
- "x": 1.0,
- "y": 1.0,
- "z": 0.800000011920929,
- "w": 1.0
- }
- },
- {
- "Owner": 14,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 1.0,
- "y": 1.0,
- "z": 1.0
- },
- {
- "Owner": 14,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.115916907787323,
- "y": -0.8804763555526733,
- "z": 0.2798481583595276,
- "w": 0.3647052049636841
- },
- {
- "Owner": 14,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 10.0,
- "y": 10.0,
- "z": 10.0
- }
- ],
- "Children": []
- },
- {
- "Name": "",
- "Id": 15,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 15,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 4127307817236017217,
- "Filepath": "assets:\\\\models\\spot-light.obj"
- },
- {
- "Owner": 15,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\spot light.material"
- }
- },
- {
- "Owner": 15,
- "Component Type": 17923777057385106779,
- "Component Name": "legion::rendering::light",
- "LightType": 2,
- "Attenuation": 50.0,
- "Intensity": 0.5,
- "Index": 4,
- "Direction": {
- "x": 0.0,
- "y": 0.0,
- "z": 1.0
- },
- "Falloff": 3.141592025756836,
- "Position": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "Angle": 0.7853981852531433,
- "Color": {
- "x": 0.0,
- "y": 1.0,
- "z": 0.0,
- "w": 1.0
- }
- },
- {
- "Owner": 15,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 1.0,
- "y": 1.0,
- "z": 1.0
- },
- {
- "Owner": 15,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": -0.0,
- "y": -0.0,
- "z": -0.0,
- "w": 1.0
- },
- {
- "Owner": 15,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": -10.0,
- "y": 0.5,
- "z": -10.0
- }
- ],
- "Children": []
- },
- {
- "Name": "",
- "Id": 16,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 16,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 4127307817236017217,
- "Filepath": "assets:\\\\models\\spot-light.obj"
- },
- {
- "Owner": 16,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\spot light.material"
- }
- },
- {
- "Owner": 16,
- "Component Type": 17923777057385106779,
- "Component Name": "legion::rendering::light",
- "LightType": 2,
- "Attenuation": 50.0,
- "Intensity": 0.5,
- "Index": 7,
- "Direction": {
- "x": 0.0,
- "y": 0.0,
- "z": 1.0
- },
- "Falloff": 3.141592025756836,
- "Position": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "Angle": 0.7853981852531433,
- "Color": {
- "x": 0.0,
- "y": 1.0,
- "z": 0.0,
- "w": 1.0
- }
- },
- {
- "Owner": 16,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 1.0,
- "y": 1.0,
- "z": 1.0
- },
- {
- "Owner": 16,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": -0.0,
- "y": -0.0,
- "z": -0.0,
- "w": 1.0
- },
- {
- "Owner": 16,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 0.0,
- "y": 0.5,
- "z": -10.0
- }
- ],
- "Children": []
- },
- {
- "Name": "",
- "Id": 17,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 17,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 4127307817236017217,
- "Filepath": "assets:\\\\models\\spot-light.obj"
- },
- {
- "Owner": 17,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\spot light.material"
- }
- },
- {
- "Owner": 17,
- "Component Type": 17923777057385106779,
- "Component Name": "legion::rendering::light",
- "LightType": 2,
- "Attenuation": 50.0,
- "Intensity": 0.5,
- "Index": 10,
- "Direction": {
- "x": 0.0,
- "y": 0.0,
- "z": 1.0
- },
- "Falloff": 3.141592025756836,
- "Position": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "Angle": 0.7853981852531433,
- "Color": {
- "x": 0.0,
- "y": 1.0,
- "z": 0.0,
- "w": 1.0
- }
- },
- {
- "Owner": 17,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 1.0,
- "y": 1.0,
- "z": 1.0
- },
- {
- "Owner": 17,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": -0.0,
- "y": -0.0,
- "z": -0.0,
- "w": 1.0
- },
- {
- "Owner": 17,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 10.0,
- "y": 0.5,
- "z": -10.0
- }
- ],
- "Children": []
- },
- {
- "Name": "",
- "Id": 18,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 18,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 5592977308715235853,
- "Filepath": "assets:\\\\models\\point-light.obj"
- },
- {
- "Owner": 18,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\point light.material"
- }
- },
- {
- "Owner": 18,
- "Component Type": 17923777057385106779,
- "Component Name": "legion::rendering::light",
- "LightType": 0,
- "Attenuation": 50.0,
- "Intensity": 0.5,
- "Index": 13,
- "Direction": {
- "x": 0.0,
- "y": 0.0,
- "z": 1.0
- },
- "Falloff": 3.141592025756836,
- "Position": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "Angle": 0.7853981852531433,
- "Color": {
- "x": 1.0,
- "y": 0.0,
- "z": 0.0,
- "w": 1.0
- }
- },
- {
- "Owner": 18,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 1.0,
- "y": 1.0,
- "z": 1.0
- },
- {
- "Owner": 18,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.0,
- "y": 0.0,
- "z": 0.0,
- "w": 1.0
- },
- {
- "Owner": 18,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 0.0,
- "y": 1.0,
- "z": 0.0
- }
- ],
- "Children": []
- },
- {
- "Name": "",
- "Id": 19,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 19,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 5592977308715235853,
- "Filepath": "assets:\\\\models\\point-light.obj"
- },
- {
- "Owner": 19,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\point light.material"
- }
- },
- {
- "Owner": 19,
- "Component Type": 17923777057385106779,
- "Component Name": "legion::rendering::light",
- "LightType": 0,
- "Attenuation": 50.0,
- "Intensity": 0.5,
- "Index": 16,
- "Direction": {
- "x": 0.0,
- "y": 0.0,
- "z": 1.0
- },
- "Falloff": 3.141592025756836,
- "Position": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "Angle": 0.7853981852531433,
- "Color": {
- "x": 1.0,
- "y": 0.0,
- "z": 0.0,
- "w": 1.0
- }
- },
- {
- "Owner": 19,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 1.0,
- "y": 1.0,
- "z": 1.0
- },
- {
- "Owner": 19,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.0,
- "y": 0.0,
- "z": 0.0,
- "w": 1.0
- },
- {
- "Owner": 19,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": -10.0,
- "y": 1.0,
- "z": 0.0
- }
- ],
- "Children": []
- },
- {
- "Name": "",
- "Id": 20,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 20,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 5592977308715235853,
- "Filepath": "assets:\\\\models\\point-light.obj"
- },
- {
- "Owner": 20,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\point light.material"
- }
- },
- {
- "Owner": 20,
- "Component Type": 17923777057385106779,
- "Component Name": "legion::rendering::light",
- "LightType": 0,
- "Attenuation": 50.0,
- "Intensity": 0.5,
- "Index": 19,
- "Direction": {
- "x": 0.0,
- "y": 0.0,
- "z": 1.0
- },
- "Falloff": 3.141592025756836,
- "Position": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "Angle": 0.7853981852531433,
- "Color": {
- "x": 1.0,
- "y": 0.0,
- "z": 0.0,
- "w": 1.0
- }
- },
- {
- "Owner": 20,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 1.0,
- "y": 1.0,
- "z": 1.0
- },
- {
- "Owner": 20,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.0,
- "y": 0.0,
- "z": 0.0,
- "w": 1.0
- },
- {
- "Owner": 20,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 10.0,
- "y": 1.0,
- "z": 0.0
- }
- ],
- "Children": []
- },
- {
- "Name": "",
- "Id": 21,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 21,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 6546381963644500447,
- "Filepath": "assets:\\\\models\\suzanne-test.obj"
- },
- {
- "Owner": 21,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\suzanne\\Material.001.material"
- }
- },
- {
- "Owner": 21,
- "Component Type": 9566391368147235142,
- "Component Name": "legion::core::use_embedded_material",
- "EmbeddedMaterialPath": "assets://models/suzanne-test.obj",
- "MaterialName": "suzanne/Material.001"
- },
- {
- "Owner": 21,
- "Component Type": 13028145369583378910,
- "Component Name": "custom_component"
- },
- {
- "Owner": 21,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 1.0,
- "y": 1.0,
- "z": 1.0
- },
- {
- "Owner": 21,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.0,
- "y": 0.4662056863307953,
- "z": 0.0,
- "w": 0.8847147822380066
- },
- {
- "Owner": 21,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 0.0,
- "y": 3.0,
- "z": 5.099999904632568
- }
- ],
- "Children": []
- },
- {
- "Name": "",
- "Id": 22,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 22,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 6546381963644500447,
- "Filepath": "assets:\\\\models\\suzanne-test.obj"
- },
- {
- "Owner": 22,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\wireframe.material"
- }
- },
- {
- "Owner": 22,
- "Component Type": 13028145369583378910,
- "Component Name": "custom_component"
- },
- {
- "Owner": 22,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 1.0,
- "y": 1.0,
- "z": 1.0
- },
- {
- "Owner": 22,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.0,
- "y": 0.467636376619339,
- "z": 0.0,
- "w": 0.8839595317840576
- },
- {
- "Owner": 22,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 0.0,
- "y": 3.0,
- "z": 8.100000381469727
- }
- ],
- "Children": []
- },
- {
- "Name": "",
- "Id": 23,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 23,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 6546381963644500447,
- "Filepath": "assets:\\\\models\\suzanne-test.obj"
- },
- {
- "Owner": 23,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\copper.material"
- }
- },
- {
- "Owner": 23,
- "Component Type": 13028145369583378910,
- "Component Name": "custom_component"
- },
- {
- "Owner": 23,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 1.0,
- "y": 1.0,
- "z": 1.0
- },
- {
- "Owner": 23,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.0,
- "y": 0.46892985701560976,
- "z": 0.0,
- "w": 0.883274257183075
- },
- {
- "Owner": 23,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 0.0,
- "y": 3.0,
- "z": 11.100000381469727
- }
- ],
- "Children": []
- },
- {
- "Name": "",
- "Id": 24,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 24,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 5503224543670688896,
- "Filepath": "assets:\\\\models\\cube.obj"
- },
- {
- "Owner": 24,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\default.material"
- }
- },
- {
- "Owner": 24,
- "Component Type": 13028145369583378910,
- "Component Name": "custom_component"
- },
- {
- "Owner": 24,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 1.0,
- "y": 1.0,
- "z": 1.0
- },
- {
- "Owner": 24,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.0,
- "y": 0.47037407755851748,
- "z": 0.0,
- "w": 0.8825060129165649
- },
- {
- "Owner": 24,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 5.099999904632568,
- "y": 9.0,
- "z": 0.0
- }
- ],
- "Children": []
- },
- {
- "Name": "",
- "Id": 25,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 25,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 9915782786907616376,
- "Filepath": "assets:\\\\models\\sphere.obj"
- },
- {
- "Owner": 25,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\copper.material"
- }
- },
- {
- "Owner": 25,
- "Component Type": 13028145369583378910,
- "Component Name": "custom_component"
- },
- {
- "Owner": 25,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 1.0,
- "y": 1.0,
- "z": 1.0
- },
- {
- "Owner": 25,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.0,
- "y": 0.47164008021354678,
- "z": 0.0,
- "w": 0.8818301558494568
- },
- {
- "Owner": 25,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 0.0,
- "y": 3.0,
- "z": -5.099999904632568
- }
- ],
- "Children": []
- },
- {
- "Name": "",
- "Id": 26,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 26,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 9915782786907616376,
- "Filepath": "assets:\\\\models\\sphere.obj"
- },
- {
- "Owner": 26,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\granite2.material"
- }
- },
- {
- "Owner": 26,
- "Component Type": 13028145369583378910,
- "Component Name": "custom_component"
- },
- {
- "Owner": 26,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 1.0,
- "y": 1.0,
- "z": 1.0
- },
- {
- "Owner": 26,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.0,
- "y": 0.47287577390670779,
- "z": 0.0,
- "w": 0.881103515625
- },
- {
- "Owner": 26,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 0.0,
- "y": 3.0,
- "z": -8.0
- }
- ],
- "Children": []
- },
- {
- "Name": "",
- "Id": 27,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 27,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 9915782786907616376,
- "Filepath": "assets:\\\\models\\sphere.obj"
- },
- {
- "Owner": 27,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\rock2.material"
- }
- },
- {
- "Owner": 27,
- "Component Type": 13028145369583378910,
- "Component Name": "custom_component"
- },
- {
- "Owner": 27,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 1.0,
- "y": 1.0,
- "z": 1.0
- },
- {
- "Owner": 27,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.0,
- "y": 0.47440704703330996,
- "z": 0.0,
- "w": 0.8803448677062988
- },
- {
- "Owner": 27,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 0.0,
- "y": 3.0,
- "z": -2.200000047683716
- }
- ],
- "Children": []
- },
- {
- "Name": "",
- "Id": 28,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 28,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 9915782786907616376,
- "Filepath": "assets:\\\\models\\sphere.obj"
- },
- {
- "Owner": 28,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\default.material"
- }
- },
- {
- "Owner": 28,
- "Component Type": 13028145369583378910,
- "Component Name": "custom_component"
- },
- {
- "Owner": 28,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 1.0,
- "y": 1.0,
- "z": 1.0
- },
- {
- "Owner": 28,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.0,
- "y": 0.4759359657764435,
- "z": 0.0,
- "w": 0.8795194029808044
- },
- {
- "Owner": 28,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 4.0,
- "y": 3.0,
- "z": -8.0
- }
- ],
- "Children": []
- },
- {
- "Name": "",
- "Id": 29,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 29,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 16147701225056486911,
- "Filepath": "assets:\\\\models\\uvsphere.obj"
- },
- {
- "Owner": 29,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\copper.material"
- }
- },
- {
- "Owner": 29,
- "Component Type": 13028145369583378910,
- "Component Name": "custom_component"
- },
- {
- "Owner": 29,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 1.0,
- "y": 1.0,
- "z": 1.0
- },
- {
- "Owner": 29,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.0,
- "y": 0.4773801565170288,
- "z": 0.0,
- "w": 0.8787364959716797
- },
- {
- "Owner": 29,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 0.0,
- "y": 3.0,
- "z": -3.5999999046325685
- }
- ],
- "Children": []
- },
- {
- "Name": "",
- "Id": 30,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 30,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 16147701225056486911,
- "Filepath": "assets:\\\\models\\uvsphere.obj"
- },
- {
- "Owner": 30,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\granite2.material"
- }
- },
- {
- "Owner": 30,
- "Component Type": 13028145369583378910,
- "Component Name": "custom_component"
- },
- {
- "Owner": 30,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 1.0,
- "y": 1.0,
- "z": 1.0
- },
- {
- "Owner": 30,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.0,
- "y": 0.4789886772632599,
- "z": 0.0,
- "w": 0.8778609037399292
- },
- {
- "Owner": 30,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 0.0,
- "y": 3.0,
- "z": -6.5
- }
- ],
- "Children": []
- },
- {
- "Name": "",
- "Id": 31,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 31,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 16147701225056486911,
- "Filepath": "assets:\\\\models\\uvsphere.obj"
- },
- {
- "Owner": 31,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\rock2.material"
- }
- },
- {
- "Owner": 31,
- "Component Type": 13028145369583378910,
- "Component Name": "custom_component"
- },
- {
- "Owner": 31,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 1.0,
- "y": 1.0,
- "z": 1.0
- },
- {
- "Owner": 31,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.0,
- "y": 0.4804815948009491,
- "z": 0.0,
- "w": 0.8770447969436646
- },
- {
- "Owner": 31,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 0.0,
- "y": 3.0,
- "z": -0.699999988079071
- }
- ],
- "Children": []
- },
- {
- "Name": "",
- "Id": 32,
- "Name": "Entity",
- "Components": [
- {
- "Owner": 32,
- "Component Type": 17829838403855360956,
- "Component Name": "legion::core::mesh_filter",
- "value0": 16147701225056486911,
- "Filepath": "assets:\\\\models\\uvsphere.obj"
- },
- {
- "Owner": 32,
- "Component Type": 14566645459790289390,
- "Component Name": "legion::rendering::mesh_renderer",
- "material": {
- "MaterialFile": "assets:\\\\materials\\default.material"
- }
- },
- {
- "Owner": 32,
- "Component Type": 13028145369583378910,
- "Component Name": "custom_component"
- },
- {
- "Owner": 32,
- "Component Type": 7976621606494152606,
- "Component Name": "legion::core::scale",
- "x": 1.0,
- "y": 1.0,
- "z": 1.0
- },
- {
- "Owner": 32,
- "Component Type": 6841436683689612098,
- "Component Name": "legion::core::rotation",
- "x": 0.0,
- "y": 0.48212143778800967,
- "z": 0.0,
- "w": 0.8761447668075562
- },
- {
- "Owner": 32,
- "Component Type": 5024733841066084311,
- "Component Name": "legion::core::position",
- "x": 4.0,
- "y": 3.0,
- "z": -6.5
- }
- ],
- "Children": []
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/applications/sandbox/assets/scenes/scene1.bson b/applications/sandbox/assets/scenes/scene1.bson
new file mode 100644
index 000000000..a1e4fa637
Binary files /dev/null and b/applications/sandbox/assets/scenes/scene1.bson differ
diff --git a/applications/sandbox/assets/scenes/scene1.json b/applications/sandbox/assets/scenes/scene1.json
new file mode 100644
index 000000000..f072975ec
--- /dev/null
+++ b/applications/sandbox/assets/scenes/scene1.json
@@ -0,0 +1,96 @@
+{
+ "scene": {
+ "type_name": "legion::core::ecs::entity_data",
+ "name": "Root",
+ "active": true,
+ "children": [
+ {
+ "type_name": "legion::core::ecs::entity_data",
+ "name": "7",
+ "active": true,
+ "children": [
+ {
+ "type_name": "legion::core::ecs::entity_data",
+ "name": "8",
+ "active": true,
+ "children": [],
+ "components": [
+ {
+ "type_name": "example_comp",
+ "value": 0
+ }
+ ]
+ },
+ {
+ "type_name": "legion::core::ecs::entity_data",
+ "name": "9",
+ "active": true,
+ "children": [],
+ "components": []
+ }
+ ],
+ "components": []
+ },
+ {
+ "type_name": "legion::core::ecs::entity_data",
+ "name": "10",
+ "active": true,
+ "children": [
+ {
+ "type_name": "legion::core::ecs::entity_data",
+ "name": "11",
+ "active": true,
+ "children": [],
+ "components": [
+ {
+ "type_name": "example_comp",
+ "value": 1
+ }
+ ]
+ },
+ {
+ "type_name": "legion::core::ecs::entity_data",
+ "name": "12",
+ "active": true,
+ "children": [],
+ "components": []
+ }
+ ],
+ "components": []
+ },
+ {
+ "type_name": "legion::core::ecs::entity_data",
+ "name": "13",
+ "active": true,
+ "children": [
+ {
+ "type_name": "legion::core::ecs::entity_data",
+ "name": "14",
+ "active": true,
+ "children": [],
+ "components": [
+ {
+ "type_name": "example_comp",
+ "value": 2
+ }
+ ]
+ },
+ {
+ "type_name": "legion::core::ecs::entity_data",
+ "name": "15",
+ "active": true,
+ "children": [],
+ "components": []
+ }
+ ],
+ "components": []
+ }
+ ],
+ "components": [
+ {
+ "type_name": "example_comp",
+ "value": 1
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/applications/sandbox/assets/scenes/scene1.yaml b/applications/sandbox/assets/scenes/scene1.yaml
new file mode 100644
index 000000000..82eca5d8f
--- /dev/null
+++ b/applications/sandbox/assets/scenes/scene1.yaml
@@ -0,0 +1,71 @@
+scene:
+ type_name: legion::core::ecs::entity_data
+ name: Root
+ active: true
+ children:
+ - type_name: legion::core::ecs::entity_data
+ name: 7
+ active: true
+ children:
+ - type_name: legion::core::ecs::entity_data
+ name: 8
+ active: true
+ children:
+ []
+ components:
+ - type_name: example_comp
+ value: 0
+ - type_name: legion::core::ecs::entity_data
+ name: 9
+ active: true
+ children:
+ []
+ components:
+ []
+ components:
+ []
+ - type_name: legion::core::ecs::entity_data
+ name: 10
+ active: true
+ children:
+ - type_name: legion::core::ecs::entity_data
+ name: 11
+ active: true
+ children:
+ []
+ components:
+ - type_name: example_comp
+ value: 1
+ - type_name: legion::core::ecs::entity_data
+ name: 12
+ active: true
+ children:
+ []
+ components:
+ []
+ components:
+ []
+ - type_name: legion::core::ecs::entity_data
+ name: 13
+ active: true
+ children:
+ - type_name: legion::core::ecs::entity_data
+ name: 14
+ active: true
+ children:
+ []
+ components:
+ - type_name: example_comp
+ value: 2
+ - type_name: legion::core::ecs::entity_data
+ name: 15
+ active: true
+ children:
+ []
+ components:
+ []
+ components:
+ []
+ components:
+ - type_name: example_comp
+ value: 1
\ No newline at end of file
diff --git a/applications/sandbox/assets/scenes/scene2.bson b/applications/sandbox/assets/scenes/scene2.bson
new file mode 100644
index 000000000..a1e4fa637
Binary files /dev/null and b/applications/sandbox/assets/scenes/scene2.bson differ
diff --git a/applications/sandbox/assets/scenes/scene2.json b/applications/sandbox/assets/scenes/scene2.json
new file mode 100644
index 000000000..f072975ec
--- /dev/null
+++ b/applications/sandbox/assets/scenes/scene2.json
@@ -0,0 +1,96 @@
+{
+ "scene": {
+ "type_name": "legion::core::ecs::entity_data",
+ "name": "Root",
+ "active": true,
+ "children": [
+ {
+ "type_name": "legion::core::ecs::entity_data",
+ "name": "7",
+ "active": true,
+ "children": [
+ {
+ "type_name": "legion::core::ecs::entity_data",
+ "name": "8",
+ "active": true,
+ "children": [],
+ "components": [
+ {
+ "type_name": "example_comp",
+ "value": 0
+ }
+ ]
+ },
+ {
+ "type_name": "legion::core::ecs::entity_data",
+ "name": "9",
+ "active": true,
+ "children": [],
+ "components": []
+ }
+ ],
+ "components": []
+ },
+ {
+ "type_name": "legion::core::ecs::entity_data",
+ "name": "10",
+ "active": true,
+ "children": [
+ {
+ "type_name": "legion::core::ecs::entity_data",
+ "name": "11",
+ "active": true,
+ "children": [],
+ "components": [
+ {
+ "type_name": "example_comp",
+ "value": 1
+ }
+ ]
+ },
+ {
+ "type_name": "legion::core::ecs::entity_data",
+ "name": "12",
+ "active": true,
+ "children": [],
+ "components": []
+ }
+ ],
+ "components": []
+ },
+ {
+ "type_name": "legion::core::ecs::entity_data",
+ "name": "13",
+ "active": true,
+ "children": [
+ {
+ "type_name": "legion::core::ecs::entity_data",
+ "name": "14",
+ "active": true,
+ "children": [],
+ "components": [
+ {
+ "type_name": "example_comp",
+ "value": 2
+ }
+ ]
+ },
+ {
+ "type_name": "legion::core::ecs::entity_data",
+ "name": "15",
+ "active": true,
+ "children": [],
+ "components": []
+ }
+ ],
+ "components": []
+ }
+ ],
+ "components": [
+ {
+ "type_name": "example_comp",
+ "value": 1
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/applications/sandbox/assets/scenes/scene2.yaml b/applications/sandbox/assets/scenes/scene2.yaml
new file mode 100644
index 000000000..82eca5d8f
--- /dev/null
+++ b/applications/sandbox/assets/scenes/scene2.yaml
@@ -0,0 +1,71 @@
+scene:
+ type_name: legion::core::ecs::entity_data
+ name: Root
+ active: true
+ children:
+ - type_name: legion::core::ecs::entity_data
+ name: 7
+ active: true
+ children:
+ - type_name: legion::core::ecs::entity_data
+ name: 8
+ active: true
+ children:
+ []
+ components:
+ - type_name: example_comp
+ value: 0
+ - type_name: legion::core::ecs::entity_data
+ name: 9
+ active: true
+ children:
+ []
+ components:
+ []
+ components:
+ []
+ - type_name: legion::core::ecs::entity_data
+ name: 10
+ active: true
+ children:
+ - type_name: legion::core::ecs::entity_data
+ name: 11
+ active: true
+ children:
+ []
+ components:
+ - type_name: example_comp
+ value: 1
+ - type_name: legion::core::ecs::entity_data
+ name: 12
+ active: true
+ children:
+ []
+ components:
+ []
+ components:
+ []
+ - type_name: legion::core::ecs::entity_data
+ name: 13
+ active: true
+ children:
+ - type_name: legion::core::ecs::entity_data
+ name: 14
+ active: true
+ children:
+ []
+ components:
+ - type_name: example_comp
+ value: 2
+ - type_name: legion::core::ecs::entity_data
+ name: 15
+ active: true
+ children:
+ []
+ components:
+ []
+ components:
+ []
+ components:
+ - type_name: example_comp
+ value: 1
\ No newline at end of file
diff --git a/applications/sandbox/assets/serialization_output/output.json b/applications/sandbox/assets/serialization_output/output.json
new file mode 100644
index 000000000..584572b18
--- /dev/null
+++ b/applications/sandbox/assets/serialization_output/output.json
@@ -0,0 +1 @@
+{"":{"name":"World","alive":true,"active":true,"children":[{"legion::core::ecs::entity":{"name":"Skybox","alive":true,"active":true,"children":[],"components":[{"legion::core::scale":{"x":1.0,"y":1.0,"z":1.0}},{"legion::core::rotation":{"x":0.0,"y":0.0,"z":0.0,"w":1.0}},{"legion::core::position":{"x":0.0,"y":0.0,"z":0.0}}]}},{"legion::core::ecs::entity":{"name":"Ground Plane","alive":true,"active":true,"children":[],"components":[{"legion::core::scale":{"x":1.0,"y":1.0,"z":1.0}},{"legion::core::rotation":{"x":0.0,"y":0.0,"z":0.0,"w":1.0}},{"legion::core::position":{"x":0.0,"y":0.0,"z":0.0}}]}},{"legion::core::ecs::entity":{"name":"Camera","alive":true,"active":true,"children":[],"components":[{"legion::core::scale":{"x":1.0,"y":1.0,"z":1.0}},{"legion::core::rotation":{"x":-0.0,"y":-0.0,"z":-0.0,"w":1.0}},{"legion::core::position":{"x":0.0,"y":3.0,"z":-30.0}}]}},{"legion::core::ecs::entity":{"name":"Sun","alive":true,"active":true,"children":[],"components":[{"legion::core::scale":{"x":1.0,"y":1.0,"z":1.0}},{"legion::core::rotation":{"x":0.115916907787323,"y":-0.8804763555526733,"z":0.2798481583595276,"w":0.3647052049636841}},{"legion::core::position":{"x":0.0,"y":0.0,"z":0.0}}]}},{"legion::core::ecs::entity":{"name":"6","alive":true,"active":true,"children":[{"legion::core::ecs::entity":{"name":"7","alive":true,"active":true,"children":[],"components":[{"legion::core::rotation":{"x":0.0,"y":0.0,"z":0.0,"w":1.0}},{"legion::core::example_comp":{"value":1}}]}}],"components":[{"legion::core::example_comp":{"value":1}},{"legion::core::position":{"x":0.0,"y":0.0,"z":0.0}},{"legion::core::velocity":{"x":0.0,"y":0.0,"z":0.0}}]}},{"legion::core::ecs::entity":{"name":"8","alive":true,"active":true,"children":[{"legion::core::ecs::entity":{"name":"9","alive":true,"active":true,"children":[],"components":[{"legion::core::rotation":{"x":0.0,"y":0.0,"z":0.0,"w":1.0}},{"legion::core::example_comp":{"value":1}}]}}],"components":[{"legion::core::example_comp":{"value":1}},{"legion::core::position":{"x":0.0,"y":0.0,"z":0.0}},{"legion::core::velocity":{"x":0.0,"y":0.0,"z":0.0}}]}},{"legion::core::ecs::entity":{"name":"10","alive":true,"active":true,"children":[{"legion::core::ecs::entity":{"name":"11","alive":true,"active":true,"children":[],"components":[{"legion::core::rotation":{"x":0.0,"y":0.0,"z":0.0,"w":1.0}},{"legion::core::example_comp":{"value":1}}]}}],"components":[{"legion::core::example_comp":{"value":1}},{"legion::core::position":{"x":0.0,"y":0.0,"z":0.0}},{"legion::core::velocity":{"x":0.0,"y":0.0,"z":0.0}}]}},{"legion::core::ecs::entity":{"name":"12","alive":true,"active":true,"children":[{"legion::core::ecs::entity":{"name":"13","alive":true,"active":true,"children":[],"components":[{"legion::core::rotation":{"x":0.0,"y":0.0,"z":0.0,"w":1.0}},{"legion::core::example_comp":{"value":1}}]}}],"components":[{"legion::core::example_comp":{"value":1}},{"legion::core::position":{"x":0.0,"y":0.0,"z":0.0}},{"legion::core::velocity":{"x":0.0,"y":0.0,"z":0.0}}]}},{"legion::core::ecs::entity":{"name":"14","alive":true,"active":true,"children":[{"legion::core::ecs::entity":{"name":"15","alive":true,"active":true,"children":[],"components":[{"legion::core::rotation":{"x":0.0,"y":0.0,"z":0.0,"w":1.0}},{"legion::core::example_comp":{"value":1}}]}}],"components":[{"legion::core::example_comp":{"value":1}},{"legion::core::position":{"x":0.0,"y":0.0,"z":0.0}},{"legion::core::velocity":{"x":0.0,"y":0.0,"z":0.0}}]}},{"legion::core::ecs::entity":{"name":"16","alive":true,"active":true,"children":[{"legion::core::ecs::entity":{"name":"17","alive":true,"active":true,"children":[],"components":[{"legion::core::rotation":{"x":0.0,"y":0.0,"z":0.0,"w":1.0}},{"legion::core::example_comp":{"value":1}}]}}],"components":[{"legion::core::example_comp":{"value":1}},{"legion::core::position":{"x":0.0,"y":0.0,"z":0.0}},{"legion::core::velocity":{"x":0.0,"y":0.0,"z":0.0}}]}},{"legion::core::ecs::entity":{"name":"18","alive":true,"active":true,"children":[{"legion::core::ecs::entity":{"name":"19","alive":true,"active":true,"children":[],"components":[{"legion::core::rotation":{"x":0.0,"y":0.0,"z":0.0,"w":1.0}},{"legion::core::example_comp":{"value":1}}]}}],"components":[{"legion::core::example_comp":{"value":1}},{"legion::core::position":{"x":0.0,"y":0.0,"z":0.0}},{"legion::core::velocity":{"x":0.0,"y":0.0,"z":0.0}}]}},{"legion::core::ecs::entity":{"name":"20","alive":true,"active":true,"children":[{"legion::core::ecs::entity":{"name":"21","alive":true,"active":true,"children":[],"components":[{"legion::core::rotation":{"x":0.0,"y":0.0,"z":0.0,"w":1.0}},{"legion::core::example_comp":{"value":1}}]}}],"components":[{"legion::core::example_comp":{"value":1}},{"legion::core::position":{"x":0.0,"y":0.0,"z":0.0}},{"legion::core::velocity":{"x":0.0,"y":0.0,"z":0.0}}]}},{"legion::core::ecs::entity":{"name":"22","alive":true,"active":true,"children":[{"legion::core::ecs::entity":{"name":"23","alive":true,"active":true,"children":[],"components":[{"legion::core::rotation":{"x":0.0,"y":0.0,"z":0.0,"w":1.0}},{"legion::core::example_comp":{"value":1}}]}}],"components":[{"legion::core::example_comp":{"value":1}},{"legion::core::position":{"x":0.0,"y":0.0,"z":0.0}},{"legion::core::velocity":{"x":0.0,"y":0.0,"z":0.0}}]}},{"legion::core::ecs::entity":{"name":"24","alive":true,"active":true,"children":[{"legion::core::ecs::entity":{"name":"25","alive":true,"active":true,"children":[],"components":[{"legion::core::rotation":{"x":0.0,"y":0.0,"z":0.0,"w":1.0}},{"legion::core::example_comp":{"value":1}}]}}],"components":[{"legion::core::example_comp":{"value":1}},{"legion::core::position":{"x":0.0,"y":0.0,"z":0.0}},{"legion::core::velocity":{"x":0.0,"y":0.0,"z":0.0}}]}}],"components":[]}}
\ No newline at end of file
diff --git a/applications/sandbox/imgui.ini b/applications/sandbox/imgui.ini
index fa7fa31e2..28c30a17b 100644
--- a/applications/sandbox/imgui.ini
+++ b/applications/sandbox/imgui.ini
@@ -39,8 +39,8 @@ Size=450,444
Collapsed=0
[Window][###]
-Pos=46,71
-Size=268,967
+Pos=5,20
+Size=383,1033
Collapsed=0
[Window][Edit Transform]
@@ -49,7 +49,7 @@ Size=424,457
Collapsed=0
[Window][Edit Entity]
-Pos=1355,192
-Size=472,453
+Pos=902,64
+Size=538,832
Collapsed=0
diff --git a/applications/sandbox/sandbox.vcxproj b/applications/sandbox/sandbox.vcxproj
index 071ace8cb..1d8a53b0e 100644
--- a/applications/sandbox/sandbox.vcxproj
+++ b/applications/sandbox/sandbox.vcxproj
@@ -68,7 +68,7 @@
true
stdcpp17
true
- -Werror=return-type %(AdditionalOptions)
+ -Werror=return-type %(AdditionalOptions)
AdvancedVectorExtensions
MultiThreadedDebugDLL
@@ -76,7 +76,7 @@
Console
true
$(SolutionDir)lib\;$(SolutionDir)deps\lib\;%(AdditionalLibraryDirectories)
- legion-core-d.lib;legion-application-d.lib;legion-rendering-d.lib;legion-audio-d.lib;OpenCL.lib;OpenAL32.lib;glfw3.lib;Voro++D.lib;OptickCore.lib;%(AdditionalDependencies)
+ legion-core-d.lib;legion-application-d.lib;legion-rendering-d.lib;legion-audio-d.lib;OpenCL.lib;OpenAL32.lib;glfw3.lib;Voro++D.lib;OptickCore.lib;yaml-cpp-d.lib;%(AdditionalDependencies)
@@ -101,7 +101,7 @@
true
false
$(SolutionDir)lib\;$(SolutionDir)deps\lib\;%(AdditionalLibraryDirectories)
- legion-core.lib;legion-application.lib;legion-rendering.lib;legion-audio.lib;OpenCL.lib;OpenAL32.lib;glfw3.lib;Voro++.lib;OptickCore.lib;%(AdditionalDependencies)
+ legion-core.lib;legion-application.lib;legion-rendering.lib;legion-audio.lib;OpenCL.lib;OpenAL32.lib;glfw3.lib;Voro++.lib;OptickCore.lib;yaml-cpp.lib;%(AdditionalDependencies)
'
- return 0; // Do not produce comment node
- }
-
- // Remember value start
- Ch *value_ = text;
-
- // Skip until end of comment
- while (text[0] != Ch('-') || text[1] != Ch('-') || text[2] != Ch('>'))
- {
- if (!text[0])
- CEREAL_RAPIDXML_PARSE_ERROR("unexpected end of data", text);
- ++text;
- }
-
- // Create comment node
- xml_node *comment = this->allocate_node(node_comment);
- comment->value(value_, static_cast(text - value_));
-
- // Place zero terminator after comment value
- if (!(Flags & parse_no_string_terminators))
- *text = Ch('\0');
-
- text += 3; // Skip '-->'
- return comment;
- }
-
- // Parse DOCTYPE
- template
- xml_node *parse_doctype(Ch *&text)
- {
- // Remember value start
- Ch *value_ = text;
-
- // Skip to >
- while (*text != Ch('>'))
- {
- // Determine character type
- switch (*text)
- {
-
- // If '[' encountered, scan for matching ending ']' using naive algorithm with depth
- // This works for all W3C test files except for 2 most wicked
- case Ch('['):
- {
- ++text; // Skip '['
- int depth = 1;
- while (depth > 0)
- {
- switch (*text)
- {
- case Ch('['): ++depth; break;
- case Ch(']'): --depth; break;
- case 0: CEREAL_RAPIDXML_PARSE_ERROR("unexpected end of data", text);
- }
- ++text;
- }
- break;
- }
-
- // Error on end of text
- case Ch('\0'):
- CEREAL_RAPIDXML_PARSE_ERROR("unexpected end of data", text);
-
- // Other character, skip it
- default:
- ++text;
-
- }
- }
-
- // If DOCTYPE nodes enabled
- if (Flags & parse_doctype_node)
- {
- // Create a new doctype node
- xml_node *doctype = this->allocate_node(node_doctype);
- doctype->value(value_, static_cast(text - value_));
-
- // Place zero terminator after value
- if (!(Flags & parse_no_string_terminators))
- *text = Ch('\0');
-
- text += 1; // skip '>'
- return doctype;
- }
- else
- {
- text += 1; // skip '>'
- return 0;
- }
-
- }
-
- // Parse PI
- template
- xml_node *parse_pi(Ch *&text)
- {
- // If creation of PI nodes is enabled
- if (Flags & parse_pi_nodes)
- {
- // Create pi node
- xml_node *pi = this->allocate_node(node_pi);
-
- // Extract PI target name
- Ch *name_ = text;
- skip(text);
- if (text == name_)
- CEREAL_RAPIDXML_PARSE_ERROR("expected PI target", text);
- pi->name(name_, static_cast(text - name_));
-
- // Skip whitespace between pi target and pi
- skip(text);
-
- // Remember start of pi
- Ch *value_ = text;
-
- // Skip to '?>'
- while (text[0] != Ch('?') || text[1] != Ch('>'))
- {
- if (*text == Ch('\0'))
- CEREAL_RAPIDXML_PARSE_ERROR("unexpected end of data", text);
- ++text;
- }
-
- // Set pi value (verbatim, no entity expansion or whitespace normalization)
- pi->value(value_, static_cast(text - value_));
-
- // Place zero terminator after name and value
- if (!(Flags & parse_no_string_terminators))
- {
- pi->name()[pi->name_size()] = Ch('\0');
- pi->value()[pi->value_size()] = Ch('\0');
- }
-
- text += 2; // Skip '?>'
- return pi;
- }
- else
- {
- // Skip to '?>'
- while (text[0] != Ch('?') || text[1] != Ch('>'))
- {
- if (*text == Ch('\0'))
- CEREAL_RAPIDXML_PARSE_ERROR("unexpected end of data", text);
- ++text;
- }
- text += 2; // Skip '?>'
- return 0;
- }
- }
-
- // Parse and append data
- // Return character that ends data.
- // This is necessary because this character might have been overwritten by a terminating 0
- template
- Ch parse_and_append_data(xml_node *node, Ch *&text, Ch *contents_start)
- {
- // Backup to contents start if whitespace trimming is disabled
- if (!(Flags & parse_trim_whitespace))
- text = contents_start;
-
- const bool preserve_space = internal::preserve_space(node);
-
- // Skip until end of data
- Ch *value_ = text, *end;
- if ((Flags & parse_normalize_whitespace) && !preserve_space)
- end = skip_and_expand_character_refs(text, false);
- else
- end = skip_and_expand_character_refs(text, preserve_space);
-
- // Trim trailing whitespace if flag is set; leading was already trimmed by whitespace skip after >
- if ((Flags & parse_trim_whitespace) && !preserve_space)
- {
- if (Flags & parse_normalize_whitespace)
- {
- // Whitespace is already condensed to single space characters by skipping function, so just trim 1 char off the end
- if (*(end - 1) == Ch(' '))
- --end;
- }
- else
- {
- // Backup until non-whitespace character is found
- while (whitespace_pred::test(*(end - 1)))
- --end;
- }
- }
-
- // If characters are still left between end and value (this test is only necessary if normalization is enabled)
- // Create new data node
- if (!(Flags & parse_no_data_nodes))
- {
- xml_node *data = this->allocate_node(node_data);
- data->value(value_, static_cast(end - value_));
- node->append_node(data);
- }
-
- // Add data to parent node if no data exists yet
- if (!(Flags & parse_no_element_values))
- if (*node->value() == Ch('\0'))
- node->value(value_, static_cast(end - value_));
-
- // Place zero terminator after value
- if (!(Flags & parse_no_string_terminators))
- {
- Ch ch = *text;
- *end = Ch('\0');
- return ch; // Return character that ends data; this is required because zero terminator overwritten it
- }
-
- // Return character that ends data
- return *text;
- }
-
- // Parse CDATA
- template
- xml_node *parse_cdata(Ch *&text)
- {
- // If CDATA is disabled
- if (Flags & parse_no_data_nodes)
- {
- // Skip until end of cdata
- while (text[0] != Ch(']') || text[1] != Ch(']') || text[2] != Ch('>'))
- {
- if (!text[0])
- CEREAL_RAPIDXML_PARSE_ERROR("unexpected end of data", text);
- ++text;
- }
- text += 3; // Skip ]]>
- return 0; // Do not produce CDATA node
- }
-
- // Skip until end of cdata
- Ch *value_ = text;
- while (text[0] != Ch(']') || text[1] != Ch(']') || text[2] != Ch('>'))
- {
- if (!text[0])
- CEREAL_RAPIDXML_PARSE_ERROR("unexpected end of data", text);
- ++text;
- }
-
- // Create new cdata node
- xml_node *cdata = this->allocate_node(node_cdata);
- cdata->value(value_, static_cast(text - value_));
-
- // Place zero terminator after value
- if (!(Flags & parse_no_string_terminators))
- *text = Ch('\0');
-
- text += 3; // Skip ]]>
- return cdata;
- }
-
- // Parse element node
- template
- xml_node *parse_element(Ch *&text)
- {
- // Create element node
- xml_node *element = this->allocate_node(node_element);
-
- // Extract element name
- Ch *name_ = text;
- skip(text);
- if (text == name_)
- CEREAL_RAPIDXML_PARSE_ERROR("expected element name", text);
- element->name(name_, static_cast(text - name_));
-
- // Skip whitespace between element name and attributes or >
- skip(text);
-
- // Parse attributes, if any
- parse_node_attributes(text, element);
-
- // Determine ending type
- if (*text == Ch('>'))
- {
- ++text;
- parse_node_contents(text, element);
- }
- else if (*text == Ch('/'))
- {
- ++text;
- if (*text != Ch('>'))
- CEREAL_RAPIDXML_PARSE_ERROR("expected >", text);
- ++text;
- }
- else
- CEREAL_RAPIDXML_PARSE_ERROR("expected >", text);
-
- // Place zero terminator after name
- if (!(Flags & parse_no_string_terminators))
- element->name()[element->name_size()] = Ch('\0');
-
- // Return parsed element
- return element;
- }
-
- // Determine node type, and parse it
- template
- xml_node *parse_node(Ch *&text)
- {
- // Parse proper node type
- switch (text[0])
- {
-
- // <...
- default:
- // Parse and append element node
- return parse_element(text);
-
- // ...
- case Ch('?'):
- ++text; // Skip ?
- if ((text[0] == Ch('x') || text[0] == Ch('X')) &&
- (text[1] == Ch('m') || text[1] == Ch('M')) &&
- (text[2] == Ch('l') || text[2] == Ch('L')) &&
- whitespace_pred::test(text[3]))
- {
- // '(text);
- }
- else
- {
- // Parse PI
- return parse_pi(text);
- }
-
- // (text);
- }
- break;
-
- // (text);
- }
- break;
-
- // (text);
- }
-
- } // switch
-
- // Attempt to skip other, unrecognized node types starting with '))
- {
- if (*text == 0)
- CEREAL_RAPIDXML_PARSE_ERROR("unexpected end of data", text);
- ++text;
- }
- ++text; // Skip '>'
- return 0; // No node recognized
-
- }
- }
-
- // Parse contents of the node - children, data etc.
- template
- void parse_node_contents(Ch *&text, xml_node *node)
- {
- // For all children and text
- while (1)
- {
- // Skip whitespace between > and node contents
- Ch *contents_start = text; // Store start of node contents before whitespace is skipped
- skip(text);
- Ch next_char = *text;
-
- // After data nodes, instead of continuing the loop, control jumps here.
- // This is because zero termination inside parse_and_append_data() function
- // would wreak havoc with the above code.
- // Also, skipping whitespace after data nodes is unnecessary.
- after_data_node:
-
- // Determine what comes next: node closing, child node, data node, or 0?
- switch (next_char)
- {
-
- // Node closing or child node
- case Ch('<'):
- if (text[1] == Ch('/'))
- {
- Ch *contents_end = 0;
- if (internal::preserve_space(node))
- {
- contents_end = text;
- }
-
- // Node closing
- text += 2; // Skip ''
- if (Flags & parse_validate_closing_tags)
- {
- // Skip and validate closing tag name
- Ch *closing_name = text;
- skip(text);
- if (!internal::compare(node->name(), node->name_size(), closing_name, static_cast(text - closing_name), true))
- CEREAL_RAPIDXML_PARSE_ERROR("invalid closing tag name", text);
- }
- else
- {
- // No validation, just skip name
- skip(text);
- }
- // Skip remaining whitespace after node name
- skip(text);
- if (*text != Ch('>'))
- CEREAL_RAPIDXML_PARSE_ERROR("expected >", text);
- ++text; // Skip '>'
-
- if (contents_end && contents_end != contents_start)
- {
- node->value(contents_start, static_cast(contents_end - contents_start));
- node->value()[node->value_size()] = Ch('\0');
- }
- return; // Node closed, finished parsing contents
- }
- else
- {
- // Child node
- ++text; // Skip '<'
- if (xml_node *child = parse_node(text))
- node->append_node(child);
- }
- break;
-
- // End of data - error
- case Ch('\0'):
- CEREAL_RAPIDXML_PARSE_ERROR("unexpected end of data", text);
-
- // Data node
- default:
- next_char = parse_and_append_data(node, text, contents_start);
- goto after_data_node; // Bypass regular processing after data nodes
-
- }
- }
- }
-
- // Parse XML attributes of the node
- template
- void parse_node_attributes(Ch *&text, xml_node *node)
- {
- // For all attributes
- while (attribute_name_pred::test(*text))
- {
- // Extract attribute name
- Ch *name_ = text;
- ++text; // Skip first character of attribute name
- skip(text);
- if (text == name_)
- CEREAL_RAPIDXML_PARSE_ERROR("expected attribute name", name_);
-
- // Create new attribute
- xml_attribute *attribute = this->allocate_attribute();
- attribute->name(name_, static_cast(text - name_));
- node->append_attribute(attribute);
-
- // Skip whitespace after attribute name
- skip(text);
-
- // Skip =
- if (*text != Ch('='))
- CEREAL_RAPIDXML_PARSE_ERROR("expected =", text);
- ++text;
-
- // Add terminating zero after name
- if (!(Flags & parse_no_string_terminators))
- attribute->name()[attribute->name_size()] = 0;
-
- // Skip whitespace after =
- skip(text);
-
- // Skip quote and remember if it was ' or "
- Ch quote = *text;
- if (quote != Ch('\'') && quote != Ch('"'))
- CEREAL_RAPIDXML_PARSE_ERROR("expected ' or \"", text);
- ++text;
-
- // Extract attribute value and expand char refs in it
- Ch *value_ = text, *end;
- const int AttFlags = Flags & ~parse_normalize_whitespace; // No whitespace normalization in attributes
- if (quote == Ch('\''))
- end = skip_and_expand_character_refs, attribute_value_pure_pred, AttFlags>(text, false);
- else
- end = skip_and_expand_character_refs, attribute_value_pure_pred, AttFlags>(text, false);
-
- // Set attribute value
- attribute->value(value_, static_cast(end - value_));
-
- // Make sure that end quote is present
- if (*text != quote)
- CEREAL_RAPIDXML_PARSE_ERROR("expected ' or \"", text);
- ++text; // Skip quote
-
- // Add terminating zero after value
- if (!(Flags & parse_no_string_terminators))
- attribute->value()[attribute->value_size()] = 0;
-
- // Skip whitespace after attribute value
- skip(text);
- }
- }
-
- };
-
- //! \cond internal
- namespace internal
- {
-
- // Whitespace (space \n \r \t)
- template
- const unsigned char lookup_tables::lookup_whitespace[256] =
- {
- // 0 1 2 3 4 5 6 7 8 9 A B C D E F
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, // 0
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 1
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 2
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 3
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 4
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 5
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 6
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 7
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 8
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 9
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // A
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // B
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // C
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // D
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // E
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 // F
- };
-
- // Node name (anything but space \n \r \t / > ? \0)
- template
- const unsigned char lookup_tables::lookup_node_name[256] =
- {
- // 0 1 2 3 4 5 6 7 8 9 A B C D E F
- 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, // 0
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 1
- 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, // 2
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, // 3
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 4
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 5
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 6
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 7
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 8
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 9
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // A
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // B
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // C
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // D
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // E
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // F
- };
-
- // Text (i.e. PCDATA) (anything but < \0)
- template
- const unsigned char lookup_tables::lookup_text[256] =
- {
- // 0 1 2 3 4 5 6 7 8 9 A B C D E F
- 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 1
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 2
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, // 3
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 4
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 5
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 6
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 7
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 8
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 9
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // A
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // B
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // C
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // D
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // E
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // F
- };
-
- // Text (i.e. PCDATA) that does not require processing when ws normalization is disabled
- // (anything but < \0 &)
- template
- const unsigned char lookup_tables::lookup_text_pure_no_ws[256] =
- {
- // 0 1 2 3 4 5 6 7 8 9 A B C D E F
- 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 1
- 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 2
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, // 3
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 4
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 5
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 6
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 7
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 8
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 9
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // A
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // B
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // C
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // D
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // E
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // F
- };
-
- // Text (i.e. PCDATA) that does not require processing when ws normalizationis is enabled
- // (anything but < \0 & space \n \r \t)
- template
- const unsigned char lookup_tables::lookup_text_pure_with_ws[256] =
- {
- // 0 1 2 3 4 5 6 7 8 9 A B C D E F
- 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, // 0
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 1
- 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 2
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, // 3
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 4
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 5
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 6
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 7
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 8
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 9
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // A
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // B
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // C
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // D
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // E
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // F
- };
-
- // Attribute name (anything but space \n \r \t / < > = ? ! \0)
- template
- const unsigned char lookup_tables::lookup_attribute_name[256] =
- {
- // 0 1 2 3 4 5 6 7 8 9 A B C D E F
- 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, // 0
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 1
- 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, // 2
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, // 3
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 4
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 5
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 6
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 7
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 8
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 9
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // A
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // B
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // C
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // D
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // E
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // F
- };
-
- // Attribute data with single quote (anything but ' \0)
- template
- const unsigned char lookup_tables::lookup_attribute_data_1[256] =
- {
- // 0 1 2 3 4 5 6 7 8 9 A B C D E F
- 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 1
- 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, // 2
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 3
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 4
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 5
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 6
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 7
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 8
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 9
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // A
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // B
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // C
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // D
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // E
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // F
- };
-
- // Attribute data with single quote that does not require processing (anything but ' \0 &)
- template
- const unsigned char lookup_tables::lookup_attribute_data_1_pure[256] =
- {
- // 0 1 2 3 4 5 6 7 8 9 A B C D E F
- 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 1
- 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, // 2
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 3
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 4
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 5
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 6
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 7
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 8
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 9
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // A
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // B
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // C
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // D
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // E
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // F
- };
-
- // Attribute data with double quote (anything but " \0)
- template
- const unsigned char lookup_tables::lookup_attribute_data_2[256] =
- {
- // 0 1 2 3 4 5 6 7 8 9 A B C D E F
- 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 1
- 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 2
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 3
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 4
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 5
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 6
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 7
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 8
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 9
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // A
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // B
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // C
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // D
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // E
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // F
- };
-
- // Attribute data with double quote that does not require processing (anything but " \0 &)
- template
- const unsigned char lookup_tables::lookup_attribute_data_2_pure[256] =
- {
- // 0 1 2 3 4 5 6 7 8 9 A B C D E F
- 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 1
- 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 2
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 3
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 4
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 5
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 6
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 7
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 8
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 9
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // A
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // B
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // C
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // D
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // E
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // F
- };
-
- // Digits (dec and hex, 255 denotes end of numeric character reference)
- template
- const unsigned char lookup_tables::lookup_digits[256] =
- {
- // 0 1 2 3 4 5 6 7 8 9 A B C D E F
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // 0
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // 1
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // 2
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,255,255,255,255,255,255, // 3
- 255, 10, 11, 12, 13, 14, 15,255,255,255,255,255,255,255,255,255, // 4
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // 5
- 255, 10, 11, 12, 13, 14, 15,255,255,255,255,255,255,255,255,255, // 6
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // 7
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // 8
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // 9
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // A
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // B
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // C
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // D
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // E
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255 // F
- };
-
- // Upper case conversion
- template
- const unsigned char lookup_tables::lookup_upcase[256] =
- {
- // 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A B C D E F
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, // 0
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, // 1
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, // 2
- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, // 3
- 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, // 4
- 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, // 5
- 96, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, // 6
- 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 123,124,125,126,127, // 7
- 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143, // 8
- 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159, // 9
- 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175, // A
- 176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191, // B
- 192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207, // C
- 208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223, // D
- 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239, // E
- 240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255 // F
- };
- }
- //! \endcond
-
-}
-} // end namespace cereal
-
-// Undefine internal macros
-#undef CEREAL_RAPIDXML_PARSE_ERROR
-
-// On MSVC, restore warnings state
-#ifdef _MSC_VER
- #pragma warning(pop)
-#endif
-
-#endif
diff --git a/deps/include/cereal/external/rapidxml/rapidxml_iterators.hpp b/deps/include/cereal/external/rapidxml/rapidxml_iterators.hpp
deleted file mode 100644
index 736d46c39..000000000
--- a/deps/include/cereal/external/rapidxml/rapidxml_iterators.hpp
+++ /dev/null
@@ -1,175 +0,0 @@
-#ifndef CEREAL_RAPIDXML_ITERATORS_HPP_INCLUDED
-#define CEREAL_RAPIDXML_ITERATORS_HPP_INCLUDED
-
-// Copyright (C) 2006, 2009 Marcin Kalicinski
-// Version 1.13
-// Revision $DateTime: 2009/05/13 01:46:17 $
-
-#include "rapidxml.hpp"
-
-namespace cereal {
-namespace rapidxml
-{
-
- //! Iterator of child nodes of xml_node
- template
- class node_iterator
- {
-
- public:
-
- typedef typename xml_node value_type;
- typedef typename xml_node &reference;
- typedef typename xml_node *pointer;
- typedef std::ptrdiff_t difference_type;
- typedef std::bidirectional_iterator_tag iterator_category;
-
- node_iterator()
- : m_node(0)
- {
- }
-
- node_iterator(xml_node *node)
- : m_node(node->first_node())
- {
- }
-
- reference operator *() const
- {
- assert(m_node);
- return *m_node;
- }
-
- pointer operator->() const
- {
- assert(m_node);
- return m_node;
- }
-
- node_iterator& operator++()
- {
- assert(m_node);
- m_node = m_node->next_sibling();
- return *this;
- }
-
- node_iterator operator++(int)
- {
- node_iterator tmp = *this;
- ++this;
- return tmp;
- }
-
- node_iterator& operator--()
- {
- assert(m_node && m_node->previous_sibling());
- m_node = m_node->previous_sibling();
- return *this;
- }
-
- node_iterator operator--(int)
- {
- node_iterator tmp = *this;
- ++this;
- return tmp;
- }
-
- bool operator ==(const node_iterator &rhs)
- {
- return m_node == rhs.m_node;
- }
-
- bool operator !=(const node_iterator &rhs)
- {
- return m_node != rhs.m_node;
- }
-
- private:
-
- xml_node *m_node;
-
- };
-
- //! Iterator of child attributes of xml_node
- template
- class attribute_iterator
- {
-
- public:
-
- typedef typename xml_attribute value_type;
- typedef typename xml_attribute &reference;
- typedef typename xml_attribute *pointer;
- typedef std::ptrdiff_t difference_type;
- typedef std::bidirectional_iterator_tag iterator_category;
-
- attribute_iterator()
- : m_attribute(0)
- {
- }
-
- attribute_iterator(xml_node *node)
- : m_attribute(node->first_attribute())
- {
- }
-
- reference operator *() const
- {
- assert(m_attribute);
- return *m_attribute;
- }
-
- pointer operator->() const
- {
- assert(m_attribute);
- return m_attribute;
- }
-
- attribute_iterator& operator++()
- {
- assert(m_attribute);
- m_attribute = m_attribute->next_attribute();
- return *this;
- }
-
- attribute_iterator operator++(int)
- {
- attribute_iterator tmp = *this;
- ++this;
- return tmp;
- }
-
- attribute_iterator& operator--()
- {
- assert(m_attribute && m_attribute->previous_attribute());
- m_attribute = m_attribute->previous_attribute();
- return *this;
- }
-
- attribute_iterator operator--(int)
- {
- attribute_iterator tmp = *this;
- ++this;
- return tmp;
- }
-
- bool operator ==(const attribute_iterator &rhs)
- {
- return m_attribute == rhs.m_attribute;
- }
-
- bool operator !=(const attribute_iterator &rhs)
- {
- return m_attribute != rhs.m_attribute;
- }
-
- private:
-
- xml_attribute *m_attribute;
-
- };
-
-}
-} // namespace cereal
-
-#endif
diff --git a/deps/include/cereal/external/rapidxml/rapidxml_print.hpp b/deps/include/cereal/external/rapidxml/rapidxml_print.hpp
deleted file mode 100644
index 7fbb962e1..000000000
--- a/deps/include/cereal/external/rapidxml/rapidxml_print.hpp
+++ /dev/null
@@ -1,428 +0,0 @@
-#ifndef CEREAL_RAPIDXML_PRINT_HPP_INCLUDED
-#define CEREAL_RAPIDXML_PRINT_HPP_INCLUDED
-
-// Copyright (C) 2006, 2009 Marcin Kalicinski
-// Version 1.13
-// Revision $DateTime: 2009/05/13 01:46:17 $
-
-#include "rapidxml.hpp"
-
-// Only include streams if not disabled
-#ifndef CEREAL_RAPIDXML_NO_STREAMS
- #include
- #include
-#endif
-
-namespace cereal {
-namespace rapidxml
-{
-
- ///////////////////////////////////////////////////////////////////////
- // Printing flags
-
- const int print_no_indenting = 0x1; //!< Printer flag instructing the printer to suppress indenting of XML. See print() function.
-
- ///////////////////////////////////////////////////////////////////////
- // Internal
-
- //! \cond internal
- namespace internal
- {
-
- ///////////////////////////////////////////////////////////////////////////
- // Internal character operations
-
- // Copy characters from given range to given output iterator
- template
- inline OutIt copy_chars(const Ch *begin, const Ch *end, OutIt out)
- {
- while (begin != end)
- *out++ = *begin++;
- return out;
- }
-
- // Copy characters from given range to given output iterator and expand
- // characters into references (< > ' " &)
- template
- inline OutIt copy_and_expand_chars(const Ch *begin, const Ch *end, Ch noexpand, OutIt out)
- {
- while (begin != end)
- {
- if (*begin == noexpand)
- {
- *out++ = *begin; // No expansion, copy character
- }
- else
- {
- switch (*begin)
- {
- case Ch('<'):
- *out++ = Ch('&'); *out++ = Ch('l'); *out++ = Ch('t'); *out++ = Ch(';');
- break;
- case Ch('>'):
- *out++ = Ch('&'); *out++ = Ch('g'); *out++ = Ch('t'); *out++ = Ch(';');
- break;
- case Ch('\''):
- *out++ = Ch('&'); *out++ = Ch('a'); *out++ = Ch('p'); *out++ = Ch('o'); *out++ = Ch('s'); *out++ = Ch(';');
- break;
- case Ch('"'):
- *out++ = Ch('&'); *out++ = Ch('q'); *out++ = Ch('u'); *out++ = Ch('o'); *out++ = Ch('t'); *out++ = Ch(';');
- break;
- case Ch('&'):
- *out++ = Ch('&'); *out++ = Ch('a'); *out++ = Ch('m'); *out++ = Ch('p'); *out++ = Ch(';');
- break;
- default:
- *out++ = *begin; // No expansion, copy character
- }
- }
- ++begin; // Step to next character
- }
- return out;
- }
-
- // Fill given output iterator with repetitions of the same character
- template
- inline OutIt fill_chars(OutIt out, int n, Ch ch)
- {
- for (int i = 0; i < n; ++i)
- *out++ = ch;
- return out;
- }
-
- // Find character
- template
- inline bool find_char(const Ch *begin, const Ch *end)
- {
- while (begin != end)
- if (*begin++ == ch)
- return true;
- return false;
- }
-
- ///////////////////////////////////////////////////////////////////////////
- // Internal printing operations
-
- // Print node
- template
- inline OutIt print_node(OutIt out, const xml_node *node, int flags, int indent);
-
- // Print children of the node
- template
- inline OutIt print_children(OutIt out, const xml_node *node, int flags, int indent)
- {
- for (xml_node *child = node->first_node(); child; child = child->next_sibling())
- out = print_node(out, child, flags, indent);
- return out;
- }
-
- // Print attributes of the node
- template
- inline OutIt print_attributes(OutIt out, const xml_node *node, int /*flags*/)
- {
- for (xml_attribute *attribute = node->first_attribute(); attribute; attribute = attribute->next_attribute())
- {
- if (attribute->name() && attribute->value())
- {
- // Print attribute name
- *out = Ch(' '), ++out;
- out = copy_chars(attribute->name(), attribute->name() + attribute->name_size(), out);
- *out = Ch('='), ++out;
- // Print attribute value using appropriate quote type
- if (find_char(attribute->value(), attribute->value() + attribute->value_size()))
- {
- *out = Ch('\''), ++out;
- out = copy_and_expand_chars(attribute->value(), attribute->value() + attribute->value_size(), Ch('"'), out);
- *out = Ch('\''), ++out;
- }
- else
- {
- *out = Ch('"'), ++out;
- out = copy_and_expand_chars(attribute->value(), attribute->value() + attribute->value_size(), Ch('\''), out);
- *out = Ch('"'), ++out;
- }
- }
- }
- return out;
- }
-
- // Print data node
- template
- inline OutIt print_data_node(OutIt out, const xml_node *node, int flags, int indent)
- {
- assert(node->type() == node_data);
- if (!(flags & print_no_indenting))
- out = fill_chars(out, indent, Ch('\t'));
- out = copy_and_expand_chars(node->value(), node->value() + node->value_size(), Ch(0), out);
- return out;
- }
-
- // Print data node
- template
- inline OutIt print_cdata_node(OutIt out, const xml_node *node, int flags, int indent)
- {
- assert(node->type() == node_cdata);
- if (!(flags & print_no_indenting))
- out = fill_chars(out, indent, Ch('\t'));
- *out = Ch('<'); ++out;
- *out = Ch('!'); ++out;
- *out = Ch('['); ++out;
- *out = Ch('C'); ++out;
- *out = Ch('D'); ++out;
- *out = Ch('A'); ++out;
- *out = Ch('T'); ++out;
- *out = Ch('A'); ++out;
- *out = Ch('['); ++out;
- out = copy_chars(node->value(), node->value() + node->value_size(), out);
- *out = Ch(']'); ++out;
- *out = Ch(']'); ++out;
- *out = Ch('>'); ++out;
- return out;
- }
-
- // Print element node
- template
- inline OutIt print_element_node(OutIt out, const xml_node *node, int flags, int indent)
- {
- assert(node->type() == node_element);
-
- // Print element name and attributes, if any
- if (!(flags & print_no_indenting))
- out = fill_chars(out, indent, Ch('\t'));
- *out = Ch('<'), ++out;
- out = copy_chars(node->name(), node->name() + node->name_size(), out);
- out = print_attributes(out, node, flags);
-
- // If node is childless
- if (node->value_size() == 0 && !node->first_node())
- {
- // Print childless node tag ending
- *out = Ch('/'), ++out;
- *out = Ch('>'), ++out;
- }
- else
- {
- // Print normal node tag ending
- *out = Ch('>'), ++out;
-
- // Test if node contains a single data node only (and no other nodes)
- xml_node *child = node->first_node();
- if (!child)
- {
- // If node has no children, only print its value without indenting
- out = copy_and_expand_chars(node->value(), node->value() + node->value_size(), Ch(0), out);
- }
- else if (child->next_sibling() == 0 && child->type() == node_data)
- {
- // If node has a sole data child, only print its value without indenting
- out = copy_and_expand_chars(child->value(), child->value() + child->value_size(), Ch(0), out);
- }
- else
- {
- // Print all children with full indenting
- if (!(flags & print_no_indenting))
- *out = Ch('\n'), ++out;
- out = print_children(out, node, flags, indent + 1);
- if (!(flags & print_no_indenting))
- out = fill_chars(out, indent, Ch('\t'));
- }
-
- // Print node end
- *out = Ch('<'), ++out;
- *out = Ch('/'), ++out;
- out = copy_chars(node->name(), node->name() + node->name_size(), out);
- *out = Ch('>'), ++out;
- }
- return out;
- }
-
- // Print declaration node
- template
- inline OutIt print_declaration_node(OutIt out, const xml_node *node, int flags, int indent)
- {
- // Print declaration start
- if (!(flags & print_no_indenting))
- out = fill_chars(out, indent, Ch('\t'));
- *out = Ch('<'), ++out;
- *out = Ch('?'), ++out;
- *out = Ch('x'), ++out;
- *out = Ch('m'), ++out;
- *out = Ch('l'), ++out;
-
- // Print attributes
- out = print_attributes(out, node, flags);
-
- // Print declaration end
- *out = Ch('?'), ++out;
- *out = Ch('>'), ++out;
-
- return out;
- }
-
- // Print comment node
- template
- inline OutIt print_comment_node(OutIt out, const xml_node *node, int flags, int indent)
- {
- assert(node->type() == node_comment);
- if (!(flags & print_no_indenting))
- out = fill_chars(out, indent, Ch('\t'));
- *out = Ch('<'), ++out;
- *out = Ch('!'), ++out;
- *out = Ch('-'), ++out;
- *out = Ch('-'), ++out;
- out = copy_chars(node->value(), node->value() + node->value_size(), out);
- *out = Ch('-'), ++out;
- *out = Ch('-'), ++out;
- *out = Ch('>'), ++out;
- return out;
- }
-
- // Print doctype node
- template
- inline OutIt print_doctype_node(OutIt out, const xml_node *node, int flags, int indent)
- {
- assert(node->type() == node_doctype);
- if (!(flags & print_no_indenting))
- out = fill_chars(out, indent, Ch('\t'));
- *out = Ch('<'), ++out;
- *out = Ch('!'), ++out;
- *out = Ch('D'), ++out;
- *out = Ch('O'), ++out;
- *out = Ch('C'), ++out;
- *out = Ch('T'), ++out;
- *out = Ch('Y'), ++out;
- *out = Ch('P'), ++out;
- *out = Ch('E'), ++out;
- *out = Ch(' '), ++out;
- out = copy_chars(node->value(), node->value() + node->value_size(), out);
- *out = Ch('>'), ++out;
- return out;
- }
-
- // Print pi node
- template
- inline OutIt print_pi_node(OutIt out, const xml_node *node, int flags, int indent)
- {
- assert(node->type() == node_pi);
- if (!(flags & print_no_indenting))
- out = fill_chars(out, indent, Ch('\t'));
- *out = Ch('<'), ++out;
- *out = Ch('?'), ++out;
- out = copy_chars(node->name(), node->name() + node->name_size(), out);
- *out = Ch(' '), ++out;
- out = copy_chars(node->value(), node->value() + node->value_size(), out);
- *out = Ch('?'), ++out;
- *out = Ch('>'), ++out;
- return out;
- }
-
- // Print node
- template
- inline OutIt print_node(OutIt out, const xml_node *node, int flags, int indent)
- {
- // Print proper node type
- switch (node->type())
- {
-
- // Document
- case node_document:
- out = print_children(out, node, flags, indent);
- break;
-
- // Element
- case node_element:
- out = print_element_node(out, node, flags, indent);
- break;
-
- // Data
- case node_data:
- out = print_data_node(out, node, flags, indent);
- break;
-
- // CDATA
- case node_cdata:
- out = print_cdata_node(out, node, flags, indent);
- break;
-
- // Declaration
- case node_declaration:
- out = print_declaration_node(out, node, flags, indent);
- break;
-
- // Comment
- case node_comment:
- out = print_comment_node(out, node, flags, indent);
- break;
-
- // Doctype
- case node_doctype:
- out = print_doctype_node(out, node, flags, indent);
- break;
-
- // Pi
- case node_pi:
- out = print_pi_node(out, node, flags, indent);
- break;
-
-#ifndef __GNUC__
- // Unknown
- default:
- assert(0);
- break;
-#endif
- }
-
- // If indenting not disabled, add line break after node
- if (!(flags & print_no_indenting))
- *out = Ch('\n'), ++out;
-
- // Return modified iterator
- return out;
- }
-
- }
- //! \endcond
-
- ///////////////////////////////////////////////////////////////////////////
- // Printing
-
- //! Prints XML to given output iterator.
- //! \param out Output iterator to print to.
- //! \param node Node to be printed. Pass xml_document to print entire document.
- //! \param flags Flags controlling how XML is printed.
- //! \return Output iterator pointing to position immediately after last character of printed text.
- template
- inline OutIt print(OutIt out, const xml_node &node, int flags = 0)
- {
- return internal::print_node(out, &node, flags, 0);
- }
-
-#ifndef CEREAL_RAPIDXML_NO_STREAMS
-
- //! Prints XML to given output stream.
- //! \param out Output stream to print to.
- //! \param node Node to be printed. Pass xml_document to print entire document.
- //! \param flags Flags controlling how XML is printed.
- //! \return Output stream.
- template
- inline std::basic_ostream &print(std::basic_ostream &out, const xml_node &node, int flags = 0)
- {
- print(std::ostream_iterator(out), node, flags);
- return out;
- }
-
- //! Prints formatted XML to given output stream. Uses default printing flags. Use print() function to customize printing process.
- //! \param out Output stream to print to.
- //! \param node Node to be printed.
- //! \return Output stream.
- template
- inline std::basic_ostream &operator <<(std::basic_ostream &out, const xml_node &node)
- {
- return print(out, node);
- }
-
-#endif
-
-}
-} // namespace cereal
-
-#endif
diff --git a/deps/include/cereal/external/rapidxml/rapidxml_utils.hpp b/deps/include/cereal/external/rapidxml/rapidxml_utils.hpp
deleted file mode 100644
index e11ecf319..000000000
--- a/deps/include/cereal/external/rapidxml/rapidxml_utils.hpp
+++ /dev/null
@@ -1,123 +0,0 @@
-#ifndef CEREAL_RAPIDXML_UTILS_HPP_INCLUDED
-#define CEREAL_RAPIDXML_UTILS_HPP_INCLUDED
-
-// Copyright (C) 2006, 2009 Marcin Kalicinski
-// Version 1.13
-// Revision $DateTime: 2009/05/13 01:46:17 $
-//! in certain simple scenarios. They should probably not be used if maximizing performance is the main objective.
-
-#include "rapidxml.hpp"
-#include
-#include
-#include
-#include
-
-namespace cereal {
-namespace rapidxml
-{
-
- //! Represents data loaded from a file
- template
- class file
- {
-
- public:
-
- //! Loads file into the memory. Data will be automatically destroyed by the destructor.
- //! \param filename Filename to load.
- file(const char *filename)
- {
- using namespace std;
-
- // Open stream
- basic_ifstream stream(filename, ios::binary);
- if (!stream)
- throw runtime_error(string("cannot open file ") + filename);
- stream.unsetf(ios::skipws);
-
- // Determine stream size
- stream.seekg(0, ios::end);
- size_t size = stream.tellg();
- stream.seekg(0);
-
- // Load data and add terminating 0
- m_data.resize(size + 1);
- stream.read(&m_data.front(), static_cast(size));
- m_data[size] = 0;
- }
-
- //! Loads file into the memory. Data will be automatically destroyed by the destructor
- //! \param stream Stream to load from
- file(std::basic_istream &stream)
- {
- using namespace std;
-
- // Load data and add terminating 0
- stream.unsetf(ios::skipws);
- m_data.assign(istreambuf_iterator(stream), istreambuf_iterator());
- if (stream.fail() || stream.bad())
- throw runtime_error("error reading stream");
- m_data.push_back(0);
- }
-
- //! Gets file data.
- //! \return Pointer to data of file.
- Ch *data()
- {
- return &m_data.front();
- }
-
- //! Gets file data.
- //! \return Pointer to data of file.
- const Ch *data() const
- {
- return &m_data.front();
- }
-
- //! Gets file data size.
- //! \return Size of file data, in characters.
- std::size_t size() const
- {
- return m_data.size();
- }
-
- private:
-
- std::vector m_data; // File data
-
- };
-
- //! Counts children of node. Time complexity is O(n).
- //! \return Number of children of node
- template
- inline std::size_t count_children(xml_node *node)
- {
- xml_node *child = node->first_node();
- std::size_t count = 0;
- while (child)
- {
- ++count;
- child = child->next_sibling();
- }
- return count;
- }
-
- //! Counts attributes of node. Time complexity is O(n).
- //! \return Number of attributes of node
- template
- inline std::size_t count_attributes(xml_node *node)
- {
- xml_attribute *attr = node->first_attribute();
- std::size_t count = 0;
- while (attr)
- {
- ++count;
- attr = attr->next_attribute();
- }
- return count;
- }
-
-}
-} // namespace cereal
-
-#endif
diff --git a/deps/include/cereal/macros.hpp b/deps/include/cereal/macros.hpp
deleted file mode 100644
index 96ca7516b..000000000
--- a/deps/include/cereal/macros.hpp
+++ /dev/null
@@ -1,154 +0,0 @@
-/*! \file macros.hpp
- \brief Preprocessor macros that can customise the cereal library
-
- By default, cereal looks for serialization functions with very
- specific names, that is: serialize, load, save, load_minimal,
- or save_minimal.
-
- This file allows an advanced user to change these names to conform
- to some other style or preference. This is implemented using
- preprocessor macros.
-
- As a result of this, in internal cereal code you will see macros
- used for these function names. In user code, you should name
- the functions like you normally would and not use the macros
- to improve readability.
- \ingroup utility */
-/*
- Copyright (c) 2014, Randolph Voorhies, Shane Grant
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of cereal nor the
- names of its contributors may be used to endorse or promote products
- derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL RANDOLPH VOORHIES OR SHANE GRANT BE LIABLE FOR ANY
- DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef CEREAL_MACROS_HPP_
-#define CEREAL_MACROS_HPP_
-
-#ifndef CEREAL_THREAD_SAFE
-//! Whether cereal should be compiled for a threaded environment
-/*! This macro causes cereal to use mutexes to control access to
- global internal state in a thread safe manner.
-
- Note that even with this enabled you must still ensure that
- archives are accessed by only one thread at a time; it is safe
- to use multiple archives in paralel, but not to access one archive
- from many places simultaneously. */
-#define CEREAL_THREAD_SAFE 0
-#endif // CEREAL_THREAD_SAFE
-
-#ifndef CEREAL_SIZE_TYPE
-//! Determines the data type used for size_type
-/*! cereal uses size_type to ensure that the serialized size of
- dynamic containers is compatible across different architectures
- (e.g. 32 vs 64 bit), which may use different underlying types for
- std::size_t.
-
- More information can be found in cereal/details/helpers.hpp.
-
- If you choose to modify this type, ensure that you use a fixed
- size type (e.g. uint32_t). */
-#define CEREAL_SIZE_TYPE uint64_t
-#endif // CEREAL_SIZE_TYPE
-
-// ######################################################################
-#ifndef CEREAL_SERIALIZE_FUNCTION_NAME
-//! The serialization/deserialization function name to search for.
-/*! You can define @c CEREAL_SERIALIZE_FUNCTION_NAME to be different assuming
- you do so before this file is included. */
-#define CEREAL_SERIALIZE_FUNCTION_NAME serialize
-#endif // CEREAL_SERIALIZE_FUNCTION_NAME
-
-#ifndef CEREAL_LOAD_FUNCTION_NAME
-//! The deserialization (load) function name to search for.
-/*! You can define @c CEREAL_LOAD_FUNCTION_NAME to be different assuming you do so
- before this file is included. */
-#define CEREAL_LOAD_FUNCTION_NAME load
-#endif // CEREAL_LOAD_FUNCTION_NAME
-
-#ifndef CEREAL_SAVE_FUNCTION_NAME
-//! The serialization (save) function name to search for.
-/*! You can define @c CEREAL_SAVE_FUNCTION_NAME to be different assuming you do so
- before this file is included. */
-#define CEREAL_SAVE_FUNCTION_NAME save
-#endif // CEREAL_SAVE_FUNCTION_NAME
-
-#ifndef CEREAL_LOAD_MINIMAL_FUNCTION_NAME
-//! The deserialization (load_minimal) function name to search for.
-/*! You can define @c CEREAL_LOAD_MINIMAL_FUNCTION_NAME to be different assuming you do so
- before this file is included. */
-#define CEREAL_LOAD_MINIMAL_FUNCTION_NAME load_minimal
-#endif // CEREAL_LOAD_MINIMAL_FUNCTION_NAME
-
-#ifndef CEREAL_SAVE_MINIMAL_FUNCTION_NAME
-//! The serialization (save_minimal) function name to search for.
-/*! You can define @c CEREAL_SAVE_MINIMAL_FUNCTION_NAME to be different assuming you do so
- before this file is included. */
-#define CEREAL_SAVE_MINIMAL_FUNCTION_NAME save_minimal
-#endif // CEREAL_SAVE_MINIMAL_FUNCTION_NAME
-
-// ######################################################################
-//! Defines the CEREAL_NOEXCEPT macro to use instead of noexcept
-/*! If a compiler we support does not support noexcept, this macro
- will detect this and define CEREAL_NOEXCEPT as a no-op
- @internal */
-#if !defined(CEREAL_HAS_NOEXCEPT)
- #if defined(__clang__)
- #if __has_feature(cxx_noexcept)
- #define CEREAL_HAS_NOEXCEPT
- #endif
- #else // NOT clang
- #if defined(__GXX_EXPERIMENTAL_CXX0X__) && __GNUC__ * 10 + __GNUC_MINOR__ >= 46 || \
- defined(_MSC_FULL_VER) && _MSC_FULL_VER >= 190023026
- #define CEREAL_HAS_NOEXCEPT
- #endif // end GCC/MSVC check
- #endif // end NOT clang block
-
- #ifndef CEREAL_NOEXCEPT
- #ifdef CEREAL_HAS_NOEXCEPT
- #define CEREAL_NOEXCEPT noexcept
- #else
- #define CEREAL_NOEXCEPT
- #endif // end CEREAL_HAS_NOEXCEPT
- #endif // end !defined(CEREAL_HAS_NOEXCEPT)
-#endif // ifndef CEREAL_NOEXCEPT
-
-// ######################################################################
-//! Checks if C++17 is available
-#if __cplusplus >= 201703L || (defined(_MSVC_LANG) && _MSVC_LANG >= 201703L)
-#define CEREAL_HAS_CPP17
-#endif
-
-//! Checks if C++14 is available
-#if __cplusplus >= 201402L
-#define CEREAL_HAS_CPP14
-#endif
-
-// ######################################################################
-//! Defines the CEREAL_ALIGNOF macro to use instead of alignof
-#if defined(_MSC_VER) && _MSC_VER < 1900
-#define CEREAL_ALIGNOF __alignof
-#else // not MSVC 2013 or older
-#define CEREAL_ALIGNOF alignof
-#endif // end MSVC check
-
-#endif // CEREAL_MACROS_HPP_
diff --git a/deps/include/cereal/specialize.hpp b/deps/include/cereal/specialize.hpp
deleted file mode 100644
index b9276db25..000000000
--- a/deps/include/cereal/specialize.hpp
+++ /dev/null
@@ -1,139 +0,0 @@
-/*! \file specialize.hpp
- \brief Serialization disambiguation */
-/*
- Copyright (c) 2014, Randolph Voorhies, Shane Grant
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of cereal nor the
- names of its contributors may be used to endorse or promote products
- derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL RANDOLPH VOORHIES OR SHANE GRANT BE LIABLE FOR ANY
- DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef CEREAL_SPECIALIZE_HPP_
-#define CEREAL_SPECIALIZE_HPP_
-
-namespace cereal
-{
- // Forward declaration of access class that users can become friends with
- class access;
-
- // ######################################################################
- //! A specifier used in conjunction with cereal::specialize to disambiguate
- //! serialization in special cases
- /*! @relates specialize
- @ingroup Access */
- enum class specialization
- {
- member_serialize, //!< Force the use of a member serialize function
- member_load_save, //!< Force the use of a member load/save pair
- member_load_save_minimal, //!< Force the use of a member minimal load/save pair
- non_member_serialize, //!< Force the use of a non-member serialize function
- non_member_load_save, //!< Force the use of a non-member load/save pair
- non_member_load_save_minimal //!< Force the use of a non-member minimal load/save pair
- };
-
- //! A class used to disambiguate cases where cereal cannot detect a unique way of serializing a class
- /*! cereal attempts to figure out which method of serialization (member vs. non-member serialize
- or load/save pair) at compile time. If for some reason cereal cannot find a non-ambiguous way
- of serializing a type, it will produce a static assertion complaining about this.
-
- This can happen because you have both a serialize and load/save pair, or even because a base
- class has a serialize (public or private with friend access) and a derived class does not
- overwrite this due to choosing some other serialization type.
-
- Specializing this class will tell cereal to explicitly use the serialization type you specify
- and it will not complain about ambiguity in its compile time selection. However, if cereal detects
- an ambiguity in specializations, it will continue to issue a static assertion.
-
- @code{.cpp}
- class MyParent
- {
- friend class cereal::access;
- template
- void serialize( Archive & ar ) {}
- };
-
- // Although serialize is private in MyParent, to cereal::access it will look public,
- // even through MyDerived
- class MyDerived : public MyParent
- {
- public:
- template
- void load( Archive & ar ) {}
-
- template
- void save( Archive & ar ) {}
- };
-
- // The load/save pair in MyDerived is ambiguous because serialize in MyParent can
- // be accessed from cereal::access. This looks the same as making serialize public
- // in MyParent, making it seem as though MyDerived has both a serialize and a load/save pair.
- // cereal will complain about this at compile time unless we disambiguate:
-
- namespace cereal
- {
- // This struct specialization will tell cereal which is the right way to serialize the ambiguity
- template struct specialize {};
-
- // If we only had a disambiguation for a specific archive type, it would look something like this
- template <> struct specialize {};
- }
- @endcode
-
- You can also choose to use the macros CEREAL_SPECIALIZE_FOR_ALL_ARCHIVES or
- CEREAL_SPECIALIZE_FOR_ARCHIVE if you want to type a little bit less.
-
- @tparam T The type to specialize the serialization for
- @tparam S The specialization type to use for T
- @ingroup Access */
- template
- struct specialize : public std::false_type {};
-
- //! Convenient macro for performing specialization for all archive types
- /*! This performs specialization for the specific type for all types of archives.
- This macro should be placed at the global namespace.
-
- @code{cpp}
- struct MyType {};
- CEREAL_SPECIALIZE_FOR_ALL_ARCHIVES( MyType, cereal::specialization::member_load_save );
- @endcode
-
- @relates specialize
- @ingroup Access */
- #define CEREAL_SPECIALIZE_FOR_ALL_ARCHIVES( Type, Specialization ) \
- namespace cereal { template struct specialize {}; }
-
- //! Convenient macro for performing specialization for a single archive type
- /*! This performs specialization for the specific type for a single type of archive.
- This macro should be placed at the global namespace.
-
- @code{cpp}
- struct MyType {};
- CEREAL_SPECIALIZE_FOR_ARCHIVE( cereal::XMLInputArchive, MyType, cereal::specialization::member_load_save );
- @endcode
-
- @relates specialize
- @ingroup Access */
- #define CEREAL_SPECIALIZE_FOR_ARCHIVE( Archive, Type, Specialization ) \
- namespace cereal { template <> struct specialize {}; }
-}
-
-#endif
diff --git a/deps/include/cereal/types/array.hpp b/deps/include/cereal/types/array.hpp
deleted file mode 100644
index f5d510abf..000000000
--- a/deps/include/cereal/types/array.hpp
+++ /dev/null
@@ -1,79 +0,0 @@
-/*! \file array.hpp
- \brief Support for types found in \
- \ingroup STLSupport */
-/*
- Copyright (c) 2014, Randolph Voorhies, Shane Grant
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of cereal nor the
- names of its contributors may be used to endorse or promote products
- derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL RANDOLPH VOORHIES OR SHANE GRANT BE LIABLE FOR ANY
- DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#ifndef CEREAL_TYPES_ARRAY_HPP_
-#define CEREAL_TYPES_ARRAY_HPP_
-
-#include "cereal/cereal.hpp"
-#include
-
-namespace cereal
-{
- //! Saving for std::array primitive types
- //! using binary serialization, if supported
- template inline
- typename std::enable_if, Archive>::value
- && std::is_arithmetic::value, void>::type
- CEREAL_SAVE_FUNCTION_NAME( Archive & ar, std::array const & array )
- {
- ar( binary_data( array.data(), sizeof(array) ) );
- }
-
- //! Loading for std::array primitive types
- //! using binary serialization, if supported
- template inline
- typename std::enable_if, Archive>::value
- && std::is_arithmetic::value, void>::type
- CEREAL_LOAD_FUNCTION_NAME( Archive & ar, std::array & array )
- {
- ar( binary_data( array.data(), sizeof(array) ) );
- }
-
- //! Saving for std::array all other types
- template inline
- typename std::enable_if, Archive>::value
- || !std::is_arithmetic::value, void>::type
- CEREAL_SAVE_FUNCTION_NAME( Archive & ar, std::array const & array )
- {
- for( auto const & i : array )
- ar( i );
- }
-
- //! Loading for std::array all other types
- template inline
- typename std::enable_if, Archive>::value
- || !std::is_arithmetic::value, void>::type
- CEREAL_LOAD_FUNCTION_NAME( Archive & ar, std::array & array )
- {
- for( auto & i : array )
- ar( i );
- }
-} // namespace cereal
-
-#endif // CEREAL_TYPES_ARRAY_HPP_
diff --git a/deps/include/cereal/types/atomic.hpp b/deps/include/cereal/types/atomic.hpp
deleted file mode 100644
index 03d8b8722..000000000
--- a/deps/include/cereal/types/atomic.hpp
+++ /dev/null
@@ -1,55 +0,0 @@
-/*! \file atomic.hpp
- \brief Support for types found in \
- \ingroup STLSupport */
-/*
- Copyright (c) 2014, Randolph Voorhies, Shane Grant
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of cereal nor the
- names of its contributors may be used to endorse or promote products
- derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL RANDOLPH VOORHIES OR SHANE GRANT BE LIABLE FOR ANY
- DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#ifndef CEREAL_TYPES_ATOMIC_HPP_
-#define CEREAL_TYPES_ATOMIC_HPP_
-
-#include
-#include
-
-namespace cereal
-{
- //! Serializing (save) for std::atomic
- template inline
- void CEREAL_SAVE_FUNCTION_NAME( Archive & ar, std::atomic const & a )
- {
- ar( CEREAL_NVP_("atomic_data", a.load()) );
- }
-
- //! Serializing (load) for std::atomic
- template inline
- void CEREAL_LOAD_FUNCTION_NAME( Archive & ar, std::atomic & a )
- {
- T tmp;
- ar( CEREAL_NVP_("atomic_data", tmp) );
- a.store( tmp );
- }
-} // namespace cereal
-
-#endif // CEREAL_TYPES_ATOMIC_HPP_
diff --git a/deps/include/cereal/types/base_class.hpp b/deps/include/cereal/types/base_class.hpp
deleted file mode 100644
index fd7423e6f..000000000
--- a/deps/include/cereal/types/base_class.hpp
+++ /dev/null
@@ -1,203 +0,0 @@
-/*! \file base_class.hpp
- \brief Support for base classes (virtual and non-virtual)
- \ingroup OtherTypes */
-/*
- Copyright (c) 2014, Randolph Voorhies, Shane Grant
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of cereal nor the
- names of its contributors may be used to endorse or promote products
- derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL RANDOLPH VOORHIES OR SHANE GRANT BE LIABLE FOR ANY
- DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#ifndef CEREAL_TYPES_BASE_CLASS_HPP_
-#define CEREAL_TYPES_BASE_CLASS_HPP_
-
-#include "cereal/details/traits.hpp"
-#include "cereal/details/polymorphic_impl_fwd.hpp"
-
-namespace cereal
-{
- namespace base_class_detail
- {
- //! Used to register polymorphic relations and avoid the need to include
- //! polymorphic.hpp when no polymorphism is used
- /*! @internal */
- template ::value>
- struct RegisterPolymorphicBaseClass
- {
- static void bind()
- { }
- };
-
- //! Polymorphic version
- /*! @internal */
- template
- struct RegisterPolymorphicBaseClass
- {
- static void bind()
- { detail::RegisterPolymorphicCaster::bind(); }
- };
- }
-
- //! Casts a derived class to its non-virtual base class in a way that safely supports abstract classes
- /*! This should be used in cases when a derived type needs to serialize its base type. This is better than directly
- using static_cast, as it allows for serialization of pure virtual (abstract) base classes.
-
- This also automatically registers polymorphic relation between the base and derived class, assuming they
- are indeed polymorphic. Note this is not the same as polymorphic type registration. For more information
- see the documentation on polymorphism. If using a polymorphic class, be sure to include support for
- polymorphism (cereal/types/polymorphic.hpp).
-
- \sa virtual_base_class
-
- @code{.cpp}
- struct MyBase
- {
- int x;
-
- virtual void foo() = 0;
-
- template
- void serialize( Archive & ar )
- {
- ar( x );
- }
- };
-
- struct MyDerived : public MyBase //<-- Note non-virtual inheritance
- {
- int y;
-
- virtual void foo() {};
-
- template
- void serialize( Archive & ar )
- {
- ar( cereal::base_class(this) );
- ar( y );
- }
- };
- @endcode */
- template
- struct base_class : private traits::detail::BaseCastBase
- {
- template
- base_class(Derived const * derived) :
- base_ptr(const_cast(static_cast(derived)))
- {
- static_assert( std::is_base_of::value, "Can only use base_class on a valid base class" );
- base_class_detail::RegisterPolymorphicBaseClass::bind();
- }
-
- Base * base_ptr;
- };
-
- //! Casts a derived class to its virtual base class in a way that allows cereal to track inheritance
- /*! This should be used in cases when a derived type features virtual inheritance from some
- base type. This allows cereal to track the inheritance and to avoid making duplicate copies
- during serialization.
-
- It is safe to use virtual_base_class in all circumstances for serializing base classes, even in cases
- where virtual inheritance does not take place, though it may be slightly faster to utilize
- cereal::base_class<> if you do not need to worry about virtual inheritance.
-
- This also automatically registers polymorphic relation between the base and derived class, assuming they
- are indeed polymorphic. Note this is not the same as polymorphic type registration. For more information
- see the documentation on polymorphism. If using a polymorphic class, be sure to include support for
- polymorphism (cereal/types/polymorphic.hpp).
-
- \sa base_class
-
- @code{.cpp}
- struct MyBase
- {
- int x;
-
- template
- void serialize( Archive & ar )
- {
- ar( x );
- }
- };
-
- struct MyLeft : virtual MyBase //<-- Note the virtual inheritance
- {
- int y;
-
- template
- void serialize( Archive & ar )
- {
- ar( cereal::virtual_base_class( this ) );
- ar( y );
- }
- };
-
- struct MyRight : virtual MyBase
- {
- int z;
-
- template
- void serialize( Archive & ar )
- {
- ar( cereal::virtual_base_clas( this ) );
- ar( z );
- }
- };
-
- // diamond virtual inheritance; contains one copy of each base class
- struct MyDerived : virtual MyLeft, virtual MyRight
- {
- int a;
-
- template
- void serialize( Archive & ar )
- {
- ar( cereal::virtual_base_class( this ) ); // safely serialize data members in MyLeft
- ar( cereal::virtual_base_class( this ) ); // safely serialize data members in MyRight
- ar( a );
-
- // Because we used virtual_base_class, cereal will ensure that only one instance of MyBase is
- // serialized as we traverse the inheritance heirarchy. This means that there will be one copy
- // each of the variables x, y, z, and a
-
- // If we had chosen to use static_cast<> instead, cereal would perform no tracking and
- // assume that every base class should be serialized (in this case leading to a duplicate
- // serialization of MyBase due to diamond inheritance
- };
- }
- @endcode */
- template
- struct virtual_base_class : private traits::detail::BaseCastBase
- {
- template
- virtual_base_class(Derived const * derived) :
- base_ptr(const_cast(static_cast(derived)))
- {
- static_assert( std::is_base_of::value, "Can only use virtual_base_class on a valid base class" );
- base_class_detail::RegisterPolymorphicBaseClass::bind();
- }
-
- Base * base_ptr;
- };
-
-} // namespace cereal
-
-#endif // CEREAL_TYPES_BASE_CLASS_HPP_
diff --git a/deps/include/cereal/types/bitset.hpp b/deps/include/cereal/types/bitset.hpp
deleted file mode 100644
index 22ff534f6..000000000
--- a/deps/include/cereal/types/bitset.hpp
+++ /dev/null
@@ -1,176 +0,0 @@
-/*! \file bitset.hpp
- \brief Support for types found in \
- \ingroup STLSupport */
-/*
- Copyright (c) 2014, Randolph Voorhies, Shane Grant
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of cereal nor the
- names of its contributors may be used to endorse or promote products
- derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL RANDOLPH VOORHIES OR SHANE GRANT BE LIABLE FOR ANY
- DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#ifndef CEREAL_TYPES_BITSET_HPP_
-#define CEREAL_TYPES_BITSET_HPP_
-
-#include "cereal/cereal.hpp"
-#include "cereal/types/string.hpp"
-#include
-
-namespace cereal
-{
- namespace bitset_detail
- {
- //! The type the bitset is encoded with
- /*! @internal */
- enum class type : uint8_t
- {
- ulong,
- ullong,
- string,
- bits
- };
- }
-
- //! Serializing (save) for std::bitset when BinaryData optimization supported
- template , Archive>::value>
- = traits::sfinae> inline
- void CEREAL_SAVE_FUNCTION_NAME( Archive & ar, std::bitset const & bits )
- {
- ar( CEREAL_NVP_("type", bitset_detail::type::bits) );
-
- // Serialize 8 bit chunks
- std::uint8_t chunk = 0;
- std::uint8_t mask = 0x80;
-
- // Set each chunk using a rotating mask for the current bit
- for( std::size_t i = 0; i < N; ++i )
- {
- if( bits[i] )
- chunk |= mask;
-
- mask = static_cast(mask >> 1);
-
- // output current chunk when mask is empty (8 bits)
- if( mask == 0 )
- {
- ar( chunk );
- chunk = 0;
- mask = 0x80;
- }
- }
-
- // serialize remainder, if it exists
- if( mask != 0x80 )
- ar( chunk );
- }
-
- //! Serializing (save) for std::bitset when BinaryData is not supported
- template , Archive>::value>
- = traits::sfinae> inline
- void CEREAL_SAVE_FUNCTION_NAME( Archive & ar, std::bitset const & bits )
- {
- try
- {
- auto const b = bits.to_ulong();
- ar( CEREAL_NVP_("type", bitset_detail::type::ulong) );
- ar( CEREAL_NVP_("data", b) );
- }
- catch( std::overflow_error const & )
- {
- try
- {
- auto const b = bits.to_ullong();
- ar( CEREAL_NVP_("type", bitset_detail::type::ullong) );
- ar( CEREAL_NVP_("data", b) );
- }
- catch( std::overflow_error const & )
- {
- ar( CEREAL_NVP_("type", bitset_detail::type::string) );
- ar( CEREAL_NVP_("data", bits.to_string()) );
- }
- }
- }
-
- //! Serializing (load) for std::bitset
- template inline
- void CEREAL_LOAD_FUNCTION_NAME( Archive & ar, std::bitset & bits )
- {
- bitset_detail::type t;
- ar( CEREAL_NVP_("type", t) );
-
- switch( t )
- {
- case bitset_detail::type::ulong:
- {
- unsigned long b;
- ar( CEREAL_NVP_("data", b) );
- bits = std::bitset( b );
- break;
- }
- case bitset_detail::type::ullong:
- {
- unsigned long long b;
- ar( CEREAL_NVP_("data", b) );
- bits = std::bitset( b );
- break;
- }
- case bitset_detail::type::string:
- {
- std::string b;
- ar( CEREAL_NVP_("data", b) );
- bits = std::bitset( b );
- break;
- }
- case bitset_detail::type::bits:
- {
- // Normally we would use BinaryData to route this at compile time,
- // but doing this at runtime doesn't break any old serialization
- std::uint8_t chunk = 0;
- std::uint8_t mask = 0;
-
- bits.reset();
-
- // Load one chunk at a time, rotating through the chunk
- // to set bits in the bitset
- for( std::size_t i = 0; i < N; ++i )
- {
- if( mask == 0 )
- {
- ar( chunk );
- mask = 0x80;
- }
-
- if( chunk & mask )
- bits[i] = 1;
-
- mask = static_cast(mask >> 1);
- }
- break;
- }
- default:
- throw Exception("Invalid bitset data representation");
- }
- }
-} // namespace cereal
-
-#endif // CEREAL_TYPES_BITSET_HPP_
diff --git a/deps/include/cereal/types/boost_variant.hpp b/deps/include/cereal/types/boost_variant.hpp
deleted file mode 100644
index 5f64de508..000000000
--- a/deps/include/cereal/types/boost_variant.hpp
+++ /dev/null
@@ -1,164 +0,0 @@
-/*! \file boost_variant.hpp
- \brief Support for boost::variant
- \ingroup OtherTypes */
-/*
- Copyright (c) 2014, Randolph Voorhies, Shane Grant
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of cereal nor the
- names of its contributors may be used to endorse or promote products
- derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL RANDOLPH VOORHIES OR SHANE GRANT BE LIABLE FOR ANY
- DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#ifndef CEREAL_TYPES_BOOST_VARIANT_HPP_
-#define CEREAL_TYPES_BOOST_VARIANT_HPP_
-
-//! @internal
-#if defined(_MSC_VER) && _MSC_VER < 1911
-#define CEREAL_CONSTEXPR_LAMBDA
-#else // MSVC 2017 or newer, all other compilers
-#define CEREAL_CONSTEXPR_LAMBDA constexpr
-#endif
-
-#include "cereal/cereal.hpp"
-#include
-#include
-
-namespace cereal
-{
- namespace boost_variant_detail
- {
- //! @internal
- template
- struct variant_save_visitor : boost::static_visitor<>
- {
- variant_save_visitor(Archive & ar_) : ar(ar_) {}
-
- template
- void operator()(T const & value) const
- {
- ar( CEREAL_NVP_("data", value) );
- }
-
- Archive & ar;
- };
-
- //! @internal
- template
- struct LoadAndConstructLoadWrapper
- {
- using ST = typename std::aligned_storage::type;
-
- LoadAndConstructLoadWrapper() :
- construct( reinterpret_cast( &st ) )
- { }
-
- ~LoadAndConstructLoadWrapper()
- {
- if (construct.itsValid)
- {
- construct->~T();
- }
- }
-
- void CEREAL_SERIALIZE_FUNCTION_NAME( Archive & ar )
- {
- ::cereal::detail::Construct::load_andor_construct( ar, construct );
- }
-
- ST st;
- ::cereal::construct construct;
- };
-
- //! @internal
- template struct load_variant_wrapper;
-
- //! Avoid serializing variant void_ type
- /*! @internal */
- template <>
- struct load_variant_wrapper
- {
- template
- static void load_variant( Archive &, Variant & )
- { }
- };
-
- //! @internal
- template
- struct load_variant_wrapper
- {
- // default constructible
- template
- static void load_variant_impl( Archive & ar, Variant & variant, std::true_type )
- {
- T value;
- ar( CEREAL_NVP_("data", value) );
- variant = std::move(value);
- }
-
- // not default constructible
- template
- static void load_variant_impl(Archive & ar, Variant & variant, std::false_type )
- {
- LoadAndConstructLoadWrapper loadWrapper;
-
- ar( CEREAL_NVP_("data", loadWrapper) );
- variant = std::move(*loadWrapper.construct.ptr());
- }
-
- //! @internal
- template
- static void load_variant(Archive & ar, Variant & variant)
- {
- load_variant_impl( ar, variant, typename std::is_default_constructible::type() );
- }
- };
- } // namespace boost_variant_detail
-
- //! Saving for boost::variant
- template inline
- void CEREAL_SAVE_FUNCTION_NAME( Archive & ar, boost::variant const & variant )
- {
- int32_t which = variant.which();
- ar( CEREAL_NVP_("which", which) );
- boost_variant_detail::variant_save_visitor visitor(ar);
- variant.apply_visitor(visitor);
- }
-
- //! Loading for boost::variant
- template inline
- void CEREAL_LOAD_FUNCTION_NAME( Archive & ar, boost::variant & variant )
- {
- int32_t which;
- ar( CEREAL_NVP_("which", which) );
-
- using LoadFuncType = void(*)(Archive &, boost::variant &);
- CEREAL_CONSTEXPR_LAMBDA LoadFuncType loadFuncArray[] = {&boost_variant_detail::load_variant_wrapper::load_variant...};
-
- if(which >= int32_t(sizeof(loadFuncArray)/sizeof(loadFuncArray[0])))
- throw Exception("Invalid 'which' selector when deserializing boost::variant");
-
- loadFuncArray[which](ar, variant);
- }
-} // namespace cereal
-
-#undef CEREAL_CONSTEXPR_LAMBDA
-
-#endif // CEREAL_TYPES_BOOST_VARIANT_HPP_
diff --git a/deps/include/cereal/types/chrono.hpp b/deps/include/cereal/types/chrono.hpp
deleted file mode 100644
index 12ee4cb7c..000000000
--- a/deps/include/cereal/types/chrono.hpp
+++ /dev/null
@@ -1,72 +0,0 @@
-/*! \file chrono.hpp
- \brief Support for types found in \
- \ingroup STLSupport */
-/*
- Copyright (c) 2014, Randolph Voorhies, Shane Grant
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of cereal nor the
- names of its contributors may be used to endorse or promote products
- derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL RANDOLPH VOORHIES OR SHANE GRANT BE LIABLE FOR ANY
- DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#ifndef CEREAL_TYPES_CHRONO_HPP_
-#define CEREAL_TYPES_CHRONO_HPP_
-
-#include
-
-namespace cereal
-{
- //! Saving std::chrono::duration
- template inline
- void CEREAL_SAVE_FUNCTION_NAME( Archive & ar, std::chrono::duration const & dur )
- {
- ar( CEREAL_NVP_("count", dur.count()) );
- }
-
- //! Loading std::chrono::duration
- template inline
- void CEREAL_LOAD_FUNCTION_NAME( Archive & ar, std::chrono::duration & dur )
- {
- R count;
- ar( CEREAL_NVP_("count", count) );
-
- dur = std::chrono::duration