예제 #1
0
        /// <summary>
        /// Intended for internal accurate rendering only.
        /// </summary>
        /// <param name="cameraInfo"></param>
        /// <param name="container"></param>
        private static void RenderProp(RenderManager.CameraInfo cameraInfo, PropContainer container)
        {
            if ((container.propInstance.m_flags & 68) != 0)
            {
                return;
            }
            PropInfo info = container.propInstance.Info;
            Vector3  inaccuratePosition = container.propInstance.Position;
            Vector3  position           = new Vector3(container.extras["accx"], inaccuratePosition.y, container.extras["accz"]);

            if (!cameraInfo.CheckRenderDistance(position, info.m_maxRenderDistance) || !cameraInfo.Intersect(position, info.m_generatedInfo.m_size.y * info.m_maxScale))
            {
                return;
            }
            float      angle       = container.propInstance.Angle;
            Randomizer r           = new Randomizer(0);
            float      scale       = info.m_minScale + (float)((double)r.Int32(10000U) * ((double)info.m_maxScale - (double)info.m_minScale) * 9.99999974737875E-05);
            Color      color       = info.GetColor(ref r);
            Vector4    objectIndex = new Vector4(1f / 512f, 1f / 384f, 0.0f, 0.0f);
            InstanceID id          = new InstanceID();

            if (info.m_requireHeightMap)
            {
                Texture _HeightMap;
                Vector4 _HeightMapping;
                Vector4 _SurfaceMapping;
                TerrainManager.instance.GetHeightMapping(position, out _HeightMap, out _HeightMapping, out _SurfaceMapping);
                PropInstance.RenderInstance(cameraInfo, info, id, position, scale, angle, color, objectIndex, true, _HeightMap, _HeightMapping, _SurfaceMapping);
            }
            else
            {
                PropInstance.RenderInstance(cameraInfo, info, id, position, scale, angle, color, objectIndex, true);
            }
        }
예제 #2
0
        public void Properties()
        {
            var obj = new PropContainer <int> {
                Prop = 42
            };
            var clone = Ditto.DeepClone(obj);

            Assert.AreEqual(obj.Prop, clone.Prop);
        }
예제 #3
0
        public static PropWrapper GeneratePropWrapper(PropContainer propContainer)
        {
            PropWrapper  retVal               = new PropWrapper();
            PropInstance instance             = propContainer.propInstance;
            Dictionary <string, float> extras = propContainer.extras;

            retVal.infoIndex = instance.m_infoIndex;
            retVal.positionX = instance.m_posX;
            retVal.positionY = instance.m_posY;
            retVal.positionZ = instance.m_posZ;
            retVal.angle     = instance.Angle;
            retVal.single    = instance.Single;
            retVal.extraJson = JsonMapper.ToJson(extras);
            return(retVal);
        }
예제 #4
0
        public void CommonInterfaces()
        {
            var obj = new PropContainer <IEnumerable <int> > {
                Prop = Enumerable.Range(0, 10)
            };
            var clone = Ditto.DeepClone(obj);

            Assert.AreEqual(obj.Prop, clone.Prop);
            Assert.AreNotSame(obj.Prop, clone.Prop);

            obj = new PropContainer <IEnumerable <int> > {
                Prop = null
            };
            clone = Ditto.DeepClone(obj);
            Assert.Null(clone.Prop);
        }