Esempio n. 1
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
 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);
        }
Esempio n. 7
0
        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
 }
Esempio n. 9
0
        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();
        }
Esempio n. 10
0
        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);
        }
Esempio n. 12
0
        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);
        }
Esempio n. 13
0
        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);
        }
Esempio n. 14
0
        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);
            }
        }
Esempio n. 15
0
 /// <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));
 }
Esempio n. 20
0
 public new object Clone()
 {
     //deep-copy
     return(new Actor3D(ID, ActorType, StatusType, transform3D.Clone() as Transform3D));
 }
Esempio n. 21
0
 public new object Clone()
 {
     return(new Camera3D(ID, ActorType, StatusType, Transform3D.Clone() as Transform3D,
                         projectionParameters.Clone() as ProjectionParameters, viewPort));
 }
Esempio n. 22
0
        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);
        }
Esempio n. 23
0
        /// <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);
            }
        }