Skip to content

Commit

Permalink
fixed bug when trying to autosave whilst loading file. Transform outp…
Browse files Browse the repository at this point in the history
…uts more data. example updates
  • Loading branch information
elliotwoods committed Sep 11, 2012
1 parent 8830b3e commit b3c349d
Show file tree
Hide file tree
Showing 9 changed files with 294 additions and 81 deletions.
1 change: 1 addition & 0 deletions CorrespondencesMappingDatabase.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@
<Compile Include="Nodes\IReadsDatabase.cs" />
<Compile Include="Nodes\NextBoardIndex.cs" />
<Compile Include="Nodes\ProjectorSet.cs" />
<Compile Include="Nodes\Transform.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Nodes\Select.cs" />
</ItemGroup>
Expand Down
24 changes: 16 additions & 8 deletions Lib/Database.cs
Original file line number Diff line number Diff line change
Expand Up @@ -41,15 +41,14 @@ public void Load()
{
try
{
Database loaded;
Stream stream = File.Open(FFilename, FileMode.Open);
var stream = File.Open(FFilename, FileMode.Open, FileAccess.Read);
try
{
BinaryFormatter binaryFormatter = new BinaryFormatter();
FProjectors = (Dictionary<int, Projector>)binaryFormatter.Deserialize(stream);

this.Status = "Loaded " + this.FProjectors.Count + " projectors.";
this.OnUpdate();
this.OnUpdateWithoutAutoSave();
}
catch (Exception e)
{
Expand All @@ -70,7 +69,12 @@ public void Save()
{
try
{
Stream stream = File.Open(FFilename, FileMode.Create);
FileStream stream;
if (File.Exists(FFilename))
stream = File.Open(FFilename, FileMode.Truncate, FileAccess.Write);
else
stream = File.Open(FFilename, FileMode.Create, FileAccess.Write);

try
{
BinaryFormatter bFormatter = new BinaryFormatter();
Expand Down Expand Up @@ -105,14 +109,18 @@ public bool AutoSave

public void OnUpdate()
{
if (Update == null)
return;
Update(this, EventArgs.Empty);

OnUpdateWithoutAutoSave();
if (FAutoSave)
Save();
}

public void OnUpdateWithoutAutoSave()
{
if (Update == null)
return;
Update(this, EventArgs.Empty);
}

public event EventHandler Update;

/// <summary>
Expand Down
7 changes: 6 additions & 1 deletion Nodes/IReadsDatabase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -49,12 +49,17 @@ void SetDatabase(Database database)
if (FDatabase != null)
{
FDatabase.Update += FDatabase_Update;
FValid = false;
this.Invalidate();
}
}

bool FValid = true;
void FDatabase_Update(object sender, EventArgs e)
{
this.Invalidate();
}

protected void Invalidate()
{
FValid = false;
}
Expand Down
6 changes: 6 additions & 0 deletions Nodes/ProjectorSet.cs
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,14 @@ public void Evaluate(int SpreadMax)
{
foreach (int ProjectorIndex in FInProjectorIndex)
{
bool invalidate = false;
if (!FInDatabase[0].Projectors.ContainsKey(ProjectorIndex))
{
invalidate = true;
FInDatabase[0].Projectors.Add(ProjectorIndex, new Projector());
}
if (invalidate)
FInDatabase[0].OnUpdate();
}
}
}
Expand Down
4 changes: 3 additions & 1 deletion Nodes/Select.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public class SelectNode : IReadsDatabase, IPluginEvaluate
{
#region fields & pins
[Input("Projector Index")]
ISpread<int> FInProjectorIndex;
IDiffSpread<int> FInProjectorIndex;

[Output("Board Index")]
ISpread<ISpread<int>> FOutBoardIndex;
Expand All @@ -38,6 +38,8 @@ public class SelectNode : IReadsDatabase, IPluginEvaluate
//called when data for any output pin is requested
public void Evaluate2(int SpreadMax)
{
if (FInProjectorIndex.IsChanged)
this.Invalidate();
}

public override void UpdateOutput(int SpreadMax)
Expand Down
9 changes: 8 additions & 1 deletion Nodes/Transform.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,17 @@ public class TransformNode : IReadsDatabase, IPluginEvaluate
{
#region fields & pins
[Input("Projector Index")]
ISpread<int> FInProjectorIndex;
IDiffSpread<int> FInProjectorIndex;

[Output("View Matrix")]
ISpread<Matrix4x4> FOutViewMatrix;

[Output("Projection Matrix")]
ISpread<Matrix4x4> FOutProjectionMatrix;

[Output("Reprojection Error")]
ISpread<double> FOutReprojectionError;

[Output("Calibrated")]
ISpread<bool> FOutCalibrated;

Expand All @@ -38,13 +41,16 @@ public class TransformNode : IReadsDatabase, IPluginEvaluate
//called when data for any output pin is requested
public void Evaluate2(int SpreadMax)
{
if (FInProjectorIndex.IsChanged)
this.Invalidate();
}

public override void UpdateOutput(int SpreadMax)
{
int ProjectorCount = FDatabase.Projectors.Count;
FOutProjectionMatrix.SliceCount = ProjectorCount;
FOutViewMatrix.SliceCount = ProjectorCount;
FOutReprojectionError.SliceCount = ProjectorCount;
FOutCalibrated.SliceCount = ProjectorCount;

for (int slice = 0; slice < ProjectorCount; slice++)
Expand All @@ -56,6 +62,7 @@ public override void UpdateOutput(int SpreadMax)

FOutViewMatrix[slice] = Projector.View;
FOutProjectionMatrix[slice] = Projector.Projection;
FOutReprojectionError[slice] = Projector.ReprojectionError;
FOutCalibrated[slice] = Projector.Calibrated;
}
else
Expand Down
Binary file modified example/correspondences.bin
Binary file not shown.
64 changes: 35 additions & 29 deletions example/database insert.v4p
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<!DOCTYPE PATCH SYSTEM "http://vvvv.org/versions/vvvv45alpha28.dtd" >
<PATCH nodename="C:\project files\Solihul\Kinect+Projector\database insert.v4p" systemname="database insert" filename="C:\project files\Solihul\Kinect+Projector\database insert.v4p">
<PATCH nodename="C:\dev\vvvv\VVVV.Nodes.Mapping.Database\plugins\CorrespondencesMappingDatabase\example\database insert.v4p" systemname="database insert" filename="C:\project files\Solihul\Kinect+Projector\database insert.v4p">
<NODE systemname="Insert (Mapping Correspondences)" filename="%VVVV%\addonpack\lib\nodes\plugins\CorrespondencesMappingDatabase.dll" nodename="Insert (Mapping Correspondences)" componentmode="Hidden" id="0">
<BOUNDS type="Node" left="600" top="1200" width="8460" height="270">
<BOUNDS type="Node" left="600" top="1650" width="8460" height="270">
</BOUNDS>
<PIN pinname="Database" visible="1" slicecount="1" values="||">
</PIN>
Expand All @@ -17,29 +17,19 @@
</PIN>
</NODE>
<NODE id="1" systemname="IOBox (Node)" componentmode="InABox" nodename="IOBox (Node)">
<PIN pinname="Descriptive Name" slicecount="1" values="Database" encoded="0">
<PIN pinname="Descriptive Name" slicecount="1" encoded="0" values="Database">
</PIN>
<BOUNDS type="Box" left="600" top="200" width="750" height="240">
</BOUNDS>
<BOUNDS type="Node" left="600" top="200" width="750" height="240">
</BOUNDS>
</NODE>
<LINK srcnodeid="1" srcpinname="Output Node" dstnodeid="0" dstpinname="Database">
</LINK>
<NODE id="2" systemname="IOBox (Value Advanced)" componentmode="InABox" nodename="IOBox (Value Advanced)">
<PIN pinname="Descriptive Name" slicecount="1" values="|Board Index|" encoded="0">
</PIN>
<BOUNDS type="Box" left="3960" top="200" width="750" height="240">
</BOUNDS>
<BOUNDS type="Node" left="3960" top="200" width="750" height="240">
</BOUNDS>
<PIN pinname="Y Output Value" visible="1">
<PIN pinname="Output Node" visible="1">
</PIN>
</NODE>
<LINK srcnodeid="2" srcpinname="Y Output Value" dstnodeid="0" dstpinname="Board Index">
<LINK srcnodeid="1" srcpinname="Output Node" dstnodeid="0" dstpinname="Database">
</LINK>
<NODE id="3" systemname="IOBox (Value Advanced)" componentmode="InABox" nodename="IOBox (Value Advanced)">
<PIN pinname="Descriptive Name" slicecount="1" values="WorldXYZ" encoded="0">
<PIN pinname="Descriptive Name" slicecount="1" encoded="0" values="WorldXYZ">
</PIN>
<BOUNDS type="Box" left="5640" top="200" width="750" height="240">
</BOUNDS>
Expand All @@ -49,7 +39,7 @@
<LINK srcnodeid="3" srcpinname="Y Output Value" dstnodeid="0" dstpinname="WorldXYZ">
</LINK>
<NODE id="4" systemname="IOBox (Value Advanced)" componentmode="InABox" nodename="IOBox (Value Advanced)">
<PIN pinname="Descriptive Name" slicecount="1" values="ProjectionXY" encoded="0">
<PIN pinname="Descriptive Name" slicecount="1" encoded="0" values="ProjectionXY">
</PIN>
<BOUNDS type="Box" left="7320" top="200" width="750" height="240">
</BOUNDS>
Expand All @@ -59,7 +49,7 @@
<LINK srcnodeid="4" srcpinname="Y Output Value" dstnodeid="0" dstpinname="ProjectionXY">
</LINK>
<NODE id="5" systemname="IOBox (Value Advanced)" componentmode="InABox" nodename="IOBox (Value Advanced)">
<PIN pinname="Descriptive Name" slicecount="1" values="Insert" encoded="0">
<PIN pinname="Descriptive Name" slicecount="1" encoded="0" values="Insert">
</PIN>
<BOUNDS type="Box" left="9000" top="200" width="750" height="240">
</BOUNDS>
Expand All @@ -70,7 +60,7 @@
</NODE>
<LINK srcnodeid="5" srcpinname="Y Output Value" dstnodeid="0" dstpinname="Insert">
</LINK>
<BOUNDS type="Window" left="12900" top="5220" width="10410" height="3870">
<BOUNDS type="Window" left="12900" top="5220" width="10410" height="4530">
</BOUNDS>
<NODE nodename="IOBox (Value Advanced)" componentmode="InABox" id="6" systemname="IOBox (Value Advanced)">
<BOUNDS type="Node" left="2265" top="210" width="0" height="0">
Expand All @@ -79,19 +69,19 @@
</BOUNDS>
<PIN pinname="Y Input Value" slicecount="1" values="0">
</PIN>
<PIN pinname="Units" slicecount="1" values="||" encoded="0">
<PIN pinname="Units" slicecount="1" encoded="0" values="||">
</PIN>
<PIN pinname="Precision" slicecount="1" values="4">
</PIN>
<PIN pinname="Value Type" slicecount="1" values="Integer">
</PIN>
<PIN pinname="Descriptive Name" slicecount="1" values="|Projector Index|" encoded="0">
<PIN pinname="Descriptive Name" slicecount="1" encoded="0" values="|Projector Index|">
</PIN>
</NODE>
<LINK srcnodeid="6" srcpinname="Y Output Value" dstnodeid="0" dstpinname="Projector Index">
</LINK>
<NODE systemname="SpeechSynthesis (String)" filename="%VVVV%\addonpack\lib\nodes\plugins\SpeechSynthesis.dll" nodename="SpeechSynthesis (String)" componentmode="Hidden" id="7">
<BOUNDS type="Node" left="5565" top="2715" width="100" height="100">
<BOUNDS type="Node" left="5565" top="3165" width="100" height="100">
</BOUNDS>
<PIN pinname="Input" visible="1" slicecount="1" encoded="0" values="null">
</PIN>
Expand All @@ -103,7 +93,7 @@
<NODE id="8" systemname="AsString (Value)" nodename="AsString (Value)" componentmode="Hidden" hiddenwhenlocked="0" managers="">
<PIN pinname="Input" visible="1" pintype="Input">
</PIN>
<BOUNDS type="Node" left="5565" top="2115" width="100" height="100">
<BOUNDS type="Node" left="5565" top="2565" width="100" height="100">
</BOUNDS>
<PIN pinname="Output" visible="1" pintype="Output">
</PIN>
Expand All @@ -118,16 +108,32 @@
</NODE>
<LINK srcnodeid="8" srcpinname="Output" dstnodeid="7" dstpinname="Input">
</LINK>
<LINK srcnodeid="2" srcpinname="Y Output Value" dstnodeid="8" dstpinname="Input" linkstyle="Bezier">
<LINKPOINT x="4020" y="1268">
<LINK srcnodeid="5" srcpinname="Y Output Value" dstnodeid="7" dstpinname="Speak" linkstyle="Bezier">
<LINKPOINT x="9000" y="1710">
</LINKPOINT>
<LINKPOINT x="6435" y="1860">
</LINKPOINT>
</LINK>
<NODE systemname="NextBoardIndex (Mapping Correspondences)" filename="%VVVV%\addonpack\lib\nodes\plugins\CorrespondencesMappingDatabase.dll" nodename="NextBoardIndex (Mapping Correspondences)" componentmode="Hidden" id="9">
<BOUNDS type="Node" left="3975" top="1080" width="100" height="100">
</BOUNDS>
<PIN pinname="Next Board Index" visible="1">
</PIN>
<PIN pinname="Database" visible="1">
</PIN>
</NODE>
<LINK srcnodeid="9" srcpinname="Next Board Index" dstnodeid="0" dstpinname="Board Index">
</LINK>
<LINK srcnodeid="9" srcpinname="Next Board Index" dstnodeid="8" dstpinname="Input" linkstyle="Bezier">
<LINKPOINT x="4035" y="1943">
</LINKPOINT>
<LINKPOINT x="5565" y="1268">
<LINKPOINT x="5550" y="1943">
</LINKPOINT>
</LINK>
<LINK srcnodeid="5" srcpinname="Y Output Value" dstnodeid="7" dstpinname="Speak" linkstyle="Bezier">
<LINKPOINT x="9000" y="1560">
<LINK srcnodeid="1" srcpinname="Output Node" dstnodeid="9" dstpinname="Database" linkstyle="VHV" hiddenwhenlocked="1">
<LINKPOINT x="660" y="743">
</LINKPOINT>
<LINKPOINT x="6435" y="1560">
<LINKPOINT x="3975" y="743">
</LINKPOINT>
</LINK>
</PATCH>
Loading

0 comments on commit b3c349d

Please sign in to comment.