//-----------------------------------------------------------------------------
// This source file is part of eily.acuario.3d.editor
//
// For the latest info, see http://integra-s.com/
//
// Module:
// File: Helpers.proto
// Created: 13.10.2012
// Updated:
// Author: Maxim Merkulov mailto:merkulov@integra-s.com
//
// Copyright (c) 2012 Integra-S JSC
//-----------------------------------------------------------------------------
syntax = "proto2";

import "Locations.proto";
import "Graph.proto";

package eily_acuario_3d.protobuf;

option optimize_for = SPEED;

message ServerProperty
{
	optional string adress = 1;
	optional string user = 2;
	optional string password = 3;
	optional bool autoConnect = 4;
	optional string name = 5;
}

message ServerList
{
	repeated ServerProperty property = 1;
}

message Profiles
{
	optional Graph graph = 1;
}

message PlanProperty
{
	optional string planFile = 1;
	optional string planName = 2;
	optional Location location = 3; // Location см. Locations.proto
	optional Profiles profiles = 4;
}

message File
{
	required string name = 1;
	optional bytes data = 2; 
}

message PlanData
{
	optional string id = 1;
	repeated File objects = 2;
	repeated File images = 3;
	repeated File heightFields = 4;
	repeated File nodes = 5;
	repeated File shaders = 6;
}

message Color4
{
	required int32 r = 1;
	required int32 g = 2;
	required int32 b = 3;
	required int32 a = 4;
}

message SensorBuf
{
	required sint64 id = 1; 					// идентификатор (уникальный в пределах сервера eily.acuario)
	optional string modelFile = 2;				// файл с моделью
	optional string preview2dFile = 3;			// файл с двухмерной превьюшкой модели
	optional Color4 color = 4;					// цвет в текущем состоянии
	optional Location location = 5;				// положение датчика в пространстве
	optional string typeName = 6;				// отображаемое имя типа датчика
	optional string name = 7;					// отображаемое имя датчика
	optional string guid = 8;					// глобальный уникальный идентификатор датчика
	optional string stateName = 9;				// отображаемое имя текущего состояния датчика
	optional bool isLocationReadOnly = 10;		// true если у данного пользователя нет прав на изменение поля Location данного датчика
	repeated string urls = 11;					// у видеокамеры, список адресов с которых можно получить видео этой камеры
}

message PlanBuf
{
	optional Color4 color = 1;			// цвет в текущем состоянии
	optional string stateName = 9;		// отображаемое имя текущего состояния плана
}

message VolumePolygon
{
	optional Location location = 1;
	repeated Vector3 points = 2;
	optional double height = 3;
}

message Plygons
{
	repeated VolumePolygon polygons = 1;
}

enum StateCategory
{
	SC_NORMAL = 0;
	SC_DEFECTIVE = 1;
	SC_ALARM = 2;
	SC_UNKNOWN = 3;
}

message SpaceBuf
{
	required sint64 id = 1; 					// идентификатор (уникальный в пределах сервера eily.acuario)
	optional string guid = 2;					// глобальный уникальный идентификатор пространства
	optional string name = 3;					// отображаемое имя пространства
	optional Plygons polygons = 4;
	optional string stateName = 5;
	optional Color4 color = 6;
	optional StateCategory stateCategory = 7;
}

message ServerLogonRecord
{
	required sint64 id = 1;
	optional string userInfo = 2;
	optional string userName = 3;
	optional string userRole = 4;
}

message BoundingBox
{
	required Vector3 bmin = 1;
	required Vector3 bmax = 2;
}

message Transform
{
	optional	Quaternion rotation = 1;
	optional	Vector3 scale = 2;
	optional	BoundingBox bbox = 3;
	optional	double elevation = 4;
	optional	sint64	version = 5 [default=0];
	optional	double relative_elevation = 6;
}

