Thursday, March 24, 2011

Weekly Report 25/03/2011

In the last week I have done a few things.
  • I have identified a number of bugs, managing to fix some of them and informing the group of the others
  • I have begun integrating concepts from both Jun's code and my own
  • I have reassessed a number of designs and identified a number of areas where the program could be improved
  • I began coding these new designs, though in the last group meeting we decided that this may be a little time consuming and may distract from our main objectives.
In the group meeting we noted that the texturing of string did not render on my computer although using the exact same code on another machine rendered without a problem.

In the following week, I aim to tackle known bugs and add more buttons to the GUI.

Sunday, March 20, 2011

GUI Progress 20/03/11

Just recapping on my progress since my last entry as well as outlining a couple of my objectives.
I presented this to the group and discussed the direction last meeting.
Progress:
  • Read through and tried to understand Jun's code
    • Unfortunately it would seem that when I submitted a code sample of multiple viewports, I had provided an out of date file which was rather inefficient and inflexible. It is still workable, though.
  • Integrated what I had done in a sample piece of code into Jun's code
  • Fixed an issue with detecting the coordinates of the mouse in 3d space when enlarging a single viewport
  • Created a GUI drawable game component to perform tasks such as:
    • Drawing all the buttons for the GUI
    • Detecting rollover and clicking of buttons
    • Determining which button has been pressed and what action the program should perform next
  • Created a struct “ActionEvent” which shall be passed from the keyboard/mouse handler and the GUI. This struct contains information as to what action the program should perform next and what viewport the action is specific to (if any).
  • Edited the structure of the program so now the keyboard/mouse handler now returns an ActionEvent to be dealt with later, thus allowing the reuse of code and improving readabillity.
  • Modified the code so that each of workspaces that are to be drawn have their own viewports, ie. topleft, topright, bottomleft, bottomright, fullscreen and default. This way the program doesn't have to keep calculating the positioning and sizing of each viewport with each render, resulting in improved efficiency at a minimal cost to memory.
  • The GUI class now lets us simply call a function to add a particular button type (eg, filebar or toolbar), passing an image with it and the class will figure out the correct positioning of the button and detect if it has been clicked or not.
    • The buttons specific to each of the different viewports requires a bit more work

Objectives (before last meeting):
  • Separate existing functionality into detection functions and handler functions
  • Create more pictures to be used by the GUI
  • Restructure the GUI class

Objectives (after last meeting):
  • It would seem that Jun has begun a template for the GUI for me and would like me to continue from where he left off
  • I am currently looking at the two designs advantages/disadvantages and what I can do to further the GUI by next group meeting.

Thursday, March 10, 2011

First Two Weeks Back

The project looks like it is coming along well.
Our group met together in person for the first time since last semester and I was reminded how much easier it is to have meetings this way as oppose to over the internet.

Now that the core of the project is shaping up nicely, I put my hand up to implement the user interface that we had discussed in previous meetings.
We decided that we would steer clear of WinForms and implement the GUI entirely in XNA.

My current task is to have some sort of usable GUI up and running, which I plan on having well in advance of our next group meeting.
From there I will address keyboard shortcuts and finalize with the group how we would like the program to work.
Depending on time constraints, after that I will address a couple of bugs in the program that have been pointed out in group meetings and touch up the presentation of the GUI as well as other visual aspects of the program.

Summary of the Summer Break

Over the summer break the team split and worked on their own tasks.
I worked on two areas:

  1. Designing and implementing an alternative prototype to serve as the core of the project.
  2. Designing and implementing a system to manage and render multiple viewports with changeable viewing angles.

Task 1 proved more challenging than I had originally anticipated. After putting my concept to paper I then had to actually implement the design. I learnt from Tim that Jun had made significant progress on his prototype.
After reviewing the progress of my prototype, we decided that, due to the limited time factor, it would be more productive for me to focus my attention on other tasks such as the viewport management.

The basic functionality of the code for task 2 would allow a user to view 4 projections of the workspace simultaneously.
Each one of these projections would be shown within it's own viewport and  for each viewport the user could select which angle the camera would look from.
The user could also enlarge any of the 4 viewports.

With task 2 I encountered a couple of technical setbacks. One such setback was that XNA strangely would not allow for a camera to look directly down the y-axis. I am sure this problem can be resolved, though at this stage the angle of the camera is very slightly off as not to look directly down the axis, something that we can tolerate for now. I made several modifications and improvements to this code and have submitted them for inclusion within the rest of the project.