Merge branch 'master' of github.com:Faerbit/swp
This commit is contained in:
commit
c598f0215f
@ -452,7 +452,7 @@
|
|||||||
<yRot>0.0</yRot>
|
<yRot>0.0</yRot>
|
||||||
<zRot>0.0</zRot>
|
<zRot>0.0</zRot>
|
||||||
<scale>1.5</scale>
|
<scale>1.5</scale>
|
||||||
<mass>1.0</mass>
|
<mass>3.0</mass>
|
||||||
</object>
|
</object>
|
||||||
</composition>
|
</composition>
|
||||||
|
|
||||||
|
@ -715,6 +715,7 @@
|
|||||||
</positionConstraint>
|
</positionConstraint>
|
||||||
<trigger>
|
<trigger>
|
||||||
<name>openSecondDoor1</name>
|
<name>openSecondDoor1</name>
|
||||||
|
<undo>false</undo>
|
||||||
<xPosition>-6.5</xPosition>
|
<xPosition>-6.5</xPosition>
|
||||||
<yPosition>22.0</yPosition>
|
<yPosition>22.0</yPosition>
|
||||||
<zPosition>51.5</zPosition>
|
<zPosition>51.5</zPosition>
|
||||||
@ -728,6 +729,22 @@
|
|||||||
<toChangeIdBlue>8</toChangeIdBlue>
|
<toChangeIdBlue>8</toChangeIdBlue>
|
||||||
<toChangeObjNum>0</toChangeObjNum>
|
<toChangeObjNum>0</toChangeObjNum>
|
||||||
</trigger>
|
</trigger>
|
||||||
|
<trigger>
|
||||||
|
<name>openSecondDoor1Undo</name>
|
||||||
|
<undo>true</undo>
|
||||||
|
<xPosition>-6.5</xPosition>
|
||||||
|
<yPosition>22.0</yPosition>
|
||||||
|
<zPosition>51.5</zPosition>
|
||||||
|
<targetIdGreen>-</targetIdGreen>
|
||||||
|
<targetIdBlue>-</targetIdBlue>
|
||||||
|
<distance>0.2</distance>
|
||||||
|
<isBiggerThan>false</isBiggerThan>
|
||||||
|
<objectNum>0</objectNum>
|
||||||
|
<luaScript>openSecondDoor1.lua</luaScript>
|
||||||
|
<toChangeIdGreen>1</toChangeIdGreen>
|
||||||
|
<toChangeIdBlue>8</toChangeIdBlue>
|
||||||
|
<toChangeObjNum>0</toChangeObjNum>
|
||||||
|
</trigger>
|
||||||
</composition>
|
</composition>
|
||||||
|
|
||||||
<composition>
|
<composition>
|
||||||
@ -751,6 +768,7 @@
|
|||||||
</positionConstraint>
|
</positionConstraint>
|
||||||
<trigger>
|
<trigger>
|
||||||
<name>openSecondDoor3</name>
|
<name>openSecondDoor3</name>
|
||||||
|
<undo>false</undo>
|
||||||
<xPosition>-6.5</xPosition>
|
<xPosition>-6.5</xPosition>
|
||||||
<yPosition>22.0</yPosition>
|
<yPosition>22.0</yPosition>
|
||||||
<zPosition>29.5</zPosition>
|
<zPosition>29.5</zPosition>
|
||||||
@ -764,6 +782,22 @@
|
|||||||
<toChangeIdBlue>8</toChangeIdBlue>
|
<toChangeIdBlue>8</toChangeIdBlue>
|
||||||
<toChangeObjNum>0</toChangeObjNum>
|
<toChangeObjNum>0</toChangeObjNum>
|
||||||
</trigger>
|
</trigger>
|
||||||
|
<trigger>
|
||||||
|
<name>openSecondDoor3Undo</name>
|
||||||
|
<undo>true</undo>
|
||||||
|
<xPosition>-6.5</xPosition>
|
||||||
|
<yPosition>22.0</yPosition>
|
||||||
|
<zPosition>29.5</zPosition>
|
||||||
|
<targetIdGreen>-</targetIdGreen>
|
||||||
|
<targetIdBlue>-</targetIdBlue>
|
||||||
|
<distance>0.2</distance>
|
||||||
|
<isBiggerThan>false</isBiggerThan>
|
||||||
|
<objectNum>0</objectNum>
|
||||||
|
<luaScript>openSecondDoor3.lua</luaScript>
|
||||||
|
<toChangeIdGreen>1</toChangeIdGreen>
|
||||||
|
<toChangeIdBlue>8</toChangeIdBlue>
|
||||||
|
<toChangeObjNum>0</toChangeObjNum>
|
||||||
|
</trigger>
|
||||||
</composition>
|
</composition>
|
||||||
|
|
||||||
<composition>
|
<composition>
|
||||||
@ -2411,6 +2445,7 @@
|
|||||||
</positionConstraint>
|
</positionConstraint>
|
||||||
<trigger>
|
<trigger>
|
||||||
<name>openSecondDoor4</name>
|
<name>openSecondDoor4</name>
|
||||||
|
<undo>false</undo>
|
||||||
<xPosition>-53.5</xPosition>
|
<xPosition>-53.5</xPosition>
|
||||||
<yPosition>22.0</yPosition>
|
<yPosition>22.0</yPosition>
|
||||||
<zPosition>51.5</zPosition>
|
<zPosition>51.5</zPosition>
|
||||||
@ -2424,6 +2459,22 @@
|
|||||||
<toChangeIdBlue>8</toChangeIdBlue>
|
<toChangeIdBlue>8</toChangeIdBlue>
|
||||||
<toChangeObjNum>0</toChangeObjNum>
|
<toChangeObjNum>0</toChangeObjNum>
|
||||||
</trigger>
|
</trigger>
|
||||||
|
<trigger>
|
||||||
|
<name>openSecondDoor4Undo</name>
|
||||||
|
<undo>true</undo>
|
||||||
|
<xPosition>-53.5</xPosition>
|
||||||
|
<yPosition>22.0</yPosition>
|
||||||
|
<zPosition>51.5</zPosition>
|
||||||
|
<targetIdGreen>-</targetIdGreen>
|
||||||
|
<targetIdBlue>-</targetIdBlue>
|
||||||
|
<distance>0.2</distance>
|
||||||
|
<isBiggerThan>false</isBiggerThan>
|
||||||
|
<objectNum>0</objectNum>
|
||||||
|
<luaScript>openSecondDoor4.lua</luaScript>
|
||||||
|
<toChangeIdGreen>1</toChangeIdGreen>
|
||||||
|
<toChangeIdBlue>8</toChangeIdBlue>
|
||||||
|
<toChangeObjNum>0</toChangeObjNum>
|
||||||
|
</trigger>
|
||||||
</composition>
|
</composition>
|
||||||
|
|
||||||
<composition>
|
<composition>
|
||||||
@ -2476,6 +2527,7 @@
|
|||||||
</positionConstraint>
|
</positionConstraint>
|
||||||
<trigger>
|
<trigger>
|
||||||
<name>openSecondDoor2</name>
|
<name>openSecondDoor2</name>
|
||||||
|
<undo>false</undo>
|
||||||
<xPosition>-53.5</xPosition>
|
<xPosition>-53.5</xPosition>
|
||||||
<yPosition>22.0</yPosition>
|
<yPosition>22.0</yPosition>
|
||||||
<zPosition>29.5</zPosition>
|
<zPosition>29.5</zPosition>
|
||||||
@ -2489,6 +2541,22 @@
|
|||||||
<toChangeIdBlue>8</toChangeIdBlue>
|
<toChangeIdBlue>8</toChangeIdBlue>
|
||||||
<toChangeObjNum>0</toChangeObjNum>
|
<toChangeObjNum>0</toChangeObjNum>
|
||||||
</trigger>
|
</trigger>
|
||||||
|
<trigger>
|
||||||
|
<name>openSecondDoor2Undo</name>
|
||||||
|
<undo>true</undo>
|
||||||
|
<xPosition>-53.5</xPosition>
|
||||||
|
<yPosition>22.0</yPosition>
|
||||||
|
<zPosition>29.5</zPosition>
|
||||||
|
<targetIdGreen>-</targetIdGreen>
|
||||||
|
<targetIdBlue>-</targetIdBlue>
|
||||||
|
<distance>0.2</distance>
|
||||||
|
<isBiggerThan>false</isBiggerThan>
|
||||||
|
<objectNum>0</objectNum>
|
||||||
|
<luaScript>openSecondDoor2.lua</luaScript>
|
||||||
|
<toChangeIdGreen>1</toChangeIdGreen>
|
||||||
|
<toChangeIdBlue>8</toChangeIdBlue>
|
||||||
|
<toChangeObjNum>0</toChangeObjNum>
|
||||||
|
</trigger>
|
||||||
</composition>
|
</composition>
|
||||||
|
|
||||||
<composition>
|
<composition>
|
||||||
@ -3672,6 +3740,7 @@
|
|||||||
</positionConstraint>
|
</positionConstraint>
|
||||||
<trigger>
|
<trigger>
|
||||||
<name>openThirdDoor</name>
|
<name>openThirdDoor</name>
|
||||||
|
<undo>false</undo>
|
||||||
<xPosition>-161.5</xPosition>
|
<xPosition>-161.5</xPosition>
|
||||||
<yPosition>21.7</yPosition>
|
<yPosition>21.7</yPosition>
|
||||||
<zPosition>67.5</zPosition>
|
<zPosition>67.5</zPosition>
|
||||||
@ -3687,6 +3756,7 @@
|
|||||||
</trigger>
|
</trigger>
|
||||||
<trigger>
|
<trigger>
|
||||||
<name>openThirdDoorUndo</name>
|
<name>openThirdDoorUndo</name>
|
||||||
|
<undo>true</undo>
|
||||||
<xPosition>-161.5</xPosition>
|
<xPosition>-161.5</xPosition>
|
||||||
<yPosition>21.7</yPosition>
|
<yPosition>21.7</yPosition>
|
||||||
<zPosition>67.5</zPosition>
|
<zPosition>67.5</zPosition>
|
||||||
@ -3695,7 +3765,7 @@
|
|||||||
<distance>0.2</distance>
|
<distance>0.2</distance>
|
||||||
<isBiggerThan>false</isBiggerThan>
|
<isBiggerThan>false</isBiggerThan>
|
||||||
<objectNum>0</objectNum>
|
<objectNum>0</objectNum>
|
||||||
<luaScript>openThirdDoorUndo.lua</luaScript>
|
<luaScript>openThirdDoor.lua</luaScript>
|
||||||
<toChangeIdGreen>0</toChangeIdGreen>
|
<toChangeIdGreen>0</toChangeIdGreen>
|
||||||
<toChangeIdBlue>178</toChangeIdBlue>
|
<toChangeIdBlue>178</toChangeIdBlue>
|
||||||
<toChangeObjNum>0</toChangeObjNum>
|
<toChangeObjNum>0</toChangeObjNum>
|
||||||
@ -6159,6 +6229,7 @@
|
|||||||
</positionConstraint>
|
</positionConstraint>
|
||||||
<trigger>
|
<trigger>
|
||||||
<name>openFirstDoor</name>
|
<name>openFirstDoor</name>
|
||||||
|
<undo>false</undo>
|
||||||
<xPosition>17.5</xPosition>
|
<xPosition>17.5</xPosition>
|
||||||
<yPosition>21.8</yPosition>
|
<yPosition>21.8</yPosition>
|
||||||
<zPosition>159.5</zPosition>
|
<zPosition>159.5</zPosition>
|
||||||
@ -6174,6 +6245,7 @@
|
|||||||
</trigger>
|
</trigger>
|
||||||
<trigger>
|
<trigger>
|
||||||
<name>openFirstDoorUndo</name>
|
<name>openFirstDoorUndo</name>
|
||||||
|
<undo>true</undo>
|
||||||
<xPosition>17.5</xPosition>
|
<xPosition>17.5</xPosition>
|
||||||
<yPosition>21.8</yPosition>
|
<yPosition>21.8</yPosition>
|
||||||
<zPosition>159.5</zPosition>
|
<zPosition>159.5</zPosition>
|
||||||
@ -6182,7 +6254,7 @@
|
|||||||
<distance>0.2</distance>
|
<distance>0.2</distance>
|
||||||
<isBiggerThan>false</isBiggerThan>
|
<isBiggerThan>false</isBiggerThan>
|
||||||
<objectNum>0</objectNum>
|
<objectNum>0</objectNum>
|
||||||
<luaScript>openFirstDoorUndo.lua</luaScript>
|
<luaScript>openFirstDoor.lua</luaScript>
|
||||||
<toChangeIdGreen>1</toChangeIdGreen>
|
<toChangeIdGreen>1</toChangeIdGreen>
|
||||||
<toChangeIdBlue>94</toChangeIdBlue>
|
<toChangeIdBlue>94</toChangeIdBlue>
|
||||||
<toChangeObjNum>0</toChangeObjNum>
|
<toChangeObjNum>0</toChangeObjNum>
|
||||||
|
@ -2,6 +2,10 @@ local global = require( "global" )
|
|||||||
if(global.triggeredOpenFirstDoor == nil) then
|
if(global.triggeredOpenFirstDoor == nil) then
|
||||||
global.triggeredOpenFirstDoor = false
|
global.triggeredOpenFirstDoor = false
|
||||||
end
|
end
|
||||||
|
if(global.triggeredOpenFirstDoorUndo == nil) then
|
||||||
|
global.triggeredOpenFirstDoorUndo = true
|
||||||
|
end
|
||||||
|
|
||||||
function trigger(objectToChange)
|
function trigger(objectToChange)
|
||||||
if(global.triggeredOpenFirstDoor == false) then
|
if(global.triggeredOpenFirstDoor == false) then
|
||||||
if(not level) then
|
if(not level) then
|
||||||
@ -21,3 +25,23 @@ function trigger(objectToChange)
|
|||||||
print("openFirstDoor")
|
print("openFirstDoor")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function triggerUndo(objectToChange)
|
||||||
|
if(global.triggeredOpenFirstDoorUndo == false) then
|
||||||
|
if(not level) then
|
||||||
|
print("No level found in Lua!")
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local strength = 100
|
||||||
|
local xPos = 17.5
|
||||||
|
local yPos = 25
|
||||||
|
local zPos = 81.5
|
||||||
|
level:moveObject(objectToChange, strength, xPos, yPos, zPos)
|
||||||
|
|
||||||
|
global.triggeredOpenFirstDoor = false
|
||||||
|
|
||||||
|
global.triggeredOpenFirstDoorUndo = true
|
||||||
|
print("openFirstDoorUndo")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
@ -1,23 +0,0 @@
|
|||||||
local global = require( "global" )
|
|
||||||
if(global.triggeredOpenFirstDoorUndo == nil) then
|
|
||||||
global.triggeredOpenFirstDoorUndo = true
|
|
||||||
end
|
|
||||||
function trigger(objectToChange)
|
|
||||||
if(global.triggeredOpenFirstDoorUndo == false) then
|
|
||||||
if(not level) then
|
|
||||||
print("No level found in Lua!")
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
local strength = 100
|
|
||||||
local xPos = 17.5
|
|
||||||
local yPos = 25
|
|
||||||
local zPos = 81.5
|
|
||||||
level:moveObject(objectToChange, strength, xPos, yPos, zPos)
|
|
||||||
|
|
||||||
global.triggeredOpenFirstDoor = false
|
|
||||||
|
|
||||||
global.triggeredOpenFirstDoorUndo = true
|
|
||||||
print("openFirstDoorUndo")
|
|
||||||
end
|
|
||||||
end
|
|
@ -2,6 +2,10 @@ local global = require( "global" )
|
|||||||
if(global.triggeredOpenSecondDoor1 == nil) then
|
if(global.triggeredOpenSecondDoor1 == nil) then
|
||||||
global.triggeredOpenSecondDoor1 = false
|
global.triggeredOpenSecondDoor1 = false
|
||||||
end
|
end
|
||||||
|
if(global.triggeredOpenSecondDoor1Undo == nil) then
|
||||||
|
global.triggeredOpenSecondDoor1Undo = true
|
||||||
|
end
|
||||||
|
|
||||||
function trigger(objectToChange)
|
function trigger(objectToChange)
|
||||||
if(global.triggeredOpenSecondDoor1 == false) then
|
if(global.triggeredOpenSecondDoor1 == false) then
|
||||||
if(not level) then
|
if(not level) then
|
||||||
@ -25,14 +29,28 @@ function trigger(objectToChange)
|
|||||||
local zPos = 4.5
|
local zPos = 4.5
|
||||||
level:moveObject(objectToChange, strength, xPos, yPos, zPos)
|
level:moveObject(objectToChange, strength, xPos, yPos, zPos)
|
||||||
else
|
else
|
||||||
global.openSecondDoorCounter = 0
|
global.triggeredOpenSecondDoor1Undo = false
|
||||||
global.triggeredOpenSecondDoor1 = false
|
|
||||||
global.triggeredOpenSecondDoor2 = false
|
|
||||||
global.triggeredOpenSecondDoor3 = false
|
|
||||||
global.triggeredOpenSecondDoor4 = false
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
print("openSecondDoor1")
|
print("openSecondDoor1")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function triggerUndo(objectToChange)
|
||||||
|
if(global.triggeredOpenSecondDoor1Undo == false) then
|
||||||
|
if(not level) then
|
||||||
|
print("No level found in Lua!")
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
global.openSecondDoorCounter = 0
|
||||||
|
global.triggeredOpenSecondDoor1 = false
|
||||||
|
global.triggeredOpenSecondDoor2 = false
|
||||||
|
global.triggeredOpenSecondDoor3 = false
|
||||||
|
global.triggeredOpenSecondDoor4 = false
|
||||||
|
|
||||||
|
global.triggeredOpenSecondDoor1Undo = true
|
||||||
|
print("openSecondDoor1Undo")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
@ -2,6 +2,10 @@ local global = require( "global" )
|
|||||||
if(global.triggeredOpenSecondDoor2 == nil) then
|
if(global.triggeredOpenSecondDoor2 == nil) then
|
||||||
global.triggeredOpenSecondDoor2 = false
|
global.triggeredOpenSecondDoor2 = false
|
||||||
end
|
end
|
||||||
|
if(global.triggeredOpenSecondDoor2Undo == nil) then
|
||||||
|
global.triggeredOpenSecondDoor2Undo = true
|
||||||
|
end
|
||||||
|
|
||||||
function trigger(objectToChange)
|
function trigger(objectToChange)
|
||||||
if(global.triggeredOpenSecondDoor2 == false) then
|
if(global.triggeredOpenSecondDoor2 == false) then
|
||||||
if(not level) then
|
if(not level) then
|
||||||
@ -25,14 +29,28 @@ function trigger(objectToChange)
|
|||||||
local zPos = 4.5
|
local zPos = 4.5
|
||||||
level:moveObject(objectToChange, strength, xPos, yPos, zPos)
|
level:moveObject(objectToChange, strength, xPos, yPos, zPos)
|
||||||
else
|
else
|
||||||
global.openSecondDoorCounter = 0
|
global.triggeredOpenSecondDoor2Undo = false
|
||||||
global.triggeredOpenSecondDoor1 = false
|
|
||||||
global.triggeredOpenSecondDoor2 = false
|
|
||||||
global.triggeredOpenSecondDoor3 = false
|
|
||||||
global.triggeredOpenSecondDoor4 = false
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
print("openSecondDoor2")
|
print("openSecondDoor2")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function triggerUndo(objectToChange)
|
||||||
|
if(global.triggeredOpenSecondDoor2Undo == false) then
|
||||||
|
if(not level) then
|
||||||
|
print("No level found in Lua!")
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
global.openSecondDoorCounter = 0
|
||||||
|
global.triggeredOpenSecondDoor1 = false
|
||||||
|
global.triggeredOpenSecondDoor2 = false
|
||||||
|
global.triggeredOpenSecondDoor3 = false
|
||||||
|
global.triggeredOpenSecondDoor4 = false
|
||||||
|
|
||||||
|
global.triggeredOpenSecondDoor2Undo = true
|
||||||
|
print("openSecondDoor2Undo")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
@ -2,6 +2,10 @@ local global = require( "global" )
|
|||||||
if(global.triggeredOpenSecondDoor3 == nil) then
|
if(global.triggeredOpenSecondDoor3 == nil) then
|
||||||
global.triggeredOpenSecondDoor3 = false
|
global.triggeredOpenSecondDoor3 = false
|
||||||
end
|
end
|
||||||
|
if(global.triggeredOpenSecondDoor3Undo == nil) then
|
||||||
|
global.triggeredOpenSecondDoor3Undo = true
|
||||||
|
end
|
||||||
|
|
||||||
function trigger(objectToChange)
|
function trigger(objectToChange)
|
||||||
if(global.triggeredOpenSecondDoor3 == false) then
|
if(global.triggeredOpenSecondDoor3 == false) then
|
||||||
if(not level) then
|
if(not level) then
|
||||||
@ -25,14 +29,28 @@ function trigger(objectToChange)
|
|||||||
local zPos = 4.5
|
local zPos = 4.5
|
||||||
level:moveObject(objectToChange, strength, xPos, yPos, zPos)
|
level:moveObject(objectToChange, strength, xPos, yPos, zPos)
|
||||||
else
|
else
|
||||||
global.openSecondDoorCounter = 0
|
global.triggeredOpenSecondDoor3Undo = false
|
||||||
global.triggeredOpenSecondDoor1 = false
|
|
||||||
global.triggeredOpenSecondDoor2 = false
|
|
||||||
global.triggeredOpenSecondDoor3 = false
|
|
||||||
global.triggeredOpenSecondDoor4 = false
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
print("openSecondDoor3")
|
print("openSecondDoor3")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function triggerUndo(objectToChange)
|
||||||
|
if(global.triggeredOpenSecondDoor3Undo == false) then
|
||||||
|
if(not level) then
|
||||||
|
print("No level found in Lua!")
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
global.openSecondDoorCounter = 0
|
||||||
|
global.triggeredOpenSecondDoor1 = false
|
||||||
|
global.triggeredOpenSecondDoor2 = false
|
||||||
|
global.triggeredOpenSecondDoor3 = false
|
||||||
|
global.triggeredOpenSecondDoor4 = false
|
||||||
|
|
||||||
|
global.triggeredOpenSecondDoor3Undo = true
|
||||||
|
print("openSecondDoor3Undo")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
@ -2,6 +2,10 @@ local global = require( "global" )
|
|||||||
if(global.triggeredOpenSecondDoor4 == nil) then
|
if(global.triggeredOpenSecondDoor4 == nil) then
|
||||||
global.triggeredOpenSecondDoor4 = false
|
global.triggeredOpenSecondDoor4 = false
|
||||||
end
|
end
|
||||||
|
if(global.triggeredOpenSecondDoor4Undo == nil) then
|
||||||
|
global.triggeredOpenSecondDoor4Undo = true
|
||||||
|
end
|
||||||
|
|
||||||
function trigger(objectToChange)
|
function trigger(objectToChange)
|
||||||
if(global.triggeredOpenSecondDoor4 == false) then
|
if(global.triggeredOpenSecondDoor4 == false) then
|
||||||
if(not level) then
|
if(not level) then
|
||||||
@ -25,14 +29,28 @@ function trigger(objectToChange)
|
|||||||
local zPos = 4.5
|
local zPos = 4.5
|
||||||
level:moveObject(objectToChange, strength, xPos, yPos, zPos)
|
level:moveObject(objectToChange, strength, xPos, yPos, zPos)
|
||||||
else
|
else
|
||||||
global.openSecondDoorCounter = 0
|
global.triggeredOpenSecondDoor4Undo = false
|
||||||
global.triggeredOpenSecondDoor1 = false
|
|
||||||
global.triggeredOpenSecondDoor2 = false
|
|
||||||
global.triggeredOpenSecondDoor3 = false
|
|
||||||
global.triggeredOpenSecondDoor4 = false
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
print("openSecondDoor4")
|
print("openSecondDoor4")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function triggerUndo(objectToChange)
|
||||||
|
if(global.triggeredOpenSecondDoor4Undo == false) then
|
||||||
|
if(not level) then
|
||||||
|
print("No level found in Lua!")
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
global.openSecondDoorCounter = 0
|
||||||
|
global.triggeredOpenSecondDoor1 = false
|
||||||
|
global.triggeredOpenSecondDoor2 = false
|
||||||
|
global.triggeredOpenSecondDoor3 = false
|
||||||
|
global.triggeredOpenSecondDoor4 = false
|
||||||
|
|
||||||
|
global.triggeredOpenSecondDoor4Undo = true
|
||||||
|
print("openSecondDoor4Undo")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
@ -2,6 +2,10 @@ local global = require( "global" )
|
|||||||
if(global.triggeredOpenThirdDoor == nil) then
|
if(global.triggeredOpenThirdDoor == nil) then
|
||||||
global.triggeredOpenThirdDoor = false
|
global.triggeredOpenThirdDoor = false
|
||||||
end
|
end
|
||||||
|
if(global.triggeredOpenThirdDoorUndo == nil) then
|
||||||
|
global.triggeredOpenThirdDoorUndo = true
|
||||||
|
end
|
||||||
|
|
||||||
function trigger(objectToChange)
|
function trigger(objectToChange)
|
||||||
if(global.triggeredOpenThirdDoor == false) then
|
if(global.triggeredOpenThirdDoor == false) then
|
||||||
if(not level) then
|
if(not level) then
|
||||||
@ -21,3 +25,23 @@ function trigger(objectToChange)
|
|||||||
print("openThirdDoor")
|
print("openThirdDoor")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function triggerUndo(objectToChange)
|
||||||
|
if(global.triggeredOpenThirdDoorUndo == false) then
|
||||||
|
if(not level) then
|
||||||
|
print("No level found in Lua!")
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local strength = 100
|
||||||
|
local xPos = -172.5
|
||||||
|
local yPos = 25
|
||||||
|
local zPos = 58.5
|
||||||
|
level:moveObject(objectToChange, strength, xPos, yPos, zPos)
|
||||||
|
|
||||||
|
global.triggeredOpenThirdDoor = false
|
||||||
|
|
||||||
|
global.triggeredOpenThirdDoorUndo = true
|
||||||
|
print("openThirdDoorUndo")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
@ -1,23 +0,0 @@
|
|||||||
local global = require( "global" )
|
|
||||||
if(global.triggeredOpenThirdDoorUndo == nil) then
|
|
||||||
global.triggeredOpenThirdDoorUndo = true
|
|
||||||
end
|
|
||||||
function trigger(objectToChange)
|
|
||||||
if(global.triggeredOpenThirdDoorUndo == false) then
|
|
||||||
if(not level) then
|
|
||||||
print("No level found in Lua!")
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
local strength = 100
|
|
||||||
local xPos = -172.5
|
|
||||||
local yPos = 25
|
|
||||||
local zPos = 58.5
|
|
||||||
level:moveObject(objectToChange, strength, xPos, yPos, zPos)
|
|
||||||
|
|
||||||
global.triggeredOpenThirdDoor = false
|
|
||||||
|
|
||||||
global.triggeredOpenThirdDoorUndo = true
|
|
||||||
print("openThirdDoorUndo")
|
|
||||||
end
|
|
||||||
end
|
|
@ -4,7 +4,14 @@ in vec3 fColor;
|
|||||||
|
|
||||||
out vec4 oColor;
|
out vec4 oColor;
|
||||||
|
|
||||||
|
uniform bool withColor;
|
||||||
|
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
oColor = vec4(fColor, 1.0);
|
if (withColor) {
|
||||||
|
oColor = vec4(fColor, 0.6);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
oColor = vec4(0.0, 0.0, 0.0, 0.0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#version 150
|
#version 150
|
||||||
|
|
||||||
uniform mat4 viewProjectionMatrix;
|
uniform mat4 modelViewProjectionMatrix;
|
||||||
uniform float time;
|
uniform float time;
|
||||||
uniform bool bottom;
|
uniform bool bottom;
|
||||||
uniform bool left;
|
uniform bool left;
|
||||||
@ -62,19 +62,19 @@ void main() {
|
|||||||
float rightAngle = PI * 2.0 / resolution * (j+1);
|
float rightAngle = PI * 2.0 / resolution * (j+1);
|
||||||
|
|
||||||
vec4 offset = vec4(cos(rightAngle) * downRadius, i, -sin(rightAngle) * downRadius, 0.0);
|
vec4 offset = vec4(cos(rightAngle) * downRadius, i, -sin(rightAngle) * downRadius, 0.0);
|
||||||
gl_Position = gl_in[0].gl_Position + viewProjectionMatrix * offset;
|
gl_Position = gl_in[0].gl_Position + modelViewProjectionMatrix * offset;
|
||||||
EmitVertex();
|
EmitVertex();
|
||||||
|
|
||||||
offset = vec4(cos(rightAngle) * upRadius, i + step, -sin(rightAngle) * upRadius, 0.0);
|
offset = vec4(cos(rightAngle) * upRadius, i + step, -sin(rightAngle) * upRadius, 0.0);
|
||||||
gl_Position = gl_in[0].gl_Position + viewProjectionMatrix * offset;
|
gl_Position = gl_in[0].gl_Position + modelViewProjectionMatrix * offset;
|
||||||
EmitVertex();
|
EmitVertex();
|
||||||
|
|
||||||
offset = vec4(cos(leftAngle) * downRadius, i, -sin(leftAngle) * downRadius, 0.0);
|
offset = vec4(cos(leftAngle) * downRadius, i, -sin(leftAngle) * downRadius, 0.0);
|
||||||
gl_Position = gl_in[0].gl_Position + viewProjectionMatrix * offset;
|
gl_Position = gl_in[0].gl_Position + modelViewProjectionMatrix * offset;
|
||||||
EmitVertex();
|
EmitVertex();
|
||||||
|
|
||||||
offset = vec4(cos(leftAngle) * upRadius, i + step, -sin(leftAngle) * upRadius, 0.0);
|
offset = vec4(cos(leftAngle) * upRadius, i + step, -sin(leftAngle) * upRadius, 0.0);
|
||||||
gl_Position = gl_in[0].gl_Position + viewProjectionMatrix * offset;
|
gl_Position = gl_in[0].gl_Position + modelViewProjectionMatrix * offset;
|
||||||
EmitVertex();
|
EmitVertex();
|
||||||
|
|
||||||
EndPrimitive();
|
EndPrimitive();
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
in vec2 vTexCoord;
|
in vec2 vTexCoord;
|
||||||
|
|
||||||
uniform sampler2D flame_fbo;
|
|
||||||
uniform sampler2D light_fbo;
|
uniform sampler2D light_fbo;
|
||||||
uniform int windowSizeX;
|
uniform int windowSizeX;
|
||||||
uniform int windowSizeY;
|
uniform int windowSizeY;
|
||||||
@ -12,24 +11,11 @@ out vec4 oColor;
|
|||||||
const float lookup_offset = 4.0;
|
const float lookup_offset = 4.0;
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
vec4 color = texture(flame_fbo, vTexCoord).rgba;
|
|
||||||
if (color == vec4(0.0, 0.0, 0.0, 1.0)) {
|
|
||||||
oColor = texture(light_fbo, vTexCoord).rgba;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
vec4 sum = vec4(0.0);
|
vec4 sum = vec4(0.0);
|
||||||
for(float i = -lookup_offset; i<=lookup_offset; i+=1.0) {
|
for(float i = -lookup_offset; i<=lookup_offset; i+=1.0) {
|
||||||
for(float j = -lookup_offset; j<=lookup_offset; j+=1.0) {
|
for(float j = -lookup_offset; j<=lookup_offset; j+=1.0) {
|
||||||
vec4 flame_pixel = texture(flame_fbo, vec2(vTexCoord.x + i * 1.0/(windowSizeX/2.0), vTexCoord.y + j * 1.0/(windowSizeY/2.0)))/pow(lookup_offset*2+1, 2.0);
|
sum += texture(light_fbo, vec2(vTexCoord.x + i * 1.0/(windowSizeX/2.0), vTexCoord.y + j * 1.0/(windowSizeY/2.0)))/pow(lookup_offset*2+1, 2.0);
|
||||||
vec4 light_pixel = texture(light_fbo, vec2(vTexCoord.x + i * 1.0/(windowSizeX/2.0), vTexCoord.y + j * 1.0/(windowSizeY/2.0)))/pow(lookup_offset*2+1, 2.0);
|
|
||||||
if (flame_pixel == vec4(0.0, 0.0, 0.0, 1.0)) {
|
|
||||||
sum += light_pixel;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
sum += mix(flame_pixel, light_pixel, 0.7);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
oColor = sum;
|
oColor = sum;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
80
graphics.cc
80
graphics.cc
@ -92,8 +92,8 @@ void Graphics::init(Level* level) {
|
|||||||
glGetIntegerv(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, &number_of_texture_units);
|
glGetIntegerv(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, &number_of_texture_units);
|
||||||
printf("Your graphics card supports %d texture units.\n", number_of_texture_units);
|
printf("Your graphics card supports %d texture units.\n", number_of_texture_units);
|
||||||
// Exit if we need more texture units
|
// Exit if we need more texture units
|
||||||
if (number_of_texture_units < 16) {
|
if (number_of_texture_units < 15) {
|
||||||
printf("You need at least 16 texture units to run this application. Exiting\n");
|
printf("You need at least 15 texture units to run this application. Exiting\n");
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -142,28 +142,12 @@ void Graphics::init(Level* level) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
flame_fbo_color_texture = SharedTexture2D(new Texture2D(windowSize, GL_RGBA8));
|
|
||||||
flame_fbo_color_texture->setMinFilter(GL_NEAREST);
|
|
||||||
flame_fbo_color_texture->setMagFilter(GL_NEAREST);
|
|
||||||
flame_fbo_color_texture->setWrapS(GL_CLAMP_TO_BORDER);
|
|
||||||
flame_fbo_color_texture->setWrapT(GL_CLAMP_TO_BORDER);
|
|
||||||
flame_fbo_depth_texture = SharedTexture2D(new Texture2D(windowSize, GL_DEPTH_COMPONENT24));
|
|
||||||
flame_fbo_depth_texture->setMinFilter(GL_NEAREST);
|
|
||||||
flame_fbo_depth_texture->setMagFilter(GL_NEAREST);
|
|
||||||
flame_fbo_depth_texture->setWrapS(GL_CLAMP_TO_BORDER);
|
|
||||||
flame_fbo_depth_texture->setWrapT(GL_CLAMP_TO_BORDER);
|
|
||||||
framebuffer_flames = SharedFrameBufferObject(new FrameBufferObject());
|
|
||||||
framebuffer_flames->attachColorTexture("oColor", flame_fbo_color_texture);
|
|
||||||
framebuffer_flames->setDepthTexture(flame_fbo_depth_texture);
|
|
||||||
framebuffer_flames->setClearColor(glm::vec4(0.0f, 0.0f, 0.0f, 1.0f));
|
|
||||||
framebuffer_flames->validate();
|
|
||||||
|
|
||||||
light_fbo_color_texture = SharedTexture2D(new Texture2D(windowSize, GL_RGBA8));
|
light_fbo_color_texture = SharedTexture2D(new Texture2D(windowSize, GL_RGBA8));
|
||||||
light_fbo_color_texture->setMinFilter(GL_NEAREST);
|
light_fbo_color_texture->setMinFilter(GL_NEAREST);
|
||||||
light_fbo_color_texture->setMagFilter(GL_NEAREST);
|
light_fbo_color_texture->setMagFilter(GL_NEAREST);
|
||||||
light_fbo_color_texture->setWrapS(GL_CLAMP_TO_BORDER);
|
light_fbo_color_texture->setWrapS(GL_CLAMP_TO_BORDER);
|
||||||
light_fbo_color_texture->setWrapT(GL_CLAMP_TO_BORDER);
|
light_fbo_color_texture->setWrapT(GL_CLAMP_TO_BORDER);
|
||||||
light_fbo_depth_texture = SharedTexture2D(new Texture2D(windowSize, GL_DEPTH_COMPONENT24));
|
light_fbo_depth_texture = SharedTexture2D(new Texture2D(windowSize, GL_DEPTH24_STENCIL8));
|
||||||
light_fbo_depth_texture->setMinFilter(GL_NEAREST);
|
light_fbo_depth_texture->setMinFilter(GL_NEAREST);
|
||||||
light_fbo_depth_texture->setMagFilter(GL_NEAREST);
|
light_fbo_depth_texture->setMagFilter(GL_NEAREST);
|
||||||
light_fbo_depth_texture->setWrapS(GL_CLAMP_TO_BORDER);
|
light_fbo_depth_texture->setWrapS(GL_CLAMP_TO_BORDER);
|
||||||
@ -175,8 +159,7 @@ void Graphics::init(Level* level) {
|
|||||||
framebuffer_light->validate();
|
framebuffer_light->validate();
|
||||||
|
|
||||||
flamePostShader->use();
|
flamePostShader->use();
|
||||||
flamePostShader->setTexture("flame_fbo", flame_fbo_color_texture, 15);
|
flamePostShader->setTexture("light_fbo", light_fbo_color_texture, 15);
|
||||||
flamePostShader->setTexture("light_fbo", light_fbo_color_texture, 16);
|
|
||||||
flamePostShader->setUniform("windowSizeX", int(windowSize.x));
|
flamePostShader->setUniform("windowSizeX", int(windowSize.x));
|
||||||
flamePostShader->setUniform("windowSizeY", int(windowSize.y));
|
flamePostShader->setUniform("windowSizeY", int(windowSize.y));
|
||||||
|
|
||||||
@ -294,17 +277,17 @@ void Graphics::render(double time)
|
|||||||
// render the level
|
// render the level
|
||||||
level->render(lightingShader, true, &lightingViewProjectionMatrix, &depthBiasVPs);
|
level->render(lightingShader, true, &lightingViewProjectionMatrix, &depthBiasVPs);
|
||||||
|
|
||||||
|
// draw flames on top
|
||||||
|
flameShader->use();
|
||||||
// cull faces to get consistent color while using alpha
|
// cull faces to get consistent color while using alpha
|
||||||
glEnable(GL_CULL_FACE);
|
glEnable(GL_CULL_FACE);
|
||||||
glCullFace(GL_BACK);
|
glCullFace(GL_BACK);
|
||||||
|
|
||||||
// draw flames on top
|
|
||||||
|
|
||||||
framebuffer_flames->bind();
|
// draw with colors
|
||||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
|
||||||
|
|
||||||
flameShader->use();
|
|
||||||
flameShader->setUniform("viewProjectionMatrix", lightingViewProjectionMatrix);
|
flameShader->setUniform("viewProjectionMatrix", lightingViewProjectionMatrix);
|
||||||
|
flameShader->setUniform("modelViewProjectionMatrix", lightingViewProjectionMatrix);
|
||||||
|
flameShader->setUniform("withColor", true);
|
||||||
flameShader->setUniform("time", (float) time);
|
flameShader->setUniform("time", (float) time);
|
||||||
flameShader->setUniform("bottom", true);
|
flameShader->setUniform("bottom", true);
|
||||||
flameShader->setUniform("left", true);
|
flameShader->setUniform("left", true);
|
||||||
@ -317,13 +300,48 @@ void Graphics::render(double time)
|
|||||||
flameShader->setUniform("left", false);
|
flameShader->setUniform("left", false);
|
||||||
flame_positions->render();
|
flame_positions->render();
|
||||||
|
|
||||||
glDisable(GL_CULL_FACE);
|
glDepthMask(GL_FALSE);
|
||||||
|
|
||||||
glBindFramebuffer(GL_FRAMEBUFFER, 0);
|
// draw slightly larger only for stencil buffer to blur edges
|
||||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
glEnable(GL_STENCIL_TEST);
|
||||||
|
glStencilFunc(GL_ALWAYS, 1, 0xFF); //Set any stencil to 1
|
||||||
|
glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE);
|
||||||
|
glStencilMask(0xFF);//write to stencil buffer
|
||||||
|
glClear(GL_STENCIL_BUFFER_BIT);//clear stencil buffer
|
||||||
|
|
||||||
|
glm::mat4 modelMatrix = glm::scale(glm::vec3(1.1f));
|
||||||
|
flameShader->setUniform("viewProjectionMatrix", lightingViewProjectionMatrix);
|
||||||
|
flameShader->setUniform("modelViewProjectionMatrix", lightingViewProjectionMatrix * modelMatrix);
|
||||||
|
flameShader->setUniform("withColor", false);
|
||||||
|
flameShader->setUniform("time", (float) time);
|
||||||
|
flameShader->setUniform("bottom", true);
|
||||||
|
flameShader->setUniform("left", true);
|
||||||
|
flame_positions->render();
|
||||||
|
flameShader->setUniform("left", false);
|
||||||
|
flame_positions->render();
|
||||||
|
flameShader->setUniform("bottom", false);
|
||||||
|
flameShader->setUniform("left", true);
|
||||||
|
flame_positions->render();
|
||||||
|
flameShader->setUniform("left", false);
|
||||||
|
flame_positions->render();
|
||||||
|
|
||||||
|
glStencilFunc(GL_EQUAL, 1, 0xFF); //Pass test if stencil value is 1
|
||||||
|
glStencilMask(0x00);// don't write to stencil buffer
|
||||||
|
|
||||||
|
glDepthMask(GL_TRUE);
|
||||||
|
glDisable(GL_CULL_FACE);
|
||||||
|
|
||||||
flamePostShader->use();
|
flamePostShader->use();
|
||||||
fullscreen_quad->render();
|
fullscreen_quad->render();
|
||||||
|
|
||||||
|
glDisable(GL_STENCIL_TEST);
|
||||||
|
|
||||||
|
glBindFramebuffer(GL_FRAMEBUFFER, 0);
|
||||||
|
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||||
|
glBindFramebuffer(GL_READ_FRAMEBUFFER, framebuffer_light->getObjectName());
|
||||||
|
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
|
||||||
|
glBlitFramebuffer(0, 0, windowSize.x, windowSize.y, 0, 0, windowSize.x, windowSize.y,
|
||||||
|
GL_COLOR_BUFFER_BIT, GL_NEAREST);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Graphics::compareLightDistances(Light a, Light b) {
|
bool Graphics::compareLightDistances(Light a, Light b) {
|
||||||
@ -406,8 +424,8 @@ void Graphics::resize(glm::uvec2 windowSize) {
|
|||||||
for (unsigned int i = 0; i<depth_directionalMaps.size(); i++) {
|
for (unsigned int i = 0; i<depth_directionalMaps.size(); i++) {
|
||||||
depth_directionalMaps.at(i)->resize(glm::vec2(windowSize.x, windowSize.y));
|
depth_directionalMaps.at(i)->resize(glm::vec2(windowSize.x, windowSize.y));
|
||||||
}
|
}
|
||||||
flame_fbo_color_texture->resize(windowSize);
|
light_fbo_color_texture->resize(windowSize);
|
||||||
flame_fbo_depth_texture->resize(windowSize);
|
light_fbo_depth_texture->resize(windowSize);
|
||||||
flamePostShader->setUniform("windowSizeX", int(windowSize.x));
|
flamePostShader->setUniform("windowSizeX", int(windowSize.x));
|
||||||
flamePostShader->setUniform("windowSizeY", int(windowSize.y));
|
flamePostShader->setUniform("windowSizeY", int(windowSize.y));
|
||||||
}
|
}
|
||||||
|
@ -39,9 +39,6 @@ class Graphics {
|
|||||||
std::vector<SharedFrameBufferObject> framebuffer_directional;
|
std::vector<SharedFrameBufferObject> framebuffer_directional;
|
||||||
std::vector<SharedTextureCubeMap> depth_cubeMaps;
|
std::vector<SharedTextureCubeMap> depth_cubeMaps;
|
||||||
SharedFrameBufferObject framebuffer_cube;
|
SharedFrameBufferObject framebuffer_cube;
|
||||||
SharedFrameBufferObject framebuffer_flames;
|
|
||||||
SharedTexture2D flame_fbo_color_texture;
|
|
||||||
SharedTexture2D flame_fbo_depth_texture;
|
|
||||||
SharedFrameBufferObject framebuffer_light;
|
SharedFrameBufferObject framebuffer_light;
|
||||||
SharedTexture2D light_fbo_color_texture;
|
SharedTexture2D light_fbo_color_texture;
|
||||||
SharedTexture2D light_fbo_depth_texture;
|
SharedTexture2D light_fbo_depth_texture;
|
||||||
|
@ -325,6 +325,7 @@ void Loader::load(std::string filePath, Level* level, std::string compositionsPa
|
|||||||
float xPos = queryFloat(xmlTrigger, "xPosition");
|
float xPos = queryFloat(xmlTrigger, "xPosition");
|
||||||
float yPos = queryFloat(xmlTrigger, "yPosition");
|
float yPos = queryFloat(xmlTrigger, "yPosition");
|
||||||
float zPos = queryFloat(xmlTrigger, "zPosition");
|
float zPos = queryFloat(xmlTrigger, "zPosition");
|
||||||
|
bool undo = queryBool(xmlTrigger, "undo");
|
||||||
glm::vec3 position = glm::vec3(xPos, yPos, zPos);
|
glm::vec3 position = glm::vec3(xPos, yPos, zPos);
|
||||||
std::string stringTarget = queryString(xmlTrigger, "targetIdGreen");
|
std::string stringTarget = queryString(xmlTrigger, "targetIdGreen");
|
||||||
if (stringTarget.compare("-") != 0){
|
if (stringTarget.compare("-") != 0){
|
||||||
@ -381,7 +382,7 @@ void Loader::load(std::string filePath, Level* level, std::string compositionsPa
|
|||||||
printf("No Identifier found for an object that was to be changed by a trigger.\n");
|
printf("No Identifier found for an object that was to be changed by a trigger.\n");
|
||||||
}
|
}
|
||||||
if (object != 0) {
|
if (object != 0) {
|
||||||
Trigger trigger = Trigger(position, distance, isBigger, object, luaScript, level->getLuaState(), objectToChange, scriptPath);
|
Trigger trigger = Trigger(position, distance, isBigger, object, luaScript, level->getLuaState(), objectToChange, scriptPath, undo);
|
||||||
level->addTrigger(trigger);
|
level->addTrigger(trigger);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
11
trigger.cc
11
trigger.cc
@ -1,7 +1,7 @@
|
|||||||
#include "trigger.hh"
|
#include "trigger.hh"
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
|
|
||||||
Trigger::Trigger(glm::vec3 position, float distance, bool isBigger, Object* object, std::string luaScript, lua_State* luaState, int objectToChange, std::string scriptPath) {
|
Trigger::Trigger(glm::vec3 position, float distance, bool isBigger, Object* object, std::string luaScript, lua_State* luaState, int objectToChange, std::string scriptPath, bool undo) {
|
||||||
this->position=position;
|
this->position=position;
|
||||||
this->distance=distance;
|
this->distance=distance;
|
||||||
this->isBigger=isBigger;
|
this->isBigger=isBigger;
|
||||||
@ -17,6 +17,7 @@ Trigger::Trigger(glm::vec3 position, float distance, bool isBigger, Object* obje
|
|||||||
printf("The Lua state is NULL in trigger!\n");
|
printf("The Lua state is NULL in trigger!\n");
|
||||||
}
|
}
|
||||||
this->objectToChange = objectToChange;
|
this->objectToChange = objectToChange;
|
||||||
|
this->undo = undo;
|
||||||
}
|
}
|
||||||
|
|
||||||
Trigger::Trigger(){
|
Trigger::Trigger(){
|
||||||
@ -28,12 +29,20 @@ Trigger::~Trigger(){
|
|||||||
void Trigger::triggerUpdate(){
|
void Trigger::triggerUpdate(){
|
||||||
if (isBigger && (glm::distance(object->getPosition(), position) > distance)) {
|
if (isBigger && (glm::distance(object->getPosition(), position) > distance)) {
|
||||||
luaL_dofile(luaState, luaScript.c_str());
|
luaL_dofile(luaState, luaScript.c_str());
|
||||||
|
if (undo){
|
||||||
|
luabridge::getGlobal(luaState, "triggerUndo")(objectToChange);
|
||||||
|
}else{
|
||||||
luabridge::getGlobal(luaState, "trigger")(objectToChange);
|
luabridge::getGlobal(luaState, "trigger")(objectToChange);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else if (!isBigger && (glm::distance(object->getPosition(), position) < distance)) {
|
else if (!isBigger && (glm::distance(object->getPosition(), position) < distance)) {
|
||||||
luaL_dofile(luaState, luaScript.c_str());
|
luaL_dofile(luaState, luaScript.c_str());
|
||||||
|
if (undo){
|
||||||
|
luabridge::getGlobal(luaState, "triggerUndo")(objectToChange);
|
||||||
|
}else{
|
||||||
luabridge::getGlobal(luaState, "trigger")(objectToChange);
|
luabridge::getGlobal(luaState, "trigger")(objectToChange);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Trigger::deleteNotification(int deletedObjectIndex){
|
bool Trigger::deleteNotification(int deletedObjectIndex){
|
||||||
|
@ -14,7 +14,7 @@ class Level;
|
|||||||
|
|
||||||
class Trigger {
|
class Trigger {
|
||||||
public:
|
public:
|
||||||
Trigger(glm::vec3 position, float distance, bool isBigger, Object* object, std::string luaScript, lua_State* L, int objectToChange, std::string scriptPath);
|
Trigger(glm::vec3 position, float distance, bool isBigger, Object* object, std::string luaScript, lua_State* L, int objectToChange, std::string scriptPath, bool undo);
|
||||||
Trigger();
|
Trigger();
|
||||||
~Trigger();
|
~Trigger();
|
||||||
void triggerUpdate();
|
void triggerUpdate();
|
||||||
@ -27,6 +27,7 @@ class Trigger {
|
|||||||
std::string luaScript;
|
std::string luaScript;
|
||||||
lua_State* luaState;
|
lua_State* luaState;
|
||||||
int objectToChange;
|
int objectToChange;
|
||||||
|
bool undo;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user