public new object Clone() { Tile tile = new Tile("clone - " + ID, ActorType, StatusType, Transform3D.Clone() as Transform3D, EffectParameters.Clone() as OurEffectParameters, Model, IsBlocking, TileType); tile.ControllerList.AddRange(GetControllerListClone()); return(tile); }
public new object Clone() { PathMoveTile pathMoveTile = new PathMoveTile(ID, ActorType, StatusType, Transform3D.Clone() as Transform3D, EffectParameters.Clone() as OurEffectParameters, Model, IsBlocking, TileType); pathMoveTile.ControllerList.AddRange(GetControllerListClone()); return(pathMoveTile); }
public new object Clone() { PlayerTile playerTile = new PlayerTile("clone - " + ID, ActorType, StatusType, Transform3D.Clone() as Transform3D, EffectParameters.Clone() as OurEffectParameters, Model, TileType); playerTile.ControllerList.AddRange(GetControllerListClone()); return(playerTile); }
public new object Clone() { return(new CollidableObject("clone - " + ID, //deep ActorType, //deep StatusType, Transform3D.Clone() as Transform3D, //deep EffectParameters.Clone() as EffectParameters, //hybrid - shallow (texture and effect) and deep (all other fields) Model)); //shallow i.e. a reference }
public new object Clone() { AttachableTile attachableTile = new AttachableTile(ID, ActorType, StatusType, Transform3D.Clone() as Transform3D, EffectParameters.Clone() as OurEffectParameters, Model, TileType); attachableTile.ControllerList.AddRange(GetControllerListClone()); return(attachableTile); }
public new object Clone() { MovingPlatformTile platform = new MovingPlatformTile("clone - " + ID, ActorType, StatusType, Transform3D.Clone() as Transform3D, EffectParameters.Clone() as OurEffectParameters, Model, IsBlocking, TileType); platform.ControllerList.AddRange(GetControllerListClone()); return(platform); }
public void CloneTest() { Transform3D original = new Transform3D(new Vector3(0, 0, 20), Vector3.Zero, Vector3.One, -Vector3.UnitZ, Vector3.UnitY); Transform3D clone = (Transform3D)original.Clone(); Assert.AreEqual(original, clone); //change clone and should be distince from original because its a deep copy clone.Translation = new Vector3(100, 300, 10); Assert.AreNotEqual(original, clone); }
public new object Clone() { return(new CollidablePickupObject("clone - " + ID, //deep ActorType, //deep StatusType, //deep Transform3D.Clone() as Transform3D, //deep EffectParameters.Clone() as EffectParameters, //deep this.IVertexData, //shallow - its ok if objects refer to the same vertices CollisionPrimitive.Clone() as ICollisionPrimitive, //deep ObjectManager, //shallow - reference pickupParameters.Clone() as PickupParameters)); //deep }
private void disableChangeObject() { Cursor = Cursors.Default; clickedKey = Keys.None; changeMode = ChangeMode.None; var t = currentTrans.Clone() as Transform3D; if (t != null) { transforms.Add(t); } currentTrans = new TranslateTransform3D(); }
public new object Clone() { PrimitiveObject clone = new PrimitiveObject(ID, ActorType, StatusType, Transform3D.Clone() as Transform3D, EffectParameters.Clone() as EffectParameters, vertexData.Clone() as IVertexData); //if we ever want to clone prims that ALREADY have controllers //then we need to add cloning of controllers here foreach (Controller controller in this.ControllerList) { clone.ControllerList.Add(controller.Clone() as Controller); } return(clone); }
public new object Clone() { ActivatableTile activatableTile = new ActivatableTile("clone - " + ID, ActorType, StatusType, Transform3D.Clone() as Transform3D, EffectParameters.Clone() as OurEffectParameters, Model, IsBlocking, TileType); if (ControllerList != null) { foreach (IController controller in ControllerList) { activatableTile.ControllerList.Add(controller.Clone() as IController); } } return(activatableTile); }
public void ResetTest() { //original and a copy for comparison after reset Transform3D original = new Transform3D(new Vector3(0, 0, 20), Vector3.Zero, Vector3.One, -Vector3.UnitZ, Vector3.UnitY); Transform3D clone = (Transform3D)original.Clone(); //change somethings in the original original.Translation = Vector3.Zero; original.Rotation = new Vector3(15, 45, 90); original.Scale = new Vector3(1, 2, 3); original.Look = Vector3.UnitY; original.Up = Vector3.UnitX; //reset the original original.Reset(); //ensure its been reset Assert.AreEqual(original, clone); }
public new object Clone() { ModelObject actor = new ModelObject("clone - " + ID, //deep ActorType, //deep StatusType, Transform3D.Clone() as Transform3D, //deep EffectParameters.Clone() as EffectParameters, //hybrid - shallow (texture and effect) and deep (all other fields) model); //shallow i.e. a reference //remember if we clone a model then we need to clone any attached controllers if (ControllerList != null) { //clone each of the (behavioural) controllers foreach (IController controller in ControllerList) { actor.ControllerList.Add(controller.Clone() as IController); } } return(actor); }
protected static void ExportModel(BinaryWriter writer, GeometryModel3D model, Transform3D t) { var mesh = (MeshGeometry3D)model.Geometry; var normals = mesh.Normals; if (normals == null || normals.Count != mesh.Positions.Count) { normals = CalculateNormals(mesh.Positions, mesh.TriangleIndices); } // TODO: Also handle non-uniform scale var matrix = t.Clone().Value; matrix.OffsetX = 0; matrix.OffsetY = 0; matrix.OffsetZ = 0; var normalTransform = new MatrixTransform3D(); for (int i = 0; i < mesh.TriangleIndices.Count; i += 3) { int i0 = mesh.TriangleIndices[i + 0]; int i1 = mesh.TriangleIndices[i + 1]; int i2 = mesh.TriangleIndices[i + 2]; // Normal var faceNormal = normalTransform.Transform(normals[i0] + normals[i1] + normals[i2]); faceNormal.Normalize(); WriteVector(writer, faceNormal); // Vertices WriteVertex(writer, t.Transform(mesh.Positions[i0])); WriteVertex(writer, t.Transform(mesh.Positions[i1])); WriteVertex(writer, t.Transform(mesh.Positions[i2])); // Attributes const ushort attribute = 0; writer.Write(attribute); } }
/// <summary> /// Returns the components of this <see cref="Transform3D"/>'s matrix in column-major order. If it does not have a matrix, one will be created via the promotion of a duplicate <see cref="Transform3D"/>. /// </summary> /// <returns></returns> public static float[] GetMatrixComponents(this Transform3D trs) { return(trs.Clone().promote(Transform3D.GENERAL).getMatrix().GetMatrixComponents()); }
public new object Clone() { MovingObstacleSpawner spawner = new MovingObstacleSpawner(ID, ActorType, StatusType, Transform3D.Clone() as Transform3D, EffectParameters.Clone() as EffectParameters, IVertexData.Clone() as IVertexData, CollisionPrimitive.Clone() as ICollisionPrimitive, ObjectManager); spawner.ControllerList.AddRange(GetControllerListClone()); return(spawner); }
public new object Clone() { return(new OurPrimitiveObject(ID, ActorType, StatusType, Transform3D.Clone() as Transform3D, EffectParameters.Clone() as OurEffectParameters, IVertexData.Clone() as IVertexData)); }
public new object Clone() { return(new OurDrawnActor3D(ID, ActorType, StatusType, Transform3D.Clone() as Transform3D, EffectParameters.Clone() as OurEffectParameters)); }
public new object Clone() { return(new OurCollidableObject("clone - " + ID, ActorType, StatusType, Transform3D.Clone() as Transform3D, EffectParameters.Clone() as OurEffectParameters, Model, IsBlocking)); }
public new object Clone() { //deep-copy return(new Actor3D(ID, ActorType, StatusType, transform3D.Clone() as Transform3D)); }
public new object Clone() { return(new Camera3D(ID, ActorType, StatusType, Transform3D.Clone() as Transform3D, projectionParameters.Clone() as ProjectionParameters, viewPort)); }
public new object Clone() { CollidablePrimitiveObject primitive = new CollidablePrimitiveObject(ID, ActorType, StatusType, Transform3D.Clone() as Transform3D, EffectParameters.Clone() as EffectParameters, IVertexData.Clone() as IVertexData, CollisionPrimitive.Clone() as ICollisionPrimitive, ObjectManager); primitive.ControllerList.AddRange(GetControllerListClone()); return(primitive); }
/// <summary> /// Writes a <see cref="GeometryModel3D"/> to a <see cref="BinaryWriter"/> in STL binary format. /// </summary> /// <param name="writer">The <see cref="BinaryWriter"/> to write to.</param> /// <param name="model">The model to write.</param> /// <param name="t">All vertices are transformed with this transform before written</param> protected override void ExportModel(BinaryWriter writer, GeometryModel3D model, Transform3D t) { var mesh = (MeshGeometry3D)model.Geometry; var normals = mesh.Normals; if (normals == null || normals.Count != mesh.Positions.Count) { normals = MeshGeometryHelper.CalculateNormals(mesh); } // TODO: Also handle non-uniform scale var matrix = t.Clone().Value; matrix.OffsetX = 0; matrix.OffsetY = 0; matrix.OffsetZ = 0; var normalTransform = new MatrixTransform3D(matrix); var material = model.Material; var dm = material as DiffuseMaterial; var mg = material as MaterialGroup; if (mg != null) { foreach (var m in mg.Children) { if (m is DiffuseMaterial) { dm = m as DiffuseMaterial; } } } ushort attribute = 0; if (dm != null) { var scb = dm.Brush as SolidColorBrush; if (scb != null) { byte r = scb.Color.R; byte g = scb.Color.G; byte b = scb.Color.B; attribute = (ushort)((1 << 15) | ((r >> 3) << 10) | ((g >> 3) << 5) | (b >> 3)); } } for (int i = 0; i < mesh.TriangleIndices.Count; i += 3) { int i0 = mesh.TriangleIndices[i + 0]; int i1 = mesh.TriangleIndices[i + 1]; int i2 = mesh.TriangleIndices[i + 2]; // Normal var faceNormal = normalTransform.Transform(normals[i0] + normals[i1] + normals[i2]); faceNormal.Normalize(); WriteVector(writer, faceNormal); // Vertices WriteVertex(writer, t.Transform(mesh.Positions[i0])); WriteVertex(writer, t.Transform(mesh.Positions[i1])); WriteVertex(writer, t.Transform(mesh.Positions[i2])); // Attributes writer.Write(attribute); } }