Ogre

 view release on metacpan or  search on metacpan

examples/buffered.pl  view on Meta::CPAN

use Ogre::ColourValue;
use Ogre::Degree;
use Ogre::Light qw(:LightTypes);
use Ogre::Vector3;

# uncomment this if the packages are in separate files
# use TutorialFrameListener;
use Ogre::ExampleApplication;
@TutorialApplication::ISA = qw(Ogre::ExampleApplication);

sub createCamera {
    my ($self) = @_;

    $self->{mCamera} = $self->{mSceneMgr}->createCamera("PlayerCam");
    $self->{mCamera}->setNearClipDistance(5);
}

sub createScene {
    my ($self) = @_;

    $self->{mSceneMgr}->setAmbientLight(Ogre::ColourValue->new(0.25, 0.25, 0.25));

    # add the ninja
    my $ent = $self->{mSceneMgr}->createEntity("Ninja", "ninja.mesh");
    my $node = $self->{mSceneMgr}->getRootSceneNode()->createChildSceneNode("NinjaNode");
    $node->attachObject($ent);

    # create the light
    my $light = $self->{mSceneMgr}->createLight("Light1");
    $light->setType(LT_POINT);
    $light->setPosition(250, 150, 250);
    $light->setDiffuseColour(1, 1, 1);
    $light->setSpecularColour(1, 1, 1);

    # Create the scene node
    $node = $self->{mSceneMgr}->getRootSceneNode()->createChildSceneNode("CamNode1",
                                                                         Ogre::Vector3->new(-400, 200, 400));

    # Make it look towards the ninja
    $node->yaw(Ogre::Degree->new(-45));

    # Create the pitch node
    $node = $node->createChildSceneNode("PitchNode1");
    $node->attachObject($self->{mCamera});

    # create the second camera node/pitch node
    $node = $self->{mSceneMgr}->getRootSceneNode()->createChildSceneNode("CamNode2",
                                                                         Ogre::Vector3->new(0, 200, 400));
    $node = $node->createChildSceneNode("PitchNode2");
}

sub createFrameListener {
    my ($self) = @_;

    # Create the FrameListener
    $self->{mFrameListener} = TutorialFrameListener->new($self->{mWindow},
                                                         $self->{mCamera},
                                                         $self->{mSceneMgr});
    $self->{mRoot}->addFrameListener($self->{mFrameListener});

    # Show the frame stats overlay
    $self->{mFrameListener}->showDebugOverlay(1);
}


1;


package main;

use strict;
use warnings;


# uncomment this if the packages are in separate files
# use TutorialApplication;

main();
exit(0);

sub main {
    my $app = TutorialApplication->new();
    $app->go();
}



( run in 1.173 second using v1.01-cache-2.11-cpan-39bf76dae61 )