Exemplo n.º 1
0
        internal float GetPropYPos(InstanceState state, float deltaHeight, Vector3 newPosition, bool followTerrain, bool isClone = false)
        {
            IPropsWrapper manager = PropLayer.Manager;
            float         y;

            float terrainHeight = Singleton <TerrainManager> .instance.SampleDetailHeight(newPosition);

            if (PropLayer.EML)
            {
                if (!manager.GetSnappingState())
                {
                    y = terrainHeight;
                }
                else if (manager.GetFixedHeight(id))
                { // If it's already fixed height, handle followTerrain. If the state is being cloned, don't use the terrain-height offset
                    y = newPosition.y + (isClone ? 0 : yTerrainOffset);
                    if (followTerrain)
                    {
                        y += terrainHeight - state.terrainHeight;
                    }
                }
                else
                { // Snapping is on and it is not fixed height yet
                    if (deltaHeight != 0)
                    {
                        manager.SetFixedHeight(id, true);
                        y = terrainHeight + deltaHeight;
                        yTerrainOffset = terrainHeight - state.terrainHeight;
                    }
                    else
                    {
                        y = terrainHeight;
                    }
                }
                return(y);
            }
            else
            {
                if (followTerrain)
                {
                    return(newPosition.y + TerrainManager.instance.SampleOriginalRawHeightSmooth(newPosition) - state.terrainHeight);
                }
            }

            return(newPosition.y);

            //Log.Debug($"{path}\nstate:{state.terrainHeight} tH-state:{terrainHeight - state.terrainHeight}, yTO:{yTerrainOffset}\n" +
            //    $"ft:{followTerrain}, ts:{MoveItTool.treeSnapping}, fh:{trees[treeID].FixedHeight}, dh:{deltaHeight}\n" +
            //    $"FRAME  - newY:{newPosition.y}, oldY:{position.y}, diff:{newPosition.y - position.y}\n" +
            //    $"ADJUST - adjY:{y}, newY:{newPosition.y}, diff:{y - newPosition.y}\n" +
            //    $"TOTAL  - adjY:{y}, oldY:{position.y}, diff:{y - position.y}\n" +
            //    $"HEIGHT - adjY:{y}, terrainHeight:{terrainHeight}, diff:{y - terrainHeight}");
        }
Exemplo n.º 2
0
        public static void Initialise()
        {
            EML = isEMLInstalled();
            Log.Debug($"Move It EML: {EML}");

            if (EML)
            {
                Manager = new EPropsManager();
            }
            else
            {
                Manager = new PropsManager();
            }
        }