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; } }
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; }