Beispiel #1
0
        public override Vector3 ClosestPoint(Vector3 location)
        {
            Vector3 objectPosition = HxGameObject.Get <HxTransform>().Position;
            Vector3 direction      = location - (Center + objectPosition);

            direction.Normalize();
            return((Center + objectPosition) + (direction * Radius));
        }
Beispiel #2
0
        public void Render(GraphicsDevice graphicsDevice, HxCamera hxCamera)
        {
            if (Material == null)
            {
                return;
            }

            if (HxGameObject.Get <HxMeshFilter>() != null)
            {
                HxMesh mesh = HxGameObject.Get <HxMeshFilter>().HxMesh;

                if (Material.Effect != null)
                {
                    if (mesh.HxMeshData.VertexCount < 3)
                    {
                        return;
                    }

                    Matrix translationMatrix = Matrix.CreateTranslation(HxGameObject.Get <HxTransform>().Position);
                    Matrix rotationMatrix    =
                        Matrix.CreateRotationX(MathHelper.ToRadians(HxGameObject.Get <HxTransform>().Rotation.X)) *
                        Matrix.CreateRotationY(MathHelper.ToRadians(HxGameObject.Get <HxTransform>().Rotation.Y)) *
                        Matrix.CreateRotationZ(MathHelper.ToRadians(HxGameObject.Get <HxTransform>().Rotation.Z));
                    Matrix world = Matrix.CreateScale(HxGameObject.Get <HxTransform>().Scale) * rotationMatrix * translationMatrix;
                    Material.Effect.Parameters["WorldViewProjection"]
                    .SetValue(world * hxCamera.ViewMatrix * hxCamera.ProjectionMatrix);
                    Material.Effect.Parameters["Texture"]
                    .SetValue(Material.MainTexture);
                    Material.Effect.Parameters["Tiling"]
                    .SetValue(Material.Tiling);
                    Material.Effect.Parameters["Offset"]
                    .SetValue(Material.Offset);
                    if (Material.MainTexture != null)
                    {
                        Material.Effect.Parameters["useTexture"]
                        .SetValue(true);
                    }
                    else
                    {
                        Material.Effect.Parameters["useTexture"]
                        .SetValue(false);
                    }
                    Material.Effect.Parameters["Color"]
                    .SetValue(Material.Color.ToVector4());

                    foreach (EffectPass effectPass in Material.Effect.CurrentTechnique.Passes)
                    {
                        effectPass.Apply();
                        graphicsDevice.DrawUserPrimitives(PrimitiveType.TriangleList, mesh.HxMeshData.VertexData, 0,
                                                          mesh.HxMeshData.VertexCount / 3);
                    }
                }
            }
        }
Beispiel #3
0
        public override Vector3 ClosestPoint(Vector3 location)
        {
            Vector3 objectPosition = HxGameObject.Get <HxTransform>().Position;
            Vector3 center         = objectPosition + Center;

            float maxX = center.X + Size.X / 2;
            float minX = center.X - Size.X / 2;

            float maxY = center.Y + Size.Y / 2;
            float minY = center.Y - Size.Y / 2;

            float maxZ = center.Z + Size.Z / 2;
            float minZ = center.Z - Size.Z / 2;

            float x = Math.Clamp(location.X, minX, maxX);
            float y = Math.Clamp(location.Y, minY, maxY);
            float z = Math.Clamp(location.Z, minZ, maxZ);

            return(new Vector3(x, y, z));
        }
Beispiel #4
0
        public void Render(GraphicsDevice graphicsDevice, HxCamera hxCamera)
        {
            if (Material == null)
            {
                return;
            }
            if (Texture2D != null)
            {
                Matrix translationMatrix = Matrix.CreateTranslation(HxGameObject.Get <HxTransform>().Position);
                Matrix rotationMatrix    =
                    Matrix.CreateRotationX(MathHelper.ToRadians(HxGameObject.Get <HxTransform>().Rotation.X)) *
                    Matrix.CreateRotationY(MathHelper.ToRadians(HxGameObject.Get <HxTransform>().Rotation.Y)) *
                    Matrix.CreateRotationZ(MathHelper.ToRadians(HxGameObject.Get <HxTransform>().Rotation.Z));
                Matrix world = rotationMatrix * translationMatrix;
                Material.Effect.Parameters["WorldViewProjection"].SetValue(world * hxCamera.ViewMatrix * hxCamera.ProjectionMatrix);

                foreach (EffectPass effectPass in Material.Effect.CurrentTechnique.Passes)
                {
                    effectPass.Apply();
                    graphicsDevice.DrawUserPrimitives(PrimitiveType.TriangleList, _quad.HxMeshData.VertexData, 0,
                                                      _quad.HxMeshData.VertexCount / 3);
                }
            }
        }