コード例 #1
0
 protected virtual void Reset()
 {
     if (point == null)
     {
         point = GetComponentInParent <SgtFloatingPoint>();
     }
 }
コード例 #2
0
        public static SgtPosition CalculatePosition(SgtFloatingPoint parentPoint, double radius, double angle, Vector3 tilt, float oblateness)
        {
            if (parentPoint != null)
            {
                var rotation = parentPoint.transform.rotation * Quaternion.Euler(tilt);
                var r1       = radius;
                var r2       = radius * (1.0f - oblateness);
                var localX   = System.Math.Sin(angle * Mathf.Deg2Rad) * r1;
                var localY   = 0.0;
                var localZ   = System.Math.Cos(angle * Mathf.Deg2Rad) * r2;

                Rotate(rotation, ref localX, ref localY, ref localZ);

                var position = parentPoint.Position;

                position.LocalX += localX;
                position.LocalY += localY;
                position.LocalZ += localZ;
                position.SnapLocal();

                return(position);
            }

            return(default(SgtPosition));
        }
コード例 #3
0
        public void RegisterPoint()
        {
#if UNITY_EDITOR
            if (point == null)
            {
                point = GetComponentInParent <SgtFloatingPoint>();
            }
#endif
            if (point != null)
            {
                point.OnPositionChanged += UpdatePosition;
            }
        }
コード例 #4
0
        protected override void OnDisable()
        {
            base.OnDisable();

            // Revert CurrentPoint?
            if (FirstInstance != null)
            {
                CurrentPoint = FirstInstance.cachedPoint;
            }
            else
            {
                CurrentPoint    = null;
                CurrentPointSet = false;
            }
        }
コード例 #5
0
        protected override void OnEnable()
        {
            if (InstanceCount > 0)
            {
                Debug.LogWarning("Your scene already contains an instance of SgtFloatingOrigin!", FirstInstance);
            }

            base.OnEnable();

            cachedPoint = GetComponent <SgtFloatingPoint>();

            // Make this the current point
            CurrentPoint    = cachedPoint;
            CurrentPointSet = true;
        }
コード例 #6
0
        protected override void OnDisable()
        {
            base.OnDisable();

            cachedPoint.OnPositionChanged -= UpdatePosition;

            // Revert CurrentPoint?
            if (FirstInstance != null)
            {
                currentPoint = FirstInstance.cachedPoint;
            }
            else
            {
                currentPoint    = null;
                currentPointSet = false;
            }
        }
コード例 #7
0
        public void RegisterPoint()
        {
#if UNITY_EDITOR
            if (Point == null)
            {
                var point = GetComponentInParent <SgtFloatingPoint>();

                if (point != null)
                {
                    Point = point;
                }
            }

            if (Point == null)
            {
                return;
            }
#endif
            Point.OnPositionChanged += PointPositionChanged;
        }
コード例 #8
0
        protected virtual void OnEnable()
        {
            if (cachedPointSet == false)
            {
                cachedPoint    = GetComponent <SgtFloatingPoint>();
                cachedPointSet = true;
            }

#if UNITY_EDITOR
            if (parentPoint == null)
            {
                var parent = transform.parent;

                if (parent != null)
                {
                    parentPoint = GetComponent <SgtFloatingPoint>();
                }
            }
#endif

            RegisterParentPoint();
        }
コード例 #9
0
 protected virtual void OnEnable()
 {
     cachedPoint = GetComponent <SgtFloatingPoint>();
 }