import rhinoscriptsyntax as rs
##############################
import rhinoscriptsyntax as rs
import scriptcontext as sc
import Rhino
import random, time, sys, os ###
sys.path.append("P:/")     ###
sys.path.append("P:/WWW/limafi/dm2")     ###
import DM_lib as dm        ### reload( dm )
##############################      


###points for shadow



coords = []
for i in range (-10,11):
    for j in range(-20, 11):
        for k in range(50, 51):
            #print i
            x = i #*random.uniform(0, 3)
            y = j
            z = k
            if random.uniform(0,100) < 10:
                z = z+20
            if x > 0:
                x += 10
            cor = [x, y, z]
            coords.append( cor )
            #rs.AddPoint( cor )
points = rs.AddPoints( coords )

for pnt in points[0:200]:
    rs.ObjectColor( pnt, [0,200,0])
    if random.uniform(0,1) < 0.1:
        rs.Redraw()

random.shuffle( coords )
#rs.AddCurve( coords, 3)





rs.UnitSystem(4)                                        # km = 5, meters = 4, cm = 3 etc
rs.ShowGrid(None, 0)                                    # grid > 0 = off
rs.ShowGridAxes(None, 1)                                # y/y/z axen display > 0/1 = off/on
#rs.ViewDisplayMode(rs.CurrentView(), "wireframe")
rs.ViewDisplayMode(rs.CurrentView(), "rendered")
rs.Command("cplane w t enter", 0)						# cPlane World Top
dm.PointRadius(displayModeX=0, rad=3, styl=3)
dm.printDisplay(1, 500)                                  # nomen est omen
rs.EnableRedraw(0)
rs.CurrentView("Perspective")
#dm.getCameraTarget()
dm.setCameraTarget( [8139.443334, 9349.36950264, 5994.02657642], [7901.09911088, 1765.13334811, 5994.02657642], lens=30, rota=0, upVec=[0,0,1] ) # ... danke, andi !

rs.UnselectAllObjects()
######################
#### flowAlongSurface .. cool, viel zu langsam, ua wg renderMesh etc

if 0:
    base = rs.ObjectsByName("baseSrf")[0]
    targ = rs.ObjectsByName("DEM_47_28_2_013_34_3")[0]
    blende = rs.ObjectsByName("blende")[0]

    dm.newEmptyLayer("PROJ", [200,100,100])
    dots = rs.ObjectsByName("dots")
    for dot in dots:
        dm.flowAlongSrf(dot, base=base, target=targ)
        rs.Redraw()


######################
#### directional light
rs.DeleteObjects(rs.ObjectsByType( 256 ))
dL = rs.AddDirectionalLight([0,0,100], [0,0,0])
rs.MoveObject(dL, [5300,0,3000])

rs.LightColor(dL, [255,0,0])
obj = rs.coercerhinoobject(dL)
geom = obj.Geometry
newIntensity = 100.1 
geom.Intensity = newIntensity
obj.CommitChanges()

################################################################################
#### render shadow settings : "transparent objects always cast shadows" > 100% !



if 1: ### over the year
    for i in range(1, 365+1):
        dm.esc()
        dat = dm.number2date(i, year=2025)
        #print dat
        mon = dat[0]
        day = dat[1]
        sunVec = dm.setSun(year=2025, mon=mon, day=day, hour=14, min=0, sec=0, verbose=0)
        rs.LightDirection(dL, sunVec[2])
        rs.Redraw()

if 0: ## from 8am to 8pm
    for i in range(60*6, 60*(6+12)):
        dm.esc()
        tim = dm.number2minute(i)
        #print dat
        hor = tim[0]
        min = tim[1]
        sunVec = dm.setSun(year=2025, mon=6, day=20, hour=hor, min=min, sec=0, verbose=0)
        rs.LightDirection(dL, sunVec[2])
        rs.Redraw()