// Use this for initialization
	void Awake()
	{
		switch (PlayerSt) {
		case PlayerTypeEnum.FeiJi:
			_InstanceFeiJi = this;
			break;
			
		case PlayerTypeEnum.TanKe:
			_InstanceTanKe = this;
			break;
		}

		for (int i = 0; i < GenSuiMoveCam.Length; i++) {
			if (MainCamera == GenSuiMoveCam[i]) {
				continue;
			}

			if (!XkGameCtrl.GetInstance().IsCartoonShootTest) {
				if (GetComponent<Camera>() != null) {
					GetComponent<Camera>().enabled = false;
				}
			}
			GenSuiMoveCam[i].SetActive(false);
			GenSuiMoveCam[i].tag = "MainCamera";
		}

		/*if (MainCamera != null) {
			Camera.main.enabled = false;
			MainCamera.SetActive(true);
		}*/
	}
    void OnTriggerEnter(Collider other)
    {
        if (GameMovieCtrl.IsActivePlayer)
        {
            if (Network.peerType == NetworkPeerType.Server)
            {
            }
            else
            {
                return;
            }
        }

        XkPlayerCtrl script = other.GetComponent <XkPlayerCtrl>();

        if (script == null)
        {
            return;
        }
        //Debug.Log("Unity:"+"*********************name "+gameObject.name);

        PSDingDianAimCamera.DingDianAimCamera     = null;
        PSDingDianNoAimCamera.DingDianNoAimCamera = null;
        PSZiYouMoveCamera.ZYMoveCamera            = null;
        if (CamState == PSCameraState.GenSuiMoveCam)
        {
            PlayerTypeEnum playerType = script.PlayerSt;
            switch (playerType)
            {
            case PlayerTypeEnum.FeiJi:
                PSGenSuiMoveCamera.GetInstanceFeiJi().ActiveGenSuiMoveCam(IndexGenSuiMove);
                break;

            case PlayerTypeEnum.TanKe:
                PSGenSuiMoveCamera.GetInstanceTanKe().ActiveGenSuiMoveCam(IndexGenSuiMove);
                break;
            }
        }

        if (DingDianAimCam != null && CamState == PSCameraState.DingDianAimCam)
        {
            GameObject playerObj = XkGameCtrl.GetInstance().GetRandAimPlayerObj();
            Transform  aimTr     = playerObj == null ? null : playerObj.transform;
            DingDianAimCam.ActiveCamera(aimTr);
        }
        CheckZiYouMoveCam(script);
        CheckDingDianNoAimCam();

        if (GameMovieCtrl.IsActivePlayer /*|| XkGameCtrl.GetInstance().IsServerCameraTest*/)
        {
            return;
        }
        CheckCameraTimeShake();
        CheckExplodePoint();
        CheckTanKePlayerAimPoint();
        CheckAutoFireCom();
        CheckTriggerPlayAni();
        CheckWorldTimeScale();
        CheckAutoFirePlayerAmmoType();
    }
    void CheckTriggerCameraInfo()
    {
        if (XkGameCtrl.IsLoadingLevel)
        {
            return;
        }

        bool isOutPrintError = false;

        switch (CamState)
        {
        case PSCameraState.DingDianAimCam:
            if (DingDianAimCam == null)
            {
                Debug.LogWarning("DingDianAimCam is null");
                isOutPrintError = true;
            }
            break;

        case PSCameraState.DingDianNoAimCam:
            if (DingDianNoAimObj == null)
            {
                Debug.LogWarning("DingDianNoAimObj is null");
                isOutPrintError = true;
            }
            else if (XkGameCtrl.GetInstance().IsCartoonShootTest)
            {
                Camera cameraCom = DingDianNoAimObj.GetComponent <Camera>();
                if (cameraCom != null)
                {
                    PSDingDianNoAimCamera noAimCamera = DingDianNoAimObj.GetComponent <PSDingDianNoAimCamera>();
                    if (noAimCamera == null)
                    {
                        Debug.LogWarning("DingDianNoAimObj cannot find PSDingDianNoAimCamera!");
                        isOutPrintError = true;
                    }
                    else
                    {
                        cameraCom.tag = "MainCamera";
                        DingDianNoAimObj.SetActive(false);
                    }
                }
                else
                {
                    Debug.LogWarning("DingDianNoAimObj cannot find camera component!");
                    isOutPrintError = true;
                }
            }
            else
            {
                Camera cameraCom = DingDianNoAimObj.GetComponent <Camera>();
                if (cameraCom != null)
                {
                    cameraCom.enabled = false;
                }
            }
            break;

        case PSCameraState.GenSuiMoveCam:
            if (TestPlayerPath != null)
            {
                AiPathGroupCtrl pathCtrl = TestPlayerPath.GetComponentInParent <AiPathGroupCtrl>();
                if (pathCtrl != null)
                {
                    if (pathCtrl.PathState == PlayerTypeEnum.FeiJi)
                    {
                        if (XkGameCtrl.GameModeVal != GameMode.DanJiTanKe && Network.peerType == NetworkPeerType.Disconnected)
                        {
                            if (PSGenSuiMoveCamera.GetInstanceFeiJi() == null)
                            {
                                Debug.LogWarning("PSGenSuiMoveCameraFeiJi is null");
                                isOutPrintError = true;
                            }
                            else
                            {
                                if (IndexGenSuiMove < 0 ||
                                    IndexGenSuiMove >= PSGenSuiMoveCamera.GetInstanceFeiJi().GenSuiMoveCam.Length ||
                                    PSGenSuiMoveCamera.GetInstanceFeiJi().GenSuiMoveCam[IndexGenSuiMove] == null)
                                {
                                    Debug.LogWarning("IndexGenSuiMoveFeiJi was wrong!");
                                    isOutPrintError = true;
                                }
                            }
                        }
                    }
                    else
                    {
                        if (XkGameCtrl.GameModeVal != GameMode.DanJiFeiJi && Network.peerType == NetworkPeerType.Disconnected)
                        {
                            if (PSGenSuiMoveCamera.GetInstanceTanKe() == null)
                            {
                                Debug.LogWarning("PSGenSuiMoveCameraTanKe is null");
                                isOutPrintError = true;
                            }
                            else
                            {
                                if (IndexGenSuiMove < 0 ||
                                    IndexGenSuiMove >= PSGenSuiMoveCamera.GetInstanceTanKe().GenSuiMoveCam.Length ||
                                    PSGenSuiMoveCamera.GetInstanceTanKe().GenSuiMoveCam[IndexGenSuiMove] == null)
                                {
                                    Debug.LogWarning("IndexGenSuiMoveTanKe was wrong!");
                                    isOutPrintError = true;
                                }
                            }
                        }
                    }
                }
            }
            break;

        case PSCameraState.ZiYouMoveCam:
            if (ZiYouMoveCam == null)
            {
                Debug.LogWarning("ZiYouMoveCam is null");
                isOutPrintError = true;
            }
            break;

            /*case PSCameraState.Null:
             *      Debug.LogWarning("CamState is null");
             *      isOutPrintError = true;
             *      break;*/
        }

        if (isOutPrintError)
        {
            GameObject obj = null;
            obj.name = "null";
        }
        else
        {
            CheckCamShakeScript();
        }
    }
    void CheckCamShakeScript()
    {
        if (TimeShake <= 0f)
        {
            return;
        }

        CameraShake shakeScript;
        bool        isOutPrintError = false;

        switch (CamState)
        {
        case PSCameraState.DingDianAimCam:
            if (DingDianAimCam == null)
            {
                Debug.LogWarning("DingDianAimCam is null");
                isOutPrintError = true;
            }

            if (!isOutPrintError)
            {
                shakeScript = DingDianAimCam.gameObject.GetComponent <CameraShake>();
                if (shakeScript == null)
                {
                    shakeScript = DingDianAimCam.gameObject.AddComponent <CameraShake>();
                }
                CamShakeScript = shakeScript;
            }
            break;

        case PSCameraState.DingDianNoAimCam:
            if (DingDianNoAimObj == null)
            {
                Debug.LogWarning("DingDianNoAimObj is null");
                isOutPrintError = true;
            }

            if (!isOutPrintError)
            {
                shakeScript = DingDianNoAimObj.GetComponent <CameraShake>();
                if (shakeScript == null)
                {
                    shakeScript = DingDianNoAimObj.AddComponent <CameraShake>();
                }
                CamShakeScript = shakeScript;
            }
            break;

        case PSCameraState.GenSuiMoveCam:
            if (TestPlayerPath != null)
            {
                AiPathGroupCtrl pathCtrl = TestPlayerPath.GetComponentInParent <AiPathGroupCtrl>();
                if (pathCtrl != null)
                {
                    if (pathCtrl.PathState == PlayerTypeEnum.FeiJi)
                    {
                        if (PSGenSuiMoveCamera.GetInstanceFeiJi() == null)
                        {
                            Debug.LogWarning("PSGenSuiMoveCameraFeiJi is null");
                            isOutPrintError = true;
                        }
                        else
                        {
                            if (IndexGenSuiMove < 0 ||
                                IndexGenSuiMove >= PSGenSuiMoveCamera.GetInstanceFeiJi().GenSuiMoveCam.Length ||
                                PSGenSuiMoveCamera.GetInstanceFeiJi().GenSuiMoveCam[IndexGenSuiMove] == null)
                            {
                                Debug.LogWarning("IndexGenSuiMoveFeiJi was wrong!");
                                isOutPrintError = true;
                            }
                        }
                    }
                    else
                    {
                        if (PSGenSuiMoveCamera.GetInstanceTanKe() == null)
                        {
                            Debug.LogWarning("PSGenSuiMoveCameraTanKe is null");
                            isOutPrintError = true;
                        }
                        else
                        {
                            if (IndexGenSuiMove < 0 ||
                                IndexGenSuiMove >= PSGenSuiMoveCamera.GetInstanceTanKe().GenSuiMoveCam.Length ||
                                PSGenSuiMoveCamera.GetInstanceTanKe().GenSuiMoveCam[IndexGenSuiMove] == null)
                            {
                                Debug.LogWarning("IndexGenSuiMoveTanKe was wrong!");
                                isOutPrintError = true;
                            }
                        }
                    }

                    if (!isOutPrintError)
                    {
                        shakeScript = null;
                        if (pathCtrl.PathState == PlayerTypeEnum.FeiJi)
                        {
                            shakeScript = PSGenSuiMoveCamera.GetInstanceFeiJi().GenSuiMoveCam[IndexGenSuiMove].GetComponent <CameraShake>();
                            if (shakeScript == null)
                            {
                                shakeScript = PSGenSuiMoveCamera.GetInstanceFeiJi().GenSuiMoveCam[IndexGenSuiMove].AddComponent <CameraShake>();
                            }
                        }
                        else
                        {
                            shakeScript = PSGenSuiMoveCamera.GetInstanceTanKe().GenSuiMoveCam[IndexGenSuiMove].GetComponent <CameraShake>();
                            if (shakeScript == null)
                            {
                                shakeScript = PSGenSuiMoveCamera.GetInstanceTanKe().GenSuiMoveCam[IndexGenSuiMove].AddComponent <CameraShake>();
                            }
                        }
                        CamShakeScript = shakeScript;
                    }
                }
            }

            break;

        case PSCameraState.ZiYouMoveCam:
            if (ZiYouMoveCam == null)
            {
                Debug.LogWarning("ZiYouMoveCam is null");
                isOutPrintError = true;
            }

            if (!isOutPrintError)
            {
                shakeScript = ZiYouMoveCam.gameObject.GetComponent <CameraShake>();
                if (shakeScript == null)
                {
                    shakeScript = ZiYouMoveCam.gameObject.AddComponent <CameraShake>();
                }
                CamShakeScript = shakeScript;
            }
            break;
        }

        /*if (CamShakeScript == null) {
         *      Debug.LogWarning("CamShakeScript is null");
         *      GameObject obj = null;
         *      obj.name = "null";
         * }*/
    }