Exemplo n.º 1
0
 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;
     }
 }
Exemplo n.º 2
0
        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;
            }
        }
Exemplo n.º 3
0
        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;
        }