wiki.sine.space | sinespace

Difference between revisions of "Scripting/STerrain"

From wiki.sine.space
Jump to: navigation, search
(Added Enabled)
Line 4: Line 4:
  
 
{{ScriptFunction|bool|Enabled|{get; set;}|Is the Terrain component enabled?|5=
 
{{ScriptFunction|bool|Enabled|{get; set;}|Is the Terrain component enabled?|5=
''-- 1 Object Reference to the Terrain object, Name: "terrain".''<br><br>
+
''Space.Host.ExecutingObject.Terrain.Enabled = false|6=<pre>--clicking this object will Enable/Disable it's Terrain component
local terrain = Space.Host.GetReference("terrain");<br><br>
+
thisGameObject = Space.Host.ExecutingObject
Space.Log(terrain.Terrain.Enabled);<br>
+
component = thisGameObject.Terrain
''-- prints the current state of the Terrain component (probably "True") to the console.''<br><br>
+
 
terrain.Terrain.Enabled = false;<br>
+
OnClick = function()
''-- Now the Terrain component is disabled.''<br>
+
component.Enabled = not component.Enabled
 +
end
 +
 
 +
 
 +
thisGameObject.AddClickable()
 +
thisGameObject.Clickable.OnClick(OnClick)</pre>
 
}}
 
}}
  

Revision as of 04:01, 13 October 2021

The STerrain class allows the script to work with the terrain-related data.

Properties

Enabled

bool Enabled {get; set;}

Is the Terrain component enabled?

Space.Host.ExecutingObject.Terrain.Enabled = false


--clicking this object will Enable/Disable it's Terrain component
thisGameObject = Space.Host.ExecutingObject
component = thisGameObject.Terrain

OnClick = function()
component.Enabled =  not component.Enabled
end


thisGameObject.AddClickable()
thisGameObject.Clickable.OnClick(OnClick)

Members

GetHeight

float GetHeight (float x, float y)

Gets the height at the (x,y) point. Floats x,y are given within the range from 0 to 1. If we want this script to work with global x, z coordinates, we need to divide their values by the width/length of the terrain respectively (if the terrain's bottom left corner is at the origin).

-- In this example, we are going to calculate the height of the 512x512 terrain at a global point (x = 206, z = 198).

-- 1 Object Reference to the Terrain object, Name: "terrain".

local terrain = Space.Host.GetReference("terrain");

Space.Log(terrain.Terrain.GetHeight (206/512,198/512));

-- prints the height of the terrain at the global point (x = 206, z = 198) to the console.


GetSteepness

float GetSteepness (float x, float y)

Gets the steepness at the (x,y) point. Floats x,y are given within the range from 0 to 1. If we want this script to work with global x, z coordinates, we need to divide their values by the width/length of the terrain respectively.

-- In this example, we are going to calculate the steepness of the 1024x1024 terrain at a global point (x = 408, z = 63).

-- 1 Object Reference to the Terrain object, Name: "terrain".

local terrain = Space.Host.GetReference("terrain");

Space.Log(terrain.Terrain.GetSteepness (408/1024,63/1024));

-- prints the steepness of the terrain at the global point (x = 408, z = 63) to the console.


GetNormal

SVector GetNormal (float x, float y)

Gets the normal vector (perpendicular to the surface) at the (x,y) point. Floats x,y are given within the range from 0 to 1. If we want this script to work with global x, z coordinates, we need to divide their values by the width/length of the terrain respectively.

-- In this example, we are going to find the normal vector of the 512x256 terrain at a global point (x = 172, z = 428).

-- 1 Object Reference to the Terrain object, Name: "terrain".

local terrain = Space.Host.GetReference("terrain");

Space.Log(terrain.Terrain.GetNormal(172/512,428/256));

-- prints x,y,z values of the normal vector at the global point (x = 172, z = 428) to the console.


GetSlope

SVector GetSlope (float x, float y)

Gets the slope vector at the (x,y) point. Floats x,y are given within the range from 0 to 1. If we want this script to work with global x, z coordinates, we need to divide their values by the width/length of the terrain respectively.

-- In this example, we are going to find the slope vector of the 1024x512 terrain at a global point (x = 256, z = 256).

-- 1 Object Reference to the Terrain object, Name: "terrain".

local terrain = Space.Host.GetReference("terrain");

Space.Log(terrain.Terrain.GetSlope(256/1024,256/512));

-- prints x,y,z values of the slope vector at the global point (x = 256, z = 256) to the console.


GetContour

SVector GetContour (float x, float y)

Gets the contour of the surface, expressed as a vector, at the (x,y) point. Floats x,y are given within the range from 0 to 1. If we want this script to work with global x, z coordinates, we need to divide their values by the width/length of the terrain respectively.

-- In this example, we are going to find the direction of the contour of the 512x512 terrain at a global point (x = 128, z = 128).

-- 1 Object Reference to the Terrain object, Name: "terrain".

local terrain = Space.Host.GetReference("terrain");

Space.Log(terrain.Terrain.GetContour(128/512,128/512));
-- prints x,y,z values of the contour direction at the global point (x = 128, z = 128) to the console.

-- The z value is going to be 0, because contours are two-dimensional.