Init
This commit is contained in:
176
Samples/WinPhone8/WinPhone8.cpp
Normal file
176
Samples/WinPhone8/WinPhone8.cpp
Normal file
@ -0,0 +1,176 @@
|
||||
/*
|
||||
* Copyright (c) 2014, Oculus VR, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This source code is licensed under the BSD-style license found in the
|
||||
* RakNet License.txt file in the licenses directory of this source tree. An additional grant
|
||||
* of patent rights can be found in the RakNet Patents.txt file in the same directory.
|
||||
*
|
||||
*
|
||||
* Modified work: Copyright (c) 2017, SLikeSoft UG (haftungsbeschränkt)
|
||||
*
|
||||
* This source code was modified by SLikeSoft. Modifications are licensed under the MIT-style
|
||||
* license found in the license.txt file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
#include "pch.h"
|
||||
#include "WinPhone8.h"
|
||||
#include "BasicTimer.h"
|
||||
|
||||
using namespace Windows::ApplicationModel;
|
||||
using namespace Windows::ApplicationModel::Core;
|
||||
using namespace Windows::ApplicationModel::Activation;
|
||||
using namespace Windows::UI::Core;
|
||||
using namespace Windows::System;
|
||||
using namespace Windows::Foundation;
|
||||
using namespace Windows::Graphics::Display;
|
||||
using namespace concurrency;
|
||||
|
||||
WinPhone8::WinPhone8() :
|
||||
m_windowClosed(false),
|
||||
m_windowVisible(true)
|
||||
{
|
||||
}
|
||||
|
||||
void WinPhone8::Initialize(CoreApplicationView^ applicationView)
|
||||
{
|
||||
applicationView->Activated +=
|
||||
ref new TypedEventHandler<CoreApplicationView^, IActivatedEventArgs^>(this, &WinPhone8::OnActivated);
|
||||
|
||||
CoreApplication::Suspending +=
|
||||
ref new EventHandler<SuspendingEventArgs^>(this, &WinPhone8::OnSuspending);
|
||||
|
||||
CoreApplication::Resuming +=
|
||||
ref new EventHandler<Platform::Object^>(this, &WinPhone8::OnResuming);
|
||||
|
||||
m_renderer = ref new CubeRenderer();
|
||||
}
|
||||
|
||||
void WinPhone8::SetWindow(CoreWindow^ window)
|
||||
{
|
||||
window->VisibilityChanged +=
|
||||
ref new TypedEventHandler<CoreWindow^, VisibilityChangedEventArgs^>(this, &WinPhone8::OnVisibilityChanged);
|
||||
|
||||
window->Closed +=
|
||||
ref new TypedEventHandler<CoreWindow^, CoreWindowEventArgs^>(this, &WinPhone8::OnWindowClosed);
|
||||
|
||||
window->PointerPressed +=
|
||||
ref new TypedEventHandler<CoreWindow^, PointerEventArgs^>(this, &WinPhone8::OnPointerPressed);
|
||||
|
||||
window->PointerMoved +=
|
||||
ref new TypedEventHandler<CoreWindow^, PointerEventArgs^>(this, &WinPhone8::OnPointerMoved);
|
||||
|
||||
window->PointerReleased +=
|
||||
ref new TypedEventHandler<CoreWindow^, PointerEventArgs^>(this, &WinPhone8::OnPointerReleased);
|
||||
|
||||
m_renderer->Initialize(CoreWindow::GetForCurrentThread());
|
||||
}
|
||||
|
||||
void WinPhone8::Load(Platform::String^ entryPoint)
|
||||
{
|
||||
}
|
||||
|
||||
void WinPhone8::Run()
|
||||
{
|
||||
BasicTimer^ timer = ref new BasicTimer();
|
||||
|
||||
while (!m_windowClosed)
|
||||
{
|
||||
if (m_windowVisible)
|
||||
{
|
||||
timer->Update();
|
||||
CoreWindow::GetForCurrentThread()->Dispatcher->ProcessEvents(CoreProcessEventsOption::ProcessAllIfPresent);
|
||||
m_renderer->Update(timer->Total, timer->Delta);
|
||||
m_renderer->Render();
|
||||
m_renderer->Present(); // This call is synchronized to the display frame rate.
|
||||
}
|
||||
else
|
||||
{
|
||||
CoreWindow::GetForCurrentThread()->Dispatcher->ProcessEvents(CoreProcessEventsOption::ProcessOneAndAllPending);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void WinPhone8::Uninitialize()
|
||||
{
|
||||
}
|
||||
|
||||
void WinPhone8::OnVisibilityChanged(CoreWindow^ sender, VisibilityChangedEventArgs^ args)
|
||||
{
|
||||
m_windowVisible = args->Visible;
|
||||
}
|
||||
|
||||
void WinPhone8::OnWindowClosed(CoreWindow^ sender, CoreWindowEventArgs^ args)
|
||||
{
|
||||
m_windowClosed = true;
|
||||
}
|
||||
|
||||
#include "slikenet/peerinterface.h"
|
||||
using namespace SLNet;
|
||||
#define DEFAULT_SERVER_PORT 61111
|
||||
#define DEFAULT_SERVER_ADDRESS "natpunch.jenkinssoftware.com"
|
||||
|
||||
void WinPhone8::OnPointerPressed(CoreWindow^ sender, PointerEventArgs^ args)
|
||||
{
|
||||
// Insert your code here.
|
||||
|
||||
RakPeerInterface *rakPeer = RakPeerInterface::GetInstance();
|
||||
SocketDescriptor sd;
|
||||
StartupResult sr = rakPeer->Startup(1, &sd, 1);
|
||||
assert(sr==RAKNET_STARTED);
|
||||
ConnectionAttemptResult car = rakPeer->Connect(DEFAULT_SERVER_ADDRESS, DEFAULT_SERVER_PORT, 0, 0);
|
||||
assert(car==CONNECTION_ATTEMPT_STARTED);
|
||||
}
|
||||
|
||||
void WinPhone8::OnPointerMoved(CoreWindow^ sender, PointerEventArgs^ args)
|
||||
{
|
||||
// Insert your code here.
|
||||
}
|
||||
|
||||
void WinPhone8::OnPointerReleased(CoreWindow^ sender, PointerEventArgs^ args)
|
||||
{
|
||||
// Insert your code here.
|
||||
}
|
||||
|
||||
void WinPhone8::OnActivated(CoreApplicationView^ applicationView, IActivatedEventArgs^ args)
|
||||
{
|
||||
CoreWindow::GetForCurrentThread()->Activate();
|
||||
}
|
||||
|
||||
void WinPhone8::OnSuspending(Platform::Object^ sender, SuspendingEventArgs^ args)
|
||||
{
|
||||
// Save app state asynchronously after requesting a deferral. Holding a deferral
|
||||
// indicates that the application is busy performing suspending operations. Be
|
||||
// aware that a deferral may not be held indefinitely. After about five seconds,
|
||||
// the app will be forced to exit.
|
||||
SuspendingDeferral^ deferral = args->SuspendingOperation->GetDeferral();
|
||||
m_renderer->ReleaseResourcesForSuspending();
|
||||
|
||||
create_task([this, deferral]()
|
||||
{
|
||||
// Insert your code here.
|
||||
|
||||
deferral->Complete();
|
||||
});
|
||||
}
|
||||
|
||||
void WinPhone8::OnResuming(Platform::Object^ sender, Platform::Object^ args)
|
||||
{
|
||||
// Restore any data or state that was unloaded on suspend. By default, data
|
||||
// and state are persisted when resuming from suspend. Note that this event
|
||||
// does not occur if the app was previously terminated.
|
||||
m_renderer->CreateWindowSizeDependentResources();
|
||||
}
|
||||
|
||||
IFrameworkView^ Direct3DApplicationSource::CreateView()
|
||||
{
|
||||
return ref new WinPhone8();
|
||||
}
|
||||
|
||||
[Platform::MTAThread]
|
||||
int main(Platform::Array<Platform::String^>^)
|
||||
{
|
||||
auto direct3DApplicationSource = ref new Direct3DApplicationSource();
|
||||
CoreApplication::Run(direct3DApplicationSource);
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user