Esempio n. 1
0
        public override HitResult CheckHit(SETItem item, Vector3 Near, Vector3 Far, Viewport Viewport, Matrix Projection, Matrix View, MatrixStack transform)
        {
            HitResult result = HitResult.NoHit;

            transform.Push();
            transform.NJTranslate(item.Position.ToVector3());
            transform.NJRotateY(item.Rotation.Y);
            transform.Push();
            transform.NJTranslate(0, 0, 10);
            transform.NJScale(0.1000000014901161f, 0.1000000014901161f, 2);
            result = HitResult.Min(result, model.CheckHit(Near, Far, Viewport, Projection, View, transform, meshes));
            transform.Pop();
            transform.Push();
            transform.NJTranslate(0, 0, 20);
            transform.NJRotateX(0x2000);
            transform.NJTranslate(0, 0, -3);
            transform.NJScale(0.1000000014901161f, 0.1000000014901161f, 0.699999988079071f);
            result = HitResult.Min(result, model.CheckHit(Near, Far, Viewport, Projection, View, transform, meshes));
            transform.Pop();
            transform.Push();
            transform.NJTranslate(0, 0, 20);
            transform.NJRotateX(0xE000);
            transform.NJTranslate(0, 0, -3);
            transform.NJScale(0.1000000014901161f, 0.1000000014901161f, 0.699999988079071f);
            result = HitResult.Min(result, model.CheckHit(Near, Far, Viewport, Projection, View, transform, meshes));
            transform.Pop();
            transform.NJScale((item.Scale.X + 10) / 5f, (item.Scale.Y + 10) / 5f, 0.1000000014901161f);
            result = HitResult.Min(result, model.CheckHit(Near, Far, Viewport, Projection, View, transform, meshes));
            transform.Pop();
            return(result);
        }
Esempio n. 2
0
 public override HitResult CheckHit(SETItem item, Vector3 Near, Vector3 Far, Viewport Viewport, Matrix Projection, Matrix View, MatrixStack transform)
 {
     if (item.Scale.X == 0 || item.Scale.X == 5 || item.Scale.X == 10 || item.Scale.X == -5)
     {
         transform.Push();
         transform.NJTranslate(item.Position);
         HitResult result = model1.CheckHit(Near, Far, Viewport, Projection, View, transform, meshes1);
         transform.Pop();
         return(result);
     }
     else if (item.Scale.X == 1 || item.Scale.X == 6 || item.Scale.X == 11 || item.Scale.X == -1)
     {
         transform.Push();
         transform.NJTranslate(item.Position);
         HitResult result = model2.CheckHit(Near, Far, Viewport, Projection, View, transform, meshes2);
         transform.Pop();
         return(result);
     }
     else if (item.Scale.X == 2 || item.Scale.X == 7 || item.Scale.X == 12 || item.Scale.X == -2)
     {
         transform.Push();
         transform.NJTranslate(item.Position);
         HitResult result = model3.CheckHit(Near, Far, Viewport, Projection, View, transform, meshes3);
         transform.Pop();
         return(result);
     }
     else if (item.Scale.X == 3 || item.Scale.X == 8 || item.Scale.X == 13 || item.Scale.X == -3)
     {
         transform.Push();
         transform.NJTranslate(item.Position);
         HitResult result = model4.CheckHit(Near, Far, Viewport, Projection, View, transform, meshes4);
         transform.Pop();
         return(result);
     }
     else if (item.Scale.X == 4 || item.Scale.X == 9 || item.Scale.X == 14 || item.Scale.X == -4)
     {
         transform.Push();
         transform.NJTranslate(item.Position);
         HitResult result = model5.CheckHit(Near, Far, Viewport, Projection, View, transform, meshes5);
         transform.Pop();
         return(result);
     }
     else
     {
         transform.Push();
         transform.NJTranslate(item.Position);
         HitResult result = model1.CheckHit(Near, Far, Viewport, Projection, View, transform, meshes1);
         transform.Pop();
         return(result);
     }
 }
Esempio n. 3
0
 public override HitResult CheckHit(SETItem item, Vector3 Near, Vector3 Far, Viewport Viewport, Matrix Projection, Matrix View, MatrixStack transform)
 {
     if (item.Scale.Y != 0)
     {
         if ((item.Scale.Y - 1) == 0 && (item.Scale.Y - 1) == 1)
         {
             transform.Push();
             transform.NJTranslate(item.Position.X, (item.Position.Y + 10f), item.Position.Z);
             transform.NJRotateObject(item.Rotation);
             HitResult result = eme_b.CheckHit(Near, Far, Viewport, Projection, View, transform, ememsh_b);
             transform.Pop();
             return(result);
         }
         else
         {
             transform.Push();
             transform.NJTranslate(item.Position.X, (item.Position.Y + 10f), item.Position.Z);
             transform.NJRotateObject(item.Rotation);
             HitResult result = eme_c.CheckHit(Near, Far, Viewport, Projection, View, transform, ememsh_c);
             transform.Pop();
             return(result);
         }
     }
     else
     {
         transform.Push();
         transform.NJTranslate(item.Position.X, (item.Position.Y + 10f), item.Position.Z);
         transform.NJRotateObject(item.Rotation);
         HitResult result = eme_a.CheckHit(Near, Far, Viewport, Projection, View, transform, ememsh_a);
         transform.Pop();
         return(result);
     }
 }
Esempio n. 4
0
 public override HitResult CheckHit(SETItem item, Vector3 Near, Vector3 Far, Viewport Viewport, Matrix Projection, Matrix View, MatrixStack transform)
 {
     if (item.Scale.Z == 0.0)
     {
         transform.Push();
         transform.NJTranslate(item.Position);
         transform.NJRotateObject(item.Rotation);
         HitResult result = model1.CheckHit(Near, Far, Viewport, Projection, View, transform, meshes1);
         transform.Pop();
         return(result);
     }
     else if (item.Scale.Z <= 5.0)
     {
         transform.Push();
         transform.NJTranslate(item.Position);
         transform.NJRotateObject(item.Rotation);
         HitResult result = model2.CheckHit(Near, Far, Viewport, Projection, View, transform, meshes2);
         transform.Pop();
         return(result);
     }
     else
     {
         transform.Push();
         transform.NJTranslate(item.Position);
         transform.NJRotateObject(item.Rotation);
         HitResult result = model3.CheckHit(Near, Far, Viewport, Projection, View, transform, meshes3);
         transform.Pop();
         return(result);
     }
 }
Esempio n. 5
0
        private void panel1_MouseDown(object sender, MouseEventArgs e)
        {
            if (!loaded)
            {
                return;
            }
            HitResult dist;
            Vector3   mousepos = new Vector3(e.X, e.Y, 0);
            Viewport  viewport = d3ddevice.Viewport;
            Matrix    proj = d3ddevice.Transform.Projection;
            Matrix    view = d3ddevice.Transform.View;
            Vector3   Near, Far;

            Near   = mousepos;
            Near.Z = 0;
            Far    = Near;
            Far.Z  = -1;
            dist   = model.CheckHit(Near, Far, viewport, proj, view, new MatrixStack(), meshes);
            if (dist.IsHit)
            {
                selectedObject = dist.Model;
                SelectedItemChanged();
            }
            if (e.Button == MouseButtons.Right)
            {
                contextMenuStrip1.Show(panel1, e.Location);
            }
        }
Esempio n. 6
0
        public override HitResult CheckHit(SETItem item, Vector3 Near, Vector3 Far, Viewport Viewport, Matrix Projection, Matrix View, MatrixStack transform)
        {
            HitResult result = HitResult.NoHit;

            transform.Push();
            transform.NJTranslate(item.Position);
            transform.Push();
            transform.NJScale(4.5f, 4.5f, 4.5f);
            result = HitResult.Min(result, sphere.CheckHit(Near, Far, Viewport, Projection, View, transform, spheremsh));
            transform.Pop();
            switch (type)
            {
            case WhaleDefType.AOSummon:
            default:
                transform.NJTranslate(item.Scale);
                transform.NJRotateY(item.Rotation.Y);
                break;

            case WhaleDefType.AOKill:
                transform.NJRotateZ(0x8000);
                break;

            case WhaleDefType.POSummon:
                transform.NJTranslate(item.Scale);
                transform.NJRotateX(0x2000);
                transform.NJRotateY(item.Rotation.Y);
                break;
            }
            transform.NJScale(0.4f, 0.4f, 0.4f);
            result = HitResult.Min(result, whale.CheckHit(Near, Far, Viewport, Projection, View, transform, whalemsh));
            transform.Pop();
            return(result);
        }
Esempio n. 7
0
        public override HitResult CheckHit(SETItem item, Vector3 Near, Vector3 Far, Viewport Viewport, Matrix Projection, Matrix View, MatrixStack transform)
        {
            HitResult result = HitResult.NoHit;

            v5 = Math.Min(Math.Max((int)item.Scale.Z, -1), 0);
            if (v5 < 0)
            {
                transform.Push();
                transform.NJTranslate(item.Position);
                transform.NJRotateY(item.Rotation.Y);
                float Scale = item.Scale.X + 1.0f;
                transform.NJScale(Scale, Scale, Scale);
                result = HitResult.Min(result, modelB.CheckHit(Near, Far, Viewport, Projection, View, transform, meshesB));
                transform.Pop();
                return(result);
            }
            if (v5 >= 0)
            {
                transform.Push();
                transform.NJTranslate(item.Position);
                transform.NJRotateY(item.Rotation.Y);
                float Scale = item.Scale.X + 1.0f;
                transform.NJScale(Scale, Scale, Scale);
                result = HitResult.Min(result, modelA.CheckHit(Near, Far, Viewport, Projection, View, transform, meshesA));
                transform.Pop();
                return(result);
            }
            return(result);
        }
Esempio n. 8
0
        public override HitResult CheckHit(SETItem item, Vector3 Near, Vector3 Far, Viewport Viewport, Matrix Projection, Matrix View, MatrixStack transform)
        {
            transform.Push();
            transform.NJTranslate(xpos ?? item.Position.X, ypos ?? item.Position.Y, zpos ?? item.Position.Z);
            //transform.NJRotateObject(xrot ?? item.Rotation.X, yrot ?? item.Rotation.Y, zrot ?? item.Rotation.Z);
            Rotation addrot = new Rotation(addxrot ?? 0, addyrot ?? 0, addzrot ?? 0);

            ObjectHelper.RotateObject(transform, item, addrot, rottype);
            HitResult result;

            if (model == null)
            {
                result = ObjectHelper.CheckQuestionBoxHit(Near, Far, Viewport, Projection, View, transform);
            }
            else
            {
                //transform.NJScale(xscl ?? item.Scale.X, yscl ?? item.Scale.Y, zscl ?? item.Scale.Z);
                Vector3 addscl = new Vector3();
                Vector3 scl    = ObjectHelper.GetScale(item, addscl, scltype);
                transform.NJScale(scl);
                result = model.CheckHit(Near, Far, Viewport, Projection, View, transform, meshes);
            }
            transform.Pop();
            return(result);
        }
Esempio n. 9
0
        public override HitResult CheckHit(SETItem item, Vector3 Near, Vector3 Far, Viewport Viewport, Matrix Projection, Matrix View, MatrixStack transform)
        {
            HitResult result = HitResult.NoHit;

            transform.Push();
            transform.NJTranslate(item.Position);
            transform.NJRotateY(item.Rotation.Y);
            transform.TranslateLocal(0, 110f, 0);
            transform.Push();
            result = HitResult.Min(result, arch.CheckHit(Near, Far, Viewport, Projection, View, transform, archmsh));
            transform.Pop();
            transform.Push();
            transform.NJTranslate(item.Position);
            transform.NJRotateY(item.Rotation.Y);
            transform.TranslateLocal(0, 0, 73f);
            transform.Push();
            result = HitResult.Min(result, side1.CheckHit(Near, Far, Viewport, Projection, View, transform, side1msh));
            transform.Pop();
            transform.Push();
            transform.NJTranslate(item.Position);
            transform.NJRotateY(item.Rotation.Y);
            transform.TranslateLocal(0, 0, -57f);
            transform.Push();
            result = HitResult.Min(result, side2.CheckHit(Near, Far, Viewport, Projection, View, transform, side2msh));
            transform.Pop();
            return(result);
        }
        public override HitResult CheckHit(SETItem item, Vector3 Near, Vector3 Far, Viewport Viewport, Matrix Projection, Matrix View, MatrixStack transform)
        {
            HitResult result = HitResult.NoHit;

            for (int i = 0; i < Math.Min(item.Scale.X + 1, 8); i++)
            {
                transform.Push();
                if (item.Scale.Z == 1)                 // circle
                {
                    double  v4 = i * 360.0;
                    Vector3 v7 = new Vector3(
                        ObjectHelper.NJSin((int)(v4 / item.Scale.X * 65536.0 * 0.002777777777777778)) * item.Scale.Y,
                        0,
                        ObjectHelper.NJCos((int)(v4 / item.Scale.X * 65536.0 * 0.002777777777777778)) * item.Scale.Y);
                    transform.Push();
                    transform.NJTranslate(item.Position);
                    transform.NJRotateObject(item.Rotation);
                    Vector3 pos = Vector3.TransformCoordinate(v7, transform.Top);
                    transform.Pop();
                    transform.NJTranslate(pos);
                    result = HitResult.Min(result, model.CheckHit(Near, Far, Viewport, Projection, View, transform, meshes));
                }
                else                 // line
                {
                    transform.Push();
                    transform.NJTranslate(item.Position);
                    transform.NJRotateObject(item.Rotation);
                    double v5;
                    if (i % 2 == 1)
                    {
                        v5 = i * item.Scale.Y * -0.5;
                    }
                    else
                    {
                        v5 = Math.Ceiling(i * 0.5) * item.Scale.Y;
                    }
                    Vector3 pos = Vector3.TransformCoordinate(new Vector3(0, 0, (float)v5), transform.Top);
                    transform.Pop();
                    transform.NJTranslate(pos);
                    result = HitResult.Min(result, model.CheckHit(Near, Far, Viewport, Projection, View, transform, meshes));
                }
                transform.Pop();
            }
            return(result);
        }
Esempio n. 11
0
        public override HitResult CheckHit(SETItem item, Vector3 Near, Vector3 Far, Viewport Viewport, Matrix Projection, Matrix View, MatrixStack transform)
        {
            transform.Push();
            transform.NJTranslate(item.Position);
            HitResult result = model.CheckHit(Near, Far, Viewport, Projection, View, transform, meshes);

            transform.Pop();
            return(result);
        }
Esempio n. 12
0
        public override HitResult CheckHit(Vector3 Near, Vector3 Far, Viewport Viewport, Matrix Projection, Matrix View)
        {
            MatrixStack transform = new MatrixStack();

            transform.Push();
            transform.NJTranslate(0, offset, 0);
            transform.NJTranslate(Position);
            transform.NJRotateY(YRotation);
            return(Model.CheckHit(Near, Far, Viewport, Projection, View, transform, Meshes));
        }
Esempio n. 13
0
        public override HitResult CheckHit(SETItem item, Vector3 Near, Vector3 Far, Viewport Viewport, Matrix Projection, Matrix View, MatrixStack transform)
        {
            transform.Push();
            transform.NJTranslate(item.Position.X, item.Position.Y + 0.5f, item.Position.Z);
            transform.NJRotateY(item.Rotation.Y);
            transform.NJScale(item.Scale.X, item.Scale.Y, item.Scale.X);
            HitResult result = model.CheckHit(Near, Far, Viewport, Projection, View, transform, meshes);

            transform.Pop();
            return(result);
        }
Esempio n. 14
0
        public override HitResult CheckHit(SETItem item, Vector3 Near, Vector3 Far, Viewport Viewport, Matrix Projection, Matrix View, MatrixStack transform)
        {
            HitResult result = HitResult.NoHit;

            transform.Push();
            transform.NJTranslate(item.Position);
            transform.NJRotateObject(item.Rotation);
            result = HitResult.Min(result, centermodel.CheckHit(Near, Far, Viewport, Projection, View, transform, centermeshes));
            transform.Pop();
            return(result);
        }
Esempio n. 15
0
        public override HitResult CheckHit(SETItem item, Vector3 Near, Vector3 Far, Viewport Viewport, Matrix Projection, Matrix View, MatrixStack transform)
        {
            HitResult result = HitResult.NoHit;

            transform.Push();
            transform.NJTranslate(item.Position);
            transform.NJScale((item.Scale.X + 1f), (item.Scale.X + 1f), (item.Scale.X + 1f));
            transform.Push();
            result = HitResult.Min(result, sphere.CheckHit(Near, Far, Viewport, Projection, View, transform, spheremsh));
            transform.Pop();
            return(result);
        }
Esempio n. 16
0
        public override HitResult CheckHit(SETItem item, Vector3 Near, Vector3 Far, Viewport Viewport, Matrix Projection, Matrix View, MatrixStack transform)
        {
            transform.Push();
            transform.NJTranslate(item.Position);
            transform.NJRotateY((ushort)(item.Rotation.Y + 0x8000));
            transform.NJRotateZ(item.Rotation.Z);
            transform.NJRotateX(item.Rotation.X);
            transform.NJTranslate(-0.5f, 0, 0);
            HitResult result = model.CheckHit(Near, Far, Viewport, Projection, View, transform, meshes);

            transform.Pop();
            return(result);
        }
Esempio n. 17
0
        public override HitResult CheckHit(SETItem item, Vector3 Near, Vector3 Far, Viewport Viewport, Matrix Projection, Matrix View, MatrixStack transform)
        {
            transform.Push();
            transform.NJTranslate(item.Position);
            transform.NJRotateObject(item.Rotation);
            float size = item.Scale.X + 1.0f;

            transform.NJScale(size, size, size);
            HitResult result = model.CheckHit(Near, Far, Viewport, Projection, View, transform, meshes);

            transform.Pop();
            return(result);
        }
Esempio n. 18
0
        public override HitResult CheckHit(SETItem item, Vector3 Near, Vector3 Far, Viewport Viewport, Matrix Projection, Matrix View, MatrixStack transform)
        {
            HitResult result = HitResult.NoHit;

            transform.Push();
            transform.NJTranslate(item.Position);
            transform.NJRotateY(item.Rotation.Y);
            transform.Push();
            transform.NJTranslate(Base.Position[0], (Base.Position[1]), Base.Position[2]);
            result = HitResult.Min(result, Base.CheckHit(Near, Far, Viewport, Projection, View, transform, BaseMsh));
            transform.Pop();
            transform.Push();
            transform.NJTranslate(Fan.Position[0], (Fan.Position[1] + 30.0f), Fan.Position[2]);
            result = HitResult.Min(result, Fan.CheckHit(Near, Far, Viewport, Projection, View, transform, FanMsh));
            transform.Pop();
            transform.Push();
            transform.NJTranslate(Mid.Position[0], (Mid.Position[1] + 44.0f), Mid.Position[2]);
            result = HitResult.Min(result, Mid.CheckHit(Near, Far, Viewport, Projection, View, transform, MidMsh));
            transform.Pop();
            transform.Push();
            transform.NJTranslate(Fan.Position[0], (Fan.Position[1] + 47.0f), Fan.Position[2]);
            result = HitResult.Min(result, Fan.CheckHit(Near, Far, Viewport, Projection, View, transform, FanMsh));
            transform.Pop();
            transform.Push();
            transform.NJTranslate(Mid.Position[0], (Mid.Position[1] + 61.0f), Mid.Position[2]);
            result = HitResult.Min(result, Mid.CheckHit(Near, Far, Viewport, Projection, View, transform, MidMsh));
            transform.Pop();
            transform.Push();
            transform.NJTranslate(Fan.Position[0], (Fan.Position[1] + 64.0f), Fan.Position[2]);
            result = HitResult.Min(result, Fan.CheckHit(Near, Far, Viewport, Projection, View, transform, FanMsh));
            transform.Pop();
            transform.Push();
            transform.NJTranslate(Cap.Position[0], (Cap.Position[1] + 78.0f), Cap.Position[2]);
            result = HitResult.Min(result, Cap.CheckHit(Near, Far, Viewport, Projection, View, transform, CapMsh));
            transform.Pop();
            transform.Pop();
            return(result);
        }
Esempio n. 19
0
		public override HitResult CheckHit(SETItem item, Vector3 Near, Vector3 Far, Viewport Viewport, Matrix Projection, Matrix View, MatrixStack transform)
		{

			transform.Push();
			transform.NJTranslate(item.Position);
			int RotY = item.Rotation.Y + 34;
			if ((RotY + 24) != 0x4000)
			{
				transform.NJRotateY((RotY + 24) - 0x4000);
			}
			transform.NJScale(1.5f, 1.5f, 1.5f);
			HitResult result = model.CheckHit(Near, Far, Viewport, Projection, View, transform, meshes);
			transform.Pop();
			return result;
		}
        public override HitResult CheckHit(SETItem item, Vector3 Near, Vector3 Far, Viewport Viewport, Matrix Projection, Matrix View, MatrixStack transform)
        {
            eleType = Math.Min(Math.Max((int)item.Scale.Z, -1), 1);
            HitResult result = HitResult.NoHit;

            if (item.Selected)
            {
                transform.Push();
                transform.NJTranslate(item.Position.X, (item.Position.Y + item.Scale.X), item.Position.Z);
                transform.NJRotateY(item.Rotation.Z);
                result = destWele.CheckHit(Near, Far, Viewport, Projection, View, transform, destWeleMsh);
                transform.Pop();
            }

            if (eleType < 0)
            {
                transform.Push();
                transform.NJTranslate(item.Position);
                transform.NJRotateY(item.Rotation.Y);
                result = WeleAlt.CheckHit(Near, Far, Viewport, Projection, View, transform, WeleAltMsh);
                transform.Pop();
                return(result);
            }
            else if (eleType > 0)
            {
                transform.Push();
                transform.NJTranslate(item.Position);
                transform.NJRotateY(item.Rotation.Y);
                result = WeleWhite.CheckHit(Near, Far, Viewport, Projection, View, transform, WeleWhiteMsh);
                transform.Pop();
                return(result);
            }
            else
            {
                transform.Push();
                transform.NJTranslate(item.Position);
                transform.NJRotateY(item.Rotation.Y);
                result = Wele1.CheckHit(Near, Far, Viewport, Projection, View, transform, Wele1Msh);
                transform.Pop();

                return(result);
            }


            return(result);
        }
Esempio n. 21
0
        public override HitResult CheckHit(SETItem item, Vector3 Near, Vector3 Far, Viewport Viewport, Matrix Projection, Matrix View, MatrixStack transform)
        {
            transform.Push();
            transform.NJTranslate(item.Position);
            transform.NJRotateY(item.Rotation.Y);
            float ScaleX = item.Scale.X;
            float ScaleY = item.Scale.Y;

            if (ScaleX < ScaleY)
            {
                ScaleX = ScaleY;
            }
            transform.NJScale(ScaleX, ScaleY, item.Scale.Z);
            HitResult result = model.CheckHit(Near, Far, Viewport, Projection, View, transform, meshes);

            transform.Pop();
            return(result);
        }
Esempio n. 22
0
        public override HitResult CheckHit(SETItem item, Vector3 Near, Vector3 Far, Viewport Viewport, Matrix Projection, Matrix View, MatrixStack transform)
        {
            transform.Push();
            transform.NJTranslate(item.Position);
            int x = item.Rotation.X;
            int y = item.Rotation.Y;

            if (!item.Scale.IsEmpty)
            {
                (item.Position - item.Scale).GetRotation(out x, out y);
            }
            transform.NJRotateX(x);
            transform.NJRotateY(y);
            transform.NJRotateZ(item.Rotation.Z);
            HitResult result = model.CheckHit(Near, Far, Viewport, Projection, View, transform, meshes);

            transform.Pop();
            return(result);
        }
Esempio n. 23
0
        public override HitResult CheckHit(SETItem item, Vector3 Near, Vector3 Far, Viewport Viewport, Matrix Projection, Matrix View, MatrixStack transform)
        {
            HitResult result = HitResult.NoHit;

            transform.Push();
            transform.NJTranslate(item.Position);
            transform.NJScale(4.5f, 4.5f, 4.5f);
            transform.Push();
            result = HitResult.Min(result, sphere.CheckHit(Near, Far, Viewport, Projection, View, transform, spheremsh));
            transform.Pop();
            transform.Push();
            transform.NJTranslate(item.Position);
            transform.NJRotateX(0x2000);
            transform.NJScale(0.40000001f, 0.40000001f, 0.40000001f);
            transform.Push();
            result = HitResult.Min(result, whale.CheckHit(Near, Far, Viewport, Projection, View, transform, whalemsh));
            transform.Pop();
            return(result);
        }
Esempio n. 24
0
        public override HitResult CheckHit(SETItem item, Vector3 Near, Vector3 Far, Viewport Viewport, Matrix Projection, Matrix View, MatrixStack transform)
        {
            transform.Push();
            transform.NJTranslate(xpos ?? item.Position.X, ypos ?? item.Position.Y, zpos ?? item.Position.Z);
            transform.NJRotateObject(xrot ?? item.Rotation.X, yrot ?? item.Rotation.Y, zrot ?? item.Rotation.Z);
            HitResult result;

            if (model == null)
            {
                result = ObjectHelper.CheckSpriteHit(Near, Far, Viewport, Projection, View, transform);
            }
            else
            {
                transform.NJScale(xscl ?? item.Scale.X, yscl ?? item.Scale.Y, zscl ?? item.Scale.Z);
                result = model.CheckHit(Near, Far, Viewport, Projection, View, transform, meshes);
            }
            transform.Pop();
            return(result);
        }
Esempio n. 25
0
        public override HitResult CheckHit(SETItem item, Vector3 Near, Vector3 Far, Viewport Viewport, Matrix Projection, Matrix View, MatrixStack transform)
        {
            HitResult result = HitResult.NoHit;

            transform.Push();
            transform.NJTranslate(item.Position);
            transform.NJRotateY(item.Rotation.Y);
            transform.NJTranslate(0, 110, 0);
            result = HitResult.Min(result, arch.CheckHit(Near, Far, Viewport, Projection, View, transform, archmsh));
            transform.Pop();
            transform.Push();
            transform.NJTranslate(ObjectHelper.NJSin(item.Rotation.Y) * 73 + item.Position.X, item.Position.Y, ObjectHelper.NJCos(item.Rotation.Y) * 73 + item.Position.Z);
            result = HitResult.Min(result, side1.CheckHit(Near, Far, Viewport, Projection, View, transform, side1msh));
            transform.Pop();
            transform.Push();
            transform.NJTranslate(item.Position.X - ObjectHelper.NJSin(item.Rotation.Y) * 57, item.Position.Y, item.Position.Z - ObjectHelper.NJCos(item.Rotation.Y) * 57);
            result = HitResult.Min(result, side2.CheckHit(Near, Far, Viewport, Projection, View, transform, side2msh));
            transform.Pop();
            return(result);
        }
Esempio n. 26
0
        public override HitResult CheckHit(SETItem item, Vector3 Near, Vector3 Far, Viewport Viewport, Matrix Projection, Matrix View, MatrixStack transform)
        {
            HitResult result = HitResult.NoHit;
            int       ScaleX = (int)item.Scale.X;

            switch (ScaleX)
            {
            case 1:
                transform.Push();
                transform.NJTranslate(item.Position);
                transform.NJRotateObject(item.Rotation);
                result = HitResult.Min(result, modelB.CheckHit(Near, Far, Viewport, Projection, View, transform, meshesB));
                transform.Pop();
                break;

            case 2:
                transform.Push();
                transform.NJTranslate(item.Position);
                transform.NJRotateObject(item.Rotation);
                result = HitResult.Min(result, modelC.CheckHit(Near, Far, Viewport, Projection, View, transform, meshesC));
                transform.Pop();
                break;

            case 3:
                transform.Push();
                transform.NJTranslate(item.Position);
                transform.NJRotateObject(item.Rotation);
                result = HitResult.Min(result, modelD.CheckHit(Near, Far, Viewport, Projection, View, transform, meshesD));
                transform.Pop();
                break;

            default:
                transform.Push();
                transform.NJTranslate(item.Position);
                transform.NJRotateObject(item.Rotation);
                result = HitResult.Min(result, modelA.CheckHit(Near, Far, Viewport, Projection, View, transform, meshesA));
                transform.Pop();
                break;
            }
            return(result);
        }
Esempio n. 27
0
        public override HitResult CheckHit(SETItem item, Vector3 Near, Vector3 Far, Viewport Viewport, Matrix Projection, Matrix View, MatrixStack transform)
        {
            HitResult result = HitResult.NoHit;

            v5 = (ulong)item.Scale.X;
            if (v5 != 0)
            {
                v6 = (int)v5 - 1;
                if (v6 == 0)
                {
                    transform.Push();
                    transform.NJTranslate(item.Position);
                    transform.NJRotateObject(item.Rotation);
                    result = HitResult.Min(result, modelB.CheckHit(Near, Far, Viewport, Projection, View, transform, meshesB));
                    transform.Pop();
                    return(result);
                }
                if (v6 == 1)
                {
                    transform.Push();
                    transform.NJTranslate(item.Position);
                    transform.NJRotateObject(item.Rotation);
                    result = HitResult.Min(result, modelC.CheckHit(Near, Far, Viewport, Projection, View, transform, meshesC));
                    transform.Pop();
                    return(result);
                }
            }
            else
            {
                transform.Push();
                transform.NJTranslate(item.Position);
                transform.NJRotateObject(item.Rotation);
                result = HitResult.Min(result, modelA.CheckHit(Near, Far, Viewport, Projection, View, transform, meshesA));
                transform.Pop();
                return(result);
            }
            return(result);
        }
Esempio n. 28
0
        public override HitResult CheckHit(SETItem item, Vector3 Near, Vector3 Far, Viewport Viewport, Matrix Projection, Matrix View, MatrixStack transform)
        {
            HitResult result = HitResult.NoHit;
            float     Scale  = item.Scale.Z + 1.0f;

            if (item.Scale.Y != 0 && item.Selected)
            {
                transform.Push();
                transform.NJTranslate(item.Position.X, (item.Position.Y + item.Scale.Y), item.Position.Z);
                transform.NJRotateY(item.Rotation.Y);
                transform.NJScale(Scale, Scale, Scale);
                result = destModel.CheckHit(Near, Far, Viewport, Projection, View, transform, destMesh);
                transform.Pop();
            }

            transform.Push();
            transform.NJTranslate(item.Position);
            transform.NJRotateY(item.Rotation.Y);
            transform.NJScale(Scale, Scale, Scale);
            result = model.CheckHit(Near, Far, Viewport, Projection, View, transform, meshes);
            transform.Pop();
            return(result);
        }
Esempio n. 29
0
        public override HitResult CheckHit(SETItem item, Vector3 Near, Vector3 Far, Viewport Viewport, Matrix Projection, Matrix View, MatrixStack transform)
        {
            HitResult result = HitResult.NoHit;

            transform.Push();
            transform.NJTranslate(item.Position);
            transform.NJRotateY(item.Rotation.Y);
            result = HitResult.Min(result, ballmodel.CheckHit(Near, Far, Viewport, Projection, View, transform, ballmeshes));
            transform.Pop();
            double v24 = item.Scale.X * 0.05000000074505806;

            transform.Push();
            double v22 = item.Scale.X * 0.5 + item.Position.Y;

            transform.NJTranslate(item.Position.X, (float)v22, item.Position.Z);
            transform.NJScale(1.0f, (float)v24, 1.0f);
            result = HitResult.Min(result, cylindermodel.CheckHit(Near, Far, Viewport, Projection, View, transform, cylindermeshes));
            transform.Pop();
            transform.Push();
            transform.NJTranslate(item.Position.X, item.Position.Y + item.Scale.Z, item.Position.Z);
            result = HitResult.Min(result, spheremodel.CheckHit(Near, Far, Viewport, Projection, View, transform, spheremeshes));
            transform.Pop();
            return(result);
        }
Esempio n. 30
0
        public override HitResult CheckHit(SETItem item, Vector3 Near, Vector3 Far, Viewport Viewport, Matrix Projection, Matrix View, MatrixStack transform)
        {
            HitResult result = HitResult.NoHit;
            int       rows   = (int)Math.Max(item.Scale.X, 1);
            int       cols   = (int)Math.Max(item.Scale.Z, 1);

            transform.Push();
            transform.NJTranslate(item.Position);
            transform.NJRotateObject(item.Rotation.X & 0xC000, item.Rotation.Y, 0);
            transform.NJTranslate((1 - rows) * 7.5f, 0, (1 - cols) * 7.5f);
            for (int i = 0; i < rows; ++i)
            {
                transform.Push();
                for (int j = 0; j < cols; ++j)
                {
                    result = HitResult.Min(result, model.CheckHit(Near, Far, Viewport, Projection, View, transform, meshes));
                    transform.NJTranslate(0, 0, 15);
                }
                transform.Pop();
                transform.NJTranslate(15, 0, 0);
            }
            transform.Pop();
            return(result);
        }