using System;
using UwaProjScan;
using UnityEngine;
using RuleID = UwaProjScan.ScanRuleFixer.Rule.SceneCheck;
using UnityEditor;
namespace UwaProjScan.ScanRuleFixer
{
    class Scene_StaticRigidBody : IRuleFixer<RuleID.Scene_StaticRigidBody>
    {
        public bool Fix(string hierachy)
        {
            Rigidbody rigidbody;
            GameObject go = GameObject.Find(hierachy);
            rigidbody = go.GetComponent<Rigidbody>();

            if (rigidbody)
                UnityEngine.Object.DestroyImmediate(rigidbody);
            return true;
        }
    }
    class ShadowSolution: IRuleFixer<RuleID.Scene_ShadowResolution>
    {
        public bool Fix(string hierachy)
        {
            try
            {
                Light light = new Light();
                GameObject go = GameObject.Find(hierachy);
                light = go.GetComponent<Light>();
                light.shadowResolution = UnityEngine.Rendering.LightShadowResolution.FromQualitySettings;
            
            }catch(Exception e)
            {
                Debug.LogError(e.ToString());
                return false;
            }
            return true;
        }
    }

    class CameraRenderingPath : IRuleFixer<RuleID.Scene_RenderingPath>
    {
        public bool Fix(string hierachy)
        {
            Camera cam = new Camera();
            GameObject go = GameObject.Find(hierachy);
            cam = go.GetComponent<Camera>();

            cam.renderingPath = RenderingPath.UsePlayerSettings;

            return true;
        }
    }

    class Scene_RealtimeGI : IRuleFixer<RuleID.Scene_RealtimeGI>
    {
        public bool Fix(string Nothing)
        {
            Lightmapping.realtimeGI = false;
            return true;
        }
    }
    class MobileFog : IRuleFixer<RuleID.Editor_MobileFog>
    {
        public bool Fix(string Nothing)
        {
            RenderSettings.fog = false;
            return true;
        }
    }

}