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}"); }
public static void Initialise() { EML = isEMLInstalled(); Log.Debug($"Move It EML: {EML}"); if (EML) { Manager = new EPropsManager(); } else { Manager = new PropsManager(); } }