diff --git a/resources/Schema/Components/Indicator.xml b/resources/Schema/Components/Indicator.xml
index cd4e3f46..3aab2d1b 100644
--- a/resources/Schema/Components/Indicator.xml
+++ b/resources/Schema/Components/Indicator.xml
@@ -1,3 +1,7 @@
+ 10
+ 10
+ 1
+ 1
\ No newline at end of file
diff --git a/resources/Schema/Components/Indicator.xsd b/resources/Schema/Components/Indicator.xsd
index 54a6bfe5..69e47821 100644
--- a/resources/Schema/Components/Indicator.xsd
+++ b/resources/Schema/Components/Indicator.xsd
@@ -5,7 +5,19 @@
- Billbord and makes a Model or Sprite too always appare on players screen
+ Billbord a Sprite around global Y axis
+
+
+
+ After this distance between the camera and the sprite, the sprite will not get any smaller on the screen
+
+
+ Smaller distance between the camera and the sprite, the sprite will not get any bigger on the screen
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/Schema/Entities/JohansTestMap.xml b/resources/Schema/Entities/JohansTestMap.xml
index 06e97bdc..c60ea350 100644
--- a/resources/Schema/Entities/JohansTestMap.xml
+++ b/resources/Schema/Entities/JohansTestMap.xml
@@ -4783,41 +4783,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
- Textures/Test/aM4ME4GR.png
- false
-
-
-
-
-
-
-
-
-
-
-
- Textures/Test/SmallDiff.png
- false
-
-
-
-
-
-
-
-
+
@@ -4952,41 +4918,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
- Textures/Test/aM4ME4GR.png
- false
-
-
-
-
-
-
-
-
-
- Textures/Test/SmallDiff.png
- false
-
-
-
-
-
-
-
-
-
-
+
@@ -5149,7 +5081,7 @@
- Schema/Entities/Player.xml
+ Schema/Entities/TestPlayerIndicator.xml
@@ -5233,7 +5165,7 @@
-
+
@@ -5252,7 +5184,7 @@
-
+
@@ -5271,7 +5203,7 @@
-
+
@@ -5290,7 +5222,7 @@
-
+
@@ -5309,7 +5241,7 @@
-
+
@@ -5328,7 +5260,7 @@
-
+
@@ -5347,7 +5279,7 @@
-
+
@@ -5366,7 +5298,7 @@
-
+
diff --git a/resources/Schema/Entities/Player.xml b/resources/Schema/Entities/Player.xml
index be6009ba..64ebbf54 100644
--- a/resources/Schema/Entities/Player.xml
+++ b/resources/Schema/Entities/Player.xml
@@ -349,7 +349,7 @@
Idle
- 1.6050530664521858
+ 0.30516549779527224
1
@@ -370,8 +370,8 @@
true
-
-
+
+
@@ -477,7 +477,7 @@
Idle
- 1.620305457513453
+ 1.9204144556290004
1
@@ -501,8 +501,8 @@
Models/Weapons/Blue/AssaultWeaponBlue.mesh
-
-
+
+
@@ -572,6 +572,24 @@
+
+
+
+ 30
+
+
+ Textures/Icons/Arrow.png
+ false
+
+
+
+
+
+
+
+
+
+
diff --git a/resources/Schema/Entities/PlayerRed.xml b/resources/Schema/Entities/PlayerRed.xml
index d9839e9f..a6c6d077 100644
--- a/resources/Schema/Entities/PlayerRed.xml
+++ b/resources/Schema/Entities/PlayerRed.xml
@@ -349,7 +349,7 @@
Idle
- 1.6050530664521858
+ 0.73262309029003347
1
@@ -370,8 +370,8 @@
true
-
-
+
+
@@ -477,7 +477,7 @@
Idle
- 1.620305457513453
+ 0.031207590802594609
1
@@ -501,8 +501,8 @@
Models/Weapons/Red/AssaultWeaponRed.mesh
-
-
+
+
@@ -572,6 +572,23 @@
+
+
+
+ 30
+
+
+ Textures/Icons/Arrow.png
+
+
+
+
+
+
+
+
+
+
diff --git a/resources/Schema/Entities/TestPlayerIndicator b/resources/Schema/Entities/TestPlayerIndicator
deleted file mode 100644
index 504fa0db..00000000
--- a/resources/Schema/Entities/TestPlayerIndicator
+++ /dev/null
@@ -1,590 +0,0 @@
-
-
-
-
-
-
-
-
-
- 600
-
-
-
-
-
-
-
-
- 5
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Widgets/Camera.mesh
- false
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Textures/Weapons/Crosshair/SmallThickHoleDot.png
- false
-
-
-
-
-
-
-
-
-
-
-
- Schema/Entities/HitMarker.xml
-
-
-
-
-
-
-
-
-
-
-
-
-
- 1
-
-
-
-
- 100/100
- Fonts/DroidSans.ttf,64
-
-
-
-
-
-
-
-
-
-
-
-
-
- 1
-
-
-
- Textures/HealthHUD3.png
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Textures/Core/UnitHexagon.png
-
-
-
-
-
-
-
-
-
-
- 2
-
-
-
-
-
- Textures/Core/UnitHexagon_Rotated.png
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Textures/Core/UnitHexagon.png
-
-
-
-
-
-
-
-
-
-
- 3
-
-
-
-
-
- Textures/Core/UnitHexagon_Rotated.png
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Textures/Core/UnitHexagon.png
-
-
-
-
-
-
-
-
-
-
- 4
-
-
-
-
-
- Textures/Core/UnitHexagon_Rotated.png
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Textures/Core/UnitHexagon.png
-
-
-
-
-
-
-
-
-
-
- 1
-
-
- 0.10332605343919568
-
-
-
- Textures/Core/UnitHexagon_Rotated.png
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Textures/Core/UnitHexagon.png
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Textures/Core/UnitHexagon_Rotated.png
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Fonts/DroidSans.ttf,64
-
-
-
-
-
-
-
-
-
-
-
- Fonts/DroidSans.ttf,64
-
-
-
-
-
-
-
-
-
-
-
-
-
- Fonts/DroidSans.ttf,64
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Idle
- 1.0214894690177836
- 1
-
-
- Models/Characters/Assault/FirstPerson.mesh
-
- true
-
-
-
-
-
-
-
- R_Arm_Weapon_Joint
-
-
- Models/Weapons/Blue/AssaultWeaponBlue.mesh
- true
-
-
-
-
-
-
-
-
-
-
- Schema/Entities/RayBlue.xml
-
-
-
-
-
-
-
-
-
-
- Schema/Entities/ReloadEffectView.xml
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Textures/Core/UnitHexagon.png
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 32
- Fonts/DroidSans.ttf,64
-
-
-
-
-
-
-
-
-
-
-
- 360
- Fonts/DroidSans.ttf,64
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Widgets/Camera.mesh
- false
-
-
-
-
-
-
-
-
-
-
-
- Idle
- 0.33673680560517383
- 1
-
-
- AimRifle
-
-
-
-
- Models/Characters/Assault/AssaultAnimations.mesh
-
-
-
-
-
-
-
-
- R_Arm_Weapon_Joint
-
-
- Models/Weapons/Blue/AssaultWeaponBlue.mesh
-
-
-
-
-
-
-
-
-
-
- Schema/Entities/RayBlue.xml
-
-
-
-
-
-
-
-
-
-
- Schema/Entities/ReloadEffectWorld.xml
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Core/UnitCube.mesh
-
- false
-
-
-
-
-
-
-
-
-
-
-
- Models/Core/UnitCube.mesh
-
- false
-
-
-
-
-
-
-
-
-
-
- Insert name here
- Fonts/DroidSans.ttf,100
-
-
-
-
-
-
-
-
-
-
-
-
-
- Textures/Test/aM4ME4GR.png
-
-
-
-
-
-
-
-
-
-
diff --git a/resources/Schema/Entities/TestPlayerIndicator.xml b/resources/Schema/Entities/TestPlayerIndicator.xml
deleted file mode 100644
index 56390bcb..00000000
--- a/resources/Schema/Entities/TestPlayerIndicator.xml
+++ /dev/null
@@ -1,590 +0,0 @@
-
-
-
-
-
-
-
-
-
- 600
-
-
-
-
-
-
-
-
- 5
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Widgets/Camera.mesh
- false
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Textures/Weapons/Crosshair/SmallThickHoleDot.png
- false
-
-
-
-
-
-
-
-
-
-
-
- Schema/Entities/HitMarker.xml
-
-
-
-
-
-
-
-
-
-
-
-
-
- 1
-
-
-
-
- 100/100
- Fonts/DroidSans.ttf,64
-
-
-
-
-
-
-
-
-
-
-
-
-
- 1
-
-
-
- Textures/HealthHUD3.png
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Textures/Core/UnitHexagon.png
-
-
-
-
-
-
-
-
-
-
- 2
-
-
-
-
-
- Textures/Core/UnitHexagon_Rotated.png
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Textures/Core/UnitHexagon.png
-
-
-
-
-
-
-
-
-
-
- 3
-
-
-
-
-
- Textures/Core/UnitHexagon_Rotated.png
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Textures/Core/UnitHexagon.png
-
-
-
-
-
-
-
-
-
-
- 4
-
-
-
-
-
- Textures/Core/UnitHexagon_Rotated.png
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Textures/Core/UnitHexagon.png
-
-
-
-
-
-
-
-
-
-
- 1
-
-
- 0.10332605343919568
-
-
-
- Textures/Core/UnitHexagon_Rotated.png
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Textures/Core/UnitHexagon.png
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Textures/Core/UnitHexagon_Rotated.png
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Fonts/DroidSans.ttf,64
-
-
-
-
-
-
-
-
-
-
-
- Fonts/DroidSans.ttf,64
-
-
-
-
-
-
-
-
-
-
-
-
-
- Fonts/DroidSans.ttf,64
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Idle
- 0.71065405191594166
- 1
-
-
- Models/Characters/Assault/FirstPerson.mesh
-
- true
-
-
-
-
-
-
-
- R_Arm_Weapon_Joint
-
-
- Models/Weapons/Blue/AssaultWeaponBlue.mesh
- true
-
-
-
-
-
-
-
-
-
-
- Schema/Entities/RayBlue.xml
-
-
-
-
-
-
-
-
-
-
- Schema/Entities/ReloadEffectView.xml
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Textures/Core/UnitHexagon.png
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 32
- Fonts/DroidSans.ttf,64
-
-
-
-
-
-
-
-
-
-
-
- 360
- Fonts/DroidSans.ttf,64
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Widgets/Camera.mesh
- false
-
-
-
-
-
-
-
-
-
-
-
- Idle
- 1.0759003871452997
- 1
-
-
- AimRifle
-
-
-
-
- Models/Characters/Assault/AssaultAnimations.mesh
-
-
-
-
-
-
-
-
- R_Arm_Weapon_Joint
-
-
- Models/Weapons/Blue/AssaultWeaponBlue.mesh
-
-
-
-
-
-
-
-
-
-
- Schema/Entities/RayBlue.xml
-
-
-
-
-
-
-
-
-
-
- Schema/Entities/ReloadEffectWorld.xml
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Core/UnitCube.mesh
-
- false
-
-
-
-
-
-
-
-
-
-
-
- Models/Core/UnitCube.mesh
-
- false
-
-
-
-
-
-
-
-
-
-
- Insert name here
- Fonts/DroidSans.ttf,100
-
-
-
-
-
-
-
-
-
-
-
-
-
- Textures/Test/aM4ME4GR.png
-
-
-
-
-
-
-
-
-
-
diff --git a/src/Engine/Rendering/RenderSystem.cpp b/src/Engine/Rendering/RenderSystem.cpp
index cd604b8c..c05b3681 100644
--- a/src/Engine/Rendering/RenderSystem.cpp
+++ b/src/Engine/Rendering/RenderSystem.cpp
@@ -67,13 +67,53 @@ void RenderSystem::fillSprites(std::list>& jobs, Worl
fillColor = (glm::vec4)fillComponent["Color"];
}
- glm::mat4 modelMatrix = Transform::ModelMatrix(entity.ID, world);
-
+ glm::mat4 modelMatrix = glm::mat4(1);
+
bool isIndicator = false;
if (world->HasComponent(entity.ID, "Indicator") || entity.FirstParentWithComponent("Indicator").Valid())
{
isIndicator = true;
- modelMatrix = modelMatrix * m_Camera->BillboardMatrix();
+ glm::vec3 pos = Transform::AbsolutePosition(entity);
+
+
+ // Code for shcneking if sprite is inside or outside of screen
+ //glm::vec4 projectedPos = m_Camera->ProjectionMatrix() * m_Camera->ViewMatrix() * glm::vec4(pos, 1.0f);
+ //projectedPos /= projectedPos.w;
+ //// Check if inside of outside of screen.
+ //if (projectedPos.x < -1.0f || projectedPos.x > 1.0f || projectedPos.y < -1.0f || projectedPos.y > 1.0f) {
+ // // is outside of screen
+ //} else {
+ // // is inside of screen
+ //}
+
+
+ glm::vec3 zAxis = glm::vec3(0.0f, 1.0f, 0.0f);
+ glm::vec3 normal = pos - m_Camera->Position();
+ normal.y = 0;
+ normal = glm::normalize(normal);
+ glm::vec3 right = glm::cross(normal, zAxis);
+ glm::vec3 up = glm::cross(right, normal);
+
+ modelMatrix[0][0] = right.x;
+ modelMatrix[0][1] = right.y;
+ modelMatrix[0][2] = right.z;
+
+ modelMatrix[1][0] = zAxis.x;
+ modelMatrix[1][1] = zAxis.y;
+ modelMatrix[1][2] = zAxis.z;
+
+ modelMatrix[2][0] = normal.x;
+ modelMatrix[2][1] = normal.y;
+ modelMatrix[2][2] = normal.z;
+
+ modelMatrix[3][0] = pos.x;
+ modelMatrix[3][1] = pos.y;
+ modelMatrix[3][2] = pos.z;
+
+ modelMatrix = modelMatrix * glm::scale(Transform::AbsoluteScale(entity));
+
+ } else {
+ modelMatrix = Transform::ModelMatrix(entity.ID, world);
}
std::shared_ptr spriteJob = std::shared_ptr(new SpriteJob(cSprite, m_Camera, modelMatrix, world, fillColor, fillPercentage, depthSorted, isIndicator));
@@ -101,8 +141,8 @@ bool RenderSystem::isEntityVisible(EntityWrapper& entity)
// If a sprite is an Indicator, it's not local on player and object is in the same team, then dispaly it
if (
- (entity.HasComponent("Indicator"))
- && (entity != m_LocalPlayer || !entity.IsChildOf(m_LocalPlayer))
+ entity.HasComponent("Indicator")
+ && !entity.IsChildOf(m_LocalPlayer)
&& (entity.HasComponent("Team") || entity.FirstParentWithComponent("Team").Valid())
&& entity.HasComponent("Sprite")
&& m_LocalPlayer.World != nullptr
@@ -110,8 +150,7 @@ bool RenderSystem::isEntityVisible(EntityWrapper& entity)
EntityWrapper entityTeam;
if (!entity.HasComponent("Team")) {
entityTeam = entity.FirstParentWithComponent("Team");
- }
- else {
+ } else {
entityTeam = entity;
}
ComponentWrapper& entityTeamComponent = entityTeam["Team"];