예제 #1
0
        /// <summary>
        ///     Obraca kamerę względem bieżącej pozycji.
        /// </summary>
        /// <param name="axisEnum">
        ///     Relatywna oś obrotu.
        /// </param>
        /// <param name="angle">
        ///     Kąt obrotu w stopniach.
        /// </param>
        /// <param name="space">
        ///     Relatywna przestrzeń w której znajduje się oś obrotu.
        /// </param>
        public void Rotate(Axis axisEnum, float angle, RelativeSpace space = RelativeSpace.Camera)
        {
            var radians = (float)Math.PI * angle / 180;

            Vector3 axis;

            switch (space)
            {
            case RelativeSpace.World:
                switch (axisEnum)
                {
                case Axis.X:
                    axis = Vector3.UnitX;
                    break;

                case Axis.Y:
                    axis = Vector3.UnitY;
                    break;

                case Axis.Z:
                    axis = Vector3.UnitZ;
                    break;

                default:
                    throw new ArgumentOutOfRangeException(nameof(axisEnum), axisEnum, null);
                }
                break;

            case RelativeSpace.Camera:
                axis = LookAtLH().GetAxis(axisEnum);
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(space), space, null);
            }

            // Zastosowujemy rotację.
            Rotation = Quaternion.RotationAxis(axis, radians) * Rotation;
        }
예제 #2
0
 public void AddRampValue(float value, float position, RelativeSpace relative)
 {
     this._weasel.Invoke("AddRampValue", new object[] { value, position, relative });
 }
예제 #3
0
 public RampValue(float flValue, float flPosition, RelativeSpace relative)
 {
     this.m_flValue = flValue;
     this.m_flPosition = flPosition;
     this.m_relative = relative;
 }