Added RadialJitter("rj") to EasyMesh parser.legacy
@@ -114,6 +114,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Benlitz", "Benlitz", "{B583 | |||||
EndProject | EndProject | ||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "benlitzTest1", "..\..\people\benlitz\test1\benlitzTest1.vcxproj", "{FAF82AD2-D9F4-4694-9A01-103BC5B771B4}" | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "benlitzTest1", "..\..\people\benlitz\test1\benlitzTest1.vcxproj", "{FAF82AD2-D9F4-4694-9A01-103BC5B771B4}" | ||||
EndProject | EndProject | ||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MeshViewer", "..\..\test\MeshViewer.vcxproj", "{7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E}" | |||||
EndProject | |||||
Global | Global | ||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution | GlobalSection(SolutionConfigurationPlatforms) = preSolution | ||||
Debug|Any CPU = Debug|Any CPU | Debug|Any CPU = Debug|Any CPU | ||||
@@ -617,6 +619,24 @@ Global | |||||
{FAF82AD2-D9F4-4694-9A01-103BC5B771B4}.Release|x64.ActiveCfg = Release|x64 | {FAF82AD2-D9F4-4694-9A01-103BC5B771B4}.Release|x64.ActiveCfg = Release|x64 | ||||
{FAF82AD2-D9F4-4694-9A01-103BC5B771B4}.Release|x64.Build.0 = Release|x64 | {FAF82AD2-D9F4-4694-9A01-103BC5B771B4}.Release|x64.Build.0 = Release|x64 | ||||
{FAF82AD2-D9F4-4694-9A01-103BC5B771B4}.Release|Xbox 360.ActiveCfg = Release|x64 | {FAF82AD2-D9F4-4694-9A01-103BC5B771B4}.Release|Xbox 360.ActiveCfg = Release|x64 | ||||
{7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E}.Debug|Any CPU.ActiveCfg = Debug|x64 | |||||
{7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 | |||||
{7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E}.Debug|Mixed Platforms.Build.0 = Debug|x64 | |||||
{7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E}.Debug|PS3.ActiveCfg = Debug|x64 | |||||
{7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E}.Debug|Win32.ActiveCfg = Debug|Win32 | |||||
{7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E}.Debug|Win32.Build.0 = Debug|Win32 | |||||
{7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E}.Debug|x64.ActiveCfg = Debug|x64 | |||||
{7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E}.Debug|x64.Build.0 = Debug|x64 | |||||
{7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E}.Debug|Xbox 360.ActiveCfg = Debug|x64 | |||||
{7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E}.Release|Any CPU.ActiveCfg = Release|x64 | |||||
{7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E}.Release|Mixed Platforms.ActiveCfg = Release|x64 | |||||
{7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E}.Release|Mixed Platforms.Build.0 = Release|x64 | |||||
{7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E}.Release|PS3.ActiveCfg = Release|x64 | |||||
{7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E}.Release|Win32.ActiveCfg = Release|Win32 | |||||
{7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E}.Release|Win32.Build.0 = Release|Win32 | |||||
{7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E}.Release|x64.ActiveCfg = Release|x64 | |||||
{7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E}.Release|x64.Build.0 = Release|x64 | |||||
{7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E}.Release|Xbox 360.ActiveCfg = Release|x64 | |||||
EndGlobalSection | EndGlobalSection | ||||
GlobalSection(SolutionProperties) = preSolution | GlobalSection(SolutionProperties) = preSolution | ||||
HideSolutionNode = FALSE | HideSolutionNode = FALSE | ||||
@@ -638,6 +658,7 @@ Global | |||||
{B1E10086-A1DA-401A-834D-969C9DBB5CC1} = {E0491194-35E3-4513-9D31-608EA3165ECF} | {B1E10086-A1DA-401A-834D-969C9DBB5CC1} = {E0491194-35E3-4513-9D31-608EA3165ECF} | ||||
{80F81C11-8DA2-4990-91CB-9807783BA46E} = {E0491194-35E3-4513-9D31-608EA3165ECF} | {80F81C11-8DA2-4990-91CB-9807783BA46E} = {E0491194-35E3-4513-9D31-608EA3165ECF} | ||||
{EE203B88-44CF-4859-9D42-7A1F43FECB52} = {E0491194-35E3-4513-9D31-608EA3165ECF} | {EE203B88-44CF-4859-9D42-7A1F43FECB52} = {E0491194-35E3-4513-9D31-608EA3165ECF} | ||||
{7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E} = {E0491194-35E3-4513-9D31-608EA3165ECF} | |||||
{B92ABADC-45BE-4CC5-B724-9426053123A1} = {E74CF679-CA2A-47E9-B1F4-3779D6AC6B04} | {B92ABADC-45BE-4CC5-B724-9426053123A1} = {E74CF679-CA2A-47E9-B1F4-3779D6AC6B04} | ||||
{7B083DA2-FE08-4F6D-BFDD-195D5C2783EB} = {E74CF679-CA2A-47E9-B1F4-3779D6AC6B04} | {7B083DA2-FE08-4F6D-BFDD-195D5C2783EB} = {E74CF679-CA2A-47E9-B1F4-3779D6AC6B04} | ||||
{1C5B8702-290C-42DA-AA9E-671348F5B747} = {E74CF679-CA2A-47E9-B1F4-3779D6AC6B04} | {1C5B8702-290C-42DA-AA9E-671348F5B747} = {E74CF679-CA2A-47E9-B1F4-3779D6AC6B04} | ||||
@@ -87,6 +87,12 @@ mat4 const &Camera::GetProjMatrix() | |||||
return m_proj_matrix; | return m_proj_matrix; | ||||
} | } | ||||
void Camera::ForceSceneUpdate() | |||||
{ | |||||
Scene::GetDefault()->SetViewMatrix(m_view_matrix); | |||||
Scene::GetDefault()->SetProjMatrix(m_proj_matrix); | |||||
} | |||||
void Camera::TickGame(float seconds) | void Camera::TickGame(float seconds) | ||||
{ | { | ||||
WorldEntity::TickGame(seconds); | WorldEntity::TickGame(seconds); | ||||
@@ -124,8 +130,7 @@ void Camera::TickDraw(float seconds) | |||||
{ | { | ||||
WorldEntity::TickDraw(seconds); | WorldEntity::TickDraw(seconds); | ||||
Scene::GetDefault()->SetViewMatrix(m_view_matrix); | |||||
Scene::GetDefault()->SetProjMatrix(m_proj_matrix); | |||||
ForceSceneUpdate(); | |||||
} | } | ||||
} /* namespace lol */ | } /* namespace lol */ | ||||
@@ -40,6 +40,7 @@ public: | |||||
mat4 const &GetViewMatrix(); | mat4 const &GetViewMatrix(); | ||||
mat4 const &GetProjMatrix(); | mat4 const &GetProjMatrix(); | ||||
void ForceSceneUpdate(); | |||||
protected: | protected: | ||||
virtual void TickGame(float seconds); | virtual void TickGame(float seconds); | ||||
@@ -47,7 +47,7 @@ | |||||
%token T_TRANSLATEX T_ROTATEX T_TAPERX T_SCALEX T_MIRRORX | %token T_TRANSLATEX T_ROTATEX T_TAPERX T_SCALEX T_MIRRORX | ||||
%token T_TRANSLATEY T_ROTATEY T_TAPERY T_SCALEY T_MIRRORY | %token T_TRANSLATEY T_ROTATEY T_TAPERY T_SCALEY T_MIRRORY | ||||
%token T_TRANSLATEZ T_ROTATEZ T_TAPERZ T_SCALEZ T_MIRRORZ | %token T_TRANSLATEZ T_ROTATEZ T_TAPERZ T_SCALEZ T_MIRRORZ | ||||
%token T_TRANSLATE T_SCALE T_TOGGLESCALEWINDING | |||||
%token T_TRANSLATE T_SCALE T_TOGGLESCALEWINDING T_RADIALJITTER | |||||
%token T_CSGUNION T_CSGSUBSTRACT T_CSGAND T_CSGXOR | %token T_CSGUNION T_CSGSUBSTRACT T_CSGAND T_CSGXOR | ||||
%token T_CHAMFER | %token T_CHAMFER | ||||
@@ -135,6 +135,7 @@ transform_command: | |||||
| T_MIRRORX { mc.m_mesh.MirrorX(); } | | T_MIRRORX { mc.m_mesh.MirrorX(); } | ||||
| T_MIRRORY { mc.m_mesh.MirrorY(); } | | T_MIRRORY { mc.m_mesh.MirrorY(); } | ||||
| T_MIRRORZ { mc.m_mesh.MirrorZ(); } | | T_MIRRORZ { mc.m_mesh.MirrorZ(); } | ||||
| T_RADIALJITTER args1 { mc.m_mesh.RadialJitter($2.f0); } | |||||
| T_TOGGLESCALEWINDING { mc.m_mesh.ToggleScaleWinding(); } | | T_TOGGLESCALEWINDING { mc.m_mesh.ToggleScaleWinding(); } | ||||
| T_CSGUNION { mc.m_mesh.CsgUnion(); } | | T_CSGUNION { mc.m_mesh.CsgUnion(); } | ||||
| T_CSGSUBSTRACT { mc.m_mesh.CsgSubstract(); } | | T_CSGSUBSTRACT { mc.m_mesh.CsgSubstract(); } | ||||
@@ -66,10 +66,11 @@ sx { return token::T_SCALEX; } | |||||
sy { return token::T_SCALEY; } | sy { return token::T_SCALEY; } | ||||
sz { return token::T_SCALEZ; } | sz { return token::T_SCALEZ; } | ||||
s { return token::T_SCALE; } | s { return token::T_SCALE; } | ||||
tsw { return token::T_TOGGLESCALEWINDING; } | |||||
tsw { return token::T_TOGGLESCALEWINDING; } | |||||
mx { return token::T_MIRRORX; } | mx { return token::T_MIRRORX; } | ||||
my { return token::T_MIRRORY; } | my { return token::T_MIRRORY; } | ||||
mz { return token::T_MIRRORZ; } | mz { return token::T_MIRRORZ; } | ||||
rj { return token::T_RADIALJITTER; } | |||||
csgu { return token::T_CSGUNION; } | csgu { return token::T_CSGUNION; } | ||||
csgs { return token::T_CSGSUBSTRACT; } | csgs { return token::T_CSGSUBSTRACT; } | ||||
@@ -105,6 +105,11 @@ public: | |||||
void AppendCog(int nbsides, float h, float r10, float r20, float r1, | void AppendCog(int nbsides, float h, float r10, float r20, float r1, | ||||
float r2, float r12, float r22, float sidemul, int offset); | float r2, float r12, float r22, float sidemul, int offset); | ||||
//Convenience functions | |||||
public: | |||||
int GetVertexCount() { return m_vert.Count(); } | |||||
vec3 const &GetVertexLocation(int i) { return m_vert[i].m1; } | |||||
private: | private: | ||||
vec4 m_color, m_color2; | vec4 m_color, m_color2; | ||||
Array<uint16_t> m_indices; | Array<uint16_t> m_indices; | ||||
@@ -10,7 +10,7 @@ bench: benchsuite$(EXEEXT) | |||||
EXTRA_DIST = data/gradient.png | EXTRA_DIST = data/gradient.png | ||||
noinst_PROGRAMS = benchsuite $(testsuite) btphystest | |||||
noinst_PROGRAMS = benchsuite $(testsuite) btphystest MeshViewer | |||||
TESTS = $(testsuite) | TESTS = $(testsuite) | ||||
@@ -49,3 +49,8 @@ btphystest_CPPFLAGS = @LOL_CFLAGS@ -I$(top_srcdir)/src/bullet \ | |||||
btphystest_LDFLAGS = $(top_builddir)/src/liblol.a @LOL_LIBS@ | btphystest_LDFLAGS = $(top_builddir)/src/liblol.a @LOL_LIBS@ | ||||
btphystest_DEPENDENCIES = $(top_builddir)/src/liblol.a | btphystest_DEPENDENCIES = $(top_builddir)/src/liblol.a | ||||
MeshViewer_SOURCES = MeshViewer.cpp | |||||
MeshViewer_CPPFLAGS = @LOL_CFLAGS@ | |||||
MeshViewer_LDFLAGS = $(top_builddir)/src/liblol.a @LOL_LIBS@ | |||||
MeshViewer_DEPENDENCIES = $(top_builddir)/src/liblol.a | |||||
@@ -0,0 +1,168 @@ | |||||
// | |||||
// Lol Engine - EasyMesh tutorial | |||||
// | |||||
// Copyright: (c) 2011-2013 Sam Hocevar <sam@hocevar.net> | |||||
// (c) 2012-2013 Benjamin "Touky" Huet <huet.benjamin@gmail.com> | |||||
// This program is free software; you can redistribute it and/or | |||||
// modify it under the terms of the Do What The Fuck You Want To | |||||
// Public License, Version 2, as published by Sam Hocevar. See | |||||
// http://www.wtfpl.net/ for more details. | |||||
// | |||||
#if defined HAVE_CONFIG_H | |||||
# include "config.h" | |||||
#endif | |||||
#include "core.h" | |||||
using namespace std; | |||||
using namespace lol; | |||||
#define MESH_DIST 5.0f | |||||
class MeshViewer : public WorldEntity | |||||
{ | |||||
public: | |||||
MeshViewer() | |||||
{ | |||||
int i=10; | |||||
while (i--) | |||||
{ | |||||
m_meshes.Push(EasyMesh()); | |||||
m_meshes.Last().Compile("[sc#0f0 ab 2 2 2 t .8 .8 .8 rx 20 ry 20 [sc#00f ab 2 2 2 tx 0 csgu]]"); | |||||
} | |||||
m_angle = 0; | |||||
m_camera = new Camera(vec3(0.f, 600.f, 0.f), | |||||
vec3(0.f, 0.f, 0.f), | |||||
vec3(0, 1, 0)); | |||||
m_camera->SetPerspective(60.f, 16, 9, .1f, 1000.f); | |||||
m_camera->SetTarget(vec3(0.f, 0.f, 0.f)); | |||||
m_camera->SetPosition(vec3(0.f, 0.f, 5.f)); | |||||
m_camera->ForceSceneUpdate(); | |||||
Ticker::Ref(m_camera); | |||||
min_pos = vec3(FLT_MAX); | |||||
max_pos = vec3(-FLT_MAX); | |||||
m_ready = false; | |||||
} | |||||
~MeshViewer() | |||||
{ | |||||
Ticker::Unref(m_camera); | |||||
} | |||||
virtual void TickGame(float seconds) | |||||
{ | |||||
WorldEntity::TickGame(seconds); | |||||
//vec4 vertex = in_ModelView * vec4(in_Vertex, 1.0); | |||||
// gl_Position = in_Proj * vertex; | |||||
m_angle += seconds * 70.0f; | |||||
m_mat = mat4::rotate(m_angle, vec3(0, 1, 0)); | |||||
//mat4 screen_matrix = Scene::GetDefault()->GetProjMatrix() * Scene::GetDefault()->GetViewMatrix(); | |||||
mat4 world_view_matrix = m_camera->GetViewMatrix() * m_mat; | |||||
mat4 world_screen_matrix = m_camera->GetProjMatrix() * world_view_matrix; | |||||
mat4 view_world_matrix = inverse(m_camera->GetViewMatrix()); | |||||
mat4 screen_view_matrix = inverse(m_camera->GetProjMatrix()); | |||||
vec4 a(0, 2, 0, 1.0f); | |||||
vec4 b(0,-2, 0, 1.0f); | |||||
vec4 c(0, 0, -2, 1.0f); | |||||
vec4 d(-1, -1, 1, 1.0f); | |||||
//vec2 toto; | |||||
//near plane : vec4(toto, 1.f, 1.f); | |||||
//far plane : vec4(toto, -1.f, 1.f); | |||||
a = vec4((world_screen_matrix * a).xyz / a.w, a.w); | |||||
b = vec4((world_screen_matrix * b).xyz / b.w, b.w); | |||||
c = vec4((inverse(world_screen_matrix) * c).xyz / c.w, c.w); | |||||
d = vec4((inverse(world_screen_matrix) * d).xyz / d.w, d.w); | |||||
a = b; | |||||
c = d; | |||||
//this is the algorithm for a camera that must keep n target in the screen | |||||
{ | |||||
//Get the Min/Max needed | |||||
vec3 new_min_pos(FLT_MAX); | |||||
vec3 new_max_pos(-FLT_MAX); | |||||
for (int i = 0; i < m_meshes.Last().GetVertexCount(); i++) | |||||
{ | |||||
vec4 vpos = world_view_matrix * vec4(m_meshes.Last().GetVertexLocation(i), 1.0f); | |||||
new_min_pos = min(vpos.xyz, new_min_pos); | |||||
new_max_pos = max(vpos.xyz, new_max_pos); | |||||
} | |||||
//Actual camera algorithm | |||||
{ | |||||
vec4 BottomLeft = m_camera->GetProjMatrix() * vec4(new_min_pos.xy, new_min_pos.z, 1.0f); | |||||
vec4 TopRight = m_camera->GetProjMatrix() * vec4(new_max_pos.xy, new_min_pos.z, 1.0f); | |||||
BottomLeft = vec4(BottomLeft.xyz / BottomLeft.w, BottomLeft.w); | |||||
TopRight = vec4(TopRight.xyz / TopRight.w, TopRight.w); | |||||
//vec2 NewSize = TopRight.xy - BottomLeft.xy; | |||||
//NewSize.x = max(NewSize.x, NewSize.y) * 1.5f; | |||||
vec4 DistantPoint = screen_view_matrix * vec4(vec2(1.0f, 1.0f), TopRight.z * TopRight.w, TopRight.w); | |||||
vec3 vcenter = vec3(new_min_pos.xy + new_max_pos.xy, .0f) * .5f; | |||||
vec4 new_pos = screen_view_matrix * vec4(.0f, .0f, new_min_pos.z, 1.0f); | |||||
//vcenter.z += (new_pos.z - new_pos.z * NewSize.x); | |||||
vcenter = (view_world_matrix * vec4(vcenter, 1.0f)).xyz; | |||||
m_camera->SetPosition(damp(m_camera->GetPosition(), vcenter, 0.4f, seconds)); | |||||
//m_camera->SetPosition(vcenter); | |||||
m_camera->SetTarget(m_camera->GetPosition() + vec3(0, 0, -5.0f)); | |||||
} | |||||
// | |||||
} | |||||
} | |||||
virtual void TickDraw(float seconds) | |||||
{ | |||||
WorldEntity::TickDraw(seconds); | |||||
if (!m_ready) | |||||
{ | |||||
for (int i = 0; i < m_meshes.Count(); i++) | |||||
m_meshes[i].MeshConvert(); | |||||
m_ready = true; | |||||
} | |||||
Video::SetClearColor(vec4(0.0f, 0.0f, 0.0f, 1.0f)); | |||||
m_mat = mat4::translate(vec3(m_meshes.Count() * MESH_DIST * 0.5f, 0, m_meshes.Count() * MESH_DIST) * -1.0f) * m_mat; | |||||
for (int i = 0; i < m_meshes.Count(); i++) | |||||
{ | |||||
m_mat = mat4::translate(vec3(MESH_DIST * 0.5f, 0, MESH_DIST)) * m_mat; | |||||
m_meshes[i].Render(m_mat); | |||||
Video::Clear(ClearMask::Depth); | |||||
} | |||||
//m_mat = mat4::translate(vec3(.0f)); | |||||
//m_meshes.Last().Render(m_mat); | |||||
} | |||||
private: | |||||
//Array<EasyMesh, mat4, float> m_gears; | |||||
float m_angle; | |||||
mat4 m_mat; | |||||
vec3 min_pos; | |||||
vec3 max_pos; | |||||
Array<EasyMesh> m_meshes; | |||||
Camera *m_camera; | |||||
bool m_ready; | |||||
}; | |||||
int main(int argc, char **argv) | |||||
{ | |||||
System::Init(argc, argv); | |||||
Application app("MeshViewer", ivec2(960, 600), 60.0f); | |||||
new MeshViewer(); | |||||
app.Run(); | |||||
return EXIT_SUCCESS; | |||||
} | |||||
@@ -0,0 +1,65 @@ | |||||
<?xml version="1.0" encoding="utf-8"?> | |||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | |||||
<ItemGroup Label="ProjectConfigurations"> | |||||
<ProjectConfiguration Include="Debug|PS3"> | |||||
<Configuration>Debug</Configuration> | |||||
<Platform>PS3</Platform> | |||||
</ProjectConfiguration> | |||||
<ProjectConfiguration Include="Debug|Win32"> | |||||
<Configuration>Debug</Configuration> | |||||
<Platform>Win32</Platform> | |||||
</ProjectConfiguration> | |||||
<ProjectConfiguration Include="Debug|x64"> | |||||
<Configuration>Debug</Configuration> | |||||
<Platform>x64</Platform> | |||||
</ProjectConfiguration> | |||||
<ProjectConfiguration Include="Debug|Xbox 360"> | |||||
<Configuration>Debug</Configuration> | |||||
<Platform>Xbox 360</Platform> | |||||
</ProjectConfiguration> | |||||
<ProjectConfiguration Include="Release|PS3"> | |||||
<Configuration>Release</Configuration> | |||||
<Platform>PS3</Platform> | |||||
</ProjectConfiguration> | |||||
<ProjectConfiguration Include="Release|Win32"> | |||||
<Configuration>Release</Configuration> | |||||
<Platform>Win32</Platform> | |||||
</ProjectConfiguration> | |||||
<ProjectConfiguration Include="Release|x64"> | |||||
<Configuration>Release</Configuration> | |||||
<Platform>x64</Platform> | |||||
</ProjectConfiguration> | |||||
<ProjectConfiguration Include="Release|Xbox 360"> | |||||
<Configuration>Release</Configuration> | |||||
<Platform>Xbox 360</Platform> | |||||
</ProjectConfiguration> | |||||
</ItemGroup> | |||||
<ItemGroup> | |||||
<ClCompile Include="MeshViewer.cpp" /> | |||||
</ItemGroup> | |||||
<ItemGroup> | |||||
<ProjectReference Include="$(SolutionDir)\..\..\src\lolcore.vcxproj"> | |||||
<Project>{9e62f2fe-3408-4eae-8238-fd84238ceeda}</Project> | |||||
</ProjectReference> | |||||
</ItemGroup> | |||||
<PropertyGroup Label="Globals"> | |||||
<ProjectGuid>{7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E}</ProjectGuid> | |||||
<ConfigurationType>Application</ConfigurationType> | |||||
<Keyword>Win32Proj</Keyword> | |||||
</PropertyGroup> | |||||
<Import Project="$(SolutionDir)\Lol.Core.Config.props" /> | |||||
<ImportGroup Label="ExtensionSettings"> | |||||
<Import Project="$(SolutionDir)\Lol.Fx.props" /> | |||||
</ImportGroup> | |||||
<ImportGroup Label="PropertySheets"> | |||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> | |||||
<Import Project="$(SolutionDir)\Lol.Core.Vars.props" /> | |||||
</ImportGroup> | |||||
<PropertyGroup Label="UserMacros" /> | |||||
<Import Project="$(SolutionDir)\Lol.Core.Rules.props" /> | |||||
<ItemDefinitionGroup /> | |||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> | |||||
<ImportGroup Label="ExtensionTargets"> | |||||
<Import Project="$(SolutionDir)\Lol.Fx.targets" /> | |||||
</ImportGroup> | |||||
</Project> |