Repository navigation
v0.4.0
Changelog for v.0.3.1 (08.04.2024)
[Changed] AssetManager class:
- [Added] The implementation of available assets list. The names of all available assets are now neatly packed into lists, one list per asset type, and are globaly accesible as static lists of
AssetManagerclass. The list are prepared by direcly readingContent.mgcbfile at the initialization of theAssetManagerclass.
[Changed] All Renderer Component classes:
- [Added] The option to change according asset form Inspector Window.
[Changed] MeshRenderer class:
- [Added] Name field to represent
Modelname. This solution isn't perfect but oh well.
Changelog for v.0.3.2 (08.04.2024)
[Added] AnimatedSpriteManager component
- [Implemented] Component abstract methods in the
AnimatedSpriteRenderer - [Added]
Start,StopandResetAnimation methods - [Added] GUI Debug menu for changing values of the animation
[Added] Assets:
- [Added] coin.png
- [Added] background.png
[Added] TotalSeconds property in the Globals
- [Added]
Updatemethod in theGlobalsto get the time of the game
[Changed] AssetManager Class:
- [Added]
Texture2Dproperty for the default animated sprite
[Changed] BaseScene Class:
- [Added] New game objects which represents coin animation and a smiley face
- [Added] New text Game Object
- [Added] Updating the text object in the
Update()method inBaseSceneClass
[Changed] TextRenderer component
- [Changed]
Updatemethod now updates, when the content is different
Changelog for v.0.3.3 (08.04.2024)
[Changed] FileManager class:
- [Changed]
LoadKeyBindingsis now static and returns keybindings in special data structure instead of storing them in FileManager's lists. - [Added]
KeyBindsDataclass to act as data structure forLoadKeyBindingsmethod - [Changed] Class is now initializes in
Game1for possible future aplications.
[Changed] InputManager class:
- [Changed]
PopulateDictwas changed to account forFileManagerclass changes.
[Changed] GameObject class:
- [Added]
SaveSceneToXmlpublic andObjectToXmlStringprivate methods that converts whole scene graph to XML compatible string.
[Changed] All components:
- [Added]
ComponentToXmlStringmethod that converts component to XML compatible string.
Changelog for v.0.3.4 (08.04.2024)
[Changed] All Components:
- [Added]
Deserializemethod to initialize component using values form XML file.
[Changed] SpriteRenderer class:
- [Changed]
ComponentToXmlStringmethod now serializes sprite color.
[Changed] All Renderer Components:
- [Added]
LoadModel,LoadSpriteetc. to load assets using asset names.
[Changed] Transform class:
- [Added] Move method
[Changed] FileManager class:
- [Added]
DeserializeScenemethod that recreates scene graph using data from XLM file.
[Changed] IScene interface:
- [Added]
SaveToFilemethod
[Changed] BaseScene class:
- [Changed] Whole class now uses hierarchy form
gameObjectclass - [Implemented]
Sceneserialization method
[Changed] SceneManager class:
- [Added] Button in Inspector to save current scene to XML file. WARNING: IT WORKS ONLY FOR BASESCENE
[Added] BaseScene.xml asset
[To-Do]: Restructure scene class.
Changelog for v.0.3.5 (08.04.2024)
[Changed] AnimatedSpriteRenderer component:
- [Added] Setters for
Frames,FrameTimeandSpriteSheetto make it more customizable - [Changed]
Frames,FrameTimeandSpriteSheethave default values
[Changed] BaseScene Class:
-[Added] coin object now is initialized with custom values
Changelog for v.0.3.6 (09.04.2024)
[Changed] AnimatedSpriteRenderer component:
- [Implemented]
Deserializemethod - [Added]
LoadSpriteSheet(name)method
[Changed] BaseScene Class:
- [Added] Background in the scene with all the parameters set up
[Changed] RTS_Engine.csproj:
- [Added] Preprocessor variable to check if the operating system is Windows
[Changed] AssetManager Class:
- [Changed]
StreamReadernow checks if the OS is Windows or Unix and loads from the OS specific path
[Changed] BaseScene Class:
- [Added] Preprocessor condition for OS specific paths
Changelog for v.0.3.7 (09.04.2024)
[Changed] IScene Interface into Scene Abstract Class:
- [Added]
NameandSceneRootproperties into theSceneClass
[Changed] SceneManager Class:
- [Changed] Every
IScenechanged toScene
[Changed] BaseScene and SecondScene Classes:
- [Changed] All methods override the abstract methods from the
SceneClass - [Changed] Deleted the properties, because they are now in the abstract
SceneClass
[Changed] SecondScene Class:
- [Changed] Deleted old code and added new code to show a basic cube on the screen
- [Added]
SaveToFile()method to save the second scene into the XML file
[Changed] Game1 Class:
- [Added]
DepthStencilState()for the fixed depth of the objects
[Changed] MeshRenderer Class:
- [Added] Default Ambient Light
[Added] CollisionManager class:
- [Implemented] Logic for colission detection
- [Added] Creation of bounding spheres for
GameObjectsutilizingCollissioncomponent
[Added] Collision class
- [Added] Bool field to control the state of colliding objects
[Added] Assets:
- [Added] Infested Chair unit model
- [Added] Infested Wardrobe unit model
- [Added] Infested Sawmill building model
Changelog for v.0.3.8 (10.04.2024)
[Changed] CollisionManager class:
- [Changed]
BoundingSphereis now created in the component
[Changed] Collider component class:
- [Implemented]
Inspectfunction - [Added]
Updatecreates aBoundingSpherearound models which utilize the component - [Added]
Scaleis now equal to thescale.xof theparentObject
[Changed] ThirdScene Class:
- [Changed] Making boxes move together
Changelog for v.0.3.9 (11.04.2024)
[Added] NoiseField Generic Class:
- [Added]
Field,WidthandHeightproperties - [Added] Basic constructor for the class
- [Added]
Flatten()method to convert field into the 1D array
[Added] PerlinNoiseGenerator Class:
- [Added]
Octaves,Persistance,Randomproperties to modify the generated noise - [Added]
InterpolationAlgorithmproperty - [Added]
PerlinNoiseGeneratorconstructor to initialize the properties - [Added]
GenerateWhiteNoise()method to generate a basic white noise - [Added]
SmoothNoiseField()method to smooth out a basic white noise - [Added]
PerlinNoiseField()method to create a perlin noise from the smoothed white noise
Changelog for v.0.3.10 (11.04.2024)
[Added] Camera class
- [Added] Code from
SceneCameratoCamerato have sth to work on
[Changed] Collider class
- [Changed] Did a bit of cosmetic work
[Changed] Globals class
- [Added] Global
GraphicsDeviceto use with Camera
[Changed] Game1 class
- [Added] Passing the
GraphicsDevicetoGlobals
[Changed] Globals class is no longer a singleton:
- [Changed] All relevant fields are now static.
- [Removed]
Instancefield. Updated all classes that used Instance field. - [Changed]
GetAllComponentsmethod is now static - [Changed]
GetAllComponentsandComponentTypeslist are now included in RELEASE
[Changed] FileManager class:
- [Changed]
DeserializeObjectmethod now deserializes component in more generic way usingComponentTypeslist fromGlobalsclass.
Changelog for v.0.3.11 (11.04.2024)
[Added] LoadedScene class to store scenes loaded from XML file.
[Moved] XML files with scenes data to another dictionary. Changed path accordingly where it was nessesary.
[Fixed] AnimatedSpriteRenderer class:
- [Fixed]
Colornot being deserialized correctly. It was deserializing as floats instead of integers.
[Fixed] SpiteRenderer class:
- [Fixed] Deserializing was skipping
SpiteRendererdue to typo in<type>tag in scene save file. Corrected the typo in serialization code. - [Fixed]
Colornot being deserialized correctly. It was deserializing as floats instead of integers.
[Fixed] FileManager class:
- [Fixed] Component deserialization step of
DeserializeObjectmethod skipping deserialing ofTransformcomponent due to it not being on ComponentTypes list. Added extra check for component type to eliminate this issue.
[Changed] Globals class:
- [Added]
AvailableScenesstatic list to hold the paths to all scene that are avaiable for loading. - [Added]
UpdateScenesListstatic method to update the paths of all available scenes.
[Changed] SceneManager class:
- [Removed]
RemoveScenemethod. - [Removed]
GetCurrentScenemethod due to it being obsolete. - [Added]
CurrentScenepublic field. - [Added]
ChangeScenepublic method. - [Added] The option to load and save the scenes as well as create new scenes in Debug Window.
- [Changed] Selecting and removing scenes elements in Debug Window are better organized now.
[Added] Loss scene save file.
Changelog for v.0.3.12 (12.04.2024)
[Changed] PerlinNoiseGenerator Class:
- [Added]
GeneratePerlinNoisegeneric method to generate a basic Perlin Noise
[Added] INoiseFilter generic interface
- [Added] Generic
Filtermethod
[Added] LinearGradientFilter class:
- [Added]
StartColor,EndColorandStartPercentageproperties - [Implemented] Generic
Filter()method to generate a gradient texture
[Added] CustomGradientMethod class:
- [Added]
ColorPairstructure - [Added]
Start,EndandColorproperties - [Added]
IsInRange()method to check if the value provided is in range of the start and end value - [Added] Overrided
ToString()method to show which color is (from start to end) - [Added] List of
ColorPairsproperty - [Implemented]
Filter()method to create a gradient of custom values from theColorsList - [Added]
AddColorPoint()method to add custom colors to the list
[Added] INoiseTransformer Generic Interface to transform the noiseField into different object
[Added] Texture2DTransformer class:
- [Added]
GraphicsDeviceproperty - [Implemented]
Transform(colorField)generic method to transform a color data into colored texture - [Implemented]
Transform(noiseField)generic method to transform a noise data into a grayscale texture
[Added] MapScene class - it just shows a generated texture using SpiteRenderer component
[Changed] Globals class:
- [Added]
GraphicsDeviceproperty
[Changed] Game1 class:
- [Added] Initializing
GlobalsGraphicDevicewith the mainGraphicsDevicefromGraphicsDeviceManager - [Added] Adding
MapSceneinto theSceneManagerobject
Changelog for v.0.3.13 (12.04.2024)
[Changed] MapScene Class:
- [Deleted]
GeneratedNoiseTexture()method
[Changed] PerlinNoiseGenerator Class:
- [Changed]
OctavesandPersistanceproperties now do not have getters and setters for the ImGui's sake - [Changed] Constructor default values are now different
[Added] GenerateMap Class:
- [Added]
GenerateNoiseTexture()method which was in the MapScene Class - [Added]
MapInspector()method to change the values of the map (every change generates a new map with values from the inspector)
[Changed] Globals Class:
- [Added]
MapModifyVisibleboolean
[Changed] Game1 Class:
- [Added] In
ImGuiLayout()added another condition to show theMapInspector()
Changelog for v.0.3.14 (16.04.2024)
[Changed] Camera Component:
- [Deleted]
UpdateFPSandUpdateEditorLayout methods - [Changed]
Updatemethod now does nothing - [Changed]
Globalsproperties are now static, so Instance is useless - [Commented]
MouseStateandKeyboardStateproperties so it doesn't overlap with Mouse and Keyboard State from theSceneCamera
[Changed] Game1 Class:
- [Changed]
GlobalsMapModifyboolean is now static, so Instance is useless - [Changed] Order of adding scenes to the
SceneManager - [Added] Map Modifier checkbox in debug window.
[Changed] Globals Class:
- [Checked] MacOS directive is good, works fine
- [Changed] Added
ToList()to theGetFiles("Scenes")
[Changed] GenerateMap Class:
- [Changed]
GraphicsDeviceis static inGlobals, so Instance is useless
[Changed] MapScene Class:
- [Changed] Name of the Scene
Changelog for v.0.3.15 (19.04.2024)
[Added] New models:
- [Added] Tent model
- [Added] Campfire model
- [Added] Wardrobe model
- [Added] Sawmill model
- [Added] 3 tree models
Changelog for v.0.3.16 (21.04.2024)
[Changed] BaseScene save file
- [Changed]
BaseSceneis now our camp scene for the game
[Changed] MeshRenderer component class:
- [Changed]
DrawModelmethod now works more low level and allows the use of custom shader.
[Added] TestEffect.fx - test shader
[Changed] Globals class:
- [Added]
TestEffectfield to hold custom effect.
[Changed] Game1 class:
- [Added] Loading
TestEffect.fxand storing it inGlobalsclassTestEffectfield
Changelog for v.0.3.17 (23.04.2024)
[Changed] Globals class:
- [Added]
World,ViewandProjectionMatrices fields for camera.
[Changed] Camera component class:
- [Implemented]
ComponentToXmlStringmethod.
Changelog for v.0.3.18 (25.04.2024)
[Changed] Game1 Class:
- [Added] Preprocessor condition for loading effects, so it works on Windows and macOS
- [Changed] Preprocessor directives in the game loop, so we can use the sceneCamera in the Debug configuration
Changelog for v.0.3.19 (26.04.2024)
[Added] Layer Component
[Changed] Globals Class:
- [Added]
public enumfor theLayerType
[Added] WorldGenerator Class
[Changed] MapScene Class:
- [Added] Basic mesh object to imitate our ground
- [Changed] Named some objects from the code
[Changed] PerlinNoiseGenerator Class:
- [Changed] Default values are now 6 octaves and 0.5 persistance
[Changed] GenerateMap Class:
- [Changed] Added a a basic condition if the generated texture should be colored or default (black and white) - this will help in the future to se if the height map generates correctly
Changelog for v.0.3.20 (28.04.2024)
[Added] PBR_Shader.fx Effect for PBR
[Added] Assets:
- [Added] albedo, ao, metalness, normal and roughness maps to test the PBR shader
- [Changed] Default model also has those maps to check if the PBR works
[Added] ModelData Class:
- [Added] String array of maps to easily read them from every model
- [Added]
Model,ModelPathproperties to load the model - [Added]
BoundingSphereproperty for the frustum to work - [Added] List of
Texture2Dto be loaded into the model - [Added]
CalculateBoundingSphere()method to create a corresponding sphere around the meshes of the model (need for the frustum culling) - [Added]
LoadModel()method
[Changed] MeshRenderer Component:
- [Deleted]
Modelandnameproperties - [Added]
ModelDataproperty, which utilizes all the necessary mesh, textures and shaders loading - [Changed]
DrawModel()method - temporary testing if the PBR works
Changelog for v.0.3.21 (29.04.2024)
[Changed] All Components:
- [Changed]
Draw()method is no longer overridden - does nothing right now
Changelog for v.0.3.22 (30.04.2024)
[Changed] InputManager Class:
- [Added] Scroll wheel support
[Changed] `SceneManager] Class:
- [Added] Cancel button in scene selection screen
[Added] WorldRenderer Component:
- [Added]
Texture2Dproperty for the loaded height map - [Added] Overridden methods from component class
- [Added]
SetUpVertices()andSetUpIndices()methods for setting up the mesh using the loaded height map - [Added]
LoadHeightData()method to load the heigh map from the file into the 2D arrayheightData - [Added]
Inspect()method to check if the height map is loaded correctly, which width and height it has and also a button to remove the component - [Added] Serialization and deserialization methods but not yet implemented because it's not fully implemented yet
[Changed] Game1 Class:
- [Removed] Map Modifier window in ImGui, because it's now useless
[Changed] Globals Class:
- [Removed]
MapModifyVisibleboolean
[Changed] AssetManager Class:
- [Added] Height map for the
WorldRendererto be loaded when the scene is on
[Changed] GenerateMap Class:
- [Added]
SaveTextureData()method to save the generated texture into the .bmp file - [Removed]
MapInspector()method
[Deleted] WorldGenerator Class
[Changed] MapScene Class:
- [Removed] Mesh object which was earlier in the scene
- [Added] New mesh object which has a WorldRenderer Component
Changelog for v.0.3.23 (01.05.2024)
[Added] Basic effect for the terrain
[Changed] WorldRendered Component:
- [Added]
_effectand_colorsproperties - [Changed]
FillModeis nowSolid - [Changed]
_effectsis now responsible for drawing, notBasicEffect - [Added] On
Initialize()the effect is being loaded - [Added] Color regions of the terrains in
SetUpVertices()method - [Changed] In
Inspect()user can change the colors of the regions
Changelog for v.0.3.24 (03.05.2024)
[Added] ShadowMaps.fx shader for shadow mapping
[Changed] PBR_Shader.fx:
- [Added] Support for the shadow mapping
[Changed] ModelData Class:
- [Changed]
Draw()is now responsible for setting up the values of the PBR shader
[Added] Renderer Class, which is responsible for rendering everything in the game
Changelog for v.0.3.25 (04.05.2024)
[Changed] All drawing methods are now in Renderer Class
Changelog for v.0.3.26 (05.05.2024)
[Added] Pickable Component for picking
[Added] PickingManager to creates raycasts and check if the player clicked the desired object
Changelog for v.0.3.27 (06.05.2024)
[Added] Compiled shaders to work on Unix systems
[Changed] WorldRenderer Component:
- [Added]
VertexPositionColorNormalstruct for the coloring and normals of the world mesh - [Added]
VertexandIndexbuffers to load them once when drawing - [Added] Temporary
worldMatrix, becauseParentObject.Transform.ModelMatrixwon't work - NEED FIX
[Changed] PerlinNoiseGenerator Class:
- [Added]
FallOffandReversedFallOffmethods to smooth out the terrain around or inside the noise
Changelog for v.0.3.28 (06.05.2024)
[Changed] WorldRenderer Component:
- [Changed] Colors are now back to original
- [Changed] In
SetUpVertices()method theheightDatadiffers (changing the height of the grass and mountains)
[Changed] PerlinNoiseGenerator Class:
- [Changed]
FallOffNoise()method generates a much better falloff than before - [Added]
Evaluate()method to make the falloff smoother - [Changed] In
GeneratePerlinNoise()method thefallOffis being subtracted from the generatedperlinNoise, so we now have a nice falloff