public override void CreateTransformMatrix(Vector3 Position, Vector3 Rotation)
        {
            this.Position = Position;
            this.Rotation = Rotation;

            switch (TriggerShape)
            {
            case TriggerLightShape.Sphere:
                sphereBound     = new BoundingSphere(Position, Radius);
                transformMatrix = Matrix.Scaling(Radius * 2);
                break;

            case TriggerLightShape.Cube:
                transformMatrix = Matrix.Scaling(ScaleX * 2, ScaleY * 2, ScaleZ * 2);
                break;

            case TriggerLightShape.Cylinder:
                transformMatrix = Matrix.Scaling(Radius * 2, Height * 2, Radius * 2);
                break;

            case TriggerLightShape.NotInUse:
                base.CreateTransformMatrix(Position, Rotation);
                return;
            }

            transformMatrix = transformMatrix
                              * Matrix.RotationZ(ReadWriteCommon.BAMStoRadians(Rotation.Z))
                              * Matrix.RotationY(ReadWriteCommon.BAMStoRadians(Rotation.Y))
                              * Matrix.RotationX(ReadWriteCommon.BAMStoRadians(Rotation.X))
                              * Matrix.Translation(Position);
        }
        public override void Draw(SharpRenderer renderer, string[][] modelNames, int modelMiscSetting, bool isSelected)
        {
            base.Draw(renderer, modelNames, modelMiscSetting, isSelected);

            string flagModelName = "S01_PN_HATA0.DFF";

            if (Type < 8 && Program.MainForm.renderer.dffRenderer.DFFModels.ContainsKey(flagModelName))
            {
                renderData.worldViewProjection = Matrix.Scaling(Scale)
                                                 * Matrix.RotationX(ReadWriteCommon.BAMStoRadians(Rotation.X))
                                                 * Matrix.RotationY(ReadWriteCommon.BAMStoRadians(Rotation.Y))
                                                 * Matrix.RotationZ(ReadWriteCommon.BAMStoRadians(Rotation.Z))
                                                 * Matrix.RotationY(MathUtil.DegreesToRadians(FlagAngle))
                                                 * Matrix.Translation(Position) * renderer.viewProjection;

                renderData.Color = isSelected ? renderer.selectedObjectColor : Vector4.One;

                renderer.Device.SetFillModeDefault();
                renderer.Device.SetCullModeDefault();
                renderer.Device.SetBlendStateAlphaBlend();
                renderer.Device.ApplyRasterState();
                renderer.Device.UpdateAllStates();

                renderer.Device.UpdateData(renderer.tintedBuffer, renderData);
                renderer.Device.DeviceContext.VertexShader.SetConstantBuffer(0, renderer.tintedBuffer);
                renderer.tintedShader.Apply();

                Program.MainForm.renderer.dffRenderer.DFFModels[flagModelName].Render(renderer.Device);
            }
        }
Example #3
0
        public void CreateTransformMatrix()
        {
            if (TriggerShape == 1) //plane
            {
                triggerPosWorld = Matrix.Scaling(TriggerScale.X, TriggerScale.Y, 1f);
            }
            else if (TriggerShape == 3) // cube
            {
                triggerPosWorld = Matrix.Scaling(TriggerScale);
            }
            else if (TriggerShape == 4) // cyl
            {
                triggerPosWorld = Matrix.Scaling(TriggerScale.X, TriggerScale.Y, TriggerScale.X);
            }
            else // sphere
            {
                triggerPosWorld = Matrix.Scaling(TriggerScale / 2);
            }

            triggerPosWorld = triggerPosWorld
                              * Matrix.RotationX(ReadWriteCommon.BAMStoRadians(TriggerRotX))
                              * Matrix.RotationY(ReadWriteCommon.BAMStoRadians(TriggerRotY))
                              * Matrix.RotationZ(ReadWriteCommon.BAMStoRadians(TriggerRotZ))
                              * Matrix.Translation(TriggerPosition);

            pointAWorld = Matrix.Scaling(5) * Matrix.Translation(PointA);
            pointBWorld = Matrix.Scaling(5) * Matrix.Translation(PointB);
            pointCWorld = Matrix.Scaling(5) * Matrix.Translation(PointC);
            camPosWorld = Matrix.Scaling(5) * Matrix.Translation(CamPos);

            CreateBounding();
        }
        public override void CreateTransformMatrix(Vector3 Position, Vector3 Rotation)
        {
            this.Position = Position;
            this.Rotation = Rotation;

            transformMatrix =
                Matrix.RotationY(ReadWriteCommon.BAMStoRadians(Rotation.Y))
                * Matrix.RotationX(ReadWriteCommon.BAMStoRadians(Rotation.X))
                * Matrix.RotationZ(ReadWriteCommon.BAMStoRadians(Rotation.Z))
                * Matrix.Translation(Position);

            positionsList = new List <Vector3>(NumberOfRings);

            if (Type == RingType.Normal) // single ring
            {
                positionsList.Add(Vector3.Zero);
            }
            else if (Type == RingType.Line) // line of rings
            {
                if (NumberOfRings < 2)
                {
                    return;
                }

                for (int i = 0; i < NumberOfRings; i++)
                {
                    positionsList.Add(new Vector3(0, 0, TotalLenght * i / (NumberOfRings - 1)));
                }
            }
            else if (Type == RingType.Circle) // circle
            {
                if (NumberOfRings < 1)
                {
                    return;
                }

                for (int i = 0; i < NumberOfRings; i++)
                {
                    positionsList.Add((Vector3)Vector3.Transform(new Vector3(0, 0, -Radius), Matrix.RotationY(2 * (float)Math.PI * i / NumberOfRings)));
                }
            }
            else if (Type == RingType.Arch) // arch
            {
                if (NumberOfRings < 2)
                {
                    return;
                }

                float angle = TotalLenght / Radius;

                for (int i = 0; i < NumberOfRings; i++)
                {
                    Matrix Locator = Matrix.Translation(new Vector3(Radius, 0, 0));

                    positionsList.Add((Vector3)Vector3.Transform(Vector3.Zero, Locator
                                                                 * Matrix.RotationY(angle / (NumberOfRings - 1) * i)
                                                                 * Matrix.Invert(Locator)));
                }
            }
        }
Example #5
0
        public override void CreateTransformMatrix()
        {
            transformMatrix =
                Matrix.RotationZ(ReadWriteCommon.BAMStoRadians((int)Rotation.Z)) *
                Matrix.RotationX(ReadWriteCommon.BAMStoRadians((int)Rotation.X)) *
                Matrix.RotationY(ReadWriteCommon.BAMStoRadians((int)Rotation.Y) + MathUtil.Pi) *
                Matrix.Translation(Position);

            CreateBoundingBox();
        }
Example #6
0
        public override void CreateTransformMatrix(Vector3 Position, Vector3 Rotation)
        {
            this.Position = Position;
            this.Rotation = Rotation;

            transformMatrix = Matrix.Scaling(ScaleX, ScaleY, ScaleZ)
                              * Matrix.RotationX(ReadWriteCommon.BAMStoRadians(Rotation.X))
                              * Matrix.RotationY(ReadWriteCommon.BAMStoRadians(Rotation.Y))
                              * Matrix.RotationZ(ReadWriteCommon.BAMStoRadians(Rotation.Z))
                              * Matrix.Translation(Position);
        }
Example #7
0
        public override void CreateTransformMatrix(Vector3 Position, Vector3 Rotation)
        {
            this.Position = Position;
            this.Rotation = Rotation;

            transformMatrix =
                Matrix.RotationY(ReadWriteCommon.BAMStoRadians((int)Rotation.Y) + MathUtil.Pi) *
                Matrix.RotationX(ReadWriteCommon.BAMStoRadians((int)Rotation.X)) *
                Matrix.RotationZ(ReadWriteCommon.BAMStoRadians((int)Rotation.Z)) *
                Matrix.Translation(Position);
        }
        public override void CreateTransformMatrix(Vector3 Position, Vector3 Rotation)
        {
            this.Position = Position;
            this.Rotation = Rotation;

            sphereBound     = new BoundingSphere(Position, Radius);
            transformMatrix = Matrix.Scaling(Radius * 2)
                              * Matrix.RotationY(ReadWriteCommon.BAMStoRadians(Rotation.Y))
                              * Matrix.RotationX(ReadWriteCommon.BAMStoRadians(Rotation.X))
                              * Matrix.RotationZ(ReadWriteCommon.BAMStoRadians(Rotation.Z))
                              * Matrix.Translation(Position);
        }
        public override void Draw(SharpRenderer renderer)
        {
            base.Draw(renderer);

            string flagModelName = "S01_PN_HATA0.DFF";

            if (FlagType < 8 && renderer.dffRenderer.DFFModels.ContainsKey(flagModelName))
            {
                SetRendererStates(renderer);

                renderData.worldViewProjection = Matrix.Scaling(Scale)
                                                 * Matrix.RotationX(ReadWriteCommon.BAMStoRadians(Rotation.X))
                                                 * Matrix.RotationY(ReadWriteCommon.BAMStoRadians(Rotation.Y))
                                                 * Matrix.RotationZ(ReadWriteCommon.BAMStoRadians(Rotation.Z))
                                                 * Matrix.RotationY(MathUtil.DegreesToRadians(FlagAngle))
                                                 * Matrix.Translation(Position) * renderer.viewProjection;

                renderer.Device.UpdateData(renderer.tintedBuffer, renderData);
                renderer.Device.DeviceContext.VertexShader.SetConstantBuffer(0, renderer.tintedBuffer);

                renderer.dffRenderer.DFFModels[flagModelName].Render(renderer.Device);
            }
        }
Example #10
0
        public override void CreateTransformMatrix(Vector3 Position, Vector3 Rotation)
        {
            Vector3 box = Program.MainForm.ParticleEditor.GetBoxForSetParticle(Number - 50);

            if (box != Vector3.Zero)
            {
                this.Position = Position;
                this.Rotation = Rotation;

                box.X = Math.Max(1f, box.X);
                box.Y = Math.Max(1f, box.Y);
                box.Z = Math.Max(1f, box.Z);

                transformMatrix = Matrix.Scaling(box * 2) *
                                  Matrix.RotationX(ReadWriteCommon.BAMStoRadians((int)Rotation.X)) *
                                  Matrix.RotationY(ReadWriteCommon.BAMStoRadians((int)Rotation.Y)) *
                                  Matrix.RotationZ(ReadWriteCommon.BAMStoRadians((int)Rotation.Z)) *
                                  Matrix.Translation(Position);
            }
            else
            {
                base.CreateTransformMatrix(Position, Rotation);
            }
        }
Example #11
0
 public void NewMatrix(Vector3 Position, int Rotation)
 {
     world = Matrix.Scaling(20f, 20f, 30f) * Matrix.RotationY(ReadWriteCommon.BAMStoRadians(Rotation)) * Matrix.Translation(Position);
 }
Example #12
0
        public override void CreateTransformMatrix(Vector3 Position, Vector3 Rotation)
        {
            this.Position = Position;
            this.Rotation = Rotation;

            transformMatrix =
                Matrix.RotationY(ReadWriteCommon.BAMStoRadians(Rotation.Y))
                * Matrix.RotationX(ReadWriteCommon.BAMStoRadians(Rotation.X))
                * Matrix.RotationZ(ReadWriteCommon.BAMStoRadians(Rotation.Z))
                * Matrix.Translation(Position);

            positionsList = new List <Matrix>(NumberOfRings);

            switch (Type) // single ring
            {
            case RingType.Normal:
                positionsList.Add(Matrix.Identity);
                break;

            case RingType.Line:     // line of rings
                if (NumberOfRings < 2)
                {
                    return;
                }
                for (int i = 0; i < NumberOfRings; i++)
                {
                    positionsList.Add(Matrix.Translation(0, 0, TotalLenght * i / (NumberOfRings - 1)));
                }
                break;

            case RingType.Circle:     // circle
                if (NumberOfRings < 1)
                {
                    return;
                }
                for (int i = 0; i < NumberOfRings; i++)
                {
                    //positionsList.Add(Matrix.Translation((Vector3)Vector3.Transform(new Vector3(0, 0, -Radius), Matrix.RotationY(2 * (float)Math.PI * i / NumberOfRings))));
                    positionsList.Add(Matrix.Translation(0, 0, -Radius) * Matrix.RotationY(2 * (float)Math.PI * i / NumberOfRings));
                }
                break;

            case RingType.Arch:     // arch
                if (NumberOfRings < 2)
                {
                    return;
                }
                float angle = TotalLenght / Radius;
                for (int i = 0; i < NumberOfRings; i++)
                {
                    Matrix Locator = Matrix.Translation(new Vector3(Radius, 0, 0));

                    //positionsList.Add((Vector3)Vector3.Transform(Vector3.Zero, Locator
                    //    * Matrix.RotationY(angle / (NumberOfRings - 1) * i)
                    //    * Matrix.Invert(Locator)));
                    positionsList.Add(Locator
                                      * Matrix.RotationY(angle / (NumberOfRings - 1) * i)
                                      * Matrix.Invert(Locator));
                }
                break;
            }
        }
Example #13
0
 public Matrix DefaultTransformMatrix(float yAdd = 0) =>
 Matrix.RotationY(ReadWriteCommon.BAMStoRadians((int)Rotation.Y) + yAdd) *
 Matrix.RotationX(ReadWriteCommon.BAMStoRadians((int)Rotation.X)) *
 Matrix.RotationZ(ReadWriteCommon.BAMStoRadians((int)Rotation.Z)) *
 Matrix.Translation(Position);