Beispiel #1
0
        private bool CanBeHeld(SceneObject obj, out float distance)
        {
            distance = 0;
            if (!obj.Holdable)
            {
                return(false);
            }

            var cursorPos = GlobalMatrix.Multiply(Vector3.Zero.ToVector4()).ToVector3();
            var objPos    = obj.GlobalMatrix.Multiply(Vector3.Zero.ToVector4()).ToVector3();

            distance = Vector3.Distance(cursorPos, objPos);
            return(distance <= Tolerance);
        }
Beispiel #2
0
        public Vector3 Evaluate(Vector2 hw)
        {
            var angleH = 2.0 * Math.PI * hw.X;
            var angleW = 2.0 * Math.PI * hw.Y;

            var   a = LargeRadius + SmallRadius * Math.Cos(angleW);
            float x = (float)(a * Math.Cos(angleH));
            float y = (float)(a * Math.Sin(angleH));
            float z = (float)(SmallRadius * Math.Sin(angleW));

            var localPos  = new Vector4(x, y, z, 1);
            var globalPos = GlobalMatrix.Multiply(localPos);

            return(globalPos.ToVector3());
        }
Beispiel #3
0
        public Vector3 EvaluateDV(Vector2 hw)
        {
            var angleH = 2.0 * Math.PI * hw.X;
            var angleW = 2.0 * Math.PI * hw.Y;

            var   aDrv = SmallRadius * -Math.Sin(angleW) * 2.0 * Math.PI;
            float x    = (float)(aDrv * Math.Cos(angleH));
            float y    = (float)(aDrv * Math.Sin(angleH));
            float z    = (float)(SmallRadius * Math.Cos(angleW) * 2.0 * Math.PI);

            var localDrv  = new Vector4(x, y, z, 0);
            var globalDrv = GlobalMatrix.Multiply(localDrv);

            return(globalDrv.ToVector3());
        }
Beispiel #4
0
        public void SetTarget(Vector3 position)
        {
            var pos = GlobalMatrix.Inversed().Multiply(position.ToVector4());

            MoveLoc(pos.ToVector3());
        }