示例#1
0
 public void AddModifier(IModifier3D modifier)
 {
     modifier.Owner = this;
     for (int i = 0; i <= modifiers.Length; i++)
     {
         if (i == modifiers.Length)
         {
             IModifier3D[] newModifiersArray = new IModifier3D[modifiers.Length + 4];
             for (int h = 0; h < modifiers.Length; h++)
             {
                 newModifiersArray[h] = modifiers[h];
             }
             newModifiersArray[modifiers.Length] = modifier;
             modifiers = newModifiersArray;
         }
         if (modifiers[i] == null)
         {
             modifiers[i] = modifier;
             break;
         }
     }
 }
示例#2
0
 public void AddModifier(IModifier3D modifier)
 {
     plane.AddModifier(modifier);
 }
示例#3
0
 public void ClearModifiers()
 {
     modifiers = new IModifier3D[4];
 }
示例#4
0
        private void reload(string filePath, DynamicContentManager Content)
        {
            PlayerWorld   newState = Content.Load <PlayerWorld>(filePath);
            TexturedPlane oldPlane = plane;

            plane               = newState.plane;
            plane.Color         = oldPlane.Color;
            plane.WorldPosition = oldPlane.WorldPosition;
            //planeOrbit = (OrbitModifier3D)planeOrbit.DeepCopy(plane);
            //plane.AddModifier(planeOrbit);
            IsVisible      = newState.isVisible;
            PrimaryColor   = newState.PrimaryColor;
            SecondaryColor = newState.SecondaryColor;
            Name           = newState.Name;
            Description    = newState.Description;
            PlayerName     = newState.PlayerName;
            if (newState.CursorDetectRadius > 0)
            {
                CursorDetectRadius = newState.CursorDetectRadius;
            }

            if (gateLevel != newState.gateLevel && PlayerEntered)
            {
                setGates(gateLevel);
            }
            gateLevel = newState.gateLevel;

            for (int i = 0; i < oldPlane.Modifiers.Length; i++)
            {
                if (oldPlane.Modifiers[i] != null)
                {
                    IModifier3D newMod = oldPlane.Modifiers[i].DeepCopy(plane);
                    if (oldPlane.Modifiers[i] == planeOrbit)
                    {
                        planeOrbit = (OrbitModifier3D)newMod;
                    }
                    plane.AddModifier(newMod);
                }
            }

            if (PlayerEntered != newState.PlayerEntered)
            {
                PlayerEntered = newState.PlayerEntered;
                for (int i = 0; i < lowerSpirograph.Modifiers.Length; i++)
                {
                    if (lowerSpirograph.Modifiers[i] != null && lowerSpirograph.Modifiers[i] is ColorModifier3D)
                    {
                        lowerSpirograph.Modifiers[i].Remove();
                        i--;
                    }
                }
                for (int i = 0; i < plane.Modifiers.Length; i++)
                {
                    if (plane.Modifiers[i] != null && plane.Modifiers[i] is ColorModifier3D)
                    {
                        plane.Modifiers[i].Remove();
                        i--;
                    }
                }
                if (PlayerEntered)
                {
                    lowerSpirograph.AddModifier(new ColorModifier3D(PrimaryColor, true, lowerSpirograph, 90));
                    plane.AddModifier(new ColorModifier3D(Color.White, true, plane, 90));
                    setGates(gateLevel);
                }
                else
                {
                    lowerSpirograph.AddModifier(new ColorModifier3D(Color.Lerp(PrimaryColor, Color.Black, 0.8f), true, lowerSpirograph, 90));
                    plane.AddModifier(new ColorModifier3D(new Color(50, 50, 50), true, plane, 90));
                    setGates(0);
                }
            }
            //else if (!PlayerEntered)
            //    setGates(0);
        }