WIP
parent
6c988beaad
commit
0fe2fb1aeb
|
@ -0,0 +1 @@
|
|||
Subproject commit 8524b7e0a75bdb7398e8b60885c442a46c57ab91
|
|
@ -10,8 +10,10 @@ using OpenTK.Audio.OpenAL;
|
|||
using OpenTK.Audio;
|
||||
|
||||
using ImageSharp;
|
||||
using ImageSharp.Processing;
|
||||
|
||||
using org.niclasundharald.engine.graphics;
|
||||
using org.niclasundharald.engine;
|
||||
|
||||
namespace nhengine
|
||||
{
|
||||
|
@ -58,16 +60,27 @@ namespace nhengine
|
|||
public void bootMap(){
|
||||
ImageSharp.Image i = ImageSharp.Image.Load( new FileStream("M3-wip.png",FileMode.Open));
|
||||
i.Flip(ImageSharp.Processing.FlipType.Vertical);
|
||||
i.Resize(500,500);
|
||||
|
||||
map = new SquaredMap(i);
|
||||
|
||||
glWindow.Scene.RootObject.addChild( map );
|
||||
|
||||
|
||||
ModelManager.instance.addSearchPath("./models");
|
||||
|
||||
DumpObject dobj = new DumpObject();
|
||||
dobj.Model3D = ModelManager.instance.loadModel("alfa147",0.0254f);
|
||||
Vector3 v3 = map.ground(new Vector2(40,40));
|
||||
v3.Z *= 2;
|
||||
dobj.Position = v3;
|
||||
|
||||
glWindow.Scene.RootObject.addChild( dobj );
|
||||
}
|
||||
|
||||
|
||||
public void run(){
|
||||
glWindow.MakeCurrent();
|
||||
glWindow.Run(30,30);
|
||||
glWindow.Run(25,25);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -54,12 +54,12 @@ namespace nhengine
|
|||
GL.Enable(EnableCap.Blend);
|
||||
GL.BlendFunc(BlendingFactorSrc.SrcAlpha,BlendingFactorDest.OneMinusSrcAlpha);
|
||||
|
||||
cube = new Cube(new Vector3(0,0,512), 128.0f);
|
||||
c1 = new Cube(new Vector3(512,0,512), 128.0f);
|
||||
c2 = new Cube(new Vector3(0,512,512), 128.0f);
|
||||
c3 = new Cube(new Vector3(512,512,512), 128.0f);
|
||||
cube = new Cube(new Vector3(0,0,150), 16.0f);
|
||||
c1 = new Cube(new Vector3(16,0,150), 8.0f);
|
||||
c2 = new Cube(new Vector3(0,150,150), 8.0f);
|
||||
c3 = new Cube(new Vector3(175,175,150), 8.0f);
|
||||
|
||||
lookAt = new Vector3(0,0,0);
|
||||
lookAt = new Vector3(0,0,128.0f);
|
||||
lookDistance = 2048;
|
||||
arcUpDown = MathHelper.PiOver6;
|
||||
arcLeftRight = MathHelper.PiOver4;
|
||||
|
@ -94,6 +94,22 @@ namespace nhengine
|
|||
scene.draw();
|
||||
|
||||
SwapBuffers();
|
||||
|
||||
Title = string.Format("{0:F}/s {1:F}/s [{2:F}s]", RenderFrequency,UpdateFrequency,UpdatePeriod);
|
||||
}
|
||||
|
||||
protected override void OnUpdateFrame(FrameEventArgs e)
|
||||
{
|
||||
base.OnUpdateFrame(e);
|
||||
Matrix4 m4 = Matrix4.CreateRotationZ(MathHelper.Pi / 90.0f);
|
||||
|
||||
cube.Rotation = m4 * cube.Rotation;
|
||||
c1.Position = (m4.Inverted() * new Vector4(c1.Position)).Xyz;
|
||||
c2.Rotation = (m4 * c2.Rotation);
|
||||
c3.Position = (m4 * new Vector4(c3.Position)).Xyz;
|
||||
|
||||
|
||||
Actor.updateAll( (float)UpdatePeriod );
|
||||
}
|
||||
|
||||
private void captureMouse(){
|
||||
|
@ -164,15 +180,36 @@ namespace nhengine
|
|||
rotateLeftRight(-MathHelper.Pi / 90.0f);
|
||||
break;
|
||||
case OpenTK.Input.Key.W:
|
||||
walk(250.0f);
|
||||
walk(e.Shift ? 50.0f : 5.0f);
|
||||
break;
|
||||
case OpenTK.Input.Key.S:
|
||||
walk(-250.0f);
|
||||
walk(e.Shift ? -50.0f : -5.0f);
|
||||
break;
|
||||
case OpenTK.Input.Key.A:
|
||||
strafe(e.Shift ? -50.0f : -5.0f);
|
||||
break;
|
||||
case OpenTK.Input.Key.D:
|
||||
strafe(e.Shift ? 50.0f : 5.0f);
|
||||
break;
|
||||
|
||||
case OpenTK.Input.Key.Space:
|
||||
fireBallistic();
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private void fireBallistic(){
|
||||
Console.WriteLine("Fire Ballistic...");
|
||||
BallisticActor ba = new BallisticActor(0);
|
||||
|
||||
ba.Position = BootStrap.instance().SquaredMap.ground(new Vector2(10,10));
|
||||
ba.Velocity = new Vector3(1,1,1);// + (Matrix4.CreateRotationZ(arcLeftRight) * Vector4.UnitY).Xyz;
|
||||
ba.Velocity.Normalize();
|
||||
ba.Velocity *= 50;
|
||||
}
|
||||
|
||||
|
||||
public void rotateUpDown(float arc)
|
||||
{
|
||||
arcUpDown += arc;
|
||||
|
@ -191,6 +228,11 @@ namespace nhengine
|
|||
setupCamera();
|
||||
}
|
||||
|
||||
public void strafe(float distance){
|
||||
lookAt += Vector3.Cross(new Vector3(sceneCamera.View.Xy),Vector3.UnitZ).Normalized() * distance;
|
||||
setupCamera();
|
||||
}
|
||||
|
||||
protected override void OnKeyUp(OpenTK.Input.KeyboardKeyEventArgs e)
|
||||
{
|
||||
}
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
# Blender MTL File: 'ballistisch.blend'
|
||||
# Material Count: 1
|
||||
|
||||
newmtl None
|
||||
Ns 0
|
||||
Ka 0.000000 0.000000 0.000000
|
||||
Kd 0.8 0.8 0.8
|
||||
Ks 0.8 0.8 0.8
|
||||
d 1
|
||||
illum 2
|
|
@ -0,0 +1,240 @@
|
|||
# Blender v2.78 (sub 0) OBJ File: 'ballistisch.blend'
|
||||
# www.blender.org
|
||||
mtllib ballistisch.mtl
|
||||
o Cylinder
|
||||
v 0.000000 -1.000000 -0.250000
|
||||
v 0.000000 1.000000 -0.250000
|
||||
v 0.048773 -1.000000 -0.245196
|
||||
v 0.048773 1.000000 -0.245196
|
||||
v 0.095671 -1.000000 -0.230970
|
||||
v 0.095671 1.000000 -0.230970
|
||||
v 0.138893 -1.000000 -0.207867
|
||||
v 0.138893 1.000000 -0.207867
|
||||
v 0.176777 -1.000000 -0.176777
|
||||
v 0.176777 1.000000 -0.176777
|
||||
v 0.207867 -1.000000 -0.138893
|
||||
v 0.207867 1.000000 -0.138893
|
||||
v 0.230970 -1.000000 -0.095671
|
||||
v 0.230970 1.000000 -0.095671
|
||||
v 0.245196 -1.000000 -0.048773
|
||||
v 0.245196 1.000000 -0.048773
|
||||
v 0.250000 -1.000000 -0.000000
|
||||
v 0.250000 1.000000 -0.000000
|
||||
v 0.245196 -1.000000 0.048773
|
||||
v 0.245196 1.000000 0.048773
|
||||
v 0.230970 -1.000000 0.095671
|
||||
v 0.230970 1.000000 0.095671
|
||||
v 0.207867 -1.000000 0.138893
|
||||
v 0.207867 1.000000 0.138893
|
||||
v 0.176777 -1.000000 0.176777
|
||||
v 0.176777 1.000000 0.176777
|
||||
v 0.138893 -1.000000 0.207867
|
||||
v 0.138893 1.000000 0.207867
|
||||
v 0.095671 -1.000000 0.230970
|
||||
v 0.095671 1.000000 0.230970
|
||||
v 0.048773 -1.000000 0.245196
|
||||
v 0.048773 1.000000 0.245196
|
||||
v -0.000000 -1.000000 0.250000
|
||||
v -0.000000 1.000000 0.250000
|
||||
v -0.048773 -1.000000 0.245196
|
||||
v -0.048773 1.000000 0.245196
|
||||
v -0.095671 -1.000000 0.230970
|
||||
v -0.095671 1.000000 0.230970
|
||||
v -0.138893 -1.000000 0.207867
|
||||
v -0.138893 1.000000 0.207867
|
||||
v -0.176777 -1.000000 0.176777
|
||||
v -0.176777 1.000000 0.176777
|
||||
v -0.207868 -1.000000 0.138892
|
||||
v -0.207868 1.000000 0.138892
|
||||
v -0.230970 -1.000000 0.095671
|
||||
v -0.230970 1.000000 0.095671
|
||||
v -0.245196 -1.000000 0.048772
|
||||
v -0.245196 1.000000 0.048772
|
||||
v -0.250000 -1.000000 -0.000000
|
||||
v -0.250000 1.000000 -0.000000
|
||||
v -0.245196 -1.000000 -0.048773
|
||||
v -0.245196 1.000000 -0.048773
|
||||
v -0.230970 -1.000000 -0.095671
|
||||
v -0.230970 1.000000 -0.095671
|
||||
v -0.207867 -1.000000 -0.138893
|
||||
v -0.207867 1.000000 -0.138893
|
||||
v -0.176776 -1.000000 -0.176777
|
||||
v -0.176776 1.000000 -0.176777
|
||||
v -0.138892 -1.000000 -0.207868
|
||||
v -0.138892 1.000000 -0.207868
|
||||
v -0.095671 -1.000000 -0.230970
|
||||
v -0.095671 1.000000 -0.230970
|
||||
v -0.048772 -1.000000 -0.245196
|
||||
v -0.048772 1.000000 -0.245196
|
||||
vn 0.0980 0.0000 -0.9952
|
||||
vn 0.2903 0.0000 -0.9569
|
||||
vn 0.4714 0.0000 -0.8819
|
||||
vn 0.6344 0.0000 -0.7730
|
||||
vn 0.7730 0.0000 -0.6344
|
||||
vn 0.8819 0.0000 -0.4714
|
||||
vn 0.9569 0.0000 -0.2903
|
||||
vn 0.9952 0.0000 -0.0980
|
||||
vn 0.9952 0.0000 0.0980
|
||||
vn 0.9569 0.0000 0.2903
|
||||
vn 0.8819 0.0000 0.4714
|
||||
vn 0.7730 0.0000 0.6344
|
||||
vn 0.6344 0.0000 0.7730
|
||||
vn 0.4714 0.0000 0.8819
|
||||
vn 0.2903 0.0000 0.9569
|
||||
vn 0.0980 0.0000 0.9952
|
||||
vn -0.0980 0.0000 0.9952
|
||||
vn -0.2903 0.0000 0.9569
|
||||
vn -0.4714 0.0000 0.8819
|
||||
vn -0.6344 0.0000 0.7730
|
||||
vn -0.7730 0.0000 0.6344
|
||||
vn -0.8819 0.0000 0.4714
|
||||
vn -0.9569 0.0000 0.2903
|
||||
vn -0.9952 0.0000 0.0980
|
||||
vn -0.9952 0.0000 -0.0980
|
||||
vn -0.9569 0.0000 -0.2903
|
||||
vn -0.8819 0.0000 -0.4714
|
||||
vn -0.7730 0.0000 -0.6344
|
||||
vn -0.6344 0.0000 -0.7730
|
||||
vn -0.4714 0.0000 -0.8819
|
||||
vn 0.0000 1.0000 0.0000
|
||||
vn -0.2903 0.0000 -0.9569
|
||||
vn -0.0980 0.0000 -0.9952
|
||||
vn 0.0000 -1.0000 -0.0000
|
||||
usemtl None
|
||||
s off
|
||||
f 1//1 2//1 4//1 3//1
|
||||
f 3//2 4//2 6//2 5//2
|
||||
f 5//3 6//3 8//3 7//3
|
||||
f 7//4 8//4 10//4 9//4
|
||||
f 9//5 10//5 12//5 11//5
|
||||
f 11//6 12//6 14//6 13//6
|
||||
f 13//7 14//7 16//7 15//7
|
||||
f 15//8 16//8 18//8 17//8
|
||||
f 17//9 18//9 20//9 19//9
|
||||
f 19//10 20//10 22//10 21//10
|
||||
f 21//11 22//11 24//11 23//11
|
||||
f 23//12 24//12 26//12 25//12
|
||||
f 25//13 26//13 28//13 27//13
|
||||
f 27//14 28//14 30//14 29//14
|
||||
f 29//15 30//15 32//15 31//15
|
||||
f 31//16 32//16 34//16 33//16
|
||||
f 33//17 34//17 36//17 35//17
|
||||
f 35//18 36//18 38//18 37//18
|
||||
f 37//19 38//19 40//19 39//19
|
||||
f 39//20 40//20 42//20 41//20
|
||||
f 41//21 42//21 44//21 43//21
|
||||
f 43//22 44//22 46//22 45//22
|
||||
f 45//23 46//23 48//23 47//23
|
||||
f 47//24 48//24 50//24 49//24
|
||||
f 49//25 50//25 52//25 51//25
|
||||
f 51//26 52//26 54//26 53//26
|
||||
f 53//27 54//27 56//27 55//27
|
||||
f 55//28 56//28 58//28 57//28
|
||||
f 57//29 58//29 60//29 59//29
|
||||
f 59//30 60//30 62//30 61//30
|
||||
f 4//31 2//31 64//31 62//31 60//31 58//31 56//31 54//31 52//31 50//31 48//31 46//31 44//31 42//31 40//31 38//31 36//31 34//31 32//31 30//31 28//31 26//31 24//31 22//31 20//31 18//31 16//31 14//31 12//31 10//31 8//31 6//31
|
||||
f 61//32 62//32 64//32 63//32
|
||||
f 63//33 64//33 2//33 1//33
|
||||
f 1//34 3//34 5//34 7//34 9//34 11//34 13//34 15//34 17//34 19//34 21//34 23//34 25//34 27//34 29//34 31//34 33//34 35//34 37//34 39//34 41//34 43//34 45//34 47//34 49//34 51//34 53//34 55//34 57//34 59//34 61//34 63//34
|
||||
o Cone
|
||||
v -0.000000 0.939394 -0.250000
|
||||
v 0.048773 0.939394 -0.245196
|
||||
v 0.095671 0.939394 -0.230970
|
||||
v 0.138893 0.939394 -0.207867
|
||||
v 0.176777 0.939394 -0.176777
|
||||
v 0.207867 0.939394 -0.138892
|
||||
v 0.230970 0.939394 -0.095671
|
||||
v 0.245196 0.939394 -0.048773
|
||||
v 0.250000 0.939394 0.000000
|
||||
v -0.000000 2.939394 0.000000
|
||||
v 0.245196 0.939394 0.048773
|
||||
v 0.230970 0.939394 0.095671
|
||||
v 0.207867 0.939394 0.138893
|
||||
v 0.176777 0.939394 0.176777
|
||||
v 0.138893 0.939394 0.207867
|
||||
v 0.095671 0.939394 0.230970
|
||||
v 0.048772 0.939394 0.245196
|
||||
v -0.000000 0.939394 0.250000
|
||||
v -0.048773 0.939394 0.245196
|
||||
v -0.095671 0.939394 0.230970
|
||||
v -0.138893 0.939394 0.207867
|
||||
v -0.176777 0.939394 0.176777
|
||||
v -0.207868 0.939394 0.138892
|
||||
v -0.230970 0.939394 0.095671
|
||||
v -0.245196 0.939394 0.048772
|
||||
v -0.250000 0.939394 -0.000000
|
||||
v -0.245196 0.939394 -0.048773
|
||||
v -0.230970 0.939394 -0.095671
|
||||
v -0.207867 0.939394 -0.138893
|
||||
v -0.176776 0.939394 -0.176777
|
||||
v -0.138892 0.939394 -0.207868
|
||||
v -0.095671 0.939394 -0.230970
|
||||
v -0.048772 0.939394 -0.245196
|
||||
vn 0.0973 0.1234 -0.9876
|
||||
vn 0.2881 0.1234 -0.9496
|
||||
vn 0.4678 0.1234 -0.8752
|
||||
vn 0.6295 0.1234 -0.7671
|
||||
vn 0.7671 0.1234 -0.6295
|
||||
vn 0.8752 0.1234 -0.4678
|
||||
vn 0.9496 0.1234 -0.2881
|
||||
vn 0.9876 0.1234 -0.0973
|
||||
vn 0.9876 0.1234 0.0973
|
||||
vn 0.9496 0.1234 0.2881
|
||||
vn 0.8752 0.1234 0.4678
|
||||
vn 0.7671 0.1234 0.6295
|
||||
vn 0.6295 0.1234 0.7671
|
||||
vn 0.4678 0.1234 0.8752
|
||||
vn 0.2881 0.1234 0.9496
|
||||
vn 0.0973 0.1234 0.9876
|
||||
vn -0.0973 0.1234 0.9876
|
||||
vn -0.2881 0.1234 0.9496
|
||||
vn -0.4678 0.1234 0.8752
|
||||
vn -0.6295 0.1234 0.7671
|
||||
vn -0.7671 0.1234 0.6295
|
||||
vn -0.8752 0.1234 0.4678
|
||||
vn -0.9496 0.1234 0.2881
|
||||
vn -0.9876 0.1234 0.0973
|
||||
vn -0.9876 0.1234 -0.0973
|
||||
vn -0.9496 0.1234 -0.2881
|
||||
vn -0.8752 0.1234 -0.4678
|
||||
vn -0.7671 0.1234 -0.6295
|
||||
vn -0.6295 0.1234 -0.7671
|
||||
vn -0.4678 0.1234 -0.8752
|
||||
vn -0.2881 0.1234 -0.9496
|
||||
vn -0.0973 0.1234 -0.9876
|
||||
vn 0.0000 -1.0000 0.0000
|
||||
usemtl None
|
||||
s off
|
||||
f 65//35 74//35 66//35
|
||||
f 66//36 74//36 67//36
|
||||
f 67//37 74//37 68//37
|
||||
f 68//38 74//38 69//38
|
||||
f 69//39 74//39 70//39
|
||||
f 70//40 74//40 71//40
|
||||
f 71//41 74//41 72//41
|
||||
f 72//42 74//42 73//42
|
||||
f 73//43 74//43 75//43
|
||||
f 75//44 74//44 76//44
|
||||
f 76//45 74//45 77//45
|
||||
f 77//46 74//46 78//46
|
||||
f 78//47 74//47 79//47
|
||||
f 79//48 74//48 80//48
|
||||
f 80//49 74//49 81//49
|
||||
f 81//50 74//50 82//50
|
||||
f 82//51 74//51 83//51
|
||||
f 83//52 74//52 84//52
|
||||
f 84//53 74//53 85//53
|
||||
f 85//54 74//54 86//54
|
||||
f 86//55 74//55 87//55
|
||||
f 87//56 74//56 88//56
|
||||
f 88//57 74//57 89//57
|
||||
f 89//58 74//58 90//58
|
||||
f 90//59 74//59 91//59
|
||||
f 91//60 74//60 92//60
|
||||
f 92//61 74//61 93//61
|
||||
f 93//62 74//62 94//62
|
||||
f 94//63 74//63 95//63
|
||||
f 95//64 74//64 96//64
|
||||
f 96//65 74//65 97//65
|
||||
f 97//66 74//66 65//66
|
||||
f 65//67 66//67 67//67 68//67 69//67 70//67 71//67 72//67 73//67 75//67 76//67 77//67 78//67 79//67 80//67 81//67 82//67 83//67 84//67 85//67 86//67 87//67 88//67 89//67 90//67 91//67 92//67 93//67 94//67 95//67 96//67 97//67
|
|
@ -19,6 +19,7 @@
|
|||
<WarningLevel>4</WarningLevel>
|
||||
<ConsolePause>false</ConsolePause>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<PlatformTarget>anycpu</PlatformTarget>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<Optimize>true</Optimize>
|
||||
|
@ -33,12 +34,10 @@
|
|||
<Reference Include="OpenTK">
|
||||
<HintPath>..\packages\OpenTK.2.0.0\lib\net20\OpenTK.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Buffers">
|
||||
<HintPath>..\packages\System.Buffers.4.3.0\lib\netstandard1.1\System.Buffers.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.IO.Compression" />
|
||||
<Reference Include="System.Net.Http" />
|
||||
<Reference Include="System.Numerics.Vectors">
|
||||
<HintPath>..\packages\System.Numerics.Vectors.4.3.0\lib\portable-net45+win8+wp8+wpa81\System.Numerics.Vectors.dll</HintPath>
|
||||
|
@ -54,15 +53,15 @@
|
|||
<Reference Include="System.Xml" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="ImageSharp">
|
||||
<HintPath>..\packages\ImageSharp.1.0.0-alpha7-00006\lib\netstandard1.1\ImageSharp.dll</HintPath>
|
||||
<HintPath>..\org.niclasundharald.engine\contrib\ImageSharp.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Drawing" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="BootStrap.cs" />
|
||||
<Compile Include="Graphics.cs" />
|
||||
<Compile Include="OpenGLWindow.cs" />
|
||||
<Compile Include="SquaredMap.cs" />
|
||||
<Compile Include="TextureManager.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
|
@ -76,8 +75,13 @@
|
|||
<None Include="M3-wip.png">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="models\alfa147.obj" />
|
||||
<None Include="models\alfa147.obj">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Notes.txt" />
|
||||
<None Include="models\ballistisch.obj">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\org.niclasundharald.engine\org.niclasundharald.engine.csproj">
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="ImageSharp" version="1.0.0-alpha7-00006" targetFramework="net45" />
|
||||
<package id="Microsoft.NETCore.Platforms" version="1.1.0" targetFramework="net45" />
|
||||
<package id="NETStandard.Library" version="1.6.1" targetFramework="net45" />
|
||||
<package id="OpenTK" version="2.0.0" targetFramework="net45" />
|
||||
|
|
11
nhengine.sln
11
nhengine.sln
|
@ -5,6 +5,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nhengine", "NHEngine\nhengi
|
|||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "org.niclasundharald.engine", "org.niclasundharald.engine\org.niclasundharald.engine.csproj", "{3E812F66-D5F3-4599-8360-97F355B6CC1B}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "contrib", "contrib", "{9BA2E63F-E39C-465C-AC48-45B30B532A0C}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ImageSharp", "ImageSharp\ImageSharp.csproj", "{4D1A7C04-2C4E-4C74-AD81-FE0DCA9C6DF0}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
|
@ -19,5 +23,12 @@ Global
|
|||
{3E812F66-D5F3-4599-8360-97F355B6CC1B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{3E812F66-D5F3-4599-8360-97F355B6CC1B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{3E812F66-D5F3-4599-8360-97F355B6CC1B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{4D1A7C04-2C4E-4C74-AD81-FE0DCA9C6DF0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{4D1A7C04-2C4E-4C74-AD81-FE0DCA9C6DF0}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{4D1A7C04-2C4E-4C74-AD81-FE0DCA9C6DF0}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{4D1A7C04-2C4E-4C74-AD81-FE0DCA9C6DF0}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(NestedProjects) = preSolution
|
||||
{4D1A7C04-2C4E-4C74-AD81-FE0DCA9C6DF0} = {9BA2E63F-E39C-465C-AC48-45B30B532A0C}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
|
|
@ -0,0 +1,72 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using OpenTK;
|
||||
using org.niclasundharald.engine.graphics;
|
||||
|
||||
|
||||
namespace org.niclasundharald.engine
|
||||
{
|
||||
public class Actor : WorldObject
|
||||
{
|
||||
public static List<Actor> activeActors = new List<Actor>();
|
||||
public static List<Actor> finishedActors = new List<Actor>();
|
||||
|
||||
public static void updateAll(float timespan){
|
||||
foreach (Actor a in activeActors){
|
||||
a.update(timespan);
|
||||
}
|
||||
|
||||
foreach (Actor a in finishedActors){
|
||||
activeActors.Remove(a);
|
||||
}
|
||||
finishedActors.Clear();
|
||||
|
||||
}
|
||||
|
||||
private int id;
|
||||
|
||||
public Actor(int id)
|
||||
{
|
||||
Console.WriteLine("New Actor: {0} / {1}",id,this);
|
||||
this.id = id;
|
||||
activeActors.Add(this);
|
||||
}
|
||||
|
||||
public void destroy(){
|
||||
finishedActors.Add(this);
|
||||
}
|
||||
|
||||
public Vector3 Heading { get; set; }
|
||||
public Vector3 Velocity { get; set; }
|
||||
public float Weight { get; set; }
|
||||
|
||||
public virtual void update(float timespan){
|
||||
}
|
||||
|
||||
public void setHeading(Vector3 heading,Vector3 top){
|
||||
Vector3 x,y,z;
|
||||
|
||||
z = heading.Normalized();
|
||||
x = Vector3.Cross( top.Normalized(), z ).Normalized();
|
||||
y = Vector3.Cross( x, z );
|
||||
|
||||
Matrix4 mRotation = new Matrix4(
|
||||
new Vector4(x,0),
|
||||
new Vector4(y,0),
|
||||
new Vector4(z,0),
|
||||
new Vector4(0,0,0,1)
|
||||
);
|
||||
|
||||
Rotation = Matrix4.CreateRotationX(MathHelper.PiOver2) * mRotation;
|
||||
}
|
||||
|
||||
public Model3D Model3D { get; set; }
|
||||
|
||||
public override Model3D getModel3D()
|
||||
{
|
||||
return Model3D;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
using System;
|
||||
namespace org.niclasundharald.engine
|
||||
{
|
||||
/**
|
||||
* @class ActorAction
|
||||
* @brief Base Class to manage orders, jobs, other things to do and/or changes over time for Actors
|
||||
*/
|
||||
public class ActorAction
|
||||
{
|
||||
public ActorAction(Actor actor)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
using System;
|
||||
using org.niclasundharald.engine.graphics.primitives;
|
||||
using org.niclasundharald.engine.graphics;
|
||||
|
||||
using OpenTK;
|
||||
|
||||
namespace org.niclasundharald.engine
|
||||
{
|
||||
public class BallisticActor : Actor
|
||||
{
|
||||
public BallisticActor(int id)
|
||||
:base(id)
|
||||
{
|
||||
this.Model3D = ModelManager.instance.findModel("ballistisch");
|
||||
}
|
||||
|
||||
public override void update(float timespan)
|
||||
{
|
||||
base.update(timespan);
|
||||
|
||||
Velocity += (Physics.Gravitation * timespan);
|
||||
Position += Velocity * timespan;
|
||||
Scale = Matrix4.CreateScale(3.0f);
|
||||
|
||||
setHeading( Velocity, Physics.Gravitation);
|
||||
|
||||
Console.WriteLine("BallisticActor update: {0} / {1}",Position,Velocity);
|
||||
|
||||
try{
|
||||
Vector3 ground = SquaredMap.activeMap.ground(Position.Xy);
|
||||
|
||||
if (Position.Z <= ground.Z){
|
||||
destroy();
|
||||
}
|
||||
} catch (OutOfWorldException e){
|
||||
destroy();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -8,8 +8,10 @@ namespace org.niclasundharald.engine
|
|||
|
||||
public static string findFile(string filename,string[] searchPaths){
|
||||
foreach (string searchPath in searchPaths){
|
||||
string fullname = String.Format("{0}{1}{2}",searchPath,Path.PathSeparator,filename);
|
||||
string fullname = String.Format("{0}{1}{2}",searchPath,Path.DirectorySeparatorChar,filename);
|
||||
Console.WriteLine("lookupFile: {0}",fullname);
|
||||
if (File.Exists(fullname)){
|
||||
Console.WriteLine("foundFile: {0}",fullname);
|
||||
return fullname;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
using System;
|
||||
|
||||
using OpenTK;
|
||||
|
||||
namespace org.niclasundharald.engine
|
||||
{
|
||||
public abstract class Physics
|
||||
{
|
||||
public static Vector3 Gravitation { get; set; } = new Vector3(0,0,-9.81f);
|
||||
|
||||
|
||||
}
|
||||
}
|
|
@ -9,13 +9,10 @@ namespace org.niclasundharald.engine
|
|||
{
|
||||
public abstract class WorldObject
|
||||
{
|
||||
private Matrix4 transformation;
|
||||
|
||||
private List<WorldObject> children;
|
||||
|
||||
public WorldObject()
|
||||
{
|
||||
transformation = Matrix4.Identity;
|
||||
children = new List<WorldObject>();
|
||||
}
|
||||
|
||||
|
@ -23,15 +20,13 @@ namespace org.niclasundharald.engine
|
|||
return null;
|
||||
}
|
||||
|
||||
public Vector3 Position{ get; set; } = new Vector3();
|
||||
public Matrix4 Rotation { get; set; } = Matrix4.Identity;
|
||||
public Matrix4 Scale { get; set; } = Matrix4.Identity;
|
||||
|
||||
public Vector3 Position{
|
||||
get { return this.transformation.ExtractTranslation(); }
|
||||
set { this.transformation += Matrix4.CreateTranslation(value - this.transformation.ExtractTranslation()); }
|
||||
}
|
||||
|
||||
public Matrix4 Transformation {
|
||||
get { return this.transformation; }
|
||||
set { this.transformation = value; }
|
||||
get { return (Scale * Rotation) * Matrix4.CreateTranslation( Position ) ; }
|
||||
}
|
||||
|
||||
public void addChild(WorldObject wo){
|
||||
|
@ -55,4 +50,21 @@ namespace org.niclasundharald.engine
|
|||
public class ObjectGroup : WorldObject {
|
||||
|
||||
}
|
||||
|
||||
public class DumpObject : WorldObject {
|
||||
|
||||
Model3D model3d;
|
||||
|
||||
public Model3D Model3D {
|
||||
get { return this.model3d; }
|
||||
set { this.model3d = value; }
|
||||
}
|
||||
|
||||
public override Model3D getModel3D()
|
||||
{
|
||||
return model3d;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Binary file not shown.
|
@ -0,0 +1,10 @@
|
|||
using System;
|
||||
namespace org.niclasundharald.engine
|
||||
{
|
||||
public class OutOfWorldException : Exception
|
||||
{
|
||||
public OutOfWorldException()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
|
@ -45,7 +45,7 @@ namespace org.niclasundharald.engine.graphics
|
|||
_mProjection = Matrix4.CreatePerspectiveFieldOfView(
|
||||
fov,
|
||||
width / height,
|
||||
50.0f,
|
||||
1.0f,
|
||||
100000.0f
|
||||
);
|
||||
}
|
||||
|
|
|
@ -39,10 +39,17 @@ namespace org.niclasundharald.engine.graphics
|
|||
if (root != null){
|
||||
draw( objectMatrix, root );
|
||||
}
|
||||
|
||||
foreach (WorldObject child in Actor.activeActors){
|
||||
draw( objectMatrix, child );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void draw(Matrix4 baseMatrix,WorldObject wo){
|
||||
Matrix4 objectMatrix = baseMatrix * wo.Transformation;
|
||||
Matrix4 objectMatrix = wo.Transformation * baseMatrix;
|
||||
|
||||
//Console.WriteLine("draw(,{0}",wo);
|
||||
|
||||
//Console.WriteLine("draw(): o={0}\noM=\n{1}",wo,objectMatrix);
|
||||
shader.setup(objectMatrix, sceneOrientation);
|
||||
|
|
|
@ -0,0 +1,142 @@
|
|||
using System;
|
||||
using System.IO;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
|
||||
using OpenTK;
|
||||
|
||||
namespace org.niclasundharald.engine.graphics
|
||||
{
|
||||
public class LoadedModel : Model3D
|
||||
{
|
||||
string sourceName;
|
||||
|
||||
public LoadedModel(string filename)
|
||||
{
|
||||
sourceName = filename;
|
||||
load(new StreamReader(filename));
|
||||
}
|
||||
public LoadedModel(string filename,float scale)
|
||||
{
|
||||
sourceName = filename;
|
||||
load(new StreamReader(filename),scale);
|
||||
}
|
||||
|
||||
private void load(TextReader reader){
|
||||
load(reader,1);
|
||||
}
|
||||
private void load(TextReader reader,float scale){
|
||||
List<Vector3> vertexes,normals;
|
||||
List<Vector4> colors;
|
||||
List<triangle> triangles;
|
||||
string line;
|
||||
|
||||
float[] min = new float[3];
|
||||
float[] max = new float[3];
|
||||
|
||||
vertexes = new List<Vector3>();
|
||||
normals = new List<Vector3>();
|
||||
colors = new List<Vector4>();
|
||||
triangles = new List<triangle>();
|
||||
|
||||
vertexes.Add(new Vector3());
|
||||
normals.Add(new Vector3());
|
||||
|
||||
while ( (line = reader.ReadLine()) != null){
|
||||
string[] fields = line.Split(new string[0],StringSplitOptions.RemoveEmptyEntries);
|
||||
|
||||
if (fields.Length > 0)
|
||||
switch (fields[0]){
|
||||
case "v":
|
||||
float x,y,z;
|
||||
x = (float)Double.Parse(fields[1],CultureInfo.InvariantCulture);
|
||||
y = (float)Double.Parse(fields[2],CultureInfo.InvariantCulture);
|
||||
z = (float)Double.Parse(fields[3],CultureInfo.InvariantCulture);
|
||||
|
||||
x *= scale;
|
||||
y *= scale;
|
||||
z *= scale;
|
||||
|
||||
vertexes.Add( new Vector3(x,y,z) );
|
||||
min[0] = min[0] > x ? x : min[0];
|
||||
min[1] = min[1] > y ? y : min[1];
|
||||
min[2] = min[2] > z ? z : min[2];
|
||||
max[0] = max[0] < x ? x : max[0];
|
||||
max[1] = max[1] < y ? y : max[1];
|
||||
max[2] = max[2] < z ? z : max[2];
|
||||
break;
|
||||
case "vn":
|
||||
normals.Add( -(new Vector3(
|
||||
float.Parse(fields[1],CultureInfo.InvariantCulture),
|
||||
float.Parse(fields[2],CultureInfo.InvariantCulture),
|
||||
float.Parse(fields[3],CultureInfo.InvariantCulture)
|
||||
)
|
||||
));
|
||||
break;
|
||||
case "f":
|
||||
|
||||
surfaceindeces si0,si1,si2;
|
||||
|
||||
si0 = new surfaceindeces(fields[1]);
|
||||
si1 = new surfaceindeces(fields[2]);
|
||||
si2 = new surfaceindeces(fields[3]);
|
||||
|
||||
triangles.Add(new triangle(
|
||||
vertexes[si0.vertex],
|
||||
vertexes[si1.vertex],
|
||||
vertexes[si2.vertex],
|
||||
normals[si0.normal],
|
||||
normals[si1.normal],
|
||||
normals[si2.normal]));
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Console.WriteLine("Loaded {0}: {1} vertexes {2} normals",sourceName,vertexes.Count,normals.Count);
|
||||
Console.WriteLine("Dimensions: {0}/{1}/{2} - {3}/{4}/{5}",min[0],min[1],min[2],max[0],max[1],max[2]);
|
||||
vertexes.Clear();
|
||||
normals.Clear();
|
||||
|
||||
foreach (triangle t in triangles){
|
||||
vertexes.Add( t.a );
|
||||
vertexes.Add( t.b );
|
||||
vertexes.Add( t.c );
|
||||
normals.Add( t.na );
|
||||
normals.Add( t.nb );
|
||||
normals.Add( t.nc );
|
||||
}
|
||||
|
||||
// bind(vertexes.ToArray(),null,normals.ToArray());
|
||||
bind(vertexes.ToArray(),null,normals.ToArray());
|
||||
|
||||
}
|
||||
|
||||
struct triangle{
|
||||
public Vector3 a,b,c;
|
||||
public Vector3 na,nb,nc;
|
||||
|
||||
public triangle(Vector3 a,Vector3 b,Vector3 c,Vector3 na,Vector3 nb,Vector3 nc){
|
||||
this.a = a;
|
||||
this.b = b;
|
||||
this.c = c;
|
||||
this.na = na;
|
||||
this.nb = nb;
|
||||
this.nc = nc;
|
||||
}
|
||||
}
|
||||
|
||||
struct surfaceindeces {
|
||||
|
||||
public int vertex,texture,normal;
|
||||
|
||||
public surfaceindeces(string token){
|
||||
string[] l = token.Split('/');
|
||||
vertex = l[0].Length == 0 ? 0 : int.Parse(l[0]);
|
||||
texture = l[1].Length == 0 ? 0 : int.Parse(l[1]);
|
||||
normal = l[2].Length == 0 ? 0 : int.Parse(l[2]);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
|
@ -14,6 +14,11 @@ namespace org.niclasundharald.engine.graphics {
|
|||
|
||||
protected int nTriangles;
|
||||
|
||||
Vector3[] vertexes;
|
||||
Vector4[] colors;
|
||||
Vector3[] normals;
|
||||
|
||||
|
||||
protected Model3D(){
|
||||
vao = GL.GenVertexArray();
|
||||
nTriangles = 0;
|
||||
|
@ -55,6 +60,10 @@ namespace org.niclasundharald.engine.graphics {
|
|||
GL.BindVertexArray(0);
|
||||
}
|
||||
|
||||
protected void rebind(){
|
||||
|
||||
}
|
||||
|
||||
protected void bind(Vector3[] vertexes){
|
||||
bind( vertexes, null, null, null );
|
||||
}
|
||||
|
@ -68,58 +77,46 @@ namespace org.niclasundharald.engine.graphics {
|
|||
}
|
||||
|
||||
protected void bind(Vector3[] vertexes,Vector4[] colors,Vector3[] normals,Vector2[] uvs){
|
||||
float[] fv = new float[vertexes.Length * 3];
|
||||
/* float[] fv = new float[vertexes.Length * 3];
|
||||
|
||||
for (int n=0;n<vertexes.Length;n++){
|
||||
fv[(n * 3) ] = vertexes[n].X;
|
||||
fv[(n * 3) + 1] = vertexes[n].Y;
|
||||
fv[(n * 3) + 2] = vertexes[n].Z;
|
||||
}
|
||||
|
||||
*/
|
||||
GL.BindVertexArray(vao);
|
||||
|
||||
GL.BindBuffer(BufferTarget.ArrayBuffer, vbo);
|
||||
GL.BufferData(BufferTarget.ArrayBuffer, 4 * fv.Length, fv, BufferUsageHint.StaticDraw);
|
||||
// GL.BufferData(BufferTarget.ArrayBuffer, 4 * fv.Length, fv, BufferUsageHint.StaticDraw);
|
||||
GL.BufferData(BufferTarget.ArrayBuffer, 12 * vertexes.Length, vertexes, BufferUsageHint.StaticDraw);
|
||||
|
||||
GL.EnableVertexAttribArray(0);
|
||||
|
||||
nTriangles = vertexes.Length / 3;
|
||||
|
||||
if (colors != null){
|
||||
float[] fc = new float[ colors.Length * 4 ];
|
||||
if (colors == null){
|
||||
colors = new Vector4[ vertexes.Length ];
|
||||
|
||||
for (int n=0;n < colors.Length; n++){
|
||||
fc[ (4*n) ] = colors[n].X;
|
||||
fc[ (4*n) + 1 ] = colors[n].Y;
|
||||
fc[ (4*n) + 2 ] = colors[n].Z;
|
||||
fc[ (4*n) + 3 ] = colors[n].W;
|
||||
for (int n=0;n<colors.Length;n++){
|
||||
colors[n] = new Vector4(0.5f,0.9f,0.9f,1.0f);
|
||||
}
|
||||
|
||||
GL.BindBuffer(BufferTarget.ArrayBuffer, cbo);
|
||||
GL.BufferData(BufferTarget.ArrayBuffer, 4 * fc.Length, fc, BufferUsageHint.StaticDraw);
|
||||
|
||||
GL.EnableVertexAttribArray(1);
|
||||
} else {
|
||||
float[] fc = new float[ vertexes.Length * 4 ];
|
||||
|
||||
for (int n=0;n<fc.Length;n++){
|
||||
fc[n] = n % 4 == 3 ? 1.0f : 0.5f;
|
||||
}
|
||||
|
||||
GL.BindBuffer(BufferTarget.ArrayBuffer, cbo);
|
||||
GL.BufferData(BufferTarget.ArrayBuffer, 4 * fc.Length, fc, BufferUsageHint.StaticDraw);
|
||||
|
||||
GL.EnableVertexAttribArray(1);
|
||||
}
|
||||
|
||||
GL.BindBuffer(BufferTarget.ArrayBuffer, cbo);
|
||||
GL.BufferData(BufferTarget.ArrayBuffer, 16 * colors.Length, colors, BufferUsageHint.StaticDraw);
|
||||
|
||||
GL.EnableVertexAttribArray(1);
|
||||
|
||||
if (normals == null){
|
||||
normals = computeNormals(vertexes);
|
||||
}
|
||||
|
||||
/*
|
||||
float[] fn = v3aToArray(normals);
|
||||
|
||||
*/
|
||||
GL.BindBuffer(BufferTarget.ArrayBuffer, nbo);
|
||||
GL.BufferData(BufferTarget.ArrayBuffer, 4 * fn.Length, fn, BufferUsageHint.StaticDraw);
|
||||
GL.BufferData(BufferTarget.ArrayBuffer, 12 * normals.Length, normals, BufferUsageHint.StaticDraw);
|
||||
|
||||
GL.EnableVertexAttribArray(2);
|
||||
}
|
||||
|
@ -141,7 +138,7 @@ namespace org.niclasundharald.engine.graphics {
|
|||
public static Vector3[] computeNormals(Vector3[] vertexes){
|
||||
Vector3[] normals = new Vector3[ vertexes.Length ];
|
||||
|
||||
for (int n=0;n<vertexes.Length;n+=3){
|
||||
for (int n=0;n<vertexes.Length-2;n+=3){
|
||||
Vector3 normal = Vector3.Cross( vertexes[n+1] - vertexes[n], vertexes[n+2] - vertexes[n] );
|
||||
normal.Normalize();
|
||||
/*
|
||||
|
@ -173,5 +170,10 @@ namespace org.niclasundharald.engine.graphics {
|
|||
return a;
|
||||
}
|
||||
|
||||
|
||||
public static Model3D loadObjFile(string filename,float scale){
|
||||
return new LoadedModel(filename,scale);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -5,10 +5,12 @@ namespace org.niclasundharald.engine.graphics
|
|||
{
|
||||
public class ModelManager
|
||||
{
|
||||
public static readonly ModelManager instance = new ModelManager();
|
||||
|
||||
Dictionary<string, Model3D> knownModels;
|
||||
List<string> searchPaths;
|
||||
|
||||
public ModelManager()
|
||||
protected ModelManager()
|
||||
{
|
||||
knownModels = new Dictionary<string, Model3D>();
|
||||
searchPaths = new List<string>();
|
||||
|
@ -23,17 +25,18 @@ namespace org.niclasundharald.engine.graphics
|
|||
}
|
||||
|
||||
|
||||
public Model3D loadModel(String mName){
|
||||
public Model3D loadModel(String mName,float scale){
|
||||
string fullName = FileHelper.findFile(String.Format("{0}.obj",mName),searchPaths.ToArray());
|
||||
if (fullName != null){
|
||||
|
||||
Console.WriteLine("Model found: {0}",fullName);
|
||||
return Model3D.loadObjFile(fullName,scale);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public Model3D findModel(String mName){
|
||||
if (!knownModels.ContainsKey(mName)){
|
||||
return loadModel(mName);
|
||||
return loadModel(mName,1);
|
||||
} else {
|
||||
return knownModels[mName];
|
||||
}
|
||||
|
|
|
@ -10,13 +10,15 @@ using OpenTK.Graphics.OpenGL4;
|
|||
using OpenTK;
|
||||
|
||||
using org.niclasundharald.engine;
|
||||
using org.niclasundharald.engine.graphics;
|
||||
|
||||
namespace nhengine
|
||||
namespace org.niclasundharald.engine.graphics
|
||||
{
|
||||
public class SquaredMap : WorldObject
|
||||
{
|
||||
private static float edge = 64;
|
||||
public static SquaredMap activeMap;
|
||||
|
||||
private static float edge = 5;
|
||||
private static float maxHeight = 128.0f;
|
||||
|
||||
private int width,
|
||||
height;
|
||||
|
@ -27,6 +29,8 @@ namespace nhengine
|
|||
|
||||
public SquaredMap(int width,int height)
|
||||
{
|
||||
activeMap = this;
|
||||
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
|
||||
|
@ -44,6 +48,8 @@ namespace nhengine
|
|||
|
||||
public SquaredMap(Image heightMap)
|
||||
{
|
||||
activeMap = this;
|
||||
|
||||
this.width = heightMap.Width-1;
|
||||
this.height = heightMap.Height-1;
|
||||
|
||||
|
@ -63,7 +69,7 @@ namespace nhengine
|
|||
for (int x = 0; x <= width; x++)
|
||||
{
|
||||
float h = (float)rand.NextDouble();
|
||||
heightMap[x + (y * width)] = (float)(256 * (h * h));
|
||||
heightMap[x + (y * width)] = (float)(maxHeight * (h * h));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -77,7 +83,7 @@ namespace nhengine
|
|||
for (int x = 0; x <= width; x++)
|
||||
{
|
||||
Rgba32 pixel = pixels[ x + (y * (width + 1))];
|
||||
float h = (pixel.R + pixel.G + pixel.B) / 3;
|
||||
float h = (pixel.R + pixel.G + pixel.B) * maxHeight / 768;
|
||||
heightMap[x + (y * (width + 1))] = (float)(h);
|
||||
}
|
||||
}
|
||||
|
@ -151,13 +157,38 @@ namespace nhengine
|
|||
}
|
||||
|
||||
this.model = new MapModel3D( vertexes );
|
||||
|
||||
|
||||
this.Position = new Vector3(-(width)*edge,-(height)*edge,0);
|
||||
|
||||
}
|
||||
|
||||
private int indHeightMap(int x,int y){
|
||||
return x + ((width + 1) * y);
|
||||
}
|
||||
|
||||
public Vector3 ground(Vector2 _xy){
|
||||
Vector2 xy = _xy / edge;
|
||||
|
||||
int i1 = indHeightMap((int)xy.X,(int)xy.Y);
|
||||
int i2 = indHeightMap((int)xy.X,(int)xy.Y+1);
|
||||
|
||||
if ((xy.X < 0)||(xy.Y<0)||(xy.X>=width)||(xy.Y>=height)){
|
||||
throw new OutOfWorldException();
|
||||
}
|
||||
|
||||
float h = heightMap[i1] +
|
||||
heightMap[i1 + 1] +
|
||||
heightMap[i2] +
|
||||
heightMap[i2 + 1];
|
||||
|
||||
h /= 4;
|
||||
|
||||
Vector3 v3 = new Vector3(_xy.X,_xy.Y,h);
|
||||
Console.WriteLine("Grounding: {0}",v3);
|
||||
|
||||
return v3;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
class MapModel3D : Model3D {
|
||||
int nDraw;
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
using System;
|
||||
using System.IO;
|
||||
|
||||
using OpenTK;
|
||||
using OpenTK.Graphics.OpenGL;
|
||||
|
||||
using ImageSharp;
|
||||
|
||||
namespace org.niclasundharald.engine
|
||||
{
|
||||
public class Texture
|
||||
{
|
||||
int tid;
|
||||
|
||||
public Texture(string filename)
|
||||
{
|
||||
init();
|
||||
load(filename);
|
||||
}
|
||||
|
||||
private void init(){
|
||||
this.tid = GL.GenTexture();
|
||||
}
|
||||
|
||||
private void load(string filename){
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -8,7 +8,8 @@ namespace org.niclasundharald.engine.graphics.primitives
|
|||
{
|
||||
public Cube(Vector3 position, float width)
|
||||
{
|
||||
Transformation = Matrix4.CreateScale(width) * Matrix4.CreateTranslation( position );
|
||||
Scale = Matrix4.CreateScale(width);
|
||||
Position = position;
|
||||
}
|
||||
|
||||
public override Model3D getModel3D()
|
||||
|
@ -63,8 +64,8 @@ namespace org.niclasundharald.engine.graphics.primitives
|
|||
|
||||
Model3D.setTriangle(vertexes, 4, e, a, d);
|
||||
Model3D.setTriangle(vertexes, 5, d, h, e);
|
||||
Model3D.setTriangle(vertexes, 6, g, f, b);
|
||||
Model3D.setTriangle(vertexes, 7, b, c, g);
|
||||
Model3D.setTriangle(vertexes, 6, b, f, g);
|
||||
Model3D.setTriangle(vertexes, 7, g, c, b);
|
||||
|
||||
Model3D.setTriangle(vertexes, 8, a, e, f);
|
||||
Model3D.setTriangle(vertexes, 9, f, b, a);
|
||||
|
|
|
@ -34,6 +34,15 @@
|
|||
<Reference Include="OpenTK.GLControl">
|
||||
<HintPath>..\packages\OpenTK.GLControl.1.1.2349.61993\lib\NET40\OpenTK.GLControl.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="ImageSharp">
|
||||
<HintPath>contrib\ImageSharp.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.ComponentModel.Composition" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Buffers">
|
||||
<HintPath>..\packages\System.Buffers.4.3.0\lib\netstandard1.1\System.Buffers.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
|
@ -51,6 +60,14 @@
|
|||
<Compile Include="graphics\Model3D.cs" />
|
||||
<Compile Include="graphics\ModelManager.cs" />
|
||||
<Compile Include="FileHelper.cs" />
|
||||
<Compile Include="graphics\Texture.cs" />
|
||||
<Compile Include="graphics\LoadedModel.cs" />
|
||||
<Compile Include="Actor.cs" />
|
||||
<Compile Include="ActorAction.cs" />
|
||||
<Compile Include="BallisticActor.cs" />
|
||||
<Compile Include="Physics.cs" />
|
||||
<Compile Include="graphics\SquaredMap.cs" />
|
||||
<Compile Include="exceptions\OutOfWorldException.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="OpenTK.dll.config" />
|
||||
|
@ -60,6 +77,10 @@
|
|||
<ItemGroup>
|
||||
<Folder Include="graphics\" />
|
||||
<Folder Include="graphics\primitives\" />
|
||||
<Folder Include="contrib\" />
|
||||
<Folder Include="contrib\ImageSharp.dll">
|
||||
</Folder>
|
||||
<Folder Include="exceptions\" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
|
@ -2,4 +2,7 @@
|
|||
<packages>
|
||||
<package id="OpenTK" version="2.0.0" targetFramework="net45" />
|
||||
<package id="OpenTK.GLControl" version="1.1.2349.61993" targetFramework="net45" />
|
||||
<package id="System.Buffers" version="4.3.0" targetFramework="net45" />
|
||||
<package id="System.IO" version="4.3.0" targetFramework="net45" />
|
||||
<package id="System.Runtime" version="4.3.0" targetFramework="net45" />
|
||||
</packages>
|
Loading…
Reference in New Issue