Beispiel #1
0
        public static ProjectSaveInfo Save()
        {
            var result = new ProjectSaveInfo();

            result.Nodes = new List <ProjectSaveInfo.SavedNodeInfo> ();

            foreach (GameObject g in GameObject.FindGameObjectsWithTag("Node"))
            {
                NodeController ctrl = g.GetComponent <NodeController> ();

                if (ctrl.processor.isDead == false)
                {
                    result.Nodes.Add(ProjectSaveInfo.SavedNodeInfo.FromNodeController(ctrl));
                }
            }

            result.used_node_ids           = NodeController.used_ids;
            result.resolutionIndex_preview = Globals.instance.resolutionIndex_preview;
            result.resolutionIndex_export  = Globals.instance.resolutionIndex_export;
            result.realtime_update_preview = Globals.instance.realtimeUpdatePreview;

            result.albedo_ID    = 0;
            result.normal_ID    = 0;
            result.smooth_id    = 0;
            result.metallic_ID  = 0;
            result.occlusion_id = 0;
            result.parallax_id  = 0;
            result.emission_id  = 0;

            if (Globals.instance.components.outputNode.inputButtonController_albedo.connectedOutputButton != null)
            {
                result.albedo_ID = Globals.instance.components.outputNode.
                                   inputButtonController_albedo.connectedOutputButton.nodeController.ID;
            }

            if (Globals.instance.components.outputNode.inputButtonController_normalMap.connectedOutputButton != null)
            {
                result.normal_ID = Globals.instance.components.outputNode.
                                   inputButtonController_normalMap.connectedOutputButton.nodeController.ID;
            }

            if (Globals.instance.components.outputNode.inputButtonController_smoothness.connectedOutputButton != null)
            {
                result.smooth_id = Globals.instance.components.outputNode.
                                   inputButtonController_smoothness.connectedOutputButton.nodeController.ID;
            }

            if (Globals.instance.components.outputNode.inputbuttonController_metallic.connectedOutputButton != null)
            {
                result.metallic_ID = Globals.instance.components.outputNode.
                                     inputbuttonController_metallic.connectedOutputButton.nodeController.ID;
            }

            if (Globals.instance.components.outputNode.inputbuttonController_occlusion.connectedOutputButton != null)
            {
                result.occlusion_id = Globals.instance.components.outputNode.
                                      inputbuttonController_occlusion.connectedOutputButton.nodeController.ID;
            }

            if (Globals.instance.components.outputNode.inputbuttonController_parallax.connectedOutputButton != null)
            {
                result.parallax_id = Globals.instance.components.outputNode.
                                     inputbuttonController_parallax.connectedOutputButton.nodeController.ID;
            }

            if (Globals.instance.components.outputNode.inputbuttonController_emission.connectedOutputButton != null)
            {
                result.emission_id = Globals.instance.components.outputNode.
                                     inputbuttonController_emission.connectedOutputButton.nodeController.ID;
            }


            return(result);
        }
Beispiel #2
0
        public static void Load(ProjectSaveInfo projectSaveInfo)
        {
            Reset();

            NodeController.used_ids = projectSaveInfo.used_node_ids;
            Globals.instance.resolutionIndex_preview = projectSaveInfo.resolutionIndex_preview;
            Globals.instance.resolutionIndex_export  = projectSaveInfo.resolutionIndex_export;
            Globals.instance.realtimeUpdatePreview   = projectSaveInfo.realtime_update_preview;

            Dictionary <ulong, NodeController> loaded_nodes = new Dictionary <ulong, NodeController> ();

            foreach (ProjectSaveInfo.SavedNodeInfo node in projectSaveInfo.Nodes)
            {
                NodeController ctrl = NodeSpawner.Spawn(
                    (TextureProcessors.TextureProcessor)System.Activator.CreateInstance(System.Type.GetType(node.processorType)),
                    node.ID
                    );

                loaded_nodes.Add(node.ID, ctrl);
                (ctrl.gameObject.transform as RectTransform).anchoredPosition = node.position;

                foreach (string pname in node.properties.Keys)
                {
                    ctrl.processor [pname] = node.properties [pname];
                }
            }

            foreach (ProjectSaveInfo.SavedNodeInfo node in projectSaveInfo.Nodes)
            {
                NodeController ctrl = loaded_nodes [node.ID];

                for (int i = 0; i < node.input_IDs.Count; i++)
                {
                    ulong input_id = node.input_IDs [i];
                    if (input_id == 0)
                    {
                        continue;
                    }
                    NodeController input_ctrl = loaded_nodes [input_id];
                    ctrl.inputs [i].connectedOutputButton = input_ctrl.output;
                }
            }

            if (projectSaveInfo.albedo_ID != 0)
            {
                Globals.instance.components.outputNode.inputButtonController_albedo.connectedOutputButton =
                    loaded_nodes [projectSaveInfo.albedo_ID].output;
            }

            if (projectSaveInfo.normal_ID != 0)
            {
                Globals.instance.components.outputNode.inputButtonController_normalMap.connectedOutputButton =
                    loaded_nodes [projectSaveInfo.normal_ID].output;
            }

            if (projectSaveInfo.smooth_id != 0)
            {
                Globals.instance.components.outputNode.inputButtonController_smoothness.connectedOutputButton =
                    loaded_nodes [projectSaveInfo.smooth_id].output;
            }

            if (projectSaveInfo.metallic_ID != 0)
            {
                Globals.instance.components.outputNode.inputbuttonController_metallic.connectedOutputButton =
                    loaded_nodes [projectSaveInfo.metallic_ID].output;
            }

            if (projectSaveInfo.occlusion_id != 0)
            {
                Globals.instance.components.outputNode.inputbuttonController_occlusion.connectedOutputButton =
                    loaded_nodes [projectSaveInfo.occlusion_id].output;
            }

            if (projectSaveInfo.parallax_id != 0)
            {
                Globals.instance.components.outputNode.inputbuttonController_parallax.connectedOutputButton =
                    loaded_nodes [projectSaveInfo.parallax_id].output;
            }

            if (projectSaveInfo.emission_id != 0)
            {
                Globals.instance.components.outputNode.inputbuttonController_emission.connectedOutputButton =
                    loaded_nodes [projectSaveInfo.emission_id].output;
            }
        }