Перевод Оф. Уроков на Русский язык. - Форум Игроделов
Вт, 07 Май 2024, 11:58 
 
Приветствую Вас Гость Главная | Регистрация | Вход
Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум Игроделов » ДРУГИЕ КОНСТРУКТОРЫ ИГР и ИГРОВЫЕ ДВИЖКИ » COPPER CUBE » Перевод Оф. Уроков на Русский язык. (буду потихоньку переводить.)
Перевод Оф. Уроков на Русский язык.
ЛевшаДата: Вс, 15 Май 2011, 20:21 | Сообщение # 1
Черный Волк
 
Сообщений: 7257
Награды: 30
Репутация: 3313
Статус: Offline
Эту тему резервирую для переводов оф. уроков по СС.
Здесь будут размещаться только уроки! Обсуждать в другой теме!
Постинг в этой теме категорически запрещен! Кроме уроков ничего не постим!


X.cor.R (Prologue)
 
СообщениеЭту тему резервирую для переводов оф. уроков по СС.
Здесь будут размещаться только уроки! Обсуждать в другой теме!
Постинг в этой теме категорически запрещен! Кроме уроков ничего не постим!

Автор - Левша
Дата добавления - 15 Май 2011 в 20:21
ЛевшаДата: Вс, 15 Май 2011, 20:49 | Сообщение # 2
Черный Волк
 
Сообщений: 7257
Награды: 30
Репутация: 3313
Статус: Offline
3D Перемещение обьектов с помощью скриптового языка Squirrel.

Этот пример покажет, как двигать 3D объект в сцене Coppercube c использованием скриптового языка Squirrel. Этот пример применим в случае компилирования вашего проекта под платформу Windows .( EXE). Если вы компилируете для версии Flash, используйте скриптинг на ActionScript 3.
Для начала, выполните следующие действия:
Запустите редактор CopperCube и создайте новую Free 3D scene . Используйте простые сцены, не должно быть skybox или cube с именем *cubeMesh* в этой сцене.
Добавьте plane, используя *Create a plane* кнопку на вкладке *Scene editing* оставив значения по умолчанию.
Подправьте позиции обьектов, чтоб сцена выглядела примерно так:

Сохраните вашу сцену как *test.ccb*. Скомпилируйте вашу сцену как Windows .(ЕХЕ), используя путь *Tools -> Test as Windows Application* или *File -> Publish -> Publish as Windows Application*. файл с именем test.exe теперь должен находиться там, где вы сохранили test.ccb файл.
Теперь создайте пустой текстовый файл в той же дирректории, где сохранен *test.ccb* файл и назовите его *test.nut*. Редактировать этот файл можно с выбранного вами, любого текстового редактора , рекомендуется: Notepad + +, (он поддерживает Squirrel подсветку синтаксиса). При компилировании файла, как Windows. (EXE), CopperCube будет включать этот сценарий в .EXE файл и использовать его в качестве основного сценария (скрипта).
Напишите следующий код в ваш *test.nut*. файл:

Если вы теперь запустите приложение test.exe куб будет двигаться вверх при каждом нажатии"X".
Этот пример работает путем доступа к Squirrel API. Вы можете управлять всеми аспектами 3D сцены с этим API: текстуры, материалы, позиции, объекты и т.д.

Прикрепления: 9628956.jpg (17.2 Kb) · 2715985.jpg (18.7 Kb)


X.cor.R (Prologue)
 
Сообщение
3D Перемещение обьектов с помощью скриптового языка Squirrel.

Этот пример покажет, как двигать 3D объект в сцене Coppercube c использованием скриптового языка Squirrel. Этот пример применим в случае компилирования вашего проекта под платформу Windows .( EXE). Если вы компилируете для версии Flash, используйте скриптинг на ActionScript 3.
Для начала, выполните следующие действия:
Запустите редактор CopperCube и создайте новую Free 3D scene . Используйте простые сцены, не должно быть skybox или cube с именем *cubeMesh* в этой сцене.
Добавьте plane, используя *Create a plane* кнопку на вкладке *Scene editing* оставив значения по умолчанию.
Подправьте позиции обьектов, чтоб сцена выглядела примерно так:

Сохраните вашу сцену как *test.ccb*. Скомпилируйте вашу сцену как Windows .(ЕХЕ), используя путь *Tools -> Test as Windows Application* или *File -> Publish -> Publish as Windows Application*. файл с именем test.exe теперь должен находиться там, где вы сохранили test.ccb файл.
Теперь создайте пустой текстовый файл в той же дирректории, где сохранен *test.ccb* файл и назовите его *test.nut*. Редактировать этот файл можно с выбранного вами, любого текстового редактора , рекомендуется: Notepad + +, (он поддерживает Squirrel подсветку синтаксиса). При компилировании файла, как Windows. (EXE), CopperCube будет включать этот сценарий в .EXE файл и использовать его в качестве основного сценария (скрипта).
Напишите следующий код в ваш *test.nut*. файл:

Если вы теперь запустите приложение test.exe куб будет двигаться вверх при каждом нажатии"X".
Этот пример работает путем доступа к Squirrel API. Вы можете управлять всеми аспектами 3D сцены с этим API: текстуры, материалы, позиции, объекты и т.д.


Автор - Левша
Дата добавления - 15 Май 2011 в 20:49
МаэстроДата: Вс, 15 Май 2011, 20:49 | Сообщение # 3
"Лучший скриншот на FPSC. Осень 2009"
 
Сообщений: 236
Награды: 2
Репутация: 26
Статус: Offline
3D Collision with Squirrel (создание взаимодействий)

В данном уроке будет описано создание взаимодействий (коллизий) между курсором мыши и объектом. Подходит только для приложения Windows (.exe)
Для начала сделайте следующее:
Запустите программу CoperCube и создайте новую 3D сцену. Оформите сцену как обычно, используя скайбокс и добавьте куб с названием 'cubeMesh'.
Добавьте второй куб со стандартными параметрами с помощью кнопки 'Create a cube' в закладке 'Scene editing'.
Сдвиньте кубы так, как показано на картинке:


Измените название первого куба, используя закладку 'Name' на 'cubeMesh1', а также имя второго куба на 'cubeMesh2' (показано на изображении выше). Примечание: названия чувствительны к регистру, потому следует убедиться что названия введены в точности так, как написано выше.
Сохраните сцену как 'test.ccb'
Запустите тест как Windows (.exe), используя вкладки 'Tools -> Test as Windows Application' или 'File -> Publish -> Publish as Windows Application'. Файл названный test.exe теперь будет записан там, где вы сохранили файл test.ccb
Теперь создайте пустой текстовый файл в той же папке, где находится ваш test.ccb и назовите его 'test.nut'. Откройте созданный файл с помощью любого текстового редактора (рекомендуется: Notepad++, он поддерживает подсветку синтаксиса Squirrel). При тесте вашего файла в качестве Windows .exe, CopperCube включит этот файл в .exe и будет использовать в качестве главного скрипта.
Используйте следующий код:
Code
// register for the drawing event
ccbRegisterOnFrameEvent("onFrameDrawing");
function onFrameDrawing()
{
local mouseX = ccbGetMousePosX();
local mouseY = ccbGetMousePosY();
// test collision
local cube1 = ccbGetSceneNodeFromName("cubeMesh1");
local cube2 = ccbGetSceneNodeFromName("cubeMesh2");
local endPoint3d = ccbGet3DPosFrom2DPos(mouseX, mouseY);
local startPos3D = ccbGetSceneNodeProperty(ccbGetActiveCamera(), "Position");
local cube1Hovered =
ccbDoesLineCollideWithBoundingBoxOfSceneNode(cube1, startPos3D.x, startPos3D.y, startPos3D.z, endPoint3d.x, endPoint3d.y, endPoint3d.z);
local cube2Hovered =
ccbDoesLineCollideWithBoundingBoxOfSceneNode(cube2, startPos3D.x, startPos3D.y, startPos3D.z, endPoint3d.x, endPoint3d.y, endPoint3d.z);

ccbSetSceneNodeMaterialProperty(cube1, 0, "Wireframe", cube1Hovered);
ccbSetSceneNodeMaterialProperty(cube2, 0, "Wireframe", cube2Hovered);
}

Теперь когда вы вновь запустите приложение (Tools -> 'Test As Windows Application (.exe)'), будет включен «каркасный режим» для куба над которым находится указатель мыши. Результат должен выглядеть так:


Этот пример основан на использовании Squirell API. С его помощью вы можете управлять всеми аспектами сцены: текстурами, материалами, позициями, объектами и т.д.
 
Сообщение3D Collision with Squirrel (создание взаимодействий)

В данном уроке будет описано создание взаимодействий (коллизий) между курсором мыши и объектом. Подходит только для приложения Windows (.exe)
Для начала сделайте следующее:
Запустите программу CoperCube и создайте новую 3D сцену. Оформите сцену как обычно, используя скайбокс и добавьте куб с названием 'cubeMesh'.
Добавьте второй куб со стандартными параметрами с помощью кнопки 'Create a cube' в закладке 'Scene editing'.
Сдвиньте кубы так, как показано на картинке:


Измените название первого куба, используя закладку 'Name' на 'cubeMesh1', а также имя второго куба на 'cubeMesh2' (показано на изображении выше). Примечание: названия чувствительны к регистру, потому следует убедиться что названия введены в точности так, как написано выше.
Сохраните сцену как 'test.ccb'
Запустите тест как Windows (.exe), используя вкладки 'Tools -> Test as Windows Application' или 'File -> Publish -> Publish as Windows Application'. Файл названный test.exe теперь будет записан там, где вы сохранили файл test.ccb
Теперь создайте пустой текстовый файл в той же папке, где находится ваш test.ccb и назовите его 'test.nut'. Откройте созданный файл с помощью любого текстового редактора (рекомендуется: Notepad++, он поддерживает подсветку синтаксиса Squirrel). При тесте вашего файла в качестве Windows .exe, CopperCube включит этот файл в .exe и будет использовать в качестве главного скрипта.
Используйте следующий код:
Code
// register for the drawing event
ccbRegisterOnFrameEvent("onFrameDrawing");
function onFrameDrawing()
{
local mouseX = ccbGetMousePosX();
local mouseY = ccbGetMousePosY();
// test collision
local cube1 = ccbGetSceneNodeFromName("cubeMesh1");
local cube2 = ccbGetSceneNodeFromName("cubeMesh2");
local endPoint3d = ccbGet3DPosFrom2DPos(mouseX, mouseY);
local startPos3D = ccbGetSceneNodeProperty(ccbGetActiveCamera(), "Position");
local cube1Hovered =
ccbDoesLineCollideWithBoundingBoxOfSceneNode(cube1, startPos3D.x, startPos3D.y, startPos3D.z, endPoint3d.x, endPoint3d.y, endPoint3d.z);
local cube2Hovered =
ccbDoesLineCollideWithBoundingBoxOfSceneNode(cube2, startPos3D.x, startPos3D.y, startPos3D.z, endPoint3d.x, endPoint3d.y, endPoint3d.z);

ccbSetSceneNodeMaterialProperty(cube1, 0, "Wireframe", cube1Hovered);
ccbSetSceneNodeMaterialProperty(cube2, 0, "Wireframe", cube2Hovered);
}

Теперь когда вы вновь запустите приложение (Tools -> 'Test As Windows Application (.exe)'), будет включен «каркасный режим» для куба над которым находится указатель мыши. Результат должен выглядеть так:


Этот пример основан на использовании Squirell API. С его помощью вы можете управлять всеми аспектами сцены: текстурами, материалами, позициями, объектами и т.д.

Автор - Маэстро
Дата добавления - 15 Май 2011 в 20:49
МаэстроДата: Сб, 28 Май 2011, 15:31 | Сообщение # 4
"Лучший скриншот на FPSC. Осень 2009"
 
Сообщений: 236
Награды: 2
Репутация: 26
Статус: Offline
Кое-как перевел CopperCube Squirrel scripting reference Ошибок скорее всего много. Кое-где перевод не совсем корректный ибо я не совсем понял суть переменных. Если кто-то знает что делает та или иная функция - скажите, внесу поправки.

CopperCube Squirrel scripting reference

CopperCube обеспечивает очень простой интерфейс для управления всеми объектами 3D сцены in в вашем windows .exe файле. Смотрите описание скриптинга Squirrel для того чтобы получить краткое описание того, как это сделать. Данный документ содержит все доступные функции.

Большинство этих функций нужны для манипуляции так называемыми 'узлами сцены'. Узел сцены – ничто иное, как 3d объект со своими параметрами: позицией, углом поворота, размером, материалом и дочерними объектами.

Обработка узлов сцены
ccbCloneSceneNode
ccbGetActiveCamera
ccbGetChildSceneNode
ccbGetRootSceneNode
ccbGetSceneNodeChildCount
ccbGetSceneNodeFromName
c cbGetSceneNodeMaterialCount
ccbGetSceneNodeMaterialProperty
ccbRemoveSceneNode
ccbSetActiveCamera
ccbSetSceneNodeMaterialProperty
ccbSe tSceneNodeMaterialProperty
ccbSetSceneNodePositionWithoutCollision
ccbSetSceneNodeProperty
События
ccbRegisterKeyDownEvent
ccbRegisterK eyUpEvent
ccbRegisterMouseDownEvent
ccbRegisterMouseUpEvent
ccbRegisterOnFrameEvent
Рисование
ccbDrawColoredRectangle
ccbDrawTextureRe ctangle
ccbDrawTextureRectangleWithAlpha
Коллизии
ccbGet3DPosFrom2DPos
ccbGet2DPosFrom3DPos
ccbGetCollisionPointOfWorldWithLine
ccbDoe sLineCollideWithBoundingBoxOfSceneNode
Другое
ccbEndProgram
ccbLoadTexture
ccbGetMousePosX
ccbGetMousePosY
ccbSetCloseOnEscapePressed
c cbSetCursorVisible
ccbSwitchToScene
ccbPlaySound
ccbGetCopperCubeVariable
ccbSetCopperCubeVariable

ccbCloneSceneNode(node)

Соз дает новый узел сцены, основанный на существующем узле. Creates a new scene node based on an existing scene node.

Параметр 'node' – выходящий узел сцены. Вы можете получить уже существующий узел сцены например с помощью ccbGetSceneNodeFromName()

Возврат: Новый узел сцены.

Примеры: local sourceNode = ccbGetSceneNodeFromName("myNode");
local newscenenode = ccbCloneSceneNode(sourceNode);

Этот скрипт создает копию существующего узла с названием 'myNode'.

ccbGetActiveCamera()

Возвращает активную в настоящее время камеру сцены.

ccbSetActiveCamera(node)

Устанавливает активную в настоящее время камеру сцены. Параметр 'node' должен быть узлом сцены камеры.

ccbGetChildSceneNode(parentSceneNode, childIndex)

Возвращает дочерний узел родительского узла. ChildIndex должен быть >= 0 и < ccbGetSceneNodeChildCount.

Пример: local root = ccbGetRootSceneNode();
local count = ccbGetSceneNodeChildCount(root);

for(local i=0; i {
local child = ccbGetChildSceneNode(root, i);
print("node:" + ccbSetSceneNodeMaterialProperty(child, "Name") + "\n\n");
}
Этот пример печатает название всех детских узлов сцены корня.

ccbGetRootSceneNode()

Возвращает корневой узел сцены. Вы не можете удалить его You cannot remove it and и нет смысла изменять его характеристики, но вы можете использовать его как стартовую точку для повторения граф сцены.. Смотрите на ccbGetSceneNodeChildCount для примера.

Возврат: корневой узел сцены.

ccbGetSceneNodeChildCount(sceneNode)

Показывает количество дочерних узлов сцены.

Пример: local root = ccbGetRootSceneNode();
local count = ccbGetSceneNodeChildCount(root);

print("Scene nodes in the top level of the scene graph:" + count);
Этот пример покажет «2» если в вашей сцене два узла.

ccbGetSceneNodeFromName(name)

Ищет целый граф сцены для узла сцены с этим именем. Пожалуйста, заметьте, что регистр учитывается. Если данные найдены, будет выведен результат, иначе - пустой показатель.

Пример: local s = ccbGetSceneNodeFromName("testCube");

if (s) print("found node.\n");
else
print("not found the node.\n")
Ищет узел сцены с названием 'testCube' и печатает некоторый текст.

ccbGetSceneNodeMaterialCount(sceneNode)

Показывает количество материалов узла сцены.

Пример: local s = ccbGetSceneNodeFromName("testCube");
local n = ccbGetSceneNodeMaterialCount(s);

print("the scene node has " + n + " materials");
Печатает количество материалов в узле 'testCube'

ccbGetSceneNodeMaterialProperty(sceneNode, materialIndex, propertyName)

Показывает свойства материала узла сцены.
Параметры:
sceneNode: узел сцены.
materialIndex: Индекс материала. Должен быть больше или равен нуля и меньше чем ccbGetSceneNodeMaterialCount().
propertyName: имя материала. Также отображается в редакторе в колонке слева. Возможные значения: "Type", "Ambient", "Diffuse", "Emissive", "Specular", "Shininess", "Param1", "Param2", "Texture1", "Texture2", "Texture3", "Texture4", "Wireframe", "GouraudShading", "Lightning", "ZBuffer", "ZWriteEnable", "BackfaceCulling", "BilinearFilter", "TrilinearFilter", "AnisotropicFilter", "FogEnable", "NormalizeNormals".

Пример: local s = ccbGetSceneNodeFromName("testCube");
local t = ccbGetSceneNodeMaterialProperty(s, 0, "Texture1");

print("texture of the cube is: " + t);
Печатает название комплекта текстур в существующем узле сцены 'testCube'. Печатает что-то вроде 'texture of the new cube is: textures/editor_defaults/default_texture.png'

ccbGetSceneNodeProperty(sceneNode, propertyName)

Показывает значение характеристик узла сцены. propertyName также отображается в окне property редактора слева. Возможные названия зависят от типа узла но обычно имеют такие названия как 'Name', 'Position', 'Rotation', 'Scale', 'Visible' являющиеся доступными. Учтите, что имена чувствительны к регистру.
Для анимированных узлов доступны такие характеристики, как 'Animation', 'Looping' and 'FramesPerSecond'.

Пример: local s = ccbGetSceneNodeFromName("testCube");

local position = ccbGetSceneNodeMaterialProperty(s, "Position");

print("The cube is at " + position);
Если сцена содержит узел сцены с именем 'testCube', этот скрипт напишет нечто вроде "The cube is at (-2.15537, -0.751433, -15.6934)"

ccbLoadTexture(filename)

Загрузка текстуры в память. Показывает true при удаче и false при ошибке.

Пример: if (ccbLoadTexture("textures/walls/smallmetalpipe_1-1.jpg"))
print("yipee, it worked.");

editorUpdateAllWindows(); // отображает изменения в окне редактирования текстуры. Загружает текстуру.

ccbRemoveSceneNode(sceneNode)

Удаляет узел сцены. Не работает с коренными узлами.

Пример: ccbRemoveSceneNode( ccbGetSceneNodeFromName("testCube") );
Удаляет узел с названием 'testCube' если таковой существует.

ccbSetSceneNodeMaterialProperty(sceneNode, materialIndex, propertyName, value)

Задает характеристики материала узла сцены.
Параметры:
sceneNode: узел сцены.
materialIndex: индекс материала. Величина большая или равная 0 и меньшая чем ccbGetSceneNodeMaterialCount().
propertyName: имя материала. Также отображается в редакторе слева. Возможные значения: "Type", "Ambient", "Diffuse", "Emissive", "Specular", "Shininess", "Param1", "Param2", "Texture1", "Texture2", "Texture3", "Texture4", "Wireframe", "GouraudShading", "Lightning", "ZBuffer", "ZWriteEnable", "BackfaceCulling", "BilinearFilter", "TrilinearFilter", "AnisotropicFilter", "FogEnable", "NormalizeNormals".
value: новое значение материала узла.

Пример: local s = ccbGetSceneNodeFromName("testCube");
local t = ccbSetSceneNodeMaterialProperty(s, 0, "Wireframe", "true");

Представляет отображения узла с названием 'testCube' в каркасном режиме.

ccbSetSceneNodeProperty(sceneNode, propertyName, value)
ccbSetSceneNodeProperty(sceneNode, propertyName, x, y, z)

Задает значение характеристик узла сцены. propertyName также отображается в окне property редактора слева. Возможные имена зависят от типа узла, но обычно используются такие как 'Name', 'Position', 'Rotation', 'Scale', and 'Visible'. Имена чувствительны к регистру.
Дла анимированных узлов доступны такие характеристики, как 'Animation', 'Looping' and 'FramesPerSecond'.

Пример: local s = ccbGetSceneNodeFromName("testCube");
ccbSetSceneNodeProperty(s, "Visible", 0);
Делает узел с названием 'testCube' невидимым.

local s = ccbGetSceneNodeFromName("testCube");
ccbSetSceneNodeProperty(s, "Rotation", 20, 90, 0);

Изменяет угол поворота узла с именам 'testCube' на (20, 90, 0)

ccbSetSceneNodePositionWithoutCollision(sceneNode, x, y, z)

Задает новую позицию узла сцены, даже если узел 'сталкивается со стенами. С его помощью возможно переместить узел сквозь стены. Примечание: убедитесь в том, что новая позиция узла находится вне стены, иначе возможно «застревание»

Примеры: local s = ccbGetSceneNodeFromName("testCube");
ccbSetSceneNodePositionWithoutCollision(s, -22.097015, 9.848448, -40.738777);
Заставляет узел переместиться вне зависимости от характера взаимодействия с объектами.

ccbRegisterKeyDownEvent(funcstr)

Регистрирует функцию для нажатия клавиши. Зарегистрированная функция должна иметь один параметр который будет кодом клавиши.
Пример: ccbRegisterKeyDownEvent("keyPressedDown");

function keyPressedDown(keyCode)
{
print("A key was pressed down:" + keyCode);
}
Печатает какая клавиша была нажата.

ccbRegisterKeyUpEvent(funcstr)

Регистрирует функцию для «отпуска» клавиши. Зарегистрированная функция должна иметь один параметр который будет кодом клавиши.
Пример:
ccbRegisterKeyUpEvent("keyPressedUp");

function keyPressedUp(keyCode)
{
print("A key was left up:" + keyCode);
}
Пишет какая клавиша была отпущена.

ccbRegisterMouseDownEvent(funcstr)

Регистрирует функцию для нажатия клавиши. Зарегистрированная функция должна иметь один параметр который будет кодом клавиши мыши (1 для левой клавиши, 2 для правой 3 для центральной).
Примеры:
ccbRegisterMouseDownEvent("mousePressedDown");

function mousePressedDown(button)
{
print("A mouse button was presssed down:" + button);
}
Печатает какая клавиша мыши была нажата.

ccbRegisterMouseUpEvent(funcstr)

Регистрирует функцию для «отпуска» клавиши. Зарегистрированная функция должна иметь один параметр который будет кодом клавиши мыши (1 для левой клавиши, 2 для правой 3 для центральной).
Примеры:
ccbRegisterMouseUpEvent("keyPressedDown");

function mouseLeftUp(button)
{
print("A mouse button was left up:" + button);
}
Печатает какая клавиша мыши была отпущена.

ccbRegisterOnFrameEvent(funcstr)

Registers a function for receiving a on frame event, an event which is called every frame drawn.
Регистрирует функцию для приема в рамках события, события, которое называют обращенным кадром. (О_о здесь я не понял что конкретно дает функция, поэтому перевод этого предложения скорее всего не корректен) Зарегистрированная функция не должна иметь параметры. В этой функции возможно создать собственные различные вещи, такие как пользовательские интерфейсы.
Пример:
ccbRegisterOnFrameEvent("onFrameDrawing");

function onFrameDrawing()
{
// Создает красный прозрачный прямоугольник на позиции курсора
local mouseX = ccbGetMousePosX();
local mouseY = ccbGetMousePosY();

ccbDrawColoredRectangle(0x77ff0000, mouseX-10, mouseY-10, mouseX+10, mouseY+10);
}
Создает красный прозрачный прямоугольник на позиции курсора (или в центре, если курсор контролирует камеру от первого лица)

ccbDrawColoredRectangle(color, x1, y1, x2, y2)

Создает цветной прямоугольник. Эта функция может быть использована только внутри frame event функции зарегестрированное с помощью ccbRegisterOnFrameEvent().

Цвет имеет тридцати двух битный формат с альфа, красным, зеленым и синим значениями (0xaarrggbb, как цветовые значения используемые в HTML но с добавленным значением альфа – прозрачности) 0x77ff0000 Это, к примеру, прозрачный красный, 0xff0000ff – непрозрачный синий.
Примеры:
ccbRegisterOnFrameEvent("onFrameDrawing");

function onFrameDrawing()
{
// Создает красный прозрачный прямоугольник на позиции курсора

local mouseX = ccbGetMousePosX();
local mouseY = ccbGetMousePosY();

ccbDrawColoredRectangle(0x77ff0000, mouseX-10, mouseY-10, mouseX+10, mouseY+10);
}
Создает красный прозрачный прямоугольник на позиции курсора (или в центре, если курсор контролирует камеру от первого лица)

ccbDrawTextureRectangle(file, x1, y1, x2, y2)

Создает текстурированный прямоугольник. Данная функция может использоваться только внутри frame event функции которая должна быть зарегистрирована с помощью ccbRegisterOnFrameEvent().
Эта функция игнорирует альфа-канал текступы. Используйте ccbDrawTextureRectangleWithAlpha если вы хотите чтобы альфа-канал отображался.

Пример: ccbRegisterOnFrameEvent("onFrameDrawing");

function onFrameDrawing()
{
// создает текстурированный прямоугольник на позиции курсора
local mouseX = ccbGetMousePosX();
local mouseY = ccbGetMousePosY();

ccbDrawTextureRectangle("someFile.png", mouseX-100, mouseY-100, mouseX+100, mouseY+100);
}
Создает текстурированный прямоугольник на позиции курсора (или в центре, если курсор контролирует камеру от первого лица)

ccbDrawTextureRectangleWithAlpha(file, x1, y1, x2, y2)

Создает текстурированный прямоугольник с альфа-каналом. Данная функция может использоваться только внутри frame event функции которая должна быть зарегистрирована с помощью ccbRegisterOnFrameEvent().

Пример: ccbRegisterOnFrameEvent("onFrameDrawing");

function onFrameDrawing()
{
// создает красный текстурированный прямоугольник на позиции курсора
local mouseX = ccbGetMousePosX();
local mouseY = ccbGetMousePosY();

ccbDrawTextureRectangleWithAlpha("someFile.png", mouseX-100, mouseY-100, mouseX+100, mouseY+100);
}
Создает текстурированный прямоугольник на позиции курсора (или в центре, если курсор контролирует камеру от первого лица)

ccbGet3DPosFrom2DPos(x,y)

Returns the 3d position of a 2d position on the screen. Note: A 2d position on the screen does not represent one single 3d point, but a actually a 3d line. So in order to get this line, use the 3d point returned by this function and the position of the current camera to form this line.
Как я понял – перенос 3D камеры на 2D точку по координатам.

Examples:local mouseX = ccbGetMousePosX();
local mouseY = ccbGetMousePosY();

local anode = ccbGetSceneNodeFromName("somenode");
local pos3d = ccbGet3DPosFrom2DPos(mouseX, mouseY);
ccbSetSceneNodeProperty(anode, "Position", pos3d);
Задает позицию узла сцены с именем 'somenode' на 3d позицию позади курсора.

ccbGet2DPosFrom3DPos(x,y,z)

Returns the 2D position of a 3D position or nothing if the position would not be on the screen (for example behind the camera). Действие обратное предыдущему.

Examples:local pos = ccbGet2DPosFrom3DPos(20, 30, 30);
print("Position on screen: " + pos);
Печатает координаты 3d позиции на 2D.

ccbGetCollisionPointOfWorldWithLine(startX, startY, startZ, endX, endY, endZ)

Отображает точки столкновения с линией и миром. Показывает 0 если таковых нет.

ccbDoesLineCollideWithBoundingBoxOfSceneNode(node, startX, startY, startZ, endX, endY, endZ)

Отображает, если ограничивающий прямоугольник данного узла сцены сталкивается с линией между двумя данными точками.
Examples:
ccbRegisterOnFrameEvent("onFrameDrawing");

function onFrameDrawing()
{
local mouseX = ccbGetMousePosX();
local mouseY = ccbGetMousePosY();

// test collision

local cube = ccbGetSceneNodeFromName("cubeMesh");
local endPoint3d = ccbGet3DPosFrom2DPos(mouseX, mouseY);
local startPos3D = ccbGetSceneNodeProperty(ccbGetActiveCamera(), "Position");

if (ccbDoesLineCollideWithBoundingBoxOfSceneNode(cube, startPos3D.x, startPos3D.y,
startPos3D.z, endPoint3d.x, endPoint3d.y, endPoint3d.z))
{
ccbDrawColoredRectangle(0x77ff0000, mouseX-10, mouseY-10, mouseX+10, mouseY+10);
}
else
ccbDrawColoredRectangle(0x770000ff, mouseX-10, mouseY-10, mouseX+10, mouseY+10);
}
Создает красный прямоугольник на позиции курсора (или в центре, если курсор контролирует камеру от первого лица) если он оказывается над узлом с названием 'cubeMesh', и синий если нет.

ccbEndProgram()

Конец программы

ccbGetMousePosX()

Показывает текущие координаты курсора в пикселях.
Пример:
ccbRegisterOnFrameEvent("onFrameDrawing");

function onFrameDrawing()
{
// рисует красный прозрачный круг на позиции мыши
local mouseX = ccbGetMousePosX();
local mouseY = ccbGetMousePosY();

ccbDrawColoredRectangle(0x77ff0000, mouseX-10, mouseY-10, mouseX+10, mouseY+10);
}
Создает красный прямоугольник на позиции курсора (или в центре, если курсор контролирует камеру от первого лица)

ccbGetMousePosY(node)

Показывает Y координату курсора в пикселях.
Examples:
ccbRegisterOnFrameEvent("onFrameDrawing");

function onFrameDrawing()
{
// рисует красный прозрачный круг на позиции мыши
local mouseX = ccbGetMousePosX();
local mouseY = ccbGetMousePosY();

ccbDrawColoredRectangle(0x77ff0000, mouseX-10, mouseY-10, mouseX+10, mouseY+10);
}
Создает красный прямоугольник на позиции курсора (или в центре, если курсор контролирует камеру от первого лица)

ccbSetCloseOnEscapePressed(bClose)

По умолчанию приложение закрывается при нажатии клавиши escape. Использование команды ccbSetCloseOnEscapePressed(false) отключает данную функцию.

ccbSetCursorVisible(bVisible)

Устанавливает видимость или невидимость курсора. Call ccbSetCursorVisible(false) - невидимый, call ccbSetCursorVisible(true) – делает видимым снова.

ccbSwitchToScene(sceneName)

Переключается на сцену с именем. ccbSwitchToScene("my scene") переключит на сцену с названием "my scene" если таковая есть. Примечание: название сцены чувствительно к регистру.

ccbPlaySound(filename)

Проигрывание звукового файла. Поддерживаются следующие форматы: WAV, OGG, MOD, XM, IT, S3M.

ccbSetCopperCubeVariable(varname, value)

Выставляет переменную CopperCube на определенное значение. Переменные CopperCube могут быть назначены и изменены при использовании Variable Actions в редакторе.

ccbGetCopperCubeVariable(varname)

Получает значение переменной CopperCube. Переменные CopperCube могут быть назначены и изменены при использовании Variable Actions в редакторе.

vector3d()
vector3d(x,y,z)

Класс для хранения 3 пространственных координат - x, y, and z. Так же поддерживает спомогательные средства:
+, -: Сложение и вычитание векторов
getLength() для расчета длины
normalize() для создания вектора одной длины

Пример:
local v = vector3d();
print(v);
prints (0, 0, 0)

local v1 = vector3d(10,0,0);
local v2 = vector3d(0,20,0);
local v3 = v1 + v2;

v3.normalize();
print(v3 + " Lenght:" + v3.getLength())
prints (0.447214, 0.894427, 0) Lenght:1

Другие переменные (для детальной информации смотрите Squirrel Standard Library):

Математические: abs(x); acos(x); asin(x); atan(x); atan2(x, y); ceil(x); cos(x); exp(x); fabs(x); floor(x); log(x); log10(x); pow(x, y); rand(); sin(x); sqrt(x); srand(seed); tan(x); PI RAND_MAX

Системные: clock(); date([time], [format]); getenv(varaname); remove(path); rename(oldname, newname); system(cmd); time();

Строки: format(formatstr, ...); lstrip(str); regexp(pattern); rstrip(str); split(str, separators); strip(str); capture(str, [start]); match(str); search(str, [start]);

Blob: dofile(path, [raiseerror]); loadfile(path, [raiseerror]); writeclosuretofile(destpath, closure); eos(); flush(); len(); readblob(size); readn(type); seek(seek, [origin]); tell(); writeblob(blob); writen(n, type);

I/O: dofile(path, [raiseerror]); loadfile(path, [raiseerror]); writeclosuretofile(destpath, closure);


Сообщение отредактировал Маэстро - Сб, 28 Май 2011, 15:32
 
СообщениеКое-как перевел CopperCube Squirrel scripting reference Ошибок скорее всего много. Кое-где перевод не совсем корректный ибо я не совсем понял суть переменных. Если кто-то знает что делает та или иная функция - скажите, внесу поправки.

CopperCube Squirrel scripting reference

CopperCube обеспечивает очень простой интерфейс для управления всеми объектами 3D сцены in в вашем windows .exe файле. Смотрите описание скриптинга Squirrel для того чтобы получить краткое описание того, как это сделать. Данный документ содержит все доступные функции.

Большинство этих функций нужны для манипуляции так называемыми 'узлами сцены'. Узел сцены – ничто иное, как 3d объект со своими параметрами: позицией, углом поворота, размером, материалом и дочерними объектами.

Обработка узлов сцены
ccbCloneSceneNode
ccbGetActiveCamera
ccbGetChildSceneNode
ccbGetRootSceneNode
ccbGetSceneNodeChildCount
ccbGetSceneNodeFromName
c cbGetSceneNodeMaterialCount
ccbGetSceneNodeMaterialProperty
ccbRemoveSceneNode
ccbSetActiveCamera
ccbSetSceneNodeMaterialProperty
ccbSe tSceneNodeMaterialProperty
ccbSetSceneNodePositionWithoutCollision
ccbSetSceneNodeProperty
События
ccbRegisterKeyDownEvent
ccbRegisterK eyUpEvent
ccbRegisterMouseDownEvent
ccbRegisterMouseUpEvent
ccbRegisterOnFrameEvent
Рисование
ccbDrawColoredRectangle
ccbDrawTextureRe ctangle
ccbDrawTextureRectangleWithAlpha
Коллизии
ccbGet3DPosFrom2DPos
ccbGet2DPosFrom3DPos
ccbGetCollisionPointOfWorldWithLine
ccbDoe sLineCollideWithBoundingBoxOfSceneNode
Другое
ccbEndProgram
ccbLoadTexture
ccbGetMousePosX
ccbGetMousePosY
ccbSetCloseOnEscapePressed
c cbSetCursorVisible
ccbSwitchToScene
ccbPlaySound
ccbGetCopperCubeVariable
ccbSetCopperCubeVariable

ccbCloneSceneNode(node)

Соз дает новый узел сцены, основанный на существующем узле. Creates a new scene node based on an existing scene node.

Параметр 'node' – выходящий узел сцены. Вы можете получить уже существующий узел сцены например с помощью ccbGetSceneNodeFromName()

Возврат: Новый узел сцены.

Примеры: local sourceNode = ccbGetSceneNodeFromName("myNode");
local newscenenode = ccbCloneSceneNode(sourceNode);

Этот скрипт создает копию существующего узла с названием 'myNode'.

ccbGetActiveCamera()

Возвращает активную в настоящее время камеру сцены.

ccbSetActiveCamera(node)

Устанавливает активную в настоящее время камеру сцены. Параметр 'node' должен быть узлом сцены камеры.

ccbGetChildSceneNode(parentSceneNode, childIndex)

Возвращает дочерний узел родительского узла. ChildIndex должен быть >= 0 и < ccbGetSceneNodeChildCount.

Пример: local root = ccbGetRootSceneNode();
local count = ccbGetSceneNodeChildCount(root);

for(local i=0; i {
local child = ccbGetChildSceneNode(root, i);
print("node:" + ccbSetSceneNodeMaterialProperty(child, "Name") + "\n\n");
}
Этот пример печатает название всех детских узлов сцены корня.

ccbGetRootSceneNode()

Возвращает корневой узел сцены. Вы не можете удалить его You cannot remove it and и нет смысла изменять его характеристики, но вы можете использовать его как стартовую точку для повторения граф сцены.. Смотрите на ccbGetSceneNodeChildCount для примера.

Возврат: корневой узел сцены.

ccbGetSceneNodeChildCount(sceneNode)

Показывает количество дочерних узлов сцены.

Пример: local root = ccbGetRootSceneNode();
local count = ccbGetSceneNodeChildCount(root);

print("Scene nodes in the top level of the scene graph:" + count);
Этот пример покажет «2» если в вашей сцене два узла.

ccbGetSceneNodeFromName(name)

Ищет целый граф сцены для узла сцены с этим именем. Пожалуйста, заметьте, что регистр учитывается. Если данные найдены, будет выведен результат, иначе - пустой показатель.

Пример: local s = ccbGetSceneNodeFromName("testCube");

if (s) print("found node.\n");
else
print("not found the node.\n")
Ищет узел сцены с названием 'testCube' и печатает некоторый текст.

ccbGetSceneNodeMaterialCount(sceneNode)

Показывает количество материалов узла сцены.

Пример: local s = ccbGetSceneNodeFromName("testCube");
local n = ccbGetSceneNodeMaterialCount(s);

print("the scene node has " + n + " materials");
Печатает количество материалов в узле 'testCube'

ccbGetSceneNodeMaterialProperty(sceneNode, materialIndex, propertyName)

Показывает свойства материала узла сцены.
Параметры:
sceneNode: узел сцены.
materialIndex: Индекс материала. Должен быть больше или равен нуля и меньше чем ccbGetSceneNodeMaterialCount().
propertyName: имя материала. Также отображается в редакторе в колонке слева. Возможные значения: "Type", "Ambient", "Diffuse", "Emissive", "Specular", "Shininess", "Param1", "Param2", "Texture1", "Texture2", "Texture3", "Texture4", "Wireframe", "GouraudShading", "Lightning", "ZBuffer", "ZWriteEnable", "BackfaceCulling", "BilinearFilter", "TrilinearFilter", "AnisotropicFilter", "FogEnable", "NormalizeNormals".

Пример: local s = ccbGetSceneNodeFromName("testCube");
local t = ccbGetSceneNodeMaterialProperty(s, 0, "Texture1");

print("texture of the cube is: " + t);
Печатает название комплекта текстур в существующем узле сцены 'testCube'. Печатает что-то вроде 'texture of the new cube is: textures/editor_defaults/default_texture.png'

ccbGetSceneNodeProperty(sceneNode, propertyName)

Показывает значение характеристик узла сцены. propertyName также отображается в окне property редактора слева. Возможные названия зависят от типа узла но обычно имеют такие названия как 'Name', 'Position', 'Rotation', 'Scale', 'Visible' являющиеся доступными. Учтите, что имена чувствительны к регистру.
Для анимированных узлов доступны такие характеристики, как 'Animation', 'Looping' and 'FramesPerSecond'.

Пример: local s = ccbGetSceneNodeFromName("testCube");

local position = ccbGetSceneNodeMaterialProperty(s, "Position");

print("The cube is at " + position);
Если сцена содержит узел сцены с именем 'testCube', этот скрипт напишет нечто вроде "The cube is at (-2.15537, -0.751433, -15.6934)"

ccbLoadTexture(filename)

Загрузка текстуры в память. Показывает true при удаче и false при ошибке.

Пример: if (ccbLoadTexture("textures/walls/smallmetalpipe_1-1.jpg"))
print("yipee, it worked.");

editorUpdateAllWindows(); // отображает изменения в окне редактирования текстуры. Загружает текстуру.

ccbRemoveSceneNode(sceneNode)

Удаляет узел сцены. Не работает с коренными узлами.

Пример: ccbRemoveSceneNode( ccbGetSceneNodeFromName("testCube") );
Удаляет узел с названием 'testCube' если таковой существует.

ccbSetSceneNodeMaterialProperty(sceneNode, materialIndex, propertyName, value)

Задает характеристики материала узла сцены.
Параметры:
sceneNode: узел сцены.
materialIndex: индекс материала. Величина большая или равная 0 и меньшая чем ccbGetSceneNodeMaterialCount().
propertyName: имя материала. Также отображается в редакторе слева. Возможные значения: "Type", "Ambient", "Diffuse", "Emissive", "Specular", "Shininess", "Param1", "Param2", "Texture1", "Texture2", "Texture3", "Texture4", "Wireframe", "GouraudShading", "Lightning", "ZBuffer", "ZWriteEnable", "BackfaceCulling", "BilinearFilter", "TrilinearFilter", "AnisotropicFilter", "FogEnable", "NormalizeNormals".
value: новое значение материала узла.

Пример: local s = ccbGetSceneNodeFromName("testCube");
local t = ccbSetSceneNodeMaterialProperty(s, 0, "Wireframe", "true");

Представляет отображения узла с названием 'testCube' в каркасном режиме.

ccbSetSceneNodeProperty(sceneNode, propertyName, value)
ccbSetSceneNodeProperty(sceneNode, propertyName, x, y, z)

Задает значение характеристик узла сцены. propertyName также отображается в окне property редактора слева. Возможные имена зависят от типа узла, но обычно используются такие как 'Name', 'Position', 'Rotation', 'Scale', and 'Visible'. Имена чувствительны к регистру.
Дла анимированных узлов доступны такие характеристики, как 'Animation', 'Looping' and 'FramesPerSecond'.

Пример: local s = ccbGetSceneNodeFromName("testCube");
ccbSetSceneNodeProperty(s, "Visible", 0);
Делает узел с названием 'testCube' невидимым.

local s = ccbGetSceneNodeFromName("testCube");
ccbSetSceneNodeProperty(s, "Rotation", 20, 90, 0);

Изменяет угол поворота узла с именам 'testCube' на (20, 90, 0)

ccbSetSceneNodePositionWithoutCollision(sceneNode, x, y, z)

Задает новую позицию узла сцены, даже если узел 'сталкивается со стенами. С его помощью возможно переместить узел сквозь стены. Примечание: убедитесь в том, что новая позиция узла находится вне стены, иначе возможно «застревание»

Примеры: local s = ccbGetSceneNodeFromName("testCube");
ccbSetSceneNodePositionWithoutCollision(s, -22.097015, 9.848448, -40.738777);
Заставляет узел переместиться вне зависимости от характера взаимодействия с объектами.

ccbRegisterKeyDownEvent(funcstr)

Регистрирует функцию для нажатия клавиши. Зарегистрированная функция должна иметь один параметр который будет кодом клавиши.
Пример: ccbRegisterKeyDownEvent("keyPressedDown");

function keyPressedDown(keyCode)
{
print("A key was pressed down:" + keyCode);
}
Печатает какая клавиша была нажата.

ccbRegisterKeyUpEvent(funcstr)

Регистрирует функцию для «отпуска» клавиши. Зарегистрированная функция должна иметь один параметр который будет кодом клавиши.
Пример:
ccbRegisterKeyUpEvent("keyPressedUp");

function keyPressedUp(keyCode)
{
print("A key was left up:" + keyCode);
}
Пишет какая клавиша была отпущена.

ccbRegisterMouseDownEvent(funcstr)

Регистрирует функцию для нажатия клавиши. Зарегистрированная функция должна иметь один параметр который будет кодом клавиши мыши (1 для левой клавиши, 2 для правой 3 для центральной).
Примеры:
ccbRegisterMouseDownEvent("mousePressedDown");

function mousePressedDown(button)
{
print("A mouse button was presssed down:" + button);
}
Печатает какая клавиша мыши была нажата.

ccbRegisterMouseUpEvent(funcstr)

Регистрирует функцию для «отпуска» клавиши. Зарегистрированная функция должна иметь один параметр который будет кодом клавиши мыши (1 для левой клавиши, 2 для правой 3 для центральной).
Примеры:
ccbRegisterMouseUpEvent("keyPressedDown");

function mouseLeftUp(button)
{
print("A mouse button was left up:" + button);
}
Печатает какая клавиша мыши была отпущена.

ccbRegisterOnFrameEvent(funcstr)

Registers a function for receiving a on frame event, an event which is called every frame drawn.
Регистрирует функцию для приема в рамках события, события, которое называют обращенным кадром. (О_о здесь я не понял что конкретно дает функция, поэтому перевод этого предложения скорее всего не корректен) Зарегистрированная функция не должна иметь параметры. В этой функции возможно создать собственные различные вещи, такие как пользовательские интерфейсы.
Пример:
ccbRegisterOnFrameEvent("onFrameDrawing");

function onFrameDrawing()
{
// Создает красный прозрачный прямоугольник на позиции курсора
local mouseX = ccbGetMousePosX();
local mouseY = ccbGetMousePosY();

ccbDrawColoredRectangle(0x77ff0000, mouseX-10, mouseY-10, mouseX+10, mouseY+10);
}
Создает красный прозрачный прямоугольник на позиции курсора (или в центре, если курсор контролирует камеру от первого лица)

ccbDrawColoredRectangle(color, x1, y1, x2, y2)

Создает цветной прямоугольник. Эта функция может быть использована только внутри frame event функции зарегестрированное с помощью ccbRegisterOnFrameEvent().

Цвет имеет тридцати двух битный формат с альфа, красным, зеленым и синим значениями (0xaarrggbb, как цветовые значения используемые в HTML но с добавленным значением альфа – прозрачности) 0x77ff0000 Это, к примеру, прозрачный красный, 0xff0000ff – непрозрачный синий.
Примеры:
ccbRegisterOnFrameEvent("onFrameDrawing");

function onFrameDrawing()
{
// Создает красный прозрачный прямоугольник на позиции курсора

local mouseX = ccbGetMousePosX();
local mouseY = ccbGetMousePosY();

ccbDrawColoredRectangle(0x77ff0000, mouseX-10, mouseY-10, mouseX+10, mouseY+10);
}
Создает красный прозрачный прямоугольник на позиции курсора (или в центре, если курсор контролирует камеру от первого лица)

ccbDrawTextureRectangle(file, x1, y1, x2, y2)

Создает текстурированный прямоугольник. Данная функция может использоваться только внутри frame event функции которая должна быть зарегистрирована с помощью ccbRegisterOnFrameEvent().
Эта функция игнорирует альфа-канал текступы. Используйте ccbDrawTextureRectangleWithAlpha если вы хотите чтобы альфа-канал отображался.

Пример: ccbRegisterOnFrameEvent("onFrameDrawing");

function onFrameDrawing()
{
// создает текстурированный прямоугольник на позиции курсора
local mouseX = ccbGetMousePosX();
local mouseY = ccbGetMousePosY();

ccbDrawTextureRectangle("someFile.png", mouseX-100, mouseY-100, mouseX+100, mouseY+100);
}
Создает текстурированный прямоугольник на позиции курсора (или в центре, если курсор контролирует камеру от первого лица)

ccbDrawTextureRectangleWithAlpha(file, x1, y1, x2, y2)

Создает текстурированный прямоугольник с альфа-каналом. Данная функция может использоваться только внутри frame event функции которая должна быть зарегистрирована с помощью ccbRegisterOnFrameEvent().

Пример: ccbRegisterOnFrameEvent("onFrameDrawing");

function onFrameDrawing()
{
// создает красный текстурированный прямоугольник на позиции курсора
local mouseX = ccbGetMousePosX();
local mouseY = ccbGetMousePosY();

ccbDrawTextureRectangleWithAlpha("someFile.png", mouseX-100, mouseY-100, mouseX+100, mouseY+100);
}
Создает текстурированный прямоугольник на позиции курсора (или в центре, если курсор контролирует камеру от первого лица)

ccbGet3DPosFrom2DPos(x,y)

Returns the 3d position of a 2d position on the screen. Note: A 2d position on the screen does not represent one single 3d point, but a actually a 3d line. So in order to get this line, use the 3d point returned by this function and the position of the current camera to form this line.
Как я понял – перенос 3D камеры на 2D точку по координатам.

Examples:local mouseX = ccbGetMousePosX();
local mouseY = ccbGetMousePosY();

local anode = ccbGetSceneNodeFromName("somenode");
local pos3d = ccbGet3DPosFrom2DPos(mouseX, mouseY);
ccbSetSceneNodeProperty(anode, "Position", pos3d);
Задает позицию узла сцены с именем 'somenode' на 3d позицию позади курсора.

ccbGet2DPosFrom3DPos(x,y,z)

Returns the 2D position of a 3D position or nothing if the position would not be on the screen (for example behind the camera). Действие обратное предыдущему.

Examples:local pos = ccbGet2DPosFrom3DPos(20, 30, 30);
print("Position on screen: " + pos);
Печатает координаты 3d позиции на 2D.

ccbGetCollisionPointOfWorldWithLine(startX, startY, startZ, endX, endY, endZ)

Отображает точки столкновения с линией и миром. Показывает 0 если таковых нет.

ccbDoesLineCollideWithBoundingBoxOfSceneNode(node, startX, startY, startZ, endX, endY, endZ)

Отображает, если ограничивающий прямоугольник данного узла сцены сталкивается с линией между двумя данными точками.
Examples:
ccbRegisterOnFrameEvent("onFrameDrawing");

function onFrameDrawing()
{
local mouseX = ccbGetMousePosX();
local mouseY = ccbGetMousePosY();

// test collision

local cube = ccbGetSceneNodeFromName("cubeMesh");
local endPoint3d = ccbGet3DPosFrom2DPos(mouseX, mouseY);
local startPos3D = ccbGetSceneNodeProperty(ccbGetActiveCamera(), "Position");

if (ccbDoesLineCollideWithBoundingBoxOfSceneNode(cube, startPos3D.x, startPos3D.y,
startPos3D.z, endPoint3d.x, endPoint3d.y, endPoint3d.z))
{
ccbDrawColoredRectangle(0x77ff0000, mouseX-10, mouseY-10, mouseX+10, mouseY+10);
}
else
ccbDrawColoredRectangle(0x770000ff, mouseX-10, mouseY-10, mouseX+10, mouseY+10);
}
Создает красный прямоугольник на позиции курсора (или в центре, если курсор контролирует камеру от первого лица) если он оказывается над узлом с названием 'cubeMesh', и синий если нет.

ccbEndProgram()

Конец программы

ccbGetMousePosX()

Показывает текущие координаты курсора в пикселях.
Пример:
ccbRegisterOnFrameEvent("onFrameDrawing");

function onFrameDrawing()
{
// рисует красный прозрачный круг на позиции мыши
local mouseX = ccbGetMousePosX();
local mouseY = ccbGetMousePosY();

ccbDrawColoredRectangle(0x77ff0000, mouseX-10, mouseY-10, mouseX+10, mouseY+10);
}
Создает красный прямоугольник на позиции курсора (или в центре, если курсор контролирует камеру от первого лица)

ccbGetMousePosY(node)

Показывает Y координату курсора в пикселях.
Examples:
ccbRegisterOnFrameEvent("onFrameDrawing");

function onFrameDrawing()
{
// рисует красный прозрачный круг на позиции мыши
local mouseX = ccbGetMousePosX();
local mouseY = ccbGetMousePosY();

ccbDrawColoredRectangle(0x77ff0000, mouseX-10, mouseY-10, mouseX+10, mouseY+10);
}
Создает красный прямоугольник на позиции курсора (или в центре, если курсор контролирует камеру от первого лица)

ccbSetCloseOnEscapePressed(bClose)

По умолчанию приложение закрывается при нажатии клавиши escape. Использование команды ccbSetCloseOnEscapePressed(false) отключает данную функцию.

ccbSetCursorVisible(bVisible)

Устанавливает видимость или невидимость курсора. Call ccbSetCursorVisible(false) - невидимый, call ccbSetCursorVisible(true) – делает видимым снова.

ccbSwitchToScene(sceneName)

Переключается на сцену с именем. ccbSwitchToScene("my scene") переключит на сцену с названием "my scene" если таковая есть. Примечание: название сцены чувствительно к регистру.

ccbPlaySound(filename)

Проигрывание звукового файла. Поддерживаются следующие форматы: WAV, OGG, MOD, XM, IT, S3M.

ccbSetCopperCubeVariable(varname, value)

Выставляет переменную CopperCube на определенное значение. Переменные CopperCube могут быть назначены и изменены при использовании Variable Actions в редакторе.

ccbGetCopperCubeVariable(varname)

Получает значение переменной CopperCube. Переменные CopperCube могут быть назначены и изменены при использовании Variable Actions в редакторе.

vector3d()
vector3d(x,y,z)

Класс для хранения 3 пространственных координат - x, y, and z. Так же поддерживает спомогательные средства:
+, -: Сложение и вычитание векторов
getLength() для расчета длины
normalize() для создания вектора одной длины

Пример:
local v = vector3d();
print(v);
prints (0, 0, 0)

local v1 = vector3d(10,0,0);
local v2 = vector3d(0,20,0);
local v3 = v1 + v2;

v3.normalize();
print(v3 + " Lenght:" + v3.getLength())
prints (0.447214, 0.894427, 0) Lenght:1

Другие переменные (для детальной информации смотрите Squirrel Standard Library):

Математические: abs(x); acos(x); asin(x); atan(x); atan2(x, y); ceil(x); cos(x); exp(x); fabs(x); floor(x); log(x); log10(x); pow(x, y); rand(); sin(x); sqrt(x); srand(seed); tan(x); PI RAND_MAX

Системные: clock(); date([time], [format]); getenv(varaname); remove(path); rename(oldname, newname); system(cmd); time();

Строки: format(formatstr, ...); lstrip(str); regexp(pattern); rstrip(str); split(str, separators); strip(str); capture(str, [start]); match(str); search(str, [start]);

Blob: dofile(path, [raiseerror]); loadfile(path, [raiseerror]); writeclosuretofile(destpath, closure); eos(); flush(); len(); readblob(size); readn(type); seek(seek, [origin]); tell(); writeblob(blob); writen(n, type);

I/O: dofile(path, [raiseerror]); loadfile(path, [raiseerror]); writeclosuretofile(destpath, closure);

Автор - Маэстро
Дата добавления - 28 Май 2011 в 15:31
Форум Игроделов » ДРУГИЕ КОНСТРУКТОРЫ ИГР и ИГРОВЫЕ ДВИЖКИ » COPPER CUBE » Перевод Оф. Уроков на Русский язык. (буду потихоньку переводить.)
  • Страница 1 из 1
  • 1
Поиск:
Загрузка...

Game Creating CommUnity © 2009 - 2024