Ejemplo n.º 1
0
        private static void CreateTouchElement(TrainManager.ElementsGroup Group, Vector3 Position, Vector3 Size, int ScreenIndex, int[] SoundIndices, TrainManager.CommandEntry[] CommandEntries)
        {
            Vertex       t0     = new Vertex(Size.X, Size.Y, -Size.Z);
            Vertex       t1     = new Vertex(Size.X, -Size.Y, -Size.Z);
            Vertex       t2     = new Vertex(-Size.X, -Size.Y, -Size.Z);
            Vertex       t3     = new Vertex(-Size.X, Size.Y, -Size.Z);
            Vertex       t4     = new Vertex(Size.X, Size.Y, Size.Z);
            Vertex       t5     = new Vertex(Size.X, -Size.Y, Size.Z);
            Vertex       t6     = new Vertex(-Size.X, -Size.Y, Size.Z);
            Vertex       t7     = new Vertex(-Size.X, Size.Y, Size.Z);
            StaticObject Object = new StaticObject(Program.CurrentHost);

            Object.Mesh.Vertices                      = new VertexTemplate[] { t0, t1, t2, t3, t4, t5, t6, t7 };
            Object.Mesh.Faces                         = new MeshFace[] { new MeshFace(new int[] { 0, 1, 2, 3 }), new MeshFace(new int[] { 0, 4, 5, 1 }), new MeshFace(new int[] { 0, 3, 7, 4 }), new MeshFace(new int[] { 6, 5, 4, 7 }), new MeshFace(new int[] { 6, 7, 3, 2 }), new MeshFace(new int[] { 6, 2, 1, 5 }) };
            Object.Mesh.Materials                     = new MeshMaterial[1];
            Object.Mesh.Materials[0].Flags            = 0;
            Object.Mesh.Materials[0].Color            = Color32.White;
            Object.Mesh.Materials[0].TransparentColor = Color24.Blue;
            Object.Mesh.Materials[0].DaytimeTexture   = null;
            Object.Mesh.Materials[0].NighttimeTexture = null;
            Object.Dynamic = true;
            if (Group.TouchElements == null)
            {
                Group.TouchElements = new TrainManager.TouchElement[0];
            }
            int n = Group.TouchElements.Length;

            Array.Resize(ref Group.TouchElements, n + 1);
            Group.TouchElements[n] = new TrainManager.TouchElement
            {
                Element         = new AnimatedObject(Program.CurrentHost),
                JumpScreenIndex = ScreenIndex,
                SoundIndices    = SoundIndices,
                ControlIndices  = new int[CommandEntries.Length]
            };
            Group.TouchElements[n].Element.States = new [] { new ObjectState() };
            Group.TouchElements[n].Element.States[0].Translation = Matrix4D.CreateTranslation(Position.X, Position.Y, -Position.Z);
            Group.TouchElements[n].Element.States[0].Prototype   = Object;
            Group.TouchElements[n].Element.CurrentState          = 0;
            Group.TouchElements[n].Element.internalObject        = new ObjectState {
                Prototype = Object
            };
            Program.CurrentHost.CreateDynamicObject(ref Group.TouchElements[n].Element.internalObject);
            int m = Interface.CurrentControls.Length;

            Array.Resize(ref Interface.CurrentControls, m + CommandEntries.Length);
            for (int i = 0; i < CommandEntries.Length; i++)
            {
                Interface.CurrentControls[m + i].Command = CommandEntries[i].Command;
                Interface.CurrentControls[m + i].Method  = Interface.ControlMethod.Touch;
                Interface.CurrentControls[m + i].Option  = CommandEntries[i].Option;
                Group.TouchElements[n].ControlIndices[i] = m + i;
            }
        }
Ejemplo n.º 2
0
        private static void CreateTouchElement(TrainManager.ElementsGroup Group, Vector3 Position, Vector3 Size, int ScreenIndex, int SoundIndex, Translations.Command Command, int CommandOption)
        {
            Vertex t0 = new Vertex(Size.X, Size.Y, -Size.Z);
            Vertex t1 = new Vertex(Size.X, -Size.Y, -Size.Z);
            Vertex t2 = new Vertex(-Size.X, -Size.Y, -Size.Z);
            Vertex t3 = new Vertex(-Size.X, Size.Y, -Size.Z);
            Vertex t4 = new Vertex(Size.X, Size.Y, Size.Z);
            Vertex t5 = new Vertex(Size.X, -Size.Y, Size.Z);
            Vertex t6 = new Vertex(-Size.X, -Size.Y, Size.Z);
            Vertex t7 = new Vertex(-Size.X, Size.Y, Size.Z);

            ObjectManager.StaticObject Object = new ObjectManager.StaticObject();
            Object.Mesh.Vertices                      = new VertexTemplate[] { t0, t1, t2, t3, t4, t5, t6, t7 };
            Object.Mesh.Faces                         = new MeshFace[] { new MeshFace(new int[] { 0, 1, 2, 3 }), new MeshFace(new int[] { 0, 4, 5, 1 }), new MeshFace(new int[] { 0, 3, 7, 4 }), new MeshFace(new int[] { 6, 5, 4, 7 }), new MeshFace(new int[] { 6, 7, 3, 2 }), new MeshFace(new int[] { 6, 2, 1, 5 }) };
            Object.Mesh.Materials                     = new MeshMaterial[1];
            Object.Mesh.Materials[0].Flags            = 0;
            Object.Mesh.Materials[0].Color            = Color32.White;
            Object.Mesh.Materials[0].TransparentColor = Color24.Blue;
            Object.Mesh.Materials[0].DaytimeTexture   = null;
            Object.Mesh.Materials[0].NighttimeTexture = null;
            Object.Dynamic = true;
            if (Group.TouchElements == null)
            {
                Group.TouchElements = new TrainManager.TouchElement[0];
            }
            int n = Group.TouchElements.Length;

            Array.Resize(ref Group.TouchElements, n + 1);
            Group.TouchElements[n] = new TrainManager.TouchElement
            {
                Element         = new ObjectManager.AnimatedObject(),
                JumpScreenIndex = ScreenIndex,
                SoundIndex      = SoundIndex,
                Command         = Command,
                CommandOption   = CommandOption
            };
            Group.TouchElements[n].Element.States             = new ObjectManager.AnimatedObjectState[1];
            Group.TouchElements[n].Element.States[0].Position = Position;
            Group.TouchElements[n].Element.States[0].Object   = Object;
            Group.TouchElements[n].Element.CurrentState       = 0;
            Group.TouchElements[n].Element.ObjectIndex        = ObjectManager.CreateDynamicObject();
            ObjectManager.Objects[Group.TouchElements[n].Element.ObjectIndex] = Object.Clone();
            int m = Interface.CurrentControls.Length;

            Array.Resize(ref Interface.CurrentControls, m + 1);
            Interface.CurrentControls[m].Command = Command;
            Interface.CurrentControls[m].Method  = Interface.ControlMethod.Touch;
            Interface.CurrentControls[m].Option  = CommandOption;
        }