private PlayerWorld(TexturedPlane image, Color primaryColor, Color secondaryColor, string name, string description, int gate, string playerName, bool playerEntered, bool isVisible, float initAngle, float initDist, float initSpeed, float initHeight) { plane = image; PrimaryColor = primaryColor; SecondaryColor = secondaryColor; Name = name; Description = description; gateLevel = gate; PlayerName = playerName; this.playerEntered = playerEntered; this.isVisible = isVisible; if (initAngle != 0 || initSpeed != 0 || initHeight != 0 || initDist != 0) { UserPlaced = true; initialDistFromCenter = initDist; initialAngle = initAngle; initialOrbitalSpeed = initSpeed; initialOrbitHeight = initHeight; planeOrbit = new OrbitModifier3D(new Vector3(0, initHeight, 0), Vector3.Up, initDist, initAngle, initSpeed, plane, false, -1); plane.AddModifier(planeOrbit); } else { UserPlaced = false; } }
public PlayerWorld(string filePath, DynamicContentManager Content) { PlayerWorldBuilder builder = PlayerWorldBuilder.BuilderRead(filePath); plane = new TexturedPlane(builder.Image); plane.billboard = true; PrimaryColor = new Color((byte)builder.PrimaryColor.X, (byte)builder.PrimaryColor.Y, (byte)builder.PrimaryColor.Z, (byte)builder.PrimaryColor.W); SecondaryColor = new Color((byte)builder.SecondaryColor.X, (byte)builder.SecondaryColor.Y, (byte)builder.SecondaryColor.Z, (byte)builder.SecondaryColor.W); Name = builder.Name; Description = builder.Description; gateLevel = builder.GateLevel; PlayerName = builder.PlayerName; PlayerEntered = builder.PlayerEntered; isVisible = builder.IsVisible; CursorDetectRadius = builder.CursorDetectRadius; if (builder.InitialAngle != 0 || builder.OrbitalSpeed != 0 || builder.OrbitHeight != 0 || builder.DistFromCenter != 0) { UserPlaced = true; initialDistFromCenter = builder.DistFromCenter; initialAngle = builder.InitialAngle; initialOrbitalSpeed = builder.OrbitalSpeed; initialOrbitHeight = builder.OrbitHeight; planeOrbit = new OrbitModifier3D(new Vector3(0, builder.OrbitHeight, 0), Vector3.Up, builder.DistFromCenter, builder.InitialAngle, builder.OrbitalSpeed, plane, false, -1); plane.AddModifier(planeOrbit); } else { UserPlaced = false; } }
public void Initialize(float distFromCenter, float orbitAngle, float orbitSpeed) { gates = new Spirograph[7]; if (PlayerEntered == true) { plane.Color = Color.White; planeOrbit = new OrbitModifier3D(new Vector3(0, 8, 0), Vector3.Up, distFromCenter, orbitAngle, orbitSpeed, plane, false, -1); plane.AddModifier(planeOrbit); lowerSpirograph = new Spirograph(1f, 10f / 7f, 7, 1, 3, 0, PrimaryColor); lowerSpirograph.AddModifier(new RotateModifier3D(Quaternion.CreateFromYawPitchRoll(0.02f, 0, 0), false, -1)); } else { plane.Color = new Color(50, 50, 50); planeOrbit = new OrbitModifier3D(Vector3.Zero, Vector3.Up, distFromCenter, orbitAngle, orbitSpeed, plane, false, -1); plane.AddModifier(planeOrbit); lowerSpirograph = new Spirograph(1f, 10f / 7f, 7, 0.4f, 3, 0, Color.Lerp(PrimaryColor, Color.Black, 0.8f)); lowerSpirograph.AddModifier(new RotateModifier3D(Quaternion.CreateFromYawPitchRoll(-0.01f, 0, 0), false, -1)); } lowerSpirograph.Generate(300); lowerSpiroOrbit = new OrbitModifier3D(Vector3.Zero, Vector3.Up, distFromCenter, orbitAngle, orbitSpeed, lowerSpirograph, false, -1); lowerSpirograph.AddModifier(lowerSpiroOrbit); lowerSpirograph.Rotation = Quaternion.CreateFromYawPitchRoll(0, 0, MathHelper.PiOver2); for (int i = 0; i < 7; i++) { float gateDist = ((distFromCenter - 20) / 7) * (6 - i) + 20; if (PlayerEntered == true) { gates[i] = new Spirograph(1f, 10f / 7f, 7, 1, 0.2f, 0, SecondaryColor); gates[i].Generate(140); } else { gates[i] = new Spirograph(1f, 10f / 7f, 7, 1, 0.2f, 0, Color.TransparentBlack); gates[i].Generate(140); } gates[i].Rotation = Quaternion.CreateFromYawPitchRoll(orbitAngle, 0, 0);//(MathHelper.TwoPi - (MathHelper.TwoPi / currentSession.Lands.Length)) * i gates[i].AddModifier(new RotateModifier3D(Quaternion.CreateFromYawPitchRoll(-orbitSpeed, 0, 0), false, -1)); gates[i].WorldPosition = new Vector3(0, 8, 0); gates[i].AddModifier(new OrbitModifier3D(new Vector3(0, 8, 0), Vector3.Up, gateDist, orbitAngle, orbitSpeed, gates[i], false, -1)); } }
protected virtual void OnCreateModifiers(SciChart3DInteractionToolbar toolbar, ISciChart3DSurface scs) { var freeLookModifier = new FreeLookModifier3D { IsEnabled = false }; var orbitModifier = new OrbitModifier3D { IsEnabled = true, ExecuteOn = ExecuteOn.MouseLeftButton }; var zoomExtentsModifier = new ZoomExtentsModifier3D { AnimateDurationMs = 500, AutoFitRadius = true, ResetPosition = new Vector3(-300, 100, -300) }; var mouseWheelZoomPanModifier = new MouseWheelZoomModifier3D(); var vertexSelectionMod = new VertexSelectionModifier3D { IsEnabled = false, ExecuteOn = ExecuteOn.MouseLeftButton, ExecuteWhen = MouseModifier.Ctrl }; var tooltipMod = new TooltipModifier3D { IsEnabled = false, ShowTooltipOn = ShowTooltipOptions.MouseOver }; var legendMod = new LegendModifier3D { LegendPlacement = LegendPlacement.Inside, ShowLegend = false }; _modifiersInAllMode.ChildModifiers.Add(orbitModifier); _modifiersInDevMode.ChildModifiers.Add(orbitModifier); _modifiersInAllMode.ChildModifiers.Add(freeLookModifier); _modifiersInDevMode.ChildModifiers.Add(freeLookModifier); _modifiersInAllMode.ChildModifiers.Add(zoomExtentsModifier); _modifiersInDevMode.ChildModifiers.Add(zoomExtentsModifier); _modifiersInAllMode.ChildModifiers.Add(mouseWheelZoomPanModifier); _modifiersInDevMode.ChildModifiers.Add(mouseWheelZoomPanModifier); _modifiersInDevMode.ChildModifiers.Add(vertexSelectionMod); _modifiersInDevMode.ChildModifiers.Add(legendMod); _modifiersInDevMode.ChildModifiers.Add(tooltipMod); var exampleModifiers = (scs.ChartModifier as ModifierGroup3D); if (exampleModifiers == null) { exampleModifiers = new ModifierGroup3D(); if (scs.ChartModifier != null) { exampleModifiers.ChildModifiers.Add(scs.ChartModifier); } } var devMods = new ModifierGroup3D(); var userMods = new ModifierGroup3D(); foreach (var devMod in _modifiersInDevMode.ChildModifiers) { var devModName = devMod.ModifierName; if (!(exampleModifiers.ChildModifiers.Any(x => x.ModifierName == devModName))) { devMods.ChildModifiers.Add(devMod); } else { if (exampleModifiers.ChildModifiers.Count(x => x.ModifierName == devModName) == 1) { var exampleMod = exampleModifiers.ChildModifiers.Single(x => x.ModifierName == devModName); devMods.ChildModifiers.Add(exampleMod); } else { foreach (var exampleMod in exampleModifiers.ChildModifiers.Where(x => x.ModifierName == devModName)) { devMods.ChildModifiers.Add(exampleMod); } } } } foreach (var inAllMod in _modifiersInAllMode.ChildModifiers) { var modName = inAllMod.ModifierName; if (!(exampleModifiers.ChildModifiers.Any(x => x.ModifierName == modName))) { userMods.ChildModifiers.Add(inAllMod); } else { if (exampleModifiers.ChildModifiers.Count(x => x.ModifierName == modName) == 1) { var exampleMod = exampleModifiers.ChildModifiers.Single(x => x.ModifierName == modName); userMods.ChildModifiers.Add(exampleMod); } else { foreach (var exampleMod in exampleModifiers.ChildModifiers.Where(x => x.ModifierName == modName)) { userMods.ChildModifiers.Add(exampleMod); } } } } foreach (var exampleMod in exampleModifiers.ChildModifiers) { if (!devMods.ChildModifiers.Any(x => x.ModifierName == exampleMod.ModifierName)) { devMods.ChildModifiers.Add(exampleMod); } if (!userMods.ChildModifiers.Any(x => x.ModifierName == exampleMod.ModifierName)) { userMods.ChildModifiers.Add(exampleMod); } } _modifiersInDevMode = devMods; _modifiersInUserMode = userMods; // Set modifiers to the chart scs.ChartModifier = IsDeveloperMode ? _modifiersInDevMode : _modifiersInUserMode; var wrappers = toolbar.IsDeveloperMode ? _modifiersInDevMode.ChildModifiers : _modifiersInUserMode.ChildModifiers; // Set modifiers to the ItemSource for ItemsControl var listMod = new List <SciChart3DToolbarItem>(); listMod.AddRange(wrappers.Select(mod => new SciChart3DToolbarItem { Modifier = mod })); ModifiersSource = listMod; }