コード例 #1
0
ファイル: Camera_Tests.cs プロジェクト: knot3/knot3-code
 public void Init()
 {
     screen = new FakeScreen ();
     effect = new FakeEffect (screen);
     world = new World (screen: screen, drawOrder: DisplayLayer.GameWorld, effect: effect, bounds: screen.Bounds);
     cam1 = new Camera (screen: screen, world: world);
 }
コード例 #2
0
ファイル: World.cs プロジェクト: tobiasschulz/unnamed
        /// <summary>
        /// Liest den Standard-Effekt aus der Konfigurationsdatei aus und liefert ein entsprechendes RenderEffekt-Objekt zurück.
        /// </summary>
        private static IRenderEffect DefaultEffect(IScreen screen)
        {
            // suche den eingestellten Standardeffekt heraus
            string        effectName = Config.Default ["video", "current-world-effect", "default"];
            IRenderEffect effect     = RenderEffectLibrary.CreateEffect(screen: screen, name: effectName);

            return(effect);
        }
コード例 #3
0
ファイル: World_Tests.cs プロジェクト: knot3/knot3-code
        public void AddRemoveTest()
        {
            screen = screen ?? new FakeScreen ();
            effect = effect ?? new FakeEffect (screen);

            // Erstelle einen Knoten
            new Knot ();

            /*
            Knot knot = new Knot ();

            // Erstelle eine Rasterpunkt-Zuordnung
            Grid nodeMap = new Grid (screen: screen);
            nodeMap.Knot = knot;
            nodeMap.OnEdgesChanged ();

            List<Pipe> models = new List<Pipe> ();

            // Erstelle ein paar Pipes
            foreach (Edge edge in knot) {
                Pipe pipe = new Pipe (screen: screen, nodeMap: nodeMap, knot: knot, edge: edge);
                models.Add (pipe);
            }
            Assert.AreEqual (knot.Count (), models.Count (), "Für jede Edge eine Pipe");

            return;
            // das hier zu sehr in XNA verwoben, macht als test wahrscheinlich keinen sinn!!

            World world = new World (screen: screen, effect: effect);

            foreach (PipeModel model in models) {
                world.Add (model);
            }

            Assert.AreEqual (knot.Count (), world.Count (), "Anzahl GameObjects");

            foreach (PipeModel model in models) {
                world.Add (model);
            }

            Assert.AreEqual (knot.Count (), world.Count (), "GameObjects sind Unique");

            foreach (PipeModel model in models) {
                world.Remove (model);
            }

            Assert.AreEqual (0, world.Count (), "Leere World");

            */
        }
コード例 #4
0
ファイル: ModelHelper.cs プロジェクト: knot3/knot3-prototype
 private static Model LoadModel(ContentManager content, IRenderEffect pp, string name)
 {
     if (invalidModels.Contains (name)) {
         return null;
     }
     else {
         try {
             Model model = content.Load<Model> (name);
             pp.RemapModel (model);
             return model;
         }
         catch (ContentLoadException) {
             Console.WriteLine ("Warning: Model " + name + " does not exist!");
             invalidModels.Add (name);
             return null;
         }
     }
 }
コード例 #5
0
ファイル: World.cs プロジェクト: tobiasschulz/unnamed
        /// <summary>
        /// Erstellt eine neue Spielwelt im angegebenen Spielzustand, dem angegebenen Rendereffekt und dem
        /// angegebenen Bounds-Objekt.
        /// </summary>
        public World(IScreen screen, DisplayLayer drawOrder, IRenderEffect effect, Bounds bounds)
            : base(screen, drawOrder)
        {
            // die Kamera für diese Spielwelt
            _camera = new Camera(screen, this);

            // die Liste der Spielobjekte
            Objects = new HashSet <IGameObject> ();

            // der Rendereffekt
            CurrentEffect = effect;

            // die relative Standard-Position und Größe
            Bounds = bounds;

            if (Screen.Game != null)
            {
                Screen.Game.FullScreenChanged += () => viewportCache.Clear();
            }
        }
コード例 #6
0
ファイル: ContentLoader.cs プロジェクト: tobiasschulz/unnamed
 private static Model LoadModel(ContentManager content, IRenderEffect pp, string name)
 {
     if (invalidModels.Contains(name))
     {
         return(null);
     }
     else
     {
         try {
             Model model = content.Load <Model> ("Models/" + name);
             pp.RemapModel(model);
             return(model);
         }
         catch (ContentLoadException) {
             Log.Debug("Warning: Model ", name, " does not exist!");
             invalidModels.Add(name);
             return(null);
         }
     }
 }
コード例 #7
0
 /// <summary>
 /// Entfernt den obersten Rendereffekt vom Stapel.
 /// </summary>
 public IRenderEffect Pop()
 {
     if (stack.Count > 0)
     {
         IRenderEffect removed = stack.Pop();
         if (stack.Count > 0)
         {
             screen.GraphicsDevice.SetRenderTarget(CurrentEffect.RenderTarget);
         }
         else
         {
             screen.GraphicsDevice.SetRenderTarget(null);
         }
         return(removed);
     }
     else
     {
         return(defaultEffect);
     }
 }
コード例 #8
0
ファイル: RenderEffectStack.cs プロジェクト: knot3/knot3-code
 /// <summary>
 /// Erstellt einen neuen Rendereffekt-Stapel.
 /// </summary>
 public RenderEffectStack(IScreen screen, IRenderEffect defaultEffect)
 {
     this.screen = screen;
     this.defaultEffect = defaultEffect;
     stack = new Stack<IRenderEffect> ();
 }
コード例 #9
0
ファイル: RenderEffectStack.cs プロジェクト: knot3/knot3-code
 /// <summary>
 /// Legt einen Rendereffekt auf den Stapel.
 /// </summary>
 public void Push(IRenderEffect effect)
 {
     stack.Push (effect);
     screen.GraphicsDevice.SetRenderTarget (effect.RenderTarget);
 }
コード例 #10
0
ファイル: RenderEffect.cs プロジェクト: knot3/knot3-prototype
 public void Push(IRenderEffect current)
 {
     activeEffects.Push (current);
 }
コード例 #11
0
ファイル: RenderEffect.cs プロジェクト: knot3/knot3-prototype
 public RenderEffectStack(IRenderEffect defaultEffect)
 {
     this.defaultEffect = defaultEffect;
 }
コード例 #12
0
ファイル: FakeEffectStack.cs プロジェクト: knot3/knot3-code
 /// <summary>
 /// Legt einen Rendereffekt auf den Stapel.
 /// </summary>
 public void Push(IRenderEffect effect)
 {
     stack.Push (effect);
 }
コード例 #13
0
 /// <summary>
 /// Erstellt einen neuen Rendereffekt-Stapel.
 /// </summary>
 public RenderEffectStack(IScreen screen, IRenderEffect defaultEffect)
 {
     this.screen        = screen;
     this.defaultEffect = defaultEffect;
     stack = new Stack <IRenderEffect> ();
 }
コード例 #14
0
 /// <summary>
 /// Legt einen Rendereffekt auf den Stapel.
 /// </summary>
 public void Push(IRenderEffect effect)
 {
     stack.Push(effect);
     screen.GraphicsDevice.SetRenderTarget(effect.RenderTarget);
 }
コード例 #15
0
 /// <summary>
 /// Append a rendering effect to the pipeline
 /// and load the effect's content
 /// </summary>
 /// <param name="effect">The effect to be added</param>
 public void AddRenderEffect(IRenderEffect effect)
 {
     effects.Add(effect);
     if (batch == null)
         LoadContent();
     else
         effect.LoadContent(contentManager, graphicsDevice, batch);
 }
コード例 #16
0
 /// <summary>
 /// Remove a rendering effect from the pipeline
 /// Unloads that effect's content
 /// </summary>
 /// <param name="effect"></param>
 public void RemoveRenderEffect(IRenderEffect effect)
 {
     effects.Remove(effect);
     effect.UnloadContent();
 }