コード例 #1
0
    void LoadCalibration()
    {
        var Json        = PlayerPrefs.GetString(CalibrationSaveKey);
        var Calibration = JsonUtility.FromJson <TFloorCalibration>(Json);

        CalibrationParams = Calibration;
        OnCalibrationChanged.Invoke();
    }
コード例 #2
0
    public TFloorCalibration GetCalibrationParameters()
    {
        var Params = new TFloorCalibration();

        Params.FrontLeft  = FrontLeft.HasValue ? FrontLeft.Value : Vector3.zero;
        Params.FrontRight = FrontRight.HasValue ? FrontRight.Value : Vector3.zero;
        Params.BackLeft   = BackLeft.HasValue ? BackLeft.Value : Vector3.zero;
        Params.BackRight  = BackRight.HasValue ? BackRight.Value : Vector3.zero;
        return(Params);
    }
コード例 #3
0
    void OnCalibrationClick(Vector3 WorldPos)
    {
        //	gr: now wait for other thing to START calibration, so if no pending, not started
        //	start pending if we weren't
        if (PendingCalibrationParams == null)
        {
            //ResetCalibration();
            return;
        }

        //	if pending, update pending
        PendingCalibrationParams.SetNextEditingPosition(WorldPos);
        if (PendingCalibrationParams.IsFinished())
        {
            CalibrationParams        = PendingCalibrationParams.GetCalibrationParameters();
            PendingCalibrationParams = null;
            SaveCalibration();
        }
        OnCalibrationChanged.Invoke();

        IsCalibratingJustFinished = true;
    }
コード例 #4
0
    void UpdateNormalisedCalibration()
    {
        var  Calibration     = TheNormalisedCalibration;
        var  Mat             = CalibrationMaterial;
        bool ShowCalibration = false;

        System.Action <Vector2, int, ShaderObjectType> SetObjectPos = (Pos2, Index, Type) =>
        {
            var Pos4    = new Vector4(Pos2.x, Pos2.y, (float)Type, 0);
            var Uniform = Shader_ObjectUniformPrefix + Index;
            Mat.SetVector(Uniform, Pos4);
        };

        System.Action <Vector2, int, ShaderObjectType> SetCalibrationPos = (Pos2, Index, Type) =>
        {
            var Pos4    = new Vector4(Pos2.x, Pos2.y, (float)Type, 0);
            var Uniform = Shader_CalibrationUniformPrefix + Index;
            Mat.SetVector(Uniform, Pos4);
        };

        //	set calibration shader stuff
        {
            var CalibTypes = new ShaderObjectType[4];

            int EditingIndex = -1;

            if (Calibration.PendingCalibrationParams != null)
            {
                ShowCalibration = true;
                EditingIndex    = Calibration.PendingCalibrationParams.GetEditingIndex();
            }
            else if (Calibration.CalibrationParams != null)
            {
                EditingIndex = 4;
            }
            else
            {
                ShowCalibration = true;
            }

            for (int i = 0; i < CalibTypes.Length; i++)
            {
                if (i < EditingIndex)
                {
                    CalibTypes[i] = ShaderObjectType.TYPE_ACTIVE;
                }
                else if (i == EditingIndex)
                {
                    CalibTypes[i] = ShaderObjectType.TYPE_EDITING;
                }
                else
                {
                    CalibTypes[i] = ShaderObjectType.TYPE_INACTIVE;
                }
            }

            var LocalPositons = TFloorCalibration.GetEditingLocalPositions();
            for (int i = 0; i < LocalPositons.Length; i++)
            {
                SetCalibrationPos(LocalPositons[i], i, CalibTypes[i]);
            }
        }


        if (TrackObjects != null)
        {
            bool AnyActive = false;
            bool AnyGrip   = false;

            for (int ObjectIndex = 0; ObjectIndex < TrackObjects.Length; ObjectIndex++)
            {
                try
                {
                    var Object = TrackObjects[ObjectIndex].transform;
                    var Active = Object.gameObject.activeInHierarchy;

                    AnyGrip   |= TrackObjects[ObjectIndex].GripDown;
                    AnyActive |= Active;

                    var WorldPos = Object.position;
                    var FloorPos = Calibration.GetNormalisedPosition2D(WorldPos);
                    var Type     = Active ? ShaderObjectType.TYPE_ACTIVE : ShaderObjectType.TYPE_INACTIVE;

                    SetObjectPos(FloorPos, ObjectIndex, Type);
                }
                catch (System.Exception)
                {
                }
            }

            ShowCalibration = ShowCalibration || AnyGrip || (!AnyActive);
        }

        var ri = GetComponent <UnityEngine.UI.RawImage>();

        ri.enabled = ShowCalibration || AlwaysVisible;
    }