├── .gitignore ├── Assets ├── Editor.meta ├── Editor │ ├── XmlLevelEditor.cs │ └── XmlLevelEditor.cs.meta ├── Misc.meta ├── Misc │ ├── Blue.mat │ ├── Blue.mat.meta │ ├── Green.mat │ ├── Green.mat.meta │ ├── Red.mat │ └── Red.mat.meta ├── Resources.meta ├── Resources │ ├── Levels.xml │ ├── Levels.xml.meta │ ├── Prefabs.meta │ ├── Prefabs │ │ ├── BlueCapsule.prefab │ │ ├── BlueCapsule.prefab.meta │ │ ├── GreenSphere.prefab │ │ ├── GreenSphere.prefab.meta │ │ ├── RedCube.prefab │ │ └── RedCube.prefab.meta │ ├── XmlItemsToExport.xml │ └── XmlItemsToExport.xml.meta ├── XmlScripts.meta ├── XmlScripts │ ├── DeserializedLevels.cs │ ├── DeserializedLevels.cs.meta │ ├── DeserializedLevelsCrossChecker.cs │ ├── DeserializedLevelsCrossChecker.cs.meta │ ├── DeserializedLevelsLoader.cs │ ├── DeserializedLevelsLoader.cs.meta │ ├── DeserializedLevelsSaver.cs │ ├── DeserializedLevelsSaver.cs.meta │ ├── PlayScript.cs │ ├── PlayScript.cs.meta │ ├── XmlIO.cs │ └── XmlIO.cs.meta ├── _LOAD_THIS_SCENE_.meta └── _LOAD_THIS_SCENE_ │ ├── MainScene.unity │ └── MainScene.unity.meta ├── LICENSE ├── ProjectSettings ├── AudioManager.asset ├── DynamicsManager.asset ├── EditorBuildSettings.asset ├── EditorSettings.asset ├── GraphicsSettings.asset ├── InputManager.asset ├── NavMeshLayers.asset ├── NetworkManager.asset ├── Physics2DSettings.asset ├── ProjectSettings.asset ├── QualitySettings.asset ├── TagManager.asset └── TimeManager.asset └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | [Ll]ibrary/ 2 | [Tt]emp/ 3 | [Oo]bj/ 4 | .DS_Store 5 | *.csproj 6 | *.unityproj 7 | *.sln 8 | *.pdb 9 | *.pidb 10 | *.userprefs 11 | *.suo -------------------------------------------------------------------------------- /Assets/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8ac855fce504c41329d740c3c12b5d27 3 | folderAsset: yes 4 | DefaultImporter: 5 | userData: 6 | -------------------------------------------------------------------------------- /Assets/Editor/XmlLevelEditor.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEditor; 3 | 4 | public class XmlLevelEditor : EditorWindow 5 | { 6 | 7 | DeserializedLevelsLoader deserializedLevelsLoader; 8 | DeserializedLevelsSaver deserializedLevelsSaver; 9 | DeserializedLevelsCrossChecker deserializedLevelsCrossChecker; 10 | 11 | string importGOName = DeserializedLevelsLoader.xmlItemsGOName; 12 | string exportGOName = DeserializedLevelsSaver.xmlItemsToExportGOName; 13 | 14 | [MenuItem("Window/Xml Level Editor")] 15 | public static void ShowWindow() 16 | { 17 | //Show existing window instance. If one doesn't exist, make one. 18 | EditorWindow.GetWindow(typeof(XmlLevelEditor)); 19 | } 20 | 21 | void OnGUI() 22 | { 23 | // create DeserializedLevelsLoader, Saver and CrossChecker instances 24 | init(); 25 | 26 | // Import section 27 | GUILayout.Label("Import", EditorStyles.boldLabel); 28 | GUILayout.Label("Import Levels.xml into the scene"); 29 | 30 | if (GUILayout.Button("Import Levels.xml")) 31 | deserializedLevelsLoader.generateItems(); 32 | 33 | 34 | // Export section 35 | GUILayout.Label("Export", EditorStyles.boldLabel); 36 | GUILayout.Label("Export children of \"" + exportGOName + "\" GameObject into " + exportGOName + ".xml", EditorStyles.wordWrappedLabel); 37 | if (GUILayout.Button("Export " + exportGOName)) 38 | deserializedLevelsSaver.saveExportItems(); 39 | 40 | 41 | // Delete section 42 | GUILayout.Label("Delete", EditorStyles.boldLabel); 43 | GUILayout.Label("Delete " + importGOName + " and " + exportGOName + " GameObjects from scene", EditorStyles.wordWrappedLabel); 44 | if (GUILayout.Button("Delete")) 45 | { 46 | DestroyImmediate(GameObject.Find(importGOName)); 47 | DestroyImmediate(GameObject.Find(exportGOName)); 48 | } 49 | 50 | 51 | // Cross check section 52 | GUILayout.Label("Cross Check", EditorStyles.boldLabel); 53 | GUILayout.Label("Cross check /Resources/Prefabs and Levels.xml if there are any item prefabs that exist only in one but not the other", EditorStyles.wordWrappedLabel); 54 | if (GUILayout.Button("Cross Check")) 55 | deserializedLevelsCrossChecker.crossCheck(); 56 | } 57 | 58 | private void init() 59 | { 60 | if (deserializedLevelsLoader == null) deserializedLevelsLoader = new DeserializedLevelsLoader(); 61 | if (deserializedLevelsSaver == null) deserializedLevelsSaver = new DeserializedLevelsSaver(); 62 | if (deserializedLevelsCrossChecker == null) deserializedLevelsCrossChecker = new DeserializedLevelsCrossChecker(); 63 | } 64 | 65 | } 66 | -------------------------------------------------------------------------------- /Assets/Editor/XmlLevelEditor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f5f24600eb94b49d18017660a10cbcfd 3 | MonoImporter: 4 | serializedVersion: 2 5 | defaultReferences: [] 6 | executionOrder: 0 7 | icon: {instanceID: 0} 8 | userData: 9 | -------------------------------------------------------------------------------- /Assets/Misc.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 34192b63dc7a5436c874c7a42633accb 3 | folderAsset: yes 4 | DefaultImporter: 5 | userData: 6 | -------------------------------------------------------------------------------- /Assets/Misc/Blue.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 3 6 | m_ObjectHideFlags: 0 7 | m_PrefabParentObject: {fileID: 0} 8 | m_PrefabInternal: {fileID: 0} 9 | m_Name: Blue 10 | m_Shader: {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} 11 | m_ShaderKeywords: [] 12 | m_CustomRenderQueue: -1 13 | m_SavedProperties: 14 | serializedVersion: 2 15 | m_TexEnvs: 16 | data: 17 | first: 18 | name: _MainTex 19 | second: 20 | m_Texture: {fileID: 0} 21 | m_Scale: {x: 1, y: 1} 22 | m_Offset: {x: 0, y: 0} 23 | m_Floats: {} 24 | m_Colors: 25 | data: 26 | first: 27 | name: _Color 28 | second: {r: .609861612, g: .517647088, b: 1, a: 1} 29 | -------------------------------------------------------------------------------- /Assets/Misc/Blue.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f95c576cb3fc1457284ddd637c377349 3 | NativeFormatImporter: 4 | userData: 5 | -------------------------------------------------------------------------------- /Assets/Misc/Green.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 3 6 | m_ObjectHideFlags: 0 7 | m_PrefabParentObject: {fileID: 0} 8 | m_PrefabInternal: {fileID: 0} 9 | m_Name: Green 10 | m_Shader: {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} 11 | m_ShaderKeywords: [] 12 | m_CustomRenderQueue: -1 13 | m_SavedProperties: 14 | serializedVersion: 2 15 | m_TexEnvs: 16 | data: 17 | first: 18 | name: _MainTex 19 | second: 20 | m_Texture: {fileID: 0} 21 | m_Scale: {x: 1, y: 1} 22 | m_Offset: {x: 0, y: 0} 23 | m_Floats: {} 24 | m_Colors: 25 | data: 26 | first: 27 | name: _Color 28 | second: {r: .546020746, g: 1, b: .517647088, a: 1} 29 | -------------------------------------------------------------------------------- /Assets/Misc/Green.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 876c81f9d58844072a2b4543ec91267a 3 | NativeFormatImporter: 4 | userData: 5 | -------------------------------------------------------------------------------- /Assets/Misc/Red.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 3 6 | m_ObjectHideFlags: 0 7 | m_PrefabParentObject: {fileID: 0} 8 | m_PrefabInternal: {fileID: 0} 9 | m_Name: Red 10 | m_Shader: {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} 11 | m_ShaderKeywords: [] 12 | m_CustomRenderQueue: -1 13 | m_SavedProperties: 14 | serializedVersion: 2 15 | m_TexEnvs: 16 | data: 17 | first: 18 | name: _MainTex 19 | second: 20 | m_Texture: {fileID: 0} 21 | m_Scale: {x: 1, y: 1} 22 | m_Offset: {x: 0, y: 0} 23 | m_Floats: {} 24 | m_Colors: 25 | data: 26 | first: 27 | name: _Color 28 | second: {r: 1, g: .517647088, b: .517647088, a: 1} 29 | -------------------------------------------------------------------------------- /Assets/Misc/Red.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 44c0b6b8a681441999aedda479190d83 3 | NativeFormatImporter: 4 | userData: 5 | -------------------------------------------------------------------------------- /Assets/Resources.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 253ad75548769466888981d15a8a3299 3 | folderAsset: yes 4 | DefaultImporter: 5 | userData: 6 | -------------------------------------------------------------------------------- /Assets/Resources/Levels.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /Assets/Resources/Levels.xml.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 61e3d9c06e35044b7beccd7489a32c2f 3 | TextScriptImporter: 4 | userData: 5 | -------------------------------------------------------------------------------- /Assets/Resources/Prefabs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 39552e740d8a746da8ba7e239efb1d5c 3 | folderAsset: yes 4 | DefaultImporter: 5 | userData: 6 | -------------------------------------------------------------------------------- /Assets/Resources/Prefabs/BlueCapsule.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1 &100000 4 | GameObject: 5 | m_ObjectHideFlags: 0 6 | m_PrefabParentObject: {fileID: 0} 7 | m_PrefabInternal: {fileID: 100100000} 8 | serializedVersion: 4 9 | m_Component: 10 | - 4: {fileID: 400000} 11 | - 33: {fileID: 3300000} 12 | - 136: {fileID: 13600000} 13 | - 23: {fileID: 2300000} 14 | m_Layer: 0 15 | m_Name: BlueCapsule 16 | m_TagString: Untagged 17 | m_Icon: {fileID: 0} 18 | m_NavMeshLayer: 0 19 | m_StaticEditorFlags: 0 20 | m_IsActive: 1 21 | --- !u!4 &400000 22 | Transform: 23 | m_ObjectHideFlags: 1 24 | m_PrefabParentObject: {fileID: 0} 25 | m_PrefabInternal: {fileID: 100100000} 26 | m_GameObject: {fileID: 100000} 27 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 28 | m_LocalPosition: {x: 0, y: 0, z: 0} 29 | m_LocalScale: {x: 1, y: 1, z: 1} 30 | m_Children: [] 31 | m_Father: {fileID: 0} 32 | --- !u!23 &2300000 33 | Renderer: 34 | m_ObjectHideFlags: 1 35 | m_PrefabParentObject: {fileID: 0} 36 | m_PrefabInternal: {fileID: 100100000} 37 | m_GameObject: {fileID: 100000} 38 | m_Enabled: 1 39 | m_CastShadows: 1 40 | m_ReceiveShadows: 1 41 | m_LightmapIndex: 255 42 | m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} 43 | m_Materials: 44 | - {fileID: 2100000, guid: f95c576cb3fc1457284ddd637c377349, type: 2} 45 | m_SubsetIndices: 46 | m_StaticBatchRoot: {fileID: 0} 47 | m_UseLightProbes: 0 48 | m_LightProbeAnchor: {fileID: 0} 49 | m_ScaleInLightmap: 1 50 | m_SortingLayer: 0 51 | m_SortingOrder: 0 52 | m_SortingLayerID: 0 53 | --- !u!33 &3300000 54 | MeshFilter: 55 | m_ObjectHideFlags: 1 56 | m_PrefabParentObject: {fileID: 0} 57 | m_PrefabInternal: {fileID: 100100000} 58 | m_GameObject: {fileID: 100000} 59 | m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} 60 | --- !u!136 &13600000 61 | CapsuleCollider: 62 | m_ObjectHideFlags: 1 63 | m_PrefabParentObject: {fileID: 0} 64 | m_PrefabInternal: {fileID: 100100000} 65 | m_GameObject: {fileID: 100000} 66 | m_Material: {fileID: 0} 67 | m_IsTrigger: 0 68 | m_Enabled: 1 69 | m_Radius: .5 70 | m_Height: 2 71 | m_Direction: 1 72 | m_Center: {x: 0, y: 0, z: 0} 73 | --- !u!1001 &100100000 74 | Prefab: 75 | m_ObjectHideFlags: 1 76 | serializedVersion: 2 77 | m_Modification: 78 | m_TransformParent: {fileID: 0} 79 | m_Modifications: [] 80 | m_RemovedComponents: [] 81 | m_ParentPrefab: {fileID: 0} 82 | m_RootGameObject: {fileID: 100000} 83 | m_IsPrefabParent: 1 84 | m_IsExploded: 1 85 | -------------------------------------------------------------------------------- /Assets/Resources/Prefabs/BlueCapsule.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: affa0ee3b81994890b5554b8b6279f75 3 | NativeFormatImporter: 4 | userData: 5 | -------------------------------------------------------------------------------- /Assets/Resources/Prefabs/GreenSphere.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1 &100000 4 | GameObject: 5 | m_ObjectHideFlags: 0 6 | m_PrefabParentObject: {fileID: 0} 7 | m_PrefabInternal: {fileID: 100100000} 8 | serializedVersion: 4 9 | m_Component: 10 | - 4: {fileID: 400000} 11 | - 33: {fileID: 3300000} 12 | - 135: {fileID: 13500000} 13 | - 23: {fileID: 2300000} 14 | m_Layer: 0 15 | m_Name: GreenSphere 16 | m_TagString: Untagged 17 | m_Icon: {fileID: 0} 18 | m_NavMeshLayer: 0 19 | m_StaticEditorFlags: 0 20 | m_IsActive: 1 21 | --- !u!4 &400000 22 | Transform: 23 | m_ObjectHideFlags: 1 24 | m_PrefabParentObject: {fileID: 0} 25 | m_PrefabInternal: {fileID: 100100000} 26 | m_GameObject: {fileID: 100000} 27 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 28 | m_LocalPosition: {x: 0, y: 0, z: 0} 29 | m_LocalScale: {x: 1, y: 1, z: 1} 30 | m_Children: [] 31 | m_Father: {fileID: 0} 32 | --- !u!23 &2300000 33 | Renderer: 34 | m_ObjectHideFlags: 1 35 | m_PrefabParentObject: {fileID: 0} 36 | m_PrefabInternal: {fileID: 100100000} 37 | m_GameObject: {fileID: 100000} 38 | m_Enabled: 1 39 | m_CastShadows: 1 40 | m_ReceiveShadows: 1 41 | m_LightmapIndex: 255 42 | m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} 43 | m_Materials: 44 | - {fileID: 2100000, guid: 876c81f9d58844072a2b4543ec91267a, type: 2} 45 | m_SubsetIndices: 46 | m_StaticBatchRoot: {fileID: 0} 47 | m_UseLightProbes: 0 48 | m_LightProbeAnchor: {fileID: 0} 49 | m_ScaleInLightmap: 1 50 | m_SortingLayer: 0 51 | m_SortingOrder: 0 52 | m_SortingLayerID: 0 53 | --- !u!33 &3300000 54 | MeshFilter: 55 | m_ObjectHideFlags: 1 56 | m_PrefabParentObject: {fileID: 0} 57 | m_PrefabInternal: {fileID: 100100000} 58 | m_GameObject: {fileID: 100000} 59 | m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} 60 | --- !u!135 &13500000 61 | SphereCollider: 62 | m_ObjectHideFlags: 1 63 | m_PrefabParentObject: {fileID: 0} 64 | m_PrefabInternal: {fileID: 100100000} 65 | m_GameObject: {fileID: 100000} 66 | m_Material: {fileID: 0} 67 | m_IsTrigger: 0 68 | m_Enabled: 1 69 | serializedVersion: 2 70 | m_Radius: .5 71 | m_Center: {x: 0, y: 0, z: 0} 72 | --- !u!1001 &100100000 73 | Prefab: 74 | m_ObjectHideFlags: 1 75 | serializedVersion: 2 76 | m_Modification: 77 | m_TransformParent: {fileID: 0} 78 | m_Modifications: [] 79 | m_RemovedComponents: [] 80 | m_ParentPrefab: {fileID: 0} 81 | m_RootGameObject: {fileID: 100000} 82 | m_IsPrefabParent: 1 83 | m_IsExploded: 1 84 | -------------------------------------------------------------------------------- /Assets/Resources/Prefabs/GreenSphere.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b9ba214afc9b04ae1b25c020452ac443 3 | NativeFormatImporter: 4 | userData: 5 | -------------------------------------------------------------------------------- /Assets/Resources/Prefabs/RedCube.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1 &100000 4 | GameObject: 5 | m_ObjectHideFlags: 0 6 | m_PrefabParentObject: {fileID: 0} 7 | m_PrefabInternal: {fileID: 100100000} 8 | serializedVersion: 4 9 | m_Component: 10 | - 4: {fileID: 400000} 11 | - 33: {fileID: 3300000} 12 | - 65: {fileID: 6500000} 13 | - 23: {fileID: 2300000} 14 | m_Layer: 0 15 | m_Name: RedCube 16 | m_TagString: Untagged 17 | m_Icon: {fileID: 0} 18 | m_NavMeshLayer: 0 19 | m_StaticEditorFlags: 0 20 | m_IsActive: 1 21 | --- !u!4 &400000 22 | Transform: 23 | m_ObjectHideFlags: 1 24 | m_PrefabParentObject: {fileID: 0} 25 | m_PrefabInternal: {fileID: 100100000} 26 | m_GameObject: {fileID: 100000} 27 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 28 | m_LocalPosition: {x: 0, y: 0, z: 0} 29 | m_LocalScale: {x: 1, y: 1, z: 1} 30 | m_Children: [] 31 | m_Father: {fileID: 0} 32 | --- !u!23 &2300000 33 | Renderer: 34 | m_ObjectHideFlags: 1 35 | m_PrefabParentObject: {fileID: 0} 36 | m_PrefabInternal: {fileID: 100100000} 37 | m_GameObject: {fileID: 100000} 38 | m_Enabled: 1 39 | m_CastShadows: 1 40 | m_ReceiveShadows: 1 41 | m_LightmapIndex: 255 42 | m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} 43 | m_Materials: 44 | - {fileID: 2100000, guid: 44c0b6b8a681441999aedda479190d83, type: 2} 45 | m_SubsetIndices: 46 | m_StaticBatchRoot: {fileID: 0} 47 | m_UseLightProbes: 0 48 | m_LightProbeAnchor: {fileID: 0} 49 | m_ScaleInLightmap: 1 50 | m_SortingLayer: 0 51 | m_SortingOrder: 0 52 | m_SortingLayerID: 0 53 | --- !u!33 &3300000 54 | MeshFilter: 55 | m_ObjectHideFlags: 1 56 | m_PrefabParentObject: {fileID: 0} 57 | m_PrefabInternal: {fileID: 100100000} 58 | m_GameObject: {fileID: 100000} 59 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 60 | --- !u!65 &6500000 61 | BoxCollider: 62 | m_ObjectHideFlags: 1 63 | m_PrefabParentObject: {fileID: 0} 64 | m_PrefabInternal: {fileID: 100100000} 65 | m_GameObject: {fileID: 100000} 66 | m_Material: {fileID: 0} 67 | m_IsTrigger: 0 68 | m_Enabled: 1 69 | serializedVersion: 2 70 | m_Size: {x: 1, y: 1, z: 1} 71 | m_Center: {x: 0, y: 0, z: 0} 72 | --- !u!1001 &100100000 73 | Prefab: 74 | m_ObjectHideFlags: 1 75 | serializedVersion: 2 76 | m_Modification: 77 | m_TransformParent: {fileID: 0} 78 | m_Modifications: [] 79 | m_RemovedComponents: [] 80 | m_ParentPrefab: {fileID: 0} 81 | m_RootGameObject: {fileID: 100000} 82 | m_IsPrefabParent: 1 83 | m_IsExploded: 1 84 | -------------------------------------------------------------------------------- /Assets/Resources/Prefabs/RedCube.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: da96ab3f7a4b5492eb88af88ddc53fe7 3 | NativeFormatImporter: 4 | userData: 5 | -------------------------------------------------------------------------------- /Assets/Resources/XmlItemsToExport.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /Assets/Resources/XmlItemsToExport.xml.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 35b793df4d97b407088a52900b7b2e30 3 | TextScriptImporter: 4 | userData: 5 | -------------------------------------------------------------------------------- /Assets/XmlScripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8ba5c277caf274cf99483bae1de44aec 3 | folderAsset: yes 4 | DefaultImporter: 5 | userData: 6 | -------------------------------------------------------------------------------- /Assets/XmlScripts/DeserializedLevels.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections.Generic; 3 | using System.Xml; 4 | using System.Xml.Serialization; 5 | using System.IO; 6 | 7 | [XmlRoot("Levels")] 8 | public class DeserializedLevels 9 | { 10 | [XmlElement("Developer")] 11 | public Developer developer; 12 | public class Developer 13 | { 14 | [XmlAttribute("StartLevel")] 15 | public string startLevel; 16 | } 17 | 18 | [XmlElement("Level")] 19 | public Level[] levels; 20 | public class Level 21 | { 22 | [XmlAttribute("playerx")] 23 | public string playerx; 24 | 25 | [XmlAttribute("playery")] 26 | public string playery; 27 | 28 | [XmlAttribute("playerrot")] 29 | public string playerrot; 30 | 31 | [XmlElement("Item")] 32 | public Item[] items; 33 | } 34 | 35 | public class Item 36 | { 37 | [XmlAttribute("prefab")] 38 | public string prefab; 39 | 40 | [XmlAttribute("x")] 41 | public string x; 42 | 43 | [XmlAttribute("y")] 44 | public string y; 45 | 46 | [XmlAttribute("rot")] 47 | public string rot; 48 | 49 | [XmlAttribute("scale_x")] 50 | public string scale_x; 51 | 52 | [XmlAttribute("scale_y")] 53 | public string scale_y; 54 | 55 | public Item() { } 56 | 57 | public Item(Transform item) 58 | { 59 | prefab = item.name; 60 | x = DeserializedLevelsSaver.toStringNullIfZero(item.transform.position.x); 61 | y = DeserializedLevelsSaver.toStringNullIfZero(item.transform.position.y); 62 | rot = DeserializedLevelsSaver.toStringNullIfZero(item.localRotation.eulerAngles.x); 63 | scale_x = DeserializedLevelsSaver.toStringNullIfOne(item.localScale.x); 64 | scale_y = DeserializedLevelsSaver.toStringNullIfOne(item.localScale.y); 65 | } 66 | } 67 | } 68 | 69 | -------------------------------------------------------------------------------- /Assets/XmlScripts/DeserializedLevels.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ef2ecc758c2e143019ae2dac87289034 3 | MonoImporter: 4 | serializedVersion: 2 5 | defaultReferences: [] 6 | executionOrder: 0 7 | icon: {instanceID: 0} 8 | userData: 9 | -------------------------------------------------------------------------------- /Assets/XmlScripts/DeserializedLevelsCrossChecker.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections; 3 | 4 | using System.Collections.Generic; 5 | using System.IO; 6 | using System.Xml; 7 | using System.Linq; 8 | 9 | public class DeserializedLevelsCrossChecker 10 | { 11 | // cross check /Resources/Prefabs and Levels.xml if there are any item prefabs that exist only in one but not the other 12 | public void crossCheck() 13 | { 14 | // create a two sets of prefabs 15 | HashSet resPrefabSet = new HashSet(); 16 | HashSet xmlPrefabSet = new HashSet(); 17 | 18 | // Get prefabs from Levels.xml 19 | getLevelPrefabs(xmlPrefabSet); 20 | 21 | // Get prefabs from the /Resources/Prefabs folder 22 | getResPrefabs(resPrefabSet); 23 | 24 | // Cross checks 25 | foreach (string prefab in xmlPrefabSet.Except(resPrefabSet).ToList()) 26 | Debug.LogError(prefab + " is missing in the /Resorces/Prefabs folder but used in Levels.xml"); 27 | 28 | foreach (string prefab in resPrefabSet.Except(xmlPrefabSet).ToList()) 29 | Debug.Log(prefab + " exists in the /Resorces/Prefabs folder but not used in Levels.xml"); 30 | 31 | Debug.Log("Cross Check Done"); 32 | } 33 | 34 | private static void getResPrefabs(HashSet resPrefabList) 35 | { 36 | // get all child items in the /Resources/Prefabs folder 37 | DirectoryInfo dir = new DirectoryInfo("Assets/Resources/Prefabs"); 38 | FileInfo[] fileInfos = dir.GetFiles("*.prefab"); 39 | fileInfos.Select(f => f.FullName).ToArray(); 40 | 41 | // Add each prefab's file name to prefabList and truncate the .prefab extension from the end 42 | foreach (FileInfo fileInfo in fileInfos) 43 | { 44 | resPrefabList.Add(fileInfo.Name.Substring(0, fileInfo.Name.Length - ".prefab".Length)); 45 | } 46 | } 47 | 48 | private static void getLevelPrefabs(HashSet xmlPrefabSet) 49 | { 50 | DeserializedLevels deserializedLevels = XmlIO.LoadXml("Levels"); 51 | foreach (DeserializedLevels.Level level in deserializedLevels.levels) 52 | { 53 | foreach (DeserializedLevels.Item item in level.items) 54 | { 55 | xmlPrefabSet.Add(item.prefab); 56 | } 57 | } 58 | } 59 | 60 | } 61 | -------------------------------------------------------------------------------- /Assets/XmlScripts/DeserializedLevelsCrossChecker.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f4215606b531a504d9b4e5bad6426639 3 | MonoImporter: 4 | serializedVersion: 2 5 | defaultReferences: [] 6 | executionOrder: 0 7 | icon: {instanceID: 0} 8 | userData: 9 | -------------------------------------------------------------------------------- /Assets/XmlScripts/DeserializedLevelsLoader.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Xml; 5 | using UnityEngine; 6 | 7 | public class DeserializedLevelsLoader 8 | { 9 | // Levels deserialized 10 | private DeserializedLevels deserializedLevels; 11 | 12 | private const string prefabsFolder = "Prefabs/"; 13 | 14 | struct ItemStruct 15 | { 16 | public GameObject prefab; 17 | public float x; 18 | public float y; 19 | public float rot; 20 | public float scale_x; 21 | public float scale_y; 22 | 23 | public ItemStruct(GameObject prefabGO, DeserializedLevels.Item deserializedItem) 24 | { 25 | prefab = prefabGO; 26 | x = toFloatZeroIfNull(deserializedItem.x); 27 | y = toFloatZeroIfNull(deserializedItem.y); 28 | rot = toFloatZeroIfNull(deserializedItem.rot); 29 | scale_x = toFloatOneIfNull(deserializedItem.scale_x); 30 | scale_y = toFloatOneIfNull(deserializedItem.scale_y); 31 | } 32 | } 33 | 34 | // Cache prefabs in prefabDict 35 | Dictionary prefabPool; 36 | 37 | // Cache all items with locations 38 | List sceneItemsList; 39 | 40 | Transform parentOfXmlItems; 41 | 42 | public const string xmlItemsGOName = "XmlItems"; 43 | 44 | private void init() 45 | { 46 | prefabPool = new Dictionary(); 47 | sceneItemsList = new List(); 48 | 49 | // if the XmlItems gameobject folder remained in the Hierarcy, then delete it 50 | while (GameObject.Find(xmlItemsGOName) != null) 51 | MonoBehaviour.DestroyImmediate(GameObject.Find(xmlItemsGOName)); 52 | 53 | parentOfXmlItems = new GameObject(xmlItemsGOName).transform; 54 | } 55 | 56 | public void generateItems() 57 | { 58 | init(); 59 | 60 | createSceneItemsList(); 61 | 62 | // Finally instantiate all items 63 | instantiateItems(); 64 | } 65 | 66 | private DeserializedLevels.Level getCurLevel() 67 | { 68 | deserializedLevels = XmlIO.LoadXml("Levels"); 69 | 70 | // if startlevel is in the XML i.e. then get level from there 71 | // otherwise start with level 1 72 | int startLevel = int.Parse(deserializedLevels.developer.startLevel); 73 | 74 | return deserializedLevels.levels[startLevel - 1]; ; 75 | } 76 | 77 | 78 | private void instantiateItems() 79 | { 80 | foreach (ItemStruct item in sceneItemsList) 81 | { 82 | 83 | // TODO load height coordinate from a directory 84 | GameObject newGameObject = MonoBehaviour.Instantiate(item.prefab) as GameObject; 85 | 86 | // set position 87 | setPos2D(newGameObject, new Vector2(item.x, item.y)); 88 | 89 | // set rotation 90 | setRot2D(newGameObject, item.rot); 91 | 92 | // set scale 93 | newGameObject.transform.localScale = new Vector3(item.scale_x, item.scale_y, 1); 94 | 95 | // set parent 96 | newGameObject.transform.parent = parentOfXmlItems; 97 | } 98 | } 99 | 100 | private void createSceneItemsList() 101 | { 102 | // 103 | foreach (DeserializedLevels.Item deserializedItem in getCurLevel().items) 104 | { 105 | // caching prefabString i.e. "phone" 106 | string prefabString = deserializedItem.prefab; 107 | 108 | // if the prefab in the item XmlNode has not been loaded then add it to the prefabsDict dictionary, 109 | if (!prefabPool.ContainsKey(prefabString)) 110 | { 111 | // load prefab 112 | GameObject prefabObject = Resources.Load(prefabsFolder + prefabString, typeof(GameObject)) as GameObject; 113 | 114 | // if unsuccesful, error message and jump to next in the foreach loop 115 | if (prefabObject == null) 116 | { 117 | Debug.LogError("Prefab \"" + prefabString + "\" does not exists."); 118 | continue; 119 | } 120 | 121 | // otherwise add to dictionary 122 | prefabPool.Add(prefabString, prefabObject); 123 | } 124 | 125 | ItemStruct item = new ItemStruct(prefabPool[prefabString], deserializedItem); 126 | 127 | sceneItemsList.Add(item); 128 | } 129 | } 130 | 131 | 132 | // if no value then return zero or one, otherwise convert to float 133 | static float toFloatZeroIfNull(string value) { return value == null ? 0 : float.Parse(value); } 134 | static float toFloatOneIfNull(string value) { return value == null ? 1 : float.Parse(value); } 135 | 136 | 137 | void setPos2D(GameObject g, Vector2 pos) 138 | { 139 | g.transform.position = new Vector3( 140 | pos.x, 141 | pos.y, 142 | g.transform.position.z 143 | ); 144 | } 145 | 146 | void setRot2D(GameObject g, float rot) 147 | { 148 | Quaternion rotation = Quaternion.identity; 149 | rotation.eulerAngles = new Vector3(0, 0, rot); 150 | g.transform.localRotation = rotation; 151 | } 152 | 153 | } 154 | -------------------------------------------------------------------------------- /Assets/XmlScripts/DeserializedLevelsLoader.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a4b2c23daf5504cc9a73df589c143887 3 | MonoImporter: 4 | serializedVersion: 2 5 | defaultReferences: [] 6 | executionOrder: 0 7 | icon: {instanceID: 0} 8 | userData: 9 | -------------------------------------------------------------------------------- /Assets/XmlScripts/DeserializedLevelsSaver.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections.Generic; 3 | using System.Xml; 4 | 5 | public class DeserializedLevelsSaver 6 | { 7 | public const string xmlItemsToExportGOName = "XmlItemsToExport"; 8 | 9 | public void saveExportItems() 10 | { 11 | GameObject xmlItemsToExportGO; 12 | 13 | // Create XmlItemsToExport or find existing 14 | if (GameObject.Find(xmlItemsToExportGOName) == null) 15 | { 16 | xmlItemsToExportGO = new GameObject(xmlItemsToExportGOName); 17 | //we have nothing to save so skip execution 18 | return; 19 | } 20 | else 21 | { 22 | xmlItemsToExportGO = GameObject.Find(xmlItemsToExportGOName); 23 | } 24 | 25 | Transform[] xmlItemsToExportGOchildren = xmlItemsToExportGO.GetComponentsInChildren(); 26 | 27 | // Check if there isn't any Transform components except parent's 28 | if (xmlItemsToExportGOchildren.Length == 1) 29 | { 30 | Debug.LogError("Add the prefabs to " + xmlItemsToExportGOName); 31 | return; 32 | } 33 | 34 | //create list of items 35 | List itemList = new List(); 36 | 37 | foreach (Transform item in xmlItemsToExportGOchildren) 38 | { 39 | if (item.parent == xmlItemsToExportGO.transform) 40 | { 41 | itemList.Add(new DeserializedLevels.Item(item)); 42 | } 43 | } 44 | 45 | //copy list of items to the raw array 46 | DeserializedLevels.Level levelXml = new DeserializedLevels.Level(); 47 | levelXml.items = new DeserializedLevels.Item[itemList.Count]; 48 | itemList.CopyTo(levelXml.items); 49 | 50 | // Export just one level 51 | DeserializedLevels levelsXmlToExport = new DeserializedLevels(); 52 | levelsXmlToExport.levels = new DeserializedLevels.Level[1]; 53 | levelsXmlToExport.levels[0] = levelXml; 54 | 55 | string outputFilePath = "./Assets/Resources/" + xmlItemsToExportGOName + ".xml"; 56 | XmlIO.SaveXml(levelsXmlToExport, outputFilePath); 57 | } 58 | 59 | public static string toStringNullIfZero(float num) 60 | { 61 | return num == 0 ? null : mathRound(num, 2).ToString(); 62 | } 63 | 64 | public static string toStringNullIfOne(float num) 65 | { 66 | return num == 1 ? null : mathRound(num, 2).ToString(); 67 | } 68 | 69 | public static float mathRound(float round, int decimals) 70 | { 71 | return Mathf.Round(round * Mathf.Pow(10, decimals)) / Mathf.Pow(10, decimals); 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /Assets/XmlScripts/DeserializedLevelsSaver.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b7816f23e21614e6684de77528fbf66f 3 | MonoImporter: 4 | serializedVersion: 2 5 | defaultReferences: [] 6 | executionOrder: 0 7 | icon: {instanceID: 0} 8 | userData: 9 | -------------------------------------------------------------------------------- /Assets/XmlScripts/PlayScript.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections; 3 | 4 | public class PlayScript : MonoBehaviour 5 | { 6 | 7 | void Start() 8 | { 9 | DeserializedLevelsLoader d = new DeserializedLevelsLoader(); 10 | d.generateItems(); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /Assets/XmlScripts/PlayScript.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 01cdeb3258bc3446ba8846c11515fc68 3 | MonoImporter: 4 | serializedVersion: 2 5 | defaultReferences: [] 6 | executionOrder: 0 7 | icon: {instanceID: 0} 8 | userData: 9 | -------------------------------------------------------------------------------- /Assets/XmlScripts/XmlIO.cs: -------------------------------------------------------------------------------- 1 | using System.Xml; 2 | using System.Xml.Serialization; 3 | using System.IO; 4 | using UnityEngine; // necessary for TextAsset 5 | 6 | public static class XmlIO 7 | { 8 | public static void SaveXml (this object deserializedXml, string path) where T : class 9 | { 10 | using(var stream = new FileStream(path, FileMode.Create)) 11 | { 12 | var s = new XmlSerializer(typeof(T)); 13 | s.Serialize(stream, deserializedXml); 14 | } 15 | } 16 | 17 | public static T LoadXml(string textAssetName) where T : class 18 | { 19 | TextAsset xmlTextAsset = (TextAsset) Resources.Load (textAssetName, typeof(TextAsset)); 20 | 21 | using(var stream = new StringReader(xmlTextAsset.text)) 22 | { 23 | var s = new XmlSerializer(typeof(T)); 24 | return s.Deserialize(stream) as T; 25 | } 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /Assets/XmlScripts/XmlIO.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: dfdb2c835c402473bb2b1c1c22822cfb 3 | MonoImporter: 4 | serializedVersion: 2 5 | defaultReferences: [] 6 | executionOrder: 0 7 | icon: {instanceID: 0} 8 | userData: 9 | -------------------------------------------------------------------------------- /Assets/_LOAD_THIS_SCENE_.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b32168d62b6384565b9c8f065120e62d 3 | folderAsset: yes 4 | DefaultImporter: 5 | userData: 6 | -------------------------------------------------------------------------------- /Assets/_LOAD_THIS_SCENE_/MainScene.unity: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!29 &1 4 | SceneSettings: 5 | m_ObjectHideFlags: 0 6 | m_PVSData: 7 | m_PVSObjectsArray: [] 8 | m_PVSPortalsArray: [] 9 | m_OcclusionBakeSettings: 10 | smallestOccluder: 5 11 | smallestHole: .25 12 | backfaceThreshold: 100 13 | --- !u!104 &2 14 | RenderSettings: 15 | m_Fog: 0 16 | m_FogColor: {r: .5, g: .5, b: .5, a: 1} 17 | m_FogMode: 3 18 | m_FogDensity: .00999999978 19 | m_LinearFogStart: 0 20 | m_LinearFogEnd: 300 21 | m_AmbientLight: {r: 1, g: 1, b: 1, a: 1} 22 | m_SkyboxMaterial: {fileID: 0} 23 | m_HaloStrength: .5 24 | m_FlareStrength: 1 25 | m_FlareFadeSpeed: 3 26 | m_HaloTexture: {fileID: 0} 27 | m_SpotCookie: {fileID: 0} 28 | m_ObjectHideFlags: 0 29 | --- !u!127 &3 30 | LevelGameManager: 31 | m_ObjectHideFlags: 0 32 | --- !u!157 &4 33 | LightmapSettings: 34 | m_ObjectHideFlags: 0 35 | m_LightProbes: {fileID: 0} 36 | m_Lightmaps: [] 37 | m_LightmapsMode: 1 38 | m_BakedColorSpace: 0 39 | m_UseDualLightmapsInForward: 0 40 | m_LightmapEditorSettings: 41 | m_Resolution: 50 42 | m_LastUsedResolution: 0 43 | m_TextureWidth: 1024 44 | m_TextureHeight: 1024 45 | m_BounceBoost: 1 46 | m_BounceIntensity: 1 47 | m_SkyLightColor: {r: .860000014, g: .930000007, b: 1, a: 1} 48 | m_SkyLightIntensity: 0 49 | m_Quality: 0 50 | m_Bounces: 1 51 | m_FinalGatherRays: 1000 52 | m_FinalGatherContrastThreshold: .0500000007 53 | m_FinalGatherGradientThreshold: 0 54 | m_FinalGatherInterpolationPoints: 15 55 | m_AOAmount: 0 56 | m_AOMaxDistance: .100000001 57 | m_AOContrast: 1 58 | m_LODSurfaceMappingDistance: 1 59 | m_Padding: 0 60 | m_TextureCompression: 0 61 | m_LockAtlas: 0 62 | --- !u!196 &5 63 | NavMeshSettings: 64 | m_ObjectHideFlags: 0 65 | m_BuildSettings: 66 | agentRadius: .5 67 | agentHeight: 2 68 | agentSlope: 45 69 | agentClimb: .400000006 70 | ledgeDropHeight: 0 71 | maxJumpAcrossDistance: 0 72 | accuratePlacement: 0 73 | minRegionArea: 2 74 | widthInaccuracy: 16.666666 75 | heightInaccuracy: 10 76 | m_NavMesh: {fileID: 0} 77 | --- !u!1 &698496877 78 | GameObject: 79 | m_ObjectHideFlags: 0 80 | m_PrefabParentObject: {fileID: 0} 81 | m_PrefabInternal: {fileID: 0} 82 | serializedVersion: 4 83 | m_Component: 84 | - 4: {fileID: 698496878} 85 | m_Layer: 0 86 | m_Name: XmlItems 87 | m_TagString: Untagged 88 | m_Icon: {fileID: 0} 89 | m_NavMeshLayer: 0 90 | m_StaticEditorFlags: 0 91 | m_IsActive: 1 92 | --- !u!4 &698496878 93 | Transform: 94 | m_ObjectHideFlags: 0 95 | m_PrefabParentObject: {fileID: 0} 96 | m_PrefabInternal: {fileID: 0} 97 | m_GameObject: {fileID: 698496877} 98 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 99 | m_LocalPosition: {x: 0, y: 0, z: 0} 100 | m_LocalScale: {x: 1, y: 1, z: 1} 101 | m_Children: 102 | - {fileID: 752680529} 103 | - {fileID: 1015352805} 104 | - {fileID: 1499417911} 105 | - {fileID: 2011212740} 106 | m_Father: {fileID: 0} 107 | --- !u!1 &752680525 108 | GameObject: 109 | m_ObjectHideFlags: 0 110 | m_PrefabParentObject: {fileID: 0} 111 | m_PrefabInternal: {fileID: 0} 112 | serializedVersion: 4 113 | m_Component: 114 | - 4: {fileID: 752680529} 115 | - 33: {fileID: 752680528} 116 | - 136: {fileID: 752680527} 117 | - 23: {fileID: 752680526} 118 | m_Layer: 0 119 | m_Name: BlueCapsule(Clone) 120 | m_TagString: Untagged 121 | m_Icon: {fileID: 0} 122 | m_NavMeshLayer: 0 123 | m_StaticEditorFlags: 0 124 | m_IsActive: 1 125 | --- !u!23 &752680526 126 | Renderer: 127 | m_ObjectHideFlags: 0 128 | m_PrefabParentObject: {fileID: 0} 129 | m_PrefabInternal: {fileID: 0} 130 | m_GameObject: {fileID: 752680525} 131 | m_Enabled: 1 132 | m_CastShadows: 1 133 | m_ReceiveShadows: 1 134 | m_LightmapIndex: 255 135 | m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} 136 | m_Materials: 137 | - {fileID: 2100000, guid: f95c576cb3fc1457284ddd637c377349, type: 2} 138 | m_SubsetIndices: 139 | m_StaticBatchRoot: {fileID: 0} 140 | m_UseLightProbes: 0 141 | m_LightProbeAnchor: {fileID: 0} 142 | m_ScaleInLightmap: 1 143 | m_SortingLayer: 0 144 | m_SortingOrder: 0 145 | m_SortingLayerID: 0 146 | --- !u!136 &752680527 147 | CapsuleCollider: 148 | m_ObjectHideFlags: 0 149 | m_PrefabParentObject: {fileID: 0} 150 | m_PrefabInternal: {fileID: 0} 151 | m_GameObject: {fileID: 752680525} 152 | m_Material: {fileID: 0} 153 | m_IsTrigger: 0 154 | m_Enabled: 1 155 | m_Radius: .5 156 | m_Height: 2 157 | m_Direction: 1 158 | m_Center: {x: 0, y: 0, z: 0} 159 | --- !u!33 &752680528 160 | MeshFilter: 161 | m_ObjectHideFlags: 0 162 | m_PrefabParentObject: {fileID: 0} 163 | m_PrefabInternal: {fileID: 0} 164 | m_GameObject: {fileID: 752680525} 165 | m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} 166 | --- !u!4 &752680529 167 | Transform: 168 | m_ObjectHideFlags: 0 169 | m_PrefabParentObject: {fileID: 0} 170 | m_PrefabInternal: {fileID: 0} 171 | m_GameObject: {fileID: 752680525} 172 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 173 | m_LocalPosition: {x: 1, y: 2, z: 0} 174 | m_LocalScale: {x: 1, y: 1, z: 1} 175 | m_Children: [] 176 | m_Father: {fileID: 698496878} 177 | --- !u!1 &1015352804 178 | GameObject: 179 | m_ObjectHideFlags: 0 180 | m_PrefabParentObject: {fileID: 0} 181 | m_PrefabInternal: {fileID: 0} 182 | serializedVersion: 4 183 | m_Component: 184 | - 4: {fileID: 1015352805} 185 | - 33: {fileID: 1015352808} 186 | - 135: {fileID: 1015352807} 187 | - 23: {fileID: 1015352806} 188 | m_Layer: 0 189 | m_Name: GreenSphere(Clone) 190 | m_TagString: Untagged 191 | m_Icon: {fileID: 0} 192 | m_NavMeshLayer: 0 193 | m_StaticEditorFlags: 0 194 | m_IsActive: 1 195 | --- !u!4 &1015352805 196 | Transform: 197 | m_ObjectHideFlags: 0 198 | m_PrefabParentObject: {fileID: 0} 199 | m_PrefabInternal: {fileID: 0} 200 | m_GameObject: {fileID: 1015352804} 201 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 202 | m_LocalPosition: {x: -4, y: -2, z: 0} 203 | m_LocalScale: {x: 1, y: 1, z: 1} 204 | m_Children: [] 205 | m_Father: {fileID: 698496878} 206 | --- !u!23 &1015352806 207 | Renderer: 208 | m_ObjectHideFlags: 0 209 | m_PrefabParentObject: {fileID: 0} 210 | m_PrefabInternal: {fileID: 0} 211 | m_GameObject: {fileID: 1015352804} 212 | m_Enabled: 1 213 | m_CastShadows: 1 214 | m_ReceiveShadows: 1 215 | m_LightmapIndex: 255 216 | m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} 217 | m_Materials: 218 | - {fileID: 2100000, guid: 876c81f9d58844072a2b4543ec91267a, type: 2} 219 | m_SubsetIndices: 220 | m_StaticBatchRoot: {fileID: 0} 221 | m_UseLightProbes: 0 222 | m_LightProbeAnchor: {fileID: 0} 223 | m_ScaleInLightmap: 1 224 | m_SortingLayer: 0 225 | m_SortingOrder: 0 226 | m_SortingLayerID: 0 227 | --- !u!135 &1015352807 228 | SphereCollider: 229 | m_ObjectHideFlags: 0 230 | m_PrefabParentObject: {fileID: 0} 231 | m_PrefabInternal: {fileID: 0} 232 | m_GameObject: {fileID: 1015352804} 233 | m_Material: {fileID: 0} 234 | m_IsTrigger: 0 235 | m_Enabled: 1 236 | serializedVersion: 2 237 | m_Radius: .5 238 | m_Center: {x: 0, y: 0, z: 0} 239 | --- !u!33 &1015352808 240 | MeshFilter: 241 | m_ObjectHideFlags: 0 242 | m_PrefabParentObject: {fileID: 0} 243 | m_PrefabInternal: {fileID: 0} 244 | m_GameObject: {fileID: 1015352804} 245 | m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} 246 | --- !u!1 &1358294590 247 | GameObject: 248 | m_ObjectHideFlags: 0 249 | m_PrefabParentObject: {fileID: 0} 250 | m_PrefabInternal: {fileID: 0} 251 | serializedVersion: 4 252 | m_Component: 253 | - 4: {fileID: 1358294595} 254 | - 20: {fileID: 1358294594} 255 | - 92: {fileID: 1358294593} 256 | - 124: {fileID: 1358294592} 257 | - 81: {fileID: 1358294591} 258 | - 114: {fileID: 1358294596} 259 | m_Layer: 0 260 | m_Name: Main Camera 261 | m_TagString: MainCamera 262 | m_Icon: {fileID: 0} 263 | m_NavMeshLayer: 0 264 | m_StaticEditorFlags: 0 265 | m_IsActive: 1 266 | --- !u!81 &1358294591 267 | AudioListener: 268 | m_ObjectHideFlags: 0 269 | m_PrefabParentObject: {fileID: 0} 270 | m_PrefabInternal: {fileID: 0} 271 | m_GameObject: {fileID: 1358294590} 272 | m_Enabled: 1 273 | --- !u!124 &1358294592 274 | Behaviour: 275 | m_ObjectHideFlags: 0 276 | m_PrefabParentObject: {fileID: 0} 277 | m_PrefabInternal: {fileID: 0} 278 | m_GameObject: {fileID: 1358294590} 279 | m_Enabled: 1 280 | --- !u!92 &1358294593 281 | Behaviour: 282 | m_ObjectHideFlags: 0 283 | m_PrefabParentObject: {fileID: 0} 284 | m_PrefabInternal: {fileID: 0} 285 | m_GameObject: {fileID: 1358294590} 286 | m_Enabled: 1 287 | --- !u!20 &1358294594 288 | Camera: 289 | m_ObjectHideFlags: 0 290 | m_PrefabParentObject: {fileID: 0} 291 | m_PrefabInternal: {fileID: 0} 292 | m_GameObject: {fileID: 1358294590} 293 | m_Enabled: 1 294 | serializedVersion: 2 295 | m_ClearFlags: 1 296 | m_BackGroundColor: {r: .192156866, g: .301960796, b: .474509805, a: .0196078438} 297 | m_NormalizedViewPortRect: 298 | serializedVersion: 2 299 | x: 0 300 | y: 0 301 | width: 1 302 | height: 1 303 | near clip plane: .300000012 304 | far clip plane: 1000 305 | field of view: 60 306 | orthographic: 1 307 | orthographic size: 5 308 | m_Depth: -1 309 | m_CullingMask: 310 | serializedVersion: 2 311 | m_Bits: 4294967295 312 | m_RenderingPath: -1 313 | m_TargetTexture: {fileID: 0} 314 | m_HDR: 0 315 | m_OcclusionCulling: 1 316 | --- !u!4 &1358294595 317 | Transform: 318 | m_ObjectHideFlags: 0 319 | m_PrefabParentObject: {fileID: 0} 320 | m_PrefabInternal: {fileID: 0} 321 | m_GameObject: {fileID: 1358294590} 322 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 323 | m_LocalPosition: {x: 0, y: 0, z: -10} 324 | m_LocalScale: {x: 1, y: 1, z: 1} 325 | m_Children: [] 326 | m_Father: {fileID: 0} 327 | --- !u!114 &1358294596 328 | MonoBehaviour: 329 | m_ObjectHideFlags: 0 330 | m_PrefabParentObject: {fileID: 0} 331 | m_PrefabInternal: {fileID: 0} 332 | m_GameObject: {fileID: 1358294590} 333 | m_Enabled: 1 334 | m_EditorHideFlags: 0 335 | m_Script: {fileID: 11500000, guid: 01cdeb3258bc3446ba8846c11515fc68, type: 3} 336 | m_Name: 337 | m_EditorClassIdentifier: 338 | --- !u!1 &1499417910 339 | GameObject: 340 | m_ObjectHideFlags: 0 341 | m_PrefabParentObject: {fileID: 0} 342 | m_PrefabInternal: {fileID: 0} 343 | serializedVersion: 4 344 | m_Component: 345 | - 4: {fileID: 1499417911} 346 | - 33: {fileID: 1499417914} 347 | - 65: {fileID: 1499417913} 348 | - 23: {fileID: 1499417912} 349 | m_Layer: 0 350 | m_Name: RedCube(Clone) 351 | m_TagString: Untagged 352 | m_Icon: {fileID: 0} 353 | m_NavMeshLayer: 0 354 | m_StaticEditorFlags: 0 355 | m_IsActive: 1 356 | --- !u!4 &1499417911 357 | Transform: 358 | m_ObjectHideFlags: 0 359 | m_PrefabParentObject: {fileID: 0} 360 | m_PrefabInternal: {fileID: 0} 361 | m_GameObject: {fileID: 1499417910} 362 | m_LocalRotation: {x: 0, y: 0, z: .382683456, w: .923879504} 363 | m_LocalPosition: {x: 4, y: 1, z: 0} 364 | m_LocalScale: {x: 1, y: 1, z: 1} 365 | m_Children: [] 366 | m_Father: {fileID: 698496878} 367 | --- !u!23 &1499417912 368 | Renderer: 369 | m_ObjectHideFlags: 0 370 | m_PrefabParentObject: {fileID: 0} 371 | m_PrefabInternal: {fileID: 0} 372 | m_GameObject: {fileID: 1499417910} 373 | m_Enabled: 1 374 | m_CastShadows: 1 375 | m_ReceiveShadows: 1 376 | m_LightmapIndex: 255 377 | m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} 378 | m_Materials: 379 | - {fileID: 2100000, guid: 44c0b6b8a681441999aedda479190d83, type: 2} 380 | m_SubsetIndices: 381 | m_StaticBatchRoot: {fileID: 0} 382 | m_UseLightProbes: 0 383 | m_LightProbeAnchor: {fileID: 0} 384 | m_ScaleInLightmap: 1 385 | m_SortingLayer: 0 386 | m_SortingOrder: 0 387 | m_SortingLayerID: 0 388 | --- !u!65 &1499417913 389 | BoxCollider: 390 | m_ObjectHideFlags: 0 391 | m_PrefabParentObject: {fileID: 0} 392 | m_PrefabInternal: {fileID: 0} 393 | m_GameObject: {fileID: 1499417910} 394 | m_Material: {fileID: 0} 395 | m_IsTrigger: 0 396 | m_Enabled: 1 397 | serializedVersion: 2 398 | m_Size: {x: 1, y: 1, z: 1} 399 | m_Center: {x: 0, y: 0, z: 0} 400 | --- !u!33 &1499417914 401 | MeshFilter: 402 | m_ObjectHideFlags: 0 403 | m_PrefabParentObject: {fileID: 0} 404 | m_PrefabInternal: {fileID: 0} 405 | m_GameObject: {fileID: 1499417910} 406 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 407 | --- !u!1 &2011212739 408 | GameObject: 409 | m_ObjectHideFlags: 0 410 | m_PrefabParentObject: {fileID: 0} 411 | m_PrefabInternal: {fileID: 0} 412 | serializedVersion: 4 413 | m_Component: 414 | - 4: {fileID: 2011212740} 415 | - 33: {fileID: 2011212743} 416 | - 65: {fileID: 2011212742} 417 | - 23: {fileID: 2011212741} 418 | m_Layer: 0 419 | m_Name: RedCube(Clone) 420 | m_TagString: Untagged 421 | m_Icon: {fileID: 0} 422 | m_NavMeshLayer: 0 423 | m_StaticEditorFlags: 0 424 | m_IsActive: 1 425 | --- !u!4 &2011212740 426 | Transform: 427 | m_ObjectHideFlags: 0 428 | m_PrefabParentObject: {fileID: 0} 429 | m_PrefabInternal: {fileID: 0} 430 | m_GameObject: {fileID: 2011212739} 431 | m_LocalRotation: {x: 0, y: 0, z: .258819073, w: .965925872} 432 | m_LocalPosition: {x: 0, y: -2, z: 0} 433 | m_LocalScale: {x: 1, y: 3, z: 1} 434 | m_Children: [] 435 | m_Father: {fileID: 698496878} 436 | --- !u!23 &2011212741 437 | Renderer: 438 | m_ObjectHideFlags: 0 439 | m_PrefabParentObject: {fileID: 0} 440 | m_PrefabInternal: {fileID: 0} 441 | m_GameObject: {fileID: 2011212739} 442 | m_Enabled: 1 443 | m_CastShadows: 1 444 | m_ReceiveShadows: 1 445 | m_LightmapIndex: 255 446 | m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} 447 | m_Materials: 448 | - {fileID: 2100000, guid: 44c0b6b8a681441999aedda479190d83, type: 2} 449 | m_SubsetIndices: 450 | m_StaticBatchRoot: {fileID: 0} 451 | m_UseLightProbes: 0 452 | m_LightProbeAnchor: {fileID: 0} 453 | m_ScaleInLightmap: 1 454 | m_SortingLayer: 0 455 | m_SortingOrder: 0 456 | m_SortingLayerID: 0 457 | --- !u!65 &2011212742 458 | BoxCollider: 459 | m_ObjectHideFlags: 0 460 | m_PrefabParentObject: {fileID: 0} 461 | m_PrefabInternal: {fileID: 0} 462 | m_GameObject: {fileID: 2011212739} 463 | m_Material: {fileID: 0} 464 | m_IsTrigger: 0 465 | m_Enabled: 1 466 | serializedVersion: 2 467 | m_Size: {x: 1, y: 1, z: 1} 468 | m_Center: {x: 0, y: 0, z: 0} 469 | --- !u!33 &2011212743 470 | MeshFilter: 471 | m_ObjectHideFlags: 0 472 | m_PrefabParentObject: {fileID: 0} 473 | m_PrefabInternal: {fileID: 0} 474 | m_GameObject: {fileID: 2011212739} 475 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 476 | -------------------------------------------------------------------------------- /Assets/_LOAD_THIS_SCENE_/MainScene.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8aa8af99d02c94a7cb8b7dc74087ef2a 3 | DefaultImporter: 4 | userData: 5 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 GabeMerke 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /ProjectSettings/AudioManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!11 &1 4 | AudioManager: 5 | m_ObjectHideFlags: 0 6 | m_Volume: 1 7 | Rolloff Scale: 1 8 | m_SpeedOfSound: 347 9 | Doppler Factor: 1 10 | Default Speaker Mode: 2 11 | m_DSPBufferSize: 0 12 | m_DisableAudio: 0 13 | -------------------------------------------------------------------------------- /ProjectSettings/DynamicsManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!55 &1 4 | PhysicsManager: 5 | m_ObjectHideFlags: 0 6 | m_Gravity: {x: 0, y: -9.81000042, z: 0} 7 | m_DefaultMaterial: {fileID: 0} 8 | m_BounceThreshold: 2 9 | m_SleepVelocity: .150000006 10 | m_SleepAngularVelocity: .140000001 11 | m_MaxAngularVelocity: 7 12 | m_MinPenetrationForPenalty: .00999999978 13 | m_SolverIterationCount: 6 14 | m_RaycastsHitTriggers: 1 15 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 16 | -------------------------------------------------------------------------------- /ProjectSettings/EditorBuildSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1045 &1 4 | EditorBuildSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Scenes: [] 8 | -------------------------------------------------------------------------------- /ProjectSettings/EditorSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!159 &1 4 | EditorSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 3 7 | m_ExternalVersionControlSupport: Hidden Meta Files 8 | m_SerializationMode: 2 9 | m_WebSecurityEmulationEnabled: 0 10 | m_WebSecurityEmulationHostUrl: http://www.mydomain.com/mygame.unity3d 11 | m_DefaultBehaviorMode: 1 12 | m_SpritePackerMode: 0 13 | -------------------------------------------------------------------------------- /ProjectSettings/GraphicsSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!30 &1 4 | GraphicsSettings: 5 | m_ObjectHideFlags: 0 6 | m_AlwaysIncludedShaders: 7 | - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} 8 | -------------------------------------------------------------------------------- /ProjectSettings/InputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!13 &1 4 | InputManager: 5 | m_ObjectHideFlags: 0 6 | m_Axes: 7 | - serializedVersion: 3 8 | m_Name: Horizontal 9 | descriptiveName: 10 | descriptiveNegativeName: 11 | negativeButton: left 12 | positiveButton: right 13 | altNegativeButton: a 14 | altPositiveButton: d 15 | gravity: 3 16 | dead: .00100000005 17 | sensitivity: 3 18 | snap: 1 19 | invert: 0 20 | type: 0 21 | axis: 0 22 | joyNum: 0 23 | - serializedVersion: 3 24 | m_Name: Vertical 25 | descriptiveName: 26 | descriptiveNegativeName: 27 | negativeButton: down 28 | positiveButton: up 29 | altNegativeButton: s 30 | altPositiveButton: w 31 | gravity: 3 32 | dead: .00100000005 33 | sensitivity: 3 34 | snap: 1 35 | invert: 0 36 | type: 0 37 | axis: 0 38 | joyNum: 0 39 | - serializedVersion: 3 40 | m_Name: Fire1 41 | descriptiveName: 42 | descriptiveNegativeName: 43 | negativeButton: 44 | positiveButton: left ctrl 45 | altNegativeButton: 46 | altPositiveButton: mouse 0 47 | gravity: 1000 48 | dead: .00100000005 49 | sensitivity: 1000 50 | snap: 0 51 | invert: 0 52 | type: 0 53 | axis: 0 54 | joyNum: 0 55 | - serializedVersion: 3 56 | m_Name: Fire2 57 | descriptiveName: 58 | descriptiveNegativeName: 59 | negativeButton: 60 | positiveButton: left alt 61 | altNegativeButton: 62 | altPositiveButton: mouse 1 63 | gravity: 1000 64 | dead: .00100000005 65 | sensitivity: 1000 66 | snap: 0 67 | invert: 0 68 | type: 0 69 | axis: 0 70 | joyNum: 0 71 | - serializedVersion: 3 72 | m_Name: Fire3 73 | descriptiveName: 74 | descriptiveNegativeName: 75 | negativeButton: 76 | positiveButton: left cmd 77 | altNegativeButton: 78 | altPositiveButton: mouse 2 79 | gravity: 1000 80 | dead: .00100000005 81 | sensitivity: 1000 82 | snap: 0 83 | invert: 0 84 | type: 0 85 | axis: 0 86 | joyNum: 0 87 | - serializedVersion: 3 88 | m_Name: Jump 89 | descriptiveName: 90 | descriptiveNegativeName: 91 | negativeButton: 92 | positiveButton: space 93 | altNegativeButton: 94 | altPositiveButton: 95 | gravity: 1000 96 | dead: .00100000005 97 | sensitivity: 1000 98 | snap: 0 99 | invert: 0 100 | type: 0 101 | axis: 0 102 | joyNum: 0 103 | - serializedVersion: 3 104 | m_Name: Mouse X 105 | descriptiveName: 106 | descriptiveNegativeName: 107 | negativeButton: 108 | positiveButton: 109 | altNegativeButton: 110 | altPositiveButton: 111 | gravity: 0 112 | dead: 0 113 | sensitivity: .100000001 114 | snap: 0 115 | invert: 0 116 | type: 1 117 | axis: 0 118 | joyNum: 0 119 | - serializedVersion: 3 120 | m_Name: Mouse Y 121 | descriptiveName: 122 | descriptiveNegativeName: 123 | negativeButton: 124 | positiveButton: 125 | altNegativeButton: 126 | altPositiveButton: 127 | gravity: 0 128 | dead: 0 129 | sensitivity: .100000001 130 | snap: 0 131 | invert: 0 132 | type: 1 133 | axis: 1 134 | joyNum: 0 135 | - serializedVersion: 3 136 | m_Name: Mouse ScrollWheel 137 | descriptiveName: 138 | descriptiveNegativeName: 139 | negativeButton: 140 | positiveButton: 141 | altNegativeButton: 142 | altPositiveButton: 143 | gravity: 0 144 | dead: 0 145 | sensitivity: .100000001 146 | snap: 0 147 | invert: 0 148 | type: 1 149 | axis: 2 150 | joyNum: 0 151 | - serializedVersion: 3 152 | m_Name: Horizontal 153 | descriptiveName: 154 | descriptiveNegativeName: 155 | negativeButton: 156 | positiveButton: 157 | altNegativeButton: 158 | altPositiveButton: 159 | gravity: 0 160 | dead: .189999998 161 | sensitivity: 1 162 | snap: 0 163 | invert: 0 164 | type: 2 165 | axis: 0 166 | joyNum: 0 167 | - serializedVersion: 3 168 | m_Name: Vertical 169 | descriptiveName: 170 | descriptiveNegativeName: 171 | negativeButton: 172 | positiveButton: 173 | altNegativeButton: 174 | altPositiveButton: 175 | gravity: 0 176 | dead: .189999998 177 | sensitivity: 1 178 | snap: 0 179 | invert: 1 180 | type: 2 181 | axis: 1 182 | joyNum: 0 183 | - serializedVersion: 3 184 | m_Name: Fire1 185 | descriptiveName: 186 | descriptiveNegativeName: 187 | negativeButton: 188 | positiveButton: joystick button 0 189 | altNegativeButton: 190 | altPositiveButton: 191 | gravity: 1000 192 | dead: .00100000005 193 | sensitivity: 1000 194 | snap: 0 195 | invert: 0 196 | type: 0 197 | axis: 0 198 | joyNum: 0 199 | - serializedVersion: 3 200 | m_Name: Fire2 201 | descriptiveName: 202 | descriptiveNegativeName: 203 | negativeButton: 204 | positiveButton: joystick button 1 205 | altNegativeButton: 206 | altPositiveButton: 207 | gravity: 1000 208 | dead: .00100000005 209 | sensitivity: 1000 210 | snap: 0 211 | invert: 0 212 | type: 0 213 | axis: 0 214 | joyNum: 0 215 | - serializedVersion: 3 216 | m_Name: Fire3 217 | descriptiveName: 218 | descriptiveNegativeName: 219 | negativeButton: 220 | positiveButton: joystick button 2 221 | altNegativeButton: 222 | altPositiveButton: 223 | gravity: 1000 224 | dead: .00100000005 225 | sensitivity: 1000 226 | snap: 0 227 | invert: 0 228 | type: 0 229 | axis: 0 230 | joyNum: 0 231 | - serializedVersion: 3 232 | m_Name: Jump 233 | descriptiveName: 234 | descriptiveNegativeName: 235 | negativeButton: 236 | positiveButton: joystick button 3 237 | altNegativeButton: 238 | altPositiveButton: 239 | gravity: 1000 240 | dead: .00100000005 241 | sensitivity: 1000 242 | snap: 0 243 | invert: 0 244 | type: 0 245 | axis: 0 246 | joyNum: 0 247 | -------------------------------------------------------------------------------- /ProjectSettings/NavMeshLayers.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!126 &1 4 | NavMeshLayers: 5 | m_ObjectHideFlags: 0 6 | Built-in Layer 0: 7 | name: Default 8 | cost: 1 9 | editType: 2 10 | Built-in Layer 1: 11 | name: Not Walkable 12 | cost: 1 13 | editType: 0 14 | Built-in Layer 2: 15 | name: Jump 16 | cost: 2 17 | editType: 2 18 | User Layer 0: 19 | name: 20 | cost: 1 21 | editType: 3 22 | User Layer 1: 23 | name: 24 | cost: 1 25 | editType: 3 26 | User Layer 2: 27 | name: 28 | cost: 1 29 | editType: 3 30 | User Layer 3: 31 | name: 32 | cost: 1 33 | editType: 3 34 | User Layer 4: 35 | name: 36 | cost: 1 37 | editType: 3 38 | User Layer 5: 39 | name: 40 | cost: 1 41 | editType: 3 42 | User Layer 6: 43 | name: 44 | cost: 1 45 | editType: 3 46 | User Layer 7: 47 | name: 48 | cost: 1 49 | editType: 3 50 | User Layer 8: 51 | name: 52 | cost: 1 53 | editType: 3 54 | User Layer 9: 55 | name: 56 | cost: 1 57 | editType: 3 58 | User Layer 10: 59 | name: 60 | cost: 1 61 | editType: 3 62 | User Layer 11: 63 | name: 64 | cost: 1 65 | editType: 3 66 | User Layer 12: 67 | name: 68 | cost: 1 69 | editType: 3 70 | User Layer 13: 71 | name: 72 | cost: 1 73 | editType: 3 74 | User Layer 14: 75 | name: 76 | cost: 1 77 | editType: 3 78 | User Layer 15: 79 | name: 80 | cost: 1 81 | editType: 3 82 | User Layer 16: 83 | name: 84 | cost: 1 85 | editType: 3 86 | User Layer 17: 87 | name: 88 | cost: 1 89 | editType: 3 90 | User Layer 18: 91 | name: 92 | cost: 1 93 | editType: 3 94 | User Layer 19: 95 | name: 96 | cost: 1 97 | editType: 3 98 | User Layer 20: 99 | name: 100 | cost: 1 101 | editType: 3 102 | User Layer 21: 103 | name: 104 | cost: 1 105 | editType: 3 106 | User Layer 22: 107 | name: 108 | cost: 1 109 | editType: 3 110 | User Layer 23: 111 | name: 112 | cost: 1 113 | editType: 3 114 | User Layer 24: 115 | name: 116 | cost: 1 117 | editType: 3 118 | User Layer 25: 119 | name: 120 | cost: 1 121 | editType: 3 122 | User Layer 26: 123 | name: 124 | cost: 1 125 | editType: 3 126 | User Layer 27: 127 | name: 128 | cost: 1 129 | editType: 3 130 | User Layer 28: 131 | name: 132 | cost: 1 133 | editType: 3 134 | -------------------------------------------------------------------------------- /ProjectSettings/NetworkManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!149 &1 4 | NetworkManager: 5 | m_ObjectHideFlags: 0 6 | m_DebugLevel: 0 7 | m_Sendrate: 15 8 | m_AssetToPrefab: {} 9 | -------------------------------------------------------------------------------- /ProjectSettings/Physics2DSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!19 &1 4 | Physics2DSettings: 5 | m_ObjectHideFlags: 0 6 | m_Gravity: {x: 0, y: -9.81000042} 7 | m_DefaultMaterial: {fileID: 0} 8 | m_VelocityIterations: 8 9 | m_PositionIterations: 3 10 | m_RaycastsHitTriggers: 1 11 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 12 | -------------------------------------------------------------------------------- /ProjectSettings/ProjectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!129 &1 4 | PlayerSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | AndroidProfiler: 0 8 | defaultScreenOrientation: 0 9 | targetDevice: 2 10 | targetGlesGraphics: 1 11 | targetResolution: 0 12 | accelerometerFrequency: 60 13 | companyName: DefaultCompany 14 | productName: UnityXmlLevel 15 | defaultCursor: {fileID: 0} 16 | cursorHotspot: {x: 0, y: 0} 17 | defaultScreenWidth: 1024 18 | defaultScreenHeight: 768 19 | defaultScreenWidthWeb: 960 20 | defaultScreenHeightWeb: 600 21 | m_RenderingPath: 1 22 | m_MobileRenderingPath: 1 23 | m_ActiveColorSpace: 0 24 | m_MTRendering: 1 25 | m_MobileMTRendering: 0 26 | m_UseDX11: 0 27 | iosShowActivityIndicatorOnLoading: -1 28 | androidShowActivityIndicatorOnLoading: -1 29 | displayResolutionDialog: 1 30 | allowedAutorotateToPortrait: 1 31 | allowedAutorotateToPortraitUpsideDown: 1 32 | allowedAutorotateToLandscapeRight: 1 33 | allowedAutorotateToLandscapeLeft: 1 34 | useOSAutorotation: 1 35 | use32BitDisplayBuffer: 1 36 | use24BitDepthBuffer: 1 37 | defaultIsFullScreen: 1 38 | defaultIsNativeResolution: 1 39 | runInBackground: 0 40 | captureSingleScreen: 0 41 | Override IPod Music: 0 42 | Prepare IOS For Recording: 0 43 | enableHWStatistics: 1 44 | usePlayerLog: 1 45 | stripPhysics: 0 46 | forceSingleInstance: 0 47 | resizableWindow: 0 48 | useMacAppStoreValidation: 0 49 | gpuSkinning: 0 50 | xboxPIXTextureCapture: 0 51 | xboxEnableAvatar: 0 52 | xboxEnableKinect: 0 53 | xboxEnableKinectAutoTracking: 0 54 | xboxEnableFitness: 0 55 | macFullscreenMode: 2 56 | xboxSpeechDB: 0 57 | xboxEnableHeadOrientation: 0 58 | xboxEnableGuest: 0 59 | wiiHio2Usage: -1 60 | wiiLoadingScreenRectPlacement: 0 61 | wiiLoadingScreenBackground: {r: 1, g: 1, b: 1, a: 1} 62 | wiiLoadingScreenPeriod: 1000 63 | wiiLoadingScreenFileName: 64 | wiiLoadingScreenRect: 65 | serializedVersion: 2 66 | x: 0 67 | y: 0 68 | width: 0 69 | height: 0 70 | m_SupportedAspectRatios: 71 | 4:3: 1 72 | 5:4: 1 73 | 16:10: 1 74 | 16:9: 1 75 | Others: 1 76 | iPhoneBundleIdentifier: com.Company.ProductName 77 | productGUID: 01aad7aa0794e4c03b51372cd0ec91a5 78 | iPhoneBundleVersion: 1.0 79 | AndroidBundleVersionCode: 1 80 | AndroidMinSdkVersion: 9 81 | AndroidPreferredInstallLocation: 1 82 | aotOptions: 83 | apiCompatibilityLevel: 2 84 | iPhoneStrippingLevel: 0 85 | iPhoneScriptCallOptimization: 0 86 | ForceInternetPermission: 0 87 | ForceSDCardPermission: 0 88 | CreateWallpaper: 0 89 | APKExpansionFiles: 0 90 | StripUnusedMeshComponents: 0 91 | iPhoneSdkVersion: 988 92 | iPhoneTargetOSVersion: 16 93 | uIPrerenderedIcon: 0 94 | uIRequiresPersistentWiFi: 0 95 | uIStatusBarHidden: 1 96 | uIExitOnSuspend: 0 97 | uIStatusBarStyle: 0 98 | iPhoneSplashScreen: {fileID: 0} 99 | iPhoneHighResSplashScreen: {fileID: 0} 100 | iPhoneTallHighResSplashScreen: {fileID: 0} 101 | iPadPortraitSplashScreen: {fileID: 0} 102 | iPadHighResPortraitSplashScreen: {fileID: 0} 103 | iPadLandscapeSplashScreen: {fileID: 0} 104 | iPadHighResLandscapeSplashScreen: {fileID: 0} 105 | AndroidTargetDevice: 0 106 | AndroidSplashScreenScale: 0 107 | AndroidKeystoreName: 108 | AndroidKeyaliasName: 109 | resolutionDialogBanner: {fileID: 0} 110 | m_BuildTargetIcons: [] 111 | m_BuildTargetBatching: [] 112 | webPlayerTemplate: APPLICATION:Default 113 | m_TemplateCustomTags: {} 114 | wiiRegion: 1 115 | wiiGameCode: RABA 116 | wiiGameVersion: 117 | wiiCompanyCode: ZZ 118 | wiiSupportsNunchuk: 0 119 | wiiSupportsClassicController: 0 120 | wiiSupportsBalanceBoard: 0 121 | wiiSupportsMotionPlus: 0 122 | wiiControllerCount: 1 123 | wiiFloatingPointExceptions: 0 124 | wiiScreenCrashDumps: 1 125 | XboxTitleId: 126 | XboxImageXexPath: 127 | XboxSpaPath: 128 | XboxGenerateSpa: 0 129 | XboxDeployKinectResources: 0 130 | XboxSplashScreen: {fileID: 0} 131 | xboxEnableSpeech: 0 132 | xboxAdditionalTitleMemorySize: 0 133 | xboxDeployKinectHeadOrientation: 0 134 | xboxDeployKinectHeadPosition: 0 135 | ps3TitleConfigPath: 136 | ps3DLCConfigPath: 137 | ps3ThumbnailPath: 138 | ps3BackgroundPath: 139 | ps3SoundPath: 140 | ps3TrophyCommId: 141 | ps3NpCommunicationPassphrase: 142 | ps3TrophyPackagePath: 143 | ps3BootCheckMaxSaveGameSizeKB: 128 144 | ps3TrophyCommSig: 145 | ps3SaveGameSlots: 1 146 | ps3TrialMode: 0 147 | flashStrippingLevel: 2 148 | spritePackerPolicy: 149 | scriptingDefineSymbols: {} 150 | metroPackageName: UnityXmlLevel 151 | metroPackageLogo: 152 | metroPackageVersion: 153 | metroCertificatePath: 154 | metroCertificatePassword: 155 | metroCertificateSubject: 156 | metroCertificateIssuer: 157 | metroCertificateNotAfter: 0000000000000000 158 | metroApplicationDescription: UnityXmlLevel 159 | metroTileLogo: 160 | metroTileWideLogo: 161 | metroTileSmallLogo: 162 | metroTileShortName: 163 | metroCommandLineArgsFile: 164 | metroTileShowName: 1 165 | metroTileForegroundText: 1 166 | metroTileBackgroundColor: {r: 0, g: 0, b: 0, a: 1} 167 | metroSplashScreenImage: 168 | metroSplashScreenBackgroundColor: {r: 0, g: 0, b: 0, a: 1} 169 | metroSplashScreenUseBackgroundColor: 0 170 | metroCapabilities: {} 171 | metroCompilationOverrides: 1 172 | blackberryDeviceAddress: 173 | blackberryDevicePassword: 174 | blackberryTokenPath: 175 | blackberryTokenExires: 176 | blackberryTokenAuthor: 177 | blackberryTokenAuthorId: 178 | blackberryAuthorId: 179 | blackberryCskPassword: 180 | blackberrySaveLogPath: 181 | blackberryAuthorIdOveride: 0 182 | blackberrySharedPermissions: 0 183 | blackberryCameraPermissions: 0 184 | blackberryGPSPermissions: 0 185 | blackberryDeviceIDPermissions: 0 186 | blackberryMicrophonePermissions: 0 187 | blackberryGamepadSupport: 0 188 | blackberryBuildId: 0 189 | blackberryLandscapeSplashScreen: {fileID: 0} 190 | blackberryPortraitSplashScreen: {fileID: 0} 191 | blackberrySquareSplashScreen: {fileID: 0} 192 | tizenProductDescription: 193 | tizenProductURL: 194 | tizenCertificatePath: 195 | tizenCertificatePassword: 196 | tizenSaveLogPath: 197 | firstStreamedLevelWithResources: 0 198 | unityRebuildLibraryVersion: 9 199 | unityForwardCompatibleVersion: 39 200 | unityStandardAssetsVersion: 0 201 | -------------------------------------------------------------------------------- /ProjectSettings/QualitySettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!47 &1 4 | QualitySettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 5 7 | m_CurrentQuality: 3 8 | m_QualitySettings: 9 | - serializedVersion: 2 10 | name: Fastest 11 | pixelLightCount: 0 12 | shadows: 0 13 | shadowResolution: 0 14 | shadowProjection: 1 15 | shadowCascades: 1 16 | shadowDistance: 15 17 | blendWeights: 1 18 | textureQuality: 1 19 | anisotropicTextures: 0 20 | antiAliasing: 0 21 | softParticles: 0 22 | softVegetation: 0 23 | vSyncCount: 0 24 | lodBias: .300000012 25 | maximumLODLevel: 0 26 | particleRaycastBudget: 4 27 | excludedTargetPlatforms: [] 28 | - serializedVersion: 2 29 | name: Fast 30 | pixelLightCount: 0 31 | shadows: 0 32 | shadowResolution: 0 33 | shadowProjection: 1 34 | shadowCascades: 1 35 | shadowDistance: 20 36 | blendWeights: 2 37 | textureQuality: 0 38 | anisotropicTextures: 0 39 | antiAliasing: 0 40 | softParticles: 0 41 | softVegetation: 0 42 | vSyncCount: 0 43 | lodBias: .400000006 44 | maximumLODLevel: 0 45 | particleRaycastBudget: 16 46 | excludedTargetPlatforms: [] 47 | - serializedVersion: 2 48 | name: Simple 49 | pixelLightCount: 1 50 | shadows: 1 51 | shadowResolution: 0 52 | shadowProjection: 1 53 | shadowCascades: 1 54 | shadowDistance: 20 55 | blendWeights: 2 56 | textureQuality: 0 57 | anisotropicTextures: 1 58 | antiAliasing: 0 59 | softParticles: 0 60 | softVegetation: 0 61 | vSyncCount: 0 62 | lodBias: .699999988 63 | maximumLODLevel: 0 64 | particleRaycastBudget: 64 65 | excludedTargetPlatforms: [] 66 | - serializedVersion: 2 67 | name: Good 68 | pixelLightCount: 2 69 | shadows: 2 70 | shadowResolution: 1 71 | shadowProjection: 1 72 | shadowCascades: 2 73 | shadowDistance: 40 74 | blendWeights: 2 75 | textureQuality: 0 76 | anisotropicTextures: 1 77 | antiAliasing: 0 78 | softParticles: 0 79 | softVegetation: 1 80 | vSyncCount: 1 81 | lodBias: 1 82 | maximumLODLevel: 0 83 | particleRaycastBudget: 256 84 | excludedTargetPlatforms: [] 85 | - serializedVersion: 2 86 | name: Beautiful 87 | pixelLightCount: 3 88 | shadows: 2 89 | shadowResolution: 2 90 | shadowProjection: 1 91 | shadowCascades: 2 92 | shadowDistance: 70 93 | blendWeights: 4 94 | textureQuality: 0 95 | anisotropicTextures: 2 96 | antiAliasing: 2 97 | softParticles: 1 98 | softVegetation: 1 99 | vSyncCount: 1 100 | lodBias: 1.5 101 | maximumLODLevel: 0 102 | particleRaycastBudget: 1024 103 | excludedTargetPlatforms: [] 104 | - serializedVersion: 2 105 | name: Fantastic 106 | pixelLightCount: 4 107 | shadows: 2 108 | shadowResolution: 2 109 | shadowProjection: 1 110 | shadowCascades: 4 111 | shadowDistance: 150 112 | blendWeights: 4 113 | textureQuality: 0 114 | anisotropicTextures: 2 115 | antiAliasing: 2 116 | softParticles: 1 117 | softVegetation: 1 118 | vSyncCount: 1 119 | lodBias: 2 120 | maximumLODLevel: 0 121 | particleRaycastBudget: 4096 122 | excludedTargetPlatforms: [] 123 | m_PerPlatformDefaultQuality: 124 | Android: 2 125 | BlackBerry: 2 126 | FlashPlayer: 3 127 | GLES Emulation: 3 128 | PS3: 3 129 | Standalone: 3 130 | Tizen: 2 131 | WP8: 3 132 | Web: 3 133 | Wii: 3 134 | Windows Store Apps: 3 135 | XBOX360: 3 136 | iPhone: 2 137 | -------------------------------------------------------------------------------- /ProjectSettings/TagManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!78 &1 4 | TagManager: 5 | tags: 6 | - 7 | Builtin Layer 0: Default 8 | Builtin Layer 1: TransparentFX 9 | Builtin Layer 2: Ignore Raycast 10 | Builtin Layer 3: 11 | Builtin Layer 4: Water 12 | Builtin Layer 5: 13 | Builtin Layer 6: 14 | Builtin Layer 7: 15 | User Layer 8: 16 | User Layer 9: 17 | User Layer 10: 18 | User Layer 11: 19 | User Layer 12: 20 | User Layer 13: 21 | User Layer 14: 22 | User Layer 15: 23 | User Layer 16: 24 | User Layer 17: 25 | User Layer 18: 26 | User Layer 19: 27 | User Layer 20: 28 | User Layer 21: 29 | User Layer 22: 30 | User Layer 23: 31 | User Layer 24: 32 | User Layer 25: 33 | User Layer 26: 34 | User Layer 27: 35 | User Layer 28: 36 | User Layer 29: 37 | User Layer 30: 38 | User Layer 31: 39 | m_SortingLayers: 40 | - name: Default 41 | userID: 0 42 | uniqueID: 0 43 | locked: 0 44 | -------------------------------------------------------------------------------- /ProjectSettings/TimeManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!5 &1 4 | TimeManager: 5 | m_ObjectHideFlags: 0 6 | Fixed Timestep: .0199999996 7 | Maximum Allowed Timestep: .333333343 8 | m_TimeScale: 1 9 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | UnityXmlLevels 2 | ============== 3 | 4 | Load and save levels in Unity3D using XML files, that you can also edit manually easily. 5 | 6 | 7 | #### Example XML snippet 8 | ``` 9 | 10 | 11 | 12 | 13 | ``` 14 | 15 | 16 | #### Tutorial 17 | Navigate to Team Brookvale website for the full description and tutorial: 18 | 19 | [https://teambrookvale.com.au/articles/tutorial-xml-level-unity](https://teambrookvale.com.au/articles/tutorial-xml-level-unity "Team Brookvale - Tutorial - Roboust XML level building in Unity") 20 | --------------------------------------------------------------------------------