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 )