Package com.ardor3d.scenegraph.extension

Source Code of com.ardor3d.scenegraph.extension.PassNode

/**
* Copyright (c) 2008-2012 Ardor Labs, Inc.
*
* This file is part of Ardor3D.
*
* Ardor3D is free software: you can redistribute it and/or modify it
* under the terms of its license which may be found in the accompanying
* LICENSE file or at <http://www.ardor3d.com/LICENSE>.
*/

package com.ardor3d.scenegraph.extension;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import com.ardor3d.renderer.ContextManager;
import com.ardor3d.renderer.RenderContext;
import com.ardor3d.renderer.Renderer;
import com.ardor3d.scenegraph.Node;
import com.ardor3d.scenegraph.Spatial;
import com.ardor3d.util.export.InputCapsule;
import com.ardor3d.util.export.OutputCapsule;

public class PassNode extends Node {

    private List<PassNodeState> _passNodeStates = new ArrayList<PassNodeState>();

    public PassNode(final String name) {
        super(name);
    }

    public PassNode() {
        super();
    }

    @Override
    public void draw(final Renderer r) {
        if (_children == null) {
            return;
        }

        final RenderContext context = ContextManager.getCurrentContext();
        r.getQueue().pushBuckets();
        for (final PassNodeState pass : _passNodeStates) {
            if (!pass.isEnabled()) {
                continue;
            }

            pass.applyPassNodeStates(context);

            Spatial child;
            for (int i = 0, cSize = _children.size(); i < cSize; i++) {
                child = _children.get(i);
                if (child != null) {
                    child.onDraw(r);
                }
            }
            r.renderBuckets();

            context.popEnforcedStates();
        }
        r.getQueue().popBuckets();
    }

    public void addPass(final PassNodeState toAdd) {
        _passNodeStates.add(toAdd);
    }

    public void insertPass(final PassNodeState toAdd, final int index) {
        _passNodeStates.add(index, toAdd);
    }

    public boolean containsPass(final PassNodeState s) {
        return _passNodeStates.contains(s);
    }

    public boolean removePass(final PassNodeState toRemove) {
        return _passNodeStates.remove(toRemove);
    }

    public PassNodeState getPass(final int index) {
        return _passNodeStates.get(index);
    }

    public int nrPasses() {
        return _passNodeStates.size();
    }

    public void clearAll() {
        _passNodeStates.clear();
    }

    @Override
    public void write(final OutputCapsule capsule) throws IOException {
        super.write(capsule);
        capsule.writeSavableList(_passNodeStates, "passNodeStates", null);
    }

    @Override
    public void read(final InputCapsule capsule) throws IOException {
        super.read(capsule);
        _passNodeStates = capsule.readSavableList("passNodeStates", null);
    }
}
TOP

Related Classes of com.ardor3d.scenegraph.extension.PassNode

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.