Exemplo n.º 1
0
        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();
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        ///** 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();
            }
        }
Exemplo n.º 4
0
        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();
        }
Exemplo n.º 5
0
        /// <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--;
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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();
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
        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();
        }