//-----------------------------------------------------------------------------
// This source file is part of eily.acuario.3d
//
// For the latest info, see http://integra-s.com/
//
// Module:
// File: Locations.proto
// Created: 05.10.2012
// Updated:
// Author: Mamonov Alexander mailto:Mamonov116km@gmail.com
//
// Copyright (c) 2012 Integra-S JSC
//-----------------------------------------------------------------------------
syntax = "proto2";

package eily_acuario_3d.protobuf;

option optimize_for = SPEED;

message Graph{
    message Connection{
        required int32 outputNode   = 1;  // parent node id
        required int32 inputNode    = 2;  // child node id
	}

    message Position{
        required float x = 1;
        required float y = 2;
    }  

    message Group{
        required string name         = 1;
        repeated string item_name    = 2;
		repeated string sensor_guid  = 3;
	} 

	message CameraPosition{
		required double x           = 1;
		required double y           = 2;
		required double z           = 3;
		required double heading     = 4;
		required double pitch       = 5;
		required double range       = 6;
	}

	message Image{
		required bytes          data     = 1;
		required int32          height   = 2;
		required int32          width    = 3;
	}
	
	// варианты перечисления должны быть степенями двойки
	enum ProfileType {
		VISIBLE   = 1; // 1 << 0
		INVISIBLE = 2; // 1 << 1
		ACTIVATOR = 4; // 1 << 2 
	}

    message Node{
    	required int32          id               = 1; // unique id
        optional Group          group            = 2; 
        optional Position       position         = 3; 
		optional CameraPosition cameraPosition   = 4;
		required bool           isDefault        = 5;
		optional bool           isUnderGround    = 6; //if true then hide with ground
		optional Image          preview          = 7;
		optional ProfileType    type             = 8 [default = VISIBLE];

		optional bytes          layout           = 9; // svg

		repeated string         panoramic_sensor = 10;
        optional CameraPosition panoramic_cameraPosition = 11;
		optional int32          sortIndex                = 12;
		optional int32          id_group_node            = 13;
	}
	
	message GroupNode{
		required int32          id               = 1; // unique id
		optional string         name             = 2;
		optional int32          sortIndex        = 3;
    }
	
    repeated Node               node         = 1;
    repeated Connection         connection   = 2;
	optional int32              version      = 3;
	
	repeated GroupNode          group_node   = 4;
    optional int32              default_profile_id = 5;
}
