budnhead/org.budnhead/core/WorldObject.cs

72 lines
1.5 KiB
C#
Raw Permalink Normal View History

2017-05-01 01:33:33 +02:00
using System;
using System.Collections.Generic;
using OpenTK;
2017-05-09 23:41:50 +02:00
using org.budnhead.graphics;
2017-05-01 01:33:33 +02:00
2017-05-09 23:41:50 +02:00
namespace org.budnhead.core
2017-05-01 01:33:33 +02:00
{
public abstract class WorldObject
{
private List<WorldObject> children;
public WorldObject()
{
children = new List<WorldObject>();
}
public virtual Model3D getModel3D(){
return null;
}
public readonly BufferedValueInstance<Vector3> Position = new BufferedValueInstance<Vector3>(new Vector3());
public readonly BufferedValueInstance<Matrix4> Rotation = new BufferedValueInstance<Matrix4>(Matrix4.Identity);
public readonly BufferedValueInstance<Matrix4> Scale = new BufferedValueInstance<Matrix4>(Matrix4.Identity);
2017-05-01 01:33:33 +02:00
public Matrix4 Transformation {
get { return (Scale.Value * Rotation.Value) * Matrix4.CreateTranslation( Position.Value ) ; }
2017-05-01 01:33:33 +02:00
}
public Matrix4 BufferedTransformation {
get { return (Scale.BufferedValue * Rotation.BufferedValue) * Matrix4.CreateTranslation( Position.BufferedValue ) ; }
}
2017-05-01 01:33:33 +02:00
public void addChild(WorldObject wo){
if (!children.Contains(wo)){
children.Add(wo);
}
}
public void removeChild(WorldObject wo){
if (children.Contains(wo)){
children.Remove(wo);
}
}
public WorldObject[] Children{
get { return this.children.ToArray(); }
}
}
public class ObjectGroup : WorldObject {
}
2017-05-04 23:57:00 +02:00
public class DumpObject : WorldObject {
Model3D model3d;
public Model3D Model3D {
get { return this.model3d; }
set { this.model3d = value; }
}
public override Model3D getModel3D()
{
return model3d;
}
}
2017-05-01 01:33:33 +02:00
}