예제 #1
0
 void OnGUI()
 {
     if (GUILayout.Button("Convert"))
     {
         Hammurabi serializer = new Hammurabi();
         serializer.SaveCurrentScene();
         serializer.SaveLinkedMeshes();
         serializer.SaveLinkedMaterials();
         serializer.SaveLinkedScripts();
     }
 }
예제 #2
0
        public static SceneData SceneDataFromSource(Scene source, Hammurabi serializer)
        {
            SceneData data = new SceneData();

            GameObject[] sourceGameObjects = source.GetRootGameObjects();
            data.gameObjects = new GameObjectData[sourceGameObjects.Length];
            for (int i = 0; i < sourceGameObjects.Length; i++)
            {
                GameObject sourceGameObject = sourceGameObjects[i];
                data.gameObjects[i] = GameObjectData.GameObjectDataFromSource(sourceGameObject, serializer);
            }
            return(data);
        }
예제 #3
0
        public static GameObjectData GameObjectDataFromSource(GameObject source, Hammurabi serializer)
        {
            Debug.Log("Serialize GameObject " + source.name);
            GameObjectData data = new GameObjectData();

            Component[] sourceComponents = source.GetComponents <Component>();
            data.n = source.name;
            data.c = new ComponentData[sourceComponents.Length];
            for (int i = 0; i < sourceComponents.Length; i++)
            {
                Component sourceComponent = sourceComponents[i];
                data.c[i] = ComponentData.ComponentDataFromSource(sourceComponent, serializer);
            }
            return(data);
        }
예제 #4
0
 public static ComponentData ComponentDataFromSource(Component target, Hammurabi serializer)
 {
     if (target is Transform)
     {
         return(TransformData.TransformDataFromSource(target as Transform));
     }
     if (target is Camera)
     {
         return(CameraData.CameraDataFromSource(target as Camera));
     }
     if (target is Light)
     {
         return(LightData.LightDataFromSource(target as Light));
     }
     if (target is MeshFilter)
     {
         return(MeshFilterData.MeshFilterDataFromSource(target as MeshFilter));
     }
     if (target is MeshRenderer)
     {
         return(MeshRendererData.MeshRendererDataFromSource(target as MeshRenderer));
     }
     if (target is Rigidbody)
     {
         return(RigidbodyData.RigidbodyDataFromSource(target as Rigidbody));
     }
     if (target is BoxCollider)
     {
         return(BoxColliderData.BoxColliderDataFromSource(target as BoxCollider));
     }
     if (target is MonoBehaviour)
     {
         return(MonoBehaviourData.MonoBehaviourDataFromSource(target as MonoBehaviour, serializer));
     }
     return(new ComponentData());
 }
예제 #5
0
        public static MonoBehaviourData MonoBehaviourDataFromSource(MonoBehaviour target, Hammurabi serializer)
        {
            MonoBehaviourData data = new MonoBehaviourData();

            data.n = "MonoBehaviour";
            SerializedObject serializableTarget = new SerializedObject(target);

            UnityEditor.SerializedProperty unityProperty  = serializableTarget.GetIterator();
            List <SerializedProperty>      propertiesList = new List <SerializedProperty>();

            while (unityProperty.NextVisible(true))
            {
                if (unityProperty.type == "int")
                {
                    SerializedProperty property = new SerializedProperty();
                    property.k = unityProperty.name;
                    property.t = SerializablePropertyType.Number;
                    property.v = unityProperty.intValue;
                    propertiesList.Add(property);
                }
                else if (unityProperty.type == "PPtr<MonoScript>")
                {
                    MonoScript script = unityProperty.objectReferenceValue as MonoScript;
                    serializer.LinkScript(script);
                    data.n = script.name;
                }
            }
            data.properties = propertiesList.ToArray();
            return(data);
        }