internal CCWindow(CCApplication application, CCSize screenSizeInPixels, GameWindow xnaWindow, GraphicsDeviceManager deviceManager) { sceneDirectors = new List <CCDirector>(); AddSceneDirector(new CCDirector()); EventDispatcher = new CCEventDispatcher(this); Stats = new CCStats(); #if !NETFX_CORE Accelerometer = new CCAccelerometer(this); #endif eventAfterDraw = new CCEventCustom(EVENT_AFTER_DRAW); eventAfterDraw.UserData = this; eventAfterVisit = new CCEventCustom(EVENT_AFTER_VISIT); eventAfterVisit.UserData = this; eventAfterUpdate = new CCEventCustom(EVENT_AFTER_UPDATE); eventAfterUpdate.UserData = this; IsUseAlphaBlending = true; IsUseDepthTesting = false; this.XnaWindow = xnaWindow; xnaWindow.OrientationChanged += OnOrientationChanged; xnaWindow.ClientSizeChanged += OnWindowSizeChanged; xnaWindow.AllowUserResizing = true; Application = application; designResolutionSize = WindowSizeInPixels; DesignResolutionPolicy = CCSceneResolutionPolicy.ExactFit; Stats.Initialize(); }
internal CCWindow(CCApplication application, CCSize screenSizeInPixels, GameWindow xnaWindow, GraphicsDeviceManager deviceManager) { sceneDirectors = new List <CCDirector>(); AddSceneDirector(new CCDirector()); EventDispatcher = new CCEventDispatcher(this); Stats = new CCStats(); #if !NETFX_CORE Accelerometer = new CCAccelerometer(this); #endif eventAfterDraw = new CCEventCustom(EVENT_AFTER_DRAW); eventAfterDraw.UserData = this; eventAfterVisit = new CCEventCustom(EVENT_AFTER_VISIT); eventAfterVisit.UserData = this; eventAfterUpdate = new CCEventCustom(EVENT_AFTER_UPDATE); eventAfterUpdate.UserData = this; IsUseAlphaBlending = true; IsUseDepthTesting = false; this.XnaWindow = xnaWindow; xnaWindow.OrientationChanged += OnOrientationChanged; xnaWindow.ClientSizeChanged += OnWindowSizeChanged; DeviceManager = deviceManager; // Trying to set user resize when game is full-screen will cause app to crash if (!deviceManager.IsFullScreen) { xnaWindow.AllowUserResizing = true; } Application = application; if (CCScene.DefaultDesignResolutionSize == CCSize.Zero) { CCScene.DefaultDesignResolutionSize = screenSizeInPixels; CCScene.DefaultDesignResolutionPolicy = CCSceneResolutionPolicy.ExactFit; } // Make sure we initialize the Cache's so that the correct Scheduler is used. // This needs to be looked at further for multiple windows. new CCTextureCache(application); new CCParticleSystemCache(application); Stats.Initialize(); CCPoint center = screenSizeInPixels.Center; defaultViewMatrix = Matrix.CreateLookAt(new CCPoint3(center, 300.0f).XnaVector, new CCPoint3(center, 0.0f).XnaVector, Vector3.Up); defaultProjMatrix = Matrix.CreateOrthographic(screenSizeInPixels.Width, screenSizeInPixels.Height, 1024f, -1024); defaultViewport = new Viewport(0, 0, (int)screenSizeInPixels.Width, (int)screenSizeInPixels.Height); }
///** Updates all listeners // * 1) Removes all listener items that have been marked as 'removed' when dispatching event. // * 2) Adds all listener items that have been marked as 'added' when dispatching event. // */ void UpdateListeners(CCEvent forEvent) { Debug.Assert(inDispatch > 0, "If program goes here, there should be events to dispatch."); if (forEvent.Type == CCEventType.TOUCH) { UpdateListeners(CCEventListenerTouchOneByOne.LISTENER_ID); UpdateListeners(CCEventListenerTouchAllAtOnce.LISTENER_ID); } else { UpdateListeners(CCEventDispatcher.GetListenerID(forEvent)); } if (inDispatch > 1) { return; } Debug.Assert(inDispatch == 1, "_inDispatch should be 1 here."); List <string> lmKeysToRemove = new List <string>(); foreach (string lv in listenerMap.Keys) { if (listenerMap[lv].IsEmpty) { lmKeysToRemove.Add(lv); } } foreach (string key in lmKeysToRemove) { priorityDirtyFlagMap.Remove(key); listenerMap[key] = null; listenerMap.Remove(key); } if (toBeAddedListeners.Count > 0) { foreach (var listener in toBeAddedListeners) { ForceAddEventListener(listener); } toBeAddedListeners.Clear(); } }
internal CCWindow(CCApplication application, CCSize screenSizeInPixels, GameWindow xnaWindow, GraphicsDeviceManager deviceManager) { sceneDirectors = new List <CCDirector>(); AddSceneDirector(new CCDirector()); EventDispatcher = new CCEventDispatcher(this); Stats = new CCStats(); #if !NETFX_CORE Accelerometer = new CCAccelerometer(this); #endif eventAfterDraw = new CCEventCustom(EVENT_AFTER_DRAW); eventAfterDraw.UserData = this; eventAfterVisit = new CCEventCustom(EVENT_AFTER_VISIT); eventAfterVisit.UserData = this; eventAfterUpdate = new CCEventCustom(EVENT_AFTER_UPDATE); eventAfterUpdate.UserData = this; IsUseAlphaBlending = true; IsUseDepthTesting = false; this.XnaWindow = xnaWindow; xnaWindow.OrientationChanged += OnOrientationChanged; xnaWindow.ClientSizeChanged += OnWindowSizeChanged; DeviceManager = deviceManager; // Trying to set user resize when game is full-screen will cause app to crash if (!deviceManager.IsFullScreen) { xnaWindow.AllowUserResizing = true; } Application = application; if (CCScene.DefaultDesignResolutionSize == CCSize.Zero) { CCScene.DefaultDesignResolutionSize = screenSizeInPixels; CCScene.DefaultDesignResolutionPolicy = CCSceneResolutionPolicy.ExactFit; } Stats.Initialize(); }
/// <summary> /// Dispatches the event /// Also removes all EventListeners marked for deletion from the event dispatcher list. /// </summary> /// <param name="eventToDispatch"></param> public void DispatchEvent(CCEvent eventToDispatch) { if (!IsEnabled) { return; } UpdateDirtyFlagForSceneGraph(); inDispatch++; if (eventToDispatch.Type == CCEventType.TOUCH) { DispatchTouchEvent((CCEventTouch)eventToDispatch); inDispatch--; return; } var listenerID = CCEventDispatcher.GetListenerID(eventToDispatch); SortEventListeners(listenerID); if (listenerMap.ContainsKey(listenerID)) { var listeners = listenerMap [listenerID]; Func <CCEventListener, bool> onEvent = delegate(CCEventListener listener) { eventToDispatch.CurrentTarget = listener.SceneGraphPriority; listener.OnEvent(eventToDispatch); return(eventToDispatch.IsStopped); }; DispatchEventToListeners(listeners, onEvent); } UpdateListeners(eventToDispatch); inDispatch--; }
void Initialise() { if (viewInitialised) { return; } PlatformInitialise(); ActionManager = new CCActionManager(); Director = new CCDirector(); EventDispatcher = new CCEventDispatcher(this); AudioEngine = new CCAudioEngine(); Scheduler = new CCScheduler(); // Latest instance of game view should be setting shared resources // Ideally, we should move towards removing these singletons altogetehr CCAudioEngine.SharedEngine = AudioEngine; CCScheduler.SharedScheduler = Scheduler; Stats = new CCStats(); InitialiseGraphicsDevice(); InitialiseResourceCaches(); InitialiseRunLoop(); InitialiseInputHandling(); Stats.Initialise(); viewInitialised = true; currentViewInstance = new WeakReference(this); }
internal CCWindow(CCApplication application, CCSize screenSizeInPixels, GameWindow xnaWindow, GraphicsDeviceManager deviceManager) { sceneDirectors = new List<CCDirector>(); AddSceneDirector(new CCDirector()); EventDispatcher = new CCEventDispatcher(this); //Stats = new CCStats(); #if !NETFX_CORE Accelerometer = new CCAccelerometer(this); #endif eventAfterDraw = new CCEventCustom(EVENT_AFTER_DRAW); eventAfterDraw.UserData = this; eventAfterVisit = new CCEventCustom(EVENT_AFTER_VISIT); eventAfterVisit.UserData = this; eventAfterUpdate = new CCEventCustom(EVENT_AFTER_UPDATE); eventAfterUpdate.UserData = this; IsUseAlphaBlending = true; IsUseDepthTesting = false; this.XnaWindow = xnaWindow; xnaWindow.OrientationChanged += OnOrientationChanged; xnaWindow.ClientSizeChanged += OnWindowSizeChanged; xnaWindow.AllowUserResizing = true; Application = application; designResolutionSize = WindowSizeInPixels; DesignResolutionPolicy = CCSceneResolutionPolicy.ExactFit; //Stats.Initialize(); }
internal CCWindow(CCApplication application, CCSize screenSizeInPixels, GameWindow xnaWindow, GraphicsDeviceManager deviceManager) { sceneDirectors = new List<CCDirector>(); AddSceneDirector(new CCDirector()); EventDispatcher = new CCEventDispatcher(this); Stats = new CCStats(); #if !NETFX_CORE Accelerometer = new CCAccelerometer(this); #endif eventAfterDraw = new CCEventCustom(EVENT_AFTER_DRAW); eventAfterDraw.UserData = this; eventAfterVisit = new CCEventCustom(EVENT_AFTER_VISIT); eventAfterVisit.UserData = this; eventAfterUpdate = new CCEventCustom(EVENT_AFTER_UPDATE); eventAfterUpdate.UserData = this; IsUseAlphaBlending = true; IsUseDepthTesting = false; this.XnaWindow = xnaWindow; xnaWindow.OrientationChanged += OnOrientationChanged; xnaWindow.ClientSizeChanged += OnWindowSizeChanged; DeviceManager = deviceManager; // Trying to set user resize when game is full-screen will cause app to crash if(!deviceManager.IsFullScreen) xnaWindow.AllowUserResizing = true; Application = application; if (CCScene.DefaultDesignResolutionSize == CCSize.Zero) { CCScene.DefaultDesignResolutionSize = screenSizeInPixels; CCScene.DefaultDesignResolutionPolicy = CCSceneResolutionPolicy.ExactFit; } // Make sure we initialize the Cache's so that the correct Scheduler is used. // This needs to be looked at further for multiple windows. new CCTextureCache(application); new CCParticleSystemCache(application); Stats.Initialize(); CCPoint center = screenSizeInPixels.Center; defaultViewMatrix = Matrix.CreateLookAt(new CCPoint3(center, 300.0f).XnaVector, new CCPoint3(center, 0.0f).XnaVector, Vector3.Up); defaultProjMatrix = Matrix.CreateOrthographic(screenSizeInPixels.Width, screenSizeInPixels.Height, 1024f, -1024); defaultViewport = new Viewport(0, 0, (int)screenSizeInPixels.Width, (int)screenSizeInPixels.Height); }
internal CCWindow(CCApplication application, CCSize screenSizeInPixels, GameWindow xnaWindow, GraphicsDeviceManager deviceManager) { sceneDirectors = new List<CCDirector>(); AddSceneDirector(new CCDirector()); EventDispatcher = new CCEventDispatcher(this); Stats = new CCStats(); #if !NETFX_CORE Accelerometer = new CCAccelerometer(this); #endif eventAfterDraw = new CCEventCustom(EVENT_AFTER_DRAW); eventAfterDraw.UserData = this; eventAfterVisit = new CCEventCustom(EVENT_AFTER_VISIT); eventAfterVisit.UserData = this; eventAfterUpdate = new CCEventCustom(EVENT_AFTER_UPDATE); eventAfterUpdate.UserData = this; IsUseAlphaBlending = true; IsUseDepthTesting = false; this.XnaWindow = xnaWindow; xnaWindow.OrientationChanged += OnOrientationChanged; xnaWindow.ClientSizeChanged += OnWindowSizeChanged; DeviceManager = deviceManager; // Trying to set user resize when game is full-screen will cause app to crash if(!deviceManager.IsFullScreen) xnaWindow.AllowUserResizing = true; Application = application; if (CCScene.DefaultDesignResolutionSize == CCSize.Zero) { CCScene.DefaultDesignResolutionSize = screenSizeInPixels; CCScene.DefaultDesignResolutionPolicy = CCSceneResolutionPolicy.ExactFit; } Stats.Initialize(); }